From 96dce2c9aabc33b87db61d830aa087b6b03fe397 Mon Sep 17 00:00:00 2001 From: xaxtix Date: Tue, 21 Jun 2022 06:51:00 +0400 Subject: [PATCH] Update to 8.8.2 --- TMessagesProj/build.gradle | 101 +- TMessagesProj/jni/audio.c | 4 +- TMessagesProj/jni/lottie.cpp | 30 + TMessagesProj/jni/tgnet/ApiScheme.cpp | 2 + TMessagesProj/jni/tgnet/ApiScheme.h | 1 + TMessagesProj/jni/tgnet/Connection.cpp | 4 + .../jni/tgnet/ConnectionsManager.cpp | 17 +- TMessagesProj/jni/tgnet/Datacenter.cpp | 7 + TMessagesProj/jni/tgnet/Datacenter.h | 2 + TMessagesProj/jni/tgnet/Defines.h | 2 +- TMessagesProj/jni/voip/CMakeLists.txt | 4 +- TMessagesProj/src/main/AndroidManifest.xml | 91 +- .../src/main/assets/darkblue.attheme | 1 + TMessagesProj/src/main/assets/flecks.png | Bin 0 -> 293136 bytes .../main/assets/fonts/courier_new_bold.ttf | Bin 0 -> 174596 bytes .../src/main/assets/models/star.binobj | Bin 0 -> 361248 bytes TMessagesProj/src/main/assets/night.attheme | 18 +- .../src/main/assets/shaders/fragment2.glsl | 68 + .../src/main/assets/shaders/vertex2.glsl | 16 + .../widget/ChatListItemAnimator.java | 10 + .../widget/DefaultItemAnimator.java | 72 +- .../recyclerview/widget/RecyclerView.java | 95 +- .../widget/SimpleItemAnimator.java | 7 +- .../telegram/messenger/AndroidUtilities.java | 106 +- .../messenger/AnimatedFileDrawableStream.java | 8 +- .../telegram/messenger/ApplicationLoader.java | 4 + .../telegram/messenger/BaseController.java | 2 +- .../telegram/messenger/BillingController.java | 163 + .../messenger/BotWebViewVibrationEffect.java | 42 + .../org/telegram/messenger/BuildVars.java | 11 +- .../messenger/ChatsWidgetService.java | 6 +- .../messenger/ContactsWidgetService.java | 6 +- .../org/telegram/messenger/DispatchQueue.java | 22 +- .../DispatchQueueMainThreadSync.java | 169 + .../DispatchQueuePoolMainThreadSync.java | 86 + .../messenger/DownloadController.java | 48 +- .../java/org/telegram/messenger/Emoji.java | 129 +- .../telegram/messenger/FeedWidgetService.java | 6 +- .../telegram/messenger/FileLoadOperation.java | 331 +- .../org/telegram/messenger/FileLoader.java | 266 +- .../telegram/messenger/FilePathDatabase.java | 229 ++ .../telegram/messenger/FileRefController.java | 101 +- .../messenger/FileStreamLoadOperation.java | 4 +- .../messenger/FileUploadOperation.java | 18 +- .../messenger/FilesMigrationService.java | 2 +- .../messenger/GcmPushListenerService.java | 5 + .../org/telegram/messenger/ImageLoader.java | 169 +- .../org/telegram/messenger/ImageLocation.java | 32 +- .../org/telegram/messenger/ImageReceiver.java | 151 +- .../telegram/messenger/LocaleController.java | 37 +- .../messenger/LocationController.java | 4 +- .../telegram/messenger/MediaController.java | 67 +- .../messenger/MediaDataController.java | 360 +- .../messenger/MessageCustomParamsHelper.java | 101 + .../org/telegram/messenger/MessageObject.java | 223 +- .../messenger/MessagesController.java | 728 +++- .../telegram/messenger/MessagesStorage.java | 307 +- .../messenger/MusicBrowserService.java | 6 +- .../messenger/MusicPlayerService.java | 5 +- .../messenger/NotificationCenter.java | 7 + .../messenger/NotificationsController.java | 17 +- .../telegram/messenger/SecretChatHelper.java | 6 +- .../messenger/SendMessagesHelper.java | 172 +- .../org/telegram/messenger/SharedConfig.java | 53 +- .../org/telegram/messenger/SvgHelper.java | 23 +- .../org/telegram/messenger/UserConfig.java | 38 +- .../org/telegram/messenger/Utilities.java | 61 +- .../telegram/messenger/VideoEditedInfo.java | 1 + .../telegram/messenger/browser/Browser.java | 3 +- .../messenger/camera/CameraController.java | 2 +- .../telegram/messenger/camera/CameraView.java | 16 +- .../messenger/ringtone/RingtoneDataStore.java | 21 +- .../org/telegram/messenger/voip/Instance.java | 5 +- .../telegram/messenger/voip/VoIPService.java | 54 +- .../telegram/tgnet/ConnectionsManager.java | 27 +- .../main/java/org/telegram/tgnet/TLRPC.java | 1362 +++++++- .../org/telegram/ui/ActionBar/ActionBar.java | 42 +- .../ui/ActionBar/ActionBarLayout.java | 256 +- .../telegram/ui/ActionBar/ActionBarMenu.java | 6 +- .../ui/ActionBar/ActionBarMenuItem.java | 27 +- .../ui/ActionBar/ActionBarMenuSubItem.java | 16 + .../ui/ActionBar/ActionBarPopupWindow.java | 140 +- .../ui/ActionBar/AdjustPanLayoutHelper.java | 221 +- .../telegram/ui/ActionBar/AlertDialog.java | 14 +- .../telegram/ui/ActionBar/BaseFragment.java | 10 +- .../telegram/ui/ActionBar/BottomSheet.java | 240 +- .../telegram/ui/ActionBar/EmojiThemes.java | 20 +- .../telegram/ui/ActionBar/SimpleTextView.java | 60 +- .../java/org/telegram/ui/ActionBar/Theme.java | 743 +++-- .../org/telegram/ui/ActionIntroActivity.java | 7 +- .../telegram/ui/Adapters/ContactsAdapter.java | 26 +- .../telegram/ui/Adapters/DialogsAdapter.java | 42 +- .../ui/Adapters/DialogsSearchAdapter.java | 605 ++-- .../ui/Adapters/DrawerLayoutAdapter.java | 91 +- .../org/telegram/ui/Adapters/FiltersView.java | 22 +- .../telegram/ui/Adapters/MentionsAdapter.java | 196 +- .../ui/Adapters/PaddedListAdapter.java | 159 + .../ui/Adapters/SearchAdapterHelper.java | 19 +- .../telegram/ui/Adapters/StickersAdapter.java | 10 +- .../java/org/telegram/ui/ArticleViewer.java | 21 +- .../org/telegram/ui/CacheControlActivity.java | 18 +- .../org/telegram/ui/CalendarActivity.java | 3 +- .../java/org/telegram/ui/CallLogActivity.java | 32 +- .../org/telegram/ui/CameraScanActivity.java | 22 +- .../org/telegram/ui/Cells/AboutLinkCell.java | 28 +- .../telegram/ui/Cells/AdminedChannelCell.java | 41 +- .../ui/Cells/AppIconsSelectorCell.java | 343 ++ .../telegram/ui/Cells/AudioPlayerCell.java | 2 +- .../ui/Cells/AvailableReactionCell.java | 30 +- .../java/org/telegram/ui/Cells/BaseCell.java | 2 +- .../org/telegram/ui/Cells/BotHelpCell.java | 161 +- .../ui/Cells/BrightnessControlCell.java | 4 +- .../org/telegram/ui/Cells/ChatActionCell.java | 119 +- .../org/telegram/ui/Cells/ChatListCell.java | 2 + .../telegram/ui/Cells/ChatMessageCell.java | 781 +++-- .../telegram/ui/Cells/ContextLinkCell.java | 214 +- .../telegram/ui/Cells/CreationTextCell.java | 6 +- .../org/telegram/ui/Cells/DialogCell.java | 290 +- .../telegram/ui/Cells/DialogMeUrlCell.java | 56 +- .../org/telegram/ui/Cells/DividerCell.java | 10 +- .../org/telegram/ui/Cells/DrawerAddCell.java | 6 +- .../telegram/ui/Cells/DrawerProfileCell.java | 117 +- .../org/telegram/ui/Cells/DrawerUserCell.java | 57 +- .../ui/Cells/FeaturedStickerSetCell2.java | 4 + .../ui/Cells/FixedHeightEmptyCell.java | 21 + .../telegram/ui/Cells/GraySectionCell.java | 28 +- .../ui/Cells/GroupCreateUserCell.java | 19 +- .../org/telegram/ui/Cells/HeaderCell.java | 20 +- .../org/telegram/ui/Cells/HintDialogCell.java | 12 +- .../ui/Cells/LocationDirectionCell.java | 2 +- .../telegram/ui/Cells/ManageChatUserCell.java | 22 +- .../telegram/ui/Cells/MaxFileSizeCell.java | 4 +- .../telegram/ui/Cells/MemberRequestCell.java | 2 +- .../org/telegram/ui/Cells/MentionCell.java | 34 +- .../ui/Cells/NotificationsCheckCell.java | 39 +- .../org/telegram/ui/Cells/PatternCell.java | 14 +- .../telegram/ui/Cells/PaymentInfoCell.java | 44 +- .../telegram/ui/Cells/ProfileSearchCell.java | 148 +- .../java/org/telegram/ui/Cells/RadioCell.java | 18 +- .../ui/Cells/RecurrentPaymentsAcceptCell.java | 70 + .../telegram/ui/Cells/SendLocationCell.java | 2 + .../org/telegram/ui/Cells/SessionCell.java | 52 +- .../ui/Cells/SettingsSuggestionCell.java | 16 +- .../telegram/ui/Cells/ShadowSectionCell.java | 20 +- .../telegram/ui/Cells/ShareDialogCell.java | 9 + .../telegram/ui/Cells/SharedAudioCell.java | 12 + .../telegram/ui/Cells/SharedDocumentCell.java | 12 +- .../org/telegram/ui/Cells/SharedLinkCell.java | 40 +- .../ui/Cells/SharedPhotoVideoCell2.java | 4 +- .../telegram/ui/Cells/StickerEmojiCell.java | 101 +- .../org/telegram/ui/Cells/StickerSetCell.java | 79 +- .../ui/Cells/StickerSetGroupInfoCell.java | 2 +- .../telegram/ui/Cells/StickerSetNameCell.java | 11 +- .../java/org/telegram/ui/Cells/TextCell.java | 43 +- .../org/telegram/ui/Cells/TextCheckCell.java | 41 +- .../org/telegram/ui/Cells/TextCheckCell2.java | 1 - .../telegram/ui/Cells/TextCheckbox2Cell.java | 8 +- .../org/telegram/ui/Cells/TextColorCell.java | 8 +- .../org/telegram/ui/Cells/TextDetailCell.java | 24 +- .../ui/Cells/TextInfoPrivacyCell.java | 20 +- .../org/telegram/ui/Cells/TextRadioCell.java | 9 +- .../ui/Cells/TextSelectionHelper.java | 290 +- .../telegram/ui/Cells/TextSettingsCell.java | 62 +- .../ui/Cells/ThemePreviewMessagesCell.java | 13 +- .../java/org/telegram/ui/Cells/UserCell.java | 83 +- .../java/org/telegram/ui/Cells/UserCell2.java | 20 +- .../org/telegram/ui/Cells/WallpaperCell.java | 34 +- .../org/telegram/ui/ChangeBioActivity.java | 21 +- .../org/telegram/ui/ChangeNameActivity.java | 41 +- .../org/telegram/ui/ChangePhoneActivity.java | 1674 ---------- .../telegram/ui/ChangeUsernameActivity.java | 2 +- .../telegram/ui/ChannelAdminLogActivity.java | 25 +- .../telegram/ui/ChannelCreateActivity.java | 134 +- .../ui/Charts/view_data/ChartHeaderView.java | 5 +- .../java/org/telegram/ui/ChatActivity.java | 2932 +++++++++-------- .../org/telegram/ui/ChatEditActivity.java | 126 +- .../org/telegram/ui/ChatEditTypeActivity.java | 88 +- .../org/telegram/ui/ChatLinkActivity.java | 134 +- .../telegram/ui/ChatPullingDownDrawable.java | 41 +- .../telegram/ui/ChatRightsEditActivity.java | 139 +- .../org/telegram/ui/ChatUsersActivity.java | 194 +- .../org/telegram/ui/ChooseSpeedLayout.java | 8 +- .../telegram/ui/Components/AlertsCreator.java | 143 +- .../ui/Components/AnimatedFileDrawable.java | 123 +- .../telegram/ui/Components/AnimatedFloat.java | 110 + .../ui/Components/AnimatedTextView.java | 791 +++++ .../ui/Components/AppIconBulletinLayout.java | 43 + .../ui/Components/AudioPlayerAlert.java | 37 +- .../ui/Components/AutoDeletePopupWrapper.java | 5 +- .../ui/Components/AvatarDrawable.java | 20 +- .../ui/Components/BackButtonMenu.java | 31 +- .../ui/Components/BackupImageView.java | 2 +- .../ui/Components/BlockingUpdateView.java | 12 +- .../ui/Components/BotCommandsMenuView.java | 5 +- .../ui/Components/BotWebViewContainer.java | 357 +- .../Components/BotWebViewMenuContainer.java | 207 +- .../ui/Components/BotWebViewSheet.java | 310 +- .../BottomSheetWithRecyclerListView.java | 244 ++ .../org/telegram/ui/Components/Bulletin.java | 43 +- .../ui/Components/BulletinFactory.java | 87 +- .../ui/Components/ChatActivityEnterView.java | 316 +- .../ui/Components/ChatAttachAlert.java | 253 +- .../ChatAttachAlertBotWebViewLayout.java | 164 +- .../ChatAttachAlertContactsLayout.java | 8 +- .../ChatAttachAlertDocumentLayout.java | 260 +- .../ChatAttachAlertLocationLayout.java | 6 +- .../ChatAttachAlertPhotoLayout.java | 96 +- .../ChatAttachAlertPhotoLayoutPreview.java | 451 ++- .../ui/Components/ChatAvatarContainer.java | 181 +- .../ui/Components/ChatBigEmptyView.java | 6 +- .../ui/Components/ChatGreetingsView.java | 17 +- .../ChatNotificationsPopupWrapper.java | 4 +- .../ChatScrimPopupContainerLayout.java | 34 +- .../ui/Components/ChatThemeBottomSheet.java | 17 +- .../Components/CircularProgressDrawable.java | 50 +- .../ui/Components/ClearHistoryAlert.java | 1 - .../ui/Components/ClippingImageView.java | 10 + .../telegram/ui/Components/ColorPicker.java | 8 +- .../ui/Components/ColoredImageSpan.java | 47 +- .../ui/Components/Crop/CropAreaView.java | 81 +- .../ui/Components/Crop/CropRotationWheel.java | 49 +- .../ui/Components/Crop/CropTransform.java | 2 +- .../telegram/ui/Components/Crop/CropView.java | 126 +- .../ui/Components/CrossfadeDrawable.java | 26 +- .../Components/CustomPhoneKeyboardView.java | 2 +- .../ui/Components/EditTextBoldCursor.java | 27 +- .../telegram/ui/Components/EditTextEmoji.java | 8 +- .../ui/Components/EmbedBottomSheet.java | 4 +- .../org/telegram/ui/Components/EmojiView.java | 277 +- .../Components/ExtendedGridLayoutManager.java | 17 +- .../FillLastLinearLayoutManager.java | 31 +- .../ui/Components/FilterTabsView.java | 247 +- .../ui/Components/FiltersListBottomSheet.java | 22 +- .../ui/Components/FlickerLoadingView.java | 84 +- .../ui/Components/ForwardingPreviewView.java | 2 +- .../ui/Components/FragmentContextView.java | 16 +- .../ui/Components/GigagroupConvertAlert.java | 2 +- .../ui/Components/GroupCallRecordAlert.java | 24 +- .../ui/Components/GroupedPhotosListView.java | 1 + .../org/telegram/ui/Components/HintView.java | 20 +- .../telegram/ui/Components/ImageUpdater.java | 21 +- .../ui/Components/InstantCameraView.java | 109 +- .../ui/Components/InviteLinkBottomSheet.java | 10 +- .../Components/InviteMembersBottomSheet.java | 3 +- .../telegram/ui/Components/JoinCallAlert.java | 24 +- .../ui/Components/JoinCallByUrlAlert.java | 2 +- .../ui/Components/JoinGroupAlert.java | 157 +- .../ui/Components/JoinToSendSettingsView.java | 218 ++ .../ui/Components/LetterDrawable.java | 8 +- .../ui/Components/LineProgressView.java | 2 +- .../ui/Components/LinkActionView.java | 3 + .../org/telegram/ui/Components/LinkPath.java | 6 +- .../ui/Components/LinkSpanDrawable.java | 112 + .../telegram/ui/Components/MediaActivity.java | 2 +- .../ui/Components/MentionsContainerView.java | 660 ++++ .../Components/MotionBackgroundDrawable.java | 25 +- .../telegram/ui/Components/NumberPicker.java | 9 +- .../ui/Components/NumberTextView.java | 1 + .../OtherDocumentPlaceholderDrawable.java | 3 +- .../OverlayActionBarLayoutDialog.java | 150 + .../ui/Components/Paint/Painting.java | 2 +- .../ui/Components/Paint/ShaderSet.java | 2 +- .../telegram/ui/Components/Paint/Texture.java | 7 +- .../Components/Paint/Views/ColorPicker.java | 5 +- .../Paint/Views/EditTextOutline.java | 4 + .../ui/Components/PaintingOverlay.java | 83 +- .../ui/Components/PhonebookShareAlert.java | 28 +- .../telegram/ui/Components/PhotoCropView.java | 29 +- .../ui/Components/PhotoFilterView.java | 30 +- .../ui/Components/PhotoPaintView.java | 46 +- .../PhotoViewerCaptionEnterView.java | 19 +- .../ui/Components/PhotoViewerWebView.java | 6 +- .../ui/Components/PickerBottomLayout.java | 30 +- .../ui/Components/PipVideoOverlay.java | 235 +- .../telegram/ui/Components/PipVideoView.java | 667 ---- .../ui/Components/PollVotesAlert.java | 1 + .../ui/Components/PopupAudioView.java | 2 +- .../ui/Components/PopupSwipeBackLayout.java | 131 +- .../Components/Premium/AboutPremiumView.java | 42 + .../ui/Components/Premium/CarouselView.java | 397 +++ .../Premium/DoubledLimitsBottomSheet.java | 378 +++ .../Premium/GLIcon/GLIconRenderer.java | 148 + .../Premium/GLIcon/GLIconTextureView.java | 737 +++++ .../Components/Premium/GLIcon/ObjLoader.java | 69 + .../Components/Premium/GLIcon/Star3DIcon.java | 280 ++ .../Components/Premium/LimitPreviewView.java | 523 +++ .../Premium/LimitReachedBottomSheet.java | 714 ++++ .../Premium/MatrixParticlesDrawable.java | 163 + .../Components/Premium/PagerHeaderView.java | 5 + .../Premium/PremiumAppIconsPreviewView.java | 126 + .../Components/Premium/PremiumButtonView.java | 211 ++ .../Premium/PremiumFeatureBottomSheet.java | 518 +++ .../Components/Premium/PremiumGradient.java | 205 ++ .../Premium/PremiumLockIconView.java | 219 ++ .../PremiumNotAvailableBottomSheet.java | 72 + .../Premium/PremiumPreviewBottomSheet.java | 449 +++ .../PremiumStickersPreviewRecycler.java | 454 +++ .../Premium/ProfilePremiumCell.java | 49 + .../Premium/ReactionDrawingObject.java | 185 ++ .../Premium/SpeedLineParticles.java | 127 + .../Components/Premium/StarParticlesView.java | 514 +++ .../Premium/VideoScreenPreview.java | 561 ++++ .../ui/Components/ProfileGalleryView.java | 3 +- .../ui/Components/ProgressButton.java | 6 +- .../ui/Components/ProximitySheet.java | 2 +- .../ui/Components/QRCodeBottomSheet.java | 1 + .../ui/Components/RLottieDrawable.java | 62 +- .../ui/Components/ReactedHeaderView.java | 2 +- .../ui/Components/ReactedUsersListView.java | 84 +- .../ui/Components/ReactionTabHolderView.java | 28 +- .../Reactions/ReactionsEffectOverlay.java | 16 +- .../Components/ReactionsContainerLayout.java | 222 +- .../ui/Components/RecyclerListView.java | 4 + .../telegram/ui/Components/ReportAlert.java | 2 +- .../ui/Components/ScrollSlidingTabStrip.java | 22 +- .../Components/ScrollSlidingTextTabStrip.java | 18 +- .../Components/SearchDownloadsContainer.java | 46 +- .../ui/Components/SearchViewPager.java | 58 +- .../telegram/ui/Components/SeekBarView.java | 35 + .../ui/Components/SeekBarWaveform.java | 274 +- .../ui/Components/SenderSelectView.java | 15 + .../telegram/ui/Components/ShareAlert.java | 203 +- .../ui/Components/SharedMediaLayout.java | 132 +- .../ui/Components/SideMenultItemAnimator.java | 5 +- .../ui/Components/SimpleThemeDescription.java | 6 +- .../ui/Components/SlideChooseView.java | 99 +- .../telegram/ui/Components/SlotsDrawable.java | 5 +- .../ui/Components/StickerEmptyView.java | 3 +- .../ui/Components/StickerMasksAlert.java | 1 + .../Components/StickerSetBulletinLayout.java | 46 +- .../ui/Components/StickerTabView.java | 20 +- .../telegram/ui/Components/StickersAlert.java | 139 +- .../ui/Components/StroageUsageView.java | 3 +- .../Components/SwipeGestureSettingsView.java | 29 +- .../org/telegram/ui/Components/Switch.java | 53 +- .../ui/Components/ThemePreviewDrawable.java | 13 +- .../ui/Components/ThemeSmallPreviewView.java | 59 +- .../telegram/ui/Components/TimerDrawable.java | 7 +- .../ui/Components/TranscribeButton.java | 494 +++ .../ui/Components/TranslateAlert.java | 239 +- .../ui/Components/TranslateAlert2.java | 1813 ++++++++++ .../ui/Components/URLSpanNoUnderline.java | 3 + .../ui/Components/URLSpanReplacement.java | 9 + .../org/telegram/ui/Components/UndoView.java | 7 +- .../ui/Components/UpdateAppAlertDialog.java | 2 +- .../ui/Components/VideoForwardDrawable.java | 7 + .../ui/Components/VideoPlayerSeekBar.java | 412 ++- .../ui/Components/VideoSeekPreviewImage.java | 2 +- .../ui/Components/ViewPagerFixed.java | 3 +- .../ui/Components/WallpaperUpdater.java | 2 +- .../ui/Components/spoilers/SpoilerEffect.java | 12 +- .../ui/Components/voip/AcceptDeclineView.java | 4 +- .../Components/voip/CellFlickerDrawable.java | 120 +- .../Components/voip/RTMPStreamPipOverlay.java | 2 +- .../org/telegram/ui/ContactAddActivity.java | 43 +- .../org/telegram/ui/ContactsActivity.java | 5 +- .../org/telegram/ui/ContentPreviewViewer.java | 513 ++- .../telegram/ui/DataAutoDownloadActivity.java | 14 +- .../org/telegram/ui/DataSettingsActivity.java | 50 +- .../telegram/ui/DefaultThemesPreviewCell.java | 104 +- .../ui/Delegates/MemberRequestsDelegate.java | 4 +- .../java/org/telegram/ui/DialogsActivity.java | 906 +++-- .../org/telegram/ui/DownloadProgressIcon.java | 2 + .../org/telegram/ui/EditWidgetActivity.java | 16 +- .../telegram/ui/EmojiAnimationsOverlay.java | 221 +- .../org/telegram/ui/FilterCreateActivity.java | 10 +- .../org/telegram/ui/FilterUsersActivity.java | 21 +- .../org/telegram/ui/FilteredSearchView.java | 7 +- .../org/telegram/ui/FiltersSetupActivity.java | 149 +- .../org/telegram/ui/GLIconSettingsView.java | 236 ++ .../org/telegram/ui/GroupCallActivity.java | 55 +- .../org/telegram/ui/GroupCreateActivity.java | 30 +- .../telegram/ui/GroupStickersActivity.java | 806 +++-- .../java/org/telegram/ui/IntroActivity.java | 2 +- .../org/telegram/ui/KeyboardHideHelper.java | 192 ++ .../telegram/ui/LanguageSelectActivity.java | 28 +- .../java/org/telegram/ui/LaunchActivity.java | 426 ++- .../telegram/ui/LauncherIconController.java | 71 + .../org/telegram/ui/LocationActivity.java | 34 +- .../java/org/telegram/ui/LoginActivity.java | 566 ++-- .../java/org/telegram/ui/LogoutActivity.java | 39 +- .../java/org/telegram/ui/MessageSeenView.java | 22 +- .../org/telegram/ui/NewContactActivity.java | 3 +- .../NotificationsCustomSettingsActivity.java | 122 +- .../ui/NotificationsSoundActivity.java | 112 +- .../org/telegram/ui/PasscodeActivity.java | 1 + .../org/telegram/ui/PassportActivity.java | 12 +- .../org/telegram/ui/PaymentFormActivity.java | 1030 ++++-- .../org/telegram/ui/PeopleNearbyActivity.java | 6 +- .../telegram/ui/PhotoAlbumPickerActivity.java | 14 +- .../org/telegram/ui/PhotoCropActivity.java | 2 +- .../org/telegram/ui/PhotoPickerActivity.java | 125 +- .../ui/PhotoPickerSearchActivity.java | 15 +- .../java/org/telegram/ui/PhotoViewer.java | 1250 +++++-- .../ui/PopupNotificationActivity.java | 2 +- .../org/telegram/ui/PremiumFeatureCell.java | 72 + .../telegram/ui/PremiumPreviewFragment.java | 1148 +++++++ .../telegram/ui/PrivacyControlActivity.java | 7 +- .../telegram/ui/PrivacySettingsActivity.java | 2 +- .../org/telegram/ui/PrivacyUsersActivity.java | 16 +- .../java/org/telegram/ui/ProfileActivity.java | 1141 ++++--- .../ui/ProfileNotificationsActivity.java | 683 ++-- .../org/telegram/ui/ProxyListActivity.java | 12 +- .../telegram/ui/ProxySettingsActivity.java | 2 +- .../main/java/org/telegram/ui/QrActivity.java | 73 +- .../org/telegram/ui/SecretMediaViewer.java | 2 +- .../org/telegram/ui/SessionBottomSheet.java | 23 +- .../org/telegram/ui/SessionsActivity.java | 248 +- .../telegram/ui/SponsoredMessageInfoView.java | 2 +- .../org/telegram/ui/StatisticActivity.java | 8 +- .../org/telegram/ui/StickersActivity.java | 536 ++- .../java/org/telegram/ui/ThemeActivity.java | 266 +- .../org/telegram/ui/ThemePreviewActivity.java | 36 +- .../ui/TooManyCommunitiesActivity.java | 5 +- .../ui/TwoStepVerificationSetupActivity.java | 16 +- .../org/telegram/ui/UnlockPremiumView.java | 63 + .../ui/VoiceMessageEnterTransition.java | 4 + .../telegram/ui/WallpapersListActivity.java | 10 +- .../java/org/telegram/ui/vibroslider.java | 103 + .../main/res/drawable-hdpi/account_add.png | Bin 93 -> 0 bytes .../main/res/drawable-hdpi/actionbtn_next.png | Bin 358 -> 0 bytes .../res/drawable-hdpi/actions_addadmin.png | Bin 1335 -> 0 bytes .../res/drawable-hdpi/actions_addchat.png | Bin 1296 -> 0 bytes .../res/drawable-hdpi/actions_addmember2.png | Bin 847 -> 0 bytes .../main/res/drawable-hdpi/actions_link.png | Bin 983 -> 0 bytes .../res/drawable-hdpi/actions_nearby_off.png | Bin 1066 -> 0 bytes .../res/drawable-hdpi/actions_nearby_on.png | Bin 1093 -> 0 bytes .../res/drawable-hdpi/actions_permissions.png | Bin 1030 -> 0 bytes .../res/drawable-hdpi/actions_reactions.png | Bin 1015 -> 0 bytes .../res/drawable-hdpi/actions_remove_user.png | Bin 452 -> 0 bytes .../res/drawable-hdpi/actions_removed.png | Bin 970 -> 0 bytes .../res/drawable-hdpi/actions_requests.png | Bin 828 -> 0 bytes .../res/drawable-hdpi/actions_setphoto.png | Bin 731 -> 0 bytes .../res/drawable-hdpi/actions_viewmembers.png | Bin 867 -> 0 bytes .../src/main/res/drawable-hdpi/add_admin.png | Bin 1313 -> 0 bytes .../res/drawable-hdpi/add_contact_new.png | Bin 111 -> 0 bytes .../res/drawable-hdpi/audio_mini_arrow.png | Bin 97 -> 0 bytes .../res/drawable-hdpi/audio_mini_cancel.png | Bin 130 -> 0 bytes .../res/drawable-hdpi/audiosend_pause.png | Bin 133 -> 0 bytes .../main/res/drawable-hdpi/audiosend_play.png | Bin 371 -> 0 bytes .../res/drawable-hdpi/brightness_high.png | Bin 831 -> 0 bytes .../main/res/drawable-hdpi/brightness_low.png | Bin 650 -> 0 bytes .../src/main/res/drawable-hdpi/broadcast3.png | Bin 200 -> 0 bytes .../main/res/drawable-hdpi/broadcast_w.png | Bin 323 -> 0 bytes .../main/res/drawable-hdpi/chats_delete.png | Bin 344 -> 0 bytes .../main/res/drawable-hdpi/chats_leave.png | Bin 301 -> 0 bytes .../res/drawable-hdpi/contacts_sort_name.png | Bin 226 -> 0 bytes .../res/drawable-hdpi/contacts_sort_time.png | Bin 228 -> 0 bytes .../src/main/res/drawable-hdpi/devices.png | Bin 409 -> 0 bytes .../src/main/res/drawable-hdpi/doc_big.png | Bin 365 -> 0 bytes .../main/res/drawable-hdpi/edit_cancel.png | Bin 339 -> 0 bytes .../res/drawable-hdpi/emoji_tabs_premium.png | Bin 0 -> 1239 bytes .../res/drawable-hdpi/floating_camera.png | Bin 358 -> 0 bytes .../res/drawable-hdpi/floating_message.png | Bin 136 -> 0 bytes .../res/drawable-hdpi/folders_archive.png | Bin 549 -> 0 bytes .../main/res/drawable-hdpi/folders_bot.png | Bin 822 -> 0 bytes .../res/drawable-hdpi/folders_channel.png | Bin 532 -> 0 bytes .../main/res/drawable-hdpi/folders_group.png | Bin 599 -> 0 bytes .../main/res/drawable-hdpi/folders_mute.png | Bin 703 -> 0 bytes .../res/drawable-hdpi/folders_private.png | Bin 472 -> 0 bytes .../main/res/drawable-hdpi/folders_read.png | Bin 847 -> 0 bytes .../res/drawable-hdpi/folders_requests.png | Bin 747 -> 0 bytes .../main/res/drawable-hdpi/forwardvideo.png | Bin 446 -> 0 bytes .../src/main/res/drawable-hdpi/gem.png | Bin 3777 -> 0 bytes .../src/main/res/drawable-hdpi/gem_s.png | Bin 1303 -> 0 bytes .../res/drawable-hdpi/group_addmember.png | Bin 376 -> 0 bytes .../main/res/drawable-hdpi/group_admin.png | Bin 399 -> 0 bytes .../res/drawable-hdpi/group_admin_new.png | Bin 394 -> 0 bytes .../main/res/drawable-hdpi/group_ban_new.png | Bin 320 -> 0 bytes .../main/res/drawable-hdpi/group_banned.png | Bin 283 -> 0 bytes .../src/main/res/drawable-hdpi/group_log.png | Bin 638 -> 0 bytes .../src/main/res/drawable-hdpi/ic_ab_copy.png | Bin 206 -> 0 bytes .../main/res/drawable-hdpi/ic_ab_delete.png | Bin 162 -> 0 bytes .../src/main/res/drawable-hdpi/ic_ab_fave.png | Bin 369 -> 0 bytes .../main/res/drawable-hdpi/ic_ab_unfave.png | Bin 497 -> 0 bytes .../drawable-hdpi/ic_bluetooth_white_24dp.png | Bin 306 -> 0 bytes .../src/main/res/drawable-hdpi/ic_done.png | Bin 180 -> 0 bytes .../drawable-hdpi/icon_2_background_sa.png | Bin 0 -> 22987 bytes .../drawable-hdpi/icon_3_background_sa.png | Bin 0 -> 15350 bytes .../drawable-hdpi/icon_4_background_sa.png | Bin 0 -> 20826 bytes .../drawable-hdpi/icon_5_background_sa.png | Bin 0 -> 22483 bytes .../drawable-hdpi/icon_6_background_sa.png | Bin 0 -> 9123 bytes .../drawable-hdpi/icon_background_clip.png | Bin 0 -> 2559 bytes .../icon_background_clip_round.png | Bin 0 -> 2652 bytes .../icon_background_sa.png | Bin .../main/res/drawable-hdpi/instant_link.png | Bin 679 -> 0 bytes .../src/main/res/drawable-hdpi/list_bot.png | Bin 287 -> 0 bytes .../main/res/drawable-hdpi/list_broadcast.png | Bin 225 -> 0 bytes .../src/main/res/drawable-hdpi/list_group.png | Bin 310 -> 0 bytes .../res/drawable-hdpi/location_current.png | Bin 748 -> 0 bytes .../main/res/drawable-hdpi/location_type.png | Bin 821 -> 0 bytes .../src/main/res/drawable-hdpi/lock_open.png | Bin 323 -> 0 bytes .../src/main/res/drawable-hdpi/log_info.png | Bin 503 -> 0 bytes .../src/main/res/drawable-hdpi/menu_add.png | Bin 269 -> 0 bytes .../res/drawable-hdpi/menu_bookmarks_14.png | Bin 911 -> 0 bytes .../res/drawable-hdpi/menu_bookmarks_hw.png | Bin 1079 -> 0 bytes .../res/drawable-hdpi/menu_bookmarks_ny.png | Bin 679 -> 0 bytes .../src/main/res/drawable-hdpi/menu_bots.png | Bin 783 -> 0 bytes .../main/res/drawable-hdpi/menu_broadcast.png | Bin 808 -> 0 bytes .../res/drawable-hdpi/menu_broadcast_14.png | Bin 1235 -> 0 bytes .../res/drawable-hdpi/menu_broadcast_hw.png | Bin 918 -> 0 bytes .../src/main/res/drawable-hdpi/menu_calls.png | Bin 501 -> 0 bytes .../main/res/drawable-hdpi/menu_calls_14.png | Bin 1168 -> 0 bytes .../main/res/drawable-hdpi/menu_calls_hw.png | Bin 1074 -> 0 bytes .../main/res/drawable-hdpi/menu_calls_ny.png | Bin 786 -> 0 bytes .../main/res/drawable-hdpi/menu_camera.png | Bin 486 -> 0 bytes .../main/res/drawable-hdpi/menu_camera2.png | Bin 975 -> 0 bytes .../main/res/drawable-hdpi/menu_camera_av.png | Bin 549 -> 0 bytes .../res/drawable-hdpi/menu_channel_ny.png | Bin 698 -> 0 bytes .../src/main/res/drawable-hdpi/menu_chats.png | Bin 912 -> 0 bytes .../src/main/res/drawable-hdpi/menu_clear.png | Bin 749 -> 0 bytes .../res/drawable-hdpi/menu_clear_recent.png | Bin 898 -> 0 bytes .../res/drawable-hdpi/menu_clearcache.png | Bin 877 -> 0 bytes .../main/res/drawable-hdpi/menu_contacts.png | Bin 704 -> 0 bytes .../res/drawable-hdpi/menu_contacts_14.png | Bin 1261 -> 0 bytes .../res/drawable-hdpi/menu_contacts_hw.png | Bin 1112 -> 0 bytes .../res/drawable-hdpi/menu_contacts_ny.png | Bin 637 -> 0 bytes .../src/main/res/drawable-hdpi/menu_data.png | Bin 546 -> 0 bytes .../src/main/res/drawable-hdpi/menu_date.png | Bin 406 -> 0 bytes .../main/res/drawable-hdpi/menu_expand.png | Bin 425 -> 0 bytes .../main/res/drawable-hdpi/menu_groups.png | Bin 860 -> 0 bytes .../main/res/drawable-hdpi/menu_groups_14.png | Bin 1303 -> 0 bytes .../main/res/drawable-hdpi/menu_groups_hw.png | Bin 1247 -> 0 bytes .../main/res/drawable-hdpi/menu_groups_ny.png | Bin 790 -> 0 bytes .../src/main/res/drawable-hdpi/menu_help.png | Bin 653 -> 0 bytes .../main/res/drawable-hdpi/menu_help_hw.png | Bin 1145 -> 0 bytes .../main/res/drawable-hdpi/menu_help_ny.png | Bin 427 -> 0 bytes .../src/main/res/drawable-hdpi/menu_info.png | Bin 768 -> 0 bytes .../main/res/drawable-hdpi/menu_invite.png | Bin 838 -> 0 bytes .../main/res/drawable-hdpi/menu_invite_hw.png | Bin 1055 -> 0 bytes .../main/res/drawable-hdpi/menu_invite_ny.png | Bin 638 -> 0 bytes .../main/res/drawable-hdpi/menu_jobtitle.png | Bin 469 -> 0 bytes .../main/res/drawable-hdpi/menu_language.png | Bin 613 -> 0 bytes .../main/res/drawable-hdpi/menu_location.png | Bin 1010 -> 0 bytes .../src/main/res/drawable-hdpi/menu_mail.png | Bin 940 -> 0 bytes .../main/res/drawable-hdpi/menu_nearby.png | Bin 1106 -> 0 bytes .../main/res/drawable-hdpi/menu_nearby_ny.png | Bin 1195 -> 0 bytes .../main/res/drawable-hdpi/menu_newfilter.png | Bin 365 -> 0 bytes .../main/res/drawable-hdpi/menu_newphone.png | Bin 464 -> 0 bytes .../src/main/res/drawable-hdpi/menu_night.png | Bin 537 -> 0 bytes .../res/drawable-hdpi/menu_notifications.png | Bin 447 -> 0 bytes .../main/res/drawable-hdpi/menu_passcode.png | Bin 764 -> 0 bytes .../res/drawable-hdpi/menu_pinnedlist.png | Bin 819 -> 0 bytes .../main/res/drawable-hdpi/menu_policy.png | Bin 1133 -> 0 bytes .../main/res/drawable-hdpi/menu_private.png | Bin 1106 -> 0 bytes .../src/main/res/drawable-hdpi/menu_read.png | Bin 223 -> 0 bytes .../main/res/drawable-hdpi/menu_recent.png | Bin 780 -> 0 bytes .../src/main/res/drawable-hdpi/menu_saved.png | Bin 372 -> 0 bytes .../main/res/drawable-hdpi/menu_search.png | Bin 388 -> 0 bytes .../main/res/drawable-hdpi/menu_secret.png | Bin 378 -> 0 bytes .../main/res/drawable-hdpi/menu_secret_14.png | Bin 1335 -> 0 bytes .../main/res/drawable-hdpi/menu_secret_hw.png | Bin 986 -> 0 bytes .../main/res/drawable-hdpi/menu_secret_ny.png | Bin 533 -> 0 bytes .../main/res/drawable-hdpi/menu_settings.png | Bin 1333 -> 0 bytes .../res/drawable-hdpi/menu_settings_14.png | Bin 1157 -> 0 bytes .../drawable-hdpi/menu_settings_filled.png | Bin 458 -> 0 bytes .../res/drawable-hdpi/menu_settings_hw.png | Bin 1332 -> 0 bytes .../res/drawable-hdpi/menu_settings_ny.png | Bin 753 -> 0 bytes .../main/res/drawable-hdpi/menu_support.png | Bin 719 -> 0 bytes .../main/res/drawable-hdpi/menu_support2.png | Bin 1092 -> 0 bytes .../main/res/drawable-hdpi/menu_switch.png | Bin 485 -> 0 bytes .../main/res/drawable-hdpi/menu_unread.png | Bin 917 -> 0 bytes .../main/res/drawable-hdpi/menu_wallet.png | Bin 607 -> 0 bytes .../main/res/drawable-hdpi/menu_wallet_ny.png | Bin 607 -> 0 bytes .../src/main/res/drawable-hdpi/menu_work.png | Bin 627 -> 0 bytes .../main/res/drawable-hdpi/msg_actions.png | Bin 134 -> 286 bytes .../src/main/res/drawable-hdpi/msg_add.png | Bin 0 -> 361 bytes .../res/drawable-hdpi/msg_addaccount_all.png | Bin 0 -> 651 bytes .../res/drawable-hdpi/msg_addaccount_base.png | Bin 0 -> 376 bytes .../res/drawable-hdpi/msg_addaccount_text.png | Bin 0 -> 489 bytes .../src/main/res/drawable-hdpi/msg_addbio.png | Bin 1050 -> 1059 bytes .../src/main/res/drawable-hdpi/msg_addbot.png | Bin 932 -> 829 bytes .../main/res/drawable-hdpi/msg_addfolder.png | Bin 710 -> 794 bytes .../main/res/drawable-hdpi/msg_addphoto.png | Bin 987 -> 1024 bytes .../main/res/drawable-hdpi/msg_admin_add.png | Bin 0 -> 1322 bytes .../src/main/res/drawable-hdpi/msg_admins.png | Bin 0 -> 1302 bytes .../main/res/drawable-hdpi/msg_allowspeak.png | Bin 1056 -> 1037 bytes .../main/res/drawable-hdpi/msg_archive.png | Bin 724 -> 814 bytes .../drawable-hdpi/msg_archived_stickers.png | Bin 0 -> 1198 bytes .../main/res/drawable-hdpi/msg_arrow_back.png | Bin 387 -> 506 bytes .../res/drawable-hdpi/msg_arrow_forward.png | Bin 0 -> 547 bytes .../main/res/drawable-hdpi/msg_arrowright.png | Bin 248 -> 328 bytes .../res/drawable-hdpi/msg_ask_question.png | Bin 0 -> 1082 bytes .../main/res/drawable-hdpi/msg_autodelete.png | Bin 928 -> 951 bytes .../main/res/drawable-hdpi/msg_background.png | Bin 869 -> 861 bytes .../main/res/drawable-hdpi/msg_bell_mute.png | Bin 0 -> 1045 bytes .../res/drawable-hdpi/msg_bell_unmute.png | Bin 0 -> 901 bytes .../src/main/res/drawable-hdpi/msg_bio.png | Bin 894 -> 0 bytes .../src/main/res/drawable-hdpi/msg_block.png | Bin 813 -> 770 bytes .../src/main/res/drawable-hdpi/msg_block2.png | Bin 1021 -> 1096 bytes .../main/res/drawable-hdpi/msg_bluetooth.png | Bin 0 -> 843 bytes .../{blur_linear.png => msg_blur_linear.png} | Bin .../{blur_off.png => msg_blur_off.png} | Bin .../{blur_radial.png => msg_blur_radial.png} | Bin .../src/main/res/drawable-hdpi/msg_bots.png | Bin 0 -> 862 bytes .../res/drawable-hdpi/msg_brightness_high.png | Bin 0 -> 827 bytes .../res/drawable-hdpi/msg_brightness_low.png | Bin 0 -> 596 bytes .../main/res/drawable-hdpi/msg_calendar.png | Bin 821 -> 814 bytes .../main/res/drawable-hdpi/msg_calendar2.png | Bin 539 -> 537 bytes .../src/main/res/drawable-hdpi/msg_calls.png | Bin 0 -> 824 bytes .../main/res/drawable-hdpi/msg_calls_14.png | Bin 0 -> 1101 bytes .../main/res/drawable-hdpi/msg_calls_hw.png | Bin 0 -> 1036 bytes .../res/drawable-hdpi/msg_calls_minimize.png | Bin 586 -> 550 bytes .../main/res/drawable-hdpi/msg_calls_ny.png | Bin 0 -> 1155 bytes .../main/res/drawable-hdpi/msg_calls_pin.png | Bin 671 -> 637 bytes .../res/drawable-hdpi/msg_calls_unpin.png | Bin 1000 -> 808 bytes .../src/main/res/drawable-hdpi/msg_camera.png | Bin 0 -> 1002 bytes .../src/main/res/drawable-hdpi/msg_cancel.png | Bin 986 -> 838 bytes .../main/res/drawable-hdpi/msg_channel.png | Bin 831 -> 882 bytes .../main/res/drawable-hdpi/msg_channel_14.png | Bin 0 -> 1180 bytes .../main/res/drawable-hdpi/msg_channel_hw.png | Bin 0 -> 855 bytes .../main/res/drawable-hdpi/msg_channel_ny.png | Bin 0 -> 1045 bytes .../main/res/drawable-hdpi/msg_chats_add.png | Bin 0 -> 1149 bytes .../res/drawable-hdpi/msg_chats_remove.png | Bin 0 -> 1097 bytes .../src/main/res/drawable-hdpi/msg_check.png | Bin 295 -> 440 bytes .../res/drawable-hdpi/msg_check_thick.png | Bin 0 -> 529 bytes .../src/main/res/drawable-hdpi/msg_clear.png | Bin 733 -> 806 bytes .../res/drawable-hdpi/msg_clear_input.png | Bin 0 -> 699 bytes .../res/drawable-hdpi/msg_clear_recent.png | Bin 0 -> 981 bytes .../main/res/drawable-hdpi/msg_clearcache.png | Bin 0 -> 933 bytes .../src/main/res/drawable-hdpi/msg_close.png | Bin 0 -> 440 bytes .../src/main/res/drawable-hdpi/msg_colors.png | Bin 1123 -> 1106 bytes .../res/drawable-hdpi/msg_contact_add.png | Bin 0 -> 869 bytes .../main/res/drawable-hdpi/msg_contacts.png | Bin 0 -> 738 bytes .../res/drawable-hdpi/msg_contacts_14.png | Bin 0 -> 1222 bytes .../res/drawable-hdpi/msg_contacts_hw.png | Bin 0 -> 1217 bytes .../res/drawable-hdpi/msg_contacts_name.png | Bin 0 -> 536 bytes .../res/drawable-hdpi/msg_contacts_ny.png | Bin 0 -> 1129 bytes .../res/drawable-hdpi/msg_contacts_time.png | Bin 0 -> 523 bytes .../src/main/res/drawable-hdpi/msg_copy.png | Bin 492 -> 603 bytes .../drawable-hdpi/msg_current_location.png | Bin 0 -> 807 bytes .../src/main/res/drawable-hdpi/msg_data.png | Bin 0 -> 843 bytes .../src/main/res/drawable-hdpi/msg_delete.png | Bin 751 -> 747 bytes .../res/drawable-hdpi/msg_delete_auto.png | Bin 1002 -> 991 bytes .../main/res/drawable-hdpi/msg_delete_old.png | Bin 0 -> 635 bytes .../main/res/drawable-hdpi/msg_devices.png | Bin 0 -> 493 bytes .../main/res/drawable-hdpi/msg_discussion.png | Bin 874 -> 929 bytes .../main/res/drawable-hdpi/msg_download.png | Bin 415 -> 506 bytes .../main/res/drawable-hdpi/msg_draw_arrow.png | Bin 936 -> 1008 bytes .../res/drawable-hdpi/msg_draw_marker.png | Bin 990 -> 1045 bytes .../main/res/drawable-hdpi/msg_draw_neon.png | Bin 1031 -> 1135 bytes .../main/res/drawable-hdpi/msg_draw_pen.png | Bin 951 -> 1043 bytes .../src/main/res/drawable-hdpi/msg_edit.png | Bin 570 -> 609 bytes .../drawable-hdpi/msg_emoji_activities.png | Bin 0 -> 932 bytes .../main/res/drawable-hdpi/msg_emoji_cat.png | Bin 0 -> 1086 bytes .../res/drawable-hdpi/msg_emoji_flags.png | Bin 0 -> 610 bytes .../main/res/drawable-hdpi/msg_emoji_food.png | Bin 0 -> 922 bytes .../res/drawable-hdpi/msg_emoji_objects.png | Bin 0 -> 927 bytes .../res/drawable-hdpi/msg_emoji_other.png | Bin 0 -> 955 bytes .../res/drawable-hdpi/msg_emoji_premium.png | Bin 0 -> 1035 bytes .../res/drawable-hdpi/msg_emoji_question.png | Bin 0 -> 975 bytes .../res/drawable-hdpi/msg_emoji_recent.png | Bin 0 -> 799 bytes .../res/drawable-hdpi/msg_emoji_smiles.png | Bin 0 -> 948 bytes .../res/drawable-hdpi/msg_emoji_travel.png | Bin 0 -> 865 bytes .../main/res/drawable-hdpi/msg_endcall.png | Bin 725 -> 748 bytes .../src/main/res/drawable-hdpi/msg_expand.png | Bin 0 -> 335 bytes .../src/main/res/drawable-hdpi/msg_fave.png | Bin 837 -> 992 bytes ...mtrl_alpha.png => msg_filled_shareout.png} | Bin .../src/main/res/drawable-hdpi/msg_folder.png | Bin 0 -> 613 bytes .../res/drawable-hdpi/msg_folder_reorder.png | Bin 0 -> 678 bytes .../{menu_folders.png => msg_folders.png} | Bin .../res/drawable-hdpi/msg_folders_archive.png | Bin 0 -> 651 bytes .../res/drawable-hdpi/msg_folders_bots.png | Bin 0 -> 708 bytes .../drawable-hdpi/msg_folders_channels.png | Bin 0 -> 593 bytes .../res/drawable-hdpi/msg_folders_groups.png | Bin 0 -> 741 bytes .../res/drawable-hdpi/msg_folders_muted.png | Bin 0 -> 912 bytes .../res/drawable-hdpi/msg_folders_private.png | Bin 0 -> 879 bytes .../res/drawable-hdpi/msg_folders_read.png | Bin 0 -> 811 bytes .../drawable-hdpi/msg_folders_requests.png | Bin 0 -> 836 bytes .../main/res/drawable-hdpi/msg_forward.png | Bin 514 -> 486 bytes .../res/drawable-hdpi/msg_forward_check.png | Bin 538 -> 513 bytes .../res/drawable-hdpi/msg_forward_replace.png | Bin 1174 -> 1102 bytes .../res/drawable-hdpi/msg_forward_send.png | Bin 935 -> 0 bytes .../main/res/drawable-hdpi/msg_gallery.png | Bin 779 -> 936 bytes .../src/main/res/drawable-hdpi/msg_gif.png | Bin 844 -> 810 bytes .../main/res/drawable-hdpi/msg_gif_add.png | Bin 0 -> 952 bytes .../main/res/drawable-hdpi/msg_go_down.png | Bin 251 -> 354 bytes .../src/main/res/drawable-hdpi/msg_go_up.png | Bin 252 -> 356 bytes .../src/main/res/drawable-hdpi/msg_groups.png | Bin 0 -> 941 bytes .../main/res/drawable-hdpi/msg_groups_14.png | Bin 0 -> 1200 bytes .../res/drawable-hdpi/msg_groups_create.png | Bin 0 -> 1085 bytes .../main/res/drawable-hdpi/msg_groups_hw.png | Bin 0 -> 1258 bytes .../main/res/drawable-hdpi/msg_groups_ny.png | Bin 0 -> 1174 bytes .../main/res/drawable-hdpi/msg_handdown.png | Bin 982 -> 925 bytes .../src/main/res/drawable-hdpi/msg_help.png | Bin 0 -> 1017 bytes .../main/res/drawable-hdpi/msg_help_14.png | Bin 0 -> 1069 bytes .../main/res/drawable-hdpi/msg_help_hw.png | Bin 0 -> 1086 bytes .../main/res/drawable-hdpi/msg_help_ny.png | Bin 0 -> 866 bytes .../src/main/res/drawable-hdpi/msg_home.png | Bin 685 -> 806 bytes .../src/main/res/drawable-hdpi/msg_hybrid.png | Bin 896 -> 928 bytes .../src/main/res/drawable-hdpi/msg_info.png | Bin 0 -> 869 bytes .../main/res/drawable-hdpi/msg_inputarrow.png | Bin 422 -> 501 bytes .../res/drawable-hdpi/msg_instant_link.png | Bin 0 -> 967 bytes .../src/main/res/drawable-hdpi/msg_invite.png | Bin 0 -> 837 bytes .../main/res/drawable-hdpi/msg_invite_14.png | Bin 0 -> 1158 bytes .../main/res/drawable-hdpi/msg_invite_hw.png | Bin 0 -> 1029 bytes .../main/res/drawable-hdpi/msg_invite_ny.png | Bin 0 -> 1204 bytes .../main/res/drawable-hdpi/msg_invited.png | Bin 873 -> 852 bytes .../main/res/drawable-hdpi/msg_jobtitle.png | Bin 0 -> 644 bytes .../main/res/drawable-hdpi/msg_language.png | Bin 1110 -> 1090 bytes .../src/main/res/drawable-hdpi/msg_leave.png | Bin 645 -> 696 bytes .../main/res/drawable-hdpi/msg_limit_2x.png | Bin 0 -> 866 bytes .../res/drawable-hdpi/msg_limit_accounts.png | Bin 0 -> 879 bytes .../res/drawable-hdpi/msg_limit_chats.png | Bin 0 -> 675 bytes .../res/drawable-hdpi/msg_limit_folder.png | Bin 0 -> 465 bytes .../res/drawable-hdpi/msg_limit_groups.png | Bin 0 -> 786 bytes .../res/drawable-hdpi/msg_limit_links.png | Bin 0 -> 915 bytes .../main/res/drawable-hdpi/msg_limit_pin.png | Bin 0 -> 682 bytes .../src/main/res/drawable-hdpi/msg_link.png | Bin 668 -> 606 bytes .../src/main/res/drawable-hdpi/msg_link2.png | Bin 0 -> 924 bytes .../src/main/res/drawable-hdpi/msg_list.png | Bin 177 -> 307 bytes .../src/main/res/drawable-hdpi/msg_list2.png | Bin 0 -> 304 bytes .../main/res/drawable-hdpi/msg_location.png | Bin 504 -> 1148 bytes .../res/drawable-hdpi/msg_location_alert.png | Bin 1169 -> 1185 bytes .../res/drawable-hdpi/msg_location_alert2.png | Bin 730 -> 841 bytes .../src/main/res/drawable-hdpi/msg_log.png | Bin 0 -> 705 bytes .../src/main/res/drawable-hdpi/msg_map.png | Bin 565 -> 703 bytes .../main/res/drawable-hdpi/msg_map_type.png | Bin 0 -> 833 bytes .../main/res/drawable-hdpi/msg_markread.png | Bin 383 -> 1162 bytes .../main/res/drawable-hdpi/msg_markunread.png | Bin 616 -> 990 bytes .../src/main/res/drawable-hdpi/msg_mask.png | Bin 946 -> 1319 bytes .../src/main/res/drawable-hdpi/msg_media.png | Bin 769 -> 685 bytes .../main/res/drawable-hdpi/msg_mention.png | Bin 1018 -> 943 bytes .../main/res/drawable-hdpi/msg_message.png | Bin 786 -> 712 bytes .../res/drawable-hdpi/msg_mini_customize.png | Bin 0 -> 458 bytes .../drawable-hdpi/msg_mini_premiumlock.png | Bin 0 -> 410 bytes .../main/res/drawable-hdpi/msg_minvideo.png | Bin 513 -> 461 bytes .../main/res/drawable-hdpi/msg_msgbubble3.png | Bin 949 -> 938 bytes .../src/main/res/drawable-hdpi/msg_mute.png | Bin 1157 -> 1132 bytes .../res/drawable-hdpi/msg_mute_period.png | Bin 978 -> 1003 bytes .../src/main/res/drawable-hdpi/msg_nearby.png | Bin 0 -> 1107 bytes .../main/res/drawable-hdpi/msg_nearby_14.png | Bin 0 -> 1133 bytes .../main/res/drawable-hdpi/msg_nearby_hw.png | Bin 0 -> 1149 bytes .../main/res/drawable-hdpi/msg_nearby_ny.png | Bin 0 -> 1114 bytes .../main/res/drawable-hdpi/msg_nearby_off.png | Bin 0 -> 1358 bytes .../main/res/drawable-hdpi/msg_newfilter.png | Bin 0 -> 445 bytes .../main/res/drawable-hdpi/msg_newphone.png | Bin 0 -> 916 bytes .../drawable-hdpi/msg_nightmode_system.png | Bin 0 -> 1000 bytes .../main/res/drawable-hdpi/msg_noise_off.png | Bin 1107 -> 1067 bytes .../main/res/drawable-hdpi/msg_noise_on.png | Bin 1023 -> 1032 bytes .../res/drawable-hdpi/msg_notifications.png | Bin 0 -> 701 bytes .../src/main/res/drawable-hdpi/msg_openin.png | Bin 491 -> 640 bytes .../res/drawable-hdpi/msg_openprofile.png | Bin 1025 -> 1137 bytes .../{menu_palette.png => msg_palette.png} | Bin .../res/drawable-hdpi/msg_payment_address.png | Bin 0 -> 958 bytes .../res/drawable-hdpi/msg_payment_card.png | Bin 0 -> 445 bytes .../drawable-hdpi/msg_payment_delivery.png | Bin 0 -> 837 bytes .../drawable-hdpi/msg_payment_provider.png | Bin 0 -> 714 bytes .../res/drawable-hdpi/msg_permissions.png | Bin 1010 -> 994 bytes .../main/res/drawable-hdpi/msg_photo_blur.png | Bin 0 -> 840 bytes .../drawable-hdpi/msg_photo_blur_linear.png | Bin 0 -> 390 bytes .../res/drawable-hdpi/msg_photo_blur_off.png | Bin 0 -> 265 bytes .../drawable-hdpi/msg_photo_blur_radial.png | Bin 0 -> 799 bytes .../res/drawable-hdpi/msg_photo_brush.png | Bin 0 -> 842 bytes .../main/res/drawable-hdpi/msg_photo_crop.png | Bin 0 -> 567 bytes .../res/drawable-hdpi/msg_photo_cropfix.png | Bin 0 -> 489 bytes .../res/drawable-hdpi/msg_photo_curve.png | Bin 0 -> 754 bytes .../main/res/drawable-hdpi/msg_photo_draw.png | Bin 0 -> 878 bytes .../main/res/drawable-hdpi/msg_photo_flip.png | Bin 0 -> 594 bytes .../res/drawable-hdpi/msg_photo_rotate.png | Bin 0 -> 853 bytes .../res/drawable-hdpi/msg_photo_settings.png | Bin 0 -> 685 bytes .../main/res/drawable-hdpi/msg_photo_text.png | Bin 0 -> 721 bytes .../src/main/res/drawable-hdpi/msg_photos.png | Bin 0 -> 871 bytes .../src/main/res/drawable-hdpi/msg_pin.png | Bin 681 -> 757 bytes .../main/res/drawable-hdpi/msg_pinnedlist.png | Bin 0 -> 865 bytes .../src/main/res/drawable-hdpi/msg_played.png | Bin 878 -> 904 bytes .../src/main/res/drawable-hdpi/msg_policy.png | Bin 0 -> 1143 bytes .../main/res/drawable-hdpi/msg_pollstop.png | Bin 734 -> 744 bytes .../res/drawable-hdpi/msg_premium_ads.png | Bin 0 -> 855 bytes .../res/drawable-hdpi/msg_premium_avatar.png | Bin 0 -> 625 bytes .../res/drawable-hdpi/msg_premium_badge.png | Bin 0 -> 672 bytes .../res/drawable-hdpi/msg_premium_icons.png | Bin 0 -> 758 bytes .../res/drawable-hdpi/msg_premium_limits.png | Bin 0 -> 704 bytes .../drawable-hdpi/msg_premium_liststar.png | Bin 0 -> 516 bytes .../res/drawable-hdpi/msg_premium_lock.png | Bin 0 -> 773 bytes .../res/drawable-hdpi/msg_premium_lock2.png | Bin 0 -> 565 bytes .../res/drawable-hdpi/msg_premium_normal.png | Bin 0 -> 693 bytes .../msg_premium_prolfilestar.png | Bin 0 -> 1031 bytes .../drawable-hdpi/msg_premium_reactions.png | Bin 0 -> 565 bytes .../res/drawable-hdpi/msg_premium_speed.png | Bin 0 -> 806 bytes .../drawable-hdpi/msg_premium_stickers.png | Bin 0 -> 669 bytes .../res/drawable-hdpi/msg_premium_tools.png | Bin 0 -> 573 bytes .../res/drawable-hdpi/msg_premium_uploads.png | Bin 0 -> 571 bytes .../res/drawable-hdpi/msg_premium_voice.png | Bin 0 -> 646 bytes .../src/main/res/drawable-hdpi/msg_psa.png | Bin 843 -> 984 bytes .../main/res/drawable-hdpi/msg_rate_down.png | Bin 0 -> 562 bytes .../main/res/drawable-hdpi/msg_rate_up.png | Bin 0 -> 522 bytes .../main/res/drawable-hdpi/msg_reactions.png | Bin 875 -> 850 bytes .../main/res/drawable-hdpi/msg_reactions2.png | Bin 0 -> 1006 bytes .../src/main/res/drawable-hdpi/msg_recent.png | Bin 0 -> 783 bytes .../src/main/res/drawable-hdpi/msg_remove.png | Bin 0 -> 784 bytes .../res/drawable-hdpi/msg_removefolder.png | Bin 667 -> 743 bytes .../main/res/drawable-hdpi/msg_reorder.png | Bin 160 -> 289 bytes .../main/res/drawable-hdpi/msg_replace.png | Bin 1002 -> 950 bytes .../src/main/res/drawable-hdpi/msg_reply.png | Bin 514 -> 489 bytes .../res/drawable-hdpi/msg_report_abuse.png | Bin 1039 -> 0 bytes .../res/drawable-hdpi/msg_report_fake.png | Bin 1104 -> 1127 bytes .../res/drawable-hdpi/msg_report_spam.png | Bin 755 -> 0 bytes .../res/drawable-hdpi/msg_report_violence.png | Bin 1081 -> 1097 bytes .../main/res/drawable-hdpi/msg_report_xxx.png | Bin 827 -> 836 bytes .../main/res/drawable-hdpi/msg_requests.png | Bin 0 -> 882 bytes .../src/main/res/drawable-hdpi/msg_reset.png | Bin 829 -> 827 bytes .../main/res/drawable-hdpi/msg_satellite.png | Bin 543 -> 742 bytes .../src/main/res/drawable-hdpi/msg_saved.png | Bin 0 -> 611 bytes .../main/res/drawable-hdpi/msg_saved_14.png | Bin 0 -> 942 bytes .../main/res/drawable-hdpi/msg_saved_hw.png | Bin 0 -> 1021 bytes .../main/res/drawable-hdpi/msg_saved_ny.png | Bin 0 -> 1086 bytes .../main/res/drawable-hdpi/msg_screencast.png | Bin 783 -> 810 bytes .../res/drawable-hdpi/msg_screencast_off.png | Bin 1060 -> 1058 bytes .../src/main/res/drawable-hdpi/msg_search.png | Bin 649 -> 651 bytes .../src/main/res/drawable-hdpi/msg_secret.png | Bin 0 -> 668 bytes .../main/res/drawable-hdpi/msg_secret_14.png | Bin 0 -> 1113 bytes .../main/res/drawable-hdpi/msg_secret_hw.png | Bin 0 -> 846 bytes .../main/res/drawable-hdpi/msg_secret_ny.png | Bin 0 -> 1197 bytes .../src/main/res/drawable-hdpi/msg_seen.png | Bin 439 -> 561 bytes .../src/main/res/drawable-hdpi/msg_select.png | Bin 878 -> 907 bytes .../src/main/res/drawable-hdpi/msg_send.png | Bin 0 -> 898 bytes .../main/res/drawable-hdpi/msg_sendfile.png | Bin 602 -> 691 bytes .../main/res/drawable-hdpi/msg_sendphoto.png | Bin 808 -> 0 bytes .../main/res/drawable-hdpi/msg_settings.png | Bin 0 -> 1278 bytes .../res/drawable-hdpi/msg_settings_14.png | Bin 0 -> 1282 bytes .../res/drawable-hdpi/msg_settings_hw.png | Bin 0 -> 1423 bytes .../res/drawable-hdpi/msg_settings_ny.png | Bin 0 -> 1230 bytes .../res/drawable-hdpi/msg_settings_old.png | Bin 0 -> 1357 bytes .../drawable-hdpi/msg_settings_premium.png | Bin 0 -> 818 bytes .../src/main/res/drawable-hdpi/msg_share.png | Bin 762 -> 801 bytes .../main/res/drawable-hdpi/msg_shareout.png | Bin 762 -> 749 bytes .../src/main/res/drawable-hdpi/msg_speed.png | Bin 774 -> 795 bytes .../res/drawable-hdpi/msg_start_secret.png | Bin 590 -> 0 bytes .../src/main/res/drawable-hdpi/msg_stats.png | Bin 549 -> 657 bytes .../main/res/drawable-hdpi/msg_sticker.png | Bin 849 -> 969 bytes .../src/main/res/drawable-hdpi/msg_switch.png | Bin 0 -> 504 bytes .../src/main/res/drawable-hdpi/msg_theme.png | Bin 998 -> 1047 bytes .../src/main/res/drawable-hdpi/msg_timer.png | Bin 882 -> 887 bytes .../main/res/drawable-hdpi/msg_timer_1h.png | Bin 0 -> 1217 bytes .../main/res/drawable-hdpi/msg_timeredit.png | Bin 1086 -> 1091 bytes .../main/res/drawable-hdpi/msg_tone_add.png | Bin 965 -> 967 bytes .../main/res/drawable-hdpi/msg_tone_off.png | Bin 1129 -> 1102 bytes .../main/res/drawable-hdpi/msg_tone_on.png | Bin 831 -> 834 bytes .../main/res/drawable-hdpi/msg_trending.png | Bin 0 -> 1332 bytes .../main/res/drawable-hdpi/msg_unarchive.png | Bin 692 -> 777 bytes .../src/main/res/drawable-hdpi/msg_unfave.png | Bin 933 -> 1213 bytes .../src/main/res/drawable-hdpi/msg_unmute.png | Bin 969 -> 949 bytes .../src/main/res/drawable-hdpi/msg_unpin.png | Bin 693 -> 809 bytes .../src/main/res/drawable-hdpi/msg_unvote.png | Bin 719 -> 910 bytes .../res/drawable-hdpi/msg_user_remove.png | Bin 0 -> 986 bytes .../res/drawable-hdpi/msg_user_search.png | Bin 0 -> 965 bytes .../src/main/res/drawable-hdpi/msg_video.png | Bin 684 -> 812 bytes .../res/drawable-hdpi/msg_viewreplies.png | Bin 709 -> 810 bytes .../drawable-hdpi/msg_voice_headphones.png | Bin 855 -> 880 bytes .../main/res/drawable-hdpi/msg_voicechat.png | Bin 818 -> 827 bytes .../src/main/res/drawable-hdpi/msg_work.png | Bin 0 -> 770 bytes .../src/main/res/drawable-hdpi/msg_zoomin.png | Bin 896 -> 900 bytes .../main/res/drawable-hdpi/msg_zoomout.png | Bin 841 -> 843 bytes .../res/drawable-hdpi/msg_zoomout_stats.png | Bin 0 -> 744 bytes .../src/main/res/drawable-hdpi/no_apps.png | Bin 1540 -> 0 bytes .../main/res/drawable-hdpi/other_2x_large.png | Bin 0 -> 1268 bytes .../res/drawable-hdpi/other_lockedfolders.png | Bin 0 -> 357 bytes .../drawable-hdpi/other_lockedfolders2.png | Bin 0 -> 390 bytes .../res/drawable-hdpi/outline_add_gif.png | Bin 994 -> 0 bytes .../main/res/drawable-hdpi/outline_fave.png | Bin 954 -> 0 bytes .../main/res/drawable-hdpi/outline_pack.png | Bin 787 -> 0 bytes .../main/res/drawable-hdpi/outline_send.png | Bin 891 -> 0 bytes .../main/res/drawable-hdpi/outline_unfave.png | Bin 1105 -> 0 bytes .../res/drawable-hdpi/payment_address.png | Bin 930 -> 0 bytes .../main/res/drawable-hdpi/payment_card.png | Bin 451 -> 0 bytes .../res/drawable-hdpi/payment_delivery.png | Bin 842 -> 0 bytes .../main/res/drawable-hdpi/payment_email.png | Bin 1116 -> 0 bytes .../main/res/drawable-hdpi/payment_name.png | Bin 767 -> 0 bytes .../main/res/drawable-hdpi/payment_phone.png | Bin 778 -> 0 bytes .../res/drawable-hdpi/payment_provider.png | Bin 740 -> 0 bytes .../src/main/res/drawable-hdpi/photo_crop.png | Bin 465 -> 0 bytes .../src/main/res/drawable-hdpi/photo_flip.png | Bin 203 -> 0 bytes .../main/res/drawable-hdpi/photo_paint.png | Bin 689 -> 0 bytes .../res/drawable-hdpi/photo_paint_text.png | Bin 791 -> 0 bytes .../main/res/drawable-hdpi/photo_sticker.png | Bin 993 -> 0 bytes .../main/res/drawable-hdpi/photo_timer.png | Bin 799 -> 0 bytes .../main/res/drawable-hdpi/photo_tools.png | Bin 506 -> 0 bytes .../src/main/res/drawable-hdpi/place_x.png | Bin 200 -> 0 bytes .../main/res/drawable-hdpi/preview_open.png | Bin 306 -> 0 bytes .../main/res/drawable-hdpi/profile_admin.png | Bin 642 -> 0 bytes .../main/res/drawable-hdpi/profile_audio.png | Bin 441 -> 0 bytes .../main/res/drawable-hdpi/profile_ban.png | Bin 602 -> 0 bytes .../main/res/drawable-hdpi/profile_file.png | Bin 327 -> 0 bytes .../main/res/drawable-hdpi/profile_info.png | Bin 509 -> 0 bytes .../main/res/drawable-hdpi/profile_link.png | Bin 348 -> 0 bytes .../main/res/drawable-hdpi/profile_photos.png | Bin 401 -> 0 bytes .../main/res/drawable-hdpi/profile_voice.png | Bin 489 -> 0 bytes .../main/res/drawable-hdpi/search_date.png | Bin 459 -> 0 bytes .../main/res/drawable-hdpi/search_files.png | Bin 515 -> 0 bytes .../src/main/res/drawable-hdpi/search_gif.png | Bin 627 -> 0 bytes .../main/res/drawable-hdpi/search_links.png | Bin 694 -> 0 bytes .../main/res/drawable-hdpi/search_media.png | Bin 653 -> 0 bytes .../main/res/drawable-hdpi/search_music.png | Bin 659 -> 0 bytes .../main/res/drawable-hdpi/search_users.png | Bin 557 -> 0 bytes .../main/res/drawable-hdpi/search_voice.png | Bin 573 -> 0 bytes .../src/main/res/drawable-hdpi/search_web.png | Bin 658 -> 0 bytes .../src/main/res/drawable-hdpi/sim_new.png | Bin 2935 -> 0 bytes .../src/main/res/drawable-hdpi/sim_old.png | Bin 2250 -> 0 bytes .../drawable-hdpi/smiles_panel_activities.png | Bin 578 -> 0 bytes .../res/drawable-hdpi/smiles_panel_cat.png | Bin 720 -> 0 bytes .../res/drawable-hdpi/smiles_panel_flags.png | Bin 306 -> 0 bytes .../res/drawable-hdpi/smiles_panel_food.png | Bin 522 -> 0 bytes .../drawable-hdpi/smiles_panel_objects.png | Bin 492 -> 0 bytes .../res/drawable-hdpi/smiles_panel_other.png | Bin 441 -> 0 bytes .../drawable-hdpi/smiles_panel_question.png | Bin 573 -> 0 bytes .../res/drawable-hdpi/smiles_panel_recent.png | Bin 496 -> 0 bytes .../res/drawable-hdpi/smiles_panel_smiles.png | Bin 909 -> 0 bytes .../res/drawable-hdpi/smiles_panel_travel.png | Bin 550 -> 0 bytes .../drawable-hdpi/smiles_panel_trending.png | Bin 809 -> 0 bytes .../src/main/res/drawable-hdpi/stats_zoom.png | Bin 664 -> 0 bytes .../main/res/drawable-hdpi/stickersclose.png | Bin 252 -> 0 bytes .../res/drawable-hdpi/stickerset_close.png | Bin 157 -> 0 bytes .../main/res/drawable-hdpi/temp_starlarge.png | Bin 0 -> 4126 bytes .../res/drawable-hdpi/themes_addcolor.png | Bin 377 -> 0 bytes .../res/drawable-hdpi/themes_deletecolor.png | Bin 467 -> 0 bytes .../res/drawable-hdpi/themes_swapcolor.png | Bin 705 -> 0 bytes .../src/main/res/drawable-hdpi/tip1.png | Bin 25098 -> 0 bytes .../src/main/res/drawable-hdpi/tip2.png | Bin 10814 -> 0 bytes .../src/main/res/drawable-hdpi/tip3.png | Bin 15734 -> 0 bytes .../src/main/res/drawable-hdpi/tip4.png | Bin 9335 -> 0 bytes .../main/res/drawable-hdpi/toast_folder.png | Bin 547 -> 0 bytes .../res/drawable-hdpi/toast_folder_minus.png | Bin 457 -> 0 bytes .../src/main/res/drawable-hdpi/tool_blur.png | Bin 757 -> 0 bytes .../main/res/drawable-hdpi/tool_cropfix.png | Bin 412 -> 0 bytes .../src/main/res/drawable-hdpi/tool_curve.png | Bin 685 -> 0 bytes .../main/res/drawable-hdpi/tool_rotate.png | Bin 741 -> 0 bytes .../src/main/res/drawable-hdpi/update.png | Bin 596 -> 0 bytes .../src/main/res/drawable-hdpi/video_copy.png | Bin 236 -> 0 bytes .../res/drawable-hdpi/video_mini_arrow.png | Bin 145 -> 0 bytes .../res/drawable-hdpi/video_mini_cancel.png | Bin 208 -> 0 bytes .../src/main/res/drawable-hdpi/video_pip.png | Bin 133 -> 0 bytes .../res/drawable-hdpi/voice_muted_large.png | Bin 1492 -> 0 bytes .../res/drawable-hdpi/voice_unmuted_large.png | Bin 1141 -> 0 bytes .../src/main/res/drawable-hdpi/volume_off.png | Bin 926 -> 0 bytes .../src/main/res/drawable-hdpi/volume_on.png | Bin 960 -> 0 bytes .../main/res/drawable-hdpi/wallet_clear.png | Bin 936 -> 0 bytes .../res/drawable-hdpi/wallet_fingerprint.png | Bin 2806 -> 0 bytes .../src/main/res/drawable-hdpi/wallet_qr.png | Bin 805 -> 0 bytes .../main/res/drawable-hdpi/wallet_receive.png | Bin 346 -> 0 bytes .../main/res/drawable-hdpi/wallet_send.png | Bin 324 -> 0 bytes .../main/res/drawable-mdpi/account_add.png | Bin 92 -> 0 bytes .../main/res/drawable-mdpi/actionbtn_next.png | Bin 190 -> 0 bytes .../res/drawable-mdpi/actions_addadmin.png | Bin 743 -> 0 bytes .../res/drawable-mdpi/actions_addchat.png | Bin 765 -> 0 bytes .../res/drawable-mdpi/actions_addmember2.png | Bin 503 -> 0 bytes .../main/res/drawable-mdpi/actions_link.png | Bin 719 -> 0 bytes .../res/drawable-mdpi/actions_nearby_off.png | Bin 751 -> 0 bytes .../res/drawable-mdpi/actions_nearby_on.png | Bin 727 -> 0 bytes .../res/drawable-mdpi/actions_permissions.png | Bin 689 -> 0 bytes .../res/drawable-mdpi/actions_reactions.png | Bin 682 -> 0 bytes .../res/drawable-mdpi/actions_remove_user.png | Bin 306 -> 0 bytes .../res/drawable-mdpi/actions_removed.png | Bin 612 -> 0 bytes .../res/drawable-mdpi/actions_requests.png | Bin 616 -> 0 bytes .../res/drawable-mdpi/actions_setphoto.png | Bin 434 -> 0 bytes .../res/drawable-mdpi/actions_viewmembers.png | Bin 593 -> 0 bytes .../src/main/res/drawable-mdpi/add_admin.png | Bin 810 -> 0 bytes .../res/drawable-mdpi/add_contact_new.png | Bin 98 -> 0 bytes .../res/drawable-mdpi/audio_mini_arrow.png | Bin 92 -> 0 bytes .../res/drawable-mdpi/audio_mini_cancel.png | Bin 113 -> 0 bytes .../res/drawable-mdpi/audiosend_pause.png | Bin 107 -> 0 bytes .../main/res/drawable-mdpi/audiosend_play.png | Bin 296 -> 0 bytes .../res/drawable-mdpi/brightness_high.png | Bin 555 -> 0 bytes .../main/res/drawable-mdpi/brightness_low.png | Bin 436 -> 0 bytes .../src/main/res/drawable-mdpi/broadcast3.png | Bin 155 -> 0 bytes .../main/res/drawable-mdpi/broadcast_w.png | Bin 244 -> 0 bytes .../main/res/drawable-mdpi/chats_delete.png | Bin 257 -> 0 bytes .../main/res/drawable-mdpi/chats_leave.png | Bin 281 -> 0 bytes .../res/drawable-mdpi/contacts_sort_name.png | Bin 174 -> 0 bytes .../res/drawable-mdpi/contacts_sort_time.png | Bin 182 -> 0 bytes .../src/main/res/drawable-mdpi/devices.png | Bin 455 -> 0 bytes .../src/main/res/drawable-mdpi/doc_big.png | Bin 281 -> 0 bytes .../main/res/drawable-mdpi/edit_cancel.png | Bin 232 -> 0 bytes .../res/drawable-mdpi/emoji_tabs_premium.png | Bin 0 -> 840 bytes .../res/drawable-mdpi/floating_camera.png | Bin 232 -> 0 bytes .../res/drawable-mdpi/floating_message.png | Bin 110 -> 0 bytes .../res/drawable-mdpi/folders_archive.png | Bin 426 -> 0 bytes .../main/res/drawable-mdpi/folders_bot.png | Bin 547 -> 0 bytes .../res/drawable-mdpi/folders_channel.png | Bin 358 -> 0 bytes .../main/res/drawable-mdpi/folders_group.png | Bin 442 -> 0 bytes .../main/res/drawable-mdpi/folders_mute.png | Bin 452 -> 0 bytes .../res/drawable-mdpi/folders_private.png | Bin 332 -> 0 bytes .../main/res/drawable-mdpi/folders_read.png | Bin 537 -> 0 bytes .../res/drawable-mdpi/folders_requests.png | Bin 506 -> 0 bytes .../main/res/drawable-mdpi/forwardvideo.png | Bin 263 -> 0 bytes .../src/main/res/drawable-mdpi/gem.png | Bin 2162 -> 0 bytes .../src/main/res/drawable-mdpi/gem_s.png | Bin 742 -> 0 bytes .../res/drawable-mdpi/group_addmember.png | Bin 204 -> 0 bytes .../main/res/drawable-mdpi/group_admin.png | Bin 281 -> 0 bytes .../res/drawable-mdpi/group_admin_new.png | Bin 288 -> 0 bytes .../main/res/drawable-mdpi/group_ban_new.png | Bin 192 -> 0 bytes .../main/res/drawable-mdpi/group_banned.png | Bin 200 -> 0 bytes .../src/main/res/drawable-mdpi/group_log.png | Bin 435 -> 0 bytes .../src/main/res/drawable-mdpi/ic_ab_copy.png | Bin 136 -> 0 bytes .../main/res/drawable-mdpi/ic_ab_delete.png | Bin 115 -> 0 bytes .../src/main/res/drawable-mdpi/ic_ab_fave.png | Bin 275 -> 0 bytes .../main/res/drawable-mdpi/ic_ab_unfave.png | Bin 349 -> 0 bytes .../drawable-mdpi/ic_bluetooth_white_24dp.png | Bin 213 -> 0 bytes .../src/main/res/drawable-mdpi/ic_done.png | Bin 140 -> 0 bytes .../drawable-mdpi/icon_2_background_sa.png | Bin 0 -> 10519 bytes .../drawable-mdpi/icon_3_background_sa.png | Bin 0 -> 7970 bytes .../drawable-mdpi/icon_4_background_sa.png | Bin 0 -> 9979 bytes .../drawable-mdpi/icon_5_background_sa.png | Bin 0 -> 11051 bytes .../drawable-mdpi/icon_6_background_sa.png | Bin 0 -> 5841 bytes .../drawable-mdpi/icon_background_clip.png | Bin 0 -> 1475 bytes .../icon_background_clip_round.png | Bin 0 -> 1547 bytes .../icon_background_sa.png | Bin .../main/res/drawable-mdpi/instant_link.png | Bin 436 -> 0 bytes .../src/main/res/drawable-mdpi/list_bot.png | Bin 199 -> 0 bytes .../main/res/drawable-mdpi/list_broadcast.png | Bin 165 -> 0 bytes .../src/main/res/drawable-mdpi/list_group.png | Bin 232 -> 0 bytes .../res/drawable-mdpi/location_current.png | Bin 424 -> 0 bytes .../main/res/drawable-mdpi/location_type.png | Bin 545 -> 0 bytes .../src/main/res/drawable-mdpi/lock_open.png | Bin 213 -> 0 bytes .../src/main/res/drawable-mdpi/log_info.png | Bin 349 -> 0 bytes .../src/main/res/drawable-mdpi/menu_add.png | Bin 186 -> 0 bytes .../res/drawable-mdpi/menu_bookmarks_14.png | Bin 589 -> 0 bytes .../res/drawable-mdpi/menu_bookmarks_hw.png | Bin 688 -> 0 bytes .../res/drawable-mdpi/menu_bookmarks_ny.png | Bin 422 -> 0 bytes .../src/main/res/drawable-mdpi/menu_bots.png | Bin 591 -> 0 bytes .../main/res/drawable-mdpi/menu_broadcast.png | Bin 542 -> 0 bytes .../res/drawable-mdpi/menu_broadcast_14.png | Bin 761 -> 0 bytes .../res/drawable-mdpi/menu_broadcast_hw.png | Bin 635 -> 0 bytes .../src/main/res/drawable-mdpi/menu_calls.png | Bin 333 -> 0 bytes .../main/res/drawable-mdpi/menu_calls_14.png | Bin 772 -> 0 bytes .../main/res/drawable-mdpi/menu_calls_hw.png | Bin 689 -> 0 bytes .../main/res/drawable-mdpi/menu_calls_ny.png | Bin 484 -> 0 bytes .../main/res/drawable-mdpi/menu_camera.png | Bin 356 -> 0 bytes .../main/res/drawable-mdpi/menu_camera2.png | Bin 693 -> 0 bytes .../main/res/drawable-mdpi/menu_camera_av.png | Bin 398 -> 0 bytes .../res/drawable-mdpi/menu_channel_ny.png | Bin 477 -> 0 bytes .../src/main/res/drawable-mdpi/menu_chats.png | Bin 600 -> 0 bytes .../src/main/res/drawable-mdpi/menu_clear.png | Bin 602 -> 0 bytes .../res/drawable-mdpi/menu_clear_recent.png | Bin 564 -> 0 bytes .../res/drawable-mdpi/menu_clearcache.png | Bin 528 -> 0 bytes .../main/res/drawable-mdpi/menu_contacts.png | Bin 428 -> 0 bytes .../res/drawable-mdpi/menu_contacts_14.png | Bin 759 -> 0 bytes .../res/drawable-mdpi/menu_contacts_hw.png | Bin 811 -> 0 bytes .../res/drawable-mdpi/menu_contacts_ny.png | Bin 463 -> 0 bytes .../src/main/res/drawable-mdpi/menu_data.png | Bin 359 -> 0 bytes .../src/main/res/drawable-mdpi/menu_date.png | Bin 380 -> 0 bytes .../main/res/drawable-mdpi/menu_expand.png | Bin 290 -> 0 bytes .../main/res/drawable-mdpi/menu_groups.png | Bin 559 -> 0 bytes .../main/res/drawable-mdpi/menu_groups_14.png | Bin 802 -> 0 bytes .../main/res/drawable-mdpi/menu_groups_hw.png | Bin 797 -> 0 bytes .../main/res/drawable-mdpi/menu_groups_ny.png | Bin 483 -> 0 bytes .../src/main/res/drawable-mdpi/menu_help.png | Bin 430 -> 0 bytes .../main/res/drawable-mdpi/menu_help_hw.png | Bin 704 -> 0 bytes .../main/res/drawable-mdpi/menu_help_ny.png | Bin 291 -> 0 bytes .../src/main/res/drawable-mdpi/menu_info.png | Bin 489 -> 0 bytes .../main/res/drawable-mdpi/menu_invite.png | Bin 1867 -> 0 bytes .../main/res/drawable-mdpi/menu_invite_hw.png | Bin 681 -> 0 bytes .../main/res/drawable-mdpi/menu_invite_ny.png | Bin 385 -> 0 bytes .../main/res/drawable-mdpi/menu_jobtitle.png | Bin 405 -> 0 bytes .../main/res/drawable-mdpi/menu_language.png | Bin 383 -> 0 bytes .../main/res/drawable-mdpi/menu_location.png | Bin 651 -> 0 bytes .../src/main/res/drawable-mdpi/menu_mail.png | Bin 640 -> 0 bytes .../main/res/drawable-mdpi/menu_nearby.png | Bin 763 -> 0 bytes .../main/res/drawable-mdpi/menu_nearby_ny.png | Bin 768 -> 0 bytes .../main/res/drawable-mdpi/menu_newfilter.png | Bin 214 -> 0 bytes .../main/res/drawable-mdpi/menu_newphone.png | Bin 339 -> 0 bytes .../src/main/res/drawable-mdpi/menu_night.png | Bin 389 -> 0 bytes .../res/drawable-mdpi/menu_notifications.png | Bin 320 -> 0 bytes .../main/res/drawable-mdpi/menu_passcode.png | Bin 470 -> 0 bytes .../res/drawable-mdpi/menu_pinnedlist.png | Bin 604 -> 0 bytes .../main/res/drawable-mdpi/menu_policy.png | Bin 716 -> 0 bytes .../main/res/drawable-mdpi/menu_private.png | Bin 734 -> 0 bytes .../src/main/res/drawable-mdpi/menu_read.png | Bin 173 -> 0 bytes .../main/res/drawable-mdpi/menu_recent.png | Bin 471 -> 0 bytes .../src/main/res/drawable-mdpi/menu_saved.png | Bin 254 -> 0 bytes .../main/res/drawable-mdpi/menu_search.png | Bin 303 -> 0 bytes .../main/res/drawable-mdpi/menu_secret.png | Bin 327 -> 0 bytes .../main/res/drawable-mdpi/menu_secret_14.png | Bin 785 -> 0 bytes .../main/res/drawable-mdpi/menu_secret_hw.png | Bin 632 -> 0 bytes .../main/res/drawable-mdpi/menu_secret_ny.png | Bin 377 -> 0 bytes .../main/res/drawable-mdpi/menu_settings.png | Bin 812 -> 0 bytes .../drawable-mdpi/menu_settings_filled.png | Bin 325 -> 0 bytes .../res/drawable-mdpi/menu_settings_hw.png | Bin 910 -> 0 bytes .../res/drawable-mdpi/menu_settings_ny.png | Bin 518 -> 0 bytes .../main/res/drawable-mdpi/menu_support.png | Bin 438 -> 0 bytes .../main/res/drawable-mdpi/menu_support2.png | Bin 698 -> 0 bytes .../main/res/drawable-mdpi/menu_switch.png | Bin 342 -> 0 bytes .../main/res/drawable-mdpi/menu_unread.png | Bin 583 -> 0 bytes .../main/res/drawable-mdpi/menu_wallet.png | Bin 443 -> 0 bytes .../main/res/drawable-mdpi/menu_wallet_ny.png | Bin 443 -> 0 bytes .../src/main/res/drawable-mdpi/menu_work.png | Bin 529 -> 0 bytes .../main/res/drawable-mdpi/msg_actions.png | Bin 112 -> 237 bytes .../src/main/res/drawable-mdpi/msg_add.png | Bin 0 -> 254 bytes .../res/drawable-mdpi/msg_addaccount_all.png | Bin 0 -> 496 bytes .../res/drawable-mdpi/msg_addaccount_base.png | Bin 0 -> 301 bytes .../res/drawable-mdpi/msg_addaccount_text.png | Bin 0 -> 392 bytes .../src/main/res/drawable-mdpi/msg_addbio.png | Bin 685 -> 702 bytes .../src/main/res/drawable-mdpi/msg_addbot.png | Bin 1397 -> 582 bytes .../main/res/drawable-mdpi/msg_addfolder.png | Bin 534 -> 608 bytes .../main/res/drawable-mdpi/msg_addphoto.png | Bin 658 -> 679 bytes .../main/res/drawable-mdpi/msg_admin_add.png | Bin 0 -> 873 bytes .../src/main/res/drawable-mdpi/msg_admins.png | Bin 0 -> 889 bytes .../main/res/drawable-mdpi/msg_allowspeak.png | Bin 757 -> 719 bytes .../main/res/drawable-mdpi/msg_archive.png | Bin 535 -> 609 bytes .../drawable-mdpi/msg_archived_stickers.png | Bin 0 -> 858 bytes .../main/res/drawable-mdpi/msg_arrow_back.png | Bin 298 -> 380 bytes .../res/drawable-mdpi/msg_arrow_forward.png | Bin 0 -> 389 bytes .../main/res/drawable-mdpi/msg_arrowright.png | Bin 192 -> 257 bytes .../res/drawable-mdpi/msg_ask_question.png | Bin 0 -> 749 bytes .../main/res/drawable-mdpi/msg_autodelete.png | Bin 643 -> 689 bytes .../main/res/drawable-mdpi/msg_background.png | Bin 636 -> 634 bytes .../main/res/drawable-mdpi/msg_bell_mute.png | Bin 0 -> 696 bytes .../res/drawable-mdpi/msg_bell_unmute.png | Bin 0 -> 629 bytes .../src/main/res/drawable-mdpi/msg_bio.png | Bin 599 -> 0 bytes .../src/main/res/drawable-mdpi/msg_block.png | Bin 535 -> 562 bytes .../src/main/res/drawable-mdpi/msg_block2.png | Bin 657 -> 744 bytes .../main/res/drawable-mdpi/msg_bluetooth.png | Bin 0 -> 558 bytes .../{blur_linear.png => msg_blur_linear.png} | Bin .../{blur_off.png => msg_blur_off.png} | Bin .../{blur_radial.png => msg_blur_radial.png} | Bin .../src/main/res/drawable-mdpi/msg_bots.png | Bin 0 -> 619 bytes .../res/drawable-mdpi/msg_brightness_high.png | Bin 0 -> 567 bytes .../res/drawable-mdpi/msg_brightness_low.png | Bin 0 -> 410 bytes .../main/res/drawable-mdpi/msg_calendar.png | Bin 541 -> 617 bytes .../main/res/drawable-mdpi/msg_calendar2.png | Bin 426 -> 432 bytes .../src/main/res/drawable-mdpi/msg_calls.png | Bin 0 -> 580 bytes .../main/res/drawable-mdpi/msg_calls_14.png | Bin 0 -> 753 bytes .../main/res/drawable-mdpi/msg_calls_hw.png | Bin 0 -> 695 bytes .../res/drawable-mdpi/msg_calls_minimize.png | Bin 451 -> 386 bytes .../main/res/drawable-mdpi/msg_calls_ny.png | Bin 0 -> 744 bytes .../main/res/drawable-mdpi/msg_calls_pin.png | Bin 514 -> 474 bytes .../res/drawable-mdpi/msg_calls_unpin.png | Bin 704 -> 581 bytes .../src/main/res/drawable-mdpi/msg_camera.png | Bin 0 -> 666 bytes .../src/main/res/drawable-mdpi/msg_cancel.png | Bin 624 -> 594 bytes .../main/res/drawable-mdpi/msg_channel.png | Bin 543 -> 611 bytes .../main/res/drawable-mdpi/msg_channel_14.png | Bin 0 -> 767 bytes .../main/res/drawable-mdpi/msg_channel_hw.png | Bin 0 -> 600 bytes .../main/res/drawable-mdpi/msg_channel_ny.png | Bin 0 -> 770 bytes .../main/res/drawable-mdpi/msg_chats_add.png | Bin 0 -> 777 bytes .../res/drawable-mdpi/msg_chats_remove.png | Bin 0 -> 765 bytes .../src/main/res/drawable-mdpi/msg_check.png | Bin 223 -> 339 bytes .../res/drawable-mdpi/msg_check_thick.png | Bin 0 -> 388 bytes .../src/main/res/drawable-mdpi/msg_clear.png | Bin 465 -> 580 bytes .../res/drawable-mdpi/msg_clear_input.png | Bin 0 -> 478 bytes .../res/drawable-mdpi/msg_clear_recent.png | Bin 0 -> 657 bytes .../main/res/drawable-mdpi/msg_clearcache.png | Bin 0 -> 628 bytes .../src/main/res/drawable-mdpi/msg_close.png | Bin 0 -> 363 bytes .../src/main/res/drawable-mdpi/msg_colors.png | Bin 755 -> 739 bytes .../res/drawable-mdpi/msg_contact_add.png | Bin 0 -> 602 bytes .../main/res/drawable-mdpi/msg_contacts.png | Bin 0 -> 525 bytes .../res/drawable-mdpi/msg_contacts_14.png | Bin 0 -> 784 bytes .../res/drawable-mdpi/msg_contacts_hw.png | Bin 0 -> 854 bytes .../res/drawable-mdpi/msg_contacts_name.png | Bin 0 -> 443 bytes .../res/drawable-mdpi/msg_contacts_ny.png | Bin 0 -> 754 bytes .../res/drawable-mdpi/msg_contacts_time.png | Bin 0 -> 425 bytes .../src/main/res/drawable-mdpi/msg_copy.png | Bin 354 -> 503 bytes .../drawable-mdpi/msg_current_location.png | Bin 0 -> 494 bytes .../src/main/res/drawable-mdpi/msg_data.png | Bin 0 -> 605 bytes .../src/main/res/drawable-mdpi/msg_delete.png | Bin 523 -> 523 bytes .../res/drawable-mdpi/msg_delete_auto.png | Bin 652 -> 653 bytes .../main/res/drawable-mdpi/msg_delete_old.png | Bin 0 -> 456 bytes .../main/res/drawable-mdpi/msg_devices.png | Bin 0 -> 420 bytes .../main/res/drawable-mdpi/msg_discussion.png | Bin 551 -> 617 bytes .../main/res/drawable-mdpi/msg_download.png | Bin 323 -> 378 bytes .../main/res/drawable-mdpi/msg_draw_arrow.png | Bin 616 -> 661 bytes .../res/drawable-mdpi/msg_draw_marker.png | Bin 635 -> 711 bytes .../main/res/drawable-mdpi/msg_draw_neon.png | Bin 685 -> 764 bytes .../main/res/drawable-mdpi/msg_draw_pen.png | Bin 640 -> 709 bytes .../src/main/res/drawable-mdpi/msg_edit.png | Bin 376 -> 471 bytes .../drawable-mdpi/msg_emoji_activities.png | Bin 0 -> 597 bytes .../main/res/drawable-mdpi/msg_emoji_cat.png | Bin 0 -> 738 bytes .../res/drawable-mdpi/msg_emoji_flags.png | Bin 0 -> 451 bytes .../main/res/drawable-mdpi/msg_emoji_food.png | Bin 0 -> 633 bytes .../res/drawable-mdpi/msg_emoji_objects.png | Bin 0 -> 616 bytes .../res/drawable-mdpi/msg_emoji_other.png | Bin 0 -> 660 bytes .../res/drawable-mdpi/msg_emoji_premium.png | Bin 0 -> 686 bytes .../res/drawable-mdpi/msg_emoji_question.png | Bin 0 -> 597 bytes .../res/drawable-mdpi/msg_emoji_recent.png | Bin 0 -> 548 bytes .../res/drawable-mdpi/msg_emoji_smiles.png | Bin 0 -> 570 bytes .../res/drawable-mdpi/msg_emoji_travel.png | Bin 0 -> 599 bytes .../main/res/drawable-mdpi/msg_endcall.png | Bin 518 -> 518 bytes .../src/main/res/drawable-mdpi/msg_expand.png | Bin 0 -> 299 bytes .../src/main/res/drawable-mdpi/msg_fave.png | Bin 584 -> 666 bytes ...mtrl_alpha.png => msg_filled_shareout.png} | Bin .../src/main/res/drawable-mdpi/msg_folder.png | Bin 0 -> 486 bytes .../res/drawable-mdpi/msg_folder_reorder.png | Bin 0 -> 534 bytes .../{menu_folders.png => msg_folders.png} | Bin .../res/drawable-mdpi/msg_folders_archive.png | Bin 0 -> 501 bytes .../res/drawable-mdpi/msg_folders_bots.png | Bin 0 -> 527 bytes .../drawable-mdpi/msg_folders_channels.png | Bin 0 -> 450 bytes .../res/drawable-mdpi/msg_folders_groups.png | Bin 0 -> 553 bytes .../res/drawable-mdpi/msg_folders_muted.png | Bin 0 -> 566 bytes .../res/drawable-mdpi/msg_folders_private.png | Bin 0 -> 628 bytes .../res/drawable-mdpi/msg_folders_read.png | Bin 0 -> 541 bytes .../drawable-mdpi/msg_folders_requests.png | Bin 0 -> 587 bytes .../main/res/drawable-mdpi/msg_forward.png | Bin 353 -> 386 bytes .../res/drawable-mdpi/msg_forward_check.png | Bin 404 -> 374 bytes .../res/drawable-mdpi/msg_forward_replace.png | Bin 706 -> 608 bytes .../res/drawable-mdpi/msg_forward_send.png | Bin 644 -> 0 bytes .../main/res/drawable-mdpi/msg_gallery.png | Bin 508 -> 700 bytes .../src/main/res/drawable-mdpi/msg_gif.png | Bin 513 -> 632 bytes .../main/res/drawable-mdpi/msg_gif_add.png | Bin 0 -> 716 bytes .../main/res/drawable-mdpi/msg_go_down.png | Bin 183 -> 297 bytes .../src/main/res/drawable-mdpi/msg_go_up.png | Bin 174 -> 279 bytes .../src/main/res/drawable-mdpi/msg_groups.png | Bin 0 -> 658 bytes .../main/res/drawable-mdpi/msg_groups_14.png | Bin 0 -> 814 bytes .../res/drawable-mdpi/msg_groups_create.png | Bin 0 -> 716 bytes .../main/res/drawable-mdpi/msg_groups_hw.png | Bin 0 -> 836 bytes .../main/res/drawable-mdpi/msg_groups_ny.png | Bin 0 -> 783 bytes .../main/res/drawable-mdpi/msg_handdown.png | Bin 680 -> 649 bytes .../src/main/res/drawable-mdpi/msg_help.png | Bin 0 -> 671 bytes .../main/res/drawable-mdpi/msg_help_14.png | Bin 0 -> 729 bytes .../main/res/drawable-mdpi/msg_help_hw.png | Bin 0 -> 706 bytes .../main/res/drawable-mdpi/msg_help_ny.png | Bin 0 -> 629 bytes .../src/main/res/drawable-mdpi/msg_home.png | Bin 455 -> 559 bytes .../src/main/res/drawable-mdpi/msg_hybrid.png | Bin 544 -> 646 bytes .../src/main/res/drawable-mdpi/msg_info.png | Bin 0 -> 586 bytes .../main/res/drawable-mdpi/msg_inputarrow.png | Bin 305 -> 346 bytes .../res/drawable-mdpi/msg_instant_link.png | Bin 0 -> 721 bytes .../src/main/res/drawable-mdpi/msg_invite.png | Bin 0 -> 620 bytes .../main/res/drawable-mdpi/msg_invite_14.png | Bin 0 -> 764 bytes .../main/res/drawable-mdpi/msg_invite_hw.png | Bin 0 -> 708 bytes .../main/res/drawable-mdpi/msg_invite_ny.png | Bin 0 -> 758 bytes .../main/res/drawable-mdpi/msg_invited.png | Bin 619 -> 537 bytes .../main/res/drawable-mdpi/msg_jobtitle.png | Bin 0 -> 468 bytes .../main/res/drawable-mdpi/msg_language.png | Bin 714 -> 716 bytes .../src/main/res/drawable-mdpi/msg_leave.png | Bin 432 -> 524 bytes .../main/res/drawable-mdpi/msg_limit_2x.png | Bin 0 -> 576 bytes .../res/drawable-mdpi/msg_limit_accounts.png | Bin 0 -> 628 bytes .../res/drawable-mdpi/msg_limit_chats.png | Bin 0 -> 486 bytes .../res/drawable-mdpi/msg_limit_folder.png | Bin 0 -> 331 bytes .../res/drawable-mdpi/msg_limit_groups.png | Bin 0 -> 548 bytes .../res/drawable-mdpi/msg_limit_links.png | Bin 0 -> 601 bytes .../main/res/drawable-mdpi/msg_limit_pin.png | Bin 0 -> 500 bytes .../src/main/res/drawable-mdpi/msg_link.png | Bin 482 -> 447 bytes .../src/main/res/drawable-mdpi/msg_link2.png | Bin 0 -> 614 bytes .../src/main/res/drawable-mdpi/msg_list.png | Bin 134 -> 278 bytes .../src/main/res/drawable-mdpi/msg_list2.png | Bin 0 -> 351 bytes .../main/res/drawable-mdpi/msg_location.png | Bin 372 -> 777 bytes .../res/drawable-mdpi/msg_location_alert.png | Bin 793 -> 802 bytes .../res/drawable-mdpi/msg_location_alert2.png | Bin 568 -> 584 bytes .../src/main/res/drawable-mdpi/msg_log.png | Bin 0 -> 561 bytes .../src/main/res/drawable-mdpi/msg_map.png | Bin 404 -> 492 bytes .../main/res/drawable-mdpi/msg_map_type.png | Bin 0 -> 532 bytes .../main/res/drawable-mdpi/msg_markread.png | Bin 315 -> 762 bytes .../main/res/drawable-mdpi/msg_markunread.png | Bin 413 -> 703 bytes .../src/main/res/drawable-mdpi/msg_mask.png | Bin 609 -> 844 bytes .../src/main/res/drawable-mdpi/msg_media.png | Bin 460 -> 509 bytes .../main/res/drawable-mdpi/msg_mention.png | Bin 650 -> 671 bytes .../main/res/drawable-mdpi/msg_message.png | Bin 526 -> 546 bytes .../res/drawable-mdpi/msg_mini_customize.png | Bin 0 -> 384 bytes .../drawable-mdpi/msg_mini_premiumlock.png | Bin 0 -> 334 bytes .../main/res/drawable-mdpi/msg_minvideo.png | Bin 348 -> 311 bytes .../main/res/drawable-mdpi/msg_msgbubble3.png | Bin 653 -> 699 bytes .../src/main/res/drawable-mdpi/msg_mute.png | Bin 762 -> 750 bytes .../res/drawable-mdpi/msg_mute_period.png | Bin 736 -> 738 bytes .../src/main/res/drawable-mdpi/msg_nearby.png | Bin 0 -> 757 bytes .../main/res/drawable-mdpi/msg_nearby_14.png | Bin 0 -> 737 bytes .../main/res/drawable-mdpi/msg_nearby_hw.png | Bin 0 -> 748 bytes .../main/res/drawable-mdpi/msg_nearby_ny.png | Bin 0 -> 750 bytes .../main/res/drawable-mdpi/msg_nearby_off.png | Bin 0 -> 857 bytes .../main/res/drawable-mdpi/msg_newfilter.png | Bin 0 -> 350 bytes .../main/res/drawable-mdpi/msg_newphone.png | Bin 0 -> 631 bytes .../drawable-mdpi/msg_nightmode_system.png | Bin 0 -> 678 bytes .../main/res/drawable-mdpi/msg_noise_off.png | Bin 740 -> 701 bytes .../main/res/drawable-mdpi/msg_noise_on.png | Bin 675 -> 690 bytes .../res/drawable-mdpi/msg_notifications.png | Bin 0 -> 540 bytes .../src/main/res/drawable-mdpi/msg_openin.png | Bin 318 -> 506 bytes .../res/drawable-mdpi/msg_openprofile.png | Bin 716 -> 777 bytes .../{menu_palette.png => msg_palette.png} | Bin .../res/drawable-mdpi/msg_payment_address.png | Bin 0 -> 617 bytes .../res/drawable-mdpi/msg_payment_card.png | Bin 0 -> 391 bytes .../drawable-mdpi/msg_payment_delivery.png | Bin 0 -> 613 bytes .../drawable-mdpi/msg_payment_provider.png | Bin 0 -> 527 bytes .../res/drawable-mdpi/msg_permissions.png | Bin 691 -> 658 bytes .../main/res/drawable-mdpi/msg_photo_blur.png | Bin 0 -> 563 bytes .../drawable-mdpi/msg_photo_blur_linear.png | Bin 0 -> 294 bytes .../res/drawable-mdpi/msg_photo_blur_off.png | Bin 0 -> 218 bytes .../drawable-mdpi/msg_photo_blur_radial.png | Bin 0 -> 539 bytes .../res/drawable-mdpi/msg_photo_brush.png | Bin 0 -> 583 bytes .../main/res/drawable-mdpi/msg_photo_crop.png | Bin 0 -> 465 bytes .../res/drawable-mdpi/msg_photo_cropfix.png | Bin 0 -> 364 bytes .../res/drawable-mdpi/msg_photo_curve.png | Bin 0 -> 543 bytes .../main/res/drawable-mdpi/msg_photo_draw.png | Bin 0 -> 574 bytes .../main/res/drawable-mdpi/msg_photo_flip.png | Bin 0 -> 409 bytes .../res/drawable-mdpi/msg_photo_rotate.png | Bin 0 -> 573 bytes .../res/drawable-mdpi/msg_photo_settings.png | Bin 0 -> 489 bytes .../main/res/drawable-mdpi/msg_photo_text.png | Bin 0 -> 592 bytes .../src/main/res/drawable-mdpi/msg_photos.png | Bin 0 -> 553 bytes .../src/main/res/drawable-mdpi/msg_pin.png | Bin 435 -> 576 bytes .../main/res/drawable-mdpi/msg_pinnedlist.png | Bin 0 -> 579 bytes .../src/main/res/drawable-mdpi/msg_played.png | Bin 626 -> 632 bytes .../src/main/res/drawable-mdpi/msg_policy.png | Bin 0 -> 798 bytes .../main/res/drawable-mdpi/msg_pollstop.png | Bin 493 -> 590 bytes .../res/drawable-mdpi/msg_premium_ads.png | Bin 0 -> 542 bytes .../res/drawable-mdpi/msg_premium_avatar.png | Bin 0 -> 451 bytes .../res/drawable-mdpi/msg_premium_badge.png | Bin 0 -> 490 bytes .../res/drawable-mdpi/msg_premium_icons.png | Bin 0 -> 589 bytes .../res/drawable-mdpi/msg_premium_limits.png | Bin 0 -> 501 bytes .../drawable-mdpi/msg_premium_liststar.png | Bin 0 -> 377 bytes .../res/drawable-mdpi/msg_premium_lock.png | Bin 0 -> 571 bytes .../res/drawable-mdpi/msg_premium_lock2.png | Bin 0 -> 437 bytes .../res/drawable-mdpi/msg_premium_normal.png | Bin 0 -> 505 bytes .../msg_premium_prolfilestar.png | Bin 0 -> 661 bytes .../drawable-mdpi/msg_premium_reactions.png | Bin 0 -> 458 bytes .../res/drawable-mdpi/msg_premium_speed.png | Bin 0 -> 556 bytes .../drawable-mdpi/msg_premium_stickers.png | Bin 0 -> 504 bytes .../res/drawable-mdpi/msg_premium_tools.png | Bin 0 -> 431 bytes .../res/drawable-mdpi/msg_premium_uploads.png | Bin 0 -> 406 bytes .../res/drawable-mdpi/msg_premium_voice.png | Bin 0 -> 478 bytes .../src/main/res/drawable-mdpi/msg_psa.png | Bin 519 -> 666 bytes .../main/res/drawable-mdpi/msg_rate_down.png | Bin 0 -> 383 bytes .../main/res/drawable-mdpi/msg_rate_up.png | Bin 0 -> 380 bytes .../main/res/drawable-mdpi/msg_reactions.png | Bin 580 -> 573 bytes .../main/res/drawable-mdpi/msg_reactions2.png | Bin 0 -> 669 bytes .../src/main/res/drawable-mdpi/msg_recent.png | Bin 0 -> 535 bytes .../src/main/res/drawable-mdpi/msg_remove.png | Bin 0 -> 550 bytes .../res/drawable-mdpi/msg_removefolder.png | Bin 503 -> 580 bytes .../main/res/drawable-mdpi/msg_reorder.png | Bin 145 -> 221 bytes .../main/res/drawable-mdpi/msg_replace.png | Bin 656 -> 634 bytes .../src/main/res/drawable-mdpi/msg_reply.png | Bin 358 -> 400 bytes .../res/drawable-mdpi/msg_report_abuse.png | Bin 709 -> 0 bytes .../res/drawable-mdpi/msg_report_drugs.png | Bin 615 -> 616 bytes .../res/drawable-mdpi/msg_report_fake.png | Bin 766 -> 786 bytes .../res/drawable-mdpi/msg_report_other.png | Bin 729 -> 721 bytes .../res/drawable-mdpi/msg_report_spam.png | Bin 558 -> 0 bytes .../res/drawable-mdpi/msg_report_violence.png | Bin 747 -> 752 bytes .../main/res/drawable-mdpi/msg_report_xxx.png | Bin 662 -> 653 bytes .../main/res/drawable-mdpi/msg_requests.png | Bin 0 -> 579 bytes .../src/main/res/drawable-mdpi/msg_reset.png | Bin 530 -> 553 bytes .../main/res/drawable-mdpi/msg_satellite.png | Bin 356 -> 510 bytes .../src/main/res/drawable-mdpi/msg_saved.png | Bin 0 -> 464 bytes .../main/res/drawable-mdpi/msg_saved_14.png | Bin 0 -> 632 bytes .../main/res/drawable-mdpi/msg_saved_hw.png | Bin 0 -> 671 bytes .../main/res/drawable-mdpi/msg_saved_ny.png | Bin 0 -> 717 bytes .../main/res/drawable-mdpi/msg_screencast.png | Bin 598 -> 619 bytes .../res/drawable-mdpi/msg_screencast_off.png | Bin 733 -> 735 bytes .../src/main/res/drawable-mdpi/msg_search.png | Bin 434 -> 493 bytes .../src/main/res/drawable-mdpi/msg_secret.png | Bin 0 -> 525 bytes .../main/res/drawable-mdpi/msg_secret_14.png | Bin 0 -> 758 bytes .../main/res/drawable-mdpi/msg_secret_hw.png | Bin 0 -> 605 bytes .../main/res/drawable-mdpi/msg_secret_ny.png | Bin 0 -> 787 bytes .../src/main/res/drawable-mdpi/msg_seen.png | Bin 367 -> 409 bytes .../src/main/res/drawable-mdpi/msg_select.png | Bin 637 -> 607 bytes .../src/main/res/drawable-mdpi/msg_send.png | Bin 0 -> 603 bytes .../main/res/drawable-mdpi/msg_sendfile.png | Bin 478 -> 537 bytes .../main/res/drawable-mdpi/msg_sendphoto.png | Bin 521 -> 0 bytes .../main/res/drawable-mdpi/msg_settings.png | Bin 0 -> 819 bytes .../res/drawable-mdpi/msg_settings_14.png | Bin 0 -> 811 bytes .../res/drawable-mdpi/msg_settings_hw.png | Bin 0 -> 935 bytes .../res/drawable-mdpi/msg_settings_ny.png | Bin 0 -> 801 bytes .../res/drawable-mdpi/msg_settings_old.png | Bin 0 -> 868 bytes .../drawable-mdpi/msg_settings_premium.png | Bin 0 -> 574 bytes .../src/main/res/drawable-mdpi/msg_share.png | Bin 501 -> 580 bytes .../main/res/drawable-mdpi/msg_shareout.png | Bin 464 -> 562 bytes .../src/main/res/drawable-mdpi/msg_speed.png | Bin 526 -> 545 bytes .../res/drawable-mdpi/msg_start_secret.png | Bin 447 -> 0 bytes .../src/main/res/drawable-mdpi/msg_stats.png | Bin 443 -> 519 bytes .../main/res/drawable-mdpi/msg_sticker.png | Bin 595 -> 654 bytes .../src/main/res/drawable-mdpi/msg_switch.png | Bin 0 -> 409 bytes .../src/main/res/drawable-mdpi/msg_theme.png | Bin 615 -> 707 bytes .../src/main/res/drawable-mdpi/msg_timer.png | Bin 600 -> 689 bytes .../main/res/drawable-mdpi/msg_timer_1h.png | Bin 0 -> 867 bytes .../main/res/drawable-mdpi/msg_timeredit.png | Bin 726 -> 720 bytes .../main/res/drawable-mdpi/msg_tone_add.png | Bin 661 -> 663 bytes .../main/res/drawable-mdpi/msg_tone_off.png | Bin 738 -> 729 bytes .../main/res/drawable-mdpi/msg_tone_on.png | Bin 592 -> 589 bytes .../main/res/drawable-mdpi/msg_translate.png | Bin 634 -> 634 bytes .../main/res/drawable-mdpi/msg_trending.png | Bin 0 -> 834 bytes .../main/res/drawable-mdpi/msg_unarchive.png | Bin 505 -> 588 bytes .../src/main/res/drawable-mdpi/msg_unfave.png | Bin 624 -> 798 bytes .../src/main/res/drawable-mdpi/msg_unmute.png | Bin 690 -> 708 bytes .../src/main/res/drawable-mdpi/msg_unpin.png | Bin 482 -> 590 bytes .../src/main/res/drawable-mdpi/msg_unvote.png | Bin 470 -> 658 bytes .../res/drawable-mdpi/msg_user_remove.png | Bin 0 -> 666 bytes .../res/drawable-mdpi/msg_user_search.png | Bin 0 -> 663 bytes .../src/main/res/drawable-mdpi/msg_video.png | Bin 462 -> 593 bytes .../res/drawable-mdpi/msg_viewreplies.png | Bin 478 -> 572 bytes .../drawable-mdpi/msg_voice_headphones.png | Bin 611 -> 652 bytes .../main/res/drawable-mdpi/msg_voicechat.png | Bin 592 -> 612 bytes .../src/main/res/drawable-mdpi/msg_work.png | Bin 0 -> 625 bytes .../src/main/res/drawable-mdpi/msg_zoomin.png | Bin 615 -> 616 bytes .../main/res/drawable-mdpi/msg_zoomout.png | Bin 573 -> 574 bytes .../res/drawable-mdpi/msg_zoomout_stats.png | Bin 0 -> 536 bytes .../src/main/res/drawable-mdpi/no_apps.png | Bin 1002 -> 0 bytes .../main/res/drawable-mdpi/other_2x_large.png | Bin 0 -> 831 bytes .../res/drawable-mdpi/other_lockedfolders.png | Bin 0 -> 307 bytes .../drawable-mdpi/other_lockedfolders2.png | Bin 0 -> 347 bytes .../res/drawable-mdpi/outline_add_gif.png | Bin 677 -> 0 bytes .../main/res/drawable-mdpi/outline_fave.png | Bin 594 -> 0 bytes .../main/res/drawable-mdpi/outline_pack.png | Bin 517 -> 0 bytes .../main/res/drawable-mdpi/outline_send.png | Bin 588 -> 0 bytes .../main/res/drawable-mdpi/outline_unfave.png | Bin 686 -> 0 bytes .../res/drawable-mdpi/payment_address.png | Bin 630 -> 0 bytes .../main/res/drawable-mdpi/payment_card.png | Bin 368 -> 0 bytes .../res/drawable-mdpi/payment_delivery.png | Bin 628 -> 0 bytes .../main/res/drawable-mdpi/payment_email.png | Bin 713 -> 0 bytes .../main/res/drawable-mdpi/payment_name.png | Bin 504 -> 0 bytes .../main/res/drawable-mdpi/payment_phone.png | Bin 528 -> 0 bytes .../res/drawable-mdpi/payment_provider.png | Bin 523 -> 0 bytes .../src/main/res/drawable-mdpi/photo_crop.png | Bin 354 -> 0 bytes .../src/main/res/drawable-mdpi/photo_flip.png | Bin 134 -> 0 bytes .../main/res/drawable-mdpi/photo_paint.png | Bin 459 -> 0 bytes .../res/drawable-mdpi/photo_paint_text.png | Bin 534 -> 0 bytes .../main/res/drawable-mdpi/photo_sticker.png | Bin 614 -> 0 bytes .../main/res/drawable-mdpi/photo_timer.png | Bin 560 -> 0 bytes .../main/res/drawable-mdpi/photo_tools.png | Bin 453 -> 0 bytes .../src/main/res/drawable-mdpi/place_x.png | Bin 176 -> 0 bytes .../main/res/drawable-mdpi/preview_open.png | Bin 253 -> 0 bytes .../main/res/drawable-mdpi/profile_admin.png | Bin 416 -> 0 bytes .../main/res/drawable-mdpi/profile_audio.png | Bin 312 -> 0 bytes .../main/res/drawable-mdpi/profile_ban.png | Bin 375 -> 0 bytes .../main/res/drawable-mdpi/profile_file.png | Bin 256 -> 0 bytes .../main/res/drawable-mdpi/profile_info.png | Bin 321 -> 0 bytes .../main/res/drawable-mdpi/profile_link.png | Bin 263 -> 0 bytes .../main/res/drawable-mdpi/profile_photos.png | Bin 290 -> 0 bytes .../main/res/drawable-mdpi/profile_voice.png | Bin 297 -> 0 bytes .../main/res/drawable-mdpi/search_date.png | Bin 378 -> 0 bytes .../main/res/drawable-mdpi/search_files.png | Bin 385 -> 0 bytes .../src/main/res/drawable-mdpi/search_gif.png | Bin 428 -> 0 bytes .../main/res/drawable-mdpi/search_links.png | Bin 463 -> 0 bytes .../main/res/drawable-mdpi/search_media.png | Bin 412 -> 0 bytes .../main/res/drawable-mdpi/search_music.png | Bin 424 -> 0 bytes .../main/res/drawable-mdpi/search_users.png | Bin 394 -> 0 bytes .../main/res/drawable-mdpi/search_voice.png | Bin 394 -> 0 bytes .../src/main/res/drawable-mdpi/search_web.png | Bin 478 -> 0 bytes .../src/main/res/drawable-mdpi/sim_new.png | Bin 1842 -> 0 bytes .../src/main/res/drawable-mdpi/sim_old.png | Bin 1403 -> 0 bytes .../drawable-mdpi/smiles_panel_activities.png | Bin 330 -> 0 bytes .../res/drawable-mdpi/smiles_panel_cat.png | Bin 446 -> 0 bytes .../res/drawable-mdpi/smiles_panel_flags.png | Bin 242 -> 0 bytes .../res/drawable-mdpi/smiles_panel_food.png | Bin 360 -> 0 bytes .../drawable-mdpi/smiles_panel_objects.png | Bin 319 -> 0 bytes .../res/drawable-mdpi/smiles_panel_other.png | Bin 357 -> 0 bytes .../drawable-mdpi/smiles_panel_question.png | Bin 370 -> 0 bytes .../res/drawable-mdpi/smiles_panel_recent.png | Bin 308 -> 0 bytes .../res/drawable-mdpi/smiles_panel_smiles.png | Bin 539 -> 0 bytes .../res/drawable-mdpi/smiles_panel_travel.png | Bin 380 -> 0 bytes .../drawable-mdpi/smiles_panel_trending.png | Bin 557 -> 0 bytes .../src/main/res/drawable-mdpi/stats_zoom.png | Bin 454 -> 0 bytes .../main/res/drawable-mdpi/stickersclose.png | Bin 250 -> 0 bytes .../res/drawable-mdpi/stickerset_close.png | Bin 127 -> 0 bytes .../main/res/drawable-mdpi/temp_starlarge.png | Bin 0 -> 2529 bytes .../res/drawable-mdpi/themes_addcolor.png | Bin 331 -> 0 bytes .../res/drawable-mdpi/themes_deletecolor.png | Bin 368 -> 0 bytes .../res/drawable-mdpi/themes_swapcolor.png | Bin 502 -> 0 bytes .../src/main/res/drawable-mdpi/tip1.png | Bin 13634 -> 0 bytes .../src/main/res/drawable-mdpi/tip2.png | Bin 6622 -> 0 bytes .../src/main/res/drawable-mdpi/tip3.png | Bin 9402 -> 0 bytes .../src/main/res/drawable-mdpi/tip4.png | Bin 5736 -> 0 bytes .../main/res/drawable-mdpi/toast_folder.png | Bin 412 -> 0 bytes .../res/drawable-mdpi/toast_folder_minus.png | Bin 271 -> 0 bytes .../src/main/res/drawable-mdpi/tool_blur.png | Bin 461 -> 0 bytes .../main/res/drawable-mdpi/tool_cropfix.png | Bin 287 -> 0 bytes .../src/main/res/drawable-mdpi/tool_curve.png | Bin 470 -> 0 bytes .../main/res/drawable-mdpi/tool_rotate.png | Bin 553 -> 0 bytes .../src/main/res/drawable-mdpi/update.png | Bin 454 -> 0 bytes .../src/main/res/drawable-mdpi/video_copy.png | Bin 185 -> 0 bytes .../res/drawable-mdpi/video_mini_arrow.png | Bin 88 -> 0 bytes .../res/drawable-mdpi/video_mini_cancel.png | Bin 137 -> 0 bytes .../src/main/res/drawable-mdpi/video_pip.png | Bin 116 -> 0 bytes .../res/drawable-mdpi/voice_muted_large.png | Bin 939 -> 0 bytes .../res/drawable-mdpi/voice_unmuted_large.png | Bin 683 -> 0 bytes .../src/main/res/drawable-mdpi/volume_off.png | Bin 634 -> 0 bytes .../src/main/res/drawable-mdpi/volume_on.png | Bin 625 -> 0 bytes .../main/res/drawable-mdpi/wallet_clear.png | Bin 556 -> 0 bytes .../res/drawable-mdpi/wallet_fingerprint.png | Bin 1716 -> 0 bytes .../src/main/res/drawable-mdpi/wallet_qr.png | Bin 483 -> 0 bytes .../main/res/drawable-mdpi/wallet_receive.png | Bin 256 -> 0 bytes .../main/res/drawable-mdpi/wallet_send.png | Bin 266 -> 0 bytes .../main/res/drawable-xhdpi/account_add.png | Bin 96 -> 0 bytes .../res/drawable-xhdpi/actionbtn_next.png | Bin 446 -> 0 bytes .../res/drawable-xhdpi/actions_addadmin.png | Bin 1844 -> 0 bytes .../res/drawable-xhdpi/actions_addchat.png | Bin 1668 -> 0 bytes .../res/drawable-xhdpi/actions_addmember2.png | Bin 1133 -> 0 bytes .../main/res/drawable-xhdpi/actions_link.png | Bin 1301 -> 0 bytes .../res/drawable-xhdpi/actions_nearby_off.png | Bin 1525 -> 0 bytes .../res/drawable-xhdpi/actions_nearby_on.png | Bin 1491 -> 0 bytes .../drawable-xhdpi/actions_permissions.png | Bin 1377 -> 0 bytes .../res/drawable-xhdpi/actions_reactions.png | Bin 1368 -> 0 bytes .../drawable-xhdpi/actions_remove_user.png | Bin 640 -> 0 bytes .../res/drawable-xhdpi/actions_removed.png | Bin 1347 -> 0 bytes .../res/drawable-xhdpi/actions_requests.png | Bin 1118 -> 0 bytes .../res/drawable-xhdpi/actions_setphoto.png | Bin 922 -> 0 bytes .../drawable-xhdpi/actions_viewmembers.png | Bin 1286 -> 0 bytes .../src/main/res/drawable-xhdpi/add_admin.png | Bin 1869 -> 0 bytes .../res/drawable-xhdpi/add_contact_new.png | Bin 127 -> 0 bytes .../res/drawable-xhdpi/audio_mini_arrow.png | Bin 112 -> 0 bytes .../res/drawable-xhdpi/audio_mini_cancel.png | Bin 136 -> 0 bytes .../res/drawable-xhdpi/audiosend_pause.png | Bin 166 -> 0 bytes .../res/drawable-xhdpi/audiosend_play.png | Bin 562 -> 0 bytes .../res/drawable-xhdpi/brightness_high.png | Bin 831 -> 0 bytes .../res/drawable-xhdpi/brightness_low.png | Bin 926 -> 0 bytes .../main/res/drawable-xhdpi/broadcast3.png | Bin 241 -> 0 bytes .../main/res/drawable-xhdpi/broadcast_w.png | Bin 387 -> 0 bytes .../main/res/drawable-xhdpi/chats_delete.png | Bin 396 -> 0 bytes .../main/res/drawable-xhdpi/chats_leave.png | Bin 444 -> 0 bytes .../res/drawable-xhdpi/contacts_sort_name.png | Bin 283 -> 0 bytes .../res/drawable-xhdpi/contacts_sort_time.png | Bin 292 -> 0 bytes .../src/main/res/drawable-xhdpi/devices.png | Bin 760 -> 0 bytes .../src/main/res/drawable-xhdpi/doc_big.png | Bin 481 -> 0 bytes .../main/res/drawable-xhdpi/edit_cancel.png | Bin 361 -> 0 bytes .../res/drawable-xhdpi/emoji_tabs_premium.png | Bin 0 -> 1681 bytes .../res/drawable-xhdpi/floating_camera.png | Bin 436 -> 0 bytes .../res/drawable-xhdpi/floating_message.png | Bin 164 -> 0 bytes .../res/drawable-xhdpi/folders_archive.png | Bin 733 -> 0 bytes .../main/res/drawable-xhdpi/folders_bot.png | Bin 1055 -> 0 bytes .../res/drawable-xhdpi/folders_channel.png | Bin 686 -> 0 bytes .../main/res/drawable-xhdpi/folders_group.png | Bin 866 -> 0 bytes .../main/res/drawable-xhdpi/folders_mute.png | Bin 917 -> 0 bytes .../res/drawable-xhdpi/folders_private.png | Bin 610 -> 0 bytes .../main/res/drawable-xhdpi/folders_read.png | Bin 1193 -> 0 bytes .../res/drawable-xhdpi/folders_requests.png | Bin 968 -> 0 bytes .../main/res/drawable-xhdpi/forwardvideo.png | Bin 526 -> 0 bytes .../src/main/res/drawable-xhdpi/gem.png | Bin 5732 -> 0 bytes .../src/main/res/drawable-xhdpi/gem_s.png | Bin 1946 -> 0 bytes .../res/drawable-xhdpi/group_addmember.png | Bin 334 -> 0 bytes .../main/res/drawable-xhdpi/group_admin.png | Bin 551 -> 0 bytes .../res/drawable-xhdpi/group_admin_new.png | Bin 538 -> 0 bytes .../main/res/drawable-xhdpi/group_ban_new.png | Bin 379 -> 0 bytes .../main/res/drawable-xhdpi/group_banned.png | Bin 325 -> 0 bytes .../src/main/res/drawable-xhdpi/group_log.png | Bin 799 -> 0 bytes .../main/res/drawable-xhdpi/ic_ab_copy.png | Bin 188 -> 0 bytes .../main/res/drawable-xhdpi/ic_ab_delete.png | Bin 156 -> 0 bytes .../main/res/drawable-xhdpi/ic_ab_fave.png | Bin 411 -> 0 bytes .../main/res/drawable-xhdpi/ic_ab_unfave.png | Bin 675 -> 0 bytes .../ic_bluetooth_white_24dp.png | Bin 344 -> 0 bytes .../src/main/res/drawable-xhdpi/ic_done.png | Bin 258 -> 0 bytes .../drawable-xhdpi/icon_2_background_sa.png | Bin 0 -> 47053 bytes .../drawable-xhdpi/icon_3_background_sa.png | Bin 0 -> 26288 bytes .../drawable-xhdpi/icon_4_background_sa.png | Bin 0 -> 41987 bytes .../drawable-xhdpi/icon_5_background_sa.png | Bin 0 -> 43578 bytes .../drawable-xhdpi/icon_6_background_sa.png | Bin 0 -> 17697 bytes .../drawable-xhdpi/icon_background_clip.png | Bin 0 -> 3814 bytes .../icon_background_clip_round.png | Bin 0 -> 3955 bytes .../icon_background_sa.png | Bin .../main/res/drawable-xhdpi/instant_link.png | Bin 1093 -> 0 bytes .../src/main/res/drawable-xhdpi/list_bot.png | Bin 374 -> 0 bytes .../res/drawable-xhdpi/list_broadcast.png | Bin 279 -> 0 bytes .../main/res/drawable-xhdpi/list_group.png | Bin 358 -> 0 bytes .../res/drawable-xhdpi/location_current.png | Bin 1007 -> 0 bytes .../main/res/drawable-xhdpi/location_type.png | Bin 1104 -> 0 bytes .../src/main/res/drawable-xhdpi/lock_open.png | Bin 359 -> 0 bytes .../src/main/res/drawable-xhdpi/log_info.png | Bin 685 -> 0 bytes .../src/main/res/drawable-xhdpi/menu_add.png | Bin 339 -> 0 bytes .../res/drawable-xhdpi/menu_bookmarks_14.png | Bin 1254 -> 0 bytes .../res/drawable-xhdpi/menu_bookmarks_hw.png | Bin 1582 -> 0 bytes .../res/drawable-xhdpi/menu_bookmarks_ny.png | Bin 969 -> 0 bytes .../src/main/res/drawable-xhdpi/menu_bots.png | Bin 1124 -> 0 bytes .../res/drawable-xhdpi/menu_broadcast.png | Bin 1086 -> 0 bytes .../res/drawable-xhdpi/menu_broadcast_14.png | Bin 1616 -> 0 bytes .../res/drawable-xhdpi/menu_broadcast_hw.png | Bin 1299 -> 0 bytes .../main/res/drawable-xhdpi/menu_calls.png | Bin 666 -> 0 bytes .../main/res/drawable-xhdpi/menu_calls_14.png | Bin 1651 -> 0 bytes .../main/res/drawable-xhdpi/menu_calls_hw.png | Bin 1535 -> 0 bytes .../main/res/drawable-xhdpi/menu_calls_ny.png | Bin 1151 -> 0 bytes .../main/res/drawable-xhdpi/menu_camera.png | Bin 663 -> 0 bytes .../main/res/drawable-xhdpi/menu_camera2.png | Bin 1370 -> 0 bytes .../res/drawable-xhdpi/menu_camera_av.png | Bin 697 -> 0 bytes .../res/drawable-xhdpi/menu_channel_ny.png | Bin 936 -> 0 bytes .../main/res/drawable-xhdpi/menu_chats.png | Bin 1205 -> 0 bytes .../main/res/drawable-xhdpi/menu_clear.png | Bin 1024 -> 0 bytes .../res/drawable-xhdpi/menu_clear_recent.png | Bin 1143 -> 0 bytes .../res/drawable-xhdpi/menu_clearcache.png | Bin 1176 -> 0 bytes .../main/res/drawable-xhdpi/menu_contacts.png | Bin 936 -> 0 bytes .../res/drawable-xhdpi/menu_contacts_14.png | Bin 1696 -> 0 bytes .../res/drawable-xhdpi/menu_contacts_hw.png | Bin 1804 -> 0 bytes .../res/drawable-xhdpi/menu_contacts_ny.png | Bin 867 -> 0 bytes .../src/main/res/drawable-xhdpi/menu_data.png | Bin 867 -> 0 bytes .../src/main/res/drawable-xhdpi/menu_date.png | Bin 654 -> 0 bytes .../main/res/drawable-xhdpi/menu_expand.png | Bin 511 -> 0 bytes .../main/res/drawable-xhdpi/menu_groups.png | Bin 1186 -> 0 bytes .../res/drawable-xhdpi/menu_groups_14.png | Bin 1748 -> 0 bytes .../res/drawable-xhdpi/menu_groups_hw.png | Bin 1766 -> 0 bytes .../res/drawable-xhdpi/menu_groups_ny.png | Bin 1111 -> 0 bytes .../src/main/res/drawable-xhdpi/menu_help.png | Bin 913 -> 0 bytes .../main/res/drawable-xhdpi/menu_help_hw.png | Bin 1549 -> 0 bytes .../main/res/drawable-xhdpi/menu_help_ny.png | Bin 569 -> 0 bytes .../src/main/res/drawable-xhdpi/menu_info.png | Bin 1227 -> 0 bytes .../main/res/drawable-xhdpi/menu_invite.png | Bin 1122 -> 0 bytes .../res/drawable-xhdpi/menu_invite_hw.png | Bin 1443 -> 0 bytes .../res/drawable-xhdpi/menu_invite_ny.png | Bin 957 -> 0 bytes .../main/res/drawable-xhdpi/menu_jobtitle.png | Bin 660 -> 0 bytes .../main/res/drawable-xhdpi/menu_language.png | Bin 1118 -> 0 bytes .../main/res/drawable-xhdpi/menu_location.png | Bin 1368 -> 0 bytes .../src/main/res/drawable-xhdpi/menu_mail.png | Bin 1383 -> 0 bytes .../main/res/drawable-xhdpi/menu_nearby.png | Bin 1515 -> 0 bytes .../res/drawable-xhdpi/menu_nearby_ny.png | Bin 1590 -> 0 bytes .../res/drawable-xhdpi/menu_newfilter.png | Bin 563 -> 0 bytes .../main/res/drawable-xhdpi/menu_newphone.png | Bin 564 -> 0 bytes .../main/res/drawable-xhdpi/menu_night.png | Bin 755 -> 0 bytes .../res/drawable-xhdpi/menu_notifications.png | Bin 595 -> 0 bytes .../main/res/drawable-xhdpi/menu_passcode.png | Bin 1082 -> 0 bytes .../res/drawable-xhdpi/menu_pinnedlist.png | Bin 1088 -> 0 bytes .../main/res/drawable-xhdpi/menu_policy.png | Bin 1518 -> 0 bytes .../main/res/drawable-xhdpi/menu_private.png | Bin 1556 -> 0 bytes .../src/main/res/drawable-xhdpi/menu_read.png | Bin 348 -> 0 bytes .../main/res/drawable-xhdpi/menu_recent.png | Bin 980 -> 0 bytes .../main/res/drawable-xhdpi/menu_saved.png | Bin 474 -> 0 bytes .../main/res/drawable-xhdpi/menu_search.png | Bin 644 -> 0 bytes .../main/res/drawable-xhdpi/menu_secret.png | Bin 582 -> 0 bytes .../res/drawable-xhdpi/menu_secret_14.png | Bin 1736 -> 0 bytes .../res/drawable-xhdpi/menu_secret_hw.png | Bin 1357 -> 0 bytes .../res/drawable-xhdpi/menu_secret_ny.png | Bin 730 -> 0 bytes .../main/res/drawable-xhdpi/menu_settings.png | Bin 1783 -> 0 bytes .../res/drawable-xhdpi/menu_settings_14.png | Bin 1603 -> 0 bytes .../drawable-xhdpi/menu_settings_filled.png | Bin 573 -> 0 bytes .../res/drawable-xhdpi/menu_settings_hw.png | Bin 2193 -> 0 bytes .../res/drawable-xhdpi/menu_settings_ny.png | Bin 1107 -> 0 bytes .../main/res/drawable-xhdpi/menu_support.png | Bin 808 -> 0 bytes .../main/res/drawable-xhdpi/menu_support2.png | Bin 1490 -> 0 bytes .../main/res/drawable-xhdpi/menu_switch.png | Bin 562 -> 0 bytes .../main/res/drawable-xhdpi/menu_unread.png | Bin 1263 -> 0 bytes .../main/res/drawable-xhdpi/menu_wallet.png | Bin 800 -> 0 bytes .../res/drawable-xhdpi/menu_wallet_ny.png | Bin 800 -> 0 bytes .../src/main/res/drawable-xhdpi/menu_work.png | Bin 956 -> 0 bytes .../main/res/drawable-xhdpi/msg_actions.png | Bin 158 -> 406 bytes .../src/main/res/drawable-xhdpi/msg_add.png | Bin 0 -> 409 bytes .../res/drawable-xhdpi/msg_addaccount_all.png | Bin 0 -> 873 bytes .../drawable-xhdpi/msg_addaccount_base.png | Bin 0 -> 514 bytes .../drawable-xhdpi/msg_addaccount_text.png | Bin 0 -> 582 bytes .../main/res/drawable-xhdpi/msg_addbio.png | Bin 1324 -> 1398 bytes .../main/res/drawable-xhdpi/msg_addbot.png | Bin 2006 -> 1314 bytes .../main/res/drawable-xhdpi/msg_addfolder.png | Bin 924 -> 993 bytes .../main/res/drawable-xhdpi/msg_addphoto.png | Bin 1321 -> 1336 bytes .../main/res/drawable-xhdpi/msg_admin_add.png | Bin 0 -> 1784 bytes .../main/res/drawable-xhdpi/msg_admins.png | Bin 0 -> 1792 bytes .../res/drawable-xhdpi/msg_allowspeak.png | Bin 1478 -> 1418 bytes .../main/res/drawable-xhdpi/msg_archive.png | Bin 925 -> 1019 bytes .../drawable-xhdpi/msg_archived_stickers.png | Bin 0 -> 1684 bytes .../res/drawable-xhdpi/msg_arrow_back.png | Bin 470 -> 649 bytes .../res/drawable-xhdpi/msg_arrow_forward.png | Bin 0 -> 660 bytes .../res/drawable-xhdpi/msg_arrowright.png | Bin 296 -> 397 bytes .../res/drawable-xhdpi/msg_ask_question.png | Bin 0 -> 1545 bytes .../res/drawable-xhdpi/msg_autodelete.png | Bin 1273 -> 1283 bytes .../res/drawable-xhdpi/msg_background.png | Bin 1194 -> 1201 bytes .../main/res/drawable-xhdpi/msg_bell_mute.png | Bin 0 -> 1403 bytes .../res/drawable-xhdpi/msg_bell_unmute.png | Bin 0 -> 1225 bytes .../src/main/res/drawable-xhdpi/msg_bio.png | Bin 1210 -> 0 bytes .../src/main/res/drawable-xhdpi/msg_block.png | Bin 1134 -> 1134 bytes .../main/res/drawable-xhdpi/msg_block2.png | Bin 1290 -> 1412 bytes .../main/res/drawable-xhdpi/msg_bluetooth.png | Bin 0 -> 1094 bytes .../{blur_linear.png => msg_blur_linear.png} | Bin .../{blur_off.png => msg_blur_off.png} | Bin .../{blur_radial.png => msg_blur_radial.png} | Bin .../src/main/res/drawable-xhdpi/msg_bots.png | Bin 0 -> 1178 bytes .../drawable-xhdpi/msg_brightness_high.png | Bin 0 -> 1141 bytes .../res/drawable-xhdpi/msg_brightness_low.png | Bin 0 -> 949 bytes .../main/res/drawable-xhdpi/msg_calendar.png | Bin 1058 -> 1047 bytes .../main/res/drawable-xhdpi/msg_calendar2.png | Bin 672 -> 779 bytes .../src/main/res/drawable-xhdpi/msg_calls.png | Bin 0 -> 1000 bytes .../main/res/drawable-xhdpi/msg_calls_14.png | Bin 0 -> 1513 bytes .../main/res/drawable-xhdpi/msg_calls_hw.png | Bin 0 -> 1373 bytes .../res/drawable-xhdpi/msg_calls_minimize.png | Bin 696 -> 611 bytes .../main/res/drawable-xhdpi/msg_calls_ny.png | Bin 0 -> 1581 bytes .../main/res/drawable-xhdpi/msg_calls_pin.png | Bin 861 -> 801 bytes .../res/drawable-xhdpi/msg_calls_unpin.png | Bin 1318 -> 1040 bytes .../main/res/drawable-xhdpi/msg_camera.png | Bin 0 -> 1274 bytes .../main/res/drawable-xhdpi/msg_cancel.png | Bin 1476 -> 1370 bytes .../main/res/drawable-xhdpi/msg_channel.png | Bin 1050 -> 1169 bytes .../res/drawable-xhdpi/msg_channel_14.png | Bin 0 -> 1563 bytes .../res/drawable-xhdpi/msg_channel_hw.png | Bin 0 -> 1154 bytes .../res/drawable-xhdpi/msg_channel_ny.png | Bin 0 -> 1425 bytes .../main/res/drawable-xhdpi/msg_chats_add.png | Bin 0 -> 1531 bytes .../res/drawable-xhdpi/msg_chats_remove.png | Bin 0 -> 1480 bytes .../src/main/res/drawable-xhdpi/msg_check.png | Bin 394 -> 531 bytes .../res/drawable-xhdpi/msg_check_thick.png | Bin 0 -> 665 bytes .../src/main/res/drawable-xhdpi/msg_clear.png | Bin 993 -> 1065 bytes .../res/drawable-xhdpi/msg_clear_input.png | Bin 0 -> 1152 bytes .../res/drawable-xhdpi/msg_clear_recent.png | Bin 0 -> 1323 bytes .../res/drawable-xhdpi/msg_clearcache.png | Bin 0 -> 1237 bytes .../src/main/res/drawable-xhdpi/msg_close.png | Bin 0 -> 482 bytes .../main/res/drawable-xhdpi/msg_colors.png | Bin 1511 -> 1527 bytes .../res/drawable-xhdpi/msg_contact_add.png | Bin 0 -> 1157 bytes .../main/res/drawable-xhdpi/msg_contacts.png | Bin 0 -> 987 bytes .../res/drawable-xhdpi/msg_contacts_14.png | Bin 0 -> 1688 bytes .../res/drawable-xhdpi/msg_contacts_hw.png | Bin 0 -> 1654 bytes .../res/drawable-xhdpi/msg_contacts_name.png | Bin 0 -> 797 bytes .../res/drawable-xhdpi/msg_contacts_ny.png | Bin 0 -> 1526 bytes .../res/drawable-xhdpi/msg_contacts_time.png | Bin 0 -> 774 bytes .../src/main/res/drawable-xhdpi/msg_copy.png | Bin 620 -> 811 bytes .../drawable-xhdpi/msg_current_location.png | Bin 0 -> 1244 bytes .../main/res/drawable-xhdpi/msg_customize.png | Bin 989 -> 979 bytes .../src/main/res/drawable-xhdpi/msg_data.png | Bin 0 -> 1278 bytes .../main/res/drawable-xhdpi/msg_delete.png | Bin 992 -> 1002 bytes .../res/drawable-xhdpi/msg_delete_auto.png | Bin 1333 -> 1344 bytes .../res/drawable-xhdpi/msg_delete_old.png | Bin 0 -> 808 bytes .../main/res/drawable-xhdpi/msg_devices.png | Bin 0 -> 629 bytes .../res/drawable-xhdpi/msg_discussion.png | Bin 1129 -> 1238 bytes .../main/res/drawable-xhdpi/msg_download.png | Bin 575 -> 589 bytes .../res/drawable-xhdpi/msg_draw_arrow.png | Bin 1218 -> 1377 bytes .../res/drawable-xhdpi/msg_draw_marker.png | Bin 1311 -> 1502 bytes .../main/res/drawable-xhdpi/msg_draw_neon.png | Bin 1407 -> 1616 bytes .../main/res/drawable-xhdpi/msg_draw_pen.png | Bin 1329 -> 1499 bytes .../src/main/res/drawable-xhdpi/msg_edit.png | Bin 865 -> 761 bytes .../drawable-xhdpi/msg_emoji_activities.png | Bin 0 -> 1413 bytes .../main/res/drawable-xhdpi/msg_emoji_cat.png | Bin 0 -> 1528 bytes .../res/drawable-xhdpi/msg_emoji_flags.png | Bin 0 -> 726 bytes .../res/drawable-xhdpi/msg_emoji_food.png | Bin 0 -> 1292 bytes .../res/drawable-xhdpi/msg_emoji_objects.png | Bin 0 -> 1259 bytes .../res/drawable-xhdpi/msg_emoji_other.png | Bin 0 -> 1245 bytes .../res/drawable-xhdpi/msg_emoji_premium.png | Bin 0 -> 1412 bytes .../res/drawable-xhdpi/msg_emoji_question.png | Bin 0 -> 1373 bytes .../res/drawable-xhdpi/msg_emoji_recent.png | Bin 0 -> 1190 bytes .../res/drawable-xhdpi/msg_emoji_smiles.png | Bin 0 -> 1323 bytes .../res/drawable-xhdpi/msg_emoji_travel.png | Bin 0 -> 1165 bytes .../main/res/drawable-xhdpi/msg_endcall.png | Bin 988 -> 969 bytes .../main/res/drawable-xhdpi/msg_expand.png | Bin 0 -> 419 bytes .../src/main/res/drawable-xhdpi/msg_fave.png | Bin 1169 -> 1321 bytes ...mtrl_alpha.png => msg_filled_shareout.png} | Bin .../main/res/drawable-xhdpi/msg_folder.png | Bin 0 -> 759 bytes .../res/drawable-xhdpi/msg_folder_reorder.png | Bin 0 -> 927 bytes .../{menu_folders.png => msg_folders.png} | Bin .../drawable-xhdpi/msg_folders_archive.png | Bin 0 -> 874 bytes .../res/drawable-xhdpi/msg_folders_bots.png | Bin 0 -> 1060 bytes .../drawable-xhdpi/msg_folders_channels.png | Bin 0 -> 792 bytes .../res/drawable-xhdpi/msg_folders_groups.png | Bin 0 -> 976 bytes .../res/drawable-xhdpi/msg_folders_muted.png | Bin 0 -> 1205 bytes .../drawable-xhdpi/msg_folders_private.png | Bin 0 -> 1102 bytes .../res/drawable-xhdpi/msg_folders_read.png | Bin 0 -> 1084 bytes .../drawable-xhdpi/msg_folders_requests.png | Bin 0 -> 1130 bytes .../main/res/drawable-xhdpi/msg_forward.png | Bin 618 -> 621 bytes .../res/drawable-xhdpi/msg_forward_check.png | Bin 669 -> 647 bytes .../drawable-xhdpi/msg_forward_replace.png | Bin 1399 -> 1312 bytes .../res/drawable-xhdpi/msg_forward_send.png | Bin 1219 -> 0 bytes .../main/res/drawable-xhdpi/msg_gallery.png | Bin 1034 -> 1232 bytes .../src/main/res/drawable-xhdpi/msg_gif.png | Bin 1141 -> 1270 bytes .../main/res/drawable-xhdpi/msg_gif_add.png | Bin 0 -> 1339 bytes .../main/res/drawable-xhdpi/msg_go_down.png | Bin 288 -> 429 bytes .../src/main/res/drawable-xhdpi/msg_go_up.png | Bin 281 -> 394 bytes .../main/res/drawable-xhdpi/msg_groups.png | Bin 0 -> 1333 bytes .../main/res/drawable-xhdpi/msg_groups_14.png | Bin 0 -> 1662 bytes .../res/drawable-xhdpi/msg_groups_create.png | Bin 0 -> 1479 bytes .../main/res/drawable-xhdpi/msg_groups_hw.png | Bin 0 -> 1687 bytes .../main/res/drawable-xhdpi/msg_groups_ny.png | Bin 0 -> 1606 bytes .../main/res/drawable-xhdpi/msg_handdown.png | Bin 1318 -> 1247 bytes .../src/main/res/drawable-xhdpi/msg_help.png | Bin 0 -> 1553 bytes .../main/res/drawable-xhdpi/msg_help_14.png | Bin 0 -> 1417 bytes .../main/res/drawable-xhdpi/msg_help_hw.png | Bin 0 -> 1400 bytes .../main/res/drawable-xhdpi/msg_help_ny.png | Bin 0 -> 1168 bytes .../src/main/res/drawable-xhdpi/msg_home.png | Bin 855 -> 993 bytes .../main/res/drawable-xhdpi/msg_hybrid.png | Bin 1139 -> 1276 bytes .../src/main/res/drawable-xhdpi/msg_info.png | Bin 0 -> 1343 bytes .../res/drawable-xhdpi/msg_inputarrow.png | Bin 448 -> 547 bytes .../res/drawable-xhdpi/msg_instant_link.png | Bin 0 -> 1460 bytes .../main/res/drawable-xhdpi/msg_invite.png | Bin 0 -> 1187 bytes .../main/res/drawable-xhdpi/msg_invite_14.png | Bin 0 -> 1585 bytes .../main/res/drawable-xhdpi/msg_invite_hw.png | Bin 0 -> 1376 bytes .../main/res/drawable-xhdpi/msg_invite_ny.png | Bin 0 -> 1647 bytes .../main/res/drawable-xhdpi/msg_invited.png | Bin 1149 -> 1046 bytes .../main/res/drawable-xhdpi/msg_jobtitle.png | Bin 0 -> 781 bytes .../main/res/drawable-xhdpi/msg_language.png | Bin 1454 -> 1538 bytes .../src/main/res/drawable-xhdpi/msg_leave.png | Bin 822 -> 862 bytes .../main/res/drawable-xhdpi/msg_limit_2x.png | Bin 0 -> 1141 bytes .../res/drawable-xhdpi/msg_limit_accounts.png | Bin 0 -> 1102 bytes .../res/drawable-xhdpi/msg_limit_chats.png | Bin 0 -> 900 bytes .../res/drawable-xhdpi/msg_limit_folder.png | Bin 0 -> 535 bytes .../res/drawable-xhdpi/msg_limit_groups.png | Bin 0 -> 1031 bytes .../res/drawable-xhdpi/msg_limit_links.png | Bin 0 -> 1161 bytes .../main/res/drawable-xhdpi/msg_limit_pin.png | Bin 0 -> 924 bytes .../src/main/res/drawable-xhdpi/msg_link.png | Bin 878 -> 984 bytes .../src/main/res/drawable-xhdpi/msg_link2.png | Bin 0 -> 1231 bytes .../src/main/res/drawable-xhdpi/msg_list.png | Bin 229 -> 478 bytes .../src/main/res/drawable-xhdpi/msg_list2.png | Bin 0 -> 604 bytes .../main/res/drawable-xhdpi/msg_location.png | Bin 673 -> 1530 bytes .../res/drawable-xhdpi/msg_location_alert.png | Bin 1627 -> 1575 bytes .../drawable-xhdpi/msg_location_alert2.png | Bin 948 -> 1070 bytes .../src/main/res/drawable-xhdpi/msg_log.png | Bin 0 -> 971 bytes .../src/main/res/drawable-xhdpi/msg_map.png | Bin 715 -> 871 bytes .../main/res/drawable-xhdpi/msg_map_type.png | Bin 0 -> 1117 bytes .../main/res/drawable-xhdpi/msg_markread.png | Bin 525 -> 1528 bytes .../res/drawable-xhdpi/msg_markunread.png | Bin 821 -> 1391 bytes .../src/main/res/drawable-xhdpi/msg_mask.png | Bin 1308 -> 1773 bytes .../src/main/res/drawable-xhdpi/msg_media.png | Bin 1003 -> 1018 bytes .../main/res/drawable-xhdpi/msg_mention.png | Bin 1370 -> 1425 bytes .../main/res/drawable-xhdpi/msg_message.png | Bin 1134 -> 1264 bytes .../res/drawable-xhdpi/msg_mini_customize.png | Bin 0 -> 755 bytes .../drawable-xhdpi/msg_mini_premiumlock.png | Bin 0 -> 503 bytes .../main/res/drawable-xhdpi/msg_minvideo.png | Bin 582 -> 604 bytes .../res/drawable-xhdpi/msg_msgbubble3.png | Bin 1220 -> 1276 bytes .../src/main/res/drawable-xhdpi/msg_mute.png | Bin 1507 -> 1588 bytes .../res/drawable-xhdpi/msg_mute_period.png | Bin 1351 -> 1358 bytes .../main/res/drawable-xhdpi/msg_nearby.png | Bin 0 -> 1520 bytes .../main/res/drawable-xhdpi/msg_nearby_14.png | Bin 0 -> 1536 bytes .../main/res/drawable-xhdpi/msg_nearby_hw.png | Bin 0 -> 1480 bytes .../main/res/drawable-xhdpi/msg_nearby_ny.png | Bin 0 -> 1481 bytes .../res/drawable-xhdpi/msg_nearby_off.png | Bin 0 -> 1878 bytes .../main/res/drawable-xhdpi/msg_newfilter.png | Bin 0 -> 586 bytes .../main/res/drawable-xhdpi/msg_newphone.png | Bin 0 -> 1176 bytes .../drawable-xhdpi/msg_nightmode_system.png | Bin 0 -> 1237 bytes .../main/res/drawable-xhdpi/msg_noise_off.png | Bin 1447 -> 1349 bytes .../main/res/drawable-xhdpi/msg_noise_on.png | Bin 1380 -> 1370 bytes .../res/drawable-xhdpi/msg_notifications.png | Bin 0 -> 926 bytes .../main/res/drawable-xhdpi/msg_openin.png | Bin 1471 -> 815 bytes .../res/drawable-xhdpi/msg_openprofile.png | Bin 1524 -> 1687 bytes .../{menu_palette.png => msg_palette.png} | Bin .../drawable-xhdpi/msg_payment_address.png | Bin 0 -> 1267 bytes .../res/drawable-xhdpi/msg_payment_card.png | Bin 0 -> 621 bytes .../drawable-xhdpi/msg_payment_delivery.png | Bin 0 -> 1173 bytes .../drawable-xhdpi/msg_payment_provider.png | Bin 0 -> 919 bytes .../res/drawable-xhdpi/msg_permissions.png | Bin 1355 -> 1247 bytes .../res/drawable-xhdpi/msg_photo_blur.png | Bin 0 -> 1094 bytes .../drawable-xhdpi/msg_photo_blur_linear.png | Bin 0 -> 608 bytes .../res/drawable-xhdpi/msg_photo_blur_off.png | Bin 0 -> 339 bytes .../drawable-xhdpi/msg_photo_blur_radial.png | Bin 0 -> 1363 bytes .../res/drawable-xhdpi/msg_photo_brush.png | Bin 0 -> 1060 bytes .../res/drawable-xhdpi/msg_photo_crop.png | Bin 0 -> 729 bytes .../res/drawable-xhdpi/msg_photo_cropfix.png | Bin 0 -> 634 bytes .../res/drawable-xhdpi/msg_photo_curve.png | Bin 0 -> 957 bytes .../res/drawable-xhdpi/msg_photo_draw.png | Bin 0 -> 1115 bytes .../res/drawable-xhdpi/msg_photo_flip.png | Bin 0 -> 816 bytes .../res/drawable-xhdpi/msg_photo_rotate.png | Bin 0 -> 1193 bytes .../res/drawable-xhdpi/msg_photo_settings.png | Bin 0 -> 724 bytes .../res/drawable-xhdpi/msg_photo_text.png | Bin 0 -> 1011 bytes .../main/res/drawable-xhdpi/msg_photos.png | Bin 0 -> 1137 bytes .../src/main/res/drawable-xhdpi/msg_pin.png | Bin 964 -> 950 bytes .../res/drawable-xhdpi/msg_pinnedlist.png | Bin 0 -> 1088 bytes .../main/res/drawable-xhdpi/msg_played.png | Bin 1289 -> 1403 bytes .../main/res/drawable-xhdpi/msg_policy.png | Bin 0 -> 1562 bytes .../main/res/drawable-xhdpi/msg_pollstop.png | Bin 940 -> 928 bytes .../res/drawable-xhdpi/msg_premium_ads.png | Bin 0 -> 1091 bytes .../res/drawable-xhdpi/msg_premium_avatar.png | Bin 0 -> 921 bytes .../res/drawable-xhdpi/msg_premium_badge.png | Bin 0 -> 910 bytes .../res/drawable-xhdpi/msg_premium_icons.png | Bin 0 -> 1017 bytes .../res/drawable-xhdpi/msg_premium_limits.png | Bin 0 -> 954 bytes .../drawable-xhdpi/msg_premium_liststar.png | Bin 0 -> 607 bytes .../res/drawable-xhdpi/msg_premium_lock.png | Bin 0 -> 1013 bytes .../res/drawable-xhdpi/msg_premium_lock2.png | Bin 0 -> 717 bytes .../res/drawable-xhdpi/msg_premium_normal.png | Bin 0 -> 934 bytes .../msg_premium_prolfilestar.png | Bin 0 -> 1412 bytes .../drawable-xhdpi/msg_premium_reactions.png | Bin 0 -> 764 bytes .../res/drawable-xhdpi/msg_premium_speed.png | Bin 0 -> 1039 bytes .../drawable-xhdpi/msg_premium_stickers.png | Bin 0 -> 940 bytes .../res/drawable-xhdpi/msg_premium_tools.png | Bin 0 -> 803 bytes .../drawable-xhdpi/msg_premium_uploads.png | Bin 0 -> 724 bytes .../res/drawable-xhdpi/msg_premium_voice.png | Bin 0 -> 890 bytes .../src/main/res/drawable-xhdpi/msg_psa.png | Bin 1135 -> 1450 bytes .../main/res/drawable-xhdpi/msg_qrcode.png | Bin 717 -> 890 bytes .../main/res/drawable-xhdpi/msg_rate_down.png | Bin 0 -> 711 bytes .../main/res/drawable-xhdpi/msg_rate_up.png | Bin 0 -> 692 bytes .../main/res/drawable-xhdpi/msg_reactions.png | Bin 1150 -> 1132 bytes .../res/drawable-xhdpi/msg_reactions2.png | Bin 0 -> 1291 bytes .../main/res/drawable-xhdpi/msg_recent.png | Bin 0 -> 1216 bytes .../main/res/drawable-xhdpi/msg_remove.png | Bin 0 -> 1189 bytes .../res/drawable-xhdpi/msg_removefolder.png | Bin 889 -> 939 bytes .../main/res/drawable-xhdpi/msg_reorder.png | Bin 223 -> 399 bytes .../main/res/drawable-xhdpi/msg_replace.png | Bin 1122 -> 1194 bytes .../src/main/res/drawable-xhdpi/msg_reply.png | Bin 602 -> 597 bytes .../res/drawable-xhdpi/msg_report_abuse.png | Bin 1280 -> 0 bytes .../res/drawable-xhdpi/msg_report_drugs.png | Bin 1231 -> 1246 bytes .../res/drawable-xhdpi/msg_report_fake.png | Bin 1476 -> 1499 bytes .../res/drawable-xhdpi/msg_report_other.png | Bin 1414 -> 1419 bytes .../drawable-xhdpi/msg_report_personal.png | Bin 1206 -> 1312 bytes .../res/drawable-xhdpi/msg_report_spam.png | Bin 915 -> 0 bytes .../drawable-xhdpi/msg_report_violence.png | Bin 1446 -> 1467 bytes .../res/drawable-xhdpi/msg_report_xxx.png | Bin 1347 -> 1392 bytes .../main/res/drawable-xhdpi/msg_requests.png | Bin 0 -> 1106 bytes .../src/main/res/drawable-xhdpi/msg_reset.png | Bin 1093 -> 1131 bytes .../main/res/drawable-xhdpi/msg_satellite.png | Bin 726 -> 939 bytes .../src/main/res/drawable-xhdpi/msg_saved.png | Bin 0 -> 753 bytes .../main/res/drawable-xhdpi/msg_saved_14.png | Bin 0 -> 1234 bytes .../main/res/drawable-xhdpi/msg_saved_hw.png | Bin 0 -> 1393 bytes .../main/res/drawable-xhdpi/msg_saved_ny.png | Bin 0 -> 1417 bytes .../res/drawable-xhdpi/msg_screencast.png | Bin 1020 -> 1030 bytes .../res/drawable-xhdpi/msg_screencast_off.png | Bin 1369 -> 1360 bytes .../main/res/drawable-xhdpi/msg_search.png | Bin 1006 -> 984 bytes .../main/res/drawable-xhdpi/msg_secret.png | Bin 0 -> 952 bytes .../main/res/drawable-xhdpi/msg_secret_14.png | Bin 0 -> 1500 bytes .../main/res/drawable-xhdpi/msg_secret_hw.png | Bin 0 -> 1163 bytes .../main/res/drawable-xhdpi/msg_secret_ny.png | Bin 0 -> 1557 bytes .../src/main/res/drawable-xhdpi/msg_seen.png | Bin 548 -> 718 bytes .../main/res/drawable-xhdpi/msg_select.png | Bin 1149 -> 1351 bytes .../src/main/res/drawable-xhdpi/msg_send.png | Bin 0 -> 1216 bytes .../main/res/drawable-xhdpi/msg_sendfile.png | Bin 744 -> 898 bytes .../main/res/drawable-xhdpi/msg_sendphoto.png | Bin 993 -> 0 bytes .../main/res/drawable-xhdpi/msg_settings.png | Bin 0 -> 1727 bytes .../res/drawable-xhdpi/msg_settings_14.png | Bin 0 -> 1738 bytes .../res/drawable-xhdpi/msg_settings_hw.png | Bin 0 -> 1958 bytes .../res/drawable-xhdpi/msg_settings_ny.png | Bin 0 -> 1561 bytes .../res/drawable-xhdpi/msg_settings_old.png | Bin 0 -> 1808 bytes .../drawable-xhdpi/msg_settings_premium.png | Bin 0 -> 1077 bytes .../src/main/res/drawable-xhdpi/msg_share.png | Bin 1037 -> 1129 bytes .../main/res/drawable-xhdpi/msg_shareout.png | Bin 1014 -> 1064 bytes .../main/res/drawable-xhdpi/msg_silent.png | Bin 1121 -> 1127 bytes .../src/main/res/drawable-xhdpi/msg_speed.png | Bin 1027 -> 1040 bytes .../res/drawable-xhdpi/msg_start_secret.png | Bin 832 -> 0 bytes .../src/main/res/drawable-xhdpi/msg_stats.png | Bin 702 -> 787 bytes .../main/res/drawable-xhdpi/msg_sticker.png | Bin 1172 -> 1300 bytes .../main/res/drawable-xhdpi/msg_switch.png | Bin 0 -> 639 bytes .../src/main/res/drawable-xhdpi/msg_theme.png | Bin 1339 -> 1448 bytes .../src/main/res/drawable-xhdpi/msg_timer.png | Bin 1195 -> 1382 bytes .../main/res/drawable-xhdpi/msg_timer_1h.png | Bin 0 -> 1835 bytes .../main/res/drawable-xhdpi/msg_timeredit.png | Bin 1437 -> 1422 bytes .../main/res/drawable-xhdpi/msg_tone_add.png | Bin 1275 -> 1321 bytes .../main/res/drawable-xhdpi/msg_tone_off.png | Bin 1427 -> 1439 bytes .../main/res/drawable-xhdpi/msg_tone_on.png | Bin 1064 -> 1063 bytes .../main/res/drawable-xhdpi/msg_translate.png | Bin 1219 -> 1213 bytes .../main/res/drawable-xhdpi/msg_trending.png | Bin 0 -> 1757 bytes .../main/res/drawable-xhdpi/msg_unarchive.png | Bin 900 -> 980 bytes .../main/res/drawable-xhdpi/msg_unfave.png | Bin 1347 -> 1701 bytes .../main/res/drawable-xhdpi/msg_unmute.png | Bin 1353 -> 1363 bytes .../src/main/res/drawable-xhdpi/msg_unpin.png | Bin 1042 -> 1014 bytes .../main/res/drawable-xhdpi/msg_unvote.png | Bin 967 -> 1214 bytes .../res/drawable-xhdpi/msg_user_remove.png | Bin 0 -> 1359 bytes .../res/drawable-xhdpi/msg_user_search.png | Bin 0 -> 1310 bytes .../src/main/res/drawable-xhdpi/msg_video.png | Bin 969 -> 1217 bytes .../main/res/drawable-xhdpi/msg_videocall.png | Bin 909 -> 904 bytes .../res/drawable-xhdpi/msg_viewreplies.png | Bin 933 -> 1016 bytes .../drawable-xhdpi/msg_voice_headphones.png | Bin 1105 -> 1118 bytes .../main/res/drawable-xhdpi/msg_voicechat.png | Bin 1063 -> 1101 bytes .../src/main/res/drawable-xhdpi/msg_work.png | Bin 0 -> 1082 bytes .../main/res/drawable-xhdpi/msg_zoomin.png | Bin 1130 -> 1127 bytes .../main/res/drawable-xhdpi/msg_zoomout.png | Bin 1059 -> 1073 bytes .../res/drawable-xhdpi/msg_zoomout_stats.png | Bin 0 -> 968 bytes .../src/main/res/drawable-xhdpi/no_apps.png | Bin 2547 -> 0 bytes .../res/drawable-xhdpi/other_2x_large.png | Bin 0 -> 1668 bytes .../drawable-xhdpi/other_lockedfolders.png | Bin 0 -> 415 bytes .../drawable-xhdpi/other_lockedfolders2.png | Bin 0 -> 518 bytes .../res/drawable-xhdpi/outline_add_gif.png | Bin 1328 -> 0 bytes .../main/res/drawable-xhdpi/outline_fave.png | Bin 1502 -> 0 bytes .../main/res/drawable-xhdpi/outline_pack.png | Bin 375 -> 0 bytes .../main/res/drawable-xhdpi/outline_send.png | Bin 1270 -> 0 bytes .../res/drawable-xhdpi/outline_unfave.png | Bin 1509 -> 0 bytes .../res/drawable-xhdpi/payment_address.png | Bin 1220 -> 0 bytes .../main/res/drawable-xhdpi/payment_card.png | Bin 569 -> 0 bytes .../res/drawable-xhdpi/payment_delivery.png | Bin 1164 -> 0 bytes .../main/res/drawable-xhdpi/payment_email.png | Bin 1471 -> 0 bytes .../main/res/drawable-xhdpi/payment_name.png | Bin 863 -> 0 bytes .../main/res/drawable-xhdpi/payment_phone.png | Bin 994 -> 0 bytes .../res/drawable-xhdpi/payment_provider.png | Bin 906 -> 0 bytes .../main/res/drawable-xhdpi/photo_crop.png | Bin 588 -> 0 bytes .../main/res/drawable-xhdpi/photo_flip.png | Bin 187 -> 0 bytes .../main/res/drawable-xhdpi/photo_paint.png | Bin 901 -> 0 bytes .../res/drawable-xhdpi/photo_paint_text.png | Bin 976 -> 0 bytes .../main/res/drawable-xhdpi/photo_sticker.png | Bin 1365 -> 0 bytes .../main/res/drawable-xhdpi/photo_timer.png | Bin 1163 -> 0 bytes .../main/res/drawable-xhdpi/photo_tools.png | Bin 680 -> 0 bytes .../src/main/res/drawable-xhdpi/place_x.png | Bin 246 -> 0 bytes .../main/res/drawable-xhdpi/preview_open.png | Bin 380 -> 0 bytes .../main/res/drawable-xhdpi/profile_admin.png | Bin 864 -> 0 bytes .../main/res/drawable-xhdpi/profile_audio.png | Bin 597 -> 0 bytes .../main/res/drawable-xhdpi/profile_ban.png | Bin 821 -> 0 bytes .../main/res/drawable-xhdpi/profile_file.png | Bin 408 -> 0 bytes .../main/res/drawable-xhdpi/profile_info.png | Bin 678 -> 0 bytes .../main/res/drawable-xhdpi/profile_link.png | Bin 489 -> 0 bytes .../res/drawable-xhdpi/profile_photos.png | Bin 561 -> 0 bytes .../main/res/drawable-xhdpi/profile_voice.png | Bin 611 -> 0 bytes .../main/res/drawable-xhdpi/search_date.png | Bin 601 -> 0 bytes .../main/res/drawable-xhdpi/search_files.png | Bin 688 -> 0 bytes .../main/res/drawable-xhdpi/search_gif.png | Bin 861 -> 0 bytes .../main/res/drawable-xhdpi/search_links.png | Bin 926 -> 0 bytes .../main/res/drawable-xhdpi/search_media.png | Bin 826 -> 0 bytes .../main/res/drawable-xhdpi/search_music.png | Bin 793 -> 0 bytes .../main/res/drawable-xhdpi/search_users.png | Bin 717 -> 0 bytes .../main/res/drawable-xhdpi/search_voice.png | Bin 798 -> 0 bytes .../main/res/drawable-xhdpi/search_web.png | Bin 899 -> 0 bytes .../src/main/res/drawable-xhdpi/sim_new.png | Bin 3976 -> 0 bytes .../src/main/res/drawable-xhdpi/sim_old.png | Bin 3106 -> 0 bytes .../smiles_panel_activities.png | Bin 853 -> 0 bytes .../res/drawable-xhdpi/smiles_panel_cat.png | Bin 989 -> 0 bytes .../res/drawable-xhdpi/smiles_panel_flags.png | Bin 396 -> 0 bytes .../res/drawable-xhdpi/smiles_panel_food.png | Bin 758 -> 0 bytes .../drawable-xhdpi/smiles_panel_objects.png | Bin 725 -> 0 bytes .../res/drawable-xhdpi/smiles_panel_other.png | Bin 600 -> 0 bytes .../drawable-xhdpi/smiles_panel_question.png | Bin 799 -> 0 bytes .../drawable-xhdpi/smiles_panel_recent.png | Bin 677 -> 0 bytes .../drawable-xhdpi/smiles_panel_smiles.png | Bin 1295 -> 0 bytes .../drawable-xhdpi/smiles_panel_travel.png | Bin 731 -> 0 bytes .../drawable-xhdpi/smiles_panel_trending.png | Bin 1215 -> 0 bytes .../main/res/drawable-xhdpi/stats_zoom.png | Bin 847 -> 0 bytes .../main/res/drawable-xhdpi/stickersclose.png | Bin 430 -> 0 bytes .../res/drawable-xhdpi/stickerset_close.png | Bin 177 -> 0 bytes .../res/drawable-xhdpi/temp_starlarge.png | Bin 0 -> 5726 bytes .../res/drawable-xhdpi/themes_addcolor.png | Bin 465 -> 0 bytes .../res/drawable-xhdpi/themes_deletecolor.png | Bin 552 -> 0 bytes .../res/drawable-xhdpi/themes_swapcolor.png | Bin 886 -> 0 bytes .../src/main/res/drawable-xhdpi/tip1.png | Bin 37598 -> 0 bytes .../src/main/res/drawable-xhdpi/tip2.png | Bin 15326 -> 0 bytes .../src/main/res/drawable-xhdpi/tip3.png | Bin 24795 -> 0 bytes .../src/main/res/drawable-xhdpi/tip4.png | Bin 13542 -> 0 bytes .../main/res/drawable-xhdpi/toast_folder.png | Bin 760 -> 0 bytes .../res/drawable-xhdpi/toast_folder_minus.png | Bin 577 -> 0 bytes .../src/main/res/drawable-xhdpi/tool_blur.png | Bin 985 -> 0 bytes .../main/res/drawable-xhdpi/tool_cropfix.png | Bin 553 -> 0 bytes .../main/res/drawable-xhdpi/tool_curve.png | Bin 888 -> 0 bytes .../main/res/drawable-xhdpi/tool_rotate.png | Bin 1084 -> 0 bytes .../src/main/res/drawable-xhdpi/update.png | Bin 875 -> 0 bytes .../res/drawable-xhdpi/video_mini_arrow.png | Bin 171 -> 0 bytes .../res/drawable-xhdpi/video_mini_cancel.png | Bin 288 -> 0 bytes .../src/main/res/drawable-xhdpi/video_pip.png | Bin 156 -> 0 bytes .../res/drawable-xhdpi/voice_muted_large.png | Bin 1920 -> 0 bytes .../drawable-xhdpi/voice_unmuted_large.png | Bin 1422 -> 0 bytes .../main/res/drawable-xhdpi/volume_off.png | Bin 1307 -> 0 bytes .../src/main/res/drawable-xhdpi/volume_on.png | Bin 1296 -> 0 bytes .../main/res/drawable-xhdpi/wallet_clear.png | Bin 1206 -> 0 bytes .../res/drawable-xhdpi/wallet_fingerprint.png | Bin 3842 -> 0 bytes .../src/main/res/drawable-xhdpi/wallet_qr.png | Bin 915 -> 0 bytes .../res/drawable-xhdpi/wallet_receive.png | Bin 404 -> 0 bytes .../main/res/drawable-xhdpi/wallet_send.png | Bin 394 -> 0 bytes .../main/res/drawable-xxhdpi/account_add.png | Bin 97 -> 0 bytes .../res/drawable-xxhdpi/actionbtn_next.png | Bin 597 -> 0 bytes .../res/drawable-xxhdpi/actions_addadmin.png | Bin 2456 -> 0 bytes .../res/drawable-xxhdpi/actions_addchat.png | Bin 2505 -> 0 bytes .../drawable-xxhdpi/actions_addmember2.png | Bin 1284 -> 0 bytes .../main/res/drawable-xxhdpi/actions_link.png | Bin 1968 -> 0 bytes .../drawable-xxhdpi/actions_nearby_off.png | Bin 2261 -> 0 bytes .../res/drawable-xxhdpi/actions_nearby_on.png | Bin 2145 -> 0 bytes .../drawable-xxhdpi/actions_permissions.png | Bin 2000 -> 0 bytes .../res/drawable-xxhdpi/actions_reactions.png | Bin 2008 -> 0 bytes .../drawable-xxhdpi/actions_remove_user.png | Bin 913 -> 0 bytes .../res/drawable-xxhdpi/actions_removed.png | Bin 1591 -> 0 bytes .../res/drawable-xxhdpi/actions_requests.png | Bin 1457 -> 0 bytes .../res/drawable-xxhdpi/actions_setphoto.png | Bin 1020 -> 0 bytes .../drawable-xxhdpi/actions_viewmembers.png | Bin 1427 -> 0 bytes .../main/res/drawable-xxhdpi/add_admin.png | Bin 2521 -> 0 bytes .../res/drawable-xxhdpi/add_contact_new.png | Bin 146 -> 0 bytes .../res/drawable-xxhdpi/audio_mini_arrow.png | Bin 131 -> 0 bytes .../res/drawable-xxhdpi/audio_mini_cancel.png | Bin 172 -> 0 bytes .../res/drawable-xxhdpi/audiosend_pause.png | Bin 195 -> 0 bytes .../res/drawable-xxhdpi/audiosend_play.png | Bin 665 -> 0 bytes .../res/drawable-xxhdpi/brightness_high.png | Bin 1433 -> 0 bytes .../res/drawable-xxhdpi/brightness_low.png | Bin 1199 -> 0 bytes .../main/res/drawable-xxhdpi/broadcast3.png | Bin 327 -> 0 bytes .../main/res/drawable-xxhdpi/broadcast_w.png | Bin 524 -> 0 bytes .../main/res/drawable-xxhdpi/chats_delete.png | Bin 423 -> 0 bytes .../main/res/drawable-xxhdpi/chats_leave.png | Bin 390 -> 0 bytes .../drawable-xxhdpi/contacts_sort_name.png | Bin 336 -> 0 bytes .../drawable-xxhdpi/contacts_sort_time.png | Bin 392 -> 0 bytes .../src/main/res/drawable-xxhdpi/devices.png | Bin 1211 -> 0 bytes .../src/main/res/drawable-xxhdpi/doc_big.png | Bin 671 -> 0 bytes .../main/res/drawable-xxhdpi/edit_cancel.png | Bin 444 -> 0 bytes .../drawable-xxhdpi/emoji_tabs_premium.png | Bin 0 -> 2545 bytes .../res/drawable-xxhdpi/floating_camera.png | Bin 663 -> 0 bytes .../res/drawable-xxhdpi/floating_message.png | Bin 223 -> 0 bytes .../res/drawable-xxhdpi/folders_archive.png | Bin 1058 -> 0 bytes .../main/res/drawable-xxhdpi/folders_bot.png | Bin 1653 -> 0 bytes .../res/drawable-xxhdpi/folders_channel.png | Bin 980 -> 0 bytes .../res/drawable-xxhdpi/folders_group.png | Bin 1187 -> 0 bytes .../main/res/drawable-xxhdpi/folders_mute.png | Bin 1383 -> 0 bytes .../res/drawable-xxhdpi/folders_private.png | Bin 917 -> 0 bytes .../main/res/drawable-xxhdpi/folders_read.png | Bin 1805 -> 0 bytes .../res/drawable-xxhdpi/folders_requests.png | Bin 1570 -> 0 bytes .../main/res/drawable-xxhdpi/forwardvideo.png | Bin 762 -> 0 bytes .../src/main/res/drawable-xxhdpi/gem.png | Bin 10036 -> 0 bytes .../src/main/res/drawable-xxhdpi/gem_s.png | Bin 3421 -> 0 bytes .../res/drawable-xxhdpi/group_addmember.png | Bin 482 -> 0 bytes .../main/res/drawable-xxhdpi/group_admin.png | Bin 680 -> 0 bytes .../res/drawable-xxhdpi/group_admin_new.png | Bin 778 -> 0 bytes .../res/drawable-xxhdpi/group_ban_new.png | Bin 367 -> 0 bytes .../main/res/drawable-xxhdpi/group_banned.png | Bin 495 -> 0 bytes .../main/res/drawable-xxhdpi/group_log.png | Bin 889 -> 0 bytes .../main/res/drawable-xxhdpi/ic_ab_copy.png | Bin 273 -> 0 bytes .../main/res/drawable-xxhdpi/ic_ab_delete.png | Bin 256 -> 0 bytes .../main/res/drawable-xxhdpi/ic_ab_fave.png | Bin 620 -> 0 bytes .../main/res/drawable-xxhdpi/ic_ab_unfave.png | Bin 946 -> 0 bytes .../ic_bluetooth_white_24dp.png | Bin 499 -> 0 bytes .../src/main/res/drawable-xxhdpi/ic_done.png | Bin 328 -> 0 bytes .../drawable-xxhdpi/icon_2_background_sa.png | Bin 0 -> 86659 bytes .../drawable-xxhdpi/icon_3_background_sa.png | Bin 0 -> 41642 bytes .../drawable-xxhdpi/icon_4_background_sa.png | Bin 0 -> 80012 bytes .../drawable-xxhdpi/icon_5_background_sa.png | Bin 0 -> 79763 bytes .../drawable-xxhdpi/icon_6_background_sa.png | Bin 0 -> 22425 bytes .../drawable-xxhdpi/icon_background_clip.png | Bin 0 -> 6504 bytes .../icon_background_clip_round.png | Bin 0 -> 6854 bytes .../icon_background_sa.png | Bin .../main/res/drawable-xxhdpi/instant_link.png | Bin 1161 -> 0 bytes .../src/main/res/drawable-xxhdpi/list_bot.png | Bin 503 -> 0 bytes .../res/drawable-xxhdpi/list_broadcast.png | Bin 377 -> 0 bytes .../main/res/drawable-xxhdpi/list_group.png | Bin 521 -> 0 bytes .../res/drawable-xxhdpi/location_current.png | Bin 1468 -> 0 bytes .../res/drawable-xxhdpi/location_type.png | Bin 1680 -> 0 bytes .../main/res/drawable-xxhdpi/lock_open.png | Bin 452 -> 0 bytes .../src/main/res/drawable-xxhdpi/log_info.png | Bin 1021 -> 0 bytes .../src/main/res/drawable-xxhdpi/menu_add.png | Bin 450 -> 0 bytes .../res/drawable-xxhdpi/menu_bookmarks_14.png | Bin 1882 -> 0 bytes .../res/drawable-xxhdpi/menu_bookmarks_hw.png | Bin 2651 -> 0 bytes .../res/drawable-xxhdpi/menu_bookmarks_ny.png | Bin 1192 -> 0 bytes .../main/res/drawable-xxhdpi/menu_bots.png | Bin 1590 -> 0 bytes .../res/drawable-xxhdpi/menu_broadcast.png | Bin 1685 -> 0 bytes .../res/drawable-xxhdpi/menu_broadcast_14.png | Bin 2466 -> 0 bytes .../res/drawable-xxhdpi/menu_broadcast_hw.png | Bin 1920 -> 0 bytes .../main/res/drawable-xxhdpi/menu_calls.png | Bin 848 -> 0 bytes .../res/drawable-xxhdpi/menu_calls_14.png | Bin 2415 -> 0 bytes .../res/drawable-xxhdpi/menu_calls_hw.png | Bin 2342 -> 0 bytes .../res/drawable-xxhdpi/menu_calls_ny.png | Bin 1666 -> 0 bytes .../main/res/drawable-xxhdpi/menu_camera.png | Bin 917 -> 0 bytes .../main/res/drawable-xxhdpi/menu_camera2.png | Bin 1665 -> 0 bytes .../res/drawable-xxhdpi/menu_camera_av.png | Bin 845 -> 0 bytes .../res/drawable-xxhdpi/menu_channel_ny.png | Bin 1131 -> 0 bytes .../main/res/drawable-xxhdpi/menu_chats.png | Bin 1912 -> 0 bytes .../main/res/drawable-xxhdpi/menu_clear.png | Bin 1607 -> 0 bytes .../res/drawable-xxhdpi/menu_clear_recent.png | Bin 1787 -> 0 bytes .../res/drawable-xxhdpi/menu_clearcache.png | Bin 1292 -> 0 bytes .../res/drawable-xxhdpi/menu_contacts.png | Bin 1069 -> 0 bytes .../res/drawable-xxhdpi/menu_contacts_14.png | Bin 2549 -> 0 bytes .../res/drawable-xxhdpi/menu_contacts_hw.png | Bin 2854 -> 0 bytes .../res/drawable-xxhdpi/menu_contacts_ny.png | Bin 1112 -> 0 bytes .../main/res/drawable-xxhdpi/menu_data.png | Bin 1007 -> 0 bytes .../main/res/drawable-xxhdpi/menu_date.png | Bin 781 -> 0 bytes .../main/res/drawable-xxhdpi/menu_expand.png | Bin 849 -> 0 bytes .../main/res/drawable-xxhdpi/menu_groups.png | Bin 1416 -> 0 bytes .../res/drawable-xxhdpi/menu_groups_14.png | Bin 2667 -> 0 bytes .../res/drawable-xxhdpi/menu_groups_hw.png | Bin 2950 -> 0 bytes .../res/drawable-xxhdpi/menu_groups_ny.png | Bin 1402 -> 0 bytes .../main/res/drawable-xxhdpi/menu_help.png | Bin 1201 -> 0 bytes .../main/res/drawable-xxhdpi/menu_help_hw.png | Bin 2517 -> 0 bytes .../main/res/drawable-xxhdpi/menu_help_ny.png | Bin 891 -> 0 bytes .../main/res/drawable-xxhdpi/menu_info.png | Bin 1600 -> 0 bytes .../main/res/drawable-xxhdpi/menu_invite.png | Bin 1267 -> 0 bytes .../res/drawable-xxhdpi/menu_invite_hw.png | Bin 2341 -> 0 bytes .../res/drawable-xxhdpi/menu_invite_ny.png | Bin 1044 -> 0 bytes .../res/drawable-xxhdpi/menu_jobtitle.png | Bin 785 -> 0 bytes .../res/drawable-xxhdpi/menu_language.png | Bin 1134 -> 0 bytes .../res/drawable-xxhdpi/menu_location.png | Bin 2178 -> 0 bytes .../main/res/drawable-xxhdpi/menu_mail.png | Bin 1980 -> 0 bytes .../main/res/drawable-xxhdpi/menu_nearby.png | Bin 2197 -> 0 bytes .../res/drawable-xxhdpi/menu_nearby_ny.png | Bin 2419 -> 0 bytes .../res/drawable-xxhdpi/menu_newfilter.png | Bin 712 -> 0 bytes .../res/drawable-xxhdpi/menu_newphone.png | Bin 723 -> 0 bytes .../main/res/drawable-xxhdpi/menu_night.png | Bin 1189 -> 0 bytes .../drawable-xxhdpi/menu_notifications.png | Bin 770 -> 0 bytes .../res/drawable-xxhdpi/menu_passcode.png | Bin 1268 -> 0 bytes .../res/drawable-xxhdpi/menu_pinnedlist.png | Bin 1364 -> 0 bytes .../main/res/drawable-xxhdpi/menu_policy.png | Bin 2343 -> 0 bytes .../main/res/drawable-xxhdpi/menu_private.png | Bin 2273 -> 0 bytes .../main/res/drawable-xxhdpi/menu_read.png | Bin 321 -> 0 bytes .../main/res/drawable-xxhdpi/menu_recent.png | Bin 1623 -> 0 bytes .../main/res/drawable-xxhdpi/menu_saved.png | Bin 528 -> 0 bytes .../main/res/drawable-xxhdpi/menu_search.png | Bin 704 -> 0 bytes .../main/res/drawable-xxhdpi/menu_secret.png | Bin 633 -> 0 bytes .../res/drawable-xxhdpi/menu_secret_14.png | Bin 2750 -> 0 bytes .../res/drawable-xxhdpi/menu_secret_hw.png | Bin 2165 -> 0 bytes .../res/drawable-xxhdpi/menu_secret_ny.png | Bin 691 -> 0 bytes .../res/drawable-xxhdpi/menu_settings.png | Bin 2378 -> 0 bytes .../res/drawable-xxhdpi/menu_settings_14.png | Bin 2376 -> 0 bytes .../drawable-xxhdpi/menu_settings_filled.png | Bin 844 -> 0 bytes .../res/drawable-xxhdpi/menu_settings_hw.png | Bin 3659 -> 0 bytes .../res/drawable-xxhdpi/menu_settings_ny.png | Bin 1222 -> 0 bytes .../main/res/drawable-xxhdpi/menu_support.png | Bin 1334 -> 0 bytes .../res/drawable-xxhdpi/menu_support2.png | Bin 2097 -> 0 bytes .../main/res/drawable-xxhdpi/menu_switch.png | Bin 783 -> 0 bytes .../main/res/drawable-xxhdpi/menu_unread.png | Bin 1919 -> 0 bytes .../main/res/drawable-xxhdpi/menu_wallet.png | Bin 1089 -> 0 bytes .../res/drawable-xxhdpi/menu_wallet_ny.png | Bin 1089 -> 0 bytes .../main/res/drawable-xxhdpi/menu_work.png | Bin 989 -> 0 bytes .../main/res/drawable-xxhdpi/msg_actions.png | Bin 270 -> 534 bytes .../src/main/res/drawable-xxhdpi/msg_add.png | Bin 0 -> 508 bytes .../drawable-xxhdpi/msg_addaccount_all.png | Bin 0 -> 1160 bytes .../drawable-xxhdpi/msg_addaccount_base.png | Bin 0 -> 630 bytes .../drawable-xxhdpi/msg_addaccount_text.png | Bin 0 -> 823 bytes .../main/res/drawable-xxhdpi/msg_addbio.png | Bin 1986 -> 1967 bytes .../main/res/drawable-xxhdpi/msg_addbot.png | Bin 1474 -> 1674 bytes .../res/drawable-xxhdpi/msg_addfolder.png | Bin 1363 -> 1326 bytes .../main/res/drawable-xxhdpi/msg_addphoto.png | Bin 1891 -> 1717 bytes .../res/drawable-xxhdpi/msg_admin_add.png | Bin 0 -> 2642 bytes .../main/res/drawable-xxhdpi/msg_admins.png | Bin 0 -> 2795 bytes .../res/drawable-xxhdpi/msg_allowspeak.png | Bin 2117 -> 1867 bytes .../main/res/drawable-xxhdpi/msg_archive.png | Bin 1277 -> 1351 bytes .../drawable-xxhdpi/msg_archived_stickers.png | Bin 0 -> 2453 bytes .../res/drawable-xxhdpi/msg_arrow_back.png | Bin 618 -> 979 bytes .../res/drawable-xxhdpi/msg_arrow_forward.png | Bin 0 -> 942 bytes .../res/drawable-xxhdpi/msg_arrowright.png | Bin 394 -> 504 bytes .../res/drawable-xxhdpi/msg_ask_question.png | Bin 0 -> 2128 bytes .../res/drawable-xxhdpi/msg_autodelete.png | Bin 1900 -> 1900 bytes .../res/drawable-xxhdpi/msg_background.png | Bin 1647 -> 1607 bytes .../res/drawable-xxhdpi/msg_bell_mute.png | Bin 0 -> 2039 bytes .../res/drawable-xxhdpi/msg_bell_unmute.png | Bin 0 -> 1774 bytes .../src/main/res/drawable-xxhdpi/msg_bio.png | Bin 1715 -> 0 bytes .../main/res/drawable-xxhdpi/msg_block.png | Bin 1461 -> 1608 bytes .../main/res/drawable-xxhdpi/msg_block2.png | Bin 2054 -> 2109 bytes .../res/drawable-xxhdpi/msg_bluetooth.png | Bin 0 -> 1614 bytes .../{blur_linear.png => msg_blur_linear.png} | Bin .../{blur_off.png => msg_blur_off.png} | Bin .../{blur_radial.png => msg_blur_radial.png} | Bin .../src/main/res/drawable-xxhdpi/msg_bots.png | Bin 0 -> 1627 bytes .../drawable-xxhdpi/msg_brightness_high.png | Bin 0 -> 1443 bytes .../drawable-xxhdpi/msg_brightness_low.png | Bin 0 -> 1382 bytes .../main/res/drawable-xxhdpi/msg_calendar.png | Bin 1166 -> 1303 bytes .../res/drawable-xxhdpi/msg_calendar2.png | Bin 806 -> 891 bytes .../main/res/drawable-xxhdpi/msg_calls.png | Bin 0 -> 1557 bytes .../main/res/drawable-xxhdpi/msg_calls_14.png | Bin 0 -> 2107 bytes .../main/res/drawable-xxhdpi/msg_calls_hw.png | Bin 0 -> 2139 bytes .../drawable-xxhdpi/msg_calls_minimize.png | Bin 907 -> 775 bytes .../main/res/drawable-xxhdpi/msg_calls_ny.png | Bin 0 -> 2358 bytes .../res/drawable-xxhdpi/msg_calls_pin.png | Bin 1223 -> 1155 bytes .../res/drawable-xxhdpi/msg_calls_unpin.png | Bin 1904 -> 1350 bytes .../main/res/drawable-xxhdpi/msg_camera.png | Bin 0 -> 1808 bytes .../main/res/drawable-xxhdpi/msg_cancel.png | Bin 2674 -> 1641 bytes .../main/res/drawable-xxhdpi/msg_channel.png | Bin 1683 -> 1719 bytes .../res/drawable-xxhdpi/msg_channel_14.png | Bin 0 -> 2411 bytes .../res/drawable-xxhdpi/msg_channel_hw.png | Bin 0 -> 1549 bytes .../res/drawable-xxhdpi/msg_channel_ny.png | Bin 0 -> 2027 bytes .../res/drawable-xxhdpi/msg_chats_add.png | Bin 0 -> 2127 bytes .../res/drawable-xxhdpi/msg_chats_remove.png | Bin 0 -> 2126 bytes .../main/res/drawable-xxhdpi/msg_check.png | Bin 507 -> 845 bytes .../res/drawable-xxhdpi/msg_check_thick.png | Bin 0 -> 953 bytes .../main/res/drawable-xxhdpi/msg_clear.png | Bin 1423 -> 1629 bytes .../res/drawable-xxhdpi/msg_clear_input.png | Bin 0 -> 1397 bytes .../res/drawable-xxhdpi/msg_clear_recent.png | Bin 0 -> 1893 bytes .../res/drawable-xxhdpi/msg_clearcache.png | Bin 0 -> 1717 bytes .../main/res/drawable-xxhdpi/msg_close.png | Bin 0 -> 644 bytes .../main/res/drawable-xxhdpi/msg_colors.png | Bin 2258 -> 2260 bytes .../res/drawable-xxhdpi/msg_contact_add.png | Bin 0 -> 1420 bytes .../main/res/drawable-xxhdpi/msg_contacts.png | Bin 0 -> 1168 bytes .../res/drawable-xxhdpi/msg_contacts_14.png | Bin 0 -> 2497 bytes .../res/drawable-xxhdpi/msg_contacts_hw.png | Bin 0 -> 2403 bytes .../res/drawable-xxhdpi/msg_contacts_name.png | Bin 0 -> 1013 bytes .../res/drawable-xxhdpi/msg_contacts_ny.png | Bin 0 -> 2131 bytes .../res/drawable-xxhdpi/msg_contacts_time.png | Bin 0 -> 900 bytes .../src/main/res/drawable-xxhdpi/msg_copy.png | Bin 739 -> 1034 bytes .../drawable-xxhdpi/msg_current_location.png | Bin 0 -> 1667 bytes .../src/main/res/drawable-xxhdpi/msg_data.png | Bin 0 -> 1833 bytes .../main/res/drawable-xxhdpi/msg_delete.png | Bin 1288 -> 1306 bytes .../res/drawable-xxhdpi/msg_delete_auto.png | Bin 1834 -> 1853 bytes .../res/drawable-xxhdpi/msg_delete_old.png | Bin 0 -> 1022 bytes .../main/res/drawable-xxhdpi/msg_devices.png | Bin 0 -> 774 bytes .../res/drawable-xxhdpi/msg_discussion.png | Bin 1718 -> 1806 bytes .../main/res/drawable-xxhdpi/msg_download.png | Bin 758 -> 773 bytes .../res/drawable-xxhdpi/msg_draw_arrow.png | Bin 1919 -> 1922 bytes .../res/drawable-xxhdpi/msg_draw_marker.png | Bin 2035 -> 2051 bytes .../res/drawable-xxhdpi/msg_draw_neon.png | Bin 2219 -> 2270 bytes .../main/res/drawable-xxhdpi/msg_draw_pen.png | Bin 2034 -> 2110 bytes .../src/main/res/drawable-xxhdpi/msg_edit.png | Bin 1243 -> 960 bytes .../drawable-xxhdpi/msg_emoji_activities.png | Bin 0 -> 2001 bytes .../res/drawable-xxhdpi/msg_emoji_cat.png | Bin 0 -> 2271 bytes .../res/drawable-xxhdpi/msg_emoji_flags.png | Bin 0 -> 1042 bytes .../res/drawable-xxhdpi/msg_emoji_food.png | Bin 0 -> 1896 bytes .../res/drawable-xxhdpi/msg_emoji_objects.png | Bin 0 -> 1835 bytes .../res/drawable-xxhdpi/msg_emoji_other.png | Bin 0 -> 1635 bytes .../res/drawable-xxhdpi/msg_emoji_premium.png | Bin 0 -> 2104 bytes .../drawable-xxhdpi/msg_emoji_question.png | Bin 0 -> 1959 bytes .../res/drawable-xxhdpi/msg_emoji_recent.png | Bin 0 -> 1691 bytes .../res/drawable-xxhdpi/msg_emoji_smiles.png | Bin 0 -> 1905 bytes .../res/drawable-xxhdpi/msg_emoji_travel.png | Bin 0 -> 1604 bytes .../main/res/drawable-xxhdpi/msg_endcall.png | Bin 1367 -> 1414 bytes .../main/res/drawable-xxhdpi/msg_expand.png | Bin 0 -> 600 bytes .../src/main/res/drawable-xxhdpi/msg_fave.png | Bin 1500 -> 1906 bytes ...mtrl_alpha.png => msg_filled_shareout.png} | Bin .../main/res/drawable-xxhdpi/msg_folder.png | Bin 0 -> 1023 bytes .../drawable-xxhdpi/msg_folder_reorder.png | Bin 0 -> 1093 bytes .../{menu_folders.png => msg_folders.png} | Bin .../drawable-xxhdpi/msg_folders_archive.png | Bin 0 -> 1149 bytes .../res/drawable-xxhdpi/msg_folders_bots.png | Bin 0 -> 1324 bytes .../drawable-xxhdpi/msg_folders_channels.png | Bin 0 -> 1065 bytes .../drawable-xxhdpi/msg_folders_groups.png | Bin 0 -> 1421 bytes .../res/drawable-xxhdpi/msg_folders_muted.png | Bin 0 -> 1691 bytes .../drawable-xxhdpi/msg_folders_private.png | Bin 0 -> 1791 bytes .../res/drawable-xxhdpi/msg_folders_read.png | Bin 0 -> 1611 bytes .../drawable-xxhdpi/msg_folders_requests.png | Bin 0 -> 1632 bytes .../main/res/drawable-xxhdpi/msg_forward.png | Bin 877 -> 855 bytes .../res/drawable-xxhdpi/msg_forward_check.png | Bin 997 -> 959 bytes .../drawable-xxhdpi/msg_forward_replace.png | Bin 2078 -> 1561 bytes .../res/drawable-xxhdpi/msg_forward_send.png | Bin 1834 -> 0 bytes .../main/res/drawable-xxhdpi/msg_gallery.png | Bin 1317 -> 1888 bytes .../src/main/res/drawable-xxhdpi/msg_gif.png | Bin 1432 -> 1544 bytes .../main/res/drawable-xxhdpi/msg_gif_add.png | Bin 0 -> 1734 bytes .../main/res/drawable-xxhdpi/msg_go_down.png | Bin 398 -> 541 bytes .../main/res/drawable-xxhdpi/msg_go_up.png | Bin 390 -> 539 bytes .../main/res/drawable-xxhdpi/msg_groups.png | Bin 0 -> 1554 bytes .../res/drawable-xxhdpi/msg_groups_14.png | Bin 0 -> 2405 bytes .../res/drawable-xxhdpi/msg_groups_create.png | Bin 0 -> 1722 bytes .../res/drawable-xxhdpi/msg_groups_hw.png | Bin 0 -> 2482 bytes .../res/drawable-xxhdpi/msg_groups_ny.png | Bin 0 -> 2387 bytes .../main/res/drawable-xxhdpi/msg_handdown.png | Bin 1873 -> 1694 bytes .../src/main/res/drawable-xxhdpi/msg_help.png | Bin 0 -> 2177 bytes .../main/res/drawable-xxhdpi/msg_help_14.png | Bin 0 -> 2029 bytes .../main/res/drawable-xxhdpi/msg_help_hw.png | Bin 0 -> 2020 bytes .../main/res/drawable-xxhdpi/msg_help_ny.png | Bin 0 -> 1604 bytes .../src/main/res/drawable-xxhdpi/msg_home.png | Bin 995 -> 1312 bytes .../main/res/drawable-xxhdpi/msg_hybrid.png | Bin 1334 -> 1813 bytes .../src/main/res/drawable-xxhdpi/msg_info.png | Bin 0 -> 1745 bytes .../res/drawable-xxhdpi/msg_inputarrow.png | Bin 713 -> 898 bytes .../res/drawable-xxhdpi/msg_instant_link.png | Bin 0 -> 1837 bytes .../main/res/drawable-xxhdpi/msg_invite.png | Bin 0 -> 1273 bytes .../res/drawable-xxhdpi/msg_invite_14.png | Bin 0 -> 2424 bytes .../res/drawable-xxhdpi/msg_invite_hw.png | Bin 0 -> 1979 bytes .../res/drawable-xxhdpi/msg_invite_ny.png | Bin 0 -> 2561 bytes .../main/res/drawable-xxhdpi/msg_invited.png | Bin 1485 -> 1383 bytes .../main/res/drawable-xxhdpi/msg_jobtitle.png | Bin 0 -> 949 bytes .../main/res/drawable-xxhdpi/msg_language.png | Bin 2478 -> 2220 bytes .../main/res/drawable-xxhdpi/msg_leave.png | Bin 820 -> 1017 bytes .../main/res/drawable-xxhdpi/msg_limit_2x.png | Bin 0 -> 1674 bytes .../drawable-xxhdpi/msg_limit_accounts.png | Bin 0 -> 1791 bytes .../res/drawable-xxhdpi/msg_limit_chats.png | Bin 0 -> 1278 bytes .../res/drawable-xxhdpi/msg_limit_folder.png | Bin 0 -> 787 bytes .../res/drawable-xxhdpi/msg_limit_groups.png | Bin 0 -> 1507 bytes .../res/drawable-xxhdpi/msg_limit_links.png | Bin 0 -> 1795 bytes .../res/drawable-xxhdpi/msg_limit_pin.png | Bin 0 -> 1353 bytes .../src/main/res/drawable-xxhdpi/msg_link.png | Bin 1773 -> 1111 bytes .../main/res/drawable-xxhdpi/msg_link2.png | Bin 0 -> 1723 bytes .../src/main/res/drawable-xxhdpi/msg_list.png | Bin 347 -> 416 bytes .../main/res/drawable-xxhdpi/msg_list2.png | Bin 0 -> 549 bytes .../main/res/drawable-xxhdpi/msg_location.png | Bin 965 -> 2257 bytes .../drawable-xxhdpi/msg_location_alert.png | Bin 2347 -> 2290 bytes .../drawable-xxhdpi/msg_location_alert2.png | Bin 1309 -> 1512 bytes .../src/main/res/drawable-xxhdpi/msg_log.png | Bin 0 -> 1087 bytes .../src/main/res/drawable-xxhdpi/msg_map.png | Bin 786 -> 1219 bytes .../main/res/drawable-xxhdpi/msg_map_type.png | Bin 0 -> 1409 bytes .../main/res/drawable-xxhdpi/msg_markread.png | Bin 571 -> 2312 bytes .../res/drawable-xxhdpi/msg_markunread.png | Bin 1003 -> 1946 bytes .../src/main/res/drawable-xxhdpi/msg_mask.png | Bin 1753 -> 2728 bytes .../main/res/drawable-xxhdpi/msg_media.png | Bin 749 -> 1010 bytes .../main/res/drawable-xxhdpi/msg_mention.png | Bin 2065 -> 1910 bytes .../main/res/drawable-xxhdpi/msg_message.png | Bin 1767 -> 1565 bytes .../drawable-xxhdpi/msg_mini_customize.png | Bin 0 -> 774 bytes .../drawable-xxhdpi/msg_mini_premiumlock.png | Bin 0 -> 632 bytes .../main/res/drawable-xxhdpi/msg_minvideo.png | Bin 782 -> 653 bytes .../res/drawable-xxhdpi/msg_msgbubble3.png | Bin 1881 -> 1775 bytes .../src/main/res/drawable-xxhdpi/msg_mute.png | Bin 2300 -> 2193 bytes .../res/drawable-xxhdpi/msg_mute_period.png | Bin 1921 -> 1949 bytes .../main/res/drawable-xxhdpi/msg_nearby.png | Bin 0 -> 2153 bytes .../res/drawable-xxhdpi/msg_nearby_14.png | Bin 0 -> 2341 bytes .../res/drawable-xxhdpi/msg_nearby_hw.png | Bin 0 -> 2141 bytes .../res/drawable-xxhdpi/msg_nearby_ny.png | Bin 0 -> 2211 bytes .../res/drawable-xxhdpi/msg_nearby_off.png | Bin 0 -> 2820 bytes .../res/drawable-xxhdpi/msg_newfilter.png | Bin 0 -> 662 bytes .../main/res/drawable-xxhdpi/msg_newphone.png | Bin 0 -> 1468 bytes .../drawable-xxhdpi/msg_nightmode_system.png | Bin 0 -> 1954 bytes .../res/drawable-xxhdpi/msg_noise_off.png | Bin 2196 -> 2181 bytes .../main/res/drawable-xxhdpi/msg_noise_on.png | Bin 2058 -> 2090 bytes .../res/drawable-xxhdpi/msg_notifications.png | Bin 0 -> 1225 bytes .../main/res/drawable-xxhdpi/msg_openin.png | Bin 713 -> 1089 bytes .../res/drawable-xxhdpi/msg_openprofile.png | Bin 2223 -> 2348 bytes .../{menu_palette.png => msg_palette.png} | Bin .../drawable-xxhdpi/msg_payment_address.png | Bin 0 -> 1792 bytes .../res/drawable-xxhdpi/msg_payment_card.png | Bin 0 -> 710 bytes .../drawable-xxhdpi/msg_payment_delivery.png | Bin 0 -> 1530 bytes .../drawable-xxhdpi/msg_payment_provider.png | Bin 0 -> 1220 bytes .../res/drawable-xxhdpi/msg_permissions.png | Bin 1939 -> 1883 bytes .../res/drawable-xxhdpi/msg_photo_blur.png | Bin 0 -> 1606 bytes .../drawable-xxhdpi/msg_photo_blur_linear.png | Bin 0 -> 777 bytes .../drawable-xxhdpi/msg_photo_blur_off.png | Bin 0 -> 410 bytes .../drawable-xxhdpi/msg_photo_blur_radial.png | Bin 0 -> 1608 bytes .../res/drawable-xxhdpi/msg_photo_brush.png | Bin 0 -> 1542 bytes .../res/drawable-xxhdpi/msg_photo_crop.png | Bin 0 -> 972 bytes .../res/drawable-xxhdpi/msg_photo_cropfix.png | Bin 0 -> 773 bytes .../res/drawable-xxhdpi/msg_photo_curve.png | Bin 0 -> 1421 bytes .../res/drawable-xxhdpi/msg_photo_draw.png | Bin 0 -> 1596 bytes .../res/drawable-xxhdpi/msg_photo_flip.png | Bin 0 -> 978 bytes .../res/drawable-xxhdpi/msg_photo_rotate.png | Bin 0 -> 1532 bytes .../drawable-xxhdpi/msg_photo_settings.png | Bin 0 -> 897 bytes .../res/drawable-xxhdpi/msg_photo_text.png | Bin 0 -> 1118 bytes .../main/res/drawable-xxhdpi/msg_photos.png | Bin 0 -> 1700 bytes .../src/main/res/drawable-xxhdpi/msg_pin.png | Bin 1107 -> 1388 bytes .../res/drawable-xxhdpi/msg_pinnedlist.png | Bin 0 -> 1527 bytes .../main/res/drawable-xxhdpi/msg_played.png | Bin 1944 -> 1924 bytes .../main/res/drawable-xxhdpi/msg_policy.png | Bin 0 -> 2343 bytes .../main/res/drawable-xxhdpi/msg_pollstop.png | Bin 1436 -> 1176 bytes .../res/drawable-xxhdpi/msg_premium_ads.png | Bin 0 -> 1740 bytes .../drawable-xxhdpi/msg_premium_avatar.png | Bin 0 -> 1249 bytes .../res/drawable-xxhdpi/msg_premium_badge.png | Bin 0 -> 1254 bytes .../res/drawable-xxhdpi/msg_premium_icons.png | Bin 0 -> 1304 bytes .../drawable-xxhdpi/msg_premium_limits.png | Bin 0 -> 1432 bytes .../drawable-xxhdpi/msg_premium_liststar.png | Bin 0 -> 845 bytes .../res/drawable-xxhdpi/msg_premium_lock.png | Bin 0 -> 1545 bytes .../res/drawable-xxhdpi/msg_premium_lock2.png | Bin 0 -> 970 bytes .../drawable-xxhdpi/msg_premium_normal.png | Bin 0 -> 1373 bytes .../msg_premium_prolfilestar.png | Bin 0 -> 2358 bytes .../drawable-xxhdpi/msg_premium_reactions.png | Bin 0 -> 1094 bytes .../res/drawable-xxhdpi/msg_premium_speed.png | Bin 0 -> 1550 bytes .../drawable-xxhdpi/msg_premium_stickers.png | Bin 0 -> 1267 bytes .../res/drawable-xxhdpi/msg_premium_tools.png | Bin 0 -> 1200 bytes .../drawable-xxhdpi/msg_premium_uploads.png | Bin 0 -> 880 bytes .../res/drawable-xxhdpi/msg_premium_voice.png | Bin 0 -> 1206 bytes .../src/main/res/drawable-xxhdpi/msg_psa.png | Bin 1878 -> 2053 bytes .../res/drawable-xxhdpi/msg_rate_down.png | Bin 0 -> 1002 bytes .../main/res/drawable-xxhdpi/msg_rate_up.png | Bin 0 -> 916 bytes .../res/drawable-xxhdpi/msg_reactions.png | Bin 1732 -> 1680 bytes .../res/drawable-xxhdpi/msg_reactions2.png | Bin 0 -> 1919 bytes .../main/res/drawable-xxhdpi/msg_recent.png | Bin 0 -> 1620 bytes .../main/res/drawable-xxhdpi/msg_remove.png | Bin 0 -> 1479 bytes .../res/drawable-xxhdpi/msg_removefolder.png | Bin 1287 -> 1298 bytes .../main/res/drawable-xxhdpi/msg_reorder.png | Bin 382 -> 459 bytes .../main/res/drawable-xxhdpi/msg_replace.png | Bin 1490 -> 1333 bytes .../main/res/drawable-xxhdpi/msg_reply.png | Bin 897 -> 820 bytes .../res/drawable-xxhdpi/msg_report_abuse.png | Bin 2128 -> 0 bytes .../res/drawable-xxhdpi/msg_report_fake.png | Bin 2243 -> 2402 bytes .../res/drawable-xxhdpi/msg_report_spam.png | Bin 1307 -> 0 bytes .../drawable-xxhdpi/msg_report_violence.png | Bin 2192 -> 2199 bytes .../main/res/drawable-xxhdpi/msg_requests.png | Bin 0 -> 1463 bytes .../main/res/drawable-xxhdpi/msg_reset.png | Bin 1591 -> 1613 bytes .../res/drawable-xxhdpi/msg_satellite.png | Bin 992 -> 1394 bytes .../main/res/drawable-xxhdpi/msg_saved.png | Bin 0 -> 1052 bytes .../main/res/drawable-xxhdpi/msg_saved_14.png | Bin 0 -> 1871 bytes .../main/res/drawable-xxhdpi/msg_saved_hw.png | Bin 0 -> 2010 bytes .../main/res/drawable-xxhdpi/msg_saved_ny.png | Bin 0 -> 2084 bytes .../res/drawable-xxhdpi/msg_screencast.png | Bin 1390 -> 1256 bytes .../drawable-xxhdpi/msg_screencast_off.png | Bin 2037 -> 2046 bytes .../main/res/drawable-xxhdpi/msg_search.png | Bin 1144 -> 1243 bytes .../main/res/drawable-xxhdpi/msg_secret.png | Bin 0 -> 1211 bytes .../res/drawable-xxhdpi/msg_secret_14.png | Bin 0 -> 2310 bytes .../res/drawable-xxhdpi/msg_secret_hw.png | Bin 0 -> 1669 bytes .../res/drawable-xxhdpi/msg_secret_ny.png | Bin 0 -> 2344 bytes .../src/main/res/drawable-xxhdpi/msg_seen.png | Bin 760 -> 1035 bytes .../main/res/drawable-xxhdpi/msg_select.png | Bin 1768 -> 1849 bytes .../src/main/res/drawable-xxhdpi/msg_send.png | Bin 0 -> 1746 bytes .../main/res/drawable-xxhdpi/msg_sendfile.png | Bin 1006 -> 1205 bytes .../res/drawable-xxhdpi/msg_sendphoto.png | Bin 1509 -> 0 bytes .../main/res/drawable-xxhdpi/msg_settings.png | Bin 0 -> 2677 bytes .../res/drawable-xxhdpi/msg_settings_14.png | Bin 0 -> 2533 bytes .../res/drawable-xxhdpi/msg_settings_hw.png | Bin 0 -> 2988 bytes .../res/drawable-xxhdpi/msg_settings_ny.png | Bin 0 -> 2301 bytes .../res/drawable-xxhdpi/msg_settings_old.png | Bin 0 -> 2423 bytes .../drawable-xxhdpi/msg_settings_premium.png | Bin 0 -> 1612 bytes .../main/res/drawable-xxhdpi/msg_share.png | Bin 1557 -> 1620 bytes .../main/res/drawable-xxhdpi/msg_shareout.png | Bin 996 -> 1238 bytes .../main/res/drawable-xxhdpi/msg_speed.png | Bin 1463 -> 1497 bytes .../res/drawable-xxhdpi/msg_start_secret.png | Bin 1134 -> 0 bytes .../main/res/drawable-xxhdpi/msg_stats.png | Bin 950 -> 1091 bytes .../main/res/drawable-xxhdpi/msg_sticker.png | Bin 2187 -> 1973 bytes .../main/res/drawable-xxhdpi/msg_switch.png | Bin 0 -> 826 bytes .../main/res/drawable-xxhdpi/msg_theme.png | Bin 2374 -> 2004 bytes .../main/res/drawable-xxhdpi/msg_timer.png | Bin 1396 -> 1945 bytes .../main/res/drawable-xxhdpi/msg_timer_1h.png | Bin 0 -> 2621 bytes .../res/drawable-xxhdpi/msg_timeredit.png | Bin 2185 -> 2112 bytes .../main/res/drawable-xxhdpi/msg_tone_add.png | Bin 1909 -> 1910 bytes .../main/res/drawable-xxhdpi/msg_tone_off.png | Bin 2341 -> 2349 bytes .../main/res/drawable-xxhdpi/msg_tone_on.png | Bin 1609 -> 1592 bytes .../main/res/drawable-xxhdpi/msg_trending.png | Bin 0 -> 2598 bytes .../res/drawable-xxhdpi/msg_unarchive.png | Bin 1328 -> 1387 bytes .../main/res/drawable-xxhdpi/msg_unfave.png | Bin 1884 -> 2545 bytes .../main/res/drawable-xxhdpi/msg_unmute.png | Bin 1942 -> 1883 bytes .../main/res/drawable-xxhdpi/msg_unpin.png | Bin 1137 -> 1462 bytes .../main/res/drawable-xxhdpi/msg_unvote.png | Bin 1698 -> 1646 bytes .../res/drawable-xxhdpi/msg_user_remove.png | Bin 0 -> 1687 bytes .../res/drawable-xxhdpi/msg_user_search.png | Bin 0 -> 1489 bytes .../main/res/drawable-xxhdpi/msg_video.png | Bin 1252 -> 1676 bytes .../res/drawable-xxhdpi/msg_viewreplies.png | Bin 1218 -> 1456 bytes .../drawable-xxhdpi/msg_voice_headphones.png | Bin 1492 -> 1594 bytes .../res/drawable-xxhdpi/msg_voicechat.png | Bin 1351 -> 1375 bytes .../src/main/res/drawable-xxhdpi/msg_work.png | Bin 0 -> 1306 bytes .../main/res/drawable-xxhdpi/msg_zoomin.png | Bin 1442 -> 1496 bytes .../main/res/drawable-xxhdpi/msg_zoomout.png | Bin 1395 -> 1437 bytes .../res/drawable-xxhdpi/msg_zoomout_stats.png | Bin 0 -> 1205 bytes .../src/main/res/drawable-xxhdpi/no_apps.png | Bin 3573 -> 0 bytes .../res/drawable-xxhdpi/other_2x_large.png | Bin 0 -> 2643 bytes .../drawable-xxhdpi/other_lockedfolders.png | Bin 0 -> 485 bytes .../drawable-xxhdpi/other_lockedfolders2.png | Bin 0 -> 548 bytes .../res/drawable-xxhdpi/outline_add_gif.png | Bin 1579 -> 0 bytes .../main/res/drawable-xxhdpi/outline_fave.png | Bin 1602 -> 0 bytes .../main/res/drawable-xxhdpi/outline_pack.png | Bin 751 -> 0 bytes .../main/res/drawable-xxhdpi/outline_send.png | Bin 1468 -> 0 bytes .../res/drawable-xxhdpi/outline_unfave.png | Bin 2051 -> 0 bytes .../res/drawable-xxhdpi/payment_address.png | Bin 1855 -> 0 bytes .../main/res/drawable-xxhdpi/payment_card.png | Bin 692 -> 0 bytes .../res/drawable-xxhdpi/payment_delivery.png | Bin 1544 -> 0 bytes .../res/drawable-xxhdpi/payment_email.png | Bin 2144 -> 0 bytes .../main/res/drawable-xxhdpi/payment_name.png | Bin 1231 -> 0 bytes .../res/drawable-xxhdpi/payment_phone.png | Bin 1438 -> 0 bytes .../res/drawable-xxhdpi/payment_provider.png | Bin 1250 -> 0 bytes .../main/res/drawable-xxhdpi/photo_crop.png | Bin 755 -> 0 bytes .../main/res/drawable-xxhdpi/photo_flip.png | Bin 259 -> 0 bytes .../main/res/drawable-xxhdpi/photo_paint.png | Bin 1400 -> 0 bytes .../res/drawable-xxhdpi/photo_paint_text.png | Bin 936 -> 0 bytes .../res/drawable-xxhdpi/photo_sticker.png | Bin 1704 -> 0 bytes .../main/res/drawable-xxhdpi/photo_timer.png | Bin 1590 -> 0 bytes .../main/res/drawable-xxhdpi/photo_tools.png | Bin 701 -> 0 bytes .../src/main/res/drawable-xxhdpi/place_x.png | Bin 312 -> 0 bytes .../main/res/drawable-xxhdpi/preview_open.png | Bin 521 -> 0 bytes .../res/drawable-xxhdpi/profile_admin.png | Bin 1088 -> 0 bytes .../res/drawable-xxhdpi/profile_audio.png | Bin 691 -> 0 bytes .../main/res/drawable-xxhdpi/profile_ban.png | Bin 976 -> 0 bytes .../main/res/drawable-xxhdpi/profile_file.png | Bin 477 -> 0 bytes .../main/res/drawable-xxhdpi/profile_info.png | Bin 983 -> 0 bytes .../main/res/drawable-xxhdpi/profile_link.png | Bin 637 -> 0 bytes .../res/drawable-xxhdpi/profile_photos.png | Bin 627 -> 0 bytes .../res/drawable-xxhdpi/profile_voice.png | Bin 748 -> 0 bytes .../main/res/drawable-xxhdpi/search_date.png | Bin 687 -> 0 bytes .../main/res/drawable-xxhdpi/search_files.png | Bin 967 -> 0 bytes .../main/res/drawable-xxhdpi/search_gif.png | Bin 1225 -> 0 bytes .../main/res/drawable-xxhdpi/search_links.png | Bin 1345 -> 0 bytes .../main/res/drawable-xxhdpi/search_media.png | Bin 1181 -> 0 bytes .../main/res/drawable-xxhdpi/search_music.png | Bin 1165 -> 0 bytes .../main/res/drawable-xxhdpi/search_users.png | Bin 1070 -> 0 bytes .../main/res/drawable-xxhdpi/search_voice.png | Bin 1148 -> 0 bytes .../main/res/drawable-xxhdpi/search_web.png | Bin 1257 -> 0 bytes .../src/main/res/drawable-xxhdpi/sim_new.png | Bin 6396 -> 0 bytes .../src/main/res/drawable-xxhdpi/sim_old.png | Bin 5495 -> 0 bytes .../smiles_panel_activities.png | Bin 1203 -> 0 bytes .../res/drawable-xxhdpi/smiles_panel_cat.png | Bin 1457 -> 0 bytes .../drawable-xxhdpi/smiles_panel_flags.png | Bin 456 -> 0 bytes .../res/drawable-xxhdpi/smiles_panel_food.png | Bin 1195 -> 0 bytes .../drawable-xxhdpi/smiles_panel_objects.png | Bin 1082 -> 0 bytes .../drawable-xxhdpi/smiles_panel_other.png | Bin 674 -> 0 bytes .../drawable-xxhdpi/smiles_panel_question.png | Bin 1032 -> 0 bytes .../drawable-xxhdpi/smiles_panel_recent.png | Bin 915 -> 0 bytes .../drawable-xxhdpi/smiles_panel_smiles.png | Bin 1566 -> 0 bytes .../drawable-xxhdpi/smiles_panel_travel.png | Bin 947 -> 0 bytes .../drawable-xxhdpi/smiles_panel_trending.png | Bin 1519 -> 0 bytes .../main/res/drawable-xxhdpi/stats_zoom.png | Bin 1122 -> 0 bytes .../res/drawable-xxhdpi/stickersclose.png | Bin 452 -> 0 bytes .../res/drawable-xxhdpi/stickerset_close.png | Bin 269 -> 0 bytes .../res/drawable-xxhdpi/temp_starlarge.png | Bin 0 -> 9526 bytes .../res/drawable-xxhdpi/themes_addcolor.png | Bin 603 -> 0 bytes .../drawable-xxhdpi/themes_deletecolor.png | Bin 724 -> 0 bytes .../res/drawable-xxhdpi/themes_swapcolor.png | Bin 991 -> 0 bytes .../src/main/res/drawable-xxhdpi/tip1.png | Bin 71292 -> 0 bytes .../src/main/res/drawable-xxhdpi/tip2.png | Bin 15067 -> 0 bytes .../src/main/res/drawable-xxhdpi/tip3.png | Bin 39766 -> 0 bytes .../src/main/res/drawable-xxhdpi/tip4.png | Bin 31120 -> 0 bytes .../src/main/res/drawable-xxhdpi/tip5.png | Bin 25450 -> 0 bytes .../main/res/drawable-xxhdpi/toast_folder.png | Bin 1043 -> 0 bytes .../drawable-xxhdpi/toast_folder_minus.png | Bin 819 -> 0 bytes .../main/res/drawable-xxhdpi/tool_blur.png | Bin 1518 -> 0 bytes .../main/res/drawable-xxhdpi/tool_cropfix.png | Bin 696 -> 0 bytes .../main/res/drawable-xxhdpi/tool_curve.png | Bin 1334 -> 0 bytes .../main/res/drawable-xxhdpi/tool_rotate.png | Bin 1342 -> 0 bytes .../src/main/res/drawable-xxhdpi/update.png | Bin 1310 -> 0 bytes .../main/res/drawable-xxhdpi/video_copy.png | Bin 249 -> 0 bytes .../res/drawable-xxhdpi/video_mini_arrow.png | Bin 221 -> 0 bytes .../res/drawable-xxhdpi/video_mini_cancel.png | Bin 360 -> 0 bytes .../main/res/drawable-xxhdpi/video_pip.png | Bin 215 -> 0 bytes .../res/drawable-xxhdpi/voice_muted_large.png | Bin 3045 -> 0 bytes .../drawable-xxhdpi/voice_unmuted_large.png | Bin 2314 -> 0 bytes .../main/res/drawable-xxhdpi/volume_off.png | Bin 1870 -> 0 bytes .../main/res/drawable-xxhdpi/volume_on.png | Bin 2033 -> 0 bytes .../main/res/drawable-xxhdpi/wallet_clear.png | Bin 1916 -> 0 bytes .../drawable-xxhdpi/wallet_fingerprint.png | Bin 6018 -> 0 bytes .../main/res/drawable-xxhdpi/wallet_qr.png | Bin 1091 -> 0 bytes .../res/drawable-xxhdpi/wallet_receive.png | Bin 547 -> 0 bytes .../main/res/drawable-xxhdpi/wallet_send.png | Bin 559 -> 0 bytes .../drawable-xxxhdpi/icon_2_background_sa.png | Bin 0 -> 149951 bytes .../drawable-xxxhdpi/icon_3_background_sa.png | Bin 0 -> 57100 bytes .../drawable-xxxhdpi/icon_4_background_sa.png | Bin 0 -> 136950 bytes .../drawable-xxxhdpi/icon_5_background_sa.png | Bin 0 -> 139396 bytes .../drawable-xxxhdpi/icon_6_background_sa.png | Bin 0 -> 33814 bytes .../drawable-xxxhdpi/icon_background_clip.png | Bin 0 -> 9831 bytes .../icon_background_clip_round.png | Bin 0 -> 10059 bytes .../icon_background_sa.png | Bin .../main/res/drawable/icon_2_background.xml | 9 + .../res/drawable/icon_2_background_round.xml | 9 + .../main/res/drawable/icon_3_background.xml | 9 + .../res/drawable/icon_3_background_round.xml | 9 + .../main/res/drawable/icon_4_background.xml | 9 + .../res/drawable/icon_4_background_round.xml | 9 + .../main/res/drawable/icon_5_background.xml | 9 + .../res/drawable/icon_5_background_round.xml | 9 + .../main/res/drawable/icon_6_background.xml | 9 + .../res/drawable/icon_6_background_round.xml | 9 + .../src/main/res/drawable/icon_background.xml | 9 + .../res/drawable/icon_background_round.xml | 9 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 2 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 2 +- .../res/mipmap-anydpi-v26/ic_launcher_sa.xml | 2 +- .../res/mipmap-anydpi-v26/icon_2_launcher.xml | 5 + .../icon_2_launcher_round.xml | 5 + .../mipmap-anydpi-v26/icon_2_launcher_sa.xml | 5 + .../res/mipmap-anydpi-v26/icon_3_launcher.xml | 5 + .../icon_3_launcher_round.xml | 5 + .../mipmap-anydpi-v26/icon_3_launcher_sa.xml | 5 + .../res/mipmap-anydpi-v26/icon_4_launcher.xml | 5 + .../icon_4_launcher_round.xml | 5 + .../mipmap-anydpi-v26/icon_4_launcher_sa.xml | 5 + .../res/mipmap-anydpi-v26/icon_5_launcher.xml | 5 + .../icon_5_launcher_round.xml | 5 + .../mipmap-anydpi-v26/icon_5_launcher_sa.xml | 5 + .../res/mipmap-anydpi-v26/icon_6_launcher.xml | 5 + .../icon_6_launcher_round.xml | 5 + .../mipmap-anydpi-v26/icon_6_launcher_sa.xml | 5 + .../main/res/mipmap-hdpi/icon_2_launcher.png | Bin 0 -> 7478 bytes .../res/mipmap-hdpi/icon_2_launcher_round.png | Bin 0 -> 7478 bytes .../res/mipmap-hdpi/icon_2_launcher_sa.png | Bin 0 -> 6882 bytes .../res/mipmap-hdpi/icon_3_foreground.png | Bin 0 -> 1823 bytes .../mipmap-hdpi/icon_3_foreground_round.png | Bin 0 -> 1867 bytes .../res/mipmap-hdpi/icon_3_foreground_sa.png | Bin 0 -> 1928 bytes .../main/res/mipmap-hdpi/icon_3_launcher.png | Bin 0 -> 6704 bytes .../res/mipmap-hdpi/icon_3_launcher_round.png | Bin 0 -> 6741 bytes .../res/mipmap-hdpi/icon_3_launcher_sa.png | Bin 0 -> 6128 bytes .../main/res/mipmap-hdpi/icon_4_launcher.png | Bin 0 -> 7088 bytes .../res/mipmap-hdpi/icon_4_launcher_round.png | Bin 0 -> 7088 bytes .../res/mipmap-hdpi/icon_4_launcher_sa.png | Bin 0 -> 6392 bytes .../res/mipmap-hdpi/icon_5_foreground.png | Bin 0 -> 1961 bytes .../mipmap-hdpi/icon_5_foreground_round.png | Bin 0 -> 2048 bytes .../res/mipmap-hdpi/icon_5_foreground_sa.png | Bin 0 -> 2048 bytes .../main/res/mipmap-hdpi/icon_5_launcher.png | Bin 0 -> 7138 bytes .../res/mipmap-hdpi/icon_5_launcher_round.png | Bin 0 -> 7134 bytes .../res/mipmap-hdpi/icon_5_launcher_sa.png | Bin 0 -> 6724 bytes .../res/mipmap-hdpi/icon_6_foreground.png | Bin 0 -> 2272 bytes .../mipmap-hdpi/icon_6_foreground_round.png | Bin 0 -> 2412 bytes .../res/mipmap-hdpi/icon_6_foreground_sa.png | Bin 0 -> 2365 bytes .../main/res/mipmap-hdpi/icon_6_launcher.png | Bin 0 -> 6269 bytes .../res/mipmap-hdpi/icon_6_launcher_round.png | Bin 0 -> 6269 bytes .../res/mipmap-hdpi/icon_6_launcher_sa.png | Bin 0 -> 5518 bytes .../main/res/mipmap-hdpi/icon_background.png | Bin 6992 -> 0 bytes .../res/mipmap-hdpi/icon_background_round.png | Bin 7884 -> 0 bytes .../main/res/mipmap-mdpi/icon_2_launcher.png | Bin 0 -> 3910 bytes .../res/mipmap-mdpi/icon_2_launcher_round.png | Bin 0 -> 3910 bytes .../res/mipmap-mdpi/icon_2_launcher_sa.png | Bin 0 -> 3304 bytes .../res/mipmap-mdpi/icon_3_foreground.png | Bin 0 -> 1074 bytes .../mipmap-mdpi/icon_3_foreground_round.png | Bin 0 -> 1176 bytes .../res/mipmap-mdpi/icon_3_foreground_sa.png | Bin 0 -> 1182 bytes .../main/res/mipmap-mdpi/icon_3_launcher.png | Bin 0 -> 3927 bytes .../res/mipmap-mdpi/icon_3_launcher_round.png | Bin 0 -> 3903 bytes .../res/mipmap-mdpi/icon_3_launcher_sa.png | Bin 0 -> 3506 bytes .../main/res/mipmap-mdpi/icon_4_launcher.png | Bin 0 -> 4056 bytes .../res/mipmap-mdpi/icon_4_launcher_round.png | Bin 0 -> 4056 bytes .../res/mipmap-mdpi/icon_4_launcher_sa.png | Bin 0 -> 3507 bytes .../res/mipmap-mdpi/icon_5_foreground.png | Bin 0 -> 1211 bytes .../mipmap-mdpi/icon_5_foreground_round.png | Bin 0 -> 1261 bytes .../res/mipmap-mdpi/icon_5_foreground_sa.png | Bin 0 -> 1261 bytes .../main/res/mipmap-mdpi/icon_5_launcher.png | Bin 0 -> 4032 bytes .../res/mipmap-mdpi/icon_5_launcher_round.png | Bin 0 -> 4048 bytes .../res/mipmap-mdpi/icon_5_launcher_sa.png | Bin 0 -> 3708 bytes .../res/mipmap-mdpi/icon_6_foreground.png | Bin 0 -> 1402 bytes .../mipmap-mdpi/icon_6_foreground_round.png | Bin 0 -> 1519 bytes .../res/mipmap-mdpi/icon_6_foreground_sa.png | Bin 0 -> 1519 bytes .../main/res/mipmap-mdpi/icon_6_launcher.png | Bin 0 -> 3714 bytes .../res/mipmap-mdpi/icon_6_launcher_round.png | Bin 0 -> 3714 bytes .../res/mipmap-mdpi/icon_6_launcher_sa.png | Bin 0 -> 3154 bytes .../main/res/mipmap-mdpi/icon_background.png | Bin 3847 -> 0 bytes .../res/mipmap-mdpi/icon_background_round.png | Bin 4343 -> 0 bytes .../main/res/mipmap-xhdpi/icon_2_launcher.png | Bin 0 -> 11746 bytes .../mipmap-xhdpi/icon_2_launcher_round.png | Bin 0 -> 11746 bytes .../res/mipmap-xhdpi/icon_2_launcher_sa.png | Bin 0 -> 10574 bytes .../res/mipmap-xhdpi/icon_3_foreground.png | Bin 0 -> 2718 bytes .../mipmap-xhdpi/icon_3_foreground_round.png | Bin 0 -> 2851 bytes .../res/mipmap-xhdpi/icon_3_foreground_sa.png | Bin 0 -> 2807 bytes .../main/res/mipmap-xhdpi/icon_3_launcher.png | Bin 0 -> 9976 bytes .../mipmap-xhdpi/icon_3_launcher_round.png | Bin 0 -> 9964 bytes .../res/mipmap-xhdpi/icon_3_launcher_sa.png | Bin 0 -> 8944 bytes .../main/res/mipmap-xhdpi/icon_4_launcher.png | Bin 0 -> 11030 bytes .../mipmap-xhdpi/icon_4_launcher_round.png | Bin 0 -> 11030 bytes .../res/mipmap-xhdpi/icon_4_launcher_sa.png | Bin 0 -> 9841 bytes .../res/mipmap-xhdpi/icon_5_foreground.png | Bin 0 -> 2832 bytes .../mipmap-xhdpi/icon_5_foreground_round.png | Bin 0 -> 2920 bytes .../res/mipmap-xhdpi/icon_5_foreground_sa.png | Bin 0 -> 2920 bytes .../main/res/mipmap-xhdpi/icon_5_launcher.png | Bin 0 -> 11034 bytes .../mipmap-xhdpi/icon_5_launcher_round.png | Bin 0 -> 11031 bytes .../res/mipmap-xhdpi/icon_5_launcher_sa.png | Bin 0 -> 10434 bytes .../res/mipmap-xhdpi/icon_6_foreground.png | Bin 0 -> 3319 bytes .../mipmap-xhdpi/icon_6_foreground_round.png | Bin 0 -> 3461 bytes .../res/mipmap-xhdpi/icon_6_foreground_sa.png | Bin 0 -> 3465 bytes .../main/res/mipmap-xhdpi/icon_6_launcher.png | Bin 0 -> 9510 bytes .../mipmap-xhdpi/icon_6_launcher_round.png | Bin 0 -> 9510 bytes .../res/mipmap-xhdpi/icon_6_launcher_sa.png | Bin 0 -> 8231 bytes .../main/res/mipmap-xhdpi/icon_background.png | Bin 10703 -> 0 bytes .../mipmap-xhdpi/icon_background_round.png | Bin 11410 -> 0 bytes .../res/mipmap-xxhdpi/icon_2_launcher.png | Bin 0 -> 21531 bytes .../mipmap-xxhdpi/icon_2_launcher_round.png | Bin 0 -> 21531 bytes .../res/mipmap-xxhdpi/icon_2_launcher_sa.png | Bin 0 -> 20585 bytes .../res/mipmap-xxhdpi/icon_3_foreground.png | Bin 0 -> 4571 bytes .../mipmap-xxhdpi/icon_3_foreground_round.png | Bin 0 -> 4793 bytes .../mipmap-xxhdpi/icon_3_foreground_sa.png | Bin 0 -> 4793 bytes .../res/mipmap-xxhdpi/icon_3_launcher.png | Bin 0 -> 16555 bytes .../mipmap-xxhdpi/icon_3_launcher_round.png | Bin 0 -> 16621 bytes .../res/mipmap-xxhdpi/icon_3_launcher_sa.png | Bin 0 -> 15487 bytes .../res/mipmap-xxhdpi/icon_4_launcher.png | Bin 0 -> 19539 bytes .../mipmap-xxhdpi/icon_4_launcher_round.png | Bin 0 -> 19539 bytes .../res/mipmap-xxhdpi/icon_4_launcher_sa.png | Bin 0 -> 18106 bytes .../res/mipmap-xxhdpi/icon_5_foreground.png | Bin 0 -> 4978 bytes .../mipmap-xxhdpi/icon_5_foreground_round.png | Bin 0 -> 5345 bytes .../mipmap-xxhdpi/icon_5_foreground_sa.png | Bin 0 -> 5345 bytes .../res/mipmap-xxhdpi/icon_5_launcher.png | Bin 0 -> 19973 bytes .../mipmap-xxhdpi/icon_5_launcher_round.png | Bin 0 -> 19930 bytes .../res/mipmap-xxhdpi/icon_5_launcher_sa.png | Bin 0 -> 19343 bytes .../res/mipmap-xxhdpi/icon_6_foreground.png | Bin 0 -> 5626 bytes .../mipmap-xxhdpi/icon_6_foreground_round.png | Bin 0 -> 5859 bytes .../mipmap-xxhdpi/icon_6_foreground_sa.png | Bin 0 -> 5818 bytes .../res/mipmap-xxhdpi/icon_6_launcher.png | Bin 0 -> 16384 bytes .../mipmap-xxhdpi/icon_6_launcher_round.png | Bin 0 -> 16384 bytes .../res/mipmap-xxhdpi/icon_6_launcher_sa.png | Bin 0 -> 14797 bytes .../res/mipmap-xxhdpi/icon_background.png | Bin 18427 -> 0 bytes .../mipmap-xxhdpi/icon_background_round.png | Bin 19930 -> 0 bytes .../res/mipmap-xxxhdpi/icon_2_launcher.png | Bin 0 -> 33659 bytes .../mipmap-xxxhdpi/icon_2_launcher_round.png | Bin 0 -> 33659 bytes .../res/mipmap-xxxhdpi/icon_2_launcher_sa.png | Bin 0 -> 33203 bytes .../res/mipmap-xxxhdpi/icon_3_foreground.png | Bin 0 -> 6942 bytes .../icon_3_foreground_round.png | Bin 0 -> 7395 bytes .../mipmap-xxxhdpi/icon_3_foreground_sa.png | Bin 0 -> 7343 bytes .../res/mipmap-xxxhdpi/icon_3_launcher.png | Bin 0 -> 24882 bytes .../mipmap-xxxhdpi/icon_3_launcher_round.png | Bin 0 -> 24837 bytes .../res/mipmap-xxxhdpi/icon_3_launcher_sa.png | Bin 0 -> 23469 bytes .../res/mipmap-xxxhdpi/icon_4_launcher.png | Bin 0 -> 31064 bytes .../mipmap-xxxhdpi/icon_4_launcher_round.png | Bin 0 -> 31064 bytes .../res/mipmap-xxxhdpi/icon_4_launcher_sa.png | Bin 0 -> 30062 bytes .../res/mipmap-xxxhdpi/icon_5_foreground.png | Bin 0 -> 7698 bytes .../icon_5_foreground_round.png | Bin 0 -> 8095 bytes .../mipmap-xxxhdpi/icon_5_foreground_sa.png | Bin 0 -> 8095 bytes .../res/mipmap-xxxhdpi/icon_5_launcher.png | Bin 0 -> 30448 bytes .../mipmap-xxxhdpi/icon_5_launcher_round.png | Bin 0 -> 30441 bytes .../res/mipmap-xxxhdpi/icon_5_launcher_sa.png | Bin 0 -> 30314 bytes .../res/mipmap-xxxhdpi/icon_6_foreground.png | Bin 0 -> 8285 bytes .../icon_6_foreground_round.png | Bin 0 -> 8430 bytes .../mipmap-xxxhdpi/icon_6_foreground_sa.png | Bin 0 -> 8457 bytes .../res/mipmap-xxxhdpi/icon_6_launcher.png | Bin 0 -> 23855 bytes .../mipmap-xxxhdpi/icon_6_launcher_round.png | Bin 0 -> 23855 bytes .../res/mipmap-xxxhdpi/icon_6_launcher_sa.png | Bin 0 -> 21086 bytes .../res/mipmap-xxxhdpi/icon_background.png | Bin 27164 -> 0 bytes .../mipmap-xxxhdpi/icon_background_round.png | Bin 30235 -> 0 bytes .../src/main/res/raw/addone_icon.json | 1 + .../src/main/res/raw/dots_loading.json | 848 +++++ .../src/main/res/raw/double_icon.json | 1 + .../main/res/raw/premium_object_adsbubble.svg | 7 + .../main/res/raw/premium_object_bubble.svg | 7 + .../main/res/raw/premium_object_folder.svg | 7 + .../src/main/res/raw/premium_object_like.svg | 7 + .../src/main/res/raw/premium_object_noads.svg | 7 + .../main/res/raw/premium_object_settings.svg | 7 + .../src/main/res/raw/premium_object_user.svg | 7 + .../src/main/res/raw/premium_object_video.svg | 7 + .../main/res/raw/premium_object_video2.svg | 7 + .../src/main/res/raw/star_loader.svg | 6 + .../src/main/res/raw/transcribe_in.json | 1 + .../src/main/res/raw/transcribe_out.json | 1 + .../src/main/res/raw/unlock_icon.json | 1 + .../src/main/res/raw/utyan_saved_messages.tgs | 1 + .../src/main/res/values-ar/strings.xml | 1 - .../src/main/res/values-de/strings.xml | 1 - .../src/main/res/values-es/strings.xml | 1 - .../src/main/res/values-it/strings.xml | 1 - .../src/main/res/values-ko/strings.xml | 1 - .../src/main/res/values-nl/strings.xml | 1 - .../src/main/res/values-pt-rBR/strings.xml | 1 - TMessagesProj/src/main/res/values/ids.xml | 3 + TMessagesProj/src/main/res/values/strings.xml | 238 +- 2710 files changed, 40357 insertions(+), 11958 deletions(-) create mode 100644 TMessagesProj/src/main/assets/flecks.png create mode 100644 TMessagesProj/src/main/assets/fonts/courier_new_bold.ttf create mode 100644 TMessagesProj/src/main/assets/models/star.binobj create mode 100644 TMessagesProj/src/main/assets/shaders/fragment2.glsl create mode 100644 TMessagesProj/src/main/assets/shaders/vertex2.glsl create mode 100644 TMessagesProj/src/main/java/org/telegram/messenger/BillingController.java create mode 100644 TMessagesProj/src/main/java/org/telegram/messenger/BotWebViewVibrationEffect.java create mode 100644 TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueueMainThreadSync.java create mode 100644 TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueuePoolMainThreadSync.java create mode 100644 TMessagesProj/src/main/java/org/telegram/messenger/FilePathDatabase.java create mode 100644 TMessagesProj/src/main/java/org/telegram/messenger/MessageCustomParamsHelper.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Adapters/PaddedListAdapter.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/AppIconsSelectorCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/FixedHeightEmptyCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/RecurrentPaymentsAcceptCell.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/ChangePhoneActivity.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFloat.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedTextView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/AppIconBulletinLayout.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/BottomSheetWithRecyclerListView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/JoinToSendSettingsView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/MentionsContainerView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/OverlayActionBarLayoutDialog.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/PipVideoView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/AboutPremiumView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/CarouselView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/DoubledLimitsBottomSheet.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/GLIconRenderer.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/GLIconTextureView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/ObjLoader.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/Star3DIcon.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitPreviewView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitReachedBottomSheet.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/MatrixParticlesDrawable.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PagerHeaderView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumAppIconsPreviewView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumButtonView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumFeatureBottomSheet.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumGradient.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumLockIconView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumNotAvailableBottomSheet.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumPreviewBottomSheet.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumStickersPreviewRecycler.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/ProfilePremiumCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/ReactionDrawingObject.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/SpeedLineParticles.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/StarParticlesView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/VideoScreenPreview.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/TranscribeButton.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/TranslateAlert2.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/GLIconSettingsView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/KeyboardHideHelper.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/LauncherIconController.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/PremiumFeatureCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/PremiumPreviewFragment.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/UnlockPremiumView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/vibroslider.java delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/account_add.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actionbtn_next.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_addadmin.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_addchat.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_addmember2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_link.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_nearby_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_nearby_on.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_permissions.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_reactions.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_remove_user.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_removed.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_setphoto.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/actions_viewmembers.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/add_admin.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/add_contact_new.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/audio_mini_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/audio_mini_cancel.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/audiosend_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/audiosend_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/brightness_high.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/brightness_low.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/broadcast3.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/broadcast_w.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/chats_delete.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/chats_leave.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/contacts_sort_name.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/contacts_sort_time.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/devices.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/doc_big.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/edit_cancel.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/emoji_tabs_premium.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/floating_camera.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/floating_message.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/folders_archive.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/folders_bot.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/folders_channel.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/folders_group.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/folders_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/folders_private.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/folders_read.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/folders_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/forwardvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/gem.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/gem_s.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/group_addmember.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/group_admin.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/group_admin_new.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/group_ban_new.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/group_banned.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/group_log.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_copy.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_delete.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_fave.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_unfave.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_bluetooth_white_24dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_done.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/icon_2_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/icon_3_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/icon_4_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/icon_5_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/icon_6_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/icon_background_clip.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/icon_background_clip_round.png rename TMessagesProj/src/main/res/{mipmap-hdpi => drawable-hdpi}/icon_background_sa.png (100%) delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/instant_link.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/list_bot.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/list_broadcast.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/list_group.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/location_current.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/location_type.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/lock_open.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/log_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_add.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_bookmarks_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_bookmarks_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_bookmarks_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_bots.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_broadcast.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_broadcast_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_broadcast_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_calls.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_calls_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_calls_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_calls_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_camera.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_camera2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_camera_av.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_channel_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_chats.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_clear.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_clear_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_clearcache.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_contacts.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_contacts_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_contacts_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_contacts_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_data.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_date.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_expand.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_groups.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_groups_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_groups_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_groups_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_help.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_help_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_help_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_invite.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_invite_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_invite_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_jobtitle.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_language.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_location.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_mail.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_nearby.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_nearby_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_newfilter.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_newphone.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_night.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_notifications.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_passcode.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_pinnedlist.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_policy.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_private.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_read.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_saved.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_search.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_secret.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_secret_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_secret_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_secret_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_settings.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_settings_14.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/menu_settings_filled.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_settings_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_settings_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_support.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_support2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_switch.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_unread.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_wallet.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_wallet_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/menu_work.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_add.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_all.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_base.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_text.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_admin_add.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_admins.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_archived_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_arrow_forward.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_ask_question.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_bell_mute.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_bell_unmute.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_bio.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_bluetooth.png rename TMessagesProj/src/main/res/drawable-hdpi/{blur_linear.png => msg_blur_linear.png} (100%) rename TMessagesProj/src/main/res/drawable-hdpi/{blur_off.png => msg_blur_off.png} (100%) rename TMessagesProj/src/main/res/drawable-hdpi/{blur_radial.png => msg_blur_radial.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_bots.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_brightness_high.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_brightness_low.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_calls.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_calls_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_calls_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_calls_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_camera.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_channel_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_channel_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_channel_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_chats_add.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_chats_remove.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_check_thick.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_clear_input.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_clear_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_clearcache.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_close.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_contact_add.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_contacts.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_name.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_time.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_current_location.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_data.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_delete_old.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_devices.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_activities.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_cat.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_flags.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_food.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_objects.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_other.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_premium.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_question.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_smiles.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_travel.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_expand.png rename TMessagesProj/src/main/res/drawable-hdpi/{abc_ic_menu_share_mtrl_alpha.png => msg_filled_shareout.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folder_reorder.png rename TMessagesProj/src/main/res/drawable-hdpi/{menu_folders.png => msg_folders.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folders_archive.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folders_bots.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folders_channels.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folders_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folders_muted.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folders_private.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folders_read.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folders_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_forward_send.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_gif_add.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_groups_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_groups_create.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_groups_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_groups_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_help.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_help_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_help_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_help_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_info.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_instant_link.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_invite.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_invite_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_invite_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_invite_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_jobtitle.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_limit_2x.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_limit_accounts.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_limit_chats.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_limit_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_limit_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_limit_links.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_limit_pin.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_link2.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_list2.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_log.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_map_type.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_mini_customize.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_mini_premiumlock.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_nearby.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_off.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_newfilter.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_newphone.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_nightmode_system.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_notifications.png rename TMessagesProj/src/main/res/drawable-hdpi/{menu_palette.png => msg_palette.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_payment_address.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_payment_card.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_payment_delivery.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_payment_provider.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_linear.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_off.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_radial.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_brush.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_crop.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_cropfix.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_curve.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_draw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_flip.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_rotate.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_settings.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_text.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photos.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_pinnedlist.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_policy.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_ads.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_avatar.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_badge.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_icons.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_limits.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_liststar.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_lock.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_lock2.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_normal.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_prolfilestar.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_reactions.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_speed.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_tools.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_uploads.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_voice.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_rate_down.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_rate_up.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_reactions2.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_remove.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_report_abuse.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_report_spam.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_requests.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_saved.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_saved_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_saved_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_saved_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_secret_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_secret_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_secret_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_sendphoto.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_settings.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_settings_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_settings_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_settings_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_settings_old.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_settings_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_start_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_switch.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_timer_1h.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_trending.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_user_remove.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_user_search.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_work.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_zoomout_stats.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/no_apps.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/other_2x_large.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/other_lockedfolders.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/other_lockedfolders2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/outline_add_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/outline_fave.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/outline_pack.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/outline_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/outline_unfave.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/payment_address.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/payment_card.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/payment_delivery.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/payment_email.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/payment_name.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/payment_phone.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/payment_provider.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/photo_crop.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/photo_flip.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/photo_paint.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/photo_paint_text.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/photo_sticker.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/photo_timer.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/photo_tools.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/place_x.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/preview_open.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/profile_admin.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/profile_audio.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/profile_ban.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/profile_file.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/profile_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/profile_link.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/profile_photos.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/profile_voice.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_date.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_files.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/search_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_links.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_media.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_music.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_users.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_voice.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/search_web.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/sim_new.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/sim_old.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_activities.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_cat.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_flags.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_food.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_objects.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_other.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_question.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_smiles.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_travel.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_trending.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/stats_zoom.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/stickersclose.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/stickerset_close.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/temp_starlarge.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/themes_addcolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/themes_deletecolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/themes_swapcolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/tip1.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/tip2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/tip3.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/tip4.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/toast_folder.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/toast_folder_minus.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/tool_blur.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/tool_cropfix.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/tool_curve.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/tool_rotate.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/update.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/video_copy.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/video_mini_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/video_mini_cancel.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/video_pip.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/voice_muted_large.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/voice_unmuted_large.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/volume_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/volume_on.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/wallet_clear.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/wallet_fingerprint.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/wallet_qr.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/wallet_receive.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/wallet_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/account_add.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actionbtn_next.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_addadmin.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_addchat.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_addmember2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_link.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_nearby_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_nearby_on.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_permissions.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_reactions.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_remove_user.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_removed.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_setphoto.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/actions_viewmembers.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/add_admin.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/add_contact_new.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/audio_mini_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/audio_mini_cancel.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/audiosend_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/audiosend_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/brightness_high.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/brightness_low.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/broadcast3.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/broadcast_w.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/chats_delete.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/chats_leave.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/contacts_sort_name.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/contacts_sort_time.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/devices.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/doc_big.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/edit_cancel.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/emoji_tabs_premium.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/floating_camera.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/floating_message.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/folders_archive.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/folders_bot.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/folders_channel.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/folders_group.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/folders_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/folders_private.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/folders_read.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/folders_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/forwardvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/gem.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/gem_s.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/group_addmember.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/group_admin.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/group_admin_new.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/group_ban_new.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/group_banned.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/group_log.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_copy.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_delete.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_fave.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_unfave.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_bluetooth_white_24dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_done.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/icon_2_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/icon_3_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/icon_4_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/icon_5_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/icon_6_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/icon_background_clip.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/icon_background_clip_round.png rename TMessagesProj/src/main/res/{mipmap-mdpi => drawable-mdpi}/icon_background_sa.png (100%) delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/instant_link.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/list_bot.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/list_broadcast.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/list_group.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/location_current.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/location_type.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/lock_open.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/log_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_add.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_bookmarks_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_bookmarks_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_bookmarks_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_bots.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_broadcast.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_broadcast_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_broadcast_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_calls.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_calls_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_calls_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_calls_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_camera.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_camera2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_camera_av.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_channel_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_chats.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_clear.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_clear_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_clearcache.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_contacts.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_contacts_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_contacts_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_contacts_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_data.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_date.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_expand.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_groups.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_groups_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_groups_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_groups_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_help.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_help_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_help_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_invite.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_invite_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_invite_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_jobtitle.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_language.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_location.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_mail.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_nearby.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_nearby_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_newfilter.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_newphone.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_night.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_notifications.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_passcode.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_pinnedlist.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_policy.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_private.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_read.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_saved.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_search.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_secret.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_secret_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_secret_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_secret_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_settings.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/menu_settings_filled.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_settings_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_settings_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_support.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_support2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_switch.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_unread.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_wallet.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_wallet_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_work.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_add.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_all.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_base.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_text.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_admin_add.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_admins.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_archived_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_arrow_forward.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_ask_question.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_bell_mute.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_bell_unmute.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_bio.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_bluetooth.png rename TMessagesProj/src/main/res/drawable-mdpi/{blur_linear.png => msg_blur_linear.png} (100%) rename TMessagesProj/src/main/res/drawable-mdpi/{blur_off.png => msg_blur_off.png} (100%) rename TMessagesProj/src/main/res/drawable-mdpi/{blur_radial.png => msg_blur_radial.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_bots.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_brightness_high.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_brightness_low.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_calls.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_calls_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_calls_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_calls_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_camera.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_channel_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_channel_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_channel_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_chats_add.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_chats_remove.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_check_thick.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_clear_input.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_clear_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_clearcache.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_close.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_contact_add.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_contacts.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_name.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_time.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_current_location.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_data.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_delete_old.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_devices.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_activities.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_cat.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_flags.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_food.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_objects.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_other.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_premium.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_question.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_smiles.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_travel.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_expand.png rename TMessagesProj/src/main/res/drawable-mdpi/{abc_ic_menu_share_mtrl_alpha.png => msg_filled_shareout.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folder_reorder.png rename TMessagesProj/src/main/res/drawable-mdpi/{menu_folders.png => msg_folders.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folders_archive.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folders_bots.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folders_channels.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folders_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folders_muted.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folders_private.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folders_read.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folders_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_forward_send.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_gif_add.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_groups_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_groups_create.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_groups_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_groups_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_help.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_help_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_help_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_help_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_info.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_instant_link.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_invite.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_invite_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_invite_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_invite_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_jobtitle.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_limit_2x.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_limit_accounts.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_limit_chats.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_limit_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_limit_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_limit_links.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_limit_pin.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_link2.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_list2.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_log.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_map_type.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_mini_customize.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_mini_premiumlock.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_nearby.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_off.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_newfilter.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_newphone.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_nightmode_system.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_notifications.png rename TMessagesProj/src/main/res/drawable-mdpi/{menu_palette.png => msg_palette.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_payment_address.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_payment_card.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_payment_delivery.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_payment_provider.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_linear.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_off.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_radial.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_brush.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_crop.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_cropfix.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_curve.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_draw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_flip.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_rotate.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_settings.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_text.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photos.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_pinnedlist.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_policy.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_ads.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_avatar.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_badge.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_icons.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_limits.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_liststar.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_lock.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_lock2.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_normal.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_prolfilestar.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_reactions.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_speed.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_tools.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_uploads.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_voice.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_rate_down.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_rate_up.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_reactions2.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_remove.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_report_abuse.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_report_spam.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_requests.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_saved.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_saved_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_saved_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_saved_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_secret_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_secret_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_secret_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_sendphoto.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_settings.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_settings_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_settings_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_settings_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_settings_old.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_settings_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_start_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_switch.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_timer_1h.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_trending.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_user_remove.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_user_search.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_work.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_zoomout_stats.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/no_apps.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/other_2x_large.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/other_lockedfolders.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/other_lockedfolders2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/outline_add_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/outline_fave.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/outline_pack.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/outline_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/outline_unfave.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/payment_address.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/payment_card.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/payment_delivery.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/payment_email.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/payment_name.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/payment_phone.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/payment_provider.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/photo_crop.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/photo_flip.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/photo_paint.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/photo_paint_text.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/photo_sticker.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/photo_timer.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/photo_tools.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/place_x.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/preview_open.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/profile_admin.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/profile_audio.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/profile_ban.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/profile_file.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/profile_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/profile_link.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/profile_photos.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/profile_voice.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_date.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_files.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/search_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_links.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_media.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_music.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_users.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_voice.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/search_web.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/sim_new.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/sim_old.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_activities.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_cat.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_flags.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_food.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_objects.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_other.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_question.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_smiles.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_travel.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_trending.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/stats_zoom.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/stickersclose.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/stickerset_close.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/temp_starlarge.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/themes_addcolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/themes_deletecolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/themes_swapcolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/tip1.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/tip2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/tip3.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/tip4.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/toast_folder.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/toast_folder_minus.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/tool_blur.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/tool_cropfix.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/tool_curve.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/tool_rotate.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/update.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/video_copy.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/video_mini_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/video_mini_cancel.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/video_pip.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/voice_muted_large.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/voice_unmuted_large.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/volume_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/volume_on.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/wallet_clear.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/wallet_fingerprint.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/wallet_qr.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/wallet_receive.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/wallet_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/account_add.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actionbtn_next.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_addadmin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_addchat.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_addmember2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_link.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_nearby_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_nearby_on.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_permissions.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_reactions.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_remove_user.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_removed.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_setphoto.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/actions_viewmembers.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/add_admin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/add_contact_new.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/audio_mini_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/audio_mini_cancel.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/audiosend_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/audiosend_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/brightness_high.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/brightness_low.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/broadcast3.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/broadcast_w.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/chats_delete.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/chats_leave.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/contacts_sort_name.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/contacts_sort_time.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/devices.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/doc_big.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/edit_cancel.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/emoji_tabs_premium.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/floating_camera.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/floating_message.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/folders_archive.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/folders_bot.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/folders_channel.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/folders_group.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/folders_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/folders_private.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/folders_read.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/folders_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/forwardvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/gem.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/gem_s.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/group_addmember.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/group_admin.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/group_admin_new.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/group_ban_new.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/group_banned.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/group_log.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_copy.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_delete.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_fave.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_unfave.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_bluetooth_white_24dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_done.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/icon_2_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/icon_3_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/icon_4_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/icon_5_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/icon_6_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/icon_background_clip.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/icon_background_clip_round.png rename TMessagesProj/src/main/res/{mipmap-xhdpi => drawable-xhdpi}/icon_background_sa.png (100%) delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/instant_link.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/list_bot.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/list_broadcast.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/list_group.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/location_current.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/location_type.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/lock_open.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/log_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_add.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_bookmarks_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_bookmarks_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_bookmarks_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_bots.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_broadcast.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_broadcast_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_broadcast_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_calls.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_calls_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_calls_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_calls_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_camera.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_camera2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_camera_av.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_channel_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_chats.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_clear.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_clear_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_clearcache.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_contacts.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_contacts_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_contacts_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_contacts_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_data.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_date.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_expand.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_groups.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_groups_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_groups_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_groups_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_help.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_help_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_help_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_invite.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_invite_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_invite_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_jobtitle.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_language.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_location.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_mail.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_nearby.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_nearby_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_newfilter.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_newphone.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_night.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_notifications.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_passcode.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_pinnedlist.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_policy.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_private.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_read.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_saved.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_search.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_secret.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_secret_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_secret_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_secret_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_settings.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_14.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_filled.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_support.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_support2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_switch.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_unread.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_wallet.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_wallet_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/menu_work.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_all.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_base.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_text.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_admin_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_admins.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_archived_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_arrow_forward.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_ask_question.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_mute.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_unmute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_bio.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_bluetooth.png rename TMessagesProj/src/main/res/drawable-xhdpi/{blur_linear.png => msg_blur_linear.png} (100%) rename TMessagesProj/src/main/res/drawable-xhdpi/{blur_off.png => msg_blur_off.png} (100%) rename TMessagesProj/src/main/res/drawable-xhdpi/{blur_radial.png => msg_blur_radial.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_bots.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_brightness_high.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_brightness_low.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_calls.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_camera.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_chats_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_chats_remove.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_check_thick.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_clear_input.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_clear_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_clearcache.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_close.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_contact_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_name.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_time.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_current_location.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_data.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_delete_old.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_devices.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_activities.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_cat.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_flags.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_food.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_objects.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_other.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_premium.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_question.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_smiles.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_travel.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_expand.png rename TMessagesProj/src/main/res/drawable-xhdpi/{abc_ic_menu_share_mtrl_alpha.png => msg_filled_shareout.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folder_reorder.png rename TMessagesProj/src/main/res/drawable-xhdpi/{menu_folders.png => msg_folders.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_archive.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_bots.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_channels.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_muted.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_private.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_read.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_forward_send.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_gif_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_groups_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_groups_create.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_groups_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_groups_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_help.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_help_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_help_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_help_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_info.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_instant_link.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_invite.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_invite_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_invite_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_invite_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_jobtitle.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_2x.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_accounts.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_chats.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_links.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_pin.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_link2.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_list2.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_log.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_map_type.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_mini_customize.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_mini_premiumlock.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_off.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_newfilter.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_newphone.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_nightmode_system.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_notifications.png rename TMessagesProj/src/main/res/drawable-xhdpi/{menu_palette.png => msg_palette.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_address.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_card.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_delivery.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_provider.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_linear.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_off.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_radial.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_brush.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_crop.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_cropfix.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_curve.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_draw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_flip.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_rotate.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_settings.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_text.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photos.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_pinnedlist.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_policy.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_ads.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_avatar.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_badge.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_icons.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_limits.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_liststar.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_lock.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_lock2.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_normal.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_prolfilestar.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_reactions.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_speed.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_tools.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_uploads.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_voice.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_rate_down.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_rate_up.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_reactions2.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_remove.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_report_abuse.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_report_spam.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_requests.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_saved.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_saved_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_saved_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_saved_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_secret_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_secret_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_secret_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_sendphoto.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_settings.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_settings_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_settings_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_settings_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_settings_old.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_settings_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_start_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_switch.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_timer_1h.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_trending.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_user_remove.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_user_search.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_work.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_zoomout_stats.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/no_apps.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/other_2x_large.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/other_lockedfolders.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/other_lockedfolders2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/outline_add_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/outline_fave.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/outline_pack.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/outline_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/outline_unfave.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/payment_address.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/payment_card.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/payment_delivery.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/payment_email.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/payment_name.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/payment_phone.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/payment_provider.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/photo_crop.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/photo_flip.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/photo_paint.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/photo_paint_text.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/photo_sticker.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/photo_timer.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/photo_tools.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/place_x.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/preview_open.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/profile_admin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/profile_audio.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/profile_ban.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/profile_file.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/profile_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/profile_link.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/profile_photos.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/profile_voice.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_date.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_files.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/search_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_links.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_media.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_music.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_users.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_voice.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/search_web.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/sim_new.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/sim_old.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_activities.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_cat.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_flags.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_food.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_objects.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_other.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_question.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_smiles.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_travel.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_trending.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/stats_zoom.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/stickersclose.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/stickerset_close.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/temp_starlarge.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/themes_addcolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/themes_deletecolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/themes_swapcolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/tip1.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/tip2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/tip3.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/tip4.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/toast_folder.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/toast_folder_minus.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/tool_blur.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/tool_cropfix.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/tool_curve.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/tool_rotate.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/update.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/video_mini_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/video_mini_cancel.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/video_pip.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/voice_muted_large.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/voice_unmuted_large.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/volume_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/volume_on.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/wallet_clear.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/wallet_fingerprint.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/wallet_qr.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/wallet_receive.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/wallet_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/account_add.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actionbtn_next.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_addadmin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_addchat.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_addmember2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_link.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_nearby_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_nearby_on.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_permissions.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_reactions.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_remove_user.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_removed.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_setphoto.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/actions_viewmembers.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/add_admin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/add_contact_new.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/audio_mini_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/audio_mini_cancel.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/audiosend_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/audiosend_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/brightness_high.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/brightness_low.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/broadcast3.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/broadcast_w.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/chats_delete.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/chats_leave.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/contacts_sort_name.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/contacts_sort_time.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/devices.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/doc_big.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/edit_cancel.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/emoji_tabs_premium.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/floating_camera.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/floating_message.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/folders_archive.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/folders_bot.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/folders_channel.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/folders_group.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/folders_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/folders_private.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/folders_read.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/folders_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/forwardvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/gem.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/gem_s.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/group_addmember.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/group_admin.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/group_admin_new.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/group_ban_new.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/group_banned.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/group_log.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_copy.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_delete.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fave.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_unfave.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_bluetooth_white_24dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_done.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/icon_2_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/icon_3_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/icon_4_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/icon_5_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/icon_6_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/icon_background_clip.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/icon_background_clip_round.png rename TMessagesProj/src/main/res/{mipmap-xxhdpi => drawable-xxhdpi}/icon_background_sa.png (100%) delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/instant_link.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/list_bot.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/list_broadcast.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/list_group.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/location_current.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/location_type.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/lock_open.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/log_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_add.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_bookmarks_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_bookmarks_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_bookmarks_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_bots.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_broadcast.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_broadcast_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_broadcast_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_calls.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_calls_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_calls_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_calls_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_camera.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_camera2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_camera_av.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_channel_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_chats.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_clear.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_clear_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_clearcache.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_data.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_date.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_expand.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_groups.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_groups_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_groups_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_groups_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_help.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_help_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_help_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_invite.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_invite_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_invite_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_jobtitle.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_language.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_location.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_mail.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_nearby.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_nearby_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_newfilter.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_newphone.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_night.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_notifications.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_passcode.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_pinnedlist.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_policy.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_private.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_read.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_saved.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_search.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_secret.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_secret_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_secret_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_secret_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings_14.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings_filled.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_support.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_support2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_switch.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_unread.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_wallet.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_wallet_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/menu_work.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_all.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_base.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_text.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_admin_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_admins.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_archived_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_arrow_forward.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_ask_question.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_mute.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_unmute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_bio.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_bluetooth.png rename TMessagesProj/src/main/res/drawable-xxhdpi/{blur_linear.png => msg_blur_linear.png} (100%) rename TMessagesProj/src/main/res/drawable-xxhdpi/{blur_off.png => msg_blur_off.png} (100%) rename TMessagesProj/src/main/res/drawable-xxhdpi/{blur_radial.png => msg_blur_radial.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_bots.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_brightness_high.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_brightness_low.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_camera.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_chats_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_chats_remove.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_check_thick.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_clear_input.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_clear_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_clearcache.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_close.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_contact_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_name.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_time.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_current_location.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_data.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_delete_old.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_devices.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_activities.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_cat.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_flags.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_food.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_objects.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_other.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_premium.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_question.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_smiles.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_travel.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_expand.png rename TMessagesProj/src/main/res/drawable-xxhdpi/{abc_ic_menu_share_mtrl_alpha.png => msg_filled_shareout.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folder_reorder.png rename TMessagesProj/src/main/res/drawable-xxhdpi/{menu_folders.png => msg_folders.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_archive.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_bots.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_channels.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_muted.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_private.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_read.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_requests.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_forward_send.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_gif_add.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_create.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_help.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_help_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_help_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_help_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_info.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_instant_link.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_invite.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_invite_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_invite_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_invite_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_jobtitle.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_2x.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_accounts.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_chats.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_groups.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_links.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_pin.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_link2.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_list2.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_log.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_map_type.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_mini_customize.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_mini_premiumlock.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_off.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_newfilter.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_newphone.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_nightmode_system.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_notifications.png rename TMessagesProj/src/main/res/drawable-xxhdpi/{menu_palette.png => msg_palette.png} (100%) create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_payment_address.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_payment_card.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_payment_delivery.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_payment_provider.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_linear.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_off.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_radial.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_brush.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_crop.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_cropfix.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_curve.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_draw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_flip.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_rotate.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_settings.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_text.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photos.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_pinnedlist.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_policy.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_ads.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_avatar.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_badge.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_icons.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_limits.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_liststar.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_lock.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_lock2.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_normal.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_prolfilestar.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_reactions.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_speed.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_tools.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_uploads.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_voice.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_rate_down.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_rate_up.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_reactions2.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_recent.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_remove.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_report_abuse.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_report_spam.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_requests.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_secret_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_secret_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_secret_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_sendphoto.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_hw.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_ny.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_old.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_start_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_switch.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_timer_1h.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_trending.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_user_remove.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_user_search.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_work.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_zoomout_stats.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/no_apps.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/other_2x_large.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/other_lockedfolders.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/other_lockedfolders2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/outline_add_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/outline_fave.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/outline_pack.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/outline_send.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/outline_unfave.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/payment_address.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/payment_card.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/payment_delivery.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/payment_email.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/payment_name.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/payment_phone.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/payment_provider.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/photo_crop.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/photo_flip.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/photo_paint.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/photo_paint_text.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/photo_sticker.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/photo_timer.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/photo_tools.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/place_x.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/preview_open.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/profile_admin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/profile_audio.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/profile_ban.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/profile_file.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/profile_info.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/profile_link.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/profile_photos.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/profile_voice.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/search_date.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/search_files.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/search_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/search_links.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/search_media.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/search_music.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/search_users.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/search_voice.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/search_web.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/sim_new.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/sim_old.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_activities.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_cat.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_flags.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_food.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_objects.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_other.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_question.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_smiles.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_travel.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_trending.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/stats_zoom.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/stickersclose.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/stickerset_close.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/temp_starlarge.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/themes_addcolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/themes_deletecolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/themes_swapcolor.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/tip1.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/tip2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/tip3.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/tip4.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/tip5.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/toast_folder.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/toast_folder_minus.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/tool_blur.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/tool_cropfix.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/tool_curve.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/tool_rotate.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/update.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/video_copy.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/video_mini_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/video_mini_cancel.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/video_pip.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/voice_muted_large.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/voice_unmuted_large.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/volume_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/volume_on.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/wallet_clear.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/wallet_fingerprint.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/wallet_qr.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/wallet_receive.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/wallet_send.png create mode 100644 TMessagesProj/src/main/res/drawable-xxxhdpi/icon_2_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxxhdpi/icon_3_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxxhdpi/icon_4_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxxhdpi/icon_5_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxxhdpi/icon_6_background_sa.png create mode 100644 TMessagesProj/src/main/res/drawable-xxxhdpi/icon_background_clip.png create mode 100644 TMessagesProj/src/main/res/drawable-xxxhdpi/icon_background_clip_round.png rename TMessagesProj/src/main/res/{mipmap-xxxhdpi => drawable-xxxhdpi}/icon_background_sa.png (100%) create mode 100644 TMessagesProj/src/main/res/drawable/icon_2_background.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_2_background_round.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_3_background.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_3_background_round.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_4_background.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_4_background_round.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_5_background.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_5_background_round.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_6_background.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_6_background_round.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_background.xml create mode 100644 TMessagesProj/src/main/res/drawable/icon_background_round.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher_round.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher_sa.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher_round.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher_sa.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher_round.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher_sa.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher_round.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher_sa.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher_round.xml create mode 100644 TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher_sa.xml create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_2_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_2_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_2_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_3_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_3_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_3_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_3_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_3_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_3_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_4_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_4_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_4_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_5_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_5_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_5_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_5_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_5_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_5_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_6_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_6_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_6_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_6_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_6_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_6_launcher_sa.png delete mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_background.png delete mode 100644 TMessagesProj/src/main/res/mipmap-hdpi/icon_background_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_2_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_2_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_2_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_3_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_3_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_3_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_3_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_3_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_3_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_4_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_4_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_4_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_5_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_5_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_5_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_5_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_5_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_5_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_6_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_6_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_6_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_6_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_6_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_6_launcher_sa.png delete mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_background.png delete mode 100644 TMessagesProj/src/main/res/mipmap-mdpi/icon_background_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_2_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_2_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_2_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_4_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_4_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_4_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_launcher_sa.png delete mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_background.png delete mode 100644 TMessagesProj/src/main/res/mipmap-xhdpi/icon_background_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_2_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_2_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_2_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_4_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_4_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_4_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_6_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_6_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_6_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_6_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_6_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_6_launcher_sa.png delete mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_background.png delete mode 100644 TMessagesProj/src/main/res/mipmap-xxhdpi/icon_background_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_2_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_2_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_2_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_4_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_4_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_4_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_launcher_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_6_foreground.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_6_foreground_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_6_foreground_sa.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_6_launcher.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_6_launcher_round.png create mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_6_launcher_sa.png delete mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_background.png delete mode 100644 TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_background_round.png create mode 100644 TMessagesProj/src/main/res/raw/addone_icon.json create mode 100644 TMessagesProj/src/main/res/raw/dots_loading.json create mode 100644 TMessagesProj/src/main/res/raw/double_icon.json create mode 100644 TMessagesProj/src/main/res/raw/premium_object_adsbubble.svg create mode 100644 TMessagesProj/src/main/res/raw/premium_object_bubble.svg create mode 100644 TMessagesProj/src/main/res/raw/premium_object_folder.svg create mode 100644 TMessagesProj/src/main/res/raw/premium_object_like.svg create mode 100644 TMessagesProj/src/main/res/raw/premium_object_noads.svg create mode 100644 TMessagesProj/src/main/res/raw/premium_object_settings.svg create mode 100644 TMessagesProj/src/main/res/raw/premium_object_user.svg create mode 100644 TMessagesProj/src/main/res/raw/premium_object_video.svg create mode 100644 TMessagesProj/src/main/res/raw/premium_object_video2.svg create mode 100644 TMessagesProj/src/main/res/raw/star_loader.svg create mode 100644 TMessagesProj/src/main/res/raw/transcribe_in.json create mode 100644 TMessagesProj/src/main/res/raw/transcribe_out.json create mode 100644 TMessagesProj/src/main/res/raw/unlock_icon.json create mode 100644 TMessagesProj/src/main/res/raw/utyan_saved_messages.tgs diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index dfe51baa5..58c875638 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -37,8 +37,11 @@ dependencies { implementation 'com.googlecode.mp4parser:isoparser:1.0.6' implementation 'com.stripe:stripe-android:2.0.2' implementation 'com.google.mlkit:language-id:16.1.1' + implementation 'com.android.billingclient:billing:5.0.0' implementation files('libs/libgsaverification-client.aar') + implementation "com.android.billingclient:billing:5.0.0" + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' } @@ -189,98 +192,32 @@ android { flavorDimensions "minApi" productFlavors { - armv7 { + bundleAfat { ndk { - abiFilters "armeabi-v7a" + abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" } ext { abiVersionCode = 1 } } - x86 { + bundleAfat_SDK23 { ndk { - abiFilters "x86" + abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" } + sourceSets.debug { + manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml' + } + sourceSets.release { + manifest.srcFile 'config/release/AndroidManifest_SDK23.xml' + } + sourceSets.standalone { + manifest.srcFile 'config/release/AndroidManifest_standalone.xml' + } + minSdkVersion 23 ext { abiVersionCode = 2 } } - armv7_SDK23 { - ndk { - abiFilters "armeabi-v7a" - } - sourceSets.debug { - manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml' - } - sourceSets.release { - manifest.srcFile 'config/release/AndroidManifest_SDK23.xml' - } - minSdkVersion 23 - ext { - abiVersionCode = 3 - } - } - x86_SDK23 { - ndk { - abiFilters "x86" - } - sourceSets.debug { - manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml' - } - sourceSets.release { - manifest.srcFile 'config/release/AndroidManifest_SDK23.xml' - } - minSdkVersion 23 - ext { - abiVersionCode = 4 - } - } - arm64 { - ndk { - abiFilters "arm64-v8a" - } - ext { - abiVersionCode = 5 - } - } - x64 { - ndk { - abiFilters "x86_64" - } - ext { - abiVersionCode = 6 - } - } - arm64_SDK23 { - ndk { - abiFilters "arm64-v8a" - } - sourceSets.debug { - manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml' - } - sourceSets.release { - manifest.srcFile 'config/release/AndroidManifest_SDK23.xml' - } - minSdkVersion 23 - ext { - abiVersionCode = 7 - } - } - x64_SDK23 { - ndk { - abiFilters "x86_64" - } - sourceSets.debug { - manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml' - } - sourceSets.release { - manifest.srcFile 'config/release/AndroidManifest_SDK23.xml' - } - minSdkVersion 23 - ext { - abiVersionCode = 8 - } - } afat { ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" @@ -300,7 +237,7 @@ android { } } - defaultConfig.versionCode = 2636 + defaultConfig.versionCode = 2702 applicationVariants.all { variant -> variant.outputs.all { output -> @@ -319,7 +256,7 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 30 - versionName "8.7.4" + versionName "8.8.2" vectorDrawables.generatedDensities = ['mdpi', 'hdpi', 'xhdpi', 'xxhdpi'] diff --git a/TMessagesProj/jni/audio.c b/TMessagesProj/jni/audio.c index 7dc36e45c..445b78895 100644 --- a/TMessagesProj/jni/audio.c +++ b/TMessagesProj/jni/audio.c @@ -219,7 +219,7 @@ static int writeOggPage(ogg_page *page, FILE *os) { return written; } -const opus_int32 bitrate = 30 * 1024; +const opus_int32 bitrate = OPUS_BITRATE_MAX; const opus_int32 frame_size = 960; const int with_cvbr = 1; const int max_ogg_delay = 0; @@ -322,7 +322,7 @@ int initRecorder(const char *path, opus_int32 sampleRate) { header.nb_streams = 1; int result = OPUS_OK; - _encoder = opus_encoder_create(coding_rate, 1, OPUS_APPLICATION_AUDIO, &result); + _encoder = opus_encoder_create(coding_rate, 1, OPUS_APPLICATION_VOIP, &result); if (result != OPUS_OK) { LOGE("Error cannot create encoder: %s", opus_strerror(result)); return 0; diff --git a/TMessagesProj/jni/lottie.cpp b/TMessagesProj/jni/lottie.cpp index 1a6f45cc9..9169dde5f 100644 --- a/TMessagesProj/jni/lottie.cpp +++ b/TMessagesProj/jni/lottie.cpp @@ -39,6 +39,7 @@ typedef struct LottieInfo { volatile uint32_t maxFrameSize = 0; uint32_t imageSize = 0; uint32_t fileOffset = 0; + uint32_t fileFrame = 0; bool nextFrameIsCacheFrame = false; FILE *precacheFile = nullptr; @@ -146,6 +147,7 @@ JNIEXPORT jlong Java_org_telegram_ui_Components_RLottieDrawable_create(JNIEnv *e info->maxFrameSize = maxFrameSize; fread(&(info->imageSize), sizeof(uint32_t), 1, precacheFile); info->fileOffset = 9; + info->fileFrame = 0; utimensat(0, info->cacheFile.c_str(), nullptr, 0); } fclose(precacheFile); @@ -162,6 +164,18 @@ JNIEXPORT jlong Java_org_telegram_ui_Components_RLottieDrawable_create(JNIEnv *e return (jlong) (intptr_t) info; } +JNIEXPORT jstring Java_org_telegram_ui_Components_RLottieDrawable_getCacheFile(JNIEnv *env, jclass clazz, jlong ptr) { + if (!ptr) { + return NULL; + } + auto info = (LottieInfo *) (intptr_t) ptr; + if (info->precache) { + return env->NewStringUTF(info->cacheFile.c_str()); + } + return NULL; +} + + JNIEXPORT jlong Java_org_telegram_ui_Components_RLottieDrawable_createWithJson(JNIEnv *env, jclass clazz, jstring json, jstring name, jintArray data, jintArray colorReplacement) { std::map *colors = nullptr; if (colorReplacement != nullptr) { @@ -271,6 +285,7 @@ void CacheWriteThreadProc() { if (task->firstFrame) { task->firstFrameSize = size; task->fileOffset = 9 + sizeof(uint32_t) + task->firstFrameSize; + task->fileFrame = 1; } task->maxFrameSize = MAX(task->maxFrameSize, size); fwrite(&size, sizeof(uint32_t), 1, task->precacheFile); @@ -310,6 +325,7 @@ JNIEXPORT void Java_org_telegram_ui_Components_RLottieDrawable_createCache(JNIEn info->precacheFile = fopen(info->cacheFile.c_str(), "w+"); if (info->precacheFile != nullptr) { fseek(info->precacheFile, info->fileOffset = 9, SEEK_SET); + info->fileFrame = 0; info->maxFrameSize = 0; info->bufferSize = w * h * 4; info->imageSize = (uint32_t) w * h * 4; @@ -393,18 +409,32 @@ JNIEXPORT jint Java_org_telegram_ui_Components_RLottieDrawable_getFrame(JNIEnv * } info->decompressBuffer = new uint8_t[info->decompressBufferSize]; } + int currentFrame = frame / framesPerUpdate; + if (info->fileFrame != frame) { + info->fileOffset = 9; + info->fileFrame = 0; + while (info->fileFrame != currentFrame) { + fseek(precacheFile, info->fileOffset, SEEK_SET); + uint32_t frameSize; + fread(&frameSize, sizeof(uint32_t), 1, precacheFile); + info->fileOffset += 4 + frameSize; + info->fileFrame++; + } + } fseek(precacheFile, info->fileOffset, SEEK_SET); uint32_t frameSize; fread(&frameSize, sizeof(uint32_t), 1, precacheFile); if (frameSize > 0 && frameSize <= info->decompressBufferSize) { fread(info->decompressBuffer, sizeof(uint8_t), frameSize, precacheFile); info->fileOffset += 4 + frameSize; + info->fileFrame = currentFrame + 1; LZ4_decompress_safe((const char *) info->decompressBuffer, (char *) pixels, frameSize, w * h * 4); loadedFromCache = true; } fclose(precacheFile); if (frame + framesPerUpdate >= info->frameCount) { info->fileOffset = 9; + info->fileFrame = 0; } } } diff --git a/TMessagesProj/jni/tgnet/ApiScheme.cpp b/TMessagesProj/jni/tgnet/ApiScheme.cpp index 337e6a7aa..6a8b48dde 100644 --- a/TMessagesProj/jni/tgnet/ApiScheme.cpp +++ b/TMessagesProj/jni/tgnet/ApiScheme.cpp @@ -55,6 +55,7 @@ void TL_dcOption::readParams(NativeByteBuffer *stream, int32_t instanceNum, bool tcpo_only = (flags & 4) != 0; cdn = (flags & 8) != 0; isStatic = (flags & 16) != 0; + thisPortOnly = (flags & 32) != 0; id = stream->readInt32(&error); ip_address = stream->readString(&error); port = stream->readInt32(&error); @@ -70,6 +71,7 @@ void TL_dcOption::serializeToStream(NativeByteBuffer *stream) { flags = tcpo_only ? (flags | 4) : (flags &~ 4); flags = cdn ? (flags | 8) : (flags &~ 8); flags = isStatic ? (flags | 16) : (flags &~ 16); + flags = thisPortOnly ? (flags | 32) : (flags &~ 32); stream->writeInt32(flags); stream->writeInt32(id); stream->writeString(ip_address); diff --git a/TMessagesProj/jni/tgnet/ApiScheme.h b/TMessagesProj/jni/tgnet/ApiScheme.h index 9ec65bb9e..dfa30e2ce 100644 --- a/TMessagesProj/jni/tgnet/ApiScheme.h +++ b/TMessagesProj/jni/tgnet/ApiScheme.h @@ -49,6 +49,7 @@ public: bool tcpo_only; bool cdn; bool isStatic; + bool thisPortOnly; int32_t id; std::string ip_address; int32_t port; diff --git a/TMessagesProj/jni/tgnet/Connection.cpp b/TMessagesProj/jni/tgnet/Connection.cpp index 0158a78e0..fa53030ed 100644 --- a/TMessagesProj/jni/tgnet/Connection.cpp +++ b/TMessagesProj/jni/tgnet/Connection.cpp @@ -696,6 +696,10 @@ void Connection::onDisconnectedInternal(int32_t reason, int32_t error) { isTryingNextPort = true; if (failedConnectionCount > willRetryConnectCount || switchToNextPort) { currentDatacenter->nextAddressOrPort(currentAddressFlags); + if (currentDatacenter->isRepeatCheckingAddresses() && (ConnectionsManager::getInstance(currentDatacenter->instanceNum).getIpStratagy() == USE_IPV4_ONLY || ConnectionsManager::getInstance(currentDatacenter->instanceNum).getIpStratagy() == USE_IPV6_ONLY)) { + if (LOGS_ENABLED) DEBUG_D("started retrying connection, set ipv4 ipv6 random strategy"); + ConnectionsManager::getInstance(currentDatacenter->instanceNum).setIpStrategy(USE_IPV4_IPV6_RANDOM); + } failedConnectionCount = 0; } } diff --git a/TMessagesProj/jni/tgnet/ConnectionsManager.cpp b/TMessagesProj/jni/tgnet/ConnectionsManager.cpp index ed8023cbc..f19d78cb8 100644 --- a/TMessagesProj/jni/tgnet/ConnectionsManager.cpp +++ b/TMessagesProj/jni/tgnet/ConnectionsManager.cpp @@ -143,9 +143,15 @@ ConnectionsManager& ConnectionsManager::getInstance(int32_t instanceNum) { static ConnectionsManager instance1(1); return instance1; case 2: - default: static ConnectionsManager instance2(2); return instance2; + case 3: + static ConnectionsManager instance3(3); + return instance3; + case 4: + default: + static ConnectionsManager instance4(4); + return instance4; } } @@ -3005,8 +3011,13 @@ void ConnectionsManager::updateDcSettings(uint32_t dcNum, bool workaround) { if (dcOption->secret != nullptr) { secret = std::string((const char *) dcOption->secret->bytes, dcOption->secret->length); } - if (LOGS_ENABLED) DEBUG_D("getConfig add %s:%d to dc%d, flags %d, has secret = %d[%d]", dcOption->ip_address.c_str(), dcOption->port, dcOption->id, dcOption->flags, dcOption->secret != nullptr ? 1 : 0, dcOption->secret != nullptr ? dcOption->secret->length : 0); - addresses->push_back(TcpAddress(dcOption->ip_address, dcOption->port, dcOption->flags, secret)); + if (LOGS_ENABLED) DEBUG_D("getConfig add %s:%d to dc%d, flags %d, has_secret = %d[%d], try_this_port_only = %d", dcOption->ip_address.c_str(), dcOption->port, dcOption->id, dcOption->flags, dcOption->secret != nullptr ? 1 : 0, dcOption->secret != nullptr ? dcOption->secret->length : 0, dcOption->thisPortOnly ? 1 : 0); + if (dcOption->thisPortOnly) { + addresses->insert(addresses->begin(), TcpAddress(dcOption->ip_address, dcOption->port, dcOption->flags, secret)); + } else { + addresses->push_back(TcpAddress(dcOption->ip_address, dcOption->port, dcOption->flags, secret)); + } + } }; diff --git a/TMessagesProj/jni/tgnet/Datacenter.cpp b/TMessagesProj/jni/tgnet/Datacenter.cpp index 37f84d3c6..8b8211c8c 100644 --- a/TMessagesProj/jni/tgnet/Datacenter.cpp +++ b/TMessagesProj/jni/tgnet/Datacenter.cpp @@ -414,6 +414,7 @@ void Datacenter::nextAddressOrPort(uint32_t flags) { if (currentAddressNum + 1 < addresses->size()) { currentAddressNum++; } else { + repeatCheckingAddresses = true; currentAddressNum = 0; } currentPortNum = 0; @@ -1477,6 +1478,12 @@ void Datacenter::resetInitVersion() { lastInitMediaVersion = 0; } +bool Datacenter::isRepeatCheckingAddresses() { + bool b = repeatCheckingAddresses; + repeatCheckingAddresses = false; + return b; +} + TL_help_configSimple *Datacenter::decodeSimpleConfig(NativeByteBuffer *buffer) { TL_help_configSimple *result = nullptr; diff --git a/TMessagesProj/jni/tgnet/Datacenter.h b/TMessagesProj/jni/tgnet/Datacenter.h index b4c19d5d2..8d10580b8 100644 --- a/TMessagesProj/jni/tgnet/Datacenter.h +++ b/TMessagesProj/jni/tgnet/Datacenter.h @@ -58,6 +58,7 @@ public: bool isExportingAuthorization(); bool hasMediaAddress(); void resetInitVersion(); + bool isRepeatCheckingAddresses(); Connection *getDownloadConnection(uint8_t num, bool create); Connection *getProxyConnection(uint8_t num, bool create, bool connect); @@ -121,6 +122,7 @@ private: int64_t authKeyMediaTempId = 0; Config *config = nullptr; bool isCdnDatacenter = false; + bool repeatCheckingAddresses = false; std::vector> handshakes; diff --git a/TMessagesProj/jni/tgnet/Defines.h b/TMessagesProj/jni/tgnet/Defines.h index 8ab7b9c1c..ed2e8a97a 100644 --- a/TMessagesProj/jni/tgnet/Defines.h +++ b/TMessagesProj/jni/tgnet/Defines.h @@ -27,7 +27,7 @@ #define DOWNLOAD_CONNECTIONS_COUNT 2 #define UPLOAD_CONNECTIONS_COUNT 4 #define CONNECTION_BACKGROUND_KEEP_TIME 10000 -#define MAX_ACCOUNT_COUNT 3 +#define MAX_ACCOUNT_COUNT 5 #define USE_DELEGATE_HOST_RESOLVE #define USE_IPV4_ONLY 0 diff --git a/TMessagesProj/jni/voip/CMakeLists.txt b/TMessagesProj/jni/voip/CMakeLists.txt index 74acffcf3..a5cc73fe2 100644 --- a/TMessagesProj/jni/voip/CMakeLists.txt +++ b/TMessagesProj/jni/voip/CMakeLists.txt @@ -41,7 +41,7 @@ target_compile_options(tgvoip PUBLIC set_target_properties(tgvoip PROPERTIES ANDROID_ARM_MODE arm) target_compile_definitions(tgvoip PUBLIC - HAVE_PTHREAD __STDC_LIMIT_MACROS BSD=1 USE_KISS_FFT TGVOIP_NO_VIDEO NULL=0 SOCKLEN_T=socklen_t LOCALE_NOT_USED _LARGEFILE_SOURCE=1 _FILE_OFFSET_BITS=64 restrict= __EMX__ OPUS_BUILD FIXED_POINT USE_ALLOCA HAVE_LRINT HAVE_LRINTF) + HAVE_PTHREAD __STDC_LIMIT_MACROS BSD=1 USE_KISS_FFT TGVOIP_NO_VIDEO NULL=0 SOCKLEN_T=socklen_t LOCALE_NOT_USED _LARGEFILE_SOURCE=1 _FILE_OFFSET_BITS=64 restrict= __EMX__ OPUS_BUILD FIXED_POINT USE_ALLOCA HAVE_LRINT HAVE_LRINTF TGVOIP_NO_DSP) target_compile_definitions(tgvoip PUBLIC RTC_DISABLE_TRACE_EVENTS WEBRTC_OPUS_SUPPORT_120MS_PTIME=1 BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0 ABSL_ALLOCATOR_NOTHROW=1 RTC_ENABLE_VP9 WEBRTC_POSIX WEBRTC_LINUX WEBRTC_ANDROID WEBRTC_USE_H264 NDEBUG WEBRTC_HAVE_USRSCTP WEBRTC_HAVE_SCTP WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_USE_BUILTIN_ISAC_FLOAT WEBRTC_OPUS_VARIABLE_COMPLEXITY=0 HAVE_NETINET_IN_H WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE __Userspace__ SCTP_SIMPLE_ALLOCATOR SCTP_PROCESS_LEVEL_LOCKS __Userspace_os_Linux) target_include_directories(tgvoip PUBLIC @@ -404,7 +404,7 @@ target_compile_options(tgcalls_tp PUBLIC set_target_properties(tgcalls_tp PROPERTIES ANDROID_ARM_MODE arm) target_compile_definitions(tgcalls_tp PUBLIC - RTC_DISABLE_TRACE_EVENTS WEBRTC_OPUS_SUPPORT_120MS_PTIME=1 BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0 ABSL_ALLOCATOR_NOTHROW=1 HAVE_PTHREAD RTC_ENABLE_VP9 WEBRTC_POSIX WEBRTC_LINUX WEBRTC_ANDROID WEBRTC_USE_H264 NDEBUG WEBRTC_HAVE_USRSCTP WEBRTC_HAVE_SCTP WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_USE_BUILTIN_ISAC_FLOAT WEBRTC_OPUS_VARIABLE_COMPLEXITY=0 HAVE_NETINET_IN_H WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE __Userspace__ SCTP_SIMPLE_ALLOCATOR SCTP_PROCESS_LEVEL_LOCKS __Userspace_os_Linux HAVE_WEBRTC_VIDEO __ANDROID__) + RTC_DISABLE_TRACE_EVENTS WEBRTC_OPUS_SUPPORT_120MS_PTIME=1 BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0 ABSL_ALLOCATOR_NOTHROW=1 HAVE_PTHREAD RTC_ENABLE_VP9 WEBRTC_POSIX WEBRTC_LINUX WEBRTC_ANDROID WEBRTC_USE_H264 NDEBUG WEBRTC_HAVE_USRSCTP WEBRTC_HAVE_SCTP WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_USE_BUILTIN_ISAC_FLOAT WEBRTC_OPUS_VARIABLE_COMPLEXITY=0 HAVE_NETINET_IN_H WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE __Userspace__ SCTP_SIMPLE_ALLOCATOR SCTP_PROCESS_LEVEL_LOCKS __Userspace_os_Linux HAVE_WEBRTC_VIDEO __ANDROID__ TGVOIP_NO_DSP) target_include_directories(tgcalls_tp PUBLIC ./ voip diff --git a/TMessagesProj/src/main/AndroidManifest.xml b/TMessagesProj/src/main/AndroidManifest.xml index 3d17fd82a..138549eb6 100644 --- a/TMessagesProj/src/main/AndroidManifest.xml +++ b/TMessagesProj/src/main/AndroidManifest.xml @@ -67,6 +67,7 @@ + @@ -84,6 +85,94 @@ android:allowAudioPlaybackCapture="true" tools:replace="android:supportsRtl"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - diff --git a/TMessagesProj/src/main/assets/darkblue.attheme b/TMessagesProj/src/main/assets/darkblue.attheme index 53855489c..1556b190f 100644 --- a/TMessagesProj/src/main/assets/darkblue.attheme +++ b/TMessagesProj/src/main/assets/darkblue.attheme @@ -26,6 +26,7 @@ chat_inPreviewInstantSelectedText=-5648402 chat_attachAudioBackground=-626837 location_sendLocationBackground=-9919529 actionBarDefaultSubmenuBackground=-14075831 +actionBarDefaultSubmenuSeparator=-14733761 switchTrackBlueThumb=-14866637 avatar_nameInMessageViolet=-6643205 emptyListPlaceholder=-8549479 diff --git a/TMessagesProj/src/main/assets/flecks.png b/TMessagesProj/src/main/assets/flecks.png new file mode 100644 index 0000000000000000000000000000000000000000..8c61be7bb1354d56c9a8c7741c2a92382cbb2e66 GIT binary patch literal 293136 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

-qB;T?%*DU+uV240)RtO_A%#S?kn5G=h^t&E#>Dp^Y_%YMJt1=0ZQ$Pk)+LE zc!W0rBK@Pz<$uY!67b}@G66WrLm;ujrT4squ*t3jF!<-x58k~30RG;yvEfn9K9~fM z)D8{&E-VXtFbN=O5pHPpXho&?LZ>WpU#%4(urz z_NYw&l&0D1eu=4Fe}+5ujWvSR!M_T;5RPfPCIQmtc3*qPafzD`HpM4ttH25~7krSb zb$dCq$6nBrYG0mzYt;@954Hww0FU-#=A1Wm`_Ps(w*AT89tAKEtnluFk&OayZ3 z4*pqpIX*I;GB#uF8JKpZy0l#%#Xz?LPS{m|UTguFkoCdk|EmtgL|Ztu<^0Up-(*3% zV*((FLHi z{FLu~=JW1K{K|{aGcE2o6(4z_E?&peMaD%2MrZfgSBuBk{z?*t-2aS7?EnJ5Y^h%{ zI}S#|Bclw4i2=FjDVxd#y|$B*M{Tu8uklx?p7gwU21m)pU%*fdwY6Z@OT zWjO3%>&8PJ%=_i5bdEP1c+#GOG5A+IV>!NVPjl?~y{@nLVo-6$JL!LUtC?(n2qvh84&e*1Cz zK@aSK>JbdA4ok4%_u zx%Cr$Ae{26p6os2@7fE8Jac87Fw!drLz12x9cTC42B2rv*N#bsDo!~)ra3XuCeCRa zp-6vz?bSog>!agL6G?nAF?0Z~wkreYXT`CYIN-!jPdp~~Gk?>`r*pYKA`HBA%Ed9` zCmS8ZqCKKEJ|Q^y54ds~>sENj1#OK-gFhGseNV;FZ(Duv_|E3}dHuK9NiQ9AIQ@9~ zp4q)^D}Lk?eg=8J5>WU}M2O8DHaYMnTUD_tmpwTNQ>{1Z6=!7b(iULudV7CeZ>*2p zKl1heozT@tx2#+vD(M0 z>RG?>J73_{Hk<#JaE(pm5L1Ta;5t4s(C)ZlXkWMcZ*7AsIC`O$3!mE;dAPJ?#-%c! zKkc!nV#yoXr>v%%nPUPS%V;>RBIaW5?NMi{ZP;_!pEG{~$iL<%|K#$Mxm*}7LFj*t z2ke9Umi2TxaJWc{Q)S7ibD94OpL=}Rn0wl0eBMvKb}4fRv44e-s{oTmp)9!MUsnhe zi`u#V>Y2@b=j%;qoK;nM~2O3;!AAJ!0ncK#sV9o5=&6e9^@W(COJ^PUvb5&r~D|XL2wI!E55WKq2 zh?CfytJo->h$Ui!gTbGiBn)Trq`qAX45Wkao7K5?pSUqz>hz|_fO!?sf2>bKZCFv(NC^Y7aJUVMYx8?#H+WefQmo`-zg;^PXMbr_AL5>}fhNP$mUeNRhJ= zkS_5M05Xv zmzwpnVzTBjn-2zm??dmA5zUn6SS=XQoVxc`%e(tv+*dX@3iG_o(xNc+;unJ5J-na-KEf=C_jz9bR*+5Tyt%Hfeu@#7 z0$2qAuWSFPs2{!7{_LYW6!WF#h7(tIuKS~ruZIpTXm|oZKJ`^ckF259wn zZ83J`DQL4rr3=k^IdXrEAPvp(keirb(yf_*!MZ~ z8-je%g~QFxQPZHPu_;dRgfh0+WVtQ}*!$HD5X_Xqrv*TR&0qwx%qsVy5B{z;J8Ur0 zcQ4Bs{Ik#C4j;&UiQn?ywLhZ8H=zG}Rj6@5(Gzx)pS8h1)v3?|Wav)bb8GcG{wwyn zYjnlA;=KQcbItrK;-=E)FAjZjq|jHNnDZHR&$Q;^hH?|2^$kAxu*q%Z+CDb`4%atr zTZ3196KvKRYo~?XaOR(r;>Vx+^)2AyA9*NhJol_xRVlWd)e~YZPD*@YY7>CMU=?+o zK(X{6a)Jrh(ng0+t8y>Yn#;Kfkbk-lK-Qicr@XIzd~LJ-io?yK9*6MWNyU>IEggB5 zIVU{qG_S}@Ye8GHjWkE5o-;c-*a$opG!$5Pz;~@`A1g!2;J)H`yK@WU!1kbn_eA+}2R63-_V;7z*JV4*E{g7|eI_)0*_MYZ z^NCm7Bh_HNTH7SGP+eHV zO@6)#Q028Sgr|+YCDoaJD~Xb@=&zgFt^!EzsPZg4W$%shm++_$ihq!d1GpP8)|QYD zPz;iVLAxc!^W|~ZR;pt%OQO8$(4p>e>_0!1?*B2*!l7$ZE9bs| z=B`%r+F!lj-1?1p+_;s});1s>2kf_@U&q$t?gSr1J4D|b;v_InrI@fbK>v9>)w#^#+qwmlY7n1^VK9X^lKb;sN>(8X)T>yQ& z?1G`om34z+?f1peLqmUrtDTX7=ShGnE6t&vWjW?t&he)hdTtwc{Lj35j-B<#C&x-0{rDwQp79E$ZE)FF)(6r}J^gWW?S~&Xk6vgm zlb9C=F!=ZTL^}Mr&WIup#|wED=BTk9YFk{t?Y@EsUGEu>Ip* zS2Sxrj%6_F(U`DQJj#)>)75FzRaPDtwvlA3TylJo`guqrj($0F$ZimaaOCZozjuPc z+xX!?&q{#!$hFMxs{v-lz^^3kjL$Ljal#{4nLO;H6EfGa*GBuj035+JViim%j_gzR zS(g3fa<xt9M;p148xaNA^+}%TG)g88`k}Ie6_m9m2*58e|gW3n!jD}3$-2Ki6cMi*Re6Z>dF;&KNpv9Z|sj%0OXQIeyMr$ zRco`QJ_mI$UA!Y5&nADLW#2IP7X-Q5A9&lE{!&^AKrUP5Rc6M{kw|hpTq1b)miAtN zYL_@O9=+=Q@(|yJ1N`_=<>okyESJSBH$Hc$2-=qbAvpAOOaMaJ4oI|84Mlg`npi5`vNg_NTW5AQu{@Tqb70tH z40ZI+jO6WeDA`21=PSGsu(YnoMtr+{nF*q-7H@qFFe$J3zRg07dsFWvD{vgKvwu&? zcQUPUaT$P=b=2jTGAZjXrvr;VCII1F?d{tU{PNXzVp3DaWS;=Cj(XN#PM2-pEB!IZ z_A1*gJo1-yAO7oo-d9)HAAeHH`s{b#)&tEQ%V!EUY`mQPD|t9&qkfXk?*}Lq`DBUT zli8G}ShYQtS^m#4ft9V>fo=_5l=Yva(P`t?SNXp9@5`aH^`R9{zzOJxLiNUw!Qw}wpTiG5|;qf zj|}i654pzOvrVtZ1zT;gt2Rx;0H1aJeY0Z?D>5URTMxv$46<#Xm-^-O!|5J+(_UVc zV$z_C-w&Ax6y1i~rsKj>j(Ipr?#z=7ik?KpM}@e?7-RZ(IA1 zZvOXfcPyJN7uqLFsAp64#T_;Q$ZgGjUs}?hvF|w@$GQ6pr%>AJ!Bv&_kUavJR6}^D z+X{gEVmoc!-e^xUYKzeqhaYV3?ZNh{Q<|u>ef6`k_9$^{*zt?lE&&w&Y9BNB(|Mbp-)=f6l?Wo_RZ{F#CkMl)V_M|*e$}o4p)5)4m%hHi zCE2!bzyD{v@F!+W4E)!8k4Hz0!RS`mqgN~S@|6gzaZ?}l zgEv%ei!r*KQf#mj54xNbQpgwjZrA zIi_r!-+e~_G}(E%JW!HikZ;w=v69^PgVkLgbXJbSYcqJyLE9dvQ6ZDP@?rwSlQ3B> z+XoNt5iE9>ar&9D_9*-ykVhyrALLKG(kYiMRP7~!meXDI+VjTeSDEkfy>{ObfX8E- zBx(-X_ktvUUa<{+`K*~Zz4;%nja352(JFKW$l#AHpElO`z5{jM0%q_R=ELvaEmwvy zpe1p#?-=}xxZ<#ty@bN_DGJEi-Z3?2HFW9?G$@BhAamsO@cUY?~!Yw7SK3mruH zH68_|P+}4}69iH___sl;6JlqK@Rfj8=4QT;j0(K00+4+0cbN%`^OoI2X%#>miVJ(m z80Zy4p+W5l{N}V8plkfni-Wqjr*4kUykh2+RmOmy6aM(}KC^RSjYIYmR@!sl2`u^3 z|L0pSl~2ViC~{GyeskzDa2 zmyGhyBma4^o96B>$AB&MPtp>jHJV;dojGU)pdTCW0N|`Y%QJ^!+x6<(jzPC@R{XU> z27EeMF7rN`S(ZLCFJ*Cym+StLWvp`+;^X6eUS2N+2rqxDY=R&e99x&}Z5`p$KEL

(a>|TpixD3LyC)EUN&6->-6UOr1SxhzvnLW*!Gz{|)wcac)^DwOA9(v{isX_Aazd=6%2(`-4OSKN!VD zSy)yA+*fgU;_f)}&v>xozq$d28W;L`e_M_<2eav}01Wa6205z$+8-{n&C7Sj*}q~# zzS~v-N@yN4Xa6K|XRKuC2gxOyw(h0MNkMVo=kP;u_7AoW{t%WR#DVDjDe-$kS#rfN z;$Ppt(`7C&GW!qAct$jDJiO3r=yW-NG6p*H2e4@iOaBavI#bEz=mahWVCQ~7ha;~K zD(fsCSZPzlW?=VY@{u+PP&`)caLdoiv%FtDY#?wx2upd(SY}8O4>oxc(C41A3G3pg z*gx0Bd`m{y*XmWen;M#iAzyREOf~@7r4sJ)WWM zeD90#mmV4XOK9B~N<1fy#(f+a19$e*FQf0Y$GAwZtbWz|872L3`^H#i%-p$*O`ltR zuzBA8!c{Pa{U(!u!i}wB&;%fJ=Q7y7pKMQg=PPeJMshk<$Mu9I*Mz+*+js~N-WeZ^ z^;l3}&JUA-XkW`M8@P_!eE>ObUH}B1fnT_=AL{4JyMJtu5|Cvi9sl2*_c^Z*ifzFQ z2g9e?gjvM)_FD`XRxaN{aRCAc*YVFS9=6>_?zh3;fbJ9TrCf^5^-s+T9b}di8xsM} z{IegG5wcGXf6*oYvZ0W4|CcJjb4-zUr4>Ice99 zGX{Xy?N5QzrCC?X*WD45fPQR!ZqD!vRroL59!n|fGQc1|;2dToxr}VM_GDZxf0E5| z9{o#x2%P@i`tfxG`yg}Y@+bL0pZyHi?kxYbHq)MX$@|;mvH0JxGyfbLgFp2Sx3{y~ zznTPO9OZZuU}=Dv5SOJ`US(C_uuTF0>N$&c{4{`y)wD=6vG+gC)%2-Th97KRuOZRswtq06xiSC(Jpc**;hJ=y9m z(}(6yIQdeZy1de%|qI{ylr1Zc-?DUbijR(bZ1EZ0}8+9{al&u?DjdBzBk{Ugiu zPgCyOP}iA0Wm4W<#Gp8o3zTtmK=uzt^-)wf(D*`Q6uIg_133o6<#1r>Og$``M`zht z@H-csBlQ#HY&Q7>b%Kv7;=bA6={*fOSObGfZ`&hL7V5`=S>g5^V`nLUA`T&Af-nRY7 znpX$PWp}w8&Kd@Oyxu+5Z~B{4&0AldY;lx8O0Ki+NB)|#f3qydl;=o>*}u0PysEAO z^eAgvk(2s*1iXoHh#~{Sbcp|T)8;qa18}+Tar_1q0?USVRbr#9*|qR6{5*2mDW7>} zY;$1T*@6D2+hs7}ln>`m`hE_cw0Gz0wv8hI%-n@>y?;>beU4mb(9iWxYk${@odfOe zTCv0ABbqIn7IpN*{PX(RbKqE~jq_&2A3FQAF@hs~5}q%>aIuZ#pd-b>7p1~$-EUvG zP}dwpc1)ceMW+bsl0x!X8~iECX0lBLro7ue-UpV1{yzJQMtqrduou@Q!h(y;?*SP7 zY+RplzXle5%(I7^QP0G^1e@$lYa|~idu?I)UvcGJ?Pz($+|NregEDK+K+b}NsdSO! zUVLq=4gND~A71^Xna!jx&UADh{1L!gWBkPZ7cp17noxMeH}(2h^#G@jbp5=~MSb6@ zIQ#cD+a@L^Sho9xa_$q=v46wP`o&9=yl*V;bdpsNz4rVqe#TF(W&b`e+~QM?OgPFU z>B#f`Kqu^=W2eU0!C@7t!&``3zIfb^i2#GXa@l5_WSLL0%i(zJkBLA($p*PN9g||D zn7@at0?;}1y>jt@Qxc!@p?wrs>B*0BiNKO*YRA!@Q+w#b^XIw8%D%EG(l-8#ax>$J+zhdXh&2udMi!kSjSSJd@s6D3my){St z2k8H8W9f;T=X;(vnM?BI(nUj#-P$K%k@0;#>RFEkbtVB?=0`@I!Jm}zpO()JZ3CW9 z4E{)??QkL^|FoR{Uvb#CZK2cn;6GyO>RnawfeV@9peDZEuO4gm95`Cq8{;PIObF0r z>?gJP-D~3desC*Br-;5X(R-8Q#3J)jCboD>JdG`aXdXYblu9jlYXj6M<*QcQ={oBU4lv59aCb&320#rw0MB#X7(?m9q#uBExTgBfdPey@N3w69H28OTB}m zUNF(hcK_)f0BlIIqntTU9Bp59ItY{Tl!YPZqqaDwZM-dxBeI0Cviu^aT)7Y^nGnvK zZ@kz{yUG4~)=eKbt6!eetlT@h#p5>`TyxAjoZ-IO48p4oay<}Z${MHITMP!`4I@0T zK^Wx1C`U%hc)hfWsY| z{W_mFCj3!{vp(i$_1s6IVwHfje8)@8iXAUI<{$m5Da}9r<0-AXY6vHRhBcQ7r1JhL zq^R=%FN`-^~5+ z{chC6tf1kB#p?JV<#I?`|I)qxCA-_-In2lj0;!_7kk**3EPL`nscmOy`?zc$W%DR5 zGnRj>DOVk3OX6$&I4YD97F^P}Uba*OB_}DasI_(EeH|FtJKi`3ahuc|QSECx<)x`N z0A~AKmY?C`%(2MNAp49H7qW~UWDiCu$3nO9UE#l{5Ts+!zIU+)%Z{{K?Q3*h-*70F z>*@`D#Q>$87hI~M?Itsew&-|j;~anDZI8JdOFJQP3lFZP^mew@8mD3qmrnvZwwIb) z?8ZOc{lDA>{y}~AU;lBu{jCJ;!Hb5RCjzu@QW&*Mm;`XAzuL^e|Ac+ipV$nt&s?`p znb^T=zpnX(_ZvQo|G@{%!e49e6QIr4&WRfU;Za}6PxdWc#;MPcW$e~Dhw5>HjsxX+ zlPQTy_Str*P6wx~+c=R3-)h@fq?4bFp**Oa?R9_lS|t5;G8v$(c(c9AvLTm$mG>Ns zGkn#9$J%GEWFMCXKy*{)LKC)ehR;fX?1`E(GS2>mmA!B~cN~mA2Bd@80d~ab>!wCS zAY<~JR_}S)gXci|M>YvyS7E<#zCET;miiH9d;W@&g2-Ih`5&YR5?4|5)c_-S*8b1| z?t_aRVHL;5S3AD+R+c|!==!RP#p8es_N}fsF4^*h2TEx~ zGw;I>n!V$CU(%{=W5FHw8p4@V-^aDj*~==fyV2Y5(XqEJj~_w$;@vN4B5Q?#Xw&ZJXD&kDyI|zrFSezxbRd`9nvN z|6I;8*`e=q$%dRHJ94E@vKNkg_tF`SKLOyohD{Lp);4e*eVYLzblv@Fmon@zK*iXP zCF*8Z6#mx=tqc>XoghSA_EED{fTi)0rfDzQ%bZFq#KqD-NyoZ}Y^2k#u{a@@14m(M zRv4Q6@w@J;di9h1D#uJK0g~lB2p|kvxV;Z*fnz4x>28UqU|zcGPyyR-!M5qaA^VbR z5}ZO6|uUp>^Ucx8I!EI`lXmppuyjw>L=sXXI>^y|VE z^V(0yNy101t#f^!NdWt>pZu6B@nJRhB8IuOa@vkLVa=U!+u_zxF+ z?D?nkL25tY_UgB+>plVlSAFbZKbSCbbsXy9b+g|(a@jv?i>&KsR3`d#z2f??dK2ZB7 z9tR9PzIgnPG~E7sZ*NRG{P;10NpmMQv!8ge@(+r4|3ga}zs4U*i>4b7bshyI{eAnF zYyL(P90T}?_m6(d4j588ey5zZ-R$*`{D-&3B{l4KY(E(8@c(>E*_Oomfkooa5eM!7VRzArOe(&mLAF{Lj7tL*Sn#qNbJd0B)|V&O_^#W?&5woC@_xUgJ8@6Etm3>4 z{zKz4S?QxOQ`-2j+cM`s>7=%=R_>qS{)oTNr8+u){@*xU2G%}SrO_sf_W@))Jk;%R_B_;u~Km7uO+0uVWH0=Lvh`sA14WA@Y4T_zSN|K)au!Zy#HBU&WYJEz3^%a606~?AQK_eU1Tt z|NB3T#}^eI2KR2br`fyoP}iTx%<0^%)4MtvXi4$(^HXn}bKSd(Kki~MGTRxa#?`*P zVdY!COI&5T%!TZ&O+$b8gh8(|c|H3_(c>ay+C1Tvv3AY>U~}Jh?ASzRLhWY+lAT@L z{+=1EgVTKg*cA&3&HTl;I@iw*ZS%aF$`b)N?_CQHbnJqs<$QkEOhk^=Du8o3&{fUYtJ^a=bhqxC+zdMV zcmK8hF#-7Kl=WhYCzsuY=|)espZwB}EprY=Ib3_=Gyt!7d4@}crQ$v<&%BiP+Y@G2w6g%oy+%<)4NIb~oQ?ZVE zI9^tC@$qhKee88xZ8aeI$g!e0vEnB8cl_PBtb)CKTzAc=X6k45cwPRF|1|FAR(+fe z{s8)IhUfGX?ePKUbuY(@YO)V_j@@xpbHt7lamqh+Gpm~$-i?<%AsUEvaMS$4h222h zPT#{Hk6uvQ<-7&^jgxWqAAMAgZ8TZXb!rvBn`u$8@1p&73_en>r<-!q zu^3$UE<5D<>K|frocH;>7p5Z}*be0G!Zv%e`l-$$VcT3 zaHG|LeCGd?1KXS@f^9i5`Rw#%2-^5e`1EIgP<)#r_4xxo{d~m^=bw0DC7|W}q%(hg zU!2_h*SeKi1?WrwO03!c&12fXn{mx8R|XA@v*cZu%E++YGLC_NMDwM2@q1tUu>ic! zt;{OG&K(CFE1#oOIDUj>Zfmi3SDRmZL;UfZ!bRpucHTg<^O=V1?YgN3|A!ZGR$ug% zKei*@OxNd8{TVychnq$yC!|i@z#rMO{ygf3T#3F3Tr2F`c^#a6^gbWA6N%-wEiQjR z#!;cjepnfJZAV<66hA1%tG+>&?V{esCO!B$w#@I7007BAHot_Hu;a{M$^BU6+6{L0 z@A`IT=>n6r?GLNr;*lJb;`caHXwg5d;Q2caHp|N-V2E9hXSO}-pLvOkB)`g$WgHEd z{|E5}koK{MRE=gD30wVqnPpwD) zXzm;C!2hvEwlM@H40~7C<*zA9JN$?{!xo}vit}}k@q<0>}{bNrOkLnuyRR_~)2Lemz zUz>WS(IlYdiGFSCfoI#{8OHzMcC>MJc&y?ywjqz*XWLx2GJZ+fzv}tfe`G&7u(bfG zk%EA+2ZEm-+}c?QcoM^^IsQ#LWsBmmJM|CsUOADQR8&{R9GTReHJ)8MbO z@JEl^eFZZY)kporK|YOvKSkCm^Q7Awwu|C`6gy)hiG*vgM`0?+ZlyLib= zy998+N-$q)M$zzNZ=ZKTbOH)GB=X}&&NoZ~4s1E#9pTE-(3vY{`ptga2hjcU+w6O> zUQZhq3dH3mVj@6N$E)l@+o-YqI&!58_f2aq9Eo=dNH)ms<6{?_E3R)>0ix+<0arBB zi{c<3#8bM&b<*c}a$8<}VPEqClT}N||Fd6@9%a1F6T(&JD@&cpSyf&{m3ui)XW){UfdiEe0*ji-<^lUS#5-Oj4a(sc)xt$dT%5 zCwAfy2RZtWGjGAc^YJ!2(_A`bh#fo(_Bpvf1cj>~pQ}vQji=ksdGHr^=6UJcbDFtd zx4)1mo&uWk$nNIs#W+g~Kjq8n728;F6COHHR{;=r`Uim}@s=i7U0?dpvsFAtues3N z@b2Z0Ls^N3zJVLx;t|GkDT^@MA^Nk|2i!+wa^hBEf-wHhDL%MMrgmxHh&S8y<58Vl zsqz$o>Y0Z@KKw*u+}`7B8z(#QG6|5smDkxayL^^*Z7yg3;ivEzMm!Gl`tbWpzT`)H z;=MaR_G0yEzz%OQbUTq)-qs@?@ebliX2~w3vQs=99P%$a_duU`L&pz>vP_)YxsO|CR+ zM|;yBGNNMnf4CHUg|vVaFIAQ0cl(R+gD)NOKlyW8%C~~BEdQ&Fo-%_!WyiU3w8eYP zHt4qfClktV=}ayi`p=!;9r0S3AFa9{tPYM<0B|JdspaC_Q zC|KUl@gWm}eLF-~l*ELNPrux+J7>X3hm3e@n@e4>kKl1)`&@d48*jS_4hDNZB$oYE zR=nKk=b;wAmB9eC>khjIfCLvwc8X8!A|5XrW{9rzfm4(+*dv=QF0Xq86tVU#%l{<# z^U5%riFR#YDVT^McxvMeATC!K5G>{BTNvVZ1RNjNnZ93E-7O%gNniwVj4BN3E+sP| z$8Shn{D~WUl3Ko~vz6|V_xCpp{xpoT*WcZ5)o2%T$C_jP9-$);?g2mtKiBwq^B?)N zE3d+9#9IQEKdSE@K1T>ON%!+LF8o5WXz>i&#&}rpHG%QVaYun+O0hs?om}G zB3BD6jMe>-HPorEyl5M>HS3@{yYIth+#NQe0x)HzGoAZ_&&wlx;HTns;OK0_WZ-o9 zi&NC)%haA!mv6~iXYv|+;5{4zV#A>CbsSovJm$VB%}3AJJpj~wTM7juk>VL?1H7k1 z1Qc67l!djTm&t)2v%CGTd%iq+CbY?qGdZwjekIwosKEd1i*+CDb{ zM!S-&`OxU;re$|thBKe_Q?K?`CUxq@O~1{xM*)l4G1v{4u%}-gR>wcsv}q`{2$>r0D|S({*~M9WJU*1fz`kZKiJ`XNk@+F zNb=`}Z3)vu#_gn_@rf_;5t-DDTWjBQ4rw}INq zK2@`OA+rzx*qYHNW{gdz$~^zug&+{;$}8$i4)$wk8>K`3H)6wOAzktp#AHMuyvtr*&X9TR+ z+^}%3-FRD6OWkoUv5m>bpNKn>CBiqK92@1#Eh@f{p2%ES3qJUx6PN6%kG4sG>wF8y zJ|ZnL`PVgmK)^^qIX-13ZrAmA80>lM@A&eY?8ZOK?GxP0q@!KK+Gj2~Fa8xUkobP! zJ@`B}!ymPq{78zNAD>8t%(8rkKRU&t*w8cZpRm=uh`Ugf?6_S9{PAdeR7vrf3vAUn z#P*Xh3mo0Gk609&?5X>Yq;Uk^B$SPTy8kXvcE;k%>yk(z`@m?G04}u+q{oVV&m5g( z!XQ%_-MYVwJLNH@oln|ifOb^7woxWDPLCVDHIvD1GpU&r%<+ zdgi*uuLWalso3>HL*+I=dfbW)Ox97)342n;Q05N*tkdyHEP4bm+gT*e)AnT?0|@mL z0DN%s$=qSs-F|k)U4bch*W$wK5CmRvyFisfUf``W%*~Y4k41HKoavMF`>EqQguV^` zB{o04Q*1xIE*=AvuVRr5OGq9|^i%e)GWL{LoUt3xOWbPr-|j6PAaHeZsd;N#JOLnk zAglz8goR2@0x|F_;fuyI3HVJW0_GJQ_N)SsDv!y%qcU$UJ685?S~rS4xU0Ap6kGLG zG>$hPeS6`Qi??6Ta&$fk@bgp4mIM9D<>e?1haNamFVi@7q_7Rh!KT2%Le|{3+s(I}@ zFM_P~cio8gk0k|TY~kh8k4+fKg_E2-+G6{#1g`z@#9x$20dcC$_{qlAUTqU!3zE<9 zV}I1fCIK-SnBkxtTWb|1bh1Yxj;prY&$cCRbCG*oB{=rqFK=vbkOoJRy>fBqI=GBS zr#d42?XS)EA%vVO_~eC{-2J7+5d;uW`IP~MlTjy;&b5nSu}(HYCC?tbp_ zmr;e3{cQ5J_Bfz?Nex`wln0pC?}3hQ*;*v=(w`ce2}*1~xptAmGPmr=6^Hvwb=e!j zV;R=oNh03A*)yW~+dVw;cVqLW4f@>q|K_&#QRVClGrI|p&?BXypZQBpo^e@Da9je& zofTiEE@}`*_LuFmf`Qs2`65=60;uH^abjtv}@P>UKC-Zwb3yKks z{$;*g29oOx@>e|cirm#4+J4-*o;j+K6_8K8YE;9GfJ%Wa{bR)30N8CwshI-?c-{d( zB8IqHWc$O)AC^Y|FK&tBg$ocjUd3ZUXotD$NfI{ zk-f~Mq<=Q4z2Rc*SxF;T2;a6z0Ex>1N|F(-{Hqi{;!I;AiAT0KTww!TYvkf`C9N4} zm#ogrX=9QNx%Lx$eNOa)WEa1?36-UYMjS|<`dJLLlygAd_X^%LgLtu!9L~&(jxAdUeu*Hz`7hh&b`0VkA~WtDeeEmpvI?+e+|g1EG<~z;OuY05#Sq?tmfT+iq?`PT z&a-^>pXIsyfBi4>ta_=LwX%JdTKb0<#eD#()0zk|womL@Syj1^J1WZ+aF$U9zir>4 zB)-%vn=@lb!(V>m9R*Oab8fNMxt4S}eqnMx9R7uEaSuR?z0@%9=O64=XR)7XCjnWm zrvW6R*Ye;mx$;5r&^Kr72XknO0V>PK*^laQeGiW7{GAlL(f8@rx8r&Kc?-ET5ox%1 zq|f;vEPCP@bi-f9Ur5axF8+*%mmB^_G$Eh)yU;d$yyTbT&yxV~VCQ|qZU(K!F7+D6 z!U=l}u%G(;G5GiPl@Z27puIHE=NT@3midRKE(=v|IX)jH2?PVwqht{ElAKbOHNL$_>Wd;U{p^8ZuG|PNuBuj zosAz7r?t(TvE51L!|%oKdgpkM>k`XjSIw5hb8&ZsRvFY@ZuA?7H*OvS9Fzv)hvCP5 z5Z>1YdCV_Q0zS>)-v$(4kba|h%ukQ}Io4o-jCTRZz8_S-F5IAe>&u5i9K;1OqS?0p zP;=Lu>D6SP4gL=4;OvDphu>-PB%m6k!sX&Q^j>>PH2tbr23xvpPNN$Eq4|x6<2rSs z>=c(xJziG=av$E3&h$G511gV=c)3a+xfD-eRKdVPoFPc{NrOMQ9GmROHTYBByX%cc zlYrsy;QHyZ*tE}5u}|T3?W>)0?MAI$TJ%!;gMG0)^AF@)`y^g7w%wgQ>!^xmCcTeRAx9gp3$|bwcUG3GwUy)`|3spV0jxoLc7Z>xS05@eI`ul_=(+nxT@6&HJ<0 z%QpCz$*jdbC}rD0`o8Qx6h06B_+Y^ACmlB%=X3|8jO)jveo>yW{jvss z%poux6nfU*Uj|f$|HpcF{y+He4?6bi9=B^Zmr3H@w(p>!%GY+lPGNGe%q9WE=r)!Y zbcdbE!F>l$HAmOX>>SJ;P_L2)en{b!jEMku`sYai<}75*}erYr&7F6}lS!HXraR-(leph{G0vRx z;Ggl7@jm9GPo4zGZtKGRDtf+b=imv8x2hb6*`P0?U7YzNSKJX*wu%XYCIOwnzYvOd z|G9P&@c7lUh*G9`H1G! z27j$sJ=PX&hzY^Yy9ZAM#vHbtk<$5T?VCU)?))tPgak?e4?p;Kj-ey9?9nej@#HU6 ze75~G<%b@Lfxpj*FD3!%1jVBcL{6Dy|2}4r-w9){_I8M85a!+kr=nAh_sD%SogbWh zHp<&Re$hbGz`l(oF> zdEOz=#z2|X0JWP*fXaBFJa%?0b4gB4Qv3R4p80o(ZNM-AkS$o1H31mJv*(wdtlty3 zhsNa+P<_vuCx7Q|BH~W+mWESy5BGaOUzi*L~Z0w6DH* zcT55@W>9&m`z!5m(r)>L_1>EM<4aAPI!1DN{nPDAz=h5BvXB8hYbV1*&|UtgX4;B_ zD~fzTnacoujQ5$5U3;TlQ?~y02>`ZKaAN;|b$m>LSi-j)&3+|!iF`ME|u1o-kU*Ca#dG?jv-$*?Q zsAGE1Ei6ga4r4hm-#+;|T_(kFCfA zpx@tDGWaKq${*b_8taPpHv#sI9Wh{|&LJ=c|3OKO5-0hf@*vy33@#;cP^Uax@*QJ_ zm-8F;@dI4B@HK!Jz2eB&kVk+aw=ZSsaPRpVpv7YU_{#DR7g*7U&QZ$1gEMl zocQql&fNE#D-V`|!|EipF=}>a`$J!EzF{i?b-xu~!VdKt9Gu}#wpSF251c2nUweL| z^Tm0UGZiJa919UU69i2Hh!+ZSl^>jJlRzA#wmZn`_rJQQS%3R{?-P*|!^RKnj`lFI zn>o;2YUX?x_nx4KZ_4#C_=Bs?fXXpN$|dEpWXkW}`;ryYvF;@7t4qy2FTK<-2?)Po zk;@<2q?8-|FhTAq#ZagsuA){p_RjJaO>a}veBm$FML$`4fA}9g)G!GkDfaBQ`ZB$j zIm=gj`NLyYcRS9OY6rZ`b45VA;aq)HK)4BzV>_-W-$>WL6Sa4kl-??w{G|3lN=@`l;n> zJNdiorZ-=G=#ZNjr8`%=@$CZJe!-9_KKZ$QoBin6KYAS9?0*$6nb`MV+C;zv;`64O z5qvcjKKVkP`Bf&*I?2Ty+GrQLd)Gczd`Il~TxN=A);-+p*%?d!vduZ=y`O(lbRHJ2 ziP)nSn0kqwTuE^$7Y4m##jWLe7+xw zxe?Xfr7@PWEoHhXr{HM62VhQo`J(fE zxZwR}{O;~50JdNF^L5eWLO8-~KL795S@SP7-&y>%>eF{g@|o+H)_BU`uR3{6iq~Wp z?5sZ=TL#7mweNSV*xM}L5-T*E`TH-aVce(HoKgXlj55(+S+f) zU65PhwTtO5pSm{WrRbRFpLoiu#aFQ=zRi#EGN-2b;%~+X-iKlg?3?@fNSVG_{qi>G9Ff$jSU zFZw?$-nPrtei=}DJB7y+{$&~r!MTsgUY@`Ou^2g8L`tM&x1dF{Uo0uXJ@qy@*P_`6Wr`+*OXYhM8O*} z_YGO%!M5*vkgOkr*A1xl5s%_SM{6UsrETePK(L(o6PbT8C`HA2<}eW;wdPSZpAW5= z>`)BcB>7fb)CT2loHoe&3E6!QKHk|!8NHv!(g;)Q0T4gL{Bkcj6GXT?p6*ufPm1i`Xu%8_Q(c$pC29v{tKbQ3xxSy`QCzZM`Cl?W^Opio3a9|!WD=mbv|n@B=t!L1lcH+v zFEK<%jA-sOy+W@#3@TYIh$Pqw4>n(!%)|;0>XT^8n>O(CQ9As0Tbr%l+V1`&BUihX z4=3x|aBR9qzXzb|Jg#=o4|%kq|6PVaK0OEAmr*a|b&_E9krWZ@x8V86U+$DIheLiHKEN*zF+;pRTZfGXoczrYV<{O%+Rz^lz zI(xe3Y;^F+w`6M$*|H)2Oki1Ucj(!MOgZuJ0V^5Sin9_~fwqj8!IEuY9dDb6AsBcU zfb$i?S=-)luxyOE#Kq*uR6Q=|ERAYaRx&=sm8U2RwED=trISr?$CGyL3$5OQxaCs&mj)eP z0?U3vZd>|}zBi?}z4V{ApP)_twHZGH?mnP`=WFL<@ONCXiNMf1X|btFm*+lt?R(EU zCVu9FKRPOG{$jUYvx=_p5R)bMVY$cS5`+}M1xO|#!zS>clpZ)U!-@==C0XGwZ4$ts z&vk!3;<;z#3(X%s8*dtujoJ@4=?`y@zm%si82DFSbHshq&XqO^Kt{rb$NY|c@j|oh z>htzF*E~PzTyxw9e-P{$yPA>i0dPNN_jx<}@Aioy6@(SPzVol6Z%SOSk<=DJ$t4R! zOQU*6Z}`}UMAs4qU)zt^RM*8>l@-E{jmcbZMpxa*U%=#dAlmP7l;&YG!zKaw+JB+< z=EvE8ZbL-jF1=_kkogyT2)qX9I(K3l!@%b0$+UO^$)nyda zkFF}d@Z*p90VfFiKhpjLHfhO;m>eJ;ZP)glPw_een8`4&p{BZ2}E9D{h4+`Fqeab{+7^6X5@XL#en!d}Dq#236M z9>vx7z03x827FTJ=qRuHMmj1y>Noez_U0#K*l_b79ZO=1jD8nS-#2>cupxzS~J0Xc=A_C-MQQ!&QjbOhsxACR_vemTG}uC|SS@cbSCnOKW*yb4e83YL9K zC#*2yS6yvIF5OU@wy#_#K(X=OGMSp_Jf^#N^M&T)X>olGf5gOK?+GJ#iV-$HFrBCu z?k(48T^}I%xwVP2(DO6w+Mfw!11~<{l#G1LuiM#wP^30G8$q}c{K=y^l+(OT@E|*c}*i=@Y^~er=aJHE~acs3=5-|0g zJy+IAb|92GHareU5~p&>j*NS^x#3JKu}P+b)_JrCOzA&5fGn{Rux;z$$2HVOa@kZG zWMx-(WLD7uq4-TwE#rmX7rO z(BH}COPtCpuEgj8DM*vm{h9RiZ+#bl`3P0ss&9&sWtGPr*e1yk>G+5;+cwrH7p^2% z8!~n{8E5{A6ug&9U$r*o0~xN0PF+zNiDBLEtO9I4bwj91coko8OakWLVEZTO&uyR5 z_)UNUn@;^hiN5&Zysx=0#i1CP44g@KLrJb2BbAj)#-n~b1>nhimnOCivN$B;9sn;V z84Z_SIqecojZDp|+>+s2<*S#TY~Fh@-aR52dHemfiYIxCTk}xwFYd#Wj*-2&)E|vv(Hd$&hH=Rx!SU8<`M1o$ctjPO#&7ku;ZpQ z&sPG>QZED=v-$dF!PxiJogGdM>Kr5a*?&N-&P{xiWooZ-w;9kE(ko{rpp%NtQ_tP! z_W{)XrQKy<$#nf6d)@q}cAvMq{I$d{8Ms>ZV*yFX{1QM_hP)~#ezzU`iI30tzkarU z83dN z{+%lOOcRg)p~^{ZP@Z*^CGXqy+akN%PHqHLQmm_HztXIly}wyK=ao*Mdy@>5d6CV1 z@xIhfdxX+f0!XC`lCHHyN5W@Lw~n~F(Z`*qzF-xAkJ_85_s;Xt_5*NTl5Y9^u^5mRi8znz6B)P%4sql12#hJ@J-*9k_I*JyiD`iR<}lYvcwfNu{ip&T|0%iN2+uq900|I^b?Q z)ej4<{Gj2paBTaLE}J8pe<7atukzx1xI<;(3o~lhfT=0P{n5JgJ7w~=t$@0zxU2j9 z+-|$+vLx9pe~3H%i>+shu8m;jBWr!1zrDTO>EEgv$#hJJU%BL+J}S=TNm$Q^(XBpP z{yvDsNW5dpL;#y&Qu5Lk&L&3)mus&|2H6l>jYCVP6rea#L#*%OiGtYN) zz5<|N$sr(Tpr>p2(nez=#~%{|Rsw{@Nw$?d=bZghC+Q0rHN03d0x;X3T{tWkFmYN5 zql)e7y79ONgNKFvH9cG2p-ofH@d%H-menQ&iVdF2wZ&NsaAX_X zx1)L9PFDnPt$QIjaVXm`EarxRo*U4g zJBL04v~p1X&gi@SK7g{DOlkkqo%(7V13v!x{@q7$8vPDy>lW2NSjdwA*v5WAMsM&4 zAY~Fft0&&vY&!i`>!-+N%ToX(#X(u|P$mu1WsHso2YdgN5HPgHI+hasVE;DEpWCdw zWY_wwE^bG99RlQG8%+9+Nf%tz)}V^#?2D6|@BjLP{uDs}ck74qzB<5PYs)IYhxRlW zTnzldsW=EK6oouKdTXG`WRBUh9S#HED zxQEt1+B~u5Cyo)h`!T#9yOuxt)`0JU>xl<+8`rLxZ+l~cqv*gU40yFS=g9Y*o7Bv| z@;$?cZ4JKI>^jpvQR21+02{wF#h>@1?@9LqZ|jHeW7PE+pz7o#<=EU|f6u@}3A$!Z z`TGV>U5YV5?*fSLgH7&jbpSgh`K2yDl#%nOACCh{KGOz%;a@uM&jP#7R{#W3aIx$k z4UZ0hR>|1yf4(#zV&y`Ti#yA5E95h<*5SsTWtpSPWs!mH5V!t@aQMy)JO>}?#FZ19 z6JxD2dL;5Qgu`&F$K2?6=P0p4_b)e2ZvN$lST=?`ei-d>9y{}A>3`iyn^387#XlTR zu8I|vBEr-Y5h{*|&zzfZ(r>@r+&TWB5Bhgbu(uuB;7`i2>VT14ZXH-Q;wE48#_?v+ z>&Ke~uXS%&6n^~^4_oL&)F$fD#t}{E+vfS;Z%}n>_>X_ zjA1uyv4>15p3Qx1?J{xBO9hvetB zPj0@o=&SX3bywA&JB{5jpe<Tc2@sbocn`pG`?T^1fvq?s z0dr*0i8}aKr$s)5Ljv-Y{FqL4FB(MtYFi2hc?8%RIo7I!uyWg?qqOIo-3TmU@y7wd z;GYxR{X({-_xiQbA*NgQrVX-|`W(pIwP8rFoj&V1IGlSNMF(!tXYH<8(|q{9UE%Q;Rm5c# z>KB3b*r?cu@>>wT0{a zO7hL%PmO#qM!7v;ch+;_Wkvc&KFuIzG%Z^Rq%W#aKaPo>SoO2EJL{?g#E@~YKa zt*pLjn$4S*xd|`-$@}SQCI2sC{GGdZ%W`k0_EVn&lU#7~KNpwi zjxIjoc1|&b|59_qPWvtI@jqej1K)wet)y?Tz0z@*C1WLKjPW{@R<992=qPxwAqd_gMOs;dm!AxSvUIGJ{;}1S~x5| zLWJYxW$n#^)HUE!R_xAUg4=J2lTUOc^tp^I+cEgN?Du}p7Fr6Sa+di0$IgEQB1qNQ zi;&;_2WOl>o5#jYZ=F6CuX0q7@Gicmy#Wv#ZzQ=D{_X4b7)KVE!Lq~c-!N8V`uV~4 zZ2~}p-H~-=uN{jY<*^yN!RL>7?z%t??k2^dY(8EU*NIdgE;sWbeul$J&RKr=l<$(K zHb1x}zFe{y&d=fpo-h7&V0ClsNT22sz=GH8wVy!ksaS zS2=^f27Tq&e$M=CPd9#3vi~PMx}YP^Ht_Ne08-noI41w6BX+xZas1$G3smgnE9_A~Ae{Lt zM(zQ?Gdo+de!k#Fd*?+Q1~tzyth?#uYWv_@c0;UTb;p0@!oYl^WAG>Entz|Stw+0d zpPP6YOl@-Y?{12p>bqCJ^3Hdg4eQPWwPb;mwlBS=eMNY-owVd++L?@}>N1@5Qxv z)jR!ZJxj}9zAGjGU>N)>*6P_G@z1`sod9IrAe$rSZSXG+>#KkvAz{GveZSd{I>-X{ z=G%tBpC9+YqimW-&KzofHr4{h;*nSEjX|*zfUZC(x*apAuyTnBEiVGiveXC=Zyw~P zmH-eR3H|gLlbS=e3J^B-6)4w?(9f7Owt4T_^8WIb_8$4o@ruZn$6mX6Qw%QPn>XwW zW!c(`{pSQ!JYi#JIyU$RYe5!FutrGwQ6Yqno;u|4(f3a;1_e{%L#UV? z==EUp_`IEAs#yH&-X;M`$i;!p$isF<<2-@jY@bvyR<2wn@P1!_7lv}~3-JuXF!(FU z<~%ngnx89eQX*Lw?~K1has%#wG>Jm%GF?e$Vry2Z}axCEb zF{>^P^1VOiJ|!6V_ERus%f9woHt<_{omE^N5I-ix<2D?m1%O=KEvA)0!Pz~NfT1?w zho=BC4>p|X@0`IIb~s}2?*p^`-v69!x#H%#JXfL!IH6kdCpKGc6~HSHWSo@|x!B5T zH)r?U_3sI}{Zo9Bkz?n%4W>N%9|;GcVDML(v*U2}4PxKoX&v9-Pb(>-`7CIOCpJbu>i^>#l%F5geuLbreElEV;BPs;I_;<8^4Pca*hFTZXQmu8nARA1Fk!Qh8UfbRBJ zOyKkg;N&T>T#Yk)oIG)bJ@S_Z{Z3Hf8~d@>vgf0YA7qlBJsw8Xm9p=?O!ZI7TMj!0 zac-%OS>{W!?_4#eVHF?%fc$^m4_+_!`(J0ZrySEo2HJn8ogg(L80!{)YBxgaSvC^k zpiVgbm3zV|4l94`0BlGa_$hmU#>`4U)IIZ!9RA?1rn@idZL$M*6H98bvm&~rEe${t zaYis6R*4IF=2Ux*jK9zvnQ*Z=%4g!m=B)>(HeBatGN3jMvSkuL%A6bCqFu$I#~+P& z?#+WhBkZE?b3VA4>-$BSO4_MwO`m;v+2{wgkx78A@0Sj795LX52}0&lUu?Pl&A_27 zq5PW_ahE9d)>kO03m5w~>gR1GK%9g8V5Z|DIP(|5UO&5k=*ke!`(N?qC_m$;tn2>x znX}^!53U>?&^LG3gkX?wmi#wvSmsOrD6f7b42|`o@NBZG=#GNJH8E^ac-LekdId0?cZ#BIp5fKuoiuUL*8;a&Yi`k&#AhHXao%K zxi5;9JJWIDoM0dM+rlj0wo<@^p!6AoJxl%M^RACveu`nmdfhl>>-(^Pbo@s9qTPD# zU-;Y?-081`To`gD2uhMu&-PiKvBHp#X7WffPRYGm+CIiE2_P32IrUSk-fm8=h>3jL zpVoh-Jh?*GoriMDN9M$z+xV@Nxx%JvkCg)_nY-L_$#fSe4tZT zThNP>!JeglCIgiDfSWQk2LFiDI=~XL95=E)=a?y_9hPM*IFeQdRL}NS1Pid>>1-$Omyoba1q`i8IMTg7XQ0oFd%w+RID_+&fk#XivyzwJM z&zZbzm>AT!kcS$r%SXOx*YE8!@~ybfz!kOu*T-g^ILN(caR2~707*naRM|Hzu01}$ z%GE@>zArp+O75~!nN;4(j-9a1VS4KKuYaPs|LJwj1MAlzcAvtL-@BQcISW`Gimxg! zzS?*P`+^@%a6_>{()PDui3cM~;B#C@AmN zQV<-W&)i6ITvM;rnSaO?1GsiofLa?L<;>af)xq_?)1@8QlQM_uuCPsxBgfnEl{z8I zy=TqW*WR;}FYl>v>|5Ii%ME~}LB604oSYPn$lUI-aTOdKev7r7Xy9jnqP$>w+!*(P zuLd};dG6i`jx_l#prL_BK!cFo#^k_R;&+RVnK$442&?$3b1N{=*JLKTJpgRR4~lCj zF9iH2kQ9s+iG~EH?37FH0NZe;Ps;jipX2J|RQCu{2$>5^KdHSj>0mG=8A0NZO|*f- z(v-B^6v2jaVwL@;s#E$VSfh`93^d11QRU7Sex%n>+{;&fcuI=L*KgjG{ z->OtL8UC(q7}B+KIQy}Uk7)&9*HQbcQ`Qhc!+-aI+&-G6hQ-052Z*-XGI?XoXy;qiS}gF!R-G{JA~ZqFP%tVvMy@zZT9O zRmYZX0}9*65;AYcuA|+F;t@cvEfacJ>2tamHWvg*NLw zTM3}Ow_%;SR3enbqh3o(CG|h<^0#h-VYD?jz4i}t;zd_C_(uuagpUyV7pnrEunJHT z_rt;stx1J}f8lf)#D!3@o(xwTwN!YbwYq+o^5tlqlVtN_s zu+70U&%N1l{2;9R0y;|s$o9fo_30>1~G4V0$V<8n=h&JC4zXHsh{EtXYzhP zI*hsedYWQY`gYLv0YI`3cV_G}vUU4_@lkr>G45rkuR8yse)hCo5BSs)`k+uS|3aMl zi*nx=l==Qb9pvp$2R-xVcf#)Id=X**FS301pjgXoeQu_ztX#r}MBdJ16Ln85*)02l%Y?a`8aEZST*{c3(QCl0SWbz<#)J9FK?sPy8*kP67su%72%Ea+dJ-Sg7xpoBby3wCnwv zd&FWsr4M-GvGg{W9Ndv7KNyE4ZOW1uWm!HB*h_BmAbLPepXZfsGO1KKff@wDJD~1SIViNGqj`~ON%65V0BYy&0A203$*sl1@ z-&*dHGbRGdU;Op3T<-E;F-mR%6o1&DVkIgeEI%>0zq9akjQYR@4HCj& z4_}p|1ca2mCwvgD9I%xD%1|ynIVnB`kZpD4K|xwXpT8f#_rB4@r_`V?ZTddDJ?AWV z7hjs0e1K1TU#ARr`s2|*@a!X>&&}<9;g;~AQ(iX2U5`!c!>dcYl#S2{mE(4H9x$0bg zY>@r7C)lH#Q#<9yGc^y{WM6TXz%fP5L2Y7g%&9CpVnd&2-}B zl``^!u6I_wf80;dRE83RKd6kSkNibBtT~%pIDCw7&Ep|%>xxyO^^H|wzLd;^r8>(7 z@g9&jH@w&?m ziJ(#rz8h{*l#)8wAr9^b*!-t!!RbH9QD6Dys}1=?l@{19X0qylgiP>H}Z)4(z;bKNJu3R5ZZs9#m?`bMgJ3gBMim9`%L zQ*V6-dqERH$=oc7HeCt83xK?jWnFE*Z(kV?{KQfHbTYt_ga6pEm*ubgT@Jp4eHjn@ z?rT@WuB&#brsbdi$;WL2;;Rec0Adox*_J?FR@${^!{vScIC&h@f%Wu^J4w9fLVlhV zLVFxA=Z3+*y?6;oDjl)=dD$Q?u`uw*?@&%h1RIyzY>>j0Cl9hJ4Gdvk+i2y>zVZ_U z7~rfQWOk^@5E27!*n#JEGvO%!1*a(5wVts@hbU(5xZ9ru({6F_hm1DVqhwsvvE*Oo z4mnl;NM|nD&4(UqNI!e@&tt(JHu@-_)bR))sI-9$cDV76q)m+Nqzo$nJ$s5_B;s7Z zo(+9Yr5$;c-frcaKlQ4VANS2~|C*e^!$LOwzq!+FV@TSVI_I%+@iMcETOW@KCkeh5fbRv^<(Agm~A#@`j%Mmp0_h&U01= zmfZ|!Jg}C%@!4e98_WHP%N69#djTM2PT8WmZzwPAd>>%YFZJ*{eeC|qeuk|7b29iB zl=@vj2K{V8+SmJU+DZk?eLT9?#ca=x_W@YE*gLM1P(AgH+hOVy`<}Fi^{F%4G!5qd z$`E_c283l^z?tg)tU1p5OB?vX4%hh;6}kPhHQn@>(Jz7+?VdbbO-rmYZ`}F6`hvZD z&OtWx>68}xTMdklyZtMDC5mS60hqQ6$G)L6#?EOY38iJ37lg?DQ*VBkt}&jud9+uS zeKEZIGx_dEaQ6FyPs}jmhy|u?*%6h|22L$+j#XLNR~YzxUS5Cru&pG)ao1Hmc@l#w zl5k)9kGI3|_K{|je%R~(4_S5_uzdR|MbP&uCjlI_HS%w ziPIj>yZ%dD@EH7i^+IPg5{{MY*E=;TIv@e|+bdobOWzCCo$}kihQ|`~(tN*f?htF? z}yA58mx_xP08_B?LI3t69 zwRy@vJZwY*ZXKSF+nzpM0+4Pk?QjX8qc|P08#2l!0A(ETXO7z>066n5o(YG4^-Nv! z)7~Ha`h-fp2R_dJb@(00&--1LM*(ZPU*n(rdcN#AZEExV@u|}?_}3h+FAtvebLrQW zG6^W*e@h1cy2N)+8D8nHX8o}@F7-Fl1AI!0y%(kfU)zewjNK>1yZ*blW9rDe_K7Y3 z*ZX_izq*C{X&U$5$R}r{KDe{=u*A#175omP?DW>SWQSv7{CFGuoAt?&BYo9=_jNhr zZwwo{47esY1Guj62U;`GyU86~rHV@dCr&orwDC+l^9L@-@MUKXxElNe@yzV4EOE4`3odT73DK#_%1ovfpT`wfx8SgMmpFb`i3n#3g~ZA963Vs6>}P z`zWgdkI5teRB5k3f^Ut3Kl3z0-HJghi(;Of?GuYOb1t1v2Ne5bb6;EXgFEq?m8U1f z!9V6DMY#3E&EO{if)e_V?4ejiN*!jK#V_R;Gb1l9>z8F=uC>2~IizEVOGpjg5l zD+4RWnmBH)9eE!Tm+jjV2Y>RuOm6~2=aX3fq$P0Z`?(+kaLoS)p*4&gZrAx?Gr7Oa zN`y4Di?2d)>N4tFm?0nd|8*z3HjTQPvJ~T?gKw$}Az13s0*$no`7FM4Ol=KBs?iwo zxBHGxb}*vPy_Oib zd`rLT5+7}Rc_yCu10=~~0+w$Jm>mzM&lC&t~%w&8M}UM>Y} zd?M~^jV?EdofxMz;@xZ6Ebhgv_=8H^S@Kg5k13Y__cu0$-~P2c2>=d$Fe)XD3tx)W zIBqD*WyFfUJf`XM7kh_?Us0wd>?|$;WDK)TJe^|+xh?y%ol+L@XfuCkb@@4A(q1r2 zSu>tD`{BkvzwD2+n)%#KUixy^wO0~z{ND}HNdWhELkVypk2R^=2Z5IYyxc6Swxw?~ zo^Sml2EV)Dkt@#rL1jGhuy6Q%ib~pav}`X9F;af+@bU4d?md|<2dtC9U(KQ|c+i49 z59wY1#I!ORNiq5#ewG^Su~jbq$G-4nZGT{Zul9$AtJoeJ{6QFfHeU|n@xT%u4c}>g z$D`nVE%NQKvSa$6DQCaguhq7}K=U#d5 z^SPD{;qxtV@E2Tk4*2Gn)+^9=8*@%S2~R3tz4Ji$%I$nTP0Vr&rCP^(87>VhxpGYN zfU7!)0e2ci(0gj0t64SE12gX9XjqMd*xmv-kdVmZ5<%Xa+yQW2qjF&LgA%ws0eLL{_zsJDYedeuE1Oo#+-OYu91!zBKT2Y<=yfdreV2mjz_ zXEfkK-Dv{`dixRZzZGal&chNUPuP-&PlVDcHfaJtCkW|?I;a_s4)YxdTguRACFCX_ z@}I+`K&TND9U`yD9F0FxV+5Y02d6MP36LPhi-EP>3g-~RS|IWJmA@aPP}=DZH}O&C zAW~a$4%POut<KW-9GZDOa6N&)u*D`y)B5rZ9~Ln&sljH+@@F*Hm;cKJ5kPC-hHthFlZk+R z{=RK^P+nx7a$8JV@{mG?NB#WEe<1&heZ#|F?3K$tV1%}Jy_EV4JlkeJjsg;iF;Id~ zP*%20c?6IT>~IVcS6C(T8N=jv<6%V`Vwfl5*ryp!IZ9$s*1$(aBc`>5ekfrx;hRH} zNWXIe$UYqO`b5>`80Z|METhEA#<=xugI$TyQJyhSlK6YkjHkSe0eLASKk4+WXFb7Zxlt|{J`>+rC$^tLSf{?-*rq8|MC`2$P^i-N|m;W z3cOlGT-p&b^ZB^MO@10vJb4T<%%MYe{hz!AwK&Am=baD$L__etelNOY8!^!$bbuv^ zAcpN@vTnL;iyWwfKN@HqoDSGxedTzqMhx8KhnoOFzy$eR2lvf40hT)Qb$-+#iAsDZgpkk8S?`7J z+w<~tiG%C^YOBdNwi)(5S6@c}OagXY#-D4>%W%{B&Z%JPkAv812m$c6nh$iUtnZ)p zbX&Vz3fuO?`#iKE7Dw|YFW9~v5a<3vK9E=rted3tbGbWAq>dbYj5?e$Mtkjoj+pdA zN!+{XXxl8t8M)IRPXSbLG?2x>lK>;y@JGq4&DeS44!#Z?&-;3*EBW?pse=y){I|!<3@;qrj^>!mwd>^}aucA5(-yfCr>-3^q~0Ij zf4g^sVwf)X9l|P35#O+FaEmGh&c~<1RgNu_uqhHFX5aAp%Qn&>=D@tmd@P9JLWe$q zEk2f~)d2^dIG6;0$U}$g`yllLhH~!vqkI)7Hp6h_vOsv`i1~?gr?-R`Vhl_I@{<6- z4FQ8cNMi~ggI02dPG1D1mNbT~WvF7-6(|~_4movEtUPqy7CXX#XjRqI)@Db@6dxn% zGH;Ur3v7XyDh?77YLF`?<;f5cqOBAuF7*VFGPydPZ!`69LEZPs#^sCkNdUt6m`HBJ zvd83(or6&w2Mocm%xp{FGA0Ip5aVkbWFoLZ?h7DMSGA)Sagea^DW>Uce_1}b55SYh zO#LPRnjcbjX=_zBK6lpJCf^C2_NB$A)OQ&CNw7scAJgkt_ht9Ta066KA|}OMXZf_q zB;aJ|woR7bHMiIS;^iL$^fAq@+78BqF4-c0#GKZ*@vVKZ_qORf!M-CP_lG9i7?XWM zbK*jd&y4-WB{IR;A&=52!65dHR!yom_vvK-@RDTSuY#F8ay!{x#*8p&KjTRN5^PJm za|bbyhA?sWsX7xTu%;frtEVb_yIfwAGMN=Ihk6^g5X9 zB;bfl0ua|)8(tYYOWRl4!k##&d-Aq8^H(Ur{M$V?_$#0~pyB2zHLGjI;_rHBc+y9+ zXlzE<@_XZBqK@2>l~im$u(Z~t-#fu!TRaX{0q`UMi2VUj;QnN3f6Wc|0Dw|V3#u|; zLXJ=CE3ak@(YDIx2i>H7AoytD_`9jXoKszHFkzoi51Eh20UvUZx0}|hcX|X+Lz{`F zp})cq?q0FQ@`_3i01+KoLPi^3CVk8potXw_*I}^Rd(j?80+yg9JaELxCA&cG2WaaF z3z#KC>~u(2st$=ofXZF|gpv}uX<9Ki=R(&6g-TspnPaKnAkX`Q@_{P>4fI0cnw1b{@EFq(wWobuwSvIq~_CQQV zlKl4Anf4hoL+|{D59n@KW>sS+n9N;g@zCQBh)}T)S#9ZNz9i-S=x4c)zCjn9p3Xy-|JY1&H5erEQmggLp$>N6o6~H^@+v7*?+Sf z=np)-8L%POwlMUd|4Vtuq}rxavcG&k3_aUDw9d94bRT!)R{Q(yh~?w@ImKkJOUQQiZnNE+>m^zCuZg><|B!&Y{b}b1 ze&Av77dML=_mk!z^*z(`9sBU_`99i&p!z@MdhPx^5H-u&=gK-t-zH1~1X{r%@BKmb z_y2C#C7#EgbjH3fUzZgCFGsMi4xd_WQ*7TJc@Kc5qe;n4t?{mZbSC#15?;91RydpG zH~M=&6SKzS0lt9dQvmeuwO3Z7L~(6OUX40B2;Y-xT(pBv0H6*chHvBiS7q?mSk)X9 z&xY^t{jRt~SM6_o{7?K^9%#hA^Y9VH^vnKrIoy11hb9GVP?s0&rb5(_>!ne6g|Z$0 zr*_`deKVz}oS?n1Y_q7VtSMVtUxp;w&~6H z4~AtA@GM{6gm(smf0dZQ`62emTvgl1`4s@3(Ppcb@TV_!QFg&-+&x-PzD;-!KuP7& z|C+t_df^2RRc|`9^+w%ocV)%9B<3|>A{!;$YY!`_|Kb#v$yh4wBFgY%_af# zD@(?~4S*e?cjS#?^Y-NZ(w+~_{FS()oH0bxKDM^vQNWV=&(5z&rS8PrHUS`i>5n5m z1+JX6BEP%Bi5sez09fDEBpI!7DPYzu8~i;0`ff`vOaL;?xrVczdTQ83^=1uHoc*Wl zQpLA(C7Q7*jo7j?akK>I>UZJBH|Q0>m>PxEQv--@mY^ zXXj%QK$5m#b)b$G+&-PeJhm_I;j7oHov=4f0xrK$%UL&Ks(-z|9Rr(x}D zPZyfZUcKMqVDJa=JCrS|wVlQ9^7Jiv0$sI~w|2^Gc`3l5dgw_ z06Ic=+^<>h9Q(y5D-b>R$lzblwaIcR#}Oa>bE4WR`fkmLV-32m{gvcjB((8UPp4z9 z!GQu^$%|L-C~mfoKE~i*LpbKT%HO9TT^jXK=yyE7jTLg80PxF(0H{x0o^M=YP{_N) z!5_e!X`p`lhx7FSf{lVkoO`Lm7XFBbNdW6!j=CTGKWRLD98jFGRD}O;_Zbc7hBiRP zJTUNUJab9)NirFr4eVE3w+RgU5;D}6-akGJ!~{UBSK77M`#iz`V_AO(&*V;g+D*)ol z*mJJi1fY!V^YC@XsEa-C`IjZ9>OOt-KiMTP$fsPE)dm5ub5i|AY9i<6;YAvyjH$>h zgFQgR|I+T;nh!Q=BjUaCifhz)_K!LU?e=x70#J@p{Y|9xg-^exdOZ`iC}GV{pK98d z#PTuf>bvIRH`)3O;ikz+Se-9q%n45bRI$(~Tg6zg?1_JLPG#RP))<)x@OU~N2Y%*+ z{2tgHC!?`%wfkcI{i!wy@b<)Q7H{2y_|40GqjmJX{Qu{FwHGZ$Sj`FbjnCS|tc+22 zjJIb4%v+z{(HL8R5D|G`0?;gP$n_ooOV4&3KoQgjh75y0b{{?nE8rxL3O_H zr~KwB{E%Ajm);QT;2-xR-m6Yu`ZFBls-r+kv#~a*I0k6u>s-|rcEALUT$0afG+R+J zU)pS2p6{ZjFLf+)?AT`HE%;e(b=cE~C2Y(t$A)v3Q=fe``H0UL#A6J~=YHlT!9sr_ zBO}y5^}pC3#hP;2UJZ_z_{oA5S^LkLKr$ zFnG*-z#f@wH#UMqVoqRr=1*TVitzkSP{17EKkcKdVRUDFu7xpOWRRkhi_z-?clTN?F;5aKa}vrhrW=Z4w(-A z(P(0ifnmaZ1H;4~gTkcyU1Il&#&EVh?32j--X5vcs#+iCJrIon63QQ=F};oSLiHu$TV2ncL?bfpm+gc5!XjMD39-=2PlEHPog_a*!i z_WX0{0_bM_g=_q2M+=62DWfr$|C{+TMtk~QGmnH_vyLK*(Ce4(3q8NsE%f}7 zoIS?&HuJS(!{-f&H4?6z1bBbQ{nCH>LP~6Zj3IAO=?hs*3)Q6m_?-unocc3z)_?Y6 zIrCRL>oAM+8c9gTkUH|%BK)d9hU;2lQVoFSusV`8GPbGFVR68{^Ys5S_`cgPB>QXp3 z=8|U5*kG8uDrDnzb-|&>AkcS;yna0~Gg^sBOB>agMOb4Hz* zEQ!rbC@+1JUMqGC=yyVRlvp7E(I0ihV|;xK5R(7`*O&H#3_$zhxF6_TYiGyU8c<9z8R)dpZn|oQS<34pRHcX|X==<| zqO;MFR<5{?GyM2t$5K3OXK1#Ta}`>-3%LGYBd-%7CLZ@&d+c!d+NbeaUAykjeysE9 zh-}`bosvUKn7dK-t^E7?Z}38tdH0sdz}5e1OU)%72KQ$9qrX5bjmukH-=90vRuuRH z#xh&od+p}x5#f^j(G)$>(P{b>w0))f5c^1^c0B8@OJ52f4NLsE;~%yd^bN^d$h*S3 z+D&{r#g_Y_V`Urw6;ysAkf%6SN*AgbX2A0PQQQZR+YzDk7{&5G_}2AXb>HI02>W>b ze0l6E(rmfz4}a^E+-=P;?=G+YR@DA>G|Bhw*twmn#@OX3winG|o%^b`yi4rw;VQ^L z8T7S7q%KM6BtXgu#~SYyNHJZocH3c)dOUR+Z#SW7ABlven5Z5Tfupyo*QcSw;Lr5t zT=`I~%YM$h>leupx!ns{vvAaO?AQP{Vsu|`t8B|2m>ycB&OZ5Qe)GSB!n}N+($AN) z`$Q%8Q^h&{K1kk-T~U7m29tmTA2r?|^a-GvyRcKz(U47XGa!g2zJy#a0iXh6qfvU& zA4%0mMQH$?d|r6>C96ms6M+}xLrf7RDwCk1lsEMi2R(jy5KD0S-jPXwC(2QJqMR|x zCV6?q)y1mHp+Fy^CqQ;EX$J_0FXDH5ozOg09XIC(+s%K?@@poCJI?s=F`JwXc;@e8 zQSN21o4avWC2#D^FaM3)f#TXjUyEf3jG<)()b@u0P%e(NrwFCtTA!hhNM*gbFJsY@ znB?t8%YsuDZG=Tc{)tt@7&`fK7(VrK7&gT|@R)u}ZuE5J%XqYZ;Uck*fA5UXA3pTg_L{qH!4tRpdRbi)so7XxzzBKYx4|X@ z>J&HhHT$e-CeIcY1981CdFDfVT<0eyWk|G6Uiy}p7~reNYPFr}A4TQ0f96Wel#5iL z>ofkt(0iPHsAJyr?fQ}o@B(0R^ft&!9s|H<43wTam4Gy)5d&!i3S)_elYa5fWEq}^ zqk`Iwe&Jo41kkQbfbz2RdDPX>4wa*f&d7#!h}w%qoo~Od(?2&+&YL6v@qHb(>>urs z>?Cs0iIeUOspDopobhAeN1eoc$otakPzOBj^0zO$S*E%s7;}xuYOb*kYoFfSjX3i+ zim66UCISEXeX)hq`m*O28*e0o&inbg?I4jz0Op7M*#_S(;8e-7Li|nJ^7V3WWdYE>Ky$RNE|oe~0%CWW(rw{GqW{b{ zaPzEvd7;xfO8LxO@vvf*ez2<}*mWA)T|b@2$r-<#^@C?D`1n}5*Q71;H`pYg%-i#2 zojE~HeAW?X^G}{dq47|n-w?a3gV(_>24H@$Om%as^o5TFjCLvd!^U!zq+|WlhwS^u zHmE|5knhRLE!|+vy6Po3F9-NMe0@zPIiA!>HVME`a0Fi2WAD7c<9}Ty*i$5G<^uVg zQeE`#_vDW~v$fJES=ZMo4KYU@69MGRyvuq-RefEZGL$JlSHDls{3Tb&U?jv?DiH?{(x|sFV|Zn3LuzLY*8)NjdCF>ZHcVSAxQjiLr#kEqT<> z8WUSBO4Rf~gCXl$6AYBH;ei;%?Ir>n=0N*l8&9f?JoI;3tM3UAQOa5C4u@@E2^`jA z+7Km~GO{W2fV^xAZOallh_(LL1Hm|JyNDT=F;IehUXXb`bfw<=XdN4Ly6g95j{-8L zy10#|qB#mkB0KZR2X!?Un88om6)W)87_mY<+oV1kM{bTByDR+3WqUl*jxlIKmc!=l z^@G3J#JFUn^lihyu6a=}O3OvCrBdd_eVqH+a$w$?U+Uu=TVn#!1$R}AUde;`NI6sP z^v4IpnjMc5vW+K^$YV%tX57697(Bsc!CLs{j?DFdu$@0wPvfmb#%E^7Gt7H=I=8Q?0|TK^x>6zq{cN(8N<5wJv06pd;k7AH5fIi9hb3%&>59DIt z*Vl=M0Uq}PC}|%{Jo%3*9|81usM9y&*(@DSnyr>vGoXlv#35B|c?=Ll>_<+F4r?Dg zYDy@?2zE-Y&e$m7i@{$>m_NB9_cIt**)EMh^o5djmXt9c@T{{`88#$wHfTGef;i#D zMEr5SOD+RUmv;hqna4)*JLIK66&#Q0>Wo8wlw9st0NHpQ?CHZ2cC523eZgm(+`E+7 zev*FZKp&r6a6;jUGJM@ght0@VX1oY2PU!7w-$f)b(HhGrMvizVKx8|VBcd}l>ZzSl zAH7p10R`=lNBw5pe=$lWQcTzS#l(silTdXu^VqDjgy-7MwyMM@0)VM9#t<7|vwiTP zKg->7O*>Uy)q*pB%`5unytHTGt?6%ylK|pQ`G2PZx&hnE)Ic`uJC=~M&XTsw5j^WG zDdQwiQ)b=@VA*wBcRJj7xcVqAeSPWc%%dz}Ls?lb^CI5ZopO(mGVrwo(VLhM9GRX^ z9x&Kz=fYOZ^v|!@?nrG{nAqt)9vu1~=n1tFb7TpjuY;#Q%Q_i-Si&YI ze)zwh)AqoAJ0}6pOlg{wJ`upEg8ZdFlZgY5Ho-_UdkUlO+asQBiiy~S)U$pFK+)HB zPD{Wf0FA-TekA(AHkyYPnIwRcPU`H0B?oqCj?mkXhMK$!U{ZA=VA2p4J@cwozwzBi zqaUNl;D7mA3d$T|tQNBQKV%|+I&}VpK+FZUK1c9FFMW(c>2$yRZhQ#ncWz(fQuE-+ z@@n2l9+N)Jbo1o;KRb?X$Sn-v8^8HL>aS_r$104+^s(?LAc+3NgA9{|((lbNoB+VW z2)=))ZwU3EY=^laKhY3F?Gn{hDHaxK>s!#iqx?;Tqq!4T7=_`UHSlLMiW_hy#D}6B+Q@ zcH6QwOsVT8Hv&TEN%xNgnfm|O;7-9w2}I5XK}{-F#3@h)H|jFL%?m{OI@3 z33Mh*0=Np0rOj)&(eG}A!GF=D{S~u!_D`ztWH13}MwkGQ^zpy4b)sx>UwYcIw6lJ4 zjpf@Dr&ojvpMIsnlUeiAPlegXo99V8T?r7z5B}7Z<&gLn@=Ey``RjR}&h5MG*-E|Z z_T9Q-N6DnK3i!M{%5p6t?__MEl1>9?$7 zZz}XYcdPSyzqjMy?`5cS@JIdh6L$8GdP$fB+>Pcw|57s9{Nv|R9hK`pSX<$HettoP zZ;zSRY7@w9EqS0X?Qg}Cfl^+_V*)^W?W<#1Z74DLw?~)&fO;&*zgO+qV*)_p;7^`E z_T<}k~1c1i;G&ov02z(48CE!<)2Q-?emGnEM|ZS6oUb zoc;g22?Ku}&6!-?pW}G;UuPU;hh-H&&;Hx7p$e0LIvQ}G@i%Gtcp3a_XvLv8VG~_B z0hoE>LXC%sR>p}yQv;{i)oL%Qo3?ShN_7H&8H=6`%gkciJNAg($8sqEGYO8dtd}Jp z`%^_-fF}4)C`hxP*{CF9FIw^5a03Q7V z5o_#GJeC!CD5QR9RG+Z)AkO|7FSnTi-kLBi`SHvj?x1g7c_`}I!f5&PjI)oQN{O|H zxn-oi(F``Alo#`pa`1(?{Ox2JGXzWm;CFVfYnR$uM|sRH%X_34m;`v8$Mm_hZjSvT zLcia>E`z^>(LS5LV~m#Guf)Dron8WnN&PD~`1AN+3EZ{o<}|d0@va__x5>r6d+>!1 zCC|2Sb@QMkqmCv0e1F`FZkjw62>VfccZTDWr>CWVVwB~|MRt}J4*}~?FkYa_B92TcYNjf2U7&k~3|UWn1sJW#18NsEb4UhdRlnV;5)oOt)U*4w2m`> z<^n%o_dN4##IDAse{2rI8cBsZ6)0d-MP0N^ZJ|A}px-`Vpqfz!1~H7!gTETd#s>e$ zsUbC%_n_mpe|`UXYz+Pi9^E$m%QI5T{RuJl9S8qt*3gDwx9#sGFi#|nI_189S;v__ zQYIMlLJ8V;=d7yO{vBQIx;%O2iFBij+S6a{3@Y|twxa`b=`Uye18SE1p<9M!|42Fp zN}b0t#LNY@AjE#G+X=0+o%Cy(XY{2%{C3Whvwi|7nqi{_`XV5e#fEDD)MGE~zIr)K z>(e*!OfKRCEbrq{KY+nSyYVlfDXw1sk5(=J z-Rm(ywpL>Oviupxr@Ui*<;_Z40La3);*w{D41eEd#> zC-{bVVuu?dn-TX1`dPar=0d*ILyg{LEZaX-91@_+(r%MXvIXecElrsqpap z&0+n9x#~xMW*!XJabMT)Vaj=4hrlW_~x z2Aj7R+Tf3NL{n{ig%>+*XErGKyblsED#<=d6K@sYM`|AR?1$*}$qVU^;cG{Q;TZG< z8}R6d;irv%Z>XIuwi{0{@EwV%2}2&owY3}msFQD6>`ivjx4?44c=I?F2I zZCNEOu^M>o4d<(gW&Y)j_?-i_h3Dqmr3~Z+0v5>gsN(}&LoAVbz52$DVnJWS6Hiqx z_UeJh)nUK`-_P3i~c=k1&74H9bcmjJ#kb-Y@BvJLa1cQan|79;9C zkGiH6`=LF4Sv=Tv@Q?O(ETSU~|K@w>N9%LMBVI2V{4<~JO>aCV2qfl8{=Z47dCPIZ zURpiALC=c2nu)*`T_Kh<%j-kq<{b~0t)8vwIeHM z{D@Q0%S6DLL!I(aM)Qn`ssMR=KHC$=tL=C&d)3Q^`Z^vue4xXpme)p#9(w}z$P4!J z@6YqC5N$LQ%tK%2 zufluSpj{wL0zmw|SBAWlpIdTNMX=Z1ESoQ{I~jg$?R#26I6W@^!;pEaz34n&>Pw!3 zJA5_2bGO54oD>Pa^4;NKrA!3UcMLZ2kG$F!@eM!j6ELwe#Whl!OaO#5$ru!k+;t`1 z2&I;?5g`Il?idFcmyrz^!yRwjwgaIMLPq?l#iUj*IySD~|)p8L;rCgQWU{G~nNyQJwB2s7dNz z_}pfUYCo`F&^MLz1q=N8Nq9=F9`xW&4&)awf~9* zGw)(`GZr%?#;hbG8nz*tr6SoUiB-J4@6%y#j0{6$A}~}g3Fw3%`Y~^7gJpv)@Q0t0 z)qq%M>G4$=H*8b-evACb#~+15H$Do7Z^}pNC27C11Ekb8iBb6-{dm2d{g-Vf&zz1t zH7|u=9&8^Jy5G^k>JS1}1WF77sGs_nIpjlTUI;_w17gh1^4BX9iLi73;w3YBbf=KX z6czF++9Ln}KmbWZK~x?1b2?F{M`c(&;JD@nA#*{U`LfPZZ3OGu(|5wvr{o@*r|yI+ z@_{{1kYEd{!+?C6oau|X8l+=~`$bB&873g|9`9slyUwr2KlZHxs<}AeKYr`YH%i0x z0eG>J{a!-{%EtykKvf`cY_n<=R6|&s|HV0ol`z1=9rhUf6AAz8a>M7mt$UM*l`==l zHKs78x7_r26@2tFo(9l1=%qZg3C8pex*9-PNB0Z*O(6uhx?ivYAVfes0kCaBel!C* zJ?J%0JFqwjfDaqV((DaS8=-y?L$RPUVJzU%Az}<|G&~Xx2mkm(DyoMD9}kmd@Mo+^ z1COx>!n@rc^!=%^@dzN6{f#6)mp7`6jhH;Je*A*HdtJfQ$U^AO6d&IF7eSjAyvrYh zK1gF}&H8(t$SGqUC=typa(|;s+_4fCjX9M103MhKc&g%Mjp7JUS;C@DmOZTon`XqA zUe7+&cE!GgUi&iUfmHy;PQI$M{a$T(vf!@Ff>>i7zVvm*Vq0*XpTy&eypPScK&Rax z09J~XHqfl8!_H-s8B;Cdj--rv(w5;yt*AHAdIqO>Nrgr1_qpig3dL-w6_s(*)mc97LMHH^`u;6Bjy zA&LMawvSJl=E^`)9(ihRIP$c7WHNyA&-Bd2Pq#<7 zzz>;mK_>$^>j$xY=ns%z3DCBvRC=m-3{Z0yJdFvPN&_>i?s4Nyyc~55`e>2wlROb< z31{U=0N*}fc|7Q_+^?+=X8PN+!Zi8Nri@1(`jVJO@__$ zv4jk^lUnRXamFz#a#lhHTP*!+8-xeW_$RlA={I_ZFRwqTZGjTwQ2ehp%%_T2DxIrb6>LORRld&{kvFXA_Z|W(3&FC3< zudyum1K2vy68ytEM=g#`wB%OD5MJs(J2rxiv65Nj1YITqryWNlEz1-u$|ej4;%ZqM z^NWh|Az3EdC)daDG{E7OK9$_DPhevm%`&!2K+zY-yZ^tI`vLylP)OuoOTZ*x7&&Llwc8W$snXZb&A8G}zi5rv zwm%7_IqSZu#wR{f#(pre&QqNTOy_$bnl&kyOQ|0JklaZvU_WVFs5krBp69^D*rgZx zTVw={rGBSG!BY31m}$cnlC{{Z(B1)j%eo zO&g~L+zX)JOEH{v=Sd0;u?|gpaqSsV_0` zS1IWcNntCey4ltpPiWWg zosoVq8S~S4U=U1b?iQZqi$=b0`a8f}dt2yojy3yA zjFFe-hP0#t+?6-vq*lsv8%}Ad7||~1Ephg%1#lc|(N)VXTYBS<8KicKo7B}A+YtT$ zgTD~JY!*F)=PqsyFZP?QI@9Nb!6PBu-1q21`_)F1Rz($S&4Gthzi!dGuwcz2TK5~~ z#?tE$gn0oU4dI}njetl#))G~x4uUxexdLCU@neb_u;icmtAUCYi+`<6!9>in{n{KA ztFdpqEzbTms^(#Bu(%de2RYHTNN!U;vZn@icki0o&PV^u+O|5lpbf}f$oEqenPJ>A zAC#W%X4{^ATQB@Iwb&lPg)QJQDVTMwpN3&vRm8waCcO58lDLHdD?0mnSwH_|?821mlC?|hMnJRH zFJI~p#cd0J_{xOvQk%RmDq;Z}2SdN5Huy6ymCMHW4F-F!?<9U~5A9KU8}P)KFqD6S z7E*b{O(p~TPgW-Z+R})Ni2;Z)H08=ZAtM@9hJc#^Q3WwB{UPi5dFwCgvFy(}^VU+O zw$asr4f&B>NNL+Oz9rNT{B>~&M?do37CIi6W)}s@mg=f zf*&pg48LR7`(b;!OZ*ec-cag32EvYCI9g=~Rv*)Hk~|_Bf6~>n8n-RX_?;uN0K7m$ zzl&|3z<_$~Mq#i|4*hIqm>aNq3aNbXUk86FH39g+*8G9viE@^29=2n5nLH8*EWQK? zdJuC!Ss@pfazFTsr~Ho~D1;sI7x#y=zx@FZV{HLoqgqw~Vi1;00v3OG`zYh&GU6+O zNa;s|l! zzn3YGEdR5`+ECH&J2xsE8DnqDLymA^?pE5)hM)S#)=*(*I-5JiOaugH|DJ&B3Ao2s z;I8F}Ewxe0^Btay4?Uu)yMW}lM2iwJz+KblXAKO4Xe1_=!%Z66K}Zf*F^C?hBGyL>XN?JG9`3Hf#%YROCEVIQ9?&OasW|p+&^BA>;0ZeeCX~e2Q<&MOR*yW zp9EmrROj${y z&&418kt`sJ6Twm92>_IT*mhJ(8@!s8FZP|SNqPSg?{56MN9E4@2=K`2NA8M;?D^Oq z^MdTo-^=76w&l4GcUUI~|5A?`NltxTdF==5+O@mzZ--#N>pma7b_`Q)S{{1?OFgM+ z$!_GbeD(tU(HZtPv)k*#*8gJHzAntpD>m)fW2v8gQ>|VVS zJsewV<@j`=62X0@$C`7yf-oU*X8BgrPuu>ZrR5rf3DYu zX_&g_1r;XvItu8ZMHlZkV4Uw*kwdw7#} zzE|m+gEL1|c;c-N_UF;bBjEEpd!~4hU!2zLa$(L3c31mVubcP0kXOe(*mvC@lBvIX zPVT9B;TnIrPsro!pZU#`Wqz*qmF1>6)#ZQs)Ro&WUQC$O&+Om7+DGS$mwZVZQ=hw) zKloRc{=J>scd+a8WaDqBz6XH7JkapmKW_GGyCXji+FenjfbmBo%Gm&vq*D`QX;B#9 zqQd&ngS}J3X`B3{;vgFAV9z{JwteeK0~WcYsrEjXm+!Z~h6F##Q6~|LJW8{RNvlG3 zv&{aH*8`t@Bs?IOD~Y96KH=nVHtLSU1^!}(14=Yfi5e-1HG2EdaC}yt1o)0%9Ju4m zpCOsQ!Wv}41Fn%({15$}ckGOm{uulY>2Fe>0aP)vIzBRql7pgTZoZ({ds!i5zhbwR{-Hx5+X)m`EG;9CEzv%Z+>Oo{;%d>?S%ps?7o2!83WQ z6G^+LA(zv8)W0q4?P1p@=XIr1u@QgvZ z&x<-@F<&14>|^AiQNJxX^jg5?h z@R047KYdI)lprhYHxltbyGsV-sGxuUopK@}I!pvge+2=KIQ71y_p>J(_|X1=IMBnM zxb#JdK^~I;B^U@{UvcnPLEPBBjN>9qV_TwIidprsTp+`lKZv>U_=5}>li%5+yJF8G z`JI-V0f7%W?1P;7t5WLOAD%+a&RP(~PTu8GOSs)1K<3}|viu7C@gGYH&In2deD2Z~ z?FemTY^=_F)Ifgt@R-Vt&Q*>{kYxi;jvK1Bmlc7c6I7M zOc0v&&)xdO9{;mWF3J}V!)L*&RIX`F~Ur8dy(VRN9%J(9vJ+!Z^UlEfc~kD zAnY?V%DzOh0#Mus!2X;0v7M1{AHaV{ce{MUen2j$@7lCq%jvE0ZH-7vex==Peohy)7mH^ix|=GOp!odfWu){nQ5n!T$7} zTUtsr#Y27H{dP77GsbxBU3;}J9C*yBvl#rwd`yJ1ocVA9;PWZ#w5`j%wB=<0+9E$+ zKfT?a$@j9l`ov#&P5ffM5yXD8+QPx_KMhI3g+GY>;Ojnjp7~e%vf3vDj@nZe>L-T$ zPOca_u@Zy06Slus*)QJj;LN#Ep811ejMNV*lS`d5s`m}e?R-If8DrC} z=6%`GKGA%TkWgJ6vbmeF5@34X_}9!9IBW+>OaQWN?&}x!ozadUF8g8cqN(Z+oa|@y z$$f0Befzcdp?3O=3s8%AV_|w2r)6@qGTO^t}g09QHeN78!24jQX7 z2I3!lz;0L@fBpVS>^E-M87BMj!ug9~z#y3fAcTd{HYlzL^!mRjflWf*({IS&4@!2Ux9!62c%Nr8NX&3?IV_GWAD(N7ACXN^G}L=5Bd zmbpPv*0WV(4YnBIF$pj~3yeAlI!}yW#(-Qir=tk4Zuc}1H7;4LnCM%36tG_KYFde{Q>d*WwUd{&|gwwh(bGul7f>&iUnA^ox zFSp#be)YMbo#a^u&%W_>#f_WN7Is+fr=Q064uv0BVyLRpy=3C|H`&^tjlQ1z&hD^h zVSG1$0?0{NU%7ur+Y`Sd$YPSI%sOO6hJLA5%-Vs4%xu2fjTWe0{ug z&#$+G%L7FK)wu%%zNBue;>cWki1-a%-UI+VnujV=8{jtC(8(rFbU37J$X zv`vWvDf4NjBaZfBYzl1|9~cIVSDg&ADsxG z4nI5wNCHptn2>p1>ojyaob7wN(hofQsnm_@b|19zu_TCtrGF5<2kI+o>L!0Emjog~ zho%4Ael{lhIXn1+h(jJS=GROIId!ln!H+no=YbxXi%vdgc2oy{_v4R&)PaXTXlB2Bt=}Xeys-DIRN2OS#*TKO z2kDC#Q{`=uW|?(Mp2EEu@QWmsGN0M&a5K6Qbtvt^3FPW+5C}N0w=79S!ZZIE@Ui5N z2?6RPb_{q;l-WfdK{A1{7(YF`Rg=uRydyj&^-Q`w9c-)d8ask`YAYMd#vF5Y;s;$) zW}I%T1voFCZAeTHzy1TD8D)hv8=t? zd~soW;LJARte@`yVA~WtZv4_e<;01*TE$!?psow9YQ%Q)`agL%_5-`4dk1$?J z)W>$cPnY@CjvMxs#K0v0Qi+R>Po^;+*fiJ)fVM|;CD9foiG9^f2RU_^1Ypp|=d65) zQ^qTKwTpq!3Va`PTOX4{;V%eWMVx=bvBy4di+2Rg0coA;1gDfJcD5spd{`f_~@()xoO=jo5d_~$d~OQ zuX;^PA|e1NCi>9kBg#?^ACTu!#|JuMk~eGHUXVNg@xc=SM%7@xz0ms@i(9%{m)86S@O(qaO+13G5DQk9|Y-i@q7A4)p5W625jR4>kbdG2(Np_L(dlAD6S!*oPJy z(S>4ROtsH&w$F(GZvHzk!yao?x9GRH6aUI2z=d2vXyg(@$M!}$H4shoNx4M+wH4PC z(xwkuHC{Rim=|SL0R7dh&tS|P)JS+t0#qIq)jqTK1Mj1;AB7v^K2&>5B=}M1Vgn4M z%vjp@6+Su?F|AiJ7;s?n_^k`!$vcyV_7Ymy5P&V!h5faZl zV}cG(@AL;B^Fl>2#ZfUM25}%$xwuf~;8K-3+JncZ$6R{>5s#7kga;8b0Z4^y%lh0N z;$jj|_B&dM!Cwb{0@m~yRs*cPa(OR44#+&1e~#VQ-gIqWjI@1{2=iil>0gHn9f-R3 zZruteWjX(p+|Y*)>ck-~?3o+=AluW!&h)9n{^Z#|WyDZk4+Z2aeX5|?fZB8t@ZPB& zfghEsk>v^;V0c__gSyWRJgCn8{^vKy&BPni=l;)bthFW zMEKg}vjLyqy=;U3??xW|#$!{DKVro8A`&rq+*$O9j3gp4Ci4J~&wiN*lrp#wcX7)| zMfmYFc}$NW(94GynrFO+b1YPxW?ir9PxnERi2b?EwJ{ z`H+VW{JyzkLC_-bgagFarZx{S-xI}`1mki@(NJtZIdAC(8>0w7V*nA!15&S;uoS# zY_3iMN_)m+4)B9)uS^2`hghXQp7l4fA4ctE-I(;5QS-Fo{ee-&iy#d}84tXd!2vu5 z{-kgykV9V=&&%j?Al~f{9{q-u0Ur-O;3@mg=$Gg!r6`2h-(S0QHuRl(Alf4d%L8VL zA-4UG+N41pbz{E;sQRY>VDIx~{Op%&)X^R*0UA>_kZGF8A-ibp>VW*Hr$4UMH`*I! z{C*eyY&RO}e;?qZ?TrEXTTsRaoaQGb?JZvBy$$N@Y{tXt0I2GZ1XRqzn6#D0T;)js z5aZ=G=ifi*4TcSY#8S|B&`PMSkJvkCAOqPY0I5KrjYm&KB@9TWwz8>)LGUmFyTOYM+b{u*=vLhz^F-rzP zHf`RdRM(1ZVDp*bc+?MH8g+nF)mZxHV}Qh@A4)sDC*wcT~$@mn5$bNJa zuW|-BJeZGV#2EBf3riJM#iNY2u_;USI^zZ@E{{cDE_msZNB7~{e(+4F!B|(NW{sZ5akCY^~f&P$xcZ>}F zB2XAL04rR~50&4&axV0ndN6FiA;+Z|s(#1KKB50Hxe=Tl2SC+Jnfw+0=h8=53AiMW z_+6TA_XedtLb?(Ua-s5>+v>q^$)gR z3ir>f-c(j+M_FAP%4_|De*7@a8%o^dS4Z3-NB(EL7)5T5+s13^b=G&6P2PO8snNc9 zW18yjRk3*fy5zz(P_S~t0#?JJo*$$-D|!zA8CU+@h2t{tuM~+t3YB{qrq?6YDTFaH%{(@ zaCG=^U&nQ<+N=%UyUU{?EQc!rNPIC8RW8e(FFeQhvp-{0@LxgP()Y?}IL<8jqcsBlGvj zhubXg0>GXBccTG|$EE?f&KAr0p1L2dS#5I$rM>?i``^K4IJnWTBpffh7fva~%HwH( zk}x^I5`P1^18j+d8FPyZ5(UvQQEfv!otz65z3r#uIB^b9pg8d1=j~`NkRF zp3)_gUbj6>16hL;_4ZP(^$ooFD>8SQ6^V>UTOhr$5 zSq^$>b2#_h+{%6`vFYO{0I*>~I38AQTu{NlV}I16obdkrVOUT5<3#E!o0He<%=VSn zah9KtDIQzepa}BplV84Tdx(qD_YL#MBY~9j9RTE6?vPh+`n-WPLta$miMCe{+oO%- zQT85pe~RJd$lv&;FUCcDw~+ ze3m2PpL@j_ze}e!#=y7oJtgDE%bQCjNgih?Ntgtb`Ir2ABkcValn*=6e4lq2oWHxb zWfDN2vV2IM;&^xFQP+-Yem>t1emq}sxKFPfc)zyIy~aOKD=%Z~@;^J(mD~j^zjXB3 zrumncC4cLJv_}%geloH>)@1-z*&2^~mqz&UuAfy5J~QQsrtRt~697AVm0x-ZNbH#p z$|QgZNV)0b{30Mc0;qP9SUQfRhOwf59Q=uc66CSHt|M};05tkpM=;I%WFpaMlVeX^ zYj^zbl{W#lXUCk%ymbP=U{ZRF?F;f_=#=Z<0?^jS4S<^woJ!&)fFzIp9_G;rQ^O+< zZ&s6a>t#up@W_&YyU8?#H6Nrp*4Np)?6&Eh#*N>k;(-8Lf0 z@r8C7nOwq-h?9V1D3xyV#~w)VyE&*c*@p6y^bbHf>bH3QTK!_=&a@O(Zg`|2muCG# zL&SXPwXc({ht|A)kMG}q+dDtGhUaUtFb>wHk1IWSKGt{keaaFqM9&-nW* z-a7C{i9fQI$RwaWx?8TzeB1MzdCR^F{@C+5VZUyeU6G_PZ0CXPjc2pdJK1&DWGt1H zJM4Q<-Ipz4@r*g%tg_!1PTC*7w`ZK{8LwjO7)$^_=W3Vx`2%Ea8RS+0Fac;rhYq#B z3UG3y4E{}=F%c*UXa8`ZPu)rYz9*B%o)0Hx9BKF>($C{^6@cF_ob}fce0xujvMyd-aHV}U?P5|K3jOvcP+ZSzL_?X_mbAKDGy=+wP_-aTI;yC#8wX2-klKjln zCsgKR`W1loj-Ok@ik5GTsU;1_0d*zy9dIdlTRFt&1q}Z5LCHGw^!0VhvYj0l<}1A|7-o--vCg3n zOWLr6J?hk(KekmFc>199^_@8Tk3<}n-VP?-7dgVtGL=6zA}a$V^_Mtb={iI|ztLrI z_)V$9|81-YL}DD4l>4~8uJK|(`cUTWN}O$-Z3*7{z=p^B)=oA6N_vtbwz-ekxsztu z@kb2U>}tD~`V#!x+iemL2s^{h`wO&lL29?Ek0jO{48Pt~0TE0El^> zi5YkxG0((EV&Wiz)L==LY(;iQ>ScR%$LZMVw%o}|ez;fiBWW-HXxm9gUTv>PtL<2_ zD9NHof|NJ`BxYhBNz4<886XA{1A&+Q?Ok8hK6TH14;1Zs@1CmK``h2%Rp;DOb;gTC z8|EsL1#levlT9=N_JE$nk%A;FwG@Ho&%oDzW|siSaqX}T{uO^lqa-*xKx~=QM%Rxy zRR8EuQqUN-_+%S{V(DeXLGJyvXUho!Y(~pI4}(8#Awx9({oK+h`9g zlH$bYwA=CXae5L?*aJ;EE?gel4nO}G;#9n^h37m0y&ij$E-P+t} zOxc&Oyp7gcQ(}{T()UqC?dl>gSdvQtj1M?$rx^SxLjf}KX`iah)+wmVes1X$b=oGg zg~N=?GE5Mb&cO5cX2TqKmYL@mvhKl7b_ADn@B>@qQcznboAT6#)E*IQA}(7(3BCz$HWrm5!7y|}O4*w0M}Z2|FeQfYm4d<{+H}aHpUE)wu!F)uHE(2xScZWy0o)xU@4xNx#5BhSUAH41gF=hW@>G zjzv6zj9+VA5&VjW@Y8thpFF?;-9P$br$UeP=q!1qsCa=Ni#hWuz%7!kfPuevw4Z9h zZ#w%DLV39LPMB~=CIO-vDU$zq8ekpN3uZwDT>13Al(`$SvFyuHVxjP#Wc z*Xg#R70ARl;`*w{f7;(B0XyX;KO}O|)?_wNnU{_Hb3{j2=csu%svHn|M z5@3c>v+rxwuf>V=_qC}<(xm{JS}ayeW$|I5AZA%_qJS=;s$ym?V{xGmnSK|4|NP)Gzlaa@~50 z9hCxK+5(H{prf8`1Qvro_9)60?V*SK%5s|o*rR|TQpeh_DC@OIXA2wpD$=i0~muKLQ;cp=(`&!leNu^Gk$0 zLNjYXy7|wfvQeTDn#31cl<^?|>EdoHk&+X9{d@ObjnwITOk?%xWY70GGOHbG^6Y~xbz5;t!Ggbp9X zL>>LHZeJsTh@gy_b>nE%gPAd*jPz;iU%k2x;iXh=*Elo4)FHP3EoQXNlCP&WXLSW% zr$@*5{sya$W5ausgu@!})yao-A^;2|5aYVPzx!YB@E667pWY5T<0qQKEUzc6SfJe| z9uS{7Xy7Y#*fr=uUyZ`!uqeH@!Kb6NMlZnJB|ESM9V3$UG ze*xC4&Ng6>2LbBZYAjs6{~G&6$gdrHRtI}Fg7weRCS2b~12jei8&k8Gq4qJRdbG1k z0jT7Ca2?m3;a&7{00w*<@w2Xc;^5P^>G+n$*S4SBdNOcQ;CWF-s*4ML@$sqKksbkO z1iBvX9uA$d1HsZ3gTI^WmLd_UIRy(wxJbcs-lmQ4ULQ zhdKs*^pnZ+HZbb(J>k^r(*bF|zEn$F%Qp{tU-@(;X!~7b#L=@)eOs+MidB#P3;wX< zluA;pu79!qcWu}ma25cG{QhP?$k~3BbHaqtQqE;k5J}Rijsu0K^(wDH*mER)PEa@n;P$ zx?~a??CV{R_{ZPc!kyM0YDccxyoLuxo>xf}Cky#cv8qBA8ajf5&V)IAO@{dim=8K6OhiV^Sa^TMdT%8!7z>2he z58K2PRr*D_j0ts6!U1xvs{lg(V?b8dC05QxISb$uoHTyys0oeWhc=rwmv;qYgR~DZ z8#m3VfEnwTQF-M0?~5Y}I6w*gC$1bG*ji7LL4ckI=CX z5;hjzd~1G{^={ zi7Rm?26+M?y$`?$nsGMpIS%qVQNX}&gTL?h7CC~o2|>x%X#hGdCdSITX;QhZhyp>iyFg}%a>Z+X9S7nT--+%J$mK(R_(g1yzymg%Pb$%@ef36>k?Sjb3 z2m30g3pBQ0t)uvAYaaaB?rSn3V43k`&L(4&@G(x>$SpoD2_rTr44jL8X*+6a;jEH$ zrJGO(T969>68)$Oo$6M&=nQKu11COqlV6k--$n$yqpw^$18>A5N74pcF+8|pEF`fO z!gssLQ3d`4oZ=HT5HKeP4akkU@&YR#;&dV*)^+Xq!M%~BY2XG&CAoU`386&gbg=QZ z#3J|ck(+Urbzq0>ypXuaLmW=`qfJcct4}Tu3U{yAr|c^q6XSp_c}YcGY?<~;3ZlR# zY|;K%J?-vx^$*+z180a^59@aT5ERh?vjE%}7^X}Pha?R;1H?$J4{;paox8o(& z`vj13HPS`?PWbNwv1`{>&kWEGSX=o~qCw`ch+|GT>WBdYJw7X6yr?uQ<*0wM#s>th@sEffI2w7nrw;yXhqhgCHw%ztvPiq*8ml7rcWqbhm zL7rI1@g4w=r$6YJh}Zs+1@}Rpm-hkG;b~X$Do<>#*AdU0IOI6RpRw#K+ujmh3XFqT zFGPyi`)M{sfAn>-}{cu8lX9;7(mKCl2CSl^}G-Krq z04rC%CU?{dK);j`h>Q(DPAu}_+lD!mBGn0SL$}%^QT5OK+sZDF{t-0%mkE;t`t`9~ z>y3s=k}Q^_k~ciq{8jgd!gsq)R9IR7A3tzN?xZgYz~U?bzi@>*tlK#^jM_C+pY_*R zBKPR4-3%%|M3fTz{d7cMgsOcFeyzxIi=6&Xu|ZlBpW$I+iFo8Ce)z5n;lbV5!OMHv zrHqMypA3-0=l4G33ut5)C7hTHJUI7^hoo}pkFl^l1fq%f{LAOg%I8d&_NF~f20d(i zB8TTjxthpm_QqkLSxfBnKk?p{+|>CT&-te_0a!Qq6F2zG?UJ8g)`q~nOad4qdGOsi ze7Ya2$sQcUGEbmX0BQCKF|j}GXE*ujPDO+on_|TV+}N0E677*&TZ|vj$K${cd*u)i zaQ@kU*!biJ__U7226p9p0AOc6Ek0n%Fs(i2fmrhia7@-j4b#4Z@^-Xe;00A^OAJuS zX<+%q8zZg%ocQdzF|L;50}Uwf>2jf4INSZMe$MrAfAKRvOSSXGmnRWHpEox{(I&c z46rsf+rzHpCMV=b=D52VX90l6{Q$_39-22kydK5}oUytr!m6EY z2ogDEXhbuAZ||_n6~H2S9A%gYcpb`s1FLsm$1?Cg8QwRHxzlf{mtu+7 z!TaO|CoZlFQ}|ey03;D#<`2q%pY3dRtFh?X$#&qt#)|chqyC)OFQyy$$eD2Zo#74s zfcL%^TpSTL55_$J))@Hw_K&cQh{$?d{Y`y+TiEybTy^K|Va9|q&I0VXA?J-XcqpYX zTkh1AdjV9W?Xl9##WU43x@HKK_@G<429HOzg*7Yex~RuvB7iy);%Yr+zEvi5?JM;x z<#l(%k#Pe8uKDA%zqj+8Y#%srbWa?5BsNTQ!x|KF0wCei412o9>p(tm_W&K}y`S8cMt{`3e&ONp_~7@{Ik&ack1K=TajD+5&^Uw?`R?GUi@}0YA4{;eoQ@w>qnC=dcT5*4e?Pl%>a) zoaElndvsWQU9LHo{SJHi+a^EKq^e>avj4!-=qIi(G4wjc3g_iz^_Pafx{3#JZRa@E=5`hPRq z-q&)+cw64>U-AzSK^>R3Ep0lg!}g?X_;I_{oHiKz>-~#eVxoAH+7ew#4mV zzf1z^xbC;#cdp+ZaMbTPn%ORY^Cj7a{RSvVslKtyo`(iUo$bUEcn?9PNm|F?@8xy2 z6?ekH2|y{YY$OuYito%z69A9>$`yGcKw`!Qfr0qb z*Fj@@5l8=B_P&iz<9F)V^SbXye#QMTOzI@PcFt}9B;PMD?2C>?8DsSAe_~+u72#7q zw^90_x~=YgWzl`_s}KYD&vdghI*h~TGuM6)e(?o+ge%F#4if<%ThhgC1!n-fe$ll& z3CQ0~n*fxy_fu!=xZ~gNBQD7cZ@k|+u9Z7*#uxh)S?_)A{*Lx+ZjI0Fr{6kW8~m%= z&WJB9OYyX4Tj&25d+@FY?2lmCxZzIy1Gg^}1U8wGujNUxgoc|5xo$x5o6n zVR@ZToCz>Pd6qWflPLBD>s5X;yI&dG4LtcMW4#&I;Qeys@9h+*BIUX`)y@Q%q{@%e z{W>$&O*|r`U0!xZCIBmEZ&Dd{1hE^!yPd}>zY`_9_qW;^05EnGKiY{K0>2dpf5r)3 z-C;+EI1Avp#yo{rSQ_T!tJS;tiDMrcPT`ep^TpY64LyRsu;XdvU$I68|L8Nv09y%2 z(wi&no#-fc#19M-ag3`@MhtYs;qHIRxlU+nb-B^)j~~&<+O|~B0%SW_-ez0Yj2CUF_Pzx-oXC?8;0Vn3XH)V`ltPx$?d18vnRCawaCGI-k?W%UKLbWn7f) zl^;8*vwKzU1AtH8HxNLE2>?@R%R2Pl=gZyqRJfkGWly#c13XXnCz&{#xyByH!r-qd z#(*+$v(MYv0M?;n9FXxQKrhp?0fO7u$NI0!$Om9nu~WfkkkKD_7#n3Pw#yk`N&G&n z>o+@LRF008lR5=ZC+k z|ARXdAQ+qlKq|SsY|Rrdh6#TX zI3Fu)hb+%e0|2Q{14y1?l``-Cw@U!YU5-_VG>&M8CjyYzkBN(*h$99^|BR~(gfO5n z>UD{Fk^@u9I;wYM!#Kc0Kc$RyaP_&~64Jc@B$u{8o_Yv!Nj^3iIxBTUR57JZS!aBn zm$5N^*2#~2LvOo*XVJA0sf}KbGC6Jf2T5E(lF7f;iD?!GP>P|A0PX14I9ANs2!zSN z81<9x9#4}1o#_gRo^AzUO)BF6gtGY;Mo3L|qSz2E@Z=}gVIebX4*aOZSSUO3%jwDq zUbGh9Q#sp%3U+>||3eQM48XbZWEi$^bc&rm=m$Av z@Y$^19)_{1L-^NrfGjphJ4$vse=J9izYQ+{06+jqL_t*l5Jf-g4AsIf<;dIf>-8wF zAKQwoVgqWN`iEcm(O4BE3&w$5L$%t+~{BtRbMk?Pt*Ie744KdFIRK!;SPr>w*v4mNJd zhug!tzOywp$SO9dM{by?S&4~y{eJ1j5(9!I9V0+VMb(6HS@A0}9Q`99R>V-org)7d z?%NC!POjV+M!%8I0(f4=zg$l3ul@Hg8n1F2hx*YrC^0lHiA)KyNZSJ=HAK7RhoTT~ zlEpSlT}84`8<Dsle5{ z6qiV!$=6k@1QG9qr6XVWeqhpGef4Sit$@h8YNTB!E^WxIgMGyMjC#sCssjfM;%YB8 z;7Wa+j2Qae*hfx_#{}7i-u57G-9!L-+L?)MQ0NoumsoESD^Bm@EPy6pSU@h7ssHU^ zE2!KSw$a*Jx7ne|t8tWZHP&I}ZFJ{rv`W}emv}}$X-EA4Xsql!wXn&-$yaTM4HfyB z1Exp)&JSd{9r9&~y})nF54y(zz}cMLB&TR44PTTe0xF1$BCLk(pw#>Le0lluXXG6K z)yDwgBF8HgY3IGo_D+cCKD8V5($}Z0mmC^j4AL@P6YAQ>t^x^;GEM?mH@&<=V4NNO zXFr(_ZF9BSwmdaBAL)}5dFiLDdkhA8cq%cdukKcz1fRZRg*oG{7Na6Ptn*@VX`}+L9@K<8v>pKXWqZ^!f|82fcMPC6LL1dZXyG9H5N#!{>xZcFLAz(NdR!T9Dq1^${(2I zPh*CpV}GzIajf634(ndA;#dAPuFEfWPQ1_!_yUe_OlK&I&HF$ZANE7Fj6kK|;XqPp z2iZS`P6vN$1Q_|RZAuk5lLUVWDs^1*$F~hq$dfMNOb12MMIPTC@Uo60eU|?z+9&Qb z?q7uyw%F$Q?Y8ya79P85r@mjGwFr>39{3&g?P=DAk-xSqT?)Xpf2Pk8r}eUn2a#*v za$CY$kTykUR3!Vj=ht=KXP6#wCp$s5;BGo3^&cbCvh^pf@gwnNK(HOW z)MSarbH<>X>H5kf0QUkQRbml4J@p^MDRsbuvsu3zUz1ty&&XbuGXl?yvNHimEd(r+gMP_PJ?bnYXPG$Ww5J|968Wu` zm!%#!Vp-nQ7k9*G8}Y9H0O}?qRZIdFU$0IAbVH0-<@DtWpXbj0ag863{PD}pult#q zgTvH-GXMy~8mK!1X$-N*t*oGcYyXNDIAZZ-^Z`DUo7R?;;X3~mx$9s3!KHBQlZgRx zp61Wds5o*;)G?OPPwo!5Cjh>f$geV~*gNAfi21UiwT-b4f6%RZHbLLMr7MZ#%&lGY z34bUfXPL1uryliYWnz&pTeixoTjYp8@m*8@Y zp^)>ff1XRr2B|E`-+&b#ka;-_yUZ9QcbZ3~9REw%HV(vTJ4PwUnSmus>@htMtnX_t zzM(TgX!7JN`y3$p^0t(r`QlYSw1W*q#L$j<<_dE-wQI5<7uDoI{>)oH(UlN)8`@(p zJ^IxK|FmU1tdk3MmYK(<#bzQ{TIKdpa&hW_pf>^%1hCK9D-^IPd#omB)~~EFY^f#Kly`2ze>?hGG z`9-zAJ*f_~fsqla#WMI)7NKbpz&eBYEcKU9Z`Gj41*c>8*zDTEks0?h%e6?%XYmIj z*pus-w|}hu(N=A+Dp3yMrN_Q%eIsSyckhUAb&|5eMLu(meG$k9^9^!zPe7uJ2ENYA z0Prw)_Uij?T}{|&-RX^N0qfe1`v8as7cjoQM}8!S^*Vdld=@>9@O8bab6fa2ZUk(`KV;)6F^JnCHyx?J z`lTLN?cphz6r8y&w|pmEjMddS3Haw|+r%q38e%^@pcfihyDlJa*4FmoqYn0u9+kmA zwJ-P0x(W7Z8!*KGD!!W8|8nnoTaV~?P3C(F?*2zzoN~R6l1BiM{we*Fk8MMJ%z8PC z>iPm_2dMuvzA^YCc54W-+^?7f&^Pj5g}<5o!D(mIr`!Y>_uPV<{#&EMp1;G5P$r{B zXVW6nI(l3RORk;{8~QcAmK6?tLeOwQH*5qjlx2L}DGPq=uIuWDz75k7_N`tUran`> zw$u^-jc&Q~=(ksVxmzV3G%U7H<5s1}Br#TxSB$88|BK$Ta^x*=K|0mop>?;NHn+8A zLQo@t3wZlkTnIA%sC~G3Dw4!ldbNC__=_Zn9FiG53X&KP`1gE_Q?!vsN_%B8FkL1A zNU!f$7#^2L08@g0`9n-^?6B*9N2bWmI|9Hv;eg$c#(sbb@-kW5vhIHH?|x{5?BxFE z%x5&xbuVSVjkd?10um5IBmO&o&=UUa&mr}ER)>szhxVY%w!wZ*cRBipJZ&6OLFZ_{ z$$N>qT@2fA4gw@?Ct8UM&jr!go;PJ_y$gP%W7tSzD)FpS&zx<8e)}W)RUE&iVbu>u zOI;q+I`1|q?-YW%UbKJW!pE4 zs3okKJwN&M7}$Zkj-Rq-cpVhfacqnj2%YwctxIcnQ+^dkOZCeI_&UVHP8~}D zO_zj;!FrhlFdoPr8G{LwyvpK)9Bm4YI^PeJDKIXeFY%w7zC^WrB=D(eOEk_?K_+vfQ}+z}p_XUEzZ6F7YF*rIS!j`op~kI29OgdMz5K4r{c#bHs` zHtyTFZ_)2B8YF(|@ZcGC;kNocJGd*VDK*0bz<3CLXz%cFNG1Vt2H>)uDJ2Lbd*n<2 zVp#HMapW&TjV<;%g5KEQRxs=tK(jLRNC>7``IYy#h0z%Nh1ow~^7Z^|m0 z1l0K~xj6wS<+>jhdUE(P0BD=89Bp%3czNlsr%v1>NB``Ho-+8Oq8t`#Do@xoJm4Mx zU~4f^0Y3|`jtHaoSKVuZFS}JA|PoCY%wudzI}^?S^bV-J9u-}{HATL<4&Er@F3Jz~>lNlN-K4RAX!F_yDPFY`8U4I<^|(~zRnGm!0-EGy ztV@m@G(N%Btv6l<0RJPSW$?G=DBsqTqbl6qk1x~bq7URC)cM)?ASSaNZ@2LM#tuv< ztJsyZ7pRPFMtO$a%67gyb*#N~ zt>gv<*Z#FXV~6>2c^QBMzxvevG5?qdFc!w`{kK(_O4!o)gT}FLdl<)#F{mjaZY(U4=VKSI~lU;GD)JY z%zMl4ijWKWv+I5Wm-0`)Ip+ib9J{vL&bsGs_pWmLI5m1Xa+XQJM!gYGh${hPFm3>Z z|1k$HRN?{LHy&}FnwkeC%cpj;%K)%L^171i@FY8ZOZoWycDj~zpOb6X zv}1|%+ILTg7>?q46laSc&Fkyq1?QZWD42+iU?=rGD_Kk6I{>`D_TmOEUk;G>i|<@T z%1VAt9{JPgB)pQlZ|Iu(rpLlzVNSP8g5}Pgd1|U+aW6neaX~*$PCacqhf6vwVa^bH zQ{1FGwsXZ7kpl>@2=L|G(;DLQ@utCFgwOoLn5J!_&6x?sHf!CjKEz{c1115!Ue~tq zqx&U%sc+AA#ZDRgqhAYH(7G}#Uo&TZ(gTMC{;h|Op(Gy$ZSpx2#x{+ky|^w7#F@3+ zW?~0l=~9so+l&{d$bFBC>|p2KTgSDIIBfq^<`!kAWgW+bNx) z-*4P+_5b1?!C;~$amDj4Km&>kVjn${4}3}+OaO?RKh}=^$$>bwp0vwE zzzi7wQNq&Z^3k4Q!RdSnnyZ=lrjgalOr`%fcE}k`B|}Hbr&zDcXXZ)J;p;Mq5`Et2 z%w}TmUX{2$FGu|)C%KWoa8&M@kQ`k5Pw>nwh!H@{r26&!2P7PBBau?%`&K<>H~+?zk_j1%g`@|Yi3a?sXhbTF>{BaPmFL31w9Td+uyr7 ztYPr4TIO20UZ0hteH`(ZgMYS=(`fRnKVJOf{o|;ggFn^{um8g?Zxe_PEw#jcEc2+Y zWS4H-3)|1*#V^uEAwW3~{?Ui7CtF#?Dog7OwjcFt3pWR}g~>;zgvo~{hbfW+4_)0C zSH%KoFHY(zK^GPFH3$Df-ENh(%n>JccJV*iQqLTUZHJG`60OMn#CW$IKBjWNpsmlL zr;QH&-oTYF^tXu_ZO<+krGvkNXfbaS)JS|5qPB~^m=oo54F1sjM89Q@qyM@DocT5X z_I-(3>mo}{E5T&3d#8GtkJ8T4}^jEft#3&8*$2S z#kj%0Zkt&6ew-Z8xWXY7C9@3MQ{1v5N^X4IxjFBCMQ?E;dQ@U2Iol6IYXM3zslJMb z2B-bGEii{1v|p3K9|i2yY!YBT;D6f7Z|lu|aO8dADS$FrKW1CjD~8cXy8>Y%07 zG!otGH{a8?cIxwkjiLA7%k_;2Mj+Y=jsOi%8OXqhlnPcQx7FlPkPXK)HidyS;!#Ax zCWGQC4RGn2+rg26*bU4aid|jTNh$J}W?{EBrKk{qygv(+#66zQ`yp}S< zLt_co{BhbJHvr;;1RHWNClB;qhSUBy^2cPrCy(DVL`nT;R zAs@{@n`Cqdzq->90&w8NSfr@q)CIbCh;%PKfh3<0X zk5uOaGQ`KmdcVX|h8(iXAKin6ChAbZjsZNBaeJq1RkyvWQ=jTo2LJxH(^Rr3gZ|hf z@%pb&f|RjnoFapdp@(pJ&0<2Geknt~fB5Badx3x6-|)}@KVgjAc`b=Ckpp@1sfa2+ zZ3Jd16$GbBSxCY2fN$H8sS{bm7$H+p>>I7b1#JG$(>KEZA)i;fyeqM{gdZL|5&q#g?lZHL;*@G7cHw87 z+A>*`lK|lH!QgJ;3cu;MMOYI>?cbza|5{ zB?w{UYEtbYp{S(S->(nXzp*6jxny^mua_JAmV790uX7H~G%xu$ASHB+dNiXd249tW zJb{pDM7l71vWkVufMem)ydlRR@9wWk`qDS+c;pX>9i0rE%&>VSDkjF}!vROhgGm5= z!7i86=B9Mo32GmSP3rJbP~m9wM-=0LKYSj1YIpeHmv(18F_06-oI2z=R+B0h0d)qV z!@8mhUm)Ws+7vnb&VaPYVNc)4M_s~Abe70;YEXBIlD{O70_`a)>p0b4CdR$(=D>6# zATjid^|U=c1wcG8%>CeB`YpdGWgp}|Gq#Uq@P|+NmyWSdibbl&=Jg8Ww&FA~CuKPD zkfaL~azZSOnfd-<_8tJBZayM6x`~r+Te1fn`LhkQ$&8r~7~-h^`Pg+@T(Lt=y~TLa zR-avjlP&Tyy3uHKo18HLm)0E!b;w18wr-b6!ra!eiYomo)Cg41J}=l(U)05JhT>0n z&~8iu?yfmr;WIzpk>P2}yzDn$uZ!JyqjmI8F6Nc>ok;NAvsU6h03`ZiPJ86ZEDFmy zY}U8tgCD?*-E4{9a@?-@zuNg-V?vh*PC|3K!_>sA|C5e zwt<#8rycvfG=~p;)(2lg{c{KyV-lcAfYwR5aUA^V#OElR)0~4xIh4z2x%9RsQ)?}f z3lkLt%s8g5TAuVMcn-CR6g!T85Dp#0o4sJGCYm2U^g-Bp;sX_UTSH_VO6E7qfS)n@ zA@dpgEN0kzGf+z2C(8iPC(9?N$jyDx7;Qx&o_Q1}TX2wvIqhiUbCgGXZjTK9c8$== zcvMQ=X-+(OeC~0OvyMQOLii(*y2$?YnvT?!zToo91!PoU-rJ(L6m_8iQ6^TF=ecbiDdyhd@%SY4l2dw*8F>+b!@+MngnZpm<5)X=0hE9|? zOYrp5-wUf&eIFDJ9Kd&$XZ>-VUz60a9&qCyj{cLcCbqEgK3RsGw#a=MItx78{`Hj; z;cq@X5t!pqz%6er47lbGTg0^GtvvX{4}Fz+>8teb@xH8a#YM>>-crmGj#d$XNcC)h ziU1Kq{2{4dEofD+#sM27`1by7Ks8%)CP%hiIQS>4@YbFk*)H-ZAw1Ju1ilPCzh4@( z8K?|T10dxAoxU7L7cAh z9NZC=MlG1!$vL*tFX~9za4GxzuuK9l5jgnX`{9rb{?wU;E$d`nUzR7tNBuMoC_$jP z#XDYZ0A!31v+Q$)iy34mCUX)X75f*;+=nOQ69BO3DA9+<k3C z$;;Fi6wWVXzqRo1()R?D0LFy8OnCDjCIcAw%jEr1SNey%l(FvpLWVp1^-_S?{PmUN zN~znBwoe|XJZ_JJLV-PW!C}Q${8Kd#Z&?-0kJ=7;ZE;&)kkQt61>`wn&gZJoP zGQ>n5=~2H(fDAfqp5*pD6nwO&4n3o~h%fz<-^YLfAD?qWx@qopDAPuLNd1W(4;w^- zLfnRd9OX{h5DCMtCX$d4gFX}6bsow#yGV@wWcV}7mU$xR({ zmZ8%#0oW{Jh_-$xH*3a(oMrN|jvNWxKB4O4wVj877)Kcs?a7Tg%VuetcH)L_Au*j{ zA6=S%64d;}01aAguc$al@G+@h;8BQ)aiALAQk7zC+809Pbu5E`eo5B4_e^+b-`VKA zEwt`EYjpx#?qh-&Tuju_*AK2tRaNROjmi4vXizt0%;< zMP2UG)*RoL`leY-vViEy6w%Dh|4OG2el3%p*bqMK4 z0db?*G{WvDf{uQm$76o1cj5D62Sj+( zk3mRPbw8RsS^cP;5Tx%o$N-XLoQ-}N2e`+5ayyK@lRv0Kjt^rnwrZU^4E9gzM4&A^ zE_eSw+0zDp*muz&Bs9)WEGW{+OF;(ZM`d(nijn5X;>z`bK!(q$#pA-L4aXF$I1Si3 z0Tg}zmn)&=jnro%Y2@<*edz=EIvM0l@C%H`nJxw{mEXH2H%0AxFKnJ_GbP%PgL%o} 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

R_(iMvEyD9)T+XP6a+GA{QRCP8TL` z9BK>s@yu)geZz&$t4iaLPfd76W!%R#zb%omLD86L3|+4uhk2 z6$-O+IV*)q)33~L+mAWlcK_0+hfNXM9f&K4r=tQ~aN1ojtT#dSLn&aPaH}qG5J@UF zoKOl`VWF#}#P5V~?jjM&;1{4*7r;8`sER}=r^{q^ngpaGC@rlNy%xXA?C@Dc(dg6Z z9cGiu?-Wc37d^7SE}5dO;(<3^;lPCk*83WiXg9F+OmxHlV=OPzun+uq8uSnts4s z>sPR(rMWauXvgFz`pwMzEKpelup_HU!5j3MPMHQ_4>ConxkwW^`Tl~H*7sM!X0ejw zBvnYFbtX@flJyHCHz{-{*L4G~o}7BIs4V0@;#jK|l6b{u%mrlm#!QODN3;q>Xx|0o z&(g$W;O-6qod-}28wTP4d5!tEZM!A&#F74se*B{u{V!oG)N@uckU7Rp_3&hTqi0Mg z^9SZDnFuG8p<$8bA`fC*lnb@&7NzQEnxA=oRwCUZ-kjg>-C8W093_sinhAzknt6tI z^L5qLaj~dECpmc&f*kmE@(gu5Vw}3IYv$Vn5a|O}YxvOM>q@jHo(c!TX2ItO<#n;m z><%U|#aRq|ZXk&;r8<#f!D*%yrasl|wjV!{`HgT!Xp4aMM9Q?wvBx1Ucd*TlI~<~e z93C9x#0Pt00AGC^+ zBr7_jD;KOHvkC82>?Y|9tcCdIi!r1T#cEaknLJ$i+KjA);Ur}zBZEhQ)2c~g2hMXg z(lbMIro|~$x{`)?01G^s`R%q(`>sCyADQ1hsZF(JYFFO*ePiaYdoz#scU-rX%`ANMn~%Qs+QXSst(hNgy-r$~vFt*l`JR_BAK4+>a| z)}jW~=Y^z)0%xX_6oRY~wJf`-QU8SO7AhgQInr9Xv60kHxpZ2Wg7b zU0UQ&$}Y#1jJnv=5I==j{WZ2psQ3`?T_7bx`R|DM!ZEck;yv(t4ceD+pO-K3`p-nfXwdHxHjU@ zE+-S2@RrEnYJp((6Z`QiEp;KbSsZ4w1%63BB+zpSqS;rX$1=y_l+6NW5Ya`04(&}_ z#pVwo%p&AR+R|FmoRo$*Tjjx{3)B|oK6AMF81$|D~Je}xtw;4NNDJurA0$B0_M3nOX)RJ8=hi_ilmtSgi7!xl>L)@Y-W=iqST z72N6(QW~}$@LD|qkLWqXP6B129qFXIN|z&xG=5Ty;dX1MwadC3`Sj@68Ma{AcHAr- z2lt_VGn;ia)z7gtppZJY=3q@lc_>z+H_{nBvZ<_5@^u0W>2;zvyxmVMT7kMY6%Vur z#K4A1k9oVp4pVn3V6Vl}b3;-vnJQpmo2L|DO=^h2=^32vrZn7T$^mNzZ9!b8)z;9O zK#ZfXXV8uD*Wn6`gyAGNqpR=@w6fs`S?QZLoYUnJFw&Mf8{LQ?Dp;7U1K6Ql)fh8D z^iR%nI?eT}hcmtN*8Gs~lz%%Vl3r!Jf_dQs+$t8wzDtfjvnV~YFY z%fCjCCTL6%l7svxdbCXVP?@cR_c_zVv4R(UI)7PE$+M(7fps4*3kJ)4eqUkn$im{{ zLZ8p>c3$sxLi=mioAO4Qpsn%g3(VH*%~q?~SK#yeb8+yTA7?JracMWL{} zu&;18^amJT;_QRwS}b`y;pvAF55vKO77&IQ)ZV#f%`RL9+M42p%sK$fAf#*mxA#9= z85w@Z0v@s!Jioj_6a{1sE_z?MsF6lxmoj57TGlTW_AkpVVzTmgeXSIt`0Gmzxupy7 zt83Ag5Ax9hq(`(ZTg1& z9Nj$qe0#6qr@EI7ztp{Lco!FafQvpi*m=Go;zIcab_WvTA?+VhNznzF#JZl|vtO{b%unR!GY7YA z+n8CNS-ue@eDDo+7rW~XYU$}{+4a1o8~9AYJ<|9wJkszxvw-pQsZKA*ca5d$2wzTEJmnzB0Q&NEA9aN zOeDnsmAoG&dve|`ttt&;sQ}>${#FhLB?uL*&xy0KWX;3bJY1WX&E|zADsJ$(eI_Wf zQ5Xv=7fnxvp_2`SYs1~)JHv7~oKEp+f~ylra$40IiJyc`0$L}0(Gl{oLk{EeH&4^f zSN+6;c+)cS@5Y3{=K&I?IHl_-at;ja|5U;kfIUU3{>A z^};Qms|H z$?$*9dncQ<{eQpzpJit5%$>>PzVCb9bDr~@=NR{d_C%f!K3`%;TN`yP#%61uq}$9k zi|Z`wtoV(6AQc_jIde9Viw^DV=vMFHU(>NdvU|}e<|cd^aUFgDZ6M}afiL;=%MrU_Nj$XEA5@2 ztI~+>*D66F2C5T6*1qVL=+UU29*FR^_?Md67{$+hXr~-U*}8b{?kE;f8>(f<o>| zCQEQku-*9{>CLsDybdux9ihEAamTSDPQjL8`$oe!eou}vh;tY&>VKUlFBlTg+F>Uc zdw}f1b7P!f>~|je#yjlnQ^%vJ3FP<|Sm&LE zzkIv!{h`Utlh?D^9nAX3Pk;8U!Y3VtAFQ9;Osj(XSNfEg6sV%!Al!k9dbCbgfI(w3 zfT*1)mXDH#Idc;u`W^lbVtS5yhf;jU7-BfR<81JZAJWYgn;3jH<`-^tS9pQS?H{yNJ`PuL{=xlrsoXuFirUo83@koozP&)fE^mDe;*&<=T>e&%^?8|F5 zLsrp4zX4TO7vI5^sNfSH(_G2l!@d0B@55M_3G@?!Bj?jkn2B${j>iOL^b^=e*d>cG z!33RKjR~LuH2j_5^ZyRtDG6?S5SfP`C^dSA!5y;r9RYXBeWhnrjZug>{W*77R#1H< zhC()7g&Z)&WW^@v94Ns4Xs6p53h!erJIX_tUVVF=BxT}sLbw9$v{!hKd&OB^<{hjn zD@V+M**afw7>!X=%v6hn;H=u0he+zMmz)%`z7XMD**g;fTIS@8v(J5EU3h`Bfa!VCT`evYIs;NgEewI$7#hA~QIc7M4v)n+%;lBP;TM8!HH_`DG$op|`MtM1 z_@hNff4zH6-J11NX3m>soV~bq){o4x5dg|s^T)VLMj4~|bN?bMSz8(?&sMI%!Q^mRBfVi5iwp&srrz!3y63q7Y8w+T+%x5}^Vh5{bp{LXl-_cSR5&=TYiJ{ils4XV(ZGdv zt-JozU289W^UY;9hzF7P!LHqe>*&Yqiwln`6T7WlQPC>En7E1WIn_QTzED^uERF6% z-w~@-xJWpF_9I#cxJ$1I8k<~Ns`r5SN4zW`sb8ma;>~V*2()d2BD0jptwG+25uU&Wb`oYkeux}*GoSzsRVq%%q}`igTa3n!)8_s+~YhK}z_IQsHwYU7|r3(22LX zwy&?KMl6FY)FEpO zaY;z&t&q;_QzU~S1}euv;&2H1}JB7J?rTD`i=p^DIpy zz=f5c;Nln9=*S1crn=JOq^=4s0+vbjo+_sy&QJ8}P0W1sC1xr7OKyv^QeUX9gC`k|py|I@0oOsH&9Zlup%gI)PXe49$PNAWt1PSaP! zuW06)=9ssb3?5~6qjBHqbvtG^l3v!%hV~o|hwnd98af(1NR;d}{m3NB#tL`dxX^gM zX`yAcxY}fV)^wB|6<>2`gPtT?>RG|Ab^n=*2mF;XU-n1%tH}3Tg#$ycdTR zK(J`NDmG_~t%yAwdjjzJ`Lv}Xr9-d_<>Cn8B>p~fZM-vh02<|#;OBw=u+Rly9RS=J z3VJvaPC-x6@RRrj-hkCg4}gO+U%rv^0=b?AIp&bJsD+>&#`d!o2OZJ=%&A3 zdsWSb4d1?O`vNT4_lLU9#@(|U#DkAKa%6De?X#a782s5o+J~`V2dS=~?)zw_z^l?e zfwf!0f_oEUqj;;JK?dQ3QdgG9r9EsDkukjld5P}L&MlPkn&n^UUk4>42pDD4Hq~nv|sdRbI_iAzRmMJr_u-9~0cmbRD z8>aV7p9+6BnVKNu_y)8VOnK9w>0aSJlTPq@m}qpHjFyN_7g=Fh2gI4C7vOQaSAx*3 zvnb_h+~g;s{7>2(c|3AFqKR;R7F|pN$0!9sI}2IIb};p!Lqg*)idyz!Gv*V7a$xW|FINxkzdzrLfi?g6W1TaDs2gNBERq}C5k8`krQIb_X@G8 z-8qX8LT*ynBODeqX`D-NBb`9^bPnxDW}Jueiyo3^#&r%l9bTssPuLx1lffzZeR{tW zG##9KXlFHl55i9R5PY8C;i+d-$MV#3pAuYQJx<)W0BE>T&kD~v&vB2|;|T^-+oXz5 zWiuf>z(j3mAoU-xUQS}uQDMqnP+`=~2a}oRvMS|UEbMWzvSCMN^P!Nxt+KnPaM$|6 z?sK|_wldAL->RS9S(==1=-R>`3f~nE(%!;Y4E~FN`B}^Kig|DK-rDD@pRd(|<8@+Z zd6Gm1Pbgh@UY7^cMB_t=e1ZJltW~sF(7A>EF zW@PFudq4q=WVxN_L2$SN$<5NJjI{*IVRuGik=n?L$U00+eT2NBI`V-?XONO-WH?~( zv0qWa32o%mU%4<$okM{(WyNUvVlp!yvL9Z5Koa?80H+AfH(GNbK}xkC^q<33dV?Kj zXqG?ui)nXUy0+*0ciuE~asBys+&S>#x--`dv6Vwp&pB&BxA^SOFIhD8%+kQb>*ub$ zzkjhoHzghO%iRxM`rd_0AG>;n*grU!t25|heJy)2d%3EI<`K+Z;46r29>wS^!t8Ye z$zP$AZ4=mPVMq{92L8KLywKF=TOL?c`b(cqgK|5Ur9`$EuzSx%mJvc}F>Z(VG5?Mj zMJ;_hbUMD5n+1JLUkjH>tKTo)BSh&!@!$pbd^7JT?&6mXr@~1Clo}S5#WiZlIuDN7 z>Vd)d+80;7jP%b3&)jv(zQv0k-m>c22PPJ7Lc08^+qOP>Vd1?W|FrN9`{3sL|MR-b z9(o8XVmnsnB>X;E;f?(u@13AxeKLo1&q;b-JP13H_S<0HXFXi@YT0LI9d^4DN(6ag zqLig6{2QYXg^7CC};4!H6lBX3MpjBu?DP+8AekGij~N)Vo6dT7hYZWrIQGrQGmM|22P38?8~^k3kJ7tn|I%a zOJ*F{c-^J9RNc7g;kiun(S6gUj>-udv7ySz-tnJt&KcXcUUWmYBEM|fb^p=7&}5z% z2v*jt`q8y-vZ@IaCg%HBw@x9e!y{<;CNW{Hk~N4%eLxKA*NcAi&Tgj^9a;^gd+tj^;Q)zPrQxE(qOh(Qc+vy4#ysIz2D7}}S~K?d*Q zB!5gdRKH0}iy#-3%mQ?a(_y*)%dsvlc%UL*ls?hC|N5g({sJ56TbE4hn|F3MT;d^+ z29Eyr#aG^9wJ=Zx-Q8yotYtN{osuqzg7xqN%paL;QMyyEylcRDk$kmjRd}!IcP8T; zHrFWTg|)8rf(B^@vkU!I+(to=!;s+*G4NQCxMH%|<#LB3;ZVdWxME&FOVgDymrHhd z9p-*?=+GD<{c=oimLqaT7AxiH@;UOAvR3BiKjQR8B2H#>``y37=Irir_qqq%T2y&1 zQ#OYfX!I=X5=>fKBqGcD5V-XIkQ}Oo(!}i0MWNN9dqa66%#c zj_dV+>m$ZC;|yb;QRgs5jn$};Jk!`~yvTTk@n++_#%GL2jISEsGk%7`d}GKdJFjqR zoKCY@usL}xsbW);+gof;*bdo_+pMnUW$zm>o+RUfJsJ{9+*h=NX4NJWUa zcO`b|;T`8>M~JqiAel)-)Of{+a2mJmV{V@nYIsTvJWG%2KpWK5ScZ*MT$p&YiRgOC zUu$#aQ)Q5j8oWb8>kH2n{=lDL(+Ypa6C2ozZ1c?4I;pXcD0m^ZXCYcWY$ZBQ!FmkTZjlI-($2EyS07Wj^d zjdZ72Ay?5CSP>9~08^iU*$4zYSxpBDD+qNcF@Hp90<&U+#1E-kEH|$;iw+RR%mU}B z;|*96^LNP}PdY^xsQnb-iM?3+SOb9Ju@o}ukrM{BgKPxXLgXeQF@gyb_G3_!>!b@Z zj0OjIKq4MVb^Ul~?d-458W_CzC}gDS+9Azjp42PW4EBqK@8A6J0)62Puv1f-Juk31 z*hNnLa>h)T=H;OwT%|t5i_5r`y<2Hav2-@inzLH$rd1Jbq)IC&LNF-G4mo8qlzM8i zo(|;bWYJQ7IBfODT(#7<09V4K)A_T}4q~q0LV`;RG-AHu^DC%W_bU?{kNH{5UyHn} zzpj@1FL1I?wm<=bt^jK2+MU0JMZlKJ{c~KX`er^=dK26zaE>MgTn0UbU%aCPO4d;H z=H#S#%%-APgg9`{)%SmM!NXJ2t+C3X3saMfxPY9?I!k01QvSMU#+265yDbPFkR4um_7 z2?BHv0K6hAmHOp9yjNbH;n(AH}so zJnnX*&L42`Fxtv>`}x>&v^A;zT;RDe#lt9#(o?ssPAk;a`AHz8Vf2lJ8mk)iQ-Dk( zA4xbfZaajjiW7Ur1m>8qWx~S~G%F^s3AA0J=7--y^qTG!8`g<1VX_-i`l2{0JCDr} zK^m?Hm;#X zrSck?t~z~he)WT)cutb?<)(bgW;phcxWbH%BtaculNCpJGg7ehoQ|H;sn4;v-6kff z#wnSs%TUhRwieZPm;nUBX=M6%r0(Q>%)Jw5dG~2bc19w#l(^cBuY^^JXE4vCn4#9N z4%F&LI^d6H4gRL&{Rjt7?VVUS!TMd+; zFV$!jH#~ORUHcDSwd^Z1Yvyz=`q5d_r!Co4f6df>&4;Z6wafg~)32;m7Ei7*U!Kih zP*`*6p>I9*-jW$5!Rd3l`foZ=+uV{B#fzHiDH?-AqW!x5Zp>uxO-QkY&nm1R7E^4f z(vKlg)K5u+(vhr3FT`4KwG_;k4aj6=gwK>@!kDORFy?(tm6MHAe6x*nd?vjCq{)om z5by^>`u_~?GZ51EE5+;z=gLc2X$7c{m@KH!%WVPKgbN4Tb*6F!VRt!+q?ebo3Y|VK zKulsGTh25Tv226a10lf*Q)E z2fr+QP}s$~K6vuh@}_}-*AH&uNayCR$BEvFs>3f1`m^a$i?0Sb2&? zu_`u&kF3?NqrOX0G=>2gYX;!h1<^GN-SvjefJd61m0>&Mak)BITa`{%7&*cLiA~Es z7F1+MmDYqlsDc1Kc~vAVW)zbLe0LVl%CXwoT4p|VBQ zesCrLv;)!90Tza9=Am&AVF#dq0z6P%bCvvpoTtB`KEzE)6WI}pd`H@j!G5?rE(F11 z{NgEw5120`>$8;xoz2z?V1lyJ@?1oO`P95SIM4-HLVrf zcPrf|ac(j9lc-G6~a6EB1cKXu)DE9S!KcVHd<&N%^X@WImyko*CFTiH^l&oy=G zr#5YDG2SmeD(=!BXn9`uV#}*d?~8vEO~6z>Qs&bBnW}1YIHHb)(EB~+(9uJBpxuV6 zNu*5&5Kl)#MY2SyiHSLzGa?!NMn@g1t81v0po7MwpyG>wwT@z&pcIUh@!@G{$MA5E zk?xezWOZ(>XB#{ukF(0Gq^ffV$ro&hNa8989I+q}4Z)V= z%}@g^jsy2<|5GM}m0di!R z#vr|V`d9x|cz;c6?O$^(>wW^9^OB)&tZT{rwXS8&H-;`*`26OJvf{JP?s@oogB9&a z_7-00ND<_zvT@QAS>Y8_=1feh%$)Vp&W9~GW1N41aqeV&`-Lomc`E?2w^F}s7xl;} z?n9?OS4Dm93Uo-nNBEBLJ_^e8yaUQyke?jHfU@X~O?snIFIh?gq0T@k6p%`+E=Q*e z3igt%d6~DOOoqxusH5`N$-KRx-Wn7EhafZ-%c*#Lq?A4)%BArDbT1;xC3D z8-uH5gkUw6JN4-p9@W^#r<~97bq#lb&{Wzfu$(c%7;?g@xNZb-Pl`_f+AbUM8bqvi z2|FLor#y5nRVHSyzj)K$tFV*zci+8s;kvC|{d*R7cQ3v}tZKaw9l~pBdPMhvCP)>t z3z4C^P26(!Pak{8u&_Cc29ICcx%R~YJZf&vYT}oleQh8zskhbQZ##QZX?Rs<&BOrt z1n`HoKj%IH!4>2al*7{`A5}QZc~1eWzvgk&cb%~07;+j25iXDd_G0xu625D2g$u_w$m90#rDk>q; zi}-Pk(lkrQJ|zDU+UBVB5RtXQK>vEm0T~Clt@w-6tYC391eCIj^`sv zAPiy|>hO(Tj}#0kb@kAuEGy5^QrHWWAQS@T%BP*pP80=uxT+F)_<4Jyux3&y0}9`< zVUidqe6%|dMT|R-MUo_+e(zFa1ODh=^Y}0mLH7HUK+#V);qRZG_%a3{pNA_GV+xh9 zjnLHMtjh_EEK-wQF6 zj~(BI?34p&=o-|7;QMQoWH9SPy@*c=Ycz(K97hh#P!a(OX4D(vLRjQf zy@?Wa+_hr-&2SW~;WDFa0NA)-kIx&5pRH1J-n*`RbQ26y#8BQf#X^8O!d;SPC~-FJHKsU$W|UF@E-;6 z$9Lf#04!Z8%_ISfUXXNpGe0&?0wf6fqTU5H?lnrlG06&Em{oH5d_kSw7_`ORE-?s0 zxj-?w$pd;AiDt~@oltbZ{klEwMh{>)n!>xRvx?%anAaThw}UJW0f}JF5(+=5UQw7y z@__g?MW!B)c%Ve7k$-b7$6aL}JgxjEZAxmBz%R7uS`C)tl%b)kt{NKByoma^E+qHV zYgbsgVZ(os2b(T@#`(Hw_^`jBy518zF`ZCCa$+ZBwon3jLUAV$OWN+Yig{aOrm3nc zqlHSvaV2H*Ki#(_X<*2_8KFm4HPzVefbj zO5^i12_-SjKF#@xc+7Eh!rN!);XSuUoPqWY6YmxuJmaU%pG04Gz8w6ntG1WSku~2%|9~g%%VzD<5bf1IVW|`a7Ue*px>6XiF&)=zRIq#Y3&*< zvv}J>9kKR`j&qRMD5E3Ut;&Zdr?h^IBp!Nxg7VA2jM3Vx6qB^Q^PBKzo#a7QiOD z-(z;8Ut0AHT1OI_JGV@M@O+sPm2+iq9%Go3ePBoc12}g+56LO7LAWk38mjBPjMzad zv4#*z@ru0B$3#9LxQi0uxTT|&6wgyF4^|v?<9HXJLZ8P)3vepo#W<$qIaMp*6(VjE ztBpQ{9=Y);^g(FRffAJrr?K$@zj2RywZP`pr};xdS!waYA56IP4mRB28=@fjWOhu^ zgFoQmJswoPvcbix!HP8y)IOH`h1_k-BB@0?dC`XySx3X%P+iB=s{EC+vtRYOu63SS zpGi)hysYzUOS+bHFPt{`$ki8hCM)aCwq6_ZT--2cRla&sb6%R)(s*h2qObIKA7Q=C zx1X5Y+EUeLJaO}2Y3Xk-QhH05PU>D&_yCpe=YsOwGS^l32b*-~PFDYEUQQdOd(oNX(A96}l8nP8RG1kt)G1D!f&JA3hQIup~n?_nesJl#K?IM=m^` zAtW@#&-D8YUbf=Kd!G7u)i(>LP75arM`lckC#U!AxQV4#-#dAAN7s_{wVQ9h;N3=N zRb?jcHHfVh6|GEr@6`W#VDr)?&ph(Z*Ure+wP!mz4$hp_RM(uHJ7fCHUvy;KWcQlP zdEI4!Olw;zror|8JFM_8;V&fEW&5F+{*e+xA()M-!OBYl8X>MRIyE{L7s}BLw_K3o zVWeW#pcFG3h1(mI!Xa;<$r}iGrH~zoGq@JcCXdtU_DFWswWu_nQFJX(XV--KNG9oG zHtP)PsdP;zkkM{KM*^K_i^Y(-Sg^;l z*1H89QnDZ>=+=0{DcOQIE>I#2j1a2T+bpn!!Zz&f0P@i66MiG{Irerm3ZbNOrMi!D zf&lmGu$!u$h?6`J@}!5uw-#!&gM8YWXMgIQ3iv?qn7yi6qL;a~wjtr@O_28+mX_~0x z7|*PV%RYae`tGPB%Ok8w#R!YC09+}!t&x#<^QhD`MOZwR!+zY&UfB=G_PA1ss@JQ9 zO~Uh~zbbvT@{KC}?ZzRuXl_k`#5Aq-m+XW12jzxa#qWq>16g+LrFFR9gZo$s@9Mh? z9$*yfZjE9s$)eOL90bId1UKN25=d9(%CgC_vZNHtHrC@`eWR4EsW>365i)q)jn^~T zR3=lAl4^8;CI%r0D%nxBE{%p=NbJ!QX|-g>;5B-*PF;YtHVJKA6Z1_~5MHf`nT%Bq zrxVo(#;$!#P|7Ffve_CD*(Of{+fdHi=jrz@X}iL6g?Cl!&bH^;UTL$DPA2VYXl;dh zbUbKn(|HXZW@r?o`|lD=>K`|4zWch{1@#p$Z67cXzM+i#!Re}v!#yZw$XJnHINToSLUxI4S* ztCO4URrw{F4>bRAd0Fu6+fNdx5S{yngN4V~;4s9XI*-lSLZM{hZ@SM)=X$)0rjnni z!;U~Tb+y6=N{!CLEJzIGjCM;WdhOaJqk%c#m~}F(mPv+;;DB;tCrWVzDN_lV&^3x* zK$xE`OQjNJQl-OLm8lekFhh|*P%)JvIe=Wf1MEg1KmwysoQ3P1h%32<5}`+X%T~nM zW+2YMdH4E(QV0B@x&uJzivc>B5mnSCGZLr6lmM;mr4Vss)G!G~%k4hx9W!j>4*&tt z9-`WTQJe>14F*QVcsaz|G~R#LYaMeZb@zX(zkA9#h2L%e)@!+j0h^%_a>SdvmWbb8 zJZ%yc+vVzMqiw9y#7{l<-+#XNx<$%8F?P*Hv5j3sg-LZyup4h;M>xg(bnqSFw*%{k z76w&+sddF)ta(&le_AL*wW;}a?W_7%qp!x-93k_x)C3>Qrj(lUzLjMhkwVmhcfMoDBT-bwY5Wqc3=K^nwhI5D;) zvix7*DI+GIkJE^a{(>PN`+RX}6~|IN`m~6v44;QcOO5*fWo;zf0uJJ~F-`XuN+XMi z$(K|{a_f%qxCY}fQWuHiVs;JVgDf$Q$&Rn) z993FpH!hT3vAt~9q+_?(U$bfE3+Ia0#O`x!cf2O(?`3Q~JIcgP*25MtO{L=Yz~dGc zYL}~MxZ*>ci*?6@SWJ$JVl)$N;S__fDo(o%RUpttXJQ8Gl_D<+kE)xy-G#U(swuT0 z;VK!DVjxf|xlEL2h2i%hpXc>PNPS8caGGeh8OsPpAelOgrMip$)^5pNKMUVKXA_HHGZG}{QACC zU%j|ZIWNeTog=Q}>67__hO%wiZ(=;sV9qr$pAxvYgzeGq4II`#AJ7JZNQUU?28hiG zk{yXq)N8?m+RZ4LO!2O-iYWxpt29a_5nxXR1W758kp(Xk>()VkDP{C2IKlT6+kzqqG%fQ9VF?1sot4OiJNo=vTA&nz6E3_F6g5fONU|2&gZ#D-qIOoCpA{1FB&(_Y~D5&lR`l~76xe~{AhfwJk8%f8SB3r;eG@YQx$Jf({9@_E~s zhvz)X#3MU*EHBJScV2aU;ovpbw9Y(oVD%%rTUX!As&Bro@Hgf8cPfsQd~ig|dNfTB zU0!%(&iM<^>znh#udR8YPTRBSD+|vr{B`R$SY6?z2k*f;`a;#KUwj>%YEssmu1u>i$()rda(r1pQx6!e{Me{=`Wk36$B9hD@WP*}2Gm*!D$s@YLSQALkAg~=*5neQL zWA-j2DaaxI(iaG2;(#YYAr*$h`WXikkCndCYyOPxFrWWy1ScLwkjeTLb_@;OFp3j@ z{!S4?hDAfBU;8jdqLHmqEcp^<)`qneS`B%hwB?kL9dRWqb5amDj|9IbiPxg+m7Xo3 zJ%|RVCY_-?lOw}2o#{*_E!AWj_i2m}ZmDPW_XzMt1t}W?CuI$ZGAM00cNUPk&TwgI zBrL_`R5^b;GDe-L^751<+n|xa98kUzous+o%pwZ%NH#0USRYbSct7=7@6?-2ddV8H zK7|nsRB0eIoi)m_7^Ja8unh@6RV=AAZDHwfo@$@w?bX*J1rcic7h72S=m=s&PPVKZ zO*wsv9Mu??1Iudc;qZ&aaa>t+DvO8XofUkJnwR1{?Oy`%T|pI#*hD) z(J!vyVUJ~OfXfFulTb;F2n;B>%mW0BCXF*iro$`RB?^Pr{KvYBcD`|2ch6d-;qxhc zDZhod)U`36_By`!ic5fiOx8x0;LpCb|436kew1kr%J#g!6LJw z1#}hi$R!cV?MEZoh)Btv9f1JZ?;U|gB=7d@wRvN{T1eUPF@-tBm~#1tz+Nk8Bptx$ zX-v~l|KMYaZCM>ti?ukWumGq-M8qNrLZ&DJ_9a8<#2yGilMF54(J^(tTTJQw|Bk9^ zj7LY3^8|`R`6cGr1$6=pW^2vPw>EV3AXoBv&$!X7Zee^lDUCPIIAcH|%8a#m1mhV7 zIme&`4JNJCYfYJw*6*2iSr5dXwZ0g8t<(bFlV@09j89PFZWuEnYe|?9)P=AomT1m^ zz_(5>A5l7h#N~JjhOh?p`r78SoFUO zXBJi==T|5U4u}u_;MI)}L#+`>t5@IJre^%=P`Bu~rF$VtEnY{X5Ieut=%2=JgtkJ= zAIdda8r|D%+ns39^g>k3DQFX!pc^Q^iu)D6uG6T4D7vJnkLQ}=xm;YTudB|I;gKhH z=CYmDXaOkIrK>8Nswyk1q;#q*(NvZ|(3~31u1+duSM5A!SY^$ctX8v0vd82qtS&oh z5s+YwYwGIjMNwl+r&1(ZD$(EoGhDDM6pEA~=$ohbtAuK56GYYS?amfrc?^5y#okv91rsd3aMypm7e&;&4KDc-U$8)6qbKKt)I&=jU)Us#16~ z)+L3{3U3dsq)abE_rl)lSN>MeUH1I0wC`2O= zQy{hGETo34&>B)bQH%c!&|`wo-1C4Gzeb6=vT#Qo@JFR+9R8>$6o%r0%^F9r4TrRZ z))*-kBQ!y<4=NNkGF@0^kO|{$uB~=zizV7Zv0@sX50pA)a6u8fVf#`CsR)Ao+fh;- z6I^r(;E*#Rh~%Gh={zdHx}$_T^lio`(^GMz5v`fpM6JQWB)t~eL0~f zHu#a{F;kkFFZYVAHatK%ARa3isOiQ~)B{agyY7AtF8AmnpiWV{PoG zT4^@Bo?IaI5OipG6a?*QM4O@Lra@Vi0U9tm$Q^-$O2} zQjmec?N(eN`%=Sz`6~PRQs@)Dir4wn5k!}&ue(pYR|zOm^qNpcUMD_`ekA%}LN;2^ zYn#s8CB(glsVHnmWIaZeDlK&}-9eq^IKqo?7M8gWWk*&fSP9uCTpKfOPb8kRhH8Gk zpM9MNk)K1MawbU71-ko$I0((qPdb_H=pD|F723maR_S?;Vgg%M%MDQ%e!WG%7SUjzQ$Kw+qSS8Z&`C8=Cv}nAJH%VD^)DaUT zzn`GUE}`gdXL)70xmeJI^8Y9MsxTcTc0}f z>Grad#5nx&6+?y-71}E4NRACF)R05p;Gt!JeF_bBC?_dDOFPo9*_I`{_x$423*aF= z^W@Z@{f+lSinX>xUOF=-hn8y(sNkoQX{-*n28V2yNt50=VuW;kP?q^;2KS zcPS>vF3y=+#6QCI);u$Ye}rS>Gh_HiTa~cmnX&vMbI>Na(cU&7LBaxN5PTxK-vjc| zag~U@$2rVDn!lI$N2ft4pfkaLp!?m#Kmt6XF+6!)F$2gM*c`Bj!T1*hq@tDi@~f%( zc>fOsB)WLKQ9D-f)YEqD23#%T;2+;FRKn^zutE4Ep`Hl*C6uJ2cgI#GC!!H9Qh_ee2;Hc+{bYu+Sf@}3 zfxpA^5RdW17bc$?hjOtx(2pp71QtL!rSaK|G3+A}`8UWe%~Pl5SGPpfZgzT(pfx|UnmEzRhT`rDRIgil(uHHzf`N|W5!lBXj9 z31F@)VX3TXX8GpnRjV^Uu)Ur!FSRbIzS??a^^kRg{nqOHtY5d^Tm2pH_JkE-hCP=k zUk*%&7)0gNuk>vkP&sKRQ|ZO1`Mk>^KSeKi>6Eu|K(F>V>|XfFV5HB^W$6arv{}qH z1K4V+yUqT9U9|T%HQKEXU%+cTT&Dy=xjM2vb(Gz%BRH#0DV1||bxqZzM{u|Wi){}w z__g3S)0BwCb9ArNL)^NhB@ibw7LPY2CbvoxH4~fkj-XsADc+LA3|vg}Jlo zeyu~q9&nsQPiQaL8BOtfWg&hvHi|9>#?$Vw>RiDqDzC_h3sF)L!@1Q8POPTyH?5MD zXA+gwy0jcc&oR+VSIA6C$^2I}6KD<0MIUpqKI&x>bY|Cb(a__xa49w+A!dG0SB8Ft z61*iV#Tpuxr&&5Jw_{sH=}}bfj8RSxHo@*jCxpp>R_7~`R#|CoftJC9iMeg4@Ow$t zP<@vu%TuRtd>S4D98fL|sB(EQ#T&BW5N8AdtPY}%ry)Chh@1nt7}Ojdk0^UU6d!7l zwo(XY+p+I)W)PNuN(#b)!P%L2N%t2UBJvOPhuWXxA5>7(&m(0Gd@RpYaNZ9cklGay z1mFxo`wnn8)#Iu)LY&IOU7J)gMLOs_l*l(Cwadw*dGLZ#YNim36Hg-`a~^gW#Gid@ z>W$Z)*W;EKb>_}qzvPzN+9yxDebT0BliP2*Wy$)U+@wWu*R1nb-!k=E(>6`IeVQ0# zhD)xVcg5m6YU?hz>#G-@y2QFY)3S81xn{d<*{KV^de;SYwRiMiIq&LA3V;6&Sbqbp zNCcv)7e33mnm#o8 zTjca$1i6GWwgz>$hJ6`a@1m?*xk~Bb?qg2o{2fm2A$=rn~%Li zy5+o@2_+Y|WM<i!W)aamCZQrE;@NZbdCA69A`apQ1g4UAbR~V~v#IDm&;> z=N-*)QDbszn65M!_Lm8XE+LT+q_POOG+Py4X-^Dd`Y|aI_6K|Xph`<&679f#>~8fz z!ObT*^#~QWDix+y8|0*H9Bu1Tp;6gk&)D1SGws*d@3()~uD1uv6Oai4z5~#m%DQ-t zQ4@gLgY1nXi(yBRS0o-UL$^c+fH}QGmSaz0)O>;;U)t`Lax47DQGy&!$8AW+_bDM3 zB?xU6en%qI3QDv*CxlXqA<{=608oHo3J{*;&JT8L=^jIXsvloWxV4OTd8|q45-#CO`qcGPkT9djG8Mu31TTg8F%E8hU@j zhEO4RWDWPGYV%FC&>vn5VPZR1;lJ|>n6)854V;PAAJ zl>QQjXA$PYgP02)>~EyWaU3;H*_>XJ(@fFasyU#4L9ahUIHO}RTh@HDxUcCaO@>fo zxG9|1IB2{Ajd=g6qV(OtCiQ zy-iJd9h&)(GW#;Pe@^U&AiX*?R*fewHfidGi7mhf8+b!NrxR?U$`Vu%S*?*siFx8a zWaR2vK(4IR>)XEW{6^E)^BTdSchav`*;JX=&vwjl;#2ZYhfXwjA&RjO*NUcCr0pyd z0aVD%^qBfgD@^N5T2r{Q-s7pmLYS|(%M_GouZX{d?#sG(NO@UxA4k1%kbIC$JIPt1 zNOP*}9xf6;eC<8^WiKXimwcYWQI3LKE1WRMVc(0I-NgqM6V;|e0_`;IUH_J<1B3|+y^Xg8+D+^WaWBDid za6?0pf)lY9`3js3S_~IB!G}A)MYv)tg!nHX_o~9pp!bZ7M+0@cQnzf3L6m5rys&1t zd{grg{NF8be+!>I@wFGKau?|Q`P}m9@QJtfcXvW##ZGlvEd%W1!tFbEp0jlRq;;(G z9CmqCEBVE>=%9#rSkS(RYo2C%6{|5FOyA-e@_m-lQCSFuXUJmndvNoPqZBTgo0h!K zc&{1VXmIQTF?*f&w&c%*pC#W&zMs@<$rCeUgNf5FqlU~D?Sf*+Y`{q1Dx130EyECl z2fS6u#1}xSu^c6J(MV}m1Zh+$>JJB(hl9be_S1 zeWETcc+*~VknsvhjXRAbDZW-Z8jI0v0R9a6zTT7erhGbaqJpj#HZREhi9a`C( z`HjU4anki#D6Wt+DLwe7eP(3S_;)+Ymv2TYx=h|7AzB>J;@LN(SJmuXgzq)bTBous z6@S*0u~`6;3x6JJZ*X2R^yWt&{Cen;wL^uEH*A>k!d7u%;Zp1_nKt$@MAixe?Eb+E zjKvM-uEIUEI^o1=AH__mV{a+mbG_$AH+VNhwLaPcB)S>qb=4GS3`zf?)erUG!VTt+ zdgP=d4hz$3HFU(0OFEK9U&HjNQ4n+T*SvTj(ToDL*`uo96SN6;MAuV0#y!bGSqm(7>tqR1TS;Kgc+Bcz<3w)M`Nc)aTbiP(i;PGeu+)_U%Z7ppy5B9UBmeq zGH2GPX$UUc&w~V1smYvOqlOHl)y67OZ5%|(_Tcb2o+11Yh$$Pm4>OBwK9}#?vnrKDhAm+svrv!T1#B}JdP>TkM zt;NYfl)|k_TQru9iLurqsSu3A9+h$E2|!|vcUc&(yj9o~COL?ve~m81Y(cL-?6Mv^5LuK-q2Y@j z3>sgIL>S?8x{z{5oDWPKE~QR!GrI!`D7-ZbWRIY7Bzbi^c;mSFyKLKtTY)GaTe#J# z>PW*a`oC88H1`NQ7Mf!OAjE-F3uq{+Uy4C zw`#N64(%+hR=XTM_y8u0(UedrRH`NF+REhusF_kqU`e^GtPB59^d-l{=&>j}hs5{c zSA!Zxq)dT9=dYK3IG!ty$=(6X4l--eLdPJE3iCyW)~TEVSg-+xCL+ zY5NMc+I^xyF?Y!G zdKZORm%*W?TU8-^#HCgh!h?cwc*p%y7LN1iQSblta75A+ZUCe?QM@~zCJJAzhE3qT zX8b;XL;ZM~=(bni80=bdeSi1Og*mIf)ie~Tp4gl*>8tV;gxCrmV367}tou-m#%gJ{OFz~XRNEx^h{bZql42>bouKe;{q7J|r>%983F zksdxSRazzERi&1$oFtYRQc0%F1MZGKEEx5hLv+`q@*W4vN)zEL1$3r)N7b zOK4?=>n!A2CxtLR*^F1W;giGDr_nH8rY=cT*pXraK`B(8O12XJQM#^Dn%e)>+H|(t zfvBMmu-XO~>lE&>8x5n%;wfxjltF^qLjg@2Ys8p{XnP3E3mX`ogNPE&&?HsyMljPn zYSAkdT!}B{q8krC{*c^M**~p&N#Va2PwQHeYKq?fe)9C*cJ&Qj50`nQyR5T_gJG(C|3>oge?uz>j zqVv>8hWpm6-a7UCV`$h#d9LGh?*_$GWtT!S&VCG}Zt|Y-s*PT<0g>6y8dZD^V9T)M zj702ZGe4mc7_8WT!!s>zgn9ArUKmaI!gl}vFipvt7m(jt3U->R^b7!oGBj{y zVAU0j+)dmY{@QL6HBd1Or|XlHuCK-s`6_UGKT>Gm4B8g$bnTwNp77zo;jlqVfHz?) ziWju@2x(PSCQ>~K6r)I$nL1jY6Qec9;LARPl9f8ttVGM>J>`g#P+Aw-265(Nkq;x< zmm(}e@`aI}P$Uw9(wuv_K0?;VMmDW$5T;NpYtS8nK6viF%-m4f!~cg{5M#~W#heIKKeW^%48B) z`7sy4+{3I>bm)Oi&Nm_;Dn2#BT%@xaG>KcjRyd5Rm`D1%CogQ6w(7pSyOuoI-+d=Y z{Dt3=DL8V)6jptY*iV+YDa-C@sGR=*H_HUh73rr%_9)Q3O{TH~h$Aa?-VT5=WI@EroKCziWi7N}H4@=K6fdDHS9Rl{VI*{UC9wt_Hg zE;3umyxRmT`}P<{>wIFgvTt)9D@_bjk?g1vSE-*sdqE|w((R}>hUe8Cocm_O&hj{l z73R&jY4L@_aj$*hfTkQpH+<@i@*e+J4AwU{g2CE7`}40BIgjjP?c#yKMY@7rJP7h} z!H%0@8*!==w(|7Lr|mio#y`zA?-xSYmhCX)jv#KLbOQ;y6N(8B5_I$>6CgZ10ZL*L zjfb>6CP^`=WQ5|HLY3cvL~kA7tZciz4*`Y`^g{pULY?FRJsOGvJt{@a27_w%4Q^mNC* zoV@%c+eDG^deP3ehPuZQUfIWnzJbAo20r)z=ErXl7=BRzlUREYqYu8T@C(J0a-}@) zJ2fVczEu31=d)7LhvXChh(K#N5PJ33pk zk`fex_{=sTN@5di$6km`8V!0b*SZTj#3EQCP<3{?SD-U;xSVrJLS+Y7es}{Ow#PFm zw>2CHz1yqOR{7}g9eKp%>Qyc4$nHxV5iVF*41y460u&%us;F6`A$|z>jQ=Pg9uhwr z8fsni$L|(a7rup@#*zNRa~^CJ5AwihaA5Nft}J{!IB-@VjiHUH!wGYecBe+VAr>kwsH?Te zLTzX!m@(eb$QqZoG&VN3AUjY~yS%2hwnnP2sLm{}&Sa{kiZp_Hn9dFm@0Z7uaQ>t; zk&L%0PC?^@PH=0HX)N%JMpdv?l?)PMGA_I!T#-&AC_}^=hPxy=>Khu+x71t;FPr+8 z_3g4)!toZefT8Ldl7H^2dA#Oe&GDL#YIHT>HUo5{!?a#}yb8;NaMt0C7VFoofWo5Q z6*vmD!h;%t9udgWW~y>q`Qx$VR$5K?t6EVE8~Ilwqd9Ic#}94sXe{0|_Hl6njDJs& z;EMU+Q7NsXUiS#ub(qME92a)iB5pLCmd5^j6Y~rWRad?F*bkpB93L7Ag@)Mj?7qo2 z$Hc5JJ>i-sH(q+_#wV{)5szU!J1 zuA+A@h`LOp!5!mt^tKma+Jz^6ayP1K?`mdnc28warJRVLGmzCUJQWRl_*N#JKZ}h(Q@c!3d z-~Yrf*$uNVzkK%DS6ul;wDvncFZ}(Tp$TOTi zzS|XZLcE`FCa0Ryb-Elzlgm&kf$4lmNw+l$dMA__^+HLRARf3BGWMs6`gVGMM@K zdybR7Ruw33bMcbbN+OX_>n!U+>vAw$q0k9=b8vs)v7$_sB(x~gL)V`-z~Rj_09at$ zdNU{6NuELN-9jq+;Dj_c(`mhG?xnFzZ%_rbn)1YUtx%V%iY;nn6sr0gWbtoUp$mVz z`^upyXU~{&^VMv<*i>Aog&!ZD^AK~x3if>tt-K|<&;$LLq^8B{^<9Th~f9bT0s1eg6>;M2|AQ=O!1L{jX?&?XqyBur{ zLxn^LNlK`jXjHS1@1Mlv zLb*;d^HTa4`oQ#L(&>zptb@iGQvNSxkAcBVS5}M5j3-aL4^F#j;jL@bDws~)R2UPAM(h0%tku7xGKB)$%nelvD zb(!KNs`1HCw87JGaFYN}p*0zL0r0#E_Ch3bbI|u01?mCc(-c8_q^-Zd@y6d@bI0~y zPJ4ds?>27y&4NoFU%wW`|J04DY-s2s?b8b{-8y6Mf1FxB`_Y@=i_R6ldjF=vT1uyY zgMQV(AZ7#S+H!sPUd#sQ(gR(h4xTZ^7RZf?aThh^RW0tzV8em(qk8RA#i4VVz2cJK z`t-f&@1(U@R>u_|xPho|P2>(mj`G$}p?I8Q?mNMA2KK&AnbO)w{bHZ695M4W5+I%wV;`#W+agmuK7bEUnqes;^7EzoloT?kK9@$HAi7qBE!_camIJJX#Nesp z62Td}TN@on)Y1vm|IHcoZw4udd@Davv=0>R?@S_b6{wOKWDCyYqK+jUTyvdlFWe;6 z+a>q`k^vAxfdB$tDN1qs<@!7yF0Yor+{ST2+{qODMD`WdbK{MLhih5wFD^)zp<4a@ zH^2M4`&j%B-@C3ny=1Vu)>`t1SHzmd7w?%}uB6XjyYS6>USnlS*@l}pRON4=z4dFj z*6lo_LY1DUg>|r}GjuNCfMu##%i67jP-Q4+~970u#_5!kq_!<|pDC;`^c=#pe#oOBOL}>9Cx(Xe?wJQIcLM zQ1z8q-6d343sPkT&(4=6Tj3m+$EAu|iAGU$AU(kBwMfQPR_N;pF@z2QYJKd`BVfOW za*E`!u-aMyHP;*y<|$G$f=efqy`8xn?XV6lrRY~^k3%gY-0VOv=lR%5WY}&uC`Ls4 zQ)JBwd7aw45ji4%ZK+Z!u7kyvpuvv!QfH4){s4sBa-%iu$P9qQH_XOBArXx*HSU00 z40M@9vU!gVb^OOH?Xe&dmM?RXO4~}oNu4y&Dhg|NcdK~-$@*e zC-wluTY7Hi4IOjX*7iAq*jkA zq!Wr6mRg@<#&Q04F0ft*#TYP8jp$b=hp4R9%&-q#sgA zKco^rq>_F}CH;`f<*CZblvIVb_r)JV_xK_F5NGkP+<`OY<>j(WcxSj|c^Dc|lGJRI z*wF-YB%-LhNO-HOs-jUzj}{_2y&etr%tA{`eG;%m9rW5^_*0MpYNTvMBiRfMeu}vf zycT35P`siEw$)pk%`3PD~hp-$tKz>=#ZR%V(>gR zaw>Xla2dv-QRG96ePSHeIrfDwo=C@|J|HGK=4M08r8@jg=yW))v*B>eh5CEB*oGWI z!l(wgcRITl(fJ>*YppH(ZJY==Gt{+Qw{7T>GY`*wP!=1|r}HCH0l)7)RRdhjuijz2jOm^J*KC_{9NwsXgo03I||F`dO{Nm@QF z(Xx^j?Ya`)VFLsr@IEN5p}G?O@vem1cF1`YVhS{SptHgO&{htB+MG_5gLr~3`HuO- zs4ojbhk`SFgmUq~03~l_648kd$wy@^*%^_~I-JC3T@okCJ(4U#Fr~cWrQ|UXI_MLU z^a;tHie$1vD$k;5Vyof>kG%n8cDzvCT3KD4sg$yiT;UE(X?bLv15+~AfvL?35P&W# zD>rKXPitQS7)6n`{k}C1en}}AY>8}0tql72}cl3CYebxFqsK6lW-^y zT~`6Gc%kd6;El(JAu57`vg*3ttFGd)u7k&_i#MyTC;6YM?wJ5C`}uwUm&w!hc6HVJ zR8@CXcUM)vWf+z`OwC6>@!2H{&n}}fQ{~F)T8HY1PdT!+j7%T-Z=Z1-Wt)%SoAQ&N za2i(0C!EMb4F^wrz>)VmC$6>|)Dw;icS!9C$BGrrADa`N^Tiy)oXoww-##GM9GM-x zO)Bf+YBXNWnr&6_qO)fEY>VqpMe>5(yVDBt>8E-;#b+Hq?l~S%~C<{yWa5*lN5Rfzh*q# z41>(DKd=f*@EmVE9NZ6KPNQxz91~O$9sRgXt<7rC?S^9+^OVlyu4H_2Cas4@o`F^8 z1KKt@gAva|cq`R<1Z8WM^b6DBzjk`jNz+u0AFtB}X3&29U)c>;BXP3#z0YpAK1zqv zsz3iegg(W?_ut-MT6j^muJP)kY+Wbf#S@=7#}~)M$H&GbCq|476zj$YhT+@44fZjo z7sGz#X)qDe-@pcGW8k#WG)$l?!DMPPcba#Y4f0)8TDpcSEnS<3kFdnZ582}eJFpnj zpbRW1AukYV=X#K|bB!;hqjs*fvR5}4?Q1GE7=m{YtV(?`6`iZc&@qW=XJ-~x;E|)V8+TH&TzVX2n*tdNGi)Gw+e1R=(n8e2BMY<}*PRP=`Cq)KBbjOcNR19H^+MBEf4VUK;5OxvsjhEW&_DCQd} z7hw`m#Ma!5T#=hwDSHL(hXP!eOY8|R4dKH>xDCrFiy>HA1^pO!;75;5`p*@MmUVXy zuRWGNT>Fqm%`lm6lW+Ob(6S7)T7GGMR=VD|gNJ=N^#spz+S?(Fa{heQXWya^K+em@ zOy0f)d9fHgnlZVwjxx@hW>D|&@{46WaZQU_T0VV{wCkV`GaKaSvRttP^T!6^o(KW& z2o~8Xpx-JDQxl4(4Jch?HXkv$N&s^O7XP=%m_-GbYsj{2GUqWu#@tE`GPHc1iiW zck;TiV_z6O`rD$BD^`psmaSwhu0Ofj`gpn--)ms99?UoNAD%29q%j|_--zVVspgbN z*oBFHL$IW3((t4Ka^XPxfXV?T*nb#{@2JpOni6M=D~xl*)y0`GO&<%Xxq4X6xvz)G zERu_i9>&~}<_T(v(LEzlFbT+!hC2^RTHSx(D1-HpZ4wr4m&fpnxT+#aEA)D4O+#xJ zEji4~Q?Kc2=A+s0_RP%mEeE%FkKO0pd~nOm-0?Fr(zh7mw#cbf{Sx!WG&i3Wi&w3F zv1c_mV`Y=0%1auJLV4gF3(Ev%Ii9QQf5tb2bwuUgt&9Cd(!F^G@1UFLU4B=LqN9+j z_-5MAf2O-=C*Y%t=y!Ahy+PMu?{$8GukQVjCQ=Q(LJwe7j1icBG75I{T~vg5**g(_ z1eNr@)%zvFtVa*dDB6TsnnQYD?ma@%I_I@~jP9nN>CWE!_%^ET{e%KE3vJFdz;N_F zbWphg_ zkp&-0^~VQnuhCT6$@_cXq%E`tu}i6pTBu2-X=3l8-b0A{1l>X}@iCr&{Qq91{RX-M z)0ftxbl#vxQIZqrC7OU-Bun78Q~ymwj%1$XuM?}~B=BggwEcI!g@4DXybGV4l^{=> zP%_ujZozmPKU3*nj}oh*=ee3Q+1`7zyoS_yDTZDd+K#f8nALlqcoLko63E>wXh=qh zNtDoe5ujwVC6JaS2<26fda7_nB!(b{1X7_e3+LNGi*Tj9Oda$XE$_XLe$NACXDM%p zKuWkuCeoR`Z;E8*-me5qM9Qs(-mkPDZxEw+18>mwP9;Y||I!uB;D;{BPW^T4qH|&8 z3}+gtDWbh7MOd()?Kr2)vA)Xdy|0USo`%}+G>%W^$+U}eRT)J}E>cR;EjkWUaP3aP z?8BYVcszW#o=4#7$dqNO%5o?zROJ~dQ>{GDjh3ZeroBh>>-`#ao?cT|X|0P8PdO(@44%t?(k8!2mx^3+N-fapd8exdeL~@Tub{n$1>R5BH!oSb(dkjOy6{X%SG5 zD_QpV+HtkXYuSgMqIa+wR~1SoO{D;B1Nf4$z~;B=EL34E?JcBeBCsCuWXQ=Viv-lM zBbdE%7&Qgu2Mac@;!5?(wgshGjJZB#`08)~-o0Wl3v~+8lZIjXh?X63 zhC$D8%+MHd17V#<-~ys#tX!6i@F{IX)_kJWa-z|DiN-xily(?);lMWu`%`g0%fQ_C zEbQkY9n%&P|Dq93r}CGSQZeL>D8@Whj@ffkaoFPjnT^;o5^l*FQ;g(|n@s zKM~zbz+P=)-4O%K0?q~Y0!N7M z910-4cS6sdcLQ$_?TiEL0C;xx0Edb0g08!&0Ho_K@ZE)U-aP?$p6H%p+;J}<+J)oY z;P2i^)B~LlAkBML677Zj$PuFb;N6e1dlY^LKO}m5E721^q9>8hKi)$0)T2btK2G%9 zcSO$vFHR-;^Rq-R4<&jfndmQ_M6b>vIt2NRcZlBFO!Qaqz73wY5$|u=&fjNqi9Rm@ZUbxN zaQqnZajY9SjC=M#pcuFiPa>6g1RDxGNh}5eJ%ok>z%k=2ViQ*GGvgZy^XJ5|NiZ9- z19%BIMjT%P1c(#7#QoYZ2lx^IdIli=ppnFb5$3d&=zMtx3%uEKjR1DGbRzwEG8~Q-t1Qr7wsXQT~1u`JaOsA z#B-4MxmMsd;(4DES0L;{gj@I`u_FOMSO?1A0sWO{0Jjh?LK##ctySL=SMMaQ83{n| zVsI};x)xsmK;Pmg0mNHk1dxs;l|To8^e+MblCSZOinvSX0wDmpmc9ZUBVLvRoDFOR z4gyDrYX<`eTe}vx7r;4Njs;54Z_9OuS+&uo8F*cn^U7vxWnC z0OFnv{mw38R2Oz3JudjWkXDx$*bLl8?8Y%S^tvH8L3cCGdviB&3-q)+OYF%9P-ZJp zHY*Wt<>SPwvWQ!u&-W^E8}zijMZ6k$2ts!VdO`>vLcZFE01JWZflrA$CILuq$1dP= z;x*V`(*kS*P(EvsmbJ40@T~0t4im3S0^qj}e&>MWoDv{JykQUVCdAu>yl?t}xD&cM zeE`a)^Bv;zJ|zClSfGaZf==LG0R9(#Oned2b&4~7m%#th%Ya7#_+JM9%b@?V3jmZ$7t(gcxd6DXfW9lC?@H*q@)+?| zbAU?#=)CGn;;T`fS0nD#*8zu!uR+*r3IK3ivzK^V41l=XngE=SZP0NY{C~HL_y(l^ zChXs0CBE$e;@c+y@8CAQkoeAl_^1c`_aIHXkiYwGAntycxCh}Lc#-%)0#K$8BJQ3H zzz$Rb^*|fYN&FD5rH78nk8z3jJqf&uRdx~n5rp5r6}TR_8-U(N;s4k{0O1dg1*!n( zI0(Lj(DR4E#E+K~KXE1TlRJt3_$~2MKM?qycER#U#X;l1F0dg+LF9j9W-#^YeqNIgHX@`8%7MEgENGr*N94Fx^7EcSN zkNW=}dxD5&iO-|&2~z%SKAZS8-C01^zMoCtWs@ z6@3EIKL-8@{Dm$Xv6||SN{&Ttj)@dqW*UOdGZ{Ws>M>;NvVoQxX6Q0>8m`f06OA=I zsLN)2J^!XITj&l$uae`Sr=Rh5T}Hl)_bWLb{sWC#_;{4yB;zN_KSA=EPSa&@nY8ru zgMX4~rtnA&w2dQ2B7c@X@~rro-X@-aQ6vsgV9Lsyr>Lby@mvQnE^?MU``m zN~cAYbAlFLl`~`+{v#P4_Nr0NF^Rg2a*jEzW?h@R$=T?(-es+6aa$Moef|)H6D!A*4Mx72O1Gbkzm04dEqqHu7lGjX8k0A1~rhMcfkQ@BIJNWJ4OXlv&Z7`k}o&$`*v~ zc}SPWhlwxvWuTGPq%4(+BE;|_ToqE-jNF7s#;QWDf)h#yn%b z(Qce+tT0YL73aSVTY>bt(YCDm4<&ef7_AjNRoQ7rD`eSmCh~u(aD5>nx%r>8{E;~S zlWY0-IKQ%N|5tS;a9Cyj;5(4)K@qcbb$Ec8p)Q9Uk$1~g8xA#75&2oK&DR-sz8 z;?nTrqFarNPc~@nsAy|wEvn0UItQZ`8)zfm6FTWUI-h=n@wng8g&3LJjPa+fbTJmd zycBN>ms1yAL08gMbT!7)wy_Z-F~6hh*+e(cjdT;6X$QJkZ$S_LZFD;Y0K~MhxGix9G3*Hr`R*p)eh$cj-NPpFW_!W6a_s z`WTJd5&DEarO)Vd`T}n+U(r!?L4Hl&py~S;eMjHZ5A-Abgweud)Qdq*3&(IQ$8kJH z#1gR(8m7}=JZ>Nl;=z0x58=}ppM~>qSi%^IWx|s&a%SaJmSbmQc^r@DG@if{c@n0+ zPv$8+m2I%+k;z${%{iRQdH6yxpQm#HEP$T@(;2h4knLQ=#XOr!xRmE`8PDZ;T+S6d zpBL~#c3{o9MO=mPwi;f{OL!?S<66wgK9g5qLgd*n@K(=GZs10Cv74K?nOoSyD|r=r zxs`qF$B^`D4q$?9h}*e?*YH|ihjoR{;d3$awGrmwI{7?4AK#~4fTgo9#6owQc?)ml zi}@11lrMwvxGt<8a3x>GSMxQzjj!eFFhY1e7CFCxZ{(YJJMZ9|F=}`#Mm2BeJNQoC z$#?PH7$Lfs{|n=Y_i;Dx<{rMEAK(Xh4?hIM3j6qBegxyf2l!Ebj1Tf3_;G%MpX5LC zQ~W1>nxElk`8j?bqn9u8pRw@X%lryVwYIU7ikK>FB12?~ERij8L@r+br-^(qT@;8J z;tVlU%o2sdE{a64m@P`Mr0g6~CgzHHqFhvn`C@@sC>)|vED}|sTGWWeVu@HPmWf)i zT%0LZh_l4mqE6Hcr)Ut3!X@0INi>TV;SnpvD&ZBa!YBNqO{^9H5fmZOE;_^-u~w`T z>%}?ZT(LoH6q`h+I8U4}ej_drzZDmXi^OKJMQjxpi%Z0%;xci$=n_}Z?@d#E?Otz^ z&+n6OA0A(Gz#VE2_zbP>nT9q`roqwDYH_tX@s{I@^~={D`BGzU^|)OAkh!QK;O=mn zoyxHk`J4Sd_bQ81bIm1eih3&c^nT+w9ex`I@I! zImY>5GQ+n3_hn%j5Mr zV?w%MuF-;plw(>PKna=flIUxWT^!LL+a8h3%QbE5m1A5kQ@kDjZOCb; zZ1I?!-nJH}$>sKjoECRm(Bt*{OhHd`tJ4s2wj0`7Jc;c-mtNRV9_wD)=ykSA$ro&I za|b;BfVmAXts!TuGZ65v@w%Hr7A3W}#VI!+-)yymF8>;zCN=m&Et=Hc=JF-z5nR58 zpgYbV2(`#_;`AnXe0aYMx*O$tbG&k!3)D{&RLNV2IGBf0#6qE!ZBPwL;hcdDv0+u{ifivzVGsB``#vVqbJblb;o*q9SvwV z+#xCHe!*4`u0!MWp=c=D9fI z)3VKTGxIThQaQPq%E``-^S8NuTKX+TTH|JMYHs{&nVa_3Ca-&Kd}E(%oGmMJBQ};& zJqGe5n?-Y})(X0nV=R^7+}OmI^~H{F?vssWGDI^rF=dhFrdb!_=k|q*Z|Reba~qri zV+%Isc_EM2A}ovuXcbh0X(;tI8{EETi$hP4Ur&%jOORhVF;$Ux0bPi%?n_2| zuunGD$P9;Mh8JrYMlT-nZCR}AZ`buN*7Ub)8D6YsxLwci(msvxYmSp^kCWH+$tJYJ z&B3@L*}khL9BpYtv=o&pFN@Qy+<1q&p=q+ePmXn>RdjpZ9;bOJ+C|(R*J#dC71X>& zIk8J!=xB5YJ;B&D5y@Pu1ze|`#MSN4Bk!+hie0hjAC#5Dy;fb}88H2y8S4&)aNa{W ziu+>e}%jc#8kN!@9V^Du?b>l#dqq)P3@ z70DZx5)(?b`<2>>DGh19vGe@8l;CKUeWE@s@Z#eF$2nTv&06pQ9t1yu!K4_B#ki%J zO4NN(=P@pqH%;&uC55TN+1BPX&v&*qxSV1^yI9yRmU(d1DNa%8F;unqP1WjFTH|cD z==_G+EgnN<(32o_M0oq_2P6A&>aMJ%TfZr5nM4AV5Gzxyq`~c4z9LbTr?EjMzFFSt zjq7Eia zC(4l%<SrbSaVEt-~T(X>p9re#`G^R%euX;ID7 zqMD~gHRne)=STCKALYo8a^y!j@}nI2QI7m5M}CweKguyZ$}v64F+IvLJ<2gX$}v64 zF+IvLJ<2hyPfLUY<*T2q%#6s<%!~*}W=4b~Gb6&0nGxa0%!qJgW<)qLGa~uO%!qPi zMmhS@oE!1Wn6AaZrK`uy%goNr+Shx~VC@++Oczqe>B7{ktOJHru^4?#DF~8!e`#4( zeNnt&B((v8(hMW$bwJ?Yh#o9oDHVkAV1{h8kUUXii7)}%4ptCE*Fc|Jc zxPx>zr6;*KWgi!bWj(GGDjH!(pd`QwWB_)c5~v5-fKH$b*a36{2Z5Ii3HM{2C;MLU zOwZWt?GKBm=?n3+eX+F8y501JNo+TMVHDd9Ul_!8@r4kNnID4{SaTs3PVk#AH=9x{ zg_b&t-*UOdR457!4&g8ut;yEW)->y6YndqtORXf0PD)FfoK$A6EAog{=m)G5Z=>Vy zZQ+l>)JWcqB7NjtFZR?IPX-xN#b>+;B{z{+YG=CR02lvy0~72*(naeMByQN z12Bj~VwDl87q9i?^iL`36|V_QoWlO|_&tZ;v-mxO-_t12{tC~kTs=bv#WU0k7^o2b z^*|fY1snuSD4l1Kw;kenY;D-ufqFoOf0ix>9s>+G_B8M;e5I~U;#^uUc7tP+SPQHJ z)&u9DZ*`Lh0qsBsutxc`L0Sz2fS~g6LTUwkfM5BvK=J@9fmQJFgTt*j{NV6|!w(L> z;_!pR4-P*#{E7oTA&^!B7`9Rzeq7FeaQMODR~&xP0to{N;P5Msa&Rz}Lw`B+mqUNK z(q9h!<wD*EB)orUk?4{&|j|fmqS0^QGk_z%tL|FUjY3D&|d)k z1xkMb^cO&X0rVFr{RPlp0R08fU!e3CKz{-B7eIf3(q91m1;SI*i|tB4GT0P@4GcCg z*uY>@3^p*>z+eM|O)=QOU;~2<3^v7J1A`3=HZa%}gAEKex2Wu+krf{xI~1p+BtjhoL_V{bA@2EB%`=(|*0U2iT>q zt45rC7vKh()OAq@sUC0w4a(MfD@2Bb>OK3PaSyb6i*#^>cCS6o;t--2cA0c)Pbk2s8=yL zz~lf^xngpF$pIz@m>i190VW5S9AI)NCI^@tU~+)Tp_m+Ca)8MJCWm5jfXM+S2bdg+ zrw}{^;1H<$jerYq12Q*-;3xz~Avg*ZMDz6oR7=9EIR0 zR2(*NOi~;+aM-|M1BXp<*uY@}hYcJy#bE=74IDOb*c68i95!&+z+qDyHgMR$VFQOv zafHF~mf{G5BMgo(IKqk}43023!r%xijxadF;0S{wtT@8p2!kUGjE-h19fCO>WT|>W+`e$8EVLE)RZ$&V=_=Lrl5XIMm`C(p|u8DtL?**w|(bI*#ZQB)j%dN71+ze?YXJ0lplc|KpAibkO8Ct zDQC8T^))~38bc{xKk&kxHRvjnloEEds1em z-jgy#^O>yqEFKg)D7FhjEB0(l*Pkq1^_H#-OINz3Ym%jFyrpZbr7OkKHOewLW?)QG zOuv|f7}&;*F~=COt~kZ0)on1<9-p+DlcWP{>ew2UoP-fmMzxk(43%It@^Y$wSj@x| z!pz-bTK6DBg{Y`5=8Eovja1QK?f$lU%wCRLw7lCirkJ}2R!~Jvae8oQMfb4kitg$~ z%a`pHGrK!WDy;bH9#*Ax50=z+k5}See9m6mou$im$OXFG3As#{5x%y2T6)D^OK(+o zetJc>vGUAiyO}Sm#a_4A3@tUw_HwWE`t6ABfwPzGBj%LfUOGa$y}!M*ww8u;6b>yM zIBUT4IVJyQQ?EShOYrq;qlGC`VaiSnv*W}t zJ5-n*dKiOBzfuv=Gbo=@RhZO4`6}(lhZ(JL{l_qA|29ltv7aQli%;_S_q)6g-~fo@BLZg*kxFUh)_rLscF z{#)L-yd{Qa7cr0WR{E%lTf|F7zFdMG`J|MYgK(gI>H7{U}g-6IrC zCls+gp+2pCa($VhKDjevZ9D+p#SP@Wvh$#Qih#FrI`|(Ca zrt3}F*d3+01}8O%fv{+3F~p1s;-bEJDMWIHDOt(-qc9CPRwKW{7R`2i(iVOl GTl#+x7KcRu literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/assets/models/star.binobj b/TMessagesProj/src/main/assets/models/star.binobj new file mode 100644 index 0000000000000000000000000000000000000000..4b08238200bdcb2af04665a5f16524d82154075e GIT binary patch literal 361248 zcmW(+d0dUp7jC0Pc1l9F3TaWcRQElT(xNO$w948>2oa&urjqtOt)jk?c2sxfR461w zQdzSk6lqbB-~IglozJ~z&dht>InVn%&j<;rMprf21d>+10Sj&Hqi*-q$kW7d=6m)! zjlP;f?n^&o2RbCUeBHzRzvl=%cdZ6F?JEAAcQfJHa}CbrZ=POG?)28f&VS%s-8uj9ao(xO!%QYnT6Z8N_wJ_p!Nf{UHK#L zV|Nm{VdT#=gUq=v!z!fUWew9z9SiD16UgmXZESs?Jk9_4lkg`UVVj%pvB}s*O2!^$ zdegVkh~*c_^*j@%A*=*W8AYUc_cW%LG!CLSD3fb$ge_~|2Ugrlaa>aaPsz|B)K4(Nsiv)_nvxAvb@9CjKBBU z_z`Q8{XLS+{=(Sd^)JX(@M4QxfqBbVlcc&@Hc>=~CA>XDvX1+)`PS>1@9#sT*x>{N zy-GN=`V2|ZUCqWlZ-Ko(YsiIR1^P{KE@a-*CgC@J(ZTE6xzDy)B-%lY4z^9W9JTJIG^@zEkW zNqH{y=)Ff)XsOU;-XEEQkPy+3Frn%v6zNV4Ycg|WK7VA;g!vivk>!DI)WoBKg(gdq zIq7k9zS$90KeL#qRyNQb{{^zUPEtf>;3d_X^_3*Lj3c6ZwVAx3I5}V7NhXZGVPm!@ zlkl=Z_%!(%6Zzag!p7y2S%V#HqJI%NIQ)T3$a_eiAGk^aI^V!(&u`kh>jZK4ih!Th zU9{S>o}7L;oy^PBro(<^#NBTmnQbdi-xm84%g9I~B&9@ij5WxXT{FqlH?g$j!ws@z z{S+d1Q-+2Ogc05+43z_(rPiL0(Lbae4UlyeDA5BgK<(qnB(la0ahp1#ou(Tr6 z?+VjN_ntz;*GBlPWXvyg+6Q`Twc)$iG=5@$E0++iMnry{;^(QnrMpajlChuf@^8lO zXQD+6I_Aye2i}sWGB+neyQVmQ$0|=og6+xVvE%uDUp_HI$7e9qR?ELR^CXK~G)zQ} zi1K@UrZTFk3xnsasp!TD?AQ4nWZKDGYIc7%>yZh9;YE>jVMabq`S1n?_c>7WH&=1; z9x*br{3$){8G@Q25k&ggSQ_=w3(ZbS!O&h8L5ZxzYT&KS@@3;}}*?EG<*w3Xc zQ&n)U-X|hL>SC8mTX^hKI9cG!qkk9nV!)CgWX{9=OnPn?#)bhAT~o#6hng^> zUW`bXIj|LDRPox|R`|EQgc-|@!8A2Bcx4{Ol>9ei%Fz)bJ2Z(cOLrv?HeG`}xgYG9 z_cQY3sXcTU&1OMLmq_#7+mJo-m<8AWBCix*LW@Z|i+MARbmXZ)%F}f$(KnLZuDcF3 z9}<~GbvCKp)B~+AIOg{E45_MAgOFoun1%R8a=m0d+`6!Vt+Jg>Qnw{TwSxzfd0|2_ zZ#YAA;!ZZRFN|FNJ{x|m=QH)`3&;�`v+|wiY*&XgeO{jFV)-TKU9(|4yiB*h*U` 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 !W!aPTtIky}aa$u~E)t_X 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 LGnWmP0*m|~#%Lut literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/assets/night.attheme b/TMessagesProj/src/main/assets/night.attheme index a0a26e615..cdaeaf07d 100644 --- a/TMessagesProj/src/main/assets/night.attheme +++ b/TMessagesProj/src/main/assets/night.attheme @@ -33,7 +33,7 @@ chat_inAudioSelectedProgress=-1 chats_nameMessage=-1315861 chat_messagePanelShadow=2030043136 chat_inMediaIcon=-1 -actionBarDefaultArchived=-14145495 +actionBarDefaultArchived=-13882323 avatar_subtitleInProfileViolet=-7628894 chat_messagePanelCancelInlineBot=1694498815 dialogSearchBackground=-13816531 @@ -107,6 +107,7 @@ dialogInputField=-8553091 windowBackgroundWhiteInputFieldActivated=-9522449 chat_attachGalleryBackground=-11692299 chat_outInstantSelected=-1 +actionBarDefaultSubmenuSeparator=-14803425 chat_outSentCheck=-506859265 key_graySectionText=-8158332 player_placeholder=-10197916 @@ -116,7 +117,7 @@ groupcreate_spanBackground=-13816531 dialogButton=-10177041 contextProgressInner1=1526726655 chat_inLoaderPhotoIconSelected=-1 -actionBarDefaultSubtitle=1693643506 +actionBarDefaultSubtitle=1945301746 chat_inContactPhoneText=-8486783 chat_inlineResultIcon=-8796932 chat_outBubbleGradientSelectedOverlay=352321535 @@ -197,7 +198,7 @@ statisticChartSignatureAlpha=-1946157057 chat_emojiSearchIcon=-9211020 chat_emojiPanelTrendingDescription=-8553090 calls_callReceivedGreenIcon=-12001930 -chats_pinnedOverlay=16777215 +chats_pinnedOverlay=201326591 windowBackgroundWhiteInputField=-11513776 avatar_backgroundRed=-2326437 statisticChartLine_green=-12729793 @@ -266,7 +267,13 @@ chat_outAudioDurationSelectedText=-7023626 avatar_backgroundArchivedHidden=-12279320 chat_attachCameraIcon1=-32171 undo_background=-181917656 +premiumGradientBackground3=-16777216 +premiumGradientBackground4=-16777216 +premiumGradientBackground1=-16578545 avatar_actionBarSelectorPink=-12758164 +premiumGradientBackground2=-16645625 +premiumStarGradient1=-2342678 +premiumStarGradient2=-9992961 dialogTextHint=-8553091 statisticChartLine_orange=-1457126 chat_topPanelTitle=-10440716 @@ -324,7 +331,7 @@ avatar_actionBarSelectorViolet=-12758164 chat_attachPollBackground=-2183099 avatar_nameInMessageBlue=-8796932 dialogTextBlack=-592138 -actionBarDefault=-14671838 +actionBarDefault=-14474458 location_placeLocationBackground=-9919529 profile_actionIcon=-1 windowBackgroundUnchecked=-14803424 @@ -344,6 +351,7 @@ chat_goDownButtonCounter=-1 switchTrackBlueSelectorChecked=848091135 chat_outFileBackground=520093695 chats_name=-921103 +premiumStartSmallStarsColor=-8290049 switchTrackBlueSelector=431611386 dialogBadgeBackground=-10177041 chat_outBubbleSelected=-11829841 @@ -494,4 +502,4 @@ chat_topPanelBackground=-15066597 chat_outSentClock=-6698513 dialogBackgroundGray=-14013910 chat_searchPanelText=-10767620 -chat_inContactIcon=-1 +chat_inContactIcon=-1 \ No newline at end of file diff --git a/TMessagesProj/src/main/assets/shaders/fragment2.glsl b/TMessagesProj/src/main/assets/shaders/fragment2.glsl new file mode 100644 index 000000000..ee3dda066 --- /dev/null +++ b/TMessagesProj/src/main/assets/shaders/fragment2.glsl @@ -0,0 +1,68 @@ +precision highp float; + +uniform sampler2D u_Texture; +uniform sampler2D u_NormalMap; +uniform sampler2D u_BackgroundTexture; +uniform float f_xOffset; +uniform float f_alpha; +uniform mat4 world; +uniform vec3 modelViewVertex; + +varying vec3 vNormal; +varying vec2 vUV; + +vec3 cameraPosition = vec3(0, 0, 100); + +vec4 a_Color = vec4(1); +uniform float spec1; +uniform float spec2; +uniform float u_diffuse; +uniform float normalSpec; +uniform vec3 gradientColor1; +uniform vec3 gradientColor2; +uniform vec3 normalSpecColor; +uniform vec3 specColor; +uniform vec2 resolution; +uniform vec4 gradientPosition; + +void main() { + vec3 vLightPosition2 = vec3(-400,400,400); + vec3 vLightPosition3 = vec3(0,200,400); + vec3 vLightPosition4 = vec3(100,-200,400); + + vec3 vNormalW = normalize(vec3(world * vec4(vNormal, 0.0))); + vec3 vTextureNormal = normalize(texture2D(u_NormalMap, vUV + vec2(-f_xOffset, f_xOffset)).xyz * 2.0 - 1.0); + + vec3 finalNormal = normalize(vNormalW + vTextureNormal); + + vec3 color = texture2D(u_Texture, vUV * vec2(0.8, 0.8) + vec2(0.2 * f_xOffset, 0)).xyz; + vec3 viewDirectionW = normalize(cameraPosition - modelViewVertex); + + vec3 angleW = normalize(viewDirectionW + vLightPosition2); + float specComp2 = max(0., dot(vNormalW, angleW)); + specComp2 = pow(specComp2, max(1., 128.)) * spec1; + + angleW = normalize(viewDirectionW + vLightPosition4); + float specComp3 = max(0., dot(vNormalW, angleW)); + specComp3 = pow(specComp3, max(1., 128.)) * spec2; + + float diffuse = max(dot(vNormalW, viewDirectionW), (1.0 - u_diffuse)); + + float mixValue = distance(vUV,vec2(1,0)); + vec4 gradientColorFinal = vec4(mix(gradientColor1,gradientColor2,mixValue), 1.0); + + angleW = normalize(viewDirectionW + vLightPosition4); + float normalSpecComp = max(0., dot(finalNormal, angleW)); + normalSpecComp = pow(normalSpecComp, max(1., 128.)) * normalSpec; + + angleW = normalize(viewDirectionW + vLightPosition2); + float normalSpecComp2 = max(0., dot(finalNormal, angleW)); + normalSpecComp2 = pow(normalSpecComp2, max(1., 128.)) * normalSpec; + + vec4 normalSpecFinal = vec4(normalSpecColor, 0.0) * (normalSpecComp + normalSpecComp2); + vec4 specFinal = vec4(specColor, 0.0) * (specComp2 + specComp3); + + vec4 fragColor = gradientColorFinal + specFinal + normalSpecFinal; + vec4 backgroundColor = texture2D(u_BackgroundTexture, vec2(gradientPosition.x + (gl_FragCoord.x / resolution.x) * gradientPosition.y, gradientPosition.z + (1.0 - (gl_FragCoord.y / resolution.y)) * gradientPosition.w)); + gl_FragColor = mix(backgroundColor, fragColor, diffuse) * f_alpha; +} \ No newline at end of file diff --git a/TMessagesProj/src/main/assets/shaders/vertex2.glsl b/TMessagesProj/src/main/assets/shaders/vertex2.glsl new file mode 100644 index 000000000..8a3bb36af --- /dev/null +++ b/TMessagesProj/src/main/assets/shaders/vertex2.glsl @@ -0,0 +1,16 @@ +uniform mat4 uMVPMatrix; + +attribute vec2 a_TexCoordinate; +attribute vec3 a_Normal; +attribute vec4 vPosition; + +varying vec3 vNormal; +varying vec2 vUV; +varying vec3 modelViewVertex; + +void main() { + modelViewVertex = vec3(uMVPMatrix * vPosition); + vUV = a_TexCoordinate; + vNormal = a_Normal; + gl_Position = uMVPMatrix * vPosition; +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/androidx/recyclerview/widget/ChatListItemAnimator.java b/TMessagesProj/src/main/java/androidx/recyclerview/widget/ChatListItemAnimator.java index a41729d5a..a2f937dc4 100644 --- a/TMessagesProj/src/main/java/androidx/recyclerview/widget/ChatListItemAnimator.java +++ b/TMessagesProj/src/main/java/androidx/recyclerview/widget/ChatListItemAnimator.java @@ -761,6 +761,13 @@ public class ChatListItemAnimator extends DefaultItemAnimator { recyclerListView.invalidate(); ValueAnimator valueAnimator = ValueAnimator.ofFloat(1f, 0); + if (moveInfoExtended.animateBackgroundOnly) { + params.toDeltaLeft = -moveInfoExtended.deltaLeft; + params.toDeltaRight = -moveInfoExtended.deltaRight; + } else { + params.toDeltaLeft = -moveInfoExtended.deltaLeft - chatMessageCell.getAnimationOffsetX(); + params.toDeltaRight = -moveInfoExtended.deltaRight - chatMessageCell.getAnimationOffsetX(); + } valueAnimator.addUpdateListener(animation -> { float v = (float) animation.getAnimatedValue(); if (moveInfoExtended.animateBackgroundOnly) { @@ -777,6 +784,9 @@ public class ChatListItemAnimator extends DefaultItemAnimator { chatMessageCell.invalidate(); }); animatorSet.playTogether(valueAnimator); + } else { + params.toDeltaLeft = 0; + params.toDeltaRight = 0; } MessageObject.GroupedMessages group = chatMessageCell.getCurrentMessagesGroup(); diff --git a/TMessagesProj/src/main/java/androidx/recyclerview/widget/DefaultItemAnimator.java b/TMessagesProj/src/main/java/androidx/recyclerview/widget/DefaultItemAnimator.java index 9d45b4015..545f96120 100644 --- a/TMessagesProj/src/main/java/androidx/recyclerview/widget/DefaultItemAnimator.java +++ b/TMessagesProj/src/main/java/androidx/recyclerview/widget/DefaultItemAnimator.java @@ -21,6 +21,7 @@ import android.animation.TimeInterpolator; import android.animation.ValueAnimator; import android.os.Build; import android.view.View; +import android.view.ViewGroup; import android.view.ViewPropertyAnimator; import android.view.animation.Interpolator; @@ -223,7 +224,11 @@ public class DefaultItemAnimator extends SimpleItemAnimator { final View view = holder.itemView; final ViewPropertyAnimator animation = view.animate(); mRemoveAnimations.add(holder); - animation.setDuration(getRemoveDuration()).alpha(0).setListener( + if (getRemoveDelay() > 0) { + // wanted to achieve an effect of next items covering current + ((ViewGroup) view.getParent()).bringChildToFront(view); + } + animation.setDuration(getRemoveDuration()).setStartDelay(getRemoveDelay()).alpha(0).setListener( new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animator) { @@ -256,7 +261,7 @@ public class DefaultItemAnimator extends SimpleItemAnimator { final View view = holder.itemView; final ViewPropertyAnimator animation = view.animate(); mAddAnimations.add(holder); - animation.alpha(1).setDuration(getAddDuration()) + animation.alpha(1).setDuration(getAddDuration()).setStartDelay(getAddDelay()) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animator) { @@ -331,30 +336,35 @@ public class DefaultItemAnimator extends SimpleItemAnimator { if (translationInterpolator != null) { animation.setInterpolator(translationInterpolator); } - animation.setDuration(getMoveDuration()).setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationStart(Animator animator) { - dispatchMoveStarting(holder); - } - - @Override - public void onAnimationCancel(Animator animator) { - if (deltaX != 0) { - view.setTranslationX(0); + animation + .setDuration(getMoveDuration()) + .setStartDelay(getMoveDelay()) + .setInterpolator(getMoveInterpolator()) + .setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animator) { + dispatchMoveStarting(holder); } - if (deltaY != 0) { - view.setTranslationY(0); - } - } - @Override - public void onAnimationEnd(Animator animator) { - animation.setListener(null); - dispatchMoveFinished(holder); - mMoveAnimations.remove(holder); - dispatchFinishedWhenDone(); - } - }).start(); + @Override + public void onAnimationCancel(Animator animator) { + if (deltaX != 0) { + view.setTranslationX(0); + } + if (deltaY != 0) { + view.setTranslationY(0); + } + } + + @Override + public void onAnimationEnd(Animator animator) { + animation.setListener(null); + dispatchMoveFinished(holder); + mMoveAnimations.remove(holder); + dispatchFinishedWhenDone(); + } + }) + .start(); } @Override @@ -393,8 +403,7 @@ public class DefaultItemAnimator extends SimpleItemAnimator { final RecyclerView.ViewHolder newHolder = changeInfo.newHolder; final View newView = newHolder != null ? newHolder.itemView : null; if (view != null) { - final ViewPropertyAnimator oldViewAnim = view.animate().setDuration( - getChangeDuration()); + final ViewPropertyAnimator oldViewAnim = view.animate().setDuration(getChangeRemoveDuration()).setStartDelay(getChangeDelay()); mChangeAnimations.add(changeInfo.oldHolder); oldViewAnim.translationX(changeInfo.toX - changeInfo.fromX); oldViewAnim.translationY(changeInfo.toY - changeInfo.fromY); @@ -419,7 +428,8 @@ public class DefaultItemAnimator extends SimpleItemAnimator { if (newView != null) { final ViewPropertyAnimator newViewAnimation = newView.animate(); mChangeAnimations.add(changeInfo.newHolder); - newViewAnimation.translationX(0).translationY(0).setDuration(getChangeDuration()) + newViewAnimation.translationX(0).translationY(0).setDuration(getChangeAddDuration()) + .setStartDelay(getChangeDelay() + (getChangeDuration() - getChangeAddDuration())) .alpha(1).setListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animator) { @@ -713,6 +723,14 @@ public class DefaultItemAnimator extends SimpleItemAnimator { } } + public boolean isHolderRemoving(RecyclerView.ViewHolder holder) { + return mRemoveAnimations.contains(holder); + } + + public boolean isHolderAdding(RecyclerView.ViewHolder holder) { + return mAddAnimations.contains(holder); + } + /** * {@inheritDoc} *

diff --git a/TMessagesProj/src/main/java/androidx/recyclerview/widget/RecyclerView.java b/TMessagesProj/src/main/java/androidx/recyclerview/widget/RecyclerView.java index b3119574c..82626f636 100644 --- a/TMessagesProj/src/main/java/androidx/recyclerview/widget/RecyclerView.java +++ b/TMessagesProj/src/main/java/androidx/recyclerview/widget/RecyclerView.java @@ -22,6 +22,7 @@ import static androidx.core.view.ViewCompat.TYPE_NON_TOUCH; import static androidx.core.view.ViewCompat.TYPE_TOUCH; import android.animation.LayoutTransition; +import android.animation.TimeInterpolator; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.Resources; @@ -12714,7 +12715,16 @@ public class RecyclerView extends ViewGroup implements ScrollingView, private long mAddDuration = 120; private long mRemoveDuration = 120; private long mMoveDuration = 250; - private long mChangeDuration = 250; + private long mChangeAddDuration = 250; + private long mChangeRemoveDuration = 250; + + private TimeInterpolator mMoveInterpolator = null; + + private long mAddDelay = 0; + private long mRemoveDelay = 0; + private long mMoveDelay = 0; + private long mDelay = 0; + private long mChangeDelay = 0; /** * Gets the current duration for which all move animations will run. @@ -12770,13 +12780,31 @@ public class RecyclerView extends ViewGroup implements ScrollingView, mRemoveDuration = removeDuration; } + /** + * Gets the current duration for which all change animations of item appearance + * + * @return The current change duration + */ + public long getChangeAddDuration() { + return mChangeAddDuration; + } + /** * Gets the current duration for which all change animations will run. * * @return The current change duration */ public long getChangeDuration() { - return mChangeDuration; + return Math.max(mChangeAddDuration, mChangeRemoveDuration); + } + + /** + * Gets the current duration for which all change animations of item disappearance + * + * @return The current change duration + */ + public long getChangeRemoveDuration() { + return mChangeRemoveDuration; } /** @@ -12785,7 +12813,68 @@ public class RecyclerView extends ViewGroup implements ScrollingView, * @param changeDuration The change duration */ public void setChangeDuration(long changeDuration) { - mChangeDuration = changeDuration; + mChangeAddDuration = changeDuration; + mChangeRemoveDuration = changeDuration; + } + + /** + * Sets the duration for which all change animations will run. + * + * @param changeNewDuration The duration of showing new view of change + * @param changeOldDuration The duration of hiding old view of change + */ + public void setChangeDuration(long changeNewDuration, long changeOldDuration) { + mChangeAddDuration = changeNewDuration; + mChangeRemoveDuration = changeOldDuration; + } + + + public void setAddDelay(long addDelay) { + mAddDelay = addDelay; + } + + public void setRemoveDelay(long removeDelay) { + mRemoveDelay = removeDelay; + } + + public void setMoveDelay(long moveDelay) { + mMoveDelay = moveDelay; + } + + public void setChangeDelay(long changeDelay) { + mChangeDelay = changeDelay; + } + + public long getAddDelay() { + return mAddDelay; + } + + public long getRemoveDelay() { + return mRemoveDelay; + } + + public long getMoveDelay() { + return mMoveDelay; + } + + public long getChangeDelay() { + return mChangeDelay; + } + + public void setDurations(long duration) { + mAddDuration = duration; + mMoveDuration = duration; + mRemoveDuration = duration; + mChangeAddDuration = duration; + mChangeRemoveDuration = duration; + } + + public void setMoveInterpolator(TimeInterpolator interpolator) { + mMoveInterpolator = interpolator; + } + + public TimeInterpolator getMoveInterpolator() { + return mMoveInterpolator; } /** diff --git a/TMessagesProj/src/main/java/androidx/recyclerview/widget/SimpleItemAnimator.java b/TMessagesProj/src/main/java/androidx/recyclerview/widget/SimpleItemAnimator.java index dee9cfb9b..6ebcae4db 100644 --- a/TMessagesProj/src/main/java/androidx/recyclerview/widget/SimpleItemAnimator.java +++ b/TMessagesProj/src/main/java/androidx/recyclerview/widget/SimpleItemAnimator.java @@ -40,6 +40,7 @@ public abstract class SimpleItemAnimator extends RecyclerView.ItemAnimator { boolean mSupportsChangeAnimations = true; protected boolean alwaysCreateMoveAnimationIfPossible; + protected boolean disabledMoveAnimations; /** * Returns whether this ItemAnimator supports animations of change events. @@ -93,7 +94,7 @@ public abstract class SimpleItemAnimator extends RecyclerView.ItemAnimator { View disappearingItemView = viewHolder.itemView; int newLeft = postLayoutInfo == null ? disappearingItemView.getLeft() : postLayoutInfo.left; int newTop = postLayoutInfo == null ? disappearingItemView.getTop() : postLayoutInfo.top; - if (!viewHolder.isRemoved() && (oldLeft != newLeft || oldTop != newTop)) { + if (!disabledMoveAnimations && !viewHolder.isRemoved() && (oldLeft != newLeft || oldTop != newTop)) { disappearingItemView.layout(newLeft, newTop, newLeft + disappearingItemView.getWidth(), newTop + disappearingItemView.getHeight()); @@ -114,7 +115,7 @@ public abstract class SimpleItemAnimator extends RecyclerView.ItemAnimator { @Override public boolean animateAppearance(@NonNull RecyclerView.ViewHolder viewHolder, @Nullable ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo) { - if (preLayoutInfo != null && ((preLayoutInfo.left != postLayoutInfo.left + if (!disabledMoveAnimations && preLayoutInfo != null && ((preLayoutInfo.left != postLayoutInfo.left || preLayoutInfo.top != postLayoutInfo.top) || alwaysCreateMoveAnimationIfPossible)) { // slide items in if before/after locations differ if (DEBUG) { @@ -133,7 +134,7 @@ public abstract class SimpleItemAnimator extends RecyclerView.ItemAnimator { @Override public boolean animatePersistence(@NonNull RecyclerView.ViewHolder viewHolder, @NonNull ItemHolderInfo preInfo, @NonNull ItemHolderInfo postInfo) { - if (preInfo.left != postInfo.left || preInfo.top != postInfo.top) { + if (!disabledMoveAnimations && (preInfo.left != postInfo.left || preInfo.top != postInfo.top)) { if (DEBUG) { Log.d(TAG, "PERSISTENT: " + viewHolder + " with view " + viewHolder.itemView); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java index 62844c86e..993b9245e 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java @@ -49,6 +49,7 @@ import android.os.Build; import android.os.Environment; import android.os.PowerManager; import android.os.SystemClock; +import android.os.Vibrator; import android.provider.CallLog; import android.provider.DocumentsContract; import android.provider.MediaStore; @@ -76,6 +77,7 @@ import android.view.MotionEvent; import android.view.Surface; import android.view.TextureView; import android.view.View; +import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.Window; import android.view.WindowInsets; @@ -90,12 +92,14 @@ import android.view.inputmethod.InputMethodSubtype; import android.webkit.MimeTypeMap; import android.widget.EdgeEffect; import android.widget.HorizontalScrollView; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ScrollView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; import androidx.core.content.FileProvider; import androidx.dynamicanimation.animation.DynamicAnimation; import androidx.dynamicanimation.animation.SpringAnimation; @@ -163,13 +167,17 @@ import java.util.HashSet; import java.util.Hashtable; import java.util.List; import java.util.Locale; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Matcher; import java.util.regex.Pattern; public class AndroidUtilities { public final static int LIGHT_STATUS_BAR_OVERLAY = 0x0f000000, DARK_STATUS_BAR_OVERLAY = 0x33000000; + public final static String TYPEFACE_ROBOTO_MEDIUM = "fonts/rmedium.ttf"; + private static final Hashtable typefaceCache = new Hashtable<>(); + public static float touchSlop; private static int prevOrientation = -10; private static boolean waitingForSms = false; private static boolean waitingForCall = false; @@ -197,6 +205,7 @@ public class AndroidUtilities { public static OvershootInterpolator overshootInterpolator = new OvershootInterpolator(); private static AccessibilityManager accessibilityManager; + private static Vibrator vibrator; private static Boolean isTablet = null, isSmallScreen = null; private static int adjustOwnerClassGuid = 0; @@ -435,6 +444,23 @@ public class AndroidUtilities { return spannableStringBuilder; } + public static void recycleBitmaps(ArrayList bitmapToRecycle) { + if (bitmapToRecycle != null && !bitmapToRecycle.isEmpty()) { + AndroidUtilities.runOnUIThread(() -> NotificationCenter.getInstance(UserConfig.selectedAccount).doOnIdle(() -> { + for (int i = 0; i < bitmapToRecycle.size(); i++) { + Bitmap bitmap = bitmapToRecycle.get(i); + if (bitmap != null && !bitmap.isRecycled()) { + try { + bitmap.recycle(); + } catch (Exception e) { + FileLog.e(e); + } + } + } + }), 36); + } + } + private static class LinkSpec { String url; int start; @@ -510,7 +536,7 @@ public class AndroidUtilities { Linkify.addLinks(text, Linkify.PHONE_NUMBERS); } if ((mask & Linkify.WEB_URLS) != 0) { - gatherLinks(links, text, LinkifyPort.WEB_URL, new String[]{"http://", "https://", "ton://", "tg://"}, sUrlMatchFilter, internalOnly); + gatherLinks(links, text, LinkifyPort.WEB_URL, new String[]{"http://", "https://", "tg://"}, sUrlMatchFilter, internalOnly); } pruneOverlaps(links); if (links.size() == 0) { @@ -842,10 +868,17 @@ public class AndroidUtilities { } public static void requestAdjustResize(Activity activity, int classGuid) { - if (activity == null || isTablet()) { + if (activity == null) { return; } - activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + requestAdjustResize(activity.getWindow(), classGuid); + } + + public static void requestAdjustResize(Window window, int classGuid) { + if (window == null || isTablet()) { + return; + } + window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); adjustOwnerClassGuid = classGuid; } @@ -1833,6 +1866,8 @@ public class AndroidUtilities { } FileLog.e("density = " + density + " display size = " + displaySize.x + " " + displaySize.y + " " + displayMetrics.xdpi + "x" + displayMetrics.ydpi + ", screen layout: " + configuration.screenLayout + ", statusbar height: " + statusBarHeight + ", navbar height: " + navigationBarHeight); } + ViewConfiguration vc = ViewConfiguration.get(context); + touchSlop = vc.getScaledTouchSlop(); } catch (Exception e) { FileLog.e(e); } @@ -2609,8 +2644,13 @@ public class AndroidUtilities { public static File generatePicturePath(boolean secretChat, String ext) { try { - File storageDir = ApplicationLoader.applicationContext.getExternalFilesDir(Environment.DIRECTORY_PICTURES); - return new File(storageDir, generateFileName(0, ext)); + File publicDir = FileLoader.getDirectory(FileLoader.MEDIA_DIR_IMAGE_PUBLIC); + if (secretChat || publicDir == null) { + File storageDir = ApplicationLoader.applicationContext.getExternalFilesDir(Environment.DIRECTORY_PICTURES); + return new File(storageDir, generateFileName(0, ext)); + } else { + return new File(publicDir, generateFileName(0, ext)); + } } catch (Exception e) { FileLog.e(e); } @@ -2736,11 +2776,11 @@ public class AndroidUtilities { return String.format("%.1f MB", value); } } else { - float value = size / 1024.0f / 1024.0f / 1024.0f; + float value = (int) (size / 1024L / 1024L) / 1000.0f; if (removeZero && (value - (int) value) * 10 == 0) { return String.format("%d GB", (int) value); } else { - return String.format("%.1f GB", value); + return String.format("%.2f GB", value); } } } @@ -2985,7 +3025,7 @@ public class AndroidUtilities { f = new File(message.messageOwner.attachPath); } if (f == null || f != null && !f.exists()) { - f = FileLoader.getPathToMessage(message.messageOwner); + f = FileLoader.getInstance(UserConfig.selectedAccount).getPathToMessage(message.messageOwner); } if (f != null && f.exists()) { if (parentFragment != null && f.getName().toLowerCase().endsWith("attheme")) { @@ -3104,7 +3144,7 @@ public class AndroidUtilities { f = new File(message.messageOwner.attachPath); } if (f == null || !f.exists()) { - f = FileLoader.getPathToMessage(message.messageOwner); + f = FileLoader.getInstance(message.currentAccount).getPathToMessage(message.messageOwner); } String mimeType = message.type == 9 || message.type == 0 ? message.getMimeType() : null; return openForView(f, message.getFileName(), mimeType, activity, resourcesProvider); @@ -3112,7 +3152,7 @@ public class AndroidUtilities { public static boolean openForView(TLRPC.Document document, boolean forceCache, Activity activity) { String fileName = FileLoader.getAttachFileName(document); - File f = FileLoader.getPathToAttach(document, true); + File f = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true); return openForView(f, fileName, document.mime_type, activity, null); } @@ -3193,7 +3233,7 @@ public class AndroidUtilities { return false; } String fileName = FileLoader.getAttachFileName(media); - File f = FileLoader.getPathToAttach(media, true); + File f = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(media, true); if (f != null && f.exists()) { String realMimeType = null; Intent intent = new Intent(Intent.ACTION_VIEW); @@ -3299,6 +3339,13 @@ public class AndroidUtilities { } } + public static Vibrator getVibrator() { + if (vibrator == null) { + vibrator = (Vibrator) ApplicationLoader.applicationContext.getSystemService(Context.VIBRATOR_SERVICE); + } + return vibrator; + } + public static boolean isAccessibilityTouchExplorationEnabled() { if (accessibilityManager == null) { accessibilityManager = (AccessibilityManager) ApplicationLoader.applicationContext.getSystemService(Context.ACCESSIBILITY_SERVICE); @@ -3810,6 +3857,10 @@ public class AndroidUtilities { } } + public static float computeDampingRatio(float tension /* stiffness */, float friction /* damping */, float mass) { + return friction / (2f * (float) Math.sqrt(mass * tension)); + } + private static WeakReference flagSecureFragment; public static boolean hasFlagSecureFragment() { @@ -4158,11 +4209,34 @@ public class AndroidUtilities { } } + public static void updateImageViewImageAnimated(ImageView imageView, int newIcon) { + updateImageViewImageAnimated(imageView, ContextCompat.getDrawable(imageView.getContext(), newIcon)); + } + + public static void updateImageViewImageAnimated(ImageView imageView, Drawable newIcon) { + ValueAnimator animator = ValueAnimator.ofFloat(0, 1).setDuration(150); + AtomicBoolean changed = new AtomicBoolean(); + animator.addUpdateListener(animation -> { + float val = (float) animation.getAnimatedValue(); + float scale = 0.5f + Math.abs(val - 0.5f); + imageView.setScaleX(scale); + imageView.setScaleY(scale); + if (val >= 0.5f && !changed.get()) { + changed.set(true); + imageView.setImageDrawable(newIcon); + } + }); + animator.start(); + } + public static void updateViewVisibilityAnimated(View view, boolean show) { updateViewVisibilityAnimated(view, show, 1f, true); } public static void updateViewVisibilityAnimated(View view, boolean show, float scaleFactor, boolean animated) { + if (view == null) { + return; + } if (view.getParent() == null) { animated = false; } @@ -4278,4 +4352,14 @@ public class AndroidUtilities { return false; } } + + public static boolean isAccessibilityScreenReaderEnabled() { + return false; +// try { +// AccessibilityManager am = (AccessibilityManager) ApplicationLoader.applicationContext.getSystemService(Context.ACCESSIBILITY_SERVICE); +// return (am != null && am.isEnabled() && !am.isTouchExplorationEnabled()); +// } catch (Exception ignroe) { +// return false; +// } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/AnimatedFileDrawableStream.java b/TMessagesProj/src/main/java/org/telegram/messenger/AnimatedFileDrawableStream.java index f112cd774..1e0841698 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/AnimatedFileDrawableStream.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/AnimatedFileDrawableStream.java @@ -14,7 +14,7 @@ public class AnimatedFileDrawableStream implements FileLoadOperationStream { private int currentAccount; private volatile boolean canceled; private final Object sync = new Object(); - private int lastOffset; + private long lastOffset; private boolean waitingForLoad; private boolean preview; private boolean finishedLoadingFile; @@ -48,10 +48,10 @@ public class AnimatedFileDrawableStream implements FileLoadOperationStream { if (readLength == 0) { return 0; } else { - int availableLength = 0; + long availableLength = 0; try { while (availableLength == 0) { - int[] result = loadOperation.getDownloadedLengthFromOffset(offset, readLength); + long[] result = loadOperation.getDownloadedLengthFromOffset(offset, readLength); availableLength = result[0]; if (!finishedLoadingFile && result[1] != 0) { finishedLoadingFile = true; @@ -79,7 +79,7 @@ public class AnimatedFileDrawableStream implements FileLoadOperationStream { } catch (Exception e) { FileLog.e(e, false); } - return availableLength; + return (int) availableLength; } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java index f68809f98..8f7a57eea 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java @@ -42,6 +42,7 @@ import org.telegram.messenger.voip.VideoCapturerDevice; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Components.ForegroundDetector; +import org.telegram.ui.LauncherIconController; import java.io.File; @@ -178,6 +179,7 @@ public class ApplicationLoader extends Application { DownloadController.getInstance(a); } ChatThemeController.init(); + BillingController.getInstance().startConnection(); } public ApplicationLoader() { @@ -220,6 +222,8 @@ public class ApplicationLoader extends Application { applicationHandler = new Handler(applicationContext.getMainLooper()); AndroidUtilities.runOnUIThread(ApplicationLoader::startPushService); + + LauncherIconController.tryFixLauncherIconIfNeeded(); } public static void startPushService() { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/BaseController.java b/TMessagesProj/src/main/java/org/telegram/messenger/BaseController.java index 82f1a66ff..1affa94f7 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/BaseController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/BaseController.java @@ -4,7 +4,7 @@ import org.telegram.tgnet.ConnectionsManager; public class BaseController { - protected int currentAccount; + protected final int currentAccount; private AccountInstance parentAccountInstance; public BaseController(int num) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/BillingController.java b/TMessagesProj/src/main/java/org/telegram/messenger/BillingController.java new file mode 100644 index 000000000..f66745807 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/BillingController.java @@ -0,0 +1,163 @@ +package org.telegram.messenger; + +import android.app.Activity; +import android.content.ActivityNotFoundException; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.util.Consumer; + +import com.android.billingclient.api.AcknowledgePurchaseParams; +import com.android.billingclient.api.BillingClient; +import com.android.billingclient.api.BillingClientStateListener; +import com.android.billingclient.api.BillingFlowParams; +import com.android.billingclient.api.BillingResult; +import com.android.billingclient.api.ProductDetails; +import com.android.billingclient.api.ProductDetailsResponseListener; +import com.android.billingclient.api.Purchase; +import com.android.billingclient.api.PurchasesResponseListener; +import com.android.billingclient.api.PurchasesUpdatedListener; +import com.android.billingclient.api.QueryProductDetailsParams; +import com.android.billingclient.api.QueryPurchasesParams; + +import org.telegram.tgnet.TLRPC; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class BillingController implements PurchasesUpdatedListener, BillingClientStateListener { + public final static String PREMIUM_PRODUCT_ID = "telegram_premium"; + public final static QueryProductDetailsParams.Product PREMIUM_PRODUCT = QueryProductDetailsParams.Product.newBuilder() + .setProductType(BillingClient.ProductType.SUBS) + .setProductId(PREMIUM_PRODUCT_ID) + .build(); + + @Nullable + public static ProductDetails PREMIUM_PRODUCT_DETAILS; + + private static BillingController instance; + + private Map> resultListeners = new HashMap<>(); + private List requestingTokens = new ArrayList<>(); + + public static BillingController getInstance() { + if (instance == null) { + instance = new BillingController(ApplicationLoader.applicationContext); + } + return instance; + } + + private BillingClient billingClient; + + private BillingController(Context ctx) { + billingClient = BillingClient.newBuilder(ctx) + .enablePendingPurchases() + .setListener(this) + .build(); + } + + public void startConnection() { + if (isReady()) { + return; + } + billingClient.startConnection(this); + } + + public boolean isReady() { + return billingClient.isReady(); + } + + public void queryProductDetails(List products, ProductDetailsResponseListener responseListener) { + if (!isReady()) { + throw new IllegalStateException("Billing controller should be ready for this call!"); + } + billingClient.queryProductDetailsAsync(QueryProductDetailsParams.newBuilder().setProductList(products).build(), responseListener); + } + + public void queryPurchases(String productType, PurchasesResponseListener responseListener) { + billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder().setProductType(productType).build(), responseListener); + } + + public boolean startManageSubscription(Context ctx, String productId) { + try { + ctx.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("https://play.google.com/store/account/subscriptions?sku=%s&package=%s", productId, ctx.getPackageName())))); + return true; + } catch (ActivityNotFoundException e) { + return false; + } + } + + public void addResultListener(String productId, Consumer listener) { + resultListeners.put(productId, listener); + } + + public boolean launchBillingFlow(Activity activity, List productDetails) { + if (!isReady()) { + return false; + } + return billingClient.launchBillingFlow(activity, BillingFlowParams.newBuilder() + .setProductDetailsParamsList(productDetails) + .build()).getResponseCode() == BillingClient.BillingResponseCode.OK; + } + + @Override + public void onPurchasesUpdated(@NonNull BillingResult billingResult, @Nullable List list) { + FileLog.d("Billing purchases updated: " + billingResult + ", " + list); + if (list == null) { + return; + } + for (Purchase purchase : list) { + if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) { + if (!purchase.isAcknowledged()) { + if (!requestingTokens.contains(purchase.getPurchaseToken())) { + requestingTokens.add(purchase.getPurchaseToken()); + TLRPC.TL_payments_assignPlayMarketTransaction req = new TLRPC.TL_payments_assignPlayMarketTransaction(); + req.purchase_token = purchase.getPurchaseToken(); + AccountInstance acc = AccountInstance.getInstance(UserConfig.selectedAccount); + acc.getConnectionsManager().sendRequest(req, (response, error) -> { + if (response instanceof TLRPC.Updates) { + acc.getMessagesController().processUpdates((TLRPC.Updates) response, false); + requestingTokens.remove(purchase.getPurchaseToken()); + + for (String productId : purchase.getProducts()) { + Consumer listener = resultListeners.remove(productId); + listener.accept(billingResult); + } + } + }); + } + } + } + } + } + + @Override + public void onBillingServiceDisconnected() { + FileLog.d("Billing service disconnected"); + } + + @Override + public void onBillingSetupFinished(@NonNull BillingResult setupBillingResult) { + if (setupBillingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) { + queryProductDetails(Collections.singletonList(PREMIUM_PRODUCT), (billingResult, list) -> { + if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) { + for (ProductDetails details : list) { + if (details.getProductId().equals(PREMIUM_PRODUCT_ID)) { + PREMIUM_PRODUCT_DETAILS = details; + } + } + + AndroidUtilities.runOnUIThread(() -> NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.billingProductDetailsUpdated)); + } + }); + + queryPurchases(BillingClient.ProductType.SUBS, this::onPurchasesUpdated); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/BotWebViewVibrationEffect.java b/TMessagesProj/src/main/java/org/telegram/messenger/BotWebViewVibrationEffect.java new file mode 100644 index 000000000..3c2bced83 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/BotWebViewVibrationEffect.java @@ -0,0 +1,42 @@ +package org.telegram.messenger; + +import android.os.Build; +import android.os.VibrationEffect; + +import androidx.annotation.RequiresApi; + +public enum BotWebViewVibrationEffect { + IMPACT_LIGHT(new long[] {7}, new int[] {65}, new long[] {50}), + IMPACT_MEDIUM(new long[] {7}, new int[] {145}, new long[] {50}), + IMPACT_HEAVY(new long[] {7}, new int[] {255}, new long[] {50}), + IMPACT_RIGID(new long[] {3}, new int[] {225}, new long[] {50}), + IMPACT_SOFT(new long[] {10}, new int[] {175}, new long[] {50}), + NOTIFICATION_ERROR(new long[] {14,48,14,48,14,48,20}, new int[] {200,0,200,0,255,0,145}, new long[] {50}), + NOTIFICATION_SUCCESS(new long[] {14,65,14}, new int[] {175,0,255}, new long[] {50}), + NOTIFICATION_WARNING(new long[] {14,64,14}, new int[] {225,0,175}, new long[] {50}), + SELECTION_CHANGE(new long[] {1}, new int[] {65}, new long[] {50}); + + public final long[] timings; + public final int[] amplitudes; + public final long[] fallbackTimings; + private Object vibrationEffect; + + BotWebViewVibrationEffect(long[] timings, int[] amplitudes, long[] fallbackTimings) { + this.timings = timings; + this.amplitudes = amplitudes; + this.fallbackTimings = fallbackTimings; + } + + @RequiresApi(Build.VERSION_CODES.O) + public VibrationEffect getVibrationEffectForOreo() { + if (vibrationEffect == null) { + if (!AndroidUtilities.getVibrator().hasAmplitudeControl()) { + vibrationEffect = VibrationEffect.createWaveform(fallbackTimings, -1); + } else { + vibrationEffect = VibrationEffect.createWaveform(timings, amplitudes, -1); + } + } + + return (VibrationEffect) vibrationEffect; + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java index 719aab790..0fe814f60 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java @@ -20,14 +20,17 @@ public class BuildVars { public static boolean USE_CLOUD_STRINGS = true; public static boolean CHECK_UPDATES = true; public static boolean NO_SCOPED_STORAGE = Build.VERSION.SDK_INT <= 29; - public static int BUILD_VERSION = 2636; - public static String BUILD_VERSION_STRING = "8.7.4"; + public static int BUILD_VERSION = 2702; + public static String BUILD_VERSION_STRING = "8.8.2"; public static int APP_ID = 4; public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103"; public static String SMS_HASH = isStandaloneApp() ? "w0lkcmTZkKh" : (DEBUG_VERSION ? "O2P2z+/jBpJ" : "oLeq9AcOZkT"); public static String PLAYSTORE_APP_URL = "https://play.google.com/store/apps/details?id=org.telegram.messenger"; + // You can use this flag to disable Google Play Billing (If you're making fork and want it to be in Google Play) + public static boolean IS_BILLING_UNAVAILABLE = false; + static { if (ApplicationLoader.applicationContext != null) { SharedPreferences sharedPreferences = ApplicationLoader.applicationContext.getSharedPreferences("systemConfig", Context.MODE_PRIVATE); @@ -35,6 +38,10 @@ public class BuildVars { } } + public static boolean useInvoiceBilling() { + return DEBUG_VERSION || isStandaloneApp() || isBetaApp(); + } + private static Boolean standaloneApp; public static boolean isStandaloneApp() { if (standaloneApp == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ChatsWidgetService.java b/TMessagesProj/src/main/java/org/telegram/messenger/ChatsWidgetService.java index e3b0ef2f5..049df5404 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ChatsWidgetService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ChatsWidgetService.java @@ -21,6 +21,8 @@ import android.view.View; import android.widget.RemoteViews; import android.widget.RemoteViewsService; +import androidx.collection.LongSparseArray; + import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.AvatarDrawable; @@ -30,8 +32,6 @@ import org.telegram.ui.EditWidgetActivity; import java.io.File; import java.util.ArrayList; -import androidx.collection.LongSparseArray; - public class ChatsWidgetService extends RemoteViewsService { @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { @@ -132,7 +132,7 @@ class ChatsRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory { try { Bitmap bitmap = null; if (photoPath != null) { - File path = FileLoader.getPathToAttach(photoPath, true); + File path = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(photoPath, true); bitmap = BitmapFactory.decodeFile(path.toString()); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ContactsWidgetService.java b/TMessagesProj/src/main/java/org/telegram/messenger/ContactsWidgetService.java index 2a618dbbe..41dd23557 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ContactsWidgetService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ContactsWidgetService.java @@ -18,6 +18,8 @@ import android.view.View; import android.widget.RemoteViews; import android.widget.RemoteViewsService; +import androidx.collection.LongSparseArray; + import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.AvatarDrawable; @@ -26,8 +28,6 @@ import org.telegram.ui.EditWidgetActivity; import java.io.File; import java.util.ArrayList; -import androidx.collection.LongSparseArray; - public class ContactsWidgetService extends RemoteViewsService { @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { @@ -135,7 +135,7 @@ class ContactsRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactor try { Bitmap bitmap = null; if (photoPath != null) { - File path = FileLoader.getPathToAttach(photoPath, true); + File path = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(photoPath, true); bitmap = BitmapFactory.decodeFile(path.toString()); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueue.java b/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueue.java index 0713aa91c..d57bdaa58 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueue.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueue.java @@ -52,7 +52,7 @@ public class DispatchQueue extends Thread { syncLatch.await(); handler.removeCallbacks(runnable); } catch (Exception e) { - FileLog.e(e); + FileLog.e(e, false); } } @@ -63,7 +63,7 @@ public class DispatchQueue extends Thread { handler.removeCallbacks(runnables[i]); } } catch (Exception e) { - FileLog.e(e); + FileLog.e(e, false); } } @@ -76,7 +76,7 @@ public class DispatchQueue extends Thread { try { syncLatch.await(); } catch (Exception e) { - FileLog.e(e); + FileLog.e(e, false); } if (delay <= 0) { return handler.post(runnable); @@ -90,7 +90,7 @@ public class DispatchQueue extends Thread { syncLatch.await(); handler.removeCallbacksAndMessages(null); } catch (Exception e) { - FileLog.e(e); + FileLog.e(e, false); } } @@ -109,12 +109,10 @@ public class DispatchQueue extends Thread { @Override public void run() { Looper.prepare(); - handler = new Handler() { - @Override - public void handleMessage(Message msg) { - DispatchQueue.this.handleMessage(msg); - } - }; + handler = new Handler(Looper.myLooper(), msg -> { + DispatchQueue.this.handleMessage(msg); + return true; + }); syncLatch.countDown(); Looper.loop(); } @@ -122,4 +120,8 @@ public class DispatchQueue extends Thread { public boolean isReady() { return syncLatch.getCount() == 0; } + + public Handler getHandler() { + return handler; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueueMainThreadSync.java b/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueueMainThreadSync.java new file mode 100644 index 000000000..7d9e310a0 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueueMainThreadSync.java @@ -0,0 +1,169 @@ +package org.telegram.messenger; + +import android.os.Handler; +import android.os.Looper; +import android.os.Message; +import android.os.SystemClock; + +import java.util.ArrayList; + +public class DispatchQueueMainThreadSync extends Thread { + + private volatile Handler handler = null; + private boolean isRunning; + private boolean isRecycled; + private long lastTaskTime; + private static int indexPointer = 0; + public final int index = indexPointer++; + private ArrayList postponedTasks = new ArrayList<>(); + + public DispatchQueueMainThreadSync(final String threadName) { + this(threadName, true); + } + + public DispatchQueueMainThreadSync(final String threadName, boolean start) { + setName(threadName); + if (start) { + start(); + } + } + + public void sendMessage(Message msg, int delay) { + checkThread(); + if (isRecycled) { + return; + } + if (!isRunning) { + postponedTasks.add(new PostponedTask(msg, delay)); + return; + } + if (delay <= 0) { + handler.sendMessage(msg); + } else { + handler.sendMessageDelayed(msg, delay); + } + } + + private void checkThread() { + if (BuildVars.DEBUG_PRIVATE_VERSION && Thread.currentThread() != ApplicationLoader.applicationHandler.getLooper().getThread()) { + throw new IllegalStateException("Disaptch thread"); + } + } + + public void cancelRunnable(Runnable runnable) { + checkThread(); + if (isRunning) { + handler.removeCallbacks(runnable); + } else { + for (int i = 0; i < postponedTasks.size(); i++) { + if (postponedTasks.get(i).runnable == runnable) { + postponedTasks.remove(i); + i--; + } + } + } + } + + public void cancelRunnables(Runnable[] runnables) { + checkThread(); + for (int i = 0; i < runnables.length; i++) { + cancelRunnable(runnables[i]); + } + } + + public boolean postRunnable(Runnable runnable) { + checkThread(); + lastTaskTime = SystemClock.elapsedRealtime(); + return postRunnable(runnable, 0); + } + + public boolean postRunnable(Runnable runnable, long delay) { + checkThread(); + if (isRecycled) { + return false; + } + if (!isRunning) { + postponedTasks.add(new PostponedTask(runnable, delay)); + return true; + } + if (delay <= 0) { + return handler.post(runnable); + } else { + return handler.postDelayed(runnable, delay); + } + } + + public void cleanupQueue() { + checkThread(); + postponedTasks.clear(); + handler.removeCallbacksAndMessages(null); + } + + public void handleMessage(Message inputMessage) { + + } + + public long getLastTaskTime() { + return lastTaskTime; + } + + public void recycle() { + checkThread(); + postRunnable(() -> { + handler.getLooper().quit(); + }); + isRecycled = true; + } + + @Override + public void run() { + Looper.prepare(); + handler = new Handler(Looper.myLooper(), msg -> { + DispatchQueueMainThreadSync.this.handleMessage(msg); + return true; + }); + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + isRunning = true; + for (int i = 0; i < postponedTasks.size(); i++) { + postponedTasks.get(i).run(); + } + postponedTasks.clear(); + } + }); + Looper.loop(); + } + + public boolean isReady() { + return isRunning; + } + + public Handler getHandler() { + return handler; + } + + private class PostponedTask { + Message message; + Runnable runnable; + long delay; + + public PostponedTask(Message msg, int delay) { + this.message = msg; + this.delay = delay; + } + + public PostponedTask(Runnable runnable, long delay) { + this.runnable = runnable; + this.delay = delay; + } + + public void run() { + if (runnable != null) { + postRunnable(runnable, delay); + } else { + sendMessage(message, (int) delay); + } + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueuePoolMainThreadSync.java b/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueuePoolMainThreadSync.java new file mode 100644 index 000000000..6f0a924ae --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/DispatchQueuePoolMainThreadSync.java @@ -0,0 +1,86 @@ +package org.telegram.messenger; + +import android.os.SystemClock; +import android.util.SparseIntArray; + +import androidx.annotation.UiThread; + +import java.util.LinkedList; + +public class DispatchQueuePoolMainThreadSync { + + private LinkedList queues = new LinkedList<>(); + private SparseIntArray busyQueuesMap = new SparseIntArray(); + private LinkedList busyQueues = new LinkedList<>(); + private int maxCount; + private int createdCount; + private int guid; + private int totalTasksCount; + private boolean cleanupScheduled; + + private Runnable cleanupRunnable = new Runnable() { + @Override + public void run() { + if (!queues.isEmpty()) { + long currentTime = SystemClock.elapsedRealtime(); + for (int a = 0, N = queues.size(); a < N; a++) { + DispatchQueueMainThreadSync queue = queues.get(a); + if (queue.getLastTaskTime() < currentTime - 30000) { + queue.recycle(); + queues.remove(a); + createdCount--; + a--; + N--; + } + } + } + if (!queues.isEmpty() || !busyQueues.isEmpty()) { + AndroidUtilities.runOnUIThread(this, 30000); + cleanupScheduled = true; + } else { + cleanupScheduled = false; + } + } + }; + + public DispatchQueuePoolMainThreadSync(int count) { + maxCount = count; + guid = Utilities.random.nextInt(); + } + + @UiThread + public void execute(Runnable runnable) { + DispatchQueueMainThreadSync queue; + if (!busyQueues.isEmpty() && (totalTasksCount / 2 <= busyQueues.size() || queues.isEmpty() && createdCount >= maxCount)) { + queue = busyQueues.remove(0); + } else if (queues.isEmpty()) { + queue = new DispatchQueueMainThreadSync("DispatchQueuePool" + guid + "_" + Utilities.random.nextInt()); + queue.setPriority(Thread.MAX_PRIORITY); + createdCount++; + } else { + queue = queues.remove(0); + } + if (!cleanupScheduled) { + AndroidUtilities.runOnUIThread(cleanupRunnable, 30000); + cleanupScheduled = true; + } + totalTasksCount++; + busyQueues.add(queue); + int count = busyQueuesMap.get(queue.index, 0); + busyQueuesMap.put(queue.index, count + 1); + queue.postRunnable(() -> { + runnable.run(); + AndroidUtilities.runOnUIThread(() -> { + totalTasksCount--; + int remainingTasksCount = busyQueuesMap.get(queue.index) - 1; + if (remainingTasksCount == 0) { + busyQueuesMap.delete(queue.index); + busyQueues.remove(queue); + queues.add(queue); + } else { + busyQueuesMap.put(queue.index, remainingTasksCount); + } + }); + }); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/DownloadController.java b/TMessagesProj/src/main/java/org/telegram/messenger/DownloadController.java index 315a22449..567088099 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/DownloadController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/DownloadController.java @@ -82,14 +82,14 @@ public class DownloadController extends BaseController implements NotificationCe public static class Preset { public int[] mask = new int[4]; - public int[] sizes = new int[4]; + public long[] sizes = new long[4]; public boolean preloadVideo; public boolean preloadMusic; public boolean lessCallData; public boolean enabled; public int maxVideoBitrate; - public Preset(int[] m, int p, int v, int f, boolean pv, boolean pm, boolean e, boolean l, int bitrate) { + public Preset(int[] m, long p, long v, long f, boolean pv, boolean pm, boolean e, boolean l, int bitrate) { System.arraycopy(m, 0, mask, 0, mask.length); sizes[PRESET_SIZE_NUM_PHOTO] = p; sizes[PRESET_SIZE_NUM_VIDEO] = v; @@ -258,9 +258,9 @@ public class DownloadController extends BaseController implements NotificationCe int[] mobileDataDownloadMask = new int[4]; int[] wifiDownloadMask = new int[4]; int[] roamingDownloadMask = new int[4]; - int[] mobileMaxFileSize = new int[7]; - int[] wifiMaxFileSize = new int[7]; - int[] roamingMaxFileSize = new int[7]; + long[] mobileMaxFileSize = new long[7]; + long[] wifiMaxFileSize = new long[7]; + long[] roamingMaxFileSize = new long[7]; for (int a = 0; a < 4; a++) { String key = "mobileDataDownloadMask" + (a == 0 ? "" : a); @@ -275,12 +275,12 @@ public class DownloadController extends BaseController implements NotificationCe } } - mobileMaxFileSize[2] = preferences.getInt("mobileMaxDownloadSize" + 2, mediumPreset.sizes[PRESET_SIZE_NUM_VIDEO]); - mobileMaxFileSize[3] = preferences.getInt("mobileMaxDownloadSize" + 3, mediumPreset.sizes[PRESET_SIZE_NUM_DOCUMENT]); - wifiMaxFileSize[2] = preferences.getInt("wifiMaxDownloadSize" + 2, highPreset.sizes[PRESET_SIZE_NUM_VIDEO]); - wifiMaxFileSize[3] = preferences.getInt("wifiMaxDownloadSize" + 3, highPreset.sizes[PRESET_SIZE_NUM_DOCUMENT]); - roamingMaxFileSize[2] = preferences.getInt("roamingMaxDownloadSize" + 2, lowPreset.sizes[PRESET_SIZE_NUM_VIDEO]); - roamingMaxFileSize[3] = preferences.getInt("roamingMaxDownloadSize" + 3, lowPreset.sizes[PRESET_SIZE_NUM_DOCUMENT]); + mobileMaxFileSize[2] = preferences.getLong("mobileMaxDownloadSize" + 2, mediumPreset.sizes[PRESET_SIZE_NUM_VIDEO]); + mobileMaxFileSize[3] = preferences.getLong("mobileMaxDownloadSize" + 3, mediumPreset.sizes[PRESET_SIZE_NUM_DOCUMENT]); + wifiMaxFileSize[2] = preferences.getLong("wifiMaxDownloadSize" + 2, highPreset.sizes[PRESET_SIZE_NUM_VIDEO]); + wifiMaxFileSize[3] = preferences.getLong("wifiMaxDownloadSize" + 3, highPreset.sizes[PRESET_SIZE_NUM_DOCUMENT]); + roamingMaxFileSize[2] = preferences.getLong("roamingMaxDownloadSize" + 2, lowPreset.sizes[PRESET_SIZE_NUM_VIDEO]); + roamingMaxFileSize[3] = preferences.getLong("roamingMaxDownloadSize" + 3, lowPreset.sizes[PRESET_SIZE_NUM_DOCUMENT]); boolean globalAutodownloadEnabled = preferences.getBoolean("globalAutodownloadEnabled", true); mobilePreset = new Preset(mobileDataDownloadMask, mediumPreset.sizes[PRESET_SIZE_NUM_PHOTO], mobileMaxFileSize[2], mobileMaxFileSize[3], true, true, globalAutodownloadEnabled, false, 100); @@ -582,7 +582,7 @@ public class DownloadController extends BaseController implements NotificationCe return canDownloadMedia(messageObject.messageOwner) == 1; } - public boolean canDownloadMedia(int type, int size) { + public boolean canDownloadMedia(int type, long size) { Preset preset; int networkType = ApplicationLoader.getAutodownloadNetworkType(); if (networkType == StatsController.TYPE_WIFI) { @@ -603,7 +603,7 @@ public class DownloadController extends BaseController implements NotificationCe preset = getCurrentMobilePreset(); } int mask = preset.mask[1]; - int maxSize = preset.sizes[typeToIndex(type)]; + long maxSize = preset.sizes[typeToIndex(type)]; return (type == AUTODOWNLOAD_TYPE_PHOTO || size != 0 && size <= maxSize) && (type == AUTODOWNLOAD_TYPE_AUDIO || (mask & type) != 0); } @@ -674,13 +674,13 @@ public class DownloadController extends BaseController implements NotificationCe preset = getCurrentMobilePreset(); } int mask = preset.mask[index]; - int maxSize; + long maxSize; if (type == AUTODOWNLOAD_TYPE_AUDIO) { maxSize = Math.max(512 * 1024, preset.sizes[typeToIndex(type)]); } else { maxSize = preset.sizes[typeToIndex(type)]; } - int size = MessageObject.getMessageSize(message); + long size = MessageObject.getMessageSize(message); if (isVideo && preset.preloadVideo && size > maxSize && maxSize > 2 * 1024 * 1024) { return (mask & type) != 0 ? 2 : 0; } else { @@ -768,7 +768,7 @@ public class DownloadController extends BaseController implements NotificationCe break; } } - req.settings.photo_size_max = photo ? preset.sizes[PRESET_SIZE_NUM_PHOTO] : 0; + req.settings.photo_size_max = photo ? (int) preset.sizes[PRESET_SIZE_NUM_PHOTO] : 0; req.settings.video_size_max = video ? preset.sizes[PRESET_SIZE_NUM_VIDEO] : 0; req.settings.file_size_max = document ? preset.sizes[PRESET_SIZE_NUM_DOCUMENT] : 0; getConnectionsManager().sendRequest(req, (response, error) -> { @@ -1114,7 +1114,7 @@ public class DownloadController extends BaseController implements NotificationCe boolean contains = false; for (int i = 0; i < recentDownloadingFiles.size(); i++) { - if (recentDownloadingFiles.get(i).getDocument().id == parentObject.getDocument().id) { + if (recentDownloadingFiles.get(i).getDocument() != null && recentDownloadingFiles.get(i).getDocument().id == parentObject.getDocument().id) { contains = true; break; } @@ -1122,7 +1122,7 @@ public class DownloadController extends BaseController implements NotificationCe if (!contains) { for (int i = 0; i < downloadingFiles.size(); i++) { - if (downloadingFiles.get(i).getDocument().id == parentObject.getDocument().id) { + if (downloadingFiles.get(i).getDocument() != null && downloadingFiles.get(i).getDocument().id == parentObject.getDocument().id) { contains = true; break; } @@ -1304,7 +1304,7 @@ public class DownloadController extends BaseController implements NotificationCe getMessagesStorage().getStorageQueue().postRunnable(() -> { ArrayList downloadingMessages = new ArrayList<>(); ArrayList recentlyDownloadedMessages = new ArrayList<>(); - + ArrayList newMessages = new ArrayList<>(); try { SQLiteCursor cursor2 = getMessagesStorage().getDatabase().queryFinalized("SELECT data, state FROM downloading_documents ORDER BY date DESC"); while (cursor2.next()) { @@ -1314,10 +1314,11 @@ public class DownloadController extends BaseController implements NotificationCe TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); if (message != null) { message.readAttachPath(data, UserConfig.getInstance(currentAccount).clientUserId); - MessageObject messageObject = new MessageObject(currentAccount, message, false, true); + MessageObject messageObject = new MessageObject(currentAccount, message, false, false); + newMessages.add(messageObject); if (state == 0) { downloadingMessages.add(messageObject); - } else if (messageObject.mediaExists) { + } else { recentlyDownloadedMessages.add(messageObject); } } @@ -1329,6 +1330,9 @@ public class DownloadController extends BaseController implements NotificationCe FileLog.e(e); } + getFileLoader().checkMediaExistance(downloadingMessages); + getFileLoader().checkMediaExistance(recentlyDownloadedMessages); + AndroidUtilities.runOnUIThread(() -> { downloadingFiles.clear(); downloadingFiles.addAll(downloadingMessages); @@ -1386,7 +1390,7 @@ public class DownloadController extends BaseController implements NotificationCe state.step(); try { - File file = FileLoader.getPathToMessage(messageObjects.get(i).messageOwner); + File file = FileLoader.getInstance(currentAccount).getPathToMessage(messageObjects.get(i).messageOwner); file.delete(); } catch (Exception e) { FileLog.e(e); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/Emoji.java b/TMessagesProj/src/main/java/org/telegram/messenger/Emoji.java index 2a51a43b1..beb37e394 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/Emoji.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/Emoji.java @@ -20,19 +20,30 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.text.Spannable; import android.text.Spanned; +import android.text.TextPaint; import android.text.TextUtils; import android.text.style.DynamicDrawableSpan; import android.text.style.ImageSpan; +import android.util.Pair; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Cells.ChatMessageCell; + import java.io.File; import java.io.InputStream; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Locale; +import java.util.concurrent.atomic.AtomicReference; public class Emoji { @@ -102,9 +113,6 @@ public class Emoji { imageResize = 1; } - String imageName; - File imageFile; - Bitmap bitmap = null; try { InputStream is = ApplicationLoader.applicationContext.getAssets().open("emoji/" + String.format(Locale.US, "%d_%d.png", page, page2)); @@ -226,6 +234,7 @@ public class Emoji { private boolean fullSize = false; private static Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG); private static Rect rect = new Rect(); + public int placeholderColor = 0x20000000; public EmojiDrawable(DrawableInfo i) { info = i; @@ -249,7 +258,9 @@ public class Emoji { public void draw(Canvas canvas) { if (!isLoaded()) { loadEmoji(info.page, info.page2); - canvas.drawRect(getBounds(), placeholderPaint); + placeholderPaint.setColor(placeholderColor); + Rect bounds = getBounds(); + canvas.drawCircle(bounds.centerX(), bounds.centerY(), bounds.width() * .4f, placeholderPaint); return; } @@ -312,37 +323,41 @@ public class Emoji { return false; } - public static CharSequence replaceEmoji(CharSequence cs, Paint.FontMetricsInt fontMetrics, int size, boolean createNew) { - return replaceEmoji(cs, fontMetrics, size, createNew, null); + public static class EmojiSpanRange { + public EmojiSpanRange(int start, int end, CharSequence code) { + this.start = start; + this.end = end; + this.code = code; + } + int start; + int end; + CharSequence code; } - public static CharSequence replaceEmoji(CharSequence cs, Paint.FontMetricsInt fontMetrics, int size, boolean createNew, int[] emojiOnly) { - if (SharedConfig.useSystemEmoji || cs == null || cs.length() == 0) { - return cs; - } - Spannable s; - if (!createNew && cs instanceof Spannable) { - s = (Spannable) cs; - } else { - s = Spannable.Factory.getInstance().newSpannable(cs.toString()); + public static boolean fullyConsistsOfEmojis(CharSequence cs) { + int[] emojiOnly = new int[1]; + parseEmojis(cs, emojiOnly); + return emojiOnly[0] > 0; + } + + public static ArrayList parseEmojis(CharSequence cs) { + return parseEmojis(cs, null); + } + + public static ArrayList parseEmojis(CharSequence cs, int[] emojiOnly) { + ArrayList emojis = new ArrayList<>(); + if (cs == null || cs.length() <= 0) { + return emojis; } long buf = 0; - int emojiCount = 0; char c; int startIndex = -1; int startLength = 0; int previousGoodIndex = 0; StringBuilder emojiCode = new StringBuilder(16); - StringBuilder addionalCode = new StringBuilder(2); - boolean nextIsSkinTone; - EmojiDrawable drawable; - EmojiSpan span; int length = cs.length(); boolean doneEmoji = false; - int nextValidLength; - boolean nextValid; boolean notOnlyEmoji; - //s.setSpansCount(emojiCount); try { for (int i = 0; i < length; i++) { @@ -455,29 +470,65 @@ public class Emoji { if (emojiOnly != null) { emojiOnly[0]++; } - CharSequence code = emojiCode.subSequence(0, emojiCode.length()); - drawable = Emoji.getEmojiDrawable(code); - if (drawable != null) { - span = new EmojiSpan(drawable, DynamicDrawableSpan.ALIGN_BOTTOM, size, fontMetrics); - s.setSpan(span, startIndex, startIndex + startLength, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - emojiCount++; - } + emojis.add(new EmojiSpanRange(startIndex, startIndex + startLength, emojiCode.subSequence(0, emojiCode.length()))); startLength = 0; startIndex = -1; emojiCode.setLength(0); doneEmoji = false; } - if ((Build.VERSION.SDK_INT < 23 || Build.VERSION.SDK_INT >= 29) && !BuildVars.DEBUG_PRIVATE_VERSION && emojiCount >= 50) { - break; - } } } catch (Exception e) { FileLog.e(e); - return cs; } if (emojiOnly != null && emojiCode.length() != 0) { emojiOnly[0] = 0; } + return emojis; + } + + public static CharSequence replaceEmoji(CharSequence cs, Paint.FontMetricsInt fontMetrics, int size, boolean createNew) { + return replaceEmoji(cs, fontMetrics, size, createNew, null, false, null); + } + + public static CharSequence replaceEmoji(CharSequence cs, Paint.FontMetricsInt fontMetrics, int size, boolean createNew, boolean allowAnimated, AtomicReference> viewRef) { + return replaceEmoji(cs, fontMetrics, size, createNew, null, allowAnimated, viewRef); + } + + public static CharSequence replaceEmoji(CharSequence cs, Paint.FontMetricsInt fontMetrics, int size, boolean createNew, int[] emojiOnly) { + return replaceEmoji(cs, fontMetrics, size, createNew, emojiOnly, false, null); + } + + public static CharSequence replaceEmoji(CharSequence cs, Paint.FontMetricsInt fontMetrics, int size, boolean createNew, int[] emojiOnly, boolean allowAnimated, AtomicReference> viewRef) { + allowAnimated = false; + if (SharedConfig.useSystemEmoji || cs == null || cs.length() == 0) { + return cs; + } + Spannable s; + if (!createNew && cs instanceof Spannable) { + s = (Spannable) cs; + } else { + s = Spannable.Factory.getInstance().newSpannable(cs.toString()); + } + ArrayList emojis = parseEmojis(s, emojiOnly); + + EmojiSpan span; + Drawable drawable; + for (int i = 0; i < emojis.size(); ++i) { + EmojiSpanRange emojiRange = emojis.get(i); + + try { + drawable = Emoji.getEmojiDrawable(emojiRange.code); + if (drawable != null) { + span = new EmojiSpan(drawable, DynamicDrawableSpan.ALIGN_BOTTOM, size, fontMetrics); + s.setSpan(span, emojiRange.start, emojiRange.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + } catch (Exception e) { + FileLog.e(e); + } + if ((Build.VERSION.SDK_INT < 23 || Build.VERSION.SDK_INT >= 29) && !BuildVars.DEBUG_PRIVATE_VERSION && (i + 1) >= 50) { + break; + } + } return s; } @@ -485,7 +536,7 @@ public class Emoji { private Paint.FontMetricsInt fontMetrics; private int size = AndroidUtilities.dp(20); - public EmojiSpan(EmojiDrawable d, int verticalAlignment, int s, Paint.FontMetricsInt original) { + public EmojiSpan(Drawable d, int verticalAlignment, int s, Paint.FontMetricsInt original) { super(d, verticalAlignment); fontMetrics = original; if (original != null) { @@ -555,6 +606,14 @@ public class Emoji { getDrawable().setAlpha(255); } } + + @Override + public void updateDrawState(TextPaint ds) { + if (getDrawable() instanceof EmojiDrawable) { + ((EmojiDrawable) getDrawable()).placeholderColor = 0x20ffffff & ds.getColor(); + } + super.updateDrawState(ds); + } } public static void addRecentEmoji(String code) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FeedWidgetService.java b/TMessagesProj/src/main/java/org/telegram/messenger/FeedWidgetService.java index 40a1ea679..f64f41f9f 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FeedWidgetService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FeedWidgetService.java @@ -14,6 +14,8 @@ import android.view.View; import android.widget.RemoteViews; import android.widget.RemoteViewsService; +import androidx.core.content.FileProvider; + import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; @@ -22,8 +24,6 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; -import androidx.core.content.FileProvider; - public class FeedWidgetService extends RemoteViewsService { @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { @@ -94,7 +94,7 @@ class FeedRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory, N rv.setViewVisibility(R.id.feed_widget_item_image, View.GONE); } else { TLRPC.PhotoSize size = FileLoader.getClosestPhotoSizeWithSize(messageObject.photoThumbs, AndroidUtilities.getPhotoSize()); - File f = FileLoader.getPathToAttach(size); + File f = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(size); if (f.exists()) { rv.setViewVisibility(R.id.feed_widget_item_image, View.VISIBLE); Uri uri = FileProvider.getUriForFile(mContext, BuildConfig.APPLICATION_ID + ".provider", f); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index 41fe9df64..6315ffc79 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -8,21 +8,19 @@ package org.telegram.messenger; -import android.util.SparseArray; -import android.util.SparseIntArray; - import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.NativeByteBuffer; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; +import java.io.File; import java.io.FileInputStream; import java.io.RandomAccessFile; -import java.io.File; import java.nio.channels.FileChannel; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.Scanner; import java.util.concurrent.CountDownLatch; import java.util.zip.GZIPInputStream; @@ -32,27 +30,27 @@ public class FileLoadOperation { protected static class RequestInfo { private int requestToken; - private int offset; + private long offset; private TLRPC.TL_upload_file response; private TLRPC.TL_upload_webFile responseWeb; private TLRPC.TL_upload_cdnFile responseCdn; } public static class Range { - private int start; - private int end; + private long start; + private long end; - private Range(int s, int e) { + private Range(long s, long e) { start = s; end = e; } } private static class PreloadRange { - private int fileOffset; - private int length; + private long fileOffset; + private long length; - private PreloadRange(int o, int l) { + private PreloadRange(long o, long l) { fileOffset = o; length = l; } @@ -65,21 +63,22 @@ public class FileLoadOperation { private final static int stateFailed = 2; private final static int stateFinished = 3; - private final static int downloadChunkSize = 1024 * 32; - private final static int downloadChunkSizeBig = 1024 * 128; - private final static int cdnChunkCheckSize = 1024 * 128; - private final static int maxDownloadRequests = BuildVars.DEBUG_PRIVATE_VERSION ? 8 : 4; - private final static int maxDownloadRequestsBig = BuildVars.DEBUG_PRIVATE_VERSION ? 8 : 4; - private final static int bigFileSizeFrom = 1024 * 1024; - private final static int maxCdnParts = (int) (FileLoader.MAX_FILE_SIZE / downloadChunkSizeBig); + private int downloadChunkSize = 1024 * 32; + private int downloadChunkSizeBig = 1024 * 128; + private int cdnChunkCheckSize = 1024 * 128; + private int maxDownloadRequests = 4; + private int maxDownloadRequestsBig = 4; + private int bigFileSizeFrom = 1024 * 1024; + private int maxCdnParts = (int) (FileLoader.DEFAULT_MAX_FILE_SIZE / downloadChunkSizeBig); private final static int preloadMaxBytes = 2 * 1024 * 1024; private String fileName; + private String storeFileName; private int currentQueueType; - private SparseArray preloadedBytesRanges; - private SparseIntArray requestedPreloadedBytesRanges; + private HashMap preloadedBytesRanges; + private HashMap requestedPreloadedBytesRanges; private RandomAccessFile preloadStream; private int preloadStreamFileOffset; private int totalPreloadedBytes; @@ -87,12 +86,12 @@ public class FileLoadOperation { private boolean preloadFinished; private File cacheFilePreload; private boolean supportsPreloading; - private int nextPreloadDownloadOffset; - private int nextAtomOffset; - private int foundMoovSize; - private int preloadNotRequestedBytesCount; + private long nextPreloadDownloadOffset; + private long nextAtomOffset; + private long foundMoovSize; + private long preloadNotRequestedBytesCount; private int moovFound; - private byte[] preloadTempBuffer = new byte[16]; + private byte[] preloadTempBuffer = new byte[24]; private int preloadTempBufferCount; private boolean nextPartWasPreloaded; @@ -103,7 +102,7 @@ public class FileLoadOperation { private volatile ArrayList notLoadedBytesRangesCopy; private ArrayList notRequestedBytesRanges; private ArrayList notCheckedCdnRanges; - private int requestedBytesCount; + private long requestedBytesCount; private int currentAccount; private boolean started; @@ -114,11 +113,11 @@ public class FileLoadOperation { private WebFile webFile; private volatile int state = stateIdle; private volatile boolean paused; - private int downloadedBytes; - private int totalBytesCount; - private int bytesCountPadding; - private int streamStartOffset; - private int streamPriorityStartOffset; + private long downloadedBytes; + private long totalBytesCount; + private long bytesCountPadding; + private long streamStartOffset; + private long streamPriorityStartOffset; private RequestInfo priorityRequestInfo; private FileLoadOperationDelegate delegate; private byte[] key; @@ -133,7 +132,7 @@ public class FileLoadOperation { public Object parentObject; - private SparseArray cdnHashes; + private HashMap cdnHashes; private boolean forceBig; @@ -172,14 +171,30 @@ public class FileLoadOperation { private boolean ungzip; private int currentType; + public FilePathDatabase.PathData pathSaveData; public interface FileLoadOperationDelegate { void didFinishLoadingFile(FileLoadOperation operation, File finalFile); void didFailedLoadingFile(FileLoadOperation operation, int state); void didChangedLoadProgress(FileLoadOperation operation, long uploadedSize, long totalSize); + void saveFilePath(FilePathDatabase.PathData pathSaveData, File cacheFileFinal); } - public FileLoadOperation(ImageLocation imageLocation, Object parent, String extension, int size) { + private void updateParams() { + if (MessagesController.getInstance(currentAccount).getfileExperimentalParams) { + downloadChunkSizeBig = 1024 * 512; + maxDownloadRequests = 8; + maxDownloadRequestsBig = 8; + } else { + downloadChunkSizeBig = 1024 * 128; + maxDownloadRequests = 4; + maxDownloadRequestsBig = 4; + } + maxCdnParts = (int) (FileLoader.DEFAULT_MAX_FILE_SIZE / downloadChunkSizeBig); + } + + public FileLoadOperation(ImageLocation imageLocation, Object parent, String extension, long size) { + updateParams(); parentObject = parent; forceBig = imageLocation.imageType == FileLoader.IMAGE_TYPE_ANIMATION; if (imageLocation.isEncrypted()) { @@ -251,6 +266,7 @@ public class FileLoadOperation { } public FileLoadOperation(SecureDocument secureDocument) { + updateParams(); location = new TLRPC.TL_inputSecureFileLocation(); location.id = secureDocument.secureFile.id; location.access_hash = secureDocument.secureFile.access_hash; @@ -262,6 +278,7 @@ public class FileLoadOperation { } public FileLoadOperation(int instance, WebFile webDocument) { + updateParams(); currentAccount = instance; webFile = webDocument; webLocation = webDocument.location; @@ -282,6 +299,7 @@ public class FileLoadOperation { } public FileLoadOperation(TLRPC.Document documentLocation, Object parent) { + updateParams(); try { parentObject = parent; if (documentLocation instanceof TLRPC.TL_documentEncrypted) { @@ -369,11 +387,12 @@ public class FileLoadOperation { return priority; } - public void setPaths(int instance, String name, int queueType, File store, File temp) { + public void setPaths(int instance, String name, int queueType, File store, File temp, String finalName) { storePath = store; tempPath = temp; currentAccount = instance; fileName = name; + storeFileName = finalName; currentQueueType = queueType; } @@ -389,7 +408,7 @@ public class FileLoadOperation { return currentType; } - private void removePart(ArrayList ranges, int start, int end) { + private void removePart(ArrayList ranges, long start, long end) { if (ranges == null || end < start) { return; } @@ -430,7 +449,7 @@ public class FileLoadOperation { } } - private void addPart(ArrayList ranges, int start, int end, boolean save) { + private void addPart(ArrayList ranges, long start, long end, boolean save) { if (ranges == null || end < start) { return; } @@ -471,18 +490,13 @@ public class FileLoadOperation { filePartsStream.writeInt(count); for (int a = 0; a < count; a++) { range = ranges.get(a); - filePartsStream.writeInt(range.start); - filePartsStream.writeInt(range.end); + filePartsStream.writeLong(range.start); + filePartsStream.writeLong(range.end); } } catch (Exception e) { FileLog.e(e); } - if (streamListeners != null) { - count = streamListeners.size(); - for (int a = 0; a < count; a++) { - streamListeners.get(a).newDataAvailable(); - } - } + notifyStreamListeners(); } else { if (BuildVars.LOGS_ENABLED) { FileLog.e(cacheFileFinal + " downloaded duplicate file part " + start + " - " + end); @@ -491,6 +505,15 @@ public class FileLoadOperation { } } + private void notifyStreamListeners() { + if (streamListeners != null) { + int count = streamListeners.size(); + for (int a = 0; a < count; a++) { + streamListeners.get(a).newDataAvailable(); + } + } + } + protected File getCacheFileFinal() { return cacheFileFinal; } @@ -514,10 +537,13 @@ public class FileLoadOperation { return result[0]; } - private int getDownloadedLengthFromOffsetInternal(ArrayList ranges, final int offset, final int length) { + private long getDownloadedLengthFromOffsetInternal(ArrayList ranges, final long offset, final long length) { if (ranges == null || state == stateFinished || ranges.isEmpty()) { - if (downloadedBytes == 0) { + if (state == stateFinished) { return length; + } + if (downloadedBytes == 0) { + return 0; } else { return Math.min(length, Math.max(downloadedBytes - offset, 0)); } @@ -525,7 +551,7 @@ public class FileLoadOperation { int count = ranges.size(); Range range; Range minRange = null; - int availableLength = length; + long availableLength = length; for (int a = 0; a < count; a++) { range = ranges.get(a); if (offset <= range.start && (minRange == null || range.start < minRange.start)) { @@ -554,9 +580,9 @@ public class FileLoadOperation { return progress + getDownloadedLengthFromOffsetInternal(ranges, (int) (totalBytesCount * progress), totalBytesCount) / (float) totalBytesCount; } - protected int[] getDownloadedLengthFromOffset(final int offset, final int length) { + protected long[] getDownloadedLengthFromOffset(final int offset, final long length) { final CountDownLatch countDownLatch = new CountDownLatch(1); - final int[] result = new int[2]; + final long[] result = new long[2]; Utilities.stageQueue.postRunnable(() -> { result[0] = getDownloadedLengthFromOffsetInternal(notLoadedBytesRanges, offset, length); if (state == stateFinished) { @@ -603,7 +629,8 @@ public class FileLoadOperation { return start(null, 0, false); } - public boolean start(final FileLoadOperationStream stream, final int streamOffset, final boolean steamPriority) { + public boolean start(final FileLoadOperationStream stream, final long streamOffset, final boolean steamPriority) { + updateParams(); if (currentDownloadChunkSize == 0) { currentDownloadChunkSize = totalBytesCount >= bigFileSizeFrom || forceBig ? downloadChunkSizeBig : downloadChunkSize; currentMaxDownloadRequests = totalBytesCount >= bigFileSizeFrom || forceBig ? maxDownloadRequestsBig : maxDownloadRequests; @@ -617,7 +644,7 @@ public class FileLoadOperation { streamListeners = new ArrayList<>(); } if (steamPriority) { - int offset = streamOffset / currentDownloadChunkSize * currentDownloadChunkSize; + long offset = (streamOffset / (long) currentDownloadChunkSize) * (long) currentDownloadChunkSize; if (priorityRequestInfo != null && priorityRequestInfo.offset != offset) { requestInfos.remove(priorityRequestInfo); requestedBytesCount -= currentDownloadChunkSize; @@ -677,13 +704,13 @@ public class FileLoadOperation { fileNameTemp = md5 + ".temp.enc"; fileNameFinal = md5 + "." + ext + ".enc"; if (key != null) { - fileNameIv = md5 + ".iv.enc"; + fileNameIv = md5 + "_64.iv.enc"; } } else { fileNameTemp = md5 + ".temp"; fileNameFinal = md5 + "." + ext; if (key != null) { - fileNameIv = md5 + ".iv"; + fileNameIv = md5 + "_64.iv"; } } } else { @@ -697,18 +724,18 @@ public class FileLoadOperation { fileNameTemp = location.volume_id + "_" + location.local_id + ".temp.enc"; fileNameFinal = location.volume_id + "_" + location.local_id + "." + ext + ".enc"; if (key != null) { - fileNameIv = location.volume_id + "_" + location.local_id + ".iv.enc"; + fileNameIv = location.volume_id + "_" + location.local_id + "_64.iv.enc"; } } else { fileNameTemp = location.volume_id + "_" + location.local_id + ".temp"; fileNameFinal = location.volume_id + "_" + location.local_id + "." + ext; if (key != null) { - fileNameIv = location.volume_id + "_" + location.local_id + ".iv"; + fileNameIv = location.volume_id + "_" + location.local_id + "_64.iv"; } if (notLoadedBytesRanges != null) { - fileNameParts = location.volume_id + "_" + location.local_id + ".pt"; + fileNameParts = location.volume_id + "_" + location.local_id + "_64.pt"; } - fileNamePreload = location.volume_id + "_" + location.local_id + ".preload"; + fileNamePreload = location.volume_id + "_" + location.local_id + "_64.preload"; } } else { if (datacenterId == 0 || location.id == 0) { @@ -719,18 +746,18 @@ public class FileLoadOperation { fileNameTemp = datacenterId + "_" + location.id + ".temp.enc"; fileNameFinal = datacenterId + "_" + location.id + ext + ".enc"; if (key != null) { - fileNameIv = datacenterId + "_" + location.id + ".iv.enc"; + fileNameIv = datacenterId + "_" + location.id + "_64.iv.enc"; } } else { fileNameTemp = datacenterId + "_" + location.id + ".temp"; fileNameFinal = datacenterId + "_" + location.id + ext; if (key != null) { - fileNameIv = datacenterId + "_" + location.id + ".iv"; + fileNameIv = datacenterId + "_" + location.id + "_64.iv"; } if (notLoadedBytesRanges != null) { - fileNameParts = datacenterId + "_" + location.id + ".pt"; + fileNameParts = datacenterId + "_" + location.id + "_64.pt"; } - fileNamePreload = datacenterId + "_" + location.id + ".preload"; + fileNamePreload = datacenterId + "_" + location.id + "_64.preload"; } } } @@ -743,7 +770,7 @@ public class FileLoadOperation { TLRPC.TL_theme theme = (TLRPC.TL_theme) parentObject; cacheFileFinal = new File(ApplicationLoader.getFilesDirFixed(), "remote" + theme.id + ".attheme"); } else { - cacheFileFinal = new File(storePath, fileNameFinal); + cacheFileFinal = new File(storePath, storeFileName); } boolean finalFileExist = cacheFileFinal.exists(); if (finalFileExist && (parentObject instanceof TLRPC.TL_theme || totalBytesCount != 0 && totalBytesCount != cacheFileFinal.length())) { @@ -793,51 +820,51 @@ public class FileLoadOperation { try { preloadStream = new RandomAccessFile(cacheFilePreload, "rws"); long len = preloadStream.length(); - int readOffset = 0; + long readOffset = 0; preloadStreamFileOffset = 1; if (len - readOffset > 1) { preloaded[0] = preloadStream.readByte() != 0; readOffset += 1; while (readOffset < len) { - if (len - readOffset < 4) { + if (len - readOffset < 8) { break; } - int offset = preloadStream.readInt(); - readOffset += 4; - if (len - readOffset < 4 || offset < 0 || offset > totalBytesCount) { + long offset = preloadStream.readLong(); + readOffset += 8; + if (len - readOffset < 8 || offset < 0 || offset > totalBytesCount) { break; } - int size = preloadStream.readInt(); - readOffset += 4; + long size = preloadStream.readLong(); + readOffset += 8; if (len - readOffset < size || size > currentDownloadChunkSize) { break; } PreloadRange range = new PreloadRange(readOffset, size); readOffset += size; preloadStream.seek(readOffset); - if (len - readOffset < 12) { + if (len - readOffset < 24) { break; } - foundMoovSize = preloadStream.readInt(); + foundMoovSize = preloadStream.readLong(); if (foundMoovSize != 0) { moovFound = nextPreloadDownloadOffset > totalBytesCount / 2 ? 2 : 1; preloadNotRequestedBytesCount = foundMoovSize; } - nextPreloadDownloadOffset = preloadStream.readInt(); - nextAtomOffset = preloadStream.readInt(); - readOffset += 12; + nextPreloadDownloadOffset = preloadStream.readLong(); + nextAtomOffset = preloadStream.readLong(); + readOffset += 24; if (preloadedBytesRanges == null) { - preloadedBytesRanges = new SparseArray<>(); + preloadedBytesRanges = new HashMap<>(); } if (requestedPreloadedBytesRanges == null) { - requestedPreloadedBytesRanges = new SparseIntArray(); + requestedPreloadedBytesRanges = new HashMap<>(); } preloadedBytesRanges.put(offset, range); requestedPreloadedBytesRanges.put(offset, 1); totalPreloadedBytes += size; - preloadStreamFileOffset += 20 + size; + preloadStreamFileOffset += 36 + size; } } preloadStream.seek(preloadStreamFileOffset); @@ -872,8 +899,8 @@ public class FileLoadOperation { int count = filePartsStream.readInt(); if (count <= len / 2) { for (int a = 0; a < count; a++) { - int start = filePartsStream.readInt(); - int end = filePartsStream.readInt(); + long start = filePartsStream.readLong(); + long end = filePartsStream.readLong(); notLoadedBytesRanges.add(new Range(start, end)); notRequestedBytesRanges.add(new Range(start, end)); } @@ -890,9 +917,9 @@ public class FileLoadOperation { } else { long totalDownloadedLen = cacheFileTemp.length(); if (fileNameIv != null && (totalDownloadedLen % currentDownloadChunkSize) != 0) { - requestedBytesCount = downloadedBytes = 0; + requestedBytesCount = 0; } else { - requestedBytesCount = downloadedBytes = ((int) cacheFileTemp.length()) / currentDownloadChunkSize * currentDownloadChunkSize; + requestedBytesCount = downloadedBytes = (cacheFileTemp.length()) / ((long) currentDownloadChunkSize) * currentDownloadChunkSize; } if (notLoadedBytesRanges != null && notLoadedBytesRanges.isEmpty()) { notLoadedBytesRanges.add(new Range(downloadedBytes, totalBytesCount)); @@ -928,8 +955,8 @@ public class FileLoadOperation { fiv = new RandomAccessFile(cacheIvTemp, "rws"); if (downloadedBytes != 0 && !newKeyGenerated) { long len = cacheIvTemp.length(); - if (len > 0 && len % 32 == 0) { - fiv.read(iv, 0, 32); + if (len > 0 && len % 64 == 0) { + fiv.read(iv, 0, 64); } else { requestedBytesCount = downloadedBytes = 0; } @@ -949,7 +976,7 @@ public class FileLoadOperation { fileOutputStream.seek(downloadedBytes); } } catch (Exception e) { - FileLog.e(e); + FileLog.e(e, false); } if (fileOutputStream == null) { onFail(true, 0); @@ -971,6 +998,9 @@ public class FileLoadOperation { started = true; try { onFinishLoadingFile(false); + if (pathSaveData != null) { + delegate.saveFilePath(pathSaveData, null); + } } catch (Exception e) { onFail(true, 0); } @@ -1173,6 +1203,7 @@ public class FileLoadOperation { return; } state = stateFinished; + notifyStreamListeners(); cleanup(); if (isPreloadVideoOperation) { preloadFinished = true; @@ -1221,6 +1252,21 @@ public class FileLoadOperation { } } else { try { + if (pathSaveData != null) { + cacheFileFinal = new File(storePath, storeFileName); + int count = 1; + while (cacheFileFinal.exists()) { + int lastDotIndex = storeFileName.lastIndexOf('.'); + String newFileName; + if (lastDotIndex > 0) { + newFileName = storeFileName.substring(0, lastDotIndex) + " (" + count + ")" + storeFileName.substring(lastDotIndex); + } else { + newFileName = storeFileName + " (" + count + ")"; + } + cacheFileFinal = new File(storePath, newFileName); + count++; + } + } renameResult = cacheFileTemp.renameTo(cacheFileFinal); } catch (Exception e) { renameResult = false; @@ -1249,6 +1295,9 @@ public class FileLoadOperation { onFail(false, 0); return; } + if (pathSaveData != null && cacheFileFinal.exists()) { + delegate.saveFilePath(pathSaveData, cacheFileFinal); + } } if (BuildVars.LOGS_ENABLED) { FileLog.d("finished downloading file to " + cacheFileFinal); @@ -1279,15 +1328,21 @@ public class FileLoadOperation { } } - private int findNextPreloadDownloadOffset(int atomOffset, int partOffset, NativeByteBuffer partBuffer) { + private long findNextPreloadDownloadOffset(long atomOffset, long partOffset, NativeByteBuffer partBuffer) { int partSize = partBuffer.limit(); while (true) { if (atomOffset < partOffset - (preloadTempBuffer != null ? 16 : 0) || atomOffset >= partOffset + partSize) { return 0; } if (atomOffset >= partOffset + partSize - 16) { - preloadTempBufferCount = partOffset + partSize - atomOffset; - partBuffer.position(partBuffer.limit() - preloadTempBufferCount); + long count = partOffset + partSize - atomOffset; + if (count > Integer.MAX_VALUE) { + throw new RuntimeException("!!!"); + } + preloadTempBufferCount = (int) count; + long position = partBuffer.limit() - preloadTempBufferCount; + + partBuffer.position((int) position); partBuffer.readBytes(preloadTempBuffer, 0, preloadTempBufferCount, false); return partOffset + partSize; } @@ -1296,10 +1351,15 @@ public class FileLoadOperation { partBuffer.readBytes(preloadTempBuffer, preloadTempBufferCount, 16 - preloadTempBufferCount, false); preloadTempBufferCount = 0; } else { - partBuffer.position(atomOffset - partOffset); + long count = atomOffset - partOffset; + if (count > Integer.MAX_VALUE) { + throw new RuntimeException("!!!"); + } + partBuffer.position((int) count); partBuffer.readBytes(preloadTempBuffer, 0, 16, false); } int atomSize = (((int) preloadTempBuffer[0] & 0xFF) << 24) + (((int) preloadTempBuffer[1] & 0xFF) << 16) + (((int) preloadTempBuffer[2] & 0xFF) << 8) + ((int) preloadTempBuffer[3] & 0xFF); + if (atomSize == 0) { return 0; } else if (atomSize == 1) { @@ -1315,7 +1375,7 @@ public class FileLoadOperation { } } - private void requestFileOffsets(int offset) { + private void requestFileOffsets(long offset) { if (requestingCdnOffsets) { return; } @@ -1331,7 +1391,7 @@ public class FileLoadOperation { TLRPC.Vector vector = (TLRPC.Vector) response; if (!vector.objects.isEmpty()) { if (cdnHashes == null) { - cdnHashes = new SparseArray<>(); + cdnHashes = new HashMap<>(); } for (int a = 0; a < vector.objects.size(); a++) { TLRPC.TL_fileHash hash = (TLRPC.TL_fileHash) vector.objects.get(a); @@ -1391,8 +1451,8 @@ public class FileLoadOperation { } int currentBytesSize = bytes.limit(); if (isCdn) { - int cdnCheckPart = requestInfo.offset / cdnChunkCheckSize; - int fileOffset = cdnCheckPart * cdnChunkCheckSize; + long cdnCheckPart = requestInfo.offset / cdnChunkCheckSize; + long fileOffset = cdnCheckPart * cdnChunkCheckSize; TLRPC.TL_fileHash hash = cdnHashes != null ? cdnHashes.get(fileOffset) : null; if (hash == null) { delayRequestInfo(requestInfo); @@ -1402,7 +1462,7 @@ public class FileLoadOperation { } if (requestInfo.responseCdn != null) { - int offset = requestInfo.offset / 16; + long offset = requestInfo.offset / 16; cdnIv[15] = (byte) (offset & 0xff); cdnIv[14] = (byte) ((offset >> 8) & 0xff); cdnIv[13] = (byte) ((offset >> 16) & 0xff); @@ -1412,16 +1472,16 @@ public class FileLoadOperation { boolean finishedDownloading; if (isPreloadVideoOperation) { - preloadStream.writeInt(requestInfo.offset); - preloadStream.writeInt(currentBytesSize); - preloadStreamFileOffset += 8; + preloadStream.writeLong(requestInfo.offset); + preloadStream.writeLong(currentBytesSize); + preloadStreamFileOffset += 16; FileChannel channel = preloadStream.getChannel(); channel.write(bytes.buffer); if (BuildVars.DEBUG_VERSION) { FileLog.d("save preload file part " + cacheFilePreload + " offset " + requestInfo.offset + " size " + currentBytesSize); } if (preloadedBytesRanges == null) { - preloadedBytesRanges = new SparseArray<>(); + preloadedBytesRanges = new HashMap<>(); } preloadedBytesRanges.put(requestInfo.offset, new PreloadRange(preloadStreamFileOffset, currentBytesSize)); @@ -1429,7 +1489,7 @@ public class FileLoadOperation { preloadStreamFileOffset += currentBytesSize; if (moovFound == 0) { - int offset = findNextPreloadDownloadOffset(nextAtomOffset, requestInfo.offset, bytes); + long offset = findNextPreloadDownloadOffset(nextAtomOffset, requestInfo.offset, bytes); if (offset < 0) { offset *= -1; nextPreloadDownloadOffset += currentDownloadChunkSize; @@ -1442,14 +1502,14 @@ public class FileLoadOperation { } nextPreloadDownloadOffset = -1; } else { - nextPreloadDownloadOffset = offset / currentDownloadChunkSize * currentDownloadChunkSize; + nextPreloadDownloadOffset += currentDownloadChunkSize; } nextAtomOffset = offset; } - preloadStream.writeInt(foundMoovSize); - preloadStream.writeInt(nextPreloadDownloadOffset); - preloadStream.writeInt(nextAtomOffset); - preloadStreamFileOffset += 12; + preloadStream.writeLong(foundMoovSize); + preloadStream.writeLong(nextPreloadDownloadOffset); + preloadStream.writeLong(nextAtomOffset); + preloadStreamFileOffset += 24; finishedDownloading = nextPreloadDownloadOffset == 0 || moovFound != 0 && foundMoovSize < 0 || totalPreloadedBytes > preloadMaxBytes || nextPreloadDownloadOffset >= totalBytesCount; if (finishedDownloading) { preloadStream.seek(0); @@ -1467,11 +1527,15 @@ public class FileLoadOperation { if (key != null) { Utilities.aesIgeEncryption(bytes.buffer, key, iv, false, true, 0, bytes.limit()); if (finishedDownloading && bytesCountPadding != 0) { - bytes.limit(bytes.limit() - bytesCountPadding); + long limit = bytes.limit() - bytesCountPadding; + if (BuildVars.DEBUG_VERSION && limit > Integer.MAX_VALUE) { + throw new RuntimeException("Out of limit" + limit); + } + bytes.limit((int) (limit)); } } if (encryptFile) { - int offset = requestInfo.offset / 16; + long offset = requestInfo.offset / 16; encryptIv[15] = (byte) (offset & 0xff); encryptIv[14] = (byte) ((offset >> 8) & 0xff); encryptIv[13] = (byte) ((offset >> 16) & 0xff); @@ -1489,7 +1553,7 @@ public class FileLoadOperation { channel.write(bytes.buffer); addPart(notLoadedBytesRanges, requestInfo.offset, requestInfo.offset + currentBytesSize, true); if (isCdn) { - int cdnCheckPart = requestInfo.offset / cdnChunkCheckSize; + long cdnCheckPart = requestInfo.offset / cdnChunkCheckSize; int size = notCheckedCdnRanges.size(); Range range; @@ -1502,8 +1566,8 @@ public class FileLoadOperation { } } if (!checked) { - int fileOffset = cdnCheckPart * cdnChunkCheckSize; - int availableSize = getDownloadedLengthFromOffsetInternal(notLoadedBytesRanges, fileOffset, cdnChunkCheckSize); + long fileOffset = cdnCheckPart * cdnChunkCheckSize; + long availableSize = getDownloadedLengthFromOffsetInternal(notLoadedBytesRanges, fileOffset, cdnChunkCheckSize); if (availableSize != 0 && (availableSize == cdnChunkCheckSize || totalBytesCount > 0 && availableSize == totalBytesCount - fileOffset || totalBytesCount <= 0 && finishedDownloading)) { TLRPC.TL_fileHash hash = cdnHashes.get(fileOffset); if (fileReadStream == null) { @@ -1511,10 +1575,13 @@ public class FileLoadOperation { fileReadStream = new RandomAccessFile(cacheFileTemp, "r"); } fileReadStream.seek(fileOffset); - fileReadStream.readFully(cdnCheckBytes, 0, availableSize); + if (BuildVars.DEBUG_VERSION && availableSize > Integer.MAX_VALUE) { + throw new RuntimeException("!!!"); + } + fileReadStream.readFully(cdnCheckBytes, 0, (int) availableSize); if (encryptFile) { - int offset = fileOffset / 16; + long offset = fileOffset / 16; encryptIv[15] = (byte) (offset & 0xff); encryptIv[14] = (byte) ((offset >> 8) & 0xff); encryptIv[13] = (byte) ((offset >> 16) & 0xff); @@ -1637,12 +1704,12 @@ public class FileLoadOperation { } private void clearOperaion(RequestInfo currentInfo, boolean preloadChanged) { - int minOffset = Integer.MAX_VALUE; + long minOffset = Long.MAX_VALUE; for (int a = 0; a < requestInfos.size(); a++) { RequestInfo info = requestInfos.get(a); minOffset = Math.min(info.offset, minOffset); if (isPreloadVideoOperation) { - requestedPreloadedBytesRanges.delete(info.offset); + requestedPreloadedBytesRanges.remove(info.offset); } else { removePart(notRequestedBytesRanges, info.offset, info.offset + currentDownloadChunkSize); } @@ -1657,7 +1724,7 @@ public class FileLoadOperation { for (int a = 0; a < delayedRequestInfos.size(); a++) { RequestInfo info = delayedRequestInfos.get(a); if (isPreloadVideoOperation) { - requestedPreloadedBytesRanges.delete(info.offset); + requestedPreloadedBytesRanges.remove(info.offset); } else { removePart(notRequestedBytesRanges, info.offset, info.offset + currentDownloadChunkSize); } @@ -1711,7 +1778,7 @@ public class FileLoadOperation { } for (int a = 0; a < count; a++) { - int downloadOffset; + long downloadOffset; if (isPreloadVideoOperation) { if (moovFound != 0 && preloadNotRequestedBytesCount <= 0) { return; @@ -1721,7 +1788,7 @@ public class FileLoadOperation { boolean found = false; int tries = preloadMaxBytes / currentDownloadChunkSize + 2; while (tries != 0) { - if (requestedPreloadedBytesRanges.get(downloadOffset, 0) == 0) { + if (!requestedPreloadedBytesRanges.containsKey(downloadOffset)) { found = true; break; } @@ -1741,7 +1808,7 @@ public class FileLoadOperation { downloadOffset = nextPreloadDownloadOffset; } if (requestedPreloadedBytesRanges == null) { - requestedPreloadedBytesRanges = new SparseIntArray(); + requestedPreloadedBytesRanges = new HashMap<>(); } requestedPreloadedBytesRanges.put(downloadOffset, 1); if (BuildVars.DEBUG_VERSION) { @@ -1750,27 +1817,27 @@ public class FileLoadOperation { preloadNotRequestedBytesCount -= currentDownloadChunkSize; } else { if (notRequestedBytesRanges != null) { - int sreamOffset = streamPriorityStartOffset != 0 ? streamPriorityStartOffset : streamStartOffset; + long streamOffset = streamPriorityStartOffset != 0 ? streamPriorityStartOffset : streamStartOffset; int size = notRequestedBytesRanges.size(); - int minStart = Integer.MAX_VALUE; - int minStreamStart = Integer.MAX_VALUE; + long minStart = Long.MAX_VALUE; + long minStreamStart = Long.MAX_VALUE; for (int b = 0; b < size; b++) { Range range = notRequestedBytesRanges.get(b); - if (sreamOffset != 0) { - if (range.start <= sreamOffset && range.end > sreamOffset) { - minStreamStart = sreamOffset; - minStart = Integer.MAX_VALUE; + if (streamOffset != 0) { + if (range.start <= streamOffset && range.end > streamOffset) { + minStreamStart = streamOffset; + minStart = Long.MAX_VALUE; break; } - if (sreamOffset < range.start && range.start < minStreamStart) { + if (streamOffset < range.start && range.start < minStreamStart) { minStreamStart = range.start; } } minStart = Math.min(minStart, range.start); } - if (minStreamStart != Integer.MAX_VALUE) { + if (minStreamStart != Long.MAX_VALUE) { downloadOffset = minStreamStart; - } else if (minStart != Integer.MAX_VALUE) { + } else if (minStart != Long.MAX_VALUE) { downloadOffset = minStart; } else { break; @@ -1801,7 +1868,7 @@ public class FileLoadOperation { if (webLocation != null) { TLRPC.TL_upload_getWebFile req = new TLRPC.TL_upload_getWebFile(); req.location = webLocation; - req.offset = downloadOffset; + req.offset = (int) downloadOffset; req.limit = currentDownloadChunkSize; request = req; } else { @@ -1823,7 +1890,10 @@ public class FileLoadOperation { if (range != null) { requestInfo.response = new TLRPC.TL_upload_file(); try { - NativeByteBuffer buffer = new NativeByteBuffer(range.length); + if (BuildVars.DEBUG_VERSION && range.length > Integer.MAX_VALUE) { + throw new RuntimeException("cast long to integer"); + } + NativeByteBuffer buffer = new NativeByteBuffer((int) range.length); preloadStream.seek(range.fileOffset); preloadStream.getChannel().read(buffer.buffer); buffer.buffer.position(0); @@ -1838,6 +1908,7 @@ public class FileLoadOperation { } } } + if (streamPriorityStartOffset != 0) { if (BuildVars.DEBUG_VERSION) { FileLog.d("frame get offset = " + streamPriorityStartOffset); @@ -1880,7 +1951,7 @@ public class FileLoadOperation { TLRPC.TL_upload_fileCdnRedirect res = (TLRPC.TL_upload_fileCdnRedirect) response; if (!res.file_hashes.isEmpty()) { if (cdnHashes == null) { - cdnHashes = new SparseArray<>(); + cdnHashes = new HashMap<>(); } for (int a1 = 0; a1 < res.file_hashes.size(); a1++) { TLRPC.TL_fileHash hash = res.file_hashes.get(a1); @@ -1919,7 +1990,7 @@ public class FileLoadOperation { TLRPC.Vector vector = (TLRPC.Vector) response1; if (!vector.objects.isEmpty()) { if (cdnHashes == null) { - cdnHashes = new SparseArray<>(); + cdnHashes = new HashMap<>(); } for (int a1 = 0; a1 < vector.objects.size(); a1++) { TLRPC.TL_fileHash hash = (TLRPC.TL_fileHash) vector.objects.get(a1); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java index 644668e13..51fd986f7 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java @@ -29,10 +29,15 @@ public class FileLoader extends BaseController { public interface FileLoaderDelegate { void fileUploadProgressChanged(FileUploadOperation operation, String location, long uploadedSize, long totalSize, boolean isEncrypted); + void fileDidUploaded(String location, TLRPC.InputFile inputFile, TLRPC.InputEncryptedFile inputEncryptedFile, byte[] key, byte[] iv, long totalFileSize); + void fileDidFailedUpload(String location, boolean isEncrypted); + void fileDidLoaded(String location, File finalFile, Object parentObject, int type); + void fileDidFailedLoad(String location, int state); + void fileLoadProgressChanged(FileLoadOperation operation, String location, long uploadedSize, long totalSize); } @@ -41,6 +46,7 @@ public class FileLoader extends BaseController { public static final int MEDIA_DIR_VIDEO = 2; public static final int MEDIA_DIR_DOCUMENT = 3; public static final int MEDIA_DIR_CACHE = 4; + public static final int MEDIA_DIR_FILES = 5; public static final int MEDIA_DIR_IMAGE_PUBLIC = 100; public static final int MEDIA_DIR_VIDEO_PUBLIC = 101; @@ -54,10 +60,15 @@ public class FileLoader extends BaseController { public static final int QUEUE_TYPE_FILE = 0; public static final int QUEUE_TYPE_IMAGE = 1; public static final int QUEUE_TYPE_AUDIO = 2; + public static final int QUEUE_TYPE_PRELOAD = 3; - public final static long MAX_FILE_SIZE = 1024L * 1024L * 2000L; + public final static long DEFAULT_MAX_FILE_SIZE = 1024L * 1024L * 2000L; + public final static long DEFAULT_MAX_FILE_SIZE_PREMIUM = DEFAULT_MAX_FILE_SIZE * 2L; + + public final static int PRELOAD_CACHE_TYPE = 11; private volatile static DispatchQueue fileLoaderQueue = new DispatchQueue("fileUploadQueue"); + private final FilePathDatabase filePathDatabase; private LinkedList uploadOperationQueue = new LinkedList<>(); private LinkedList uploadSmallOperationQueue = new LinkedList<>(); @@ -69,9 +80,11 @@ public class FileLoader extends BaseController { private SparseArray> fileLoadOperationQueues = new SparseArray<>(); private SparseArray> audioLoadOperationQueues = new SparseArray<>(); private SparseArray> imageLoadOperationQueues = new SparseArray<>(); + private SparseArray> preloadingLoadOperationQueues = new SparseArray<>(); private SparseIntArray fileLoadOperationsCount = new SparseIntArray(); private SparseIntArray audioLoadOperationsCount = new SparseIntArray(); private SparseIntArray imageLoadOperationsCount = new SparseIntArray(); + private SparseIntArray preloadingLoadOperationsCount = new SparseIntArray(); private ConcurrentHashMap loadOperationPaths = new ConcurrentHashMap<>(); private ArrayList activeFileLoadOperation = new ArrayList<>(); @@ -88,7 +101,8 @@ public class FileLoader extends BaseController { private int lastReferenceId; private ConcurrentHashMap parentObjectReferences = new ConcurrentHashMap<>(); - private static volatile FileLoader[] Instance = new FileLoader[UserConfig.MAX_ACCOUNT_COUNT]; + private static final FileLoader[] Instance = new FileLoader[UserConfig.MAX_ACCOUNT_COUNT]; + public static FileLoader getInstance(int num) { FileLoader localInstance = Instance[num]; if (localInstance == null) { @@ -104,6 +118,7 @@ public class FileLoader extends BaseController { public FileLoader(int instance) { super(instance); + filePathDatabase = new FilePathDatabase(instance); } public static void setMediaDirs(SparseArray dirs) { @@ -243,7 +258,7 @@ public class FileLoader extends BaseController { uploadFile(location, encrypted, small, 0, type, false); } - public void uploadFile(final String location, final boolean encrypted, final boolean small, final int estimatedSize, final int type, boolean forceSmallFile) { + public void uploadFile(final String location, final boolean encrypted, final boolean small, final long estimatedSize, final int type, boolean forceSmallFile) { if (location == null) { return; } @@ -257,7 +272,7 @@ public class FileLoader extends BaseController { return; } } - int esimated = estimatedSize; + long esimated = estimatedSize; if (esimated != 0) { Long finalSize = uploadSizes.get(location); if (finalSize != null) { @@ -371,7 +386,9 @@ public class FileLoader extends BaseController { private LinkedList getLoadOperationQueue(int datacenterId, int type) { SparseArray> queues; - if (type == QUEUE_TYPE_AUDIO) { + if (type == QUEUE_TYPE_PRELOAD) { + queues = preloadingLoadOperationQueues; + } else if (type == QUEUE_TYPE_AUDIO) { queues = audioLoadOperationQueues; } else if (type == QUEUE_TYPE_IMAGE) { queues = imageLoadOperationQueues; @@ -388,7 +405,9 @@ public class FileLoader extends BaseController { private SparseIntArray getLoadOperationCount(int type) { SparseArray> queues; - if (type == QUEUE_TYPE_AUDIO) { + if (type == QUEUE_TYPE_PRELOAD) { + return preloadingLoadOperationsCount; + } else if (type == QUEUE_TYPE_AUDIO) { return audioLoadOperationsCount; } else if (type == QUEUE_TYPE_IMAGE) { return imageLoadOperationsCount; @@ -416,15 +435,15 @@ public class FileLoader extends BaseController { int index = downloadQueue.indexOf(operation); if (index >= 0) { downloadQueue.remove(index); - if (operation.start()) { - count.put(datacenterId, count.get(datacenterId) + 1); - } - if (queueType == QUEUE_TYPE_FILE) { - if (operation.wasStarted() && !activeFileLoadOperation.contains(operation)) { - pauseCurrentFileLoadOperations(operation); - activeFileLoadOperation.add(operation); - } + if (operation.start()) { + count.put(datacenterId, count.get(datacenterId) + 1); + } + if (queueType == QUEUE_TYPE_FILE) { + if (operation.wasStarted() && !activeFileLoadOperation.contains(operation)) { + pauseCurrentFileLoadOperations(operation); + activeFileLoadOperation.add(operation); } + } } else { pauseCurrentFileLoadOperations(operation); operation.start(); @@ -585,7 +604,7 @@ public class FileLoader extends BaseController { } } - private FileLoadOperation loadFileInternal(final TLRPC.Document document, final SecureDocument secureDocument, final WebFile webDocument, TLRPC.TL_fileLocationToBeDeprecated location, final ImageLocation imageLocation, Object parentObject, final String locationExt, final int locationSize, final int priority, final FileLoadOperationStream stream, final int streamOffset, boolean streamPriority, final int cacheType) { + private FileLoadOperation loadFileInternal(final TLRPC.Document document, final SecureDocument secureDocument, final WebFile webDocument, TLRPC.TL_fileLocationToBeDeprecated location, final ImageLocation imageLocation, Object parentObject, final String locationExt, final long locationSize, final int priority, final FileLoadOperationStream stream, final int streamOffset, boolean streamPriority, final int cacheType) { String fileName; if (location != null) { fileName = getAttachFileName(location, locationExt); @@ -605,7 +624,7 @@ public class FileLoader extends BaseController { loadOperationPathsUI.put(fileName, true); } - if (document != null && parentObject instanceof MessageObject && ((MessageObject) parentObject).putInDownloadsStore) { + if (document != null && parentObject instanceof MessageObject && ((MessageObject) parentObject).putInDownloadsStore && !((MessageObject) parentObject).isAnyKindOfSticker()) { getDownloadController().startDownloadFile(document, (MessageObject) parentObject); } @@ -654,15 +673,22 @@ public class FileLoader extends BaseController { File tempDir = getDirectory(MEDIA_DIR_CACHE); File storeDir = tempDir; int type = MEDIA_DIR_CACHE; + long documentId = 0; + int dcId = 0; + String lastKnownPath = null; if (secureDocument != null) { operation = new FileLoadOperation(secureDocument); type = MEDIA_DIR_DOCUMENT; } else if (location != null) { + documentId = location.volume_id; + dcId = location.dc_id; operation = new FileLoadOperation(imageLocation, parentObject, locationExt, locationSize); type = MEDIA_DIR_IMAGE; } else if (document != null) { operation = new FileLoadOperation(document, parentObject); + documentId = document.id; + dcId = document.dc_id; if (MessageObject.isVoiceDocument(document)) { type = MEDIA_DIR_AUDIO; } else if (MessageObject.isVideoDocument(document)) { @@ -685,19 +711,67 @@ public class FileLoader extends BaseController { } } int queueType; - if (type == MEDIA_DIR_AUDIO) { + if (cacheType == PRELOAD_CACHE_TYPE) { + queueType = QUEUE_TYPE_PRELOAD; + } else if (type == MEDIA_DIR_AUDIO) { queueType = QUEUE_TYPE_AUDIO; - } else if (secureDocument != null || location != null && (imageLocation == null || imageLocation.imageType != IMAGE_TYPE_ANIMATION) || MessageObject.isImageWebDocument(webDocument)) { + } else if (secureDocument != null || location != null && (imageLocation == null || imageLocation.imageType != IMAGE_TYPE_ANIMATION) || MessageObject.isImageWebDocument(webDocument) || MessageObject.isStickerDocument(document)) { queueType = QUEUE_TYPE_IMAGE; } else { queueType = QUEUE_TYPE_FILE; } + + String storeFileName = fileName; + if (cacheType == 0 || cacheType == 10) { - storeDir = getDirectory(type); + if (documentId != 0) { + String path = getFileDatabase().getPath(documentId, dcId, type, true); + boolean customPath = false; + if (path != null) { + File file = new File(path); + if (file.exists()) { + customPath = true; + storeFileName = file.getName(); + storeDir = file.getParentFile(); + } + } + if (!customPath) { + storeFileName = fileName; + storeDir = getDirectory(type); + boolean saveCustomPath = false; + + + if ((type == MEDIA_DIR_IMAGE || type == MEDIA_DIR_VIDEO) && canSaveToPublicStorage(parentObject)) { + File newDir; + if (type == MEDIA_DIR_IMAGE) { + newDir = getDirectory(MEDIA_DIR_IMAGE_PUBLIC); + } else { + newDir = getDirectory(MEDIA_DIR_VIDEO_PUBLIC); + } + if (newDir != null) { + storeDir = newDir; + saveCustomPath = true; + } + } else if (!TextUtils.isEmpty(getDocumentFileName(document)) && canSaveAsFile(parentObject)) { + storeFileName = getDocumentFileName(document); + File newDir = getDirectory(MEDIA_DIR_FILES); + if (newDir != null) { + storeDir = newDir; + saveCustomPath = true; + } + } + + if (saveCustomPath) { + operation.pathSaveData = new FilePathDatabase.PathData(documentId, dcId, type); + } + } + } else { + storeDir = getDirectory(type); + } } else if (cacheType == 2) { operation.setEncryptFile(true); } - operation.setPaths(currentAccount, fileName, queueType, storeDir, tempDir); + operation.setPaths(currentAccount, fileName, queueType, storeDir, tempDir, storeFileName); if (cacheType == 10) { operation.setIsPreloadVideoOperation(true); } @@ -743,6 +817,11 @@ public class FileLoader extends BaseController { delegate.fileLoadProgressChanged(operation, fileName, uploadedSize, totalSize); } } + + @Override + public void saveFilePath(FilePathDatabase.PathData pathSaveData, File cacheFileFinal) { + getFileDatabase().putPath(pathSaveData.id, pathSaveData.dc, pathSaveData.type, cacheFileFinal != null ? cacheFileFinal.toString() : null); + } }; operation.setDelegate(fileLoadOperationDelegate); @@ -752,7 +831,15 @@ public class FileLoader extends BaseController { operation.setPriority(priority); boolean started; - if (queueType == QUEUE_TYPE_AUDIO) { + if (queueType == QUEUE_TYPE_PRELOAD) { + int maxCount = priority > 0 ? 6 : 2; + int count = preloadingLoadOperationsCount.get(datacenterId); + if (started = (stream != null || count < maxCount)) { + if (operation.start(stream, streamOffset, streamPriority)) { + preloadingLoadOperationsCount.put(datacenterId, count + 1); + } + } + } else if (queueType == QUEUE_TYPE_AUDIO) { int maxCount = priority > 0 ? 3 : 1; int count = audioLoadOperationsCount.get(datacenterId); if (started = (stream != null || count < maxCount)) { @@ -787,6 +874,42 @@ public class FileLoader extends BaseController { return operation; } + private boolean canSaveAsFile(Object parentObject) { + if (parentObject instanceof MessageObject) { + MessageObject messageObject = (MessageObject) parentObject; + if (!messageObject.isDocument()) { + return false; + } + return true; + } + return false; + } + + private boolean canSaveToPublicStorage(Object parentObject) { + if (SharedConfig.saveToGalleryFlags == 0 || BuildVars.NO_SCOPED_STORAGE) { + return false; + } + if (parentObject instanceof MessageObject) { + MessageObject messageObject = (MessageObject) parentObject; + int flag; + long dialogId = messageObject.getDialogId(); + if (dialogId >= 0) { + flag = SharedConfig.SAVE_TO_GALLERY_FLAG_PEER; + } else { + if (ChatObject.isChannelAndNotMegaGroup(getMessagesController().getChat(-dialogId))) { + flag = SharedConfig.SAVE_TO_GALLERY_FLAG_CHANNELS; + } else { + flag = SharedConfig.SAVE_TO_GALLERY_FLAG_GROUP; + } + } + + if ((SharedConfig.saveToGalleryFlags & flag) != 0) { + return true; + } + } + return false; + } + private void addOperationToQueue(FileLoadOperation operation, LinkedList queue) { int priority = operation.getPriority(); if (priority > 0) { @@ -804,7 +927,7 @@ public class FileLoader extends BaseController { } } - private void loadFile(final TLRPC.Document document, final SecureDocument secureDocument, final WebFile webDocument, TLRPC.TL_fileLocationToBeDeprecated location, final ImageLocation imageLocation, final Object parentObject, final String locationExt, final int locationSize, final int priority, final int cacheType) { + private void loadFile(final TLRPC.Document document, final SecureDocument secureDocument, final WebFile webDocument, TLRPC.TL_fileLocationToBeDeprecated location, final ImageLocation imageLocation, final Object parentObject, final String locationExt, final long locationSize, final int priority, final int cacheType) { String fileName; if (location != null) { fileName = getAttachFileName(location, locationExt); @@ -825,13 +948,13 @@ public class FileLoader extends BaseController { final CountDownLatch semaphore = new CountDownLatch(1); final FileLoadOperation[] result = new FileLoadOperation[1]; fileLoaderQueue.postRunnable(() -> { - result[0] = loadFileInternal(document, null, null, document == null && location != null ? location.location : null, location, parentObject, document == null && location != null ? "mp4" : null, document == null && location != null ? location.currentSize : 0, 1, stream, offset, priority, document == null ? 1 : 0); + result[0] = loadFileInternal(document, null, null, document == null && location != null ? location.location : null, location, parentObject, document == null && location != null ? "mp4" : null, document == null && location != null ? location.currentSize : 0, 1, stream, offset, priority, document == null ? 1 : 0); semaphore.countDown(); }); try { semaphore.await(); } catch (Exception e) { - FileLog.e(e); + FileLog.e(e, false); } return result[0]; } @@ -856,7 +979,9 @@ public class FileLoader extends BaseController { while (!queue.isEmpty()) { operation = queue.get(0); int maxCount; - if (queueType == QUEUE_TYPE_AUDIO) { + if (queueType == QUEUE_TYPE_PRELOAD) { + maxCount = operation.getPriority() != 0 ? 6 : 2; + } else if (queueType == QUEUE_TYPE_AUDIO) { maxCount = operation.getPriority() != 0 ? 3 : 1; } else if (queueType == QUEUE_TYPE_IMAGE) { maxCount = operation.getPriority() != 0 ? 6 : 2; @@ -932,7 +1057,11 @@ public class FileLoader extends BaseController { return ""; } - public static File getPathToMessage(TLRPC.Message message) { + public File getPathToMessage(TLRPC.Message message) { + return getPathToMessage(message, true); + } + + public File getPathToMessage(TLRPC.Message message, boolean useFileDatabaseQueue) { if (message == null) { return new File(""); } @@ -942,73 +1071,89 @@ public class FileLoader extends BaseController { if (sizes.size() > 0) { TLRPC.PhotoSize sizeFull = getClosestPhotoSizeWithSize(sizes, AndroidUtilities.getPhotoSize()); if (sizeFull != null) { - return getPathToAttach(sizeFull); + return getPathToAttach(sizeFull, null, false, useFileDatabaseQueue); } } } } else { if (message.media instanceof TLRPC.TL_messageMediaDocument) { - return getPathToAttach(message.media.document, message.media.ttl_seconds != 0); + return getPathToAttach(message.media.document, null, message.media.ttl_seconds != 0, useFileDatabaseQueue); } else if (message.media instanceof TLRPC.TL_messageMediaPhoto) { ArrayList sizes = message.media.photo.sizes; if (sizes.size() > 0) { TLRPC.PhotoSize sizeFull = getClosestPhotoSizeWithSize(sizes, AndroidUtilities.getPhotoSize(), false, null, true); if (sizeFull != null) { - return getPathToAttach(sizeFull, message.media.ttl_seconds != 0); + return getPathToAttach(sizeFull, null, message.media.ttl_seconds != 0, useFileDatabaseQueue); } } } else if (message.media instanceof TLRPC.TL_messageMediaWebPage) { if (message.media.webpage.document != null) { - return getPathToAttach(message.media.webpage.document); + return getPathToAttach(message.media.webpage.document, null, false, useFileDatabaseQueue); } else if (message.media.webpage.photo != null) { ArrayList sizes = message.media.webpage.photo.sizes; if (sizes.size() > 0) { TLRPC.PhotoSize sizeFull = getClosestPhotoSizeWithSize(sizes, AndroidUtilities.getPhotoSize()); if (sizeFull != null) { - return getPathToAttach(sizeFull); + return getPathToAttach(sizeFull, null, false, useFileDatabaseQueue); } } } } else if (message.media instanceof TLRPC.TL_messageMediaInvoice) { - return getPathToAttach(((TLRPC.TL_messageMediaInvoice) message.media).photo, true); + return getPathToAttach(((TLRPC.TL_messageMediaInvoice) message.media).photo, null, true, useFileDatabaseQueue); } } return new File(""); } - public static File getPathToAttach(TLObject attach) { + public File getPathToAttach(TLObject attach) { return getPathToAttach(attach, null, false); } - public static File getPathToAttach(TLObject attach, boolean forceCache) { + public File getPathToAttach(TLObject attach, boolean forceCache) { return getPathToAttach(attach, null, forceCache); } - public static File getPathToAttach(TLObject attach, String ext, boolean forceCache) { - return getPathToAttach(attach, null, ext, forceCache); + public File getPathToAttach(TLObject attach, String ext, boolean forceCache) { + return getPathToAttach(attach, null, ext, forceCache, true); } - public static File getPathToAttach(TLObject attach, String size, String ext, boolean forceCache) { + public File getPathToAttach(TLObject attach, String ext, boolean forceCache, boolean useFileDatabaseQueue) { + return getPathToAttach(attach, null, ext, forceCache, useFileDatabaseQueue); + } + + /** + * Return real file name. Used before file.exist() + */ + public File getPathToAttach(TLObject attach, String size, String ext, boolean forceCache, boolean useFileDatabaseQueue) { File dir = null; + long documentId = 0; + int dcId = 0; + int type = 0; if (forceCache) { dir = getDirectory(MEDIA_DIR_CACHE); } else { if (attach instanceof TLRPC.Document) { TLRPC.Document document = (TLRPC.Document) attach; + if (!TextUtils.isEmpty(document.localPath)) { + return new File(document.localPath); + } if (document.key != null) { - dir = getDirectory(MEDIA_DIR_CACHE); + type = MEDIA_DIR_CACHE; } else { if (MessageObject.isVoiceDocument(document)) { - dir = getDirectory(MEDIA_DIR_AUDIO); + type = MEDIA_DIR_AUDIO; } else if (MessageObject.isVideoDocument(document)) { - dir = getDirectory(MEDIA_DIR_VIDEO); + type = MEDIA_DIR_VIDEO; } else { - dir = getDirectory(MEDIA_DIR_DOCUMENT); + type = MEDIA_DIR_DOCUMENT; } } + documentId = document.id; + dcId = document.dc_id; + dir = getDirectory(type); } else if (attach instanceof TLRPC.Photo) { TLRPC.PhotoSize photoSize = getClosestPhotoSizeWithSize(((TLRPC.Photo) attach).sizes, AndroidUtilities.getPhotoSize()); - return getPathToAttach(photoSize, ext, false); + return getPathToAttach(photoSize, ext, false, useFileDatabaseQueue); } else if (attach instanceof TLRPC.PhotoSize) { TLRPC.PhotoSize photoSize = (TLRPC.PhotoSize) attach; if (photoSize instanceof TLRPC.TL_photoStrippedSize || photoSize instanceof TLRPC.TL_photoPathSize) { @@ -1030,7 +1175,9 @@ public class FileLoader extends BaseController { if (fileLocation.key != null || fileLocation.volume_id == Integer.MIN_VALUE && fileLocation.local_id < 0) { dir = getDirectory(MEDIA_DIR_CACHE); } else { - dir = getDirectory(MEDIA_DIR_IMAGE); + documentId = fileLocation.volume_id; + dcId = fileLocation.dc_id; + dir = getDirectory(type = MEDIA_DIR_IMAGE); } } else if (attach instanceof TLRPC.UserProfilePhoto || attach instanceof TLRPC.ChatPhoto) { if (size == null) { @@ -1059,9 +1206,19 @@ public class FileLoader extends BaseController { if (dir == null) { return new File(""); } + if (documentId != 0) { + String path = getInstance(UserConfig.selectedAccount).getFileDatabase().getPath(documentId, dcId, type, useFileDatabaseQueue); + if (path != null) { + return new File(path); + } + } return new File(dir, getAttachFileName(attach, ext)); } + private FilePathDatabase getFileDatabase() { + return filePathDatabase; + } + public static TLRPC.PhotoSize getClosestPhotoSizeWithSize(ArrayList sizes, int side) { return getClosestPhotoSizeWithSize(sizes, side, false); } @@ -1203,6 +1360,9 @@ public class FileLoader extends BaseController { return getAttachFileName(attach, null, ext); } + /** + * file hash. contains docId, dcId, ext. + */ public static String getAttachFileName(TLObject attach, String size, String ext) { if (attach instanceof TLRPC.Document) { TLRPC.Document document = (TLRPC.Document) attach; @@ -1422,7 +1582,7 @@ public class FileLoader extends BaseController { public void checkCurrentDownloadsFiles() { ArrayList messagesToRemove = new ArrayList<>(); ArrayList messageObjects = new ArrayList<>(getDownloadController().recentDownloadingFiles); - for (int i = 0 ; i < messageObjects.size(); i++) { + for (int i = 0; i < messageObjects.size(); i++) { messageObjects.get(i).checkMediaExistance(); if (messageObjects.get(i).mediaExists) { messagesToRemove.add(messageObjects.get(i)); @@ -1434,10 +1594,28 @@ public class FileLoader extends BaseController { getNotificationCenter().postNotificationName(NotificationCenter.onDownloadingFilesChanged); }); } + } + /** + * optimezed for bulk messages + */ + public void checkMediaExistance(ArrayList messageObjects) { + getFileDatabase().checkMediaExistance(messageObjects); + } + + public interface FileResolver { + File getFile(); } public void clearRecentDownloadedFiles() { getDownloadController().clearRecentDownloadedFiles(); } + + public static boolean checkUploadFileSize(int currentAccount, long length) { + boolean premium = AccountInstance.getInstance(currentAccount).getUserConfig().isPremium(); + if (length < DEFAULT_MAX_FILE_SIZE || (length < DEFAULT_MAX_FILE_SIZE_PREMIUM && premium)) { + return true; + } + return false; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FilePathDatabase.java b/TMessagesProj/src/main/java/org/telegram/messenger/FilePathDatabase.java new file mode 100644 index 000000000..5abf4fcf7 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FilePathDatabase.java @@ -0,0 +1,229 @@ +package org.telegram.messenger; + +import android.os.Looper; + +import org.telegram.SQLite.SQLiteCursor; +import org.telegram.SQLite.SQLiteDatabase; +import org.telegram.SQLite.SQLiteException; +import org.telegram.SQLite.SQLitePreparedStatement; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.concurrent.CountDownLatch; + +public class FilePathDatabase { + + private final DispatchQueue dispatchQueue; + private final int currentAccount; + + private SQLiteDatabase database; + private File cacheFile; + private File walCacheFile; + private File shmCacheFile; + + private final static int LAST_DB_VERSION = 1; + + private final static String DATABASE_NAME = "file_to_path"; + private final static String DATABASE_BACKUP_NAME = "file_to_path_backup"; + + public FilePathDatabase(int currentAccount) { + this.currentAccount = currentAccount; + dispatchQueue = new DispatchQueue("files_database_queue_" + currentAccount); + dispatchQueue.postRunnable(() -> { + createDatabase(false); + }); + } + + public void createDatabase(boolean fromBackup) { + File filesDir = ApplicationLoader.getFilesDirFixed(); + if (currentAccount != 0) { + filesDir = new File(filesDir, "account" + currentAccount + "/"); + filesDir.mkdirs(); + } + cacheFile = new File(filesDir, DATABASE_NAME + ".db"); + shmCacheFile = new File(filesDir, DATABASE_NAME + ".db-shm"); + + + boolean createTable = false; + + if (!cacheFile.exists()) { + createTable = true; + } + try { + database = new SQLiteDatabase(cacheFile.getPath()); + database.executeFast("PRAGMA secure_delete = ON").stepThis().dispose(); + database.executeFast("PRAGMA temp_store = MEMORY").stepThis().dispose(); + + if (createTable) { + database.executeFast("CREATE TABLE paths(document_id INTEGER, dc_id INTEGER, type INTEGER, path TEXT, PRIMARY KEY(document_id, dc_id, type));").stepThis().dispose(); + database.executeFast("PRAGMA user_version = " + LAST_DB_VERSION).stepThis().dispose(); + } else { + //migration + } + if (!fromBackup) { + createBackup(); + } + FileLog.d("files db created from_backup= " + fromBackup); + } catch (Exception e) { + if (!fromBackup && restoreBackup()) { + createDatabase(true); + return; + } + if (BuildVars.DEBUG_VERSION) { + throw new RuntimeException(e); + } + } + } + + private void createBackup() { + File filesDir = ApplicationLoader.getFilesDirFixed(); + if (currentAccount != 0) { + filesDir = new File(filesDir, "account" + currentAccount + "/"); + filesDir.mkdirs(); + } + File backupCacheFile = new File(filesDir, DATABASE_BACKUP_NAME + ".db"); + try { + AndroidUtilities.copyFile(cacheFile, backupCacheFile); + FileLog.d("file db backup created " + backupCacheFile.getAbsolutePath()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private boolean restoreBackup() { + File filesDir = ApplicationLoader.getFilesDirFixed(); + if (currentAccount != 0) { + filesDir = new File(filesDir, "account" + currentAccount + "/"); + filesDir.mkdirs(); + } + File backupCacheFile = new File(filesDir, DATABASE_BACKUP_NAME + ".db"); + if (!backupCacheFile.exists()) { + return false; + } + try { + return AndroidUtilities.copyFile(backupCacheFile, cacheFile); + } catch (IOException e) { + e.printStackTrace(); + } + return false; + } + + public String getPath(long documentId, int dc, int type, boolean useQueue) { + if (useQueue) { + if (BuildVars.DEBUG_VERSION) { + if (dispatchQueue.getHandler() != null && Thread.currentThread() == dispatchQueue.getHandler().getLooper().getThread()) { + throw new RuntimeException("Error, lead to infinity loop"); + } + } + + CountDownLatch syncLatch = new CountDownLatch(1); + String[] res = new String[1]; + long time = System.currentTimeMillis(); + + dispatchQueue.postRunnable(() -> { + SQLiteCursor cursor = null; + try { + cursor = database.queryFinalized("SELECT path FROM paths WHERE document_id = " + documentId + " AND dc_id = " + dc + " AND type = " + type); + if (cursor.next()) { + res[0] = cursor.stringValue(0); + } + cursor.dispose(); + } catch (SQLiteException e) { + throw new RuntimeException(e); + } + syncLatch.countDown(); + }); + try { + syncLatch.await(); + } catch (Exception ignore) { + } + return res[0]; + } else { + SQLiteCursor cursor = null; + String res = null; + try { + cursor = database.queryFinalized("SELECT path FROM paths WHERE document_id = " + documentId + " AND dc_id = " + dc + " AND type = " + type); + if (cursor.next()) { + res = cursor.stringValue(0); + } + cursor.dispose(); + } catch (SQLiteException e) { + if (BuildVars.DEBUG_VERSION) { + throw new RuntimeException(e); + } + } + return res; + } + } + + public void putPath(long id, int dc, int type, String path) { + dispatchQueue.postRunnable(() -> { + SQLitePreparedStatement state = null; + try { + if (path != null) { + state = database.executeFast("REPLACE INTO paths VALUES(?, ?, ?, ?)"); + state.requery(); + state.bindLong(1, id); + state.bindInteger(2, dc); + state.bindInteger(3, type); + state.bindString(4, path); + state.step(); + } else { + database.executeFast("DELETE FROM paths WHERE document_id = " + id + " AND dc_id = " + dc + " AND type = " + type).stepThis().dispose(); + } + } catch (SQLiteException e) { + if (BuildVars.DEBUG_VERSION) { + throw new RuntimeException(e); + } + } + }); + } + + public void checkMediaExistance(ArrayList messageObjects) { + if (messageObjects.isEmpty()) { + return; + } + ArrayList arrayListFinal = new ArrayList<>(messageObjects); + + CountDownLatch syncLatch = new CountDownLatch(1); + long time = System.currentTimeMillis(); + dispatchQueue.postRunnable(() -> { + try { + for (int i = 0; i < arrayListFinal.size(); i++) { + MessageObject messageObject = arrayListFinal.get(i); + messageObject.checkMediaExistance(false); + } + } catch (Exception e) { + e.printStackTrace(); + } + syncLatch.countDown(); + }); + + try { + syncLatch.await(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + FileLog.d("checkMediaExistance size=" + messageObjects.size() + " time=" + (System.currentTimeMillis() - time)); + + if (BuildVars.DEBUG_VERSION) { + if (Thread.currentThread() == Looper.getMainLooper().getThread()) { + FileLog.e(new Exception("warning, not allowed in main thread")); + } + } + } + + public static class PathData { + public final long id; + public final int dc; + public final int type; + + public PathData(long documentId, int dcId, int type) { + this.id = documentId; + this.dc = dcId; + this.type = type; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileRefController.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileRefController.java index 439548bfb..02a45a0c2 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileRefController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileRefController.java @@ -69,7 +69,16 @@ public class FileRefController extends BaseController { } public static String getKeyForParentObject(Object parentObject) { - if (parentObject instanceof MessageObject) { + if (parentObject instanceof TLRPC.TL_availableReaction) { + return "available_reaction_" + ((TLRPC.TL_availableReaction) parentObject).reaction; + } else if (parentObject instanceof TLRPC.BotInfo) { + TLRPC.BotInfo botInfo = (TLRPC.BotInfo) parentObject; + return "bot_info_" + botInfo.user_id; + } else if (parentObject instanceof TLRPC.TL_attachMenuBot) { + TLRPC.TL_attachMenuBot bot = (TLRPC.TL_attachMenuBot) parentObject; + long botId = bot.bot_id; + return "attach_menu_bot_" + botId; + } else if (parentObject instanceof MessageObject) { MessageObject messageObject = (MessageObject) parentObject; long channelId = messageObject.getChannelId(); return "message" + messageObject.getRealId() + "_" + channelId + "_" + messageObject.scheduled; @@ -308,7 +317,21 @@ public class FileRefController extends BaseController { } private void requestReferenceFromServer(Object parentObject, String locationKey, String parentKey, Object[] args) { - if (parentObject instanceof MessageObject) { + if (parentObject instanceof TLRPC.TL_availableReaction) { + TLRPC.TL_messages_getAvailableReactions req = new TLRPC.TL_messages_getAvailableReactions(); + req.hash = 0; + getConnectionsManager().sendRequest(req, (response, error) -> onRequestComplete(locationKey, parentKey, response, true, false)); + } else if (parentObject instanceof TLRPC.BotInfo) { + TLRPC.BotInfo botInfo = (TLRPC.BotInfo) parentObject; + TLRPC.TL_users_getFullUser req = new TLRPC.TL_users_getFullUser(); + req.id = getMessagesController().getInputUser(botInfo.user_id); + getConnectionsManager().sendRequest(req, (response, error) -> onRequestComplete(locationKey, parentKey, response, true, false)); + } else if (parentObject instanceof TLRPC.TL_attachMenuBot) { + TLRPC.TL_attachMenuBot bot = (TLRPC.TL_attachMenuBot) parentObject; + TLRPC.TL_messages_getAttachMenuBot req = new TLRPC.TL_messages_getAttachMenuBot(); + req.bot = getMessagesController().getInputUser(bot.bot_id); + getConnectionsManager().sendRequest(req, (response, error) -> onRequestComplete(locationKey, parentKey, response, true, false)); + } else if (parentObject instanceof MessageObject) { MessageObject messageObject = (MessageObject) parentObject; long channelId = messageObject.getChannelId(); if (messageObject.scheduled) { @@ -725,12 +748,84 @@ public class FileRefController extends BaseController { } } if (result == null) { - getMessagesStorage().replaceMessageIfExists(res.messages.get(0), res.users, res.chats,true); + getMessagesStorage().replaceMessageIfExists(res.messages.get(0), res.users, res.chats, true); if (BuildVars.DEBUG_VERSION) { FileLog.d("file ref not found in messages, replacing message"); } } } + } else if (response instanceof TLRPC.TL_messages_availableReactions) { + TLRPC.TL_messages_availableReactions availableReactions = (TLRPC.TL_messages_availableReactions) response; + getMediaDataController().processLoadedReactions(availableReactions.reactions, availableReactions.hash, (int) (System.currentTimeMillis() / 1000), false); + + for (TLRPC.TL_availableReaction reaction : availableReactions.reactions) { + result = getFileReference(reaction.static_icon, requester.location, needReplacement, locationReplacement); + if (result != null) { + break; + } + result = getFileReference(reaction.appear_animation, requester.location, needReplacement, locationReplacement); + if (result != null) { + break; + } + result = getFileReference(reaction.select_animation, requester.location, needReplacement, locationReplacement); + if (result != null) { + break; + } + result = getFileReference(reaction.activate_animation, requester.location, needReplacement, locationReplacement); + if (result != null) { + break; + } + result = getFileReference(reaction.effect_animation, requester.location, needReplacement, locationReplacement); + if (result != null) { + break; + } + result = getFileReference(reaction.around_animation, requester.location, needReplacement, locationReplacement); + if (result != null) { + break; + } + result = getFileReference(reaction.center_icon, requester.location, needReplacement, locationReplacement); + if (result != null) { + break; + } + } + } else if (response instanceof TLRPC.TL_users_userFull) { + TLRPC.TL_users_userFull usersFull = (TLRPC.TL_users_userFull) response; + getMessagesController().putUsers(usersFull.users, false); + getMessagesController().putChats(usersFull.chats, false); + TLRPC.UserFull userFull = usersFull.full_user; + TLRPC.BotInfo botInfo = userFull.bot_info; + if (botInfo != null) { + getMessagesStorage().updateUserInfo(userFull, true); + + result = getFileReference(botInfo.description_document, requester.location, needReplacement, locationReplacement); + + if (result != null) { + continue; + } + + result = getFileReference(botInfo.description_photo, requester.location, needReplacement, locationReplacement); + } + } else if (response instanceof TLRPC.TL_attachMenuBotsBot) { + TLRPC.TL_attachMenuBot bot = ((TLRPC.TL_attachMenuBotsBot) response).bot; + for (TLRPC.TL_attachMenuBotIcon icon : bot.icons) { + result = getFileReference(icon.icon, requester.location, needReplacement, locationReplacement); + if (result != null) { + break; + } + } + if (cache) { + TLRPC.TL_attachMenuBots bots = getMediaDataController().getAttachMenuBots(); + ArrayList newBotsList = new ArrayList<>(bots.bots); + for (int i = 0; i < newBotsList.size(); i++) { + TLRPC.TL_attachMenuBot wasBot = newBotsList.get(i); + if (wasBot.bot_id == bot.bot_id) { + newBotsList.set(i, bot); + break; + } + } + bots.bots = newBotsList; + getMediaDataController().processLoadedMenuBots(bots, bots.hash, (int) (System.currentTimeMillis() / 1000), false); + } } else if (response instanceof TLRPC.TL_help_appUpdate) { TLRPC.TL_help_appUpdate appUpdate = (TLRPC.TL_help_appUpdate) response; result = getFileReference(appUpdate.document, requester.location, needReplacement, locationReplacement); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileStreamLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileStreamLoadOperation.java index 55ab9f99f..864a83383 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileStreamLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileStreamLoadOperation.java @@ -57,7 +57,7 @@ public class FileStreamLoadOperation extends BaseDataSource implements FileLoadO document = new TLRPC.TL_document(); document.access_hash = Utilities.parseLong(uri.getQueryParameter("hash")); document.id = Utilities.parseLong(uri.getQueryParameter("id")); - document.size = Utilities.parseInt(uri.getQueryParameter("size")); + document.size = Utilities.parseLong(uri.getQueryParameter("size")); document.dc_id = Utilities.parseInt(uri.getQueryParameter("dc")); document.mime_type = uri.getQueryParameter("mime"); document.file_reference = Utilities.hexToBytes(uri.getQueryParameter("reference")); @@ -96,7 +96,7 @@ public class FileStreamLoadOperation extends BaseDataSource implements FileLoadO readLength = (int) bytesRemaining; } while (availableLength == 0 && opened) { - availableLength = loadOperation.getDownloadedLengthFromOffset(currentOffset, readLength)[0]; + availableLength = (int) loadOperation.getDownloadedLengthFromOffset(currentOffset, readLength)[0]; if (availableLength == 0) { FileLoader.getInstance(currentAccount).loadStreamFile(this, document, null, parentObject, currentOffset, false); countDownLatch = new CountDownLatch(1); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileUploadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileUploadOperation.java index ae5a78371..6ead2534c 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileUploadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileUploadOperation.java @@ -43,7 +43,7 @@ public class FileUploadOperation { private static final int initialRequestsSlowNetworkCount = 1; private static final int maxUploadingKBytes = 1024 * 2; private static final int maxUploadingSlowNetworkKBytes = 32; - private static final int maxUploadParts = (int) (FileLoader.MAX_FILE_SIZE / 1024 / 512); + private int maxRequestsCount; private int uploadChunkSize = 64 * 1024; private boolean slowNetwork; @@ -69,7 +69,7 @@ public class FileUploadOperation { private boolean isBigFile; private boolean forceSmallFile; private String fileKey; - private int estimatedSize; + private long estimatedSize; private int uploadStartTime; private RandomAccessFile stream; private boolean started; @@ -88,7 +88,7 @@ public class FileUploadOperation { void didChangedUploadProgress(FileUploadOperation operation, long uploadedSize, long totalSize); } - public FileUploadOperation(int instance, String location, boolean encrypted, int estimated, int type) { + public FileUploadOperation(int instance, String location, boolean encrypted, long estimated, int type) { currentAccount = instance; uploadingFilePath = location; isEncrypted = encrypted; @@ -229,12 +229,12 @@ public class FileUploadOperation { private void calcTotalPartsCount() { if (uploadFirstPartLater) { if (isBigFile) { - totalPartsCount = 1 + (int) ((totalFileSize - uploadChunkSize) + uploadChunkSize - 1) / uploadChunkSize; + totalPartsCount = 1 + (int) (((totalFileSize - uploadChunkSize) + uploadChunkSize - 1) / uploadChunkSize); } else { - totalPartsCount = 1 + (int) ((totalFileSize - 1024) + uploadChunkSize - 1) / uploadChunkSize; + totalPartsCount = 1 + (int) (((totalFileSize - 1024) + uploadChunkSize - 1) / uploadChunkSize); } } else { - totalPartsCount = (int) (totalFileSize + uploadChunkSize - 1) / uploadChunkSize; + totalPartsCount = (int) ((totalFileSize + uploadChunkSize - 1) / uploadChunkSize); } } @@ -282,7 +282,11 @@ public class FileUploadOperation { isBigFile = true; } - uploadChunkSize = (int) Math.max(slowNetwork ? minUploadChunkSlowNetworkSize : minUploadChunkSize, (totalFileSize + 1024 * maxUploadParts - 1) / (1024 * maxUploadParts)); + long maxUploadParts = MessagesController.getInstance(currentAccount).uploadMaxFileParts; + if (AccountInstance.getInstance(currentAccount).getUserConfig().isPremium() && totalFileSize > FileLoader.DEFAULT_MAX_FILE_SIZE) { + maxUploadParts = MessagesController.getInstance(currentAccount).uploadMaxFilePartsPremium; + } + uploadChunkSize = (int) Math.max(slowNetwork ? minUploadChunkSlowNetworkSize : minUploadChunkSize, (totalFileSize + 1024L * maxUploadParts - 1) / (1024L * maxUploadParts)); if (1024 % uploadChunkSize != 0) { int chunkSize = 64; while (uploadChunkSize > chunkSize) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FilesMigrationService.java b/TMessagesProj/src/main/java/org/telegram/messenger/FilesMigrationService.java index 9ffa04135..a8c47314b 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FilesMigrationService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FilesMigrationService.java @@ -272,7 +272,7 @@ public class FilesMigrationService extends Service { buttonTextView.setText(LocaleController.getString("MigrateOldFolderButton", R.string.MigrateOldFolderButton)); buttonTextView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); - buttonTextView.setBackgroundDrawable(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(6), Theme.getColor(Theme.key_featuredStickers_addButton), ColorUtils.setAlphaComponent(Theme.getColor(Theme.key_windowBackgroundWhite), 120))); + buttonTextView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 6)); linearLayout.addView(buttonTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, 0, 16, 15, 16, 16)); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java b/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java index efed6df6e..42de99110 100755 --- a/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java @@ -371,6 +371,11 @@ public class GcmPushListenerService extends FirebaseMessagingService { messageText = getReactedText(loc_key, args); } else { switch (loc_key) { + case "MESSAGE_RECURRING_PAY": { + messageText = LocaleController.formatString("NotificationMessageRecurringPay", R.string.NotificationMessageRecurringPay, args[0], args[1]); + message1 = LocaleController.getString("PaymentInvoice", R.string.PaymentInvoice); + break; + } case "MESSAGE_TEXT": case "CHANNEL_MESSAGE_TEXT": { messageText = LocaleController.formatString("NotificationMessageText", R.string.NotificationMessageText, args[0], args[1]); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java index b8bac0fea..90b8df939 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java @@ -91,6 +91,7 @@ public class ImageLoader { private LruCache memCache; private LruCache wallpaperMemCache; private LruCache lottieMemCache; + ArrayList cachedAnimatedFileDrawables = new ArrayList<>(); private HashMap imageLoadingByUrl = new HashMap<>(); private HashMap imageLoadingByKeys = new HashMap<>(); private SparseArray imageLoadingByTag = new SparseArray<>(); @@ -457,13 +458,13 @@ public class ImageLoader { private CacheImage cacheImage; private RandomAccessFile fileOutputStream; - private int imageSize; + private long imageSize; private long lastProgressTime; private boolean canRetry = true; private String overrideUrl; private HttpURLConnection httpConnection; - public HttpImageTask(CacheImage cacheImage, int size) { + public HttpImageTask(CacheImage cacheImage, long size) { this.cacheImage = cacheImage; imageSize = size; } @@ -809,7 +810,7 @@ public class ImageLoader { if (cacheImage.imageLocation.photoSize instanceof TLRPC.TL_photoStrippedSize) { TLRPC.TL_photoStrippedSize photoSize = (TLRPC.TL_photoStrippedSize) cacheImage.imageLocation.photoSize; - Bitmap bitmap = getStrippedPhotoBitmap(photoSize.bytes, cacheImage.filter); + Bitmap bitmap = getStrippedPhotoBitmap(photoSize.bytes, "b"); onPostExecute(bitmap != null ? new BitmapDrawable(bitmap) : null); } else if (cacheImage.imageType == FileLoader.IMAGE_TYPE_THEME_PREVIEW) { BitmapDrawable bitmapDrawable = null; @@ -820,8 +821,8 @@ public class ImageLoader { } onPostExecute(bitmapDrawable); } else if (cacheImage.imageType == FileLoader.IMAGE_TYPE_SVG || cacheImage.imageType == FileLoader.IMAGE_TYPE_SVG_WHITE) { - int w = AndroidUtilities.dp(360); - int h = AndroidUtilities.dp(640); + int w = AndroidUtilities.displaySize.x; + int h = AndroidUtilities.displaySize.y; if (cacheImage.filter != null) { String[] args = cacheImage.filter.split("_"); if (args.length >= 2) { @@ -954,10 +955,22 @@ public class ImageLoader { } else { seekTo = 0; } - if (AUTOPLAY_FILTER.equals(cacheImage.filter) && !(cacheImage.imageLocation.document instanceof TLRPC.TL_documentEncrypted)) { + boolean limitFps = false; + if (cacheImage.filter != null) { + String[] args = cacheImage.filter.split("_"); + if (args.length >= 2) { + float w_filter = Float.parseFloat(args[0]); + float h_filter = Float.parseFloat(args[1]); + if (w_filter <= 90 && h_filter <= 90 && !cacheImage.filter.contains("nolimit")) { + limitFps = true; + } + } + } + if ((isAnimatedAvatar(cacheImage.filter) || AUTOPLAY_FILTER.equals(cacheImage.filter)) && !(cacheImage.imageLocation.document instanceof TLRPC.TL_documentEncrypted)) { TLRPC.Document document = cacheImage.imageLocation.document instanceof TLRPC.Document ? cacheImage.imageLocation.document : null; - int size = document != null ? cacheImage.size : cacheImage.imageLocation.currentSize; + long size = document != null ? cacheImage.size : cacheImage.imageLocation.currentSize; fileDrawable = new AnimatedFileDrawable(cacheImage.finalFilePath, false, size, document, document == null ? cacheImage.imageLocation : null, cacheImage.parentObject, seekTo, cacheImage.currentAccount, false); + fileDrawable.setIsWebmSticker(MessageObject.isWebM(document) || MessageObject.isVideoSticker(document) || isAnimatedAvatar(cacheImage.filter)); } else { int w = 0; @@ -971,8 +984,10 @@ public class ImageLoader { h = (int) (h_filter * AndroidUtilities.density); } } - fileDrawable = new AnimatedFileDrawable(cacheImage.finalFilePath, "d".equals(cacheImage.filter), 0, cacheImage.imageLocation.document, null, null, seekTo, cacheImage.currentAccount, false , w, h); + fileDrawable = new AnimatedFileDrawable(cacheImage.finalFilePath, "d".equals(cacheImage.filter), 0, cacheImage.imageLocation.document, null, null, seekTo, cacheImage.currentAccount, false, w, h); + fileDrawable.setIsWebmSticker(MessageObject.isWebM(cacheImage.imageLocation.document) || MessageObject.isVideoSticker(cacheImage.imageLocation.document) || isAnimatedAvatar(cacheImage.filter)); } + fileDrawable.setLimitFps(limitFps); Thread.interrupted(); onPostExecute(fileDrawable); } else { @@ -1499,7 +1514,7 @@ public class ImageLoader { } else if (drawable instanceof AnimatedFileDrawable) { AnimatedFileDrawable animatedFileDrawable = (AnimatedFileDrawable) drawable; if (animatedFileDrawable.isWebmSticker) { - toSet = getFromLottieCahce(cacheImage.key); + toSet = getFromLottieCache(cacheImage.key); if (toSet == null) { lottieMemCache.put(cacheImage.key, animatedFileDrawable); toSet = animatedFileDrawable; @@ -1554,6 +1569,10 @@ public class ImageLoader { } } + private boolean isAnimatedAvatar(String filter) { + return filter != null && filter.endsWith("avatar"); + } + private BitmapDrawable getFromMemCache(String key) { BitmapDrawable drawable = memCache.get(key); if (drawable == null) { @@ -1563,7 +1582,7 @@ public class ImageLoader { drawable = wallpaperMemCache.get(key); } if (drawable == null) { - drawable = getFromLottieCahce(key); + drawable = getFromLottieCache(key); } return drawable; } @@ -1599,7 +1618,7 @@ public class ImageLoader { protected SecureDocument secureDocument; protected ImageLocation imageLocation; protected Object parentObject; - protected int size; + protected long size; protected int imageType; protected int type; @@ -1725,7 +1744,7 @@ public class ImageLoader { AnimatedFileDrawable fileDrawable = (AnimatedFileDrawable) image; for (int a = 0; a < finalImageReceiverArray.size(); a++) { ImageReceiver imgView = finalImageReceiverArray.get(a); - AnimatedFileDrawable toSet = (a == 0 ? fileDrawable : fileDrawable.makeCopy()); + AnimatedFileDrawable toSet = fileDrawable; if (imgView.setImageBitmapByKey(toSet, key, type, false, finalImageReceiverGuidsArray.get(a))) { if (toSet == fileDrawable) { imageSet = true; @@ -1810,7 +1829,9 @@ public class ImageLoader { if (count == null || count == 0) { Bitmap b = oldValue.getBitmap(); if (!b.isRecycled()) { - b.recycle(); + ArrayList bitmapToRecycle = new ArrayList<>(); + bitmapToRecycle.add(b); + AndroidUtilities.recycleBitmaps(bitmapToRecycle); } } } @@ -1830,7 +1851,9 @@ public class ImageLoader { if (count == null || count == 0) { Bitmap b = oldValue.getBitmap(); if (!b.isRecycled()) { - b.recycle(); + ArrayList bitmapToRecycle = new ArrayList<>(); + bitmapToRecycle.add(b); + AndroidUtilities.recycleBitmaps(bitmapToRecycle); } } } @@ -1843,14 +1866,26 @@ public class ImageLoader { }; lottieMemCache = new LruCache(512 * 512 * 2 * 4 * 5) { + @Override protected int sizeOf(String key, BitmapDrawable value) { return value.getIntrinsicWidth() * value.getIntrinsicHeight() * 4 * 2; } + @Override + public BitmapDrawable put(String key, BitmapDrawable value) { + if (value instanceof AnimatedFileDrawable) { + cachedAnimatedFileDrawables.add((AnimatedFileDrawable) value); + } + return super.put(key, value); + } + @Override protected void entryRemoved(boolean evicted, String key, final BitmapDrawable oldValue, BitmapDrawable newValue) { final Integer count = bitmapUseCounts.get(key); + if (oldValue instanceof AnimatedFileDrawable) { + cachedAnimatedFileDrawables.remove((AnimatedFileDrawable) oldValue); + } if (count == null || count == 0) { if (oldValue instanceof AnimatedFileDrawable) { ((AnimatedFileDrawable) oldValue).recycle(); @@ -1908,11 +1943,22 @@ public class ImageLoader { public void fileDidLoaded(final String location, final File finalFile, Object parentObject, final int type) { fileProgresses.remove(location); AndroidUtilities.runOnUIThread(() -> { - if (SharedConfig.saveToGallery && finalFile != null && (location.endsWith(".mp4") || location.endsWith(".jpg"))) { + if (SharedConfig.saveToGalleryFlags != 0 && finalFile != null && (location.endsWith(".mp4") || location.endsWith(".jpg"))) { if (parentObject instanceof MessageObject) { MessageObject messageObject = (MessageObject) parentObject; - // test add only for peer dialogs - if (messageObject.getDialogId() >= 0) { + + long dialogId = messageObject.getDialogId(); + int flag; + if (dialogId >= 0) { + flag = SharedConfig.SAVE_TO_GALLERY_FLAG_PEER; + } else { + if (ChatObject.isChannelAndNotMegaGroup(MessagesController.getInstance(currentAccount).getChat(-dialogId))) { + flag = SharedConfig.SAVE_TO_GALLERY_FLAG_CHANNELS; + } else { + flag = SharedConfig.SAVE_TO_GALLERY_FLAG_GROUP; + } + } + if ((SharedConfig.saveToGalleryFlags & flag) != 0) { AndroidUtilities.addMediaToGallery(finalFile.toString()); } } @@ -2142,6 +2188,20 @@ public class ImageLoader { } catch (Exception e) { FileLog.e(e); } + + try { + File normalNamesPath = new File(telegramPath, "Telegram Files"); + normalNamesPath.mkdir(); + if (normalNamesPath.isDirectory() && canMoveFiles(cachePath, normalNamesPath, FileLoader.MEDIA_DIR_FILES)) { + AndroidUtilities.createEmptyFile(new File(normalNamesPath, ".nomedia")); + mediaDirs.put(FileLoader.MEDIA_DIR_FILES, normalNamesPath); + if (BuildVars.LOGS_ENABLED) { + FileLog.d("files path = " + normalNamesPath); + } + } + } catch (Exception e) { + FileLog.e(e); + } } if (publicMediaDir != null && publicMediaDir.isDirectory()) { try { @@ -2191,7 +2251,7 @@ public class ImageLoader { if (type == FileLoader.MEDIA_DIR_IMAGE) { srcFile = new File(from, "000000000_999999_temp.f"); dstFile = new File(to, "000000000_999999.f"); - } else if (type == FileLoader.MEDIA_DIR_DOCUMENT) { + } else if (type == FileLoader.MEDIA_DIR_DOCUMENT || type == FileLoader.MEDIA_DIR_FILES) { srcFile = new File(from, "000000000_999999_temp.f"); dstFile = new File(to, "000000000_999999.f"); } else if (type == FileLoader.MEDIA_DIR_AUDIO) { @@ -2320,7 +2380,7 @@ public class ImageLoader { public boolean isInMemCache(String key, boolean animated) { if (animated) { - return getFromLottieCahce(key) != null; + return getFromLottieCache(key) != null; } else { return getFromMemCache(key) != null; } @@ -2479,7 +2539,7 @@ public class ImageLoader { imageLoadQueue.postRunnable(() -> forceLoadingImages.remove(key)); } - private void createLoadOperationForImageReceiver(final ImageReceiver imageReceiver, final String key, final String url, final String ext, final ImageLocation imageLocation, final String filter, final int size, final int cacheType, final int type, final int thumb, int guid) { + private void createLoadOperationForImageReceiver(final ImageReceiver imageReceiver, final String key, final String url, final String ext, final ImageLocation imageLocation, final String filter, final long size, final int cacheType, final int type, final int thumb, int guid) { if (imageReceiver == null || url == null || key == null || imageLocation == null) { return; } @@ -2495,7 +2555,7 @@ public class ImageLoader { final int finalTag = TAG; final boolean finalIsNeedsQualityThumb = imageReceiver.isNeedsQualityThumb(); final Object parentObject = imageReceiver.getParentObject(); - final TLRPC.Document qualityDocument = imageReceiver.getQulityThumbDocument(); + final TLRPC.Document qualityDocument = imageReceiver.getQualityThumbDocument(); final boolean shouldGenerateQualityThumb = imageReceiver.isShouldGenerateQualityThumb(); final int currentAccount = imageReceiver.getCurrentAccount(); final boolean currentKeyQuality = type == ImageReceiver.TYPE_IMAGE && imageReceiver.isCurrentKeyQuality(); @@ -2567,12 +2627,12 @@ public class ImageLoader { MessageObject parentMessageObject = (MessageObject) parentObject; parentDocument = parentMessageObject.getDocument(); localPath = parentMessageObject.messageOwner.attachPath; - cachePath = FileLoader.getPathToMessage(parentMessageObject.messageOwner); + cachePath = FileLoader.getInstance(currentAccount).getPathToMessage(parentMessageObject.messageOwner); mediaType = parentMessageObject.getMediaType(); bigThumb = false; } else if (qualityDocument != null) { parentDocument = qualityDocument; - cachePath = FileLoader.getPathToAttach(parentDocument, true); + cachePath = FileLoader.getInstance(currentAccount).getPathToAttach(parentDocument, true); if (MessageObject.isVideoDocument(parentDocument)) { mediaType = FileLoader.MEDIA_DIR_VIDEO; } else { @@ -2651,14 +2711,14 @@ public class ImageLoader { } if (cacheFile == null) { - int fileSize = 0; + long fileSize = 0; if (imageLocation.photoSize instanceof TLRPC.TL_photoStrippedSize || imageLocation.photoSize instanceof TLRPC.TL_photoPathSize) { onlyCache = true; } else if (imageLocation.secureDocument != null) { img.secureDocument = imageLocation.secureDocument; onlyCache = img.secureDocument.secureFile.dc_id == Integer.MIN_VALUE; cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), url); - } else if (!AUTOPLAY_FILTER.equals(filter) && (cacheType != 0 || size <= 0 || imageLocation.path != null || isEncrypted)) { + } else if (!(AUTOPLAY_FILTER.equals(filter) || isAnimatedAvatar(filter)) && (cacheType != 0 || size <= 0 || imageLocation.path != null || isEncrypted)) { cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), url); if (cacheFile.exists()) { cacheFileExists = true; @@ -2695,7 +2755,7 @@ public class ImageLoader { } else { cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_DOCUMENT), url); } - if (AUTOPLAY_FILTER.equals(filter) && !cacheFile.exists()) { + if ((isAnimatedAvatar(filter) || AUTOPLAY_FILTER.equals(filter)) && !cacheFile.exists()) { cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), document.dc_id + "_" + document.id + ".temp"); } if (document instanceof DocumentObject.ThemeDocument) { @@ -2726,11 +2786,11 @@ public class ImageLoader { } else { cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_IMAGE), url); } - if (AUTOPLAY_FILTER.equals(filter) && imageLocation.location != null && !cacheFile.exists()) { + if (isAnimatedAvatar(filter) || AUTOPLAY_FILTER.equals(filter) && imageLocation.location != null && !cacheFile.exists()) { cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), imageLocation.location.volume_id + "_" + imageLocation.location.local_id + ".temp"); } } - if (AUTOPLAY_FILTER.equals(filter)) { + if (AUTOPLAY_FILTER.equals(filter) || isAnimatedAvatar(filter)) { img.imageType = FileLoader.IMAGE_TYPE_ANIMATION; img.size = fileSize; onlyCache = true; @@ -2847,8 +2907,8 @@ public class ImageLoader { if (mediaKey != null) { ImageLocation mediaLocation = imageReceiver.getMediaLocation(); Drawable drawable; - if (useLottieMemChache(mediaLocation)) { - drawable = getFromLottieCahce(mediaKey); + if (useLottieMemCache(mediaLocation, mediaKey)) { + drawable = getFromLottieCache(mediaKey); } else { drawable = memCache.get(mediaKey); if (drawable != null) { @@ -2880,8 +2940,8 @@ public class ImageLoader { if (!imageSet && imageKey != null) { ImageLocation imageLocation = imageReceiver.getImageLocation(); Drawable drawable = null; - if (useLottieMemChache(imageLocation)) { - drawable = getFromLottieCahce(imageKey); + if (useLottieMemCache(imageLocation, imageKey)) { + drawable = getFromLottieCache(imageKey); } if (drawable == null) { drawable = memCache.get(imageKey); @@ -2915,8 +2975,8 @@ public class ImageLoader { if (thumbKey != null) { ImageLocation thumbLocation = imageReceiver.getThumbLocation(); Drawable drawable; - if (useLottieMemChache(thumbLocation)) { - drawable = getFromLottieCahce(thumbKey); + if (useLottieMemCache(thumbLocation, thumbKey)) { + drawable = getFromLottieCache(thumbKey); } else { drawable = memCache.get(thumbKey); if (drawable != null) { @@ -2947,7 +3007,7 @@ public class ImageLoader { boolean qualityThumb = false; Object parentObject = imageReceiver.getParentObject(); - TLRPC.Document qualityDocument = imageReceiver.getQulityThumbDocument(); + TLRPC.Document qualityDocument = imageReceiver.getQualityThumbDocument(); ImageLocation thumbLocation = imageReceiver.getThumbLocation(); String thumbFilter = imageReceiver.getThumbFilter(); ImageLocation mediaLocation = imageReceiver.getMediaLocation(); @@ -3129,7 +3189,7 @@ public class ImageLoader { } } - private BitmapDrawable getFromLottieCahce(String imageKey) { + private BitmapDrawable getFromLottieCache(String imageKey) { BitmapDrawable drawable = lottieMemCache.get(imageKey); if (drawable instanceof AnimatedFileDrawable) { if (((AnimatedFileDrawable) drawable).isRecycled()) { @@ -3140,8 +3200,8 @@ public class ImageLoader { return drawable; } - private boolean useLottieMemChache(ImageLocation imageLocation) { - return imageLocation != null && (MessageObject.isAnimatedStickerDocument(imageLocation.document, true) || imageLocation.imageType == FileLoader.IMAGE_TYPE_LOTTIE || MessageObject.isVideoSticker(imageLocation.document)); + private boolean useLottieMemCache(ImageLocation imageLocation, String key) { + return imageLocation != null && (MessageObject.isAnimatedStickerDocument(imageLocation.document, true) || imageLocation.imageType == FileLoader.IMAGE_TYPE_LOTTIE || MessageObject.isVideoSticker(imageLocation.document)) || isAnimatedAvatar(key); } private void httpFileLoadError(final String location) { @@ -3529,7 +3589,7 @@ public class ImageLoader { if (photoSize == null || photoSize.bytes != null && photoSize.bytes.length != 0) { return; } - File file = FileLoader.getPathToAttach(photoSize, true); + File file = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(photoSize, true); try { RandomAccessFile f = new RandomAccessFile(file, "r"); int len = (int) f.length(); @@ -3586,16 +3646,17 @@ public class ImageLoader { fileDir = location.volume_id != Integer.MIN_VALUE ? FileLoader.getDirectory(FileLoader.MEDIA_DIR_IMAGE) : FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE); } final File cacheFile = new File(fileDir, fileName); - if (compressFormat == Bitmap.CompressFormat.JPEG && progressive && BuildVars.DEBUG_VERSION) { - photoSize.size = Utilities.saveProgressiveJpeg(scaledBitmap, scaledBitmap.getWidth(), scaledBitmap.getHeight(), scaledBitmap.getRowBytes(), quality, cacheFile.getAbsolutePath()); - } else { - FileOutputStream stream = new FileOutputStream(cacheFile); - scaledBitmap.compress(compressFormat, quality, stream); - if (!cache) { - photoSize.size = (int) stream.getChannel().size(); - } - stream.close(); + //TODO was crash in DEBUG_PRIVATE +// if (compressFormat == Bitmap.CompressFormat.JPEG && progressive && BuildVars.DEBUG_VERSION) { +// photoSize.size = Utilities.saveProgressiveJpeg(scaledBitmap, scaledBitmap.getWidth(), scaledBitmap.getHeight(), scaledBitmap.getRowBytes(), quality, cacheFile.getAbsolutePath()); +// } else { + FileOutputStream stream = new FileOutputStream(cacheFile); + scaledBitmap.compress(compressFormat, quality, stream); + if (!cache) { + photoSize.size = (int) stream.getChannel().size(); } + stream.close(); + // } if (cache) { ByteArrayOutputStream stream2 = new ByteArrayOutputStream(); scaledBitmap.compress(compressFormat, quality, stream2); @@ -3699,7 +3760,7 @@ public class ImageLoader { photoSize.location.volume_id = Integer.MIN_VALUE; photoSize.location.local_id = SharedConfig.getLastLocalId(); } - File file = FileLoader.getPathToAttach(photoSize, true); + File file = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(photoSize, true); boolean isEncrypted = false; if (MessageObject.shouldEncryptPhotoOrVideo(message)) { file = new File(file.getAbsolutePath() + ".enc"); @@ -3813,7 +3874,7 @@ public class ImageLoader { TLRPC.PhotoSize photoSize = findPhotoCachedSize(message); if (photoSize != null && photoSize.bytes != null && photoSize.bytes.length != 0) { - File file = FileLoader.getPathToAttach(photoSize, true); + File file = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(photoSize, true); TLRPC.TL_photoSize newPhotoSize = new TLRPC.TL_photoSize_layer127(); newPhotoSize.w = photoSize.w; @@ -3862,7 +3923,7 @@ public class ImageLoader { } Point point = ChatMessageCell.getMessageSize(w, h); - String key = String.format(Locale.US, "%s_false@%d_%d_b", ImageLocation.getStippedKey(message, message, size), (int) (point.x / AndroidUtilities.density), (int) (point.y / AndroidUtilities.density)); + String key = String.format(Locale.US, "%s_false@%d_%d_b", ImageLocation.getStrippedKey(message, message, size), (int) (point.x / AndroidUtilities.density), (int) (point.y / AndroidUtilities.density)); if (!getInstance().isInMemCache(key, false)) { Bitmap b = getStrippedPhotoBitmap(size.bytes, null); if (b != null) { @@ -3881,6 +3942,12 @@ public class ImageLoader { return null; } + public void onFragmentStackChanged() { + for (int i = 0; i < cachedAnimatedFileDrawables.size(); i++) { + cachedAnimatedFileDrawables.get(i).repeatCount = 0; + } + } + public DispatchQueue getCacheOutQueue() { return cacheOutQueue; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ImageLocation.java b/TMessagesProj/src/main/java/org/telegram/messenger/ImageLocation.java index 70d696261..cdbb96d96 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ImageLocation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ImageLocation.java @@ -30,7 +30,7 @@ public class ImageLocation { public int thumbVersion; - public int currentSize; + public long currentSize; public long photoId; public long documentId; @@ -107,6 +107,7 @@ public class ImageLocation { public static final int TYPE_BIG = 0; public static final int TYPE_SMALL = 1; public static final int TYPE_STRIPPED = 2; + public static final int TYPE_VIDEO_THUMB = 3; public static ImageLocation getForUserOrChat(TLObject object, int type) { if (object instanceof TLRPC.User) { @@ -121,6 +122,23 @@ public class ImageLocation { if (user == null || user.access_hash == 0 || user.photo == null) { return null; } + if (type == TYPE_VIDEO_THUMB) { + int currentAccount = UserConfig.selectedAccount; + if (MessagesController.getInstance(currentAccount).isPremiumUser(user) && user.photo.has_video) { + final TLRPC.UserFull userFull = MessagesController.getInstance(currentAccount).getUserFull(user.id); + if (userFull != null && userFull.profile_photo !=null && userFull.profile_photo.video_sizes != null && !userFull.profile_photo.video_sizes.isEmpty()) { + TLRPC.VideoSize videoSize = userFull.profile_photo.video_sizes.get(0); + for (int i = 0; i < userFull.profile_photo.video_sizes.size(); i++) { + if ("p".equals(userFull.profile_photo.video_sizes.get(i).type)) { + videoSize = userFull.profile_photo.video_sizes.get(i); + break; + } + } + return ImageLocation.getForPhoto(videoSize, userFull.profile_photo); + } + } + return null; + } if (type == TYPE_STRIPPED) { if (user.photo.stripped_thumb == null) { return null; @@ -215,7 +233,11 @@ public class ImageLocation { return null; } ImageLocation location = getForPhoto(videoSize.location, videoSize.size, null, document, null, TYPE_SMALL, document.dc_id, null, videoSize.type); - location.imageType = FileLoader.IMAGE_TYPE_ANIMATION; + if ("f".equals(videoSize.type)) { + location.imageType = FileLoader.IMAGE_TYPE_LOTTIE; + } else { + location.imageType = FileLoader.IMAGE_TYPE_ANIMATION; + } return location; } @@ -293,7 +315,7 @@ public class ImageLocation { return imageLocation; } - public static String getStippedKey(Object parentObject, Object fullObject, Object strippedObject) { + public static String getStrippedKey(Object parentObject, Object fullObject, Object strippedObject) { if (parentObject instanceof TLRPC.WebPage) { if (fullObject instanceof ImageLocation) { ImageLocation imageLocation = (ImageLocation) fullObject; @@ -333,7 +355,7 @@ public class ImageLocation { return secureDocument.secureFile.dc_id + "_" + secureDocument.secureFile.id; } else if (photoSize instanceof TLRPC.TL_photoStrippedSize || photoSize instanceof TLRPC.TL_photoPathSize) { if (photoSize.bytes.length > 0) { - return getStippedKey(parentObject, fullObject, photoSize); + return getStrippedKey(parentObject, fullObject, photoSize); } } else if (location != null) { return location.volume_id + "_" + location.local_id; @@ -357,7 +379,7 @@ public class ImageLocation { return key != null; } - public int getSize() { + public long getSize() { if (photoSize != null) { return photoSize.size; } else if (secureDocument != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ImageReceiver.java b/TMessagesProj/src/main/java/org/telegram/messenger/ImageReceiver.java index a7445ae3e..11ab496f3 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ImageReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ImageReceiver.java @@ -20,6 +20,7 @@ import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.PorterDuffXfermode; +import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Shader; import android.graphics.drawable.BitmapDrawable; @@ -132,7 +133,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg public ImageLocation mediaLocation; public String mediaFilter; public Drawable thumb; - public int size; + public long size; public int cacheType; public Object parentObject; public String ext; @@ -221,7 +222,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg private int currentGuid; - private int currentSize; + private long currentSize; private int currentCacheType; private boolean allowStartAnimation = true; private boolean allowStartLottieAnimation = true; @@ -278,6 +279,9 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg private String uniqKeyPrefix; private ArrayList loadingOperations = new ArrayList<>(); private boolean attachedToWindow; + private boolean videoThumbIsSame; + + public int animatedFileDrawableRepeatMaxCount; public ImageReceiver() { this(null); @@ -319,11 +323,11 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg setImage(imageLocation, imageFilter, null, null, thumb, 0, ext, parentObject, cacheType); } - public void setImage(ImageLocation imageLocation, String imageFilter, Drawable thumb, int size, String ext, Object parentObject, int cacheType) { + public void setImage(ImageLocation imageLocation, String imageFilter, Drawable thumb, long size, String ext, Object parentObject, int cacheType) { setImage(imageLocation, imageFilter, null, null, thumb, size, ext, parentObject, cacheType); } - public void setImage(String imagePath, String imageFilter, Drawable thumb, String ext, int size) { + public void setImage(String imagePath, String imageFilter, Drawable thumb, String ext, long size) { setImage(ImageLocation.getForPath(imagePath), imageFilter, null, null, thumb, size, ext, null, 1); } @@ -331,26 +335,46 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg setImage(imageLocation, imageFilter, thumbLocation, thumbFilter, null, 0, ext, parentObject, cacheType); } - public void setImage(ImageLocation imageLocation, String imageFilter, ImageLocation thumbLocation, String thumbFilter, int size, String ext, Object parentObject, int cacheType) { + public void setImage(ImageLocation imageLocation, String imageFilter, ImageLocation thumbLocation, String thumbFilter, long size, String ext, Object parentObject, int cacheType) { setImage(imageLocation, imageFilter, thumbLocation, thumbFilter, null, size, ext, parentObject, cacheType); } public void setForUserOrChat(TLObject object, Drawable avatarDrawable) { setForUserOrChat(object, avatarDrawable, null); } - public void setForUserOrChat(TLObject object, Drawable avatarDrawable, Object parentObject) { + setForUserOrChat(object, avatarDrawable, null, false); + } + + public void setForUserOrChat(TLObject object, Drawable avatarDrawable, Object parentObject, boolean animationEnabled) { if (parentObject == null) { parentObject = object; } setUseRoundForThumbDrawable(true); BitmapDrawable strippedBitmap = null; boolean hasStripped = false; + ImageLocation videoLocation = null; if (object instanceof TLRPC.User) { TLRPC.User user = (TLRPC.User) object; if (user.photo != null) { strippedBitmap = user.photo.strippedBitmap; hasStripped = user.photo.stripped_thumb != null; + if (MessagesController.getInstance(currentAccount).isPremiumUser(user) && user.photo.has_video && animationEnabled) { + final TLRPC.UserFull userFull = MessagesController.getInstance(currentAccount).getUserFull(user.id); + if (userFull == null) { + MessagesController.getInstance(currentAccount).loadFullUser(user, currentGuid, false); + } + if (userFull != null && userFull.profile_photo != null && userFull.profile_photo.video_sizes != null && !userFull.profile_photo.video_sizes.isEmpty()) { + TLRPC.VideoSize videoSize = userFull.profile_photo.video_sizes.get(0); + for (int i = 0; i < userFull.profile_photo.video_sizes.size(); i++) { + if ("p".equals(userFull.profile_photo.video_sizes.get(i).type)) { + videoSize = userFull.profile_photo.video_sizes.get(i); + break; + } + } + videoLocation = ImageLocation.getForPhoto(videoSize, userFull.profile_photo); + } + } } } else if (object instanceof TLRPC.Chat) { TLRPC.Chat chat = (TLRPC.Chat) object; @@ -359,24 +383,32 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg hasStripped = chat.photo.stripped_thumb != null; } } - if (strippedBitmap != null) { - setImage(ImageLocation.getForUserOrChat(object, ImageLocation.TYPE_SMALL), "50_50", strippedBitmap, null, parentObject, 0); - } else if (hasStripped) { - setImage(ImageLocation.getForUserOrChat(object, ImageLocation.TYPE_SMALL), "50_50", ImageLocation.getForUserOrChat(object, ImageLocation.TYPE_STRIPPED), "50_50_b", avatarDrawable, parentObject, 0); + ImageLocation location = ImageLocation.getForUserOrChat(object, ImageLocation.TYPE_SMALL); + String filter = "50_50"; + if (videoLocation != null) { + setImage(videoLocation, "avatar", location, filter, null, null,strippedBitmap, 0, null, parentObject, 0); + animatedFileDrawableRepeatMaxCount = 3; } else { - setImage(ImageLocation.getForUserOrChat(object, ImageLocation.TYPE_SMALL), "50_50", avatarDrawable, null, parentObject, 0); + if (strippedBitmap != null) { + setImage(location, filter, strippedBitmap, null, parentObject, 0); + } else if (hasStripped) { + setImage(location, filter, ImageLocation.getForUserOrChat(object, ImageLocation.TYPE_STRIPPED), "50_50_b", avatarDrawable, parentObject, 0); + } else { + setImage(location, filter, avatarDrawable, null, parentObject, 0); + } } + } public void setImage(ImageLocation fileLocation, String fileFilter, ImageLocation thumbLocation, String thumbFilter, Drawable thumb, Object parentObject, int cacheType) { setImage(null, null, fileLocation, fileFilter, thumbLocation, thumbFilter, thumb, 0, null, parentObject, cacheType); } - public void setImage(ImageLocation fileLocation, String fileFilter, ImageLocation thumbLocation, String thumbFilter, Drawable thumb, int size, String ext, Object parentObject, int cacheType) { + public void setImage(ImageLocation fileLocation, String fileFilter, ImageLocation thumbLocation, String thumbFilter, Drawable thumb, long size, String ext, Object parentObject, int cacheType) { setImage(null, null, fileLocation, fileFilter, thumbLocation, thumbFilter, thumb, size, ext, parentObject, cacheType); } - public void setImage(ImageLocation mediaLocation, String mediaFilter, ImageLocation imageLocation, String imageFilter, ImageLocation thumbLocation, String thumbFilter, Drawable thumb, int size, String ext, Object parentObject, int cacheType) { + public void setImage(ImageLocation mediaLocation, String mediaFilter, ImageLocation imageLocation, String imageFilter, ImageLocation thumbLocation, String thumbFilter, Drawable thumb, long size, String ext, Object parentObject, int cacheType) { if (ignoreImageSet) { return; } @@ -445,6 +477,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg if (imageKey == null && imageLocation != null) { imageLocation = null; } + animatedFileDrawableRepeatMaxCount = 0; currentKeyQuality = false; if (imageKey == null && needsQualityThumb && (parentObject instanceof MessageObject || qulityThumbDocument != null)) { TLRPC.Document document = qulityThumbDocument != null ? qulityThumbDocument : ((MessageObject) parentObject).getDocument(); @@ -497,6 +530,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg if (currentMediaDrawable != null) { if (currentMediaDrawable instanceof AnimatedFileDrawable) { ((AnimatedFileDrawable) currentMediaDrawable).stop(); + ((AnimatedFileDrawable) currentMediaDrawable).removeParent(this); } recycleBitmap(thumbKey, TYPE_THUMB); recycleBitmap(null, TYPE_CROSSFDADE); @@ -708,11 +742,11 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg AnimatedFileDrawable fileDrawable = (AnimatedFileDrawable) bitmap; fileDrawable.setParentView(parentView); if (attachedToWindow) { - fileDrawable.addParent(parentView); + fileDrawable.addParent(this); } fileDrawable.setUseSharedQueue(useSharedAnimationQueue || fileDrawable.isWebmSticker); if (allowStartAnimation && currentOpenedLayerFlags == 0) { - fileDrawable.start(); + fileDrawable.checkRepeat(); } fileDrawable.setAllowDecodeSingleFrame(allowDecodeSingleFrame); } else if (bitmap instanceof RLottieDrawable) { @@ -729,6 +763,9 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg updateDrawableRadius(bitmap); currentMediaLocation = null; currentMediaFilter = null; + if (currentMediaDrawable instanceof AnimatedFileDrawable) { + ((AnimatedFileDrawable) currentMediaDrawable).removeParent(this); + } currentMediaDrawable = null; currentMediaKey = null; mediaShader = null; @@ -830,7 +867,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg AnimatedFileDrawable animatedFileDrawable = (AnimatedFileDrawable) drawable; animatedFileDrawable.setRoundRadius(roundRadius); } else if (bitmapDrawable.getBitmap() != null) { - setDrawableShader(drawable, new BitmapShader(bitmapDrawable.getBitmap(), Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)); + setDrawableShader(drawable, new BitmapShader(bitmapDrawable.getBitmap(), Shader.TileMode.REPEAT, Shader.TileMode.REPEAT)); } } else { setDrawableShader(drawable, null); @@ -878,7 +915,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg AnimatedFileDrawable animatedFileDrawable = getAnimation(); if (animatedFileDrawable != null) { - animatedFileDrawable.removeParent(parentView); + animatedFileDrawable.removeParent(this); } } @@ -914,10 +951,10 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg } AnimatedFileDrawable animatedFileDrawable = getAnimation(); if (animatedFileDrawable != null && parentView != null) { - animatedFileDrawable.addParent(parentView); + animatedFileDrawable.addParent(this); } if (animatedFileDrawable != null && allowStartAnimation && currentOpenedLayerFlags == 0) { - animatedFileDrawable.start(); + animatedFileDrawable.checkRepeat(); if (parentView != null) { parentView.invalidate(); } @@ -1036,12 +1073,13 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg drawRegion.set(imageX + (imageW - bitmapW) / 2, imageY + (imageH - bitmapH) / 2, imageX + (imageW + bitmapW) / 2, imageY + (imageH + bitmapH) / 2); if (isVisible) { - roundPaint.setShader(shader); shaderMatrix.reset(); - shaderMatrix.setTranslate(drawRegion.left, drawRegion.top); + shaderMatrix.setTranslate((int) drawRegion.left, (int) drawRegion.top); + float toScale = 1.0f / scale; shaderMatrix.preScale(1.0f / scale, 1.0f / scale); shader.setLocalMatrix(shaderMatrix); + roundPaint.setShader(shader); roundPaint.setAlpha(alpha); roundRect.set(drawRegion); @@ -1097,7 +1135,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg } if (isVisible) { shaderMatrix.reset(); - shaderMatrix.setTranslate(drawRegion.left + sideClip, drawRegion.top + sideClip); + shaderMatrix.setTranslate((int) (drawRegion.left + sideClip), (int) (drawRegion.top + sideClip)); if (orientation == 90) { shaderMatrix.preRotate(90); shaderMatrix.preTranslate(0, -drawRegion.width()); @@ -1785,6 +1823,15 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg imageH = height; } + public void setImageCoords(Rect bounds) { + if (bounds != null) { + imageX = bounds.left; + imageY = bounds.top; + imageW = bounds.width(); + imageH = bounds.height(); + } + } + public void setSideClip(float value) { sideClip = value; } @@ -1853,7 +1900,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg return currentThumbKey; } - public int getSize() { + public long getSize() { return currentSize; } @@ -1953,7 +2000,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg qulityThumbDocument = document; } - public TLRPC.Document getQulityThumbDocument() { + public TLRPC.Document getQualityThumbDocument() { return qulityThumbDocument; } @@ -2105,6 +2152,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg if (!key.equals(currentImageKey)) { return false; } + boolean allowCrossFade = true; if (!(drawable instanceof AnimatedFileDrawable)) { ImageLoader.getInstance().incrementUseCount(currentImageKey); } else { @@ -2113,6 +2161,9 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg if (animatedFileDrawable.isWebmSticker) { ImageLoader.getInstance().incrementUseCount(currentImageKey); } + if (videoThumbIsSame) { + allowCrossFade = !animatedFileDrawable.hasBitmap(); + } } currentImageDrawable = drawable; if (drawable instanceof ExtendedBitmapDrawable) { @@ -2120,14 +2171,14 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg } updateDrawableRadius(drawable); - if (isVisible && (!memCache && !forcePreview || forceCrossfade) && crossfadeDuration != 0) { - boolean allowCorssfade = true; + if (allowCrossFade && isVisible && (!memCache && !forcePreview || forceCrossfade) && crossfadeDuration != 0) { + boolean allowCrossfade = true; if (currentMediaDrawable instanceof AnimatedFileDrawable && ((AnimatedFileDrawable) currentMediaDrawable).hasBitmap()) { - allowCorssfade = false; + allowCrossfade = false; } else if (currentImageDrawable instanceof RLottieDrawable) { - allowCorssfade = staticThumbDrawable instanceof LoadingStickerDrawable || staticThumbDrawable instanceof SvgHelper.SvgDrawable || staticThumbDrawable instanceof Emoji.EmojiDrawable; + allowCrossfade = staticThumbDrawable instanceof LoadingStickerDrawable || staticThumbDrawable instanceof SvgHelper.SvgDrawable || staticThumbDrawable instanceof Emoji.EmojiDrawable; } - if (allowCorssfade && (currentThumbDrawable != null || staticThumbDrawable != null || forceCrossfade)) { + if (allowCrossfade && (currentThumbDrawable != null || staticThumbDrawable != null || forceCrossfade)) { if (currentThumbDrawable != null && staticThumbDrawable != null) { previousAlpha = currentAlpha; } else { @@ -2151,7 +2202,16 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg AnimatedFileDrawable animatedFileDrawable = (AnimatedFileDrawable) drawable; animatedFileDrawable.setStartEndTime(startTime, endTime); if (animatedFileDrawable.isWebmSticker) { - ImageLoader.getInstance().incrementUseCount(currentImageKey); + ImageLoader.getInstance().incrementUseCount(currentMediaKey); + } + if (videoThumbIsSame && (currentThumbDrawable instanceof AnimatedFileDrawable || currentImageDrawable instanceof AnimatedFileDrawable)) { + long currentTimestamp = 0; + if (currentThumbDrawable instanceof AnimatedFileDrawable) { + currentTimestamp = ((AnimatedFileDrawable) currentThumbDrawable).getLastFrameTimestamp(); + } else if (currentImageDrawable instanceof AnimatedFileDrawable) { + currentTimestamp = ((AnimatedFileDrawable) currentImageDrawable).getLastFrameTimestamp(); + } + animatedFileDrawable.seekTo(currentTimestamp, true, true); } } currentMediaDrawable = drawable; @@ -2221,10 +2281,10 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg AnimatedFileDrawable fileDrawable = (AnimatedFileDrawable) drawable; fileDrawable.setUseSharedQueue(useSharedAnimationQueue); if (attachedToWindow) { - fileDrawable.addParent(parentView); + fileDrawable.addParent(this); } if (allowStartAnimation && currentOpenedLayerFlags == 0) { - fileDrawable.start(); + fileDrawable.checkRepeat(); } fileDrawable.setAllowDecodeSingleFrame(allowDecodeSingleFrame); animationReadySent = false; @@ -2287,8 +2347,8 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg lottieDrawable.removeParentView(parentView); } if (image instanceof AnimatedFileDrawable) { - AnimatedFileDrawable lottieDrawable = (AnimatedFileDrawable) image; - lottieDrawable.removeParent(parentView); + AnimatedFileDrawable animatedFileDrawable = (AnimatedFileDrawable) image; + animatedFileDrawable.removeParent(this); } if (key != null && (newKey == null || !newKey.equals(key)) && image != null) { if (image instanceof RLottieDrawable) { @@ -2311,14 +2371,18 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg fileDrawable.stop(); } } else { - fileDrawable.recycle(); + if (fileDrawable.getParents().isEmpty()) { + fileDrawable.recycle(); + } } } else if (image instanceof BitmapDrawable) { Bitmap bitmap = ((BitmapDrawable) image).getBitmap(); boolean canDelete = ImageLoader.getInstance().decrementUseCount(key); if (!ImageLoader.getInstance().isInMemCache(key, false)) { if (canDelete) { - bitmap.recycle(); + ArrayList bitmapToRecycle = new ArrayList<>(); + bitmapToRecycle.add(bitmap); + AndroidUtilities.recycleBitmaps(bitmapToRecycle); } } } @@ -2396,7 +2460,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg } AnimatedFileDrawable animatedFileDrawable = getAnimation(); if (allowStartAnimation && animatedFileDrawable != null) { - animatedFileDrawable.start(); + animatedFileDrawable.checkRepeat(); if (parentView != null) { parentView.invalidate(); } @@ -2436,4 +2500,17 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg ImageLoader.getInstance().moveToFront(currentImageKey); ImageLoader.getInstance().moveToFront(currentThumbKey); } + + public View getParentView() { + return parentView; + } + + public boolean isAttachedToWindow() { + return attachedToWindow; + } + + public void setVideoThumbIsSame(boolean b) { + videoThumbIsSame = b; + } + } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java b/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java index 3e49ebaa6..825d9956d 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java @@ -1049,14 +1049,17 @@ public class LocaleController { return getString(param, key + "_other", resourceId); } - public static String formatPluralString(String key, int plural) { + public static String formatPluralString(String key, int plural, Object... args) { if (key == null || key.length() == 0 || getInstance().currentPluralRules == null) { return "LOC_ERR:" + key; } String param = getInstance().stringForQuantity(getInstance().currentPluralRules.quantityForNumber(plural)); param = key + "_" + param; int resourceId = ApplicationLoader.applicationContext.getResources().getIdentifier(param, "string", ApplicationLoader.applicationContext.getPackageName()); - return formatString(param, key + "_other", resourceId, plural); + Object[] argsWithPlural = new Object[args.length + 1]; + argsWithPlural[0] = plural; + System.arraycopy(args, 0, argsWithPlural, 1, args.length); + return formatString(param, key + "_other", resourceId, argsWithPlural); } public static String formatPluralStringComma(String key, int plural) { @@ -1660,15 +1663,17 @@ public class LocaleController { return text; } - public static String formatDateOnline(long date) { + public static String formatDateOnline(long date, boolean[] madeShorter) { try { date *= 1000; Calendar rightNow = Calendar.getInstance(); int day = rightNow.get(Calendar.DAY_OF_YEAR); int year = rightNow.get(Calendar.YEAR); + int hour = rightNow.get(Calendar.HOUR_OF_DAY); rightNow.setTimeInMillis(date); int dateDay = rightNow.get(Calendar.DAY_OF_YEAR); int dateYear = rightNow.get(Calendar.YEAR); + int dateHour = rightNow.get(Calendar.HOUR_OF_DAY); if (dateDay == day && year == dateYear) { return LocaleController.formatString("LastSeenFormatted", R.string.LastSeenFormatted, LocaleController.formatString("TodayAtFormatted", R.string.TodayAtFormatted, getInstance().formatterDay.format(new Date(date)))); @@ -1681,7 +1686,15 @@ public class LocaleController { return LocaleController.formatPluralString("LastSeenHours", (int) Math.ceil(diff / 60.0f)); }*/ } else if (dateDay + 1 == day && year == dateYear) { - return LocaleController.formatString("LastSeenFormatted", R.string.LastSeenFormatted, LocaleController.formatString("YesterdayAtFormatted", R.string.YesterdayAtFormatted, getInstance().formatterDay.format(new Date(date)))); + if (madeShorter != null) { + madeShorter[0] = true; + if (hour <= 6 && dateHour > 18 && is24HourFormat) { + return LocaleController.formatString("LastSeenFormatted", R.string.LastSeenFormatted, getInstance().formatterDay.format(new Date(date))); + } + return LocaleController.formatString("YesterdayAtFormatted", R.string.YesterdayAtFormatted, getInstance().formatterDay.format(new Date(date))); + } else { + return LocaleController.formatString("LastSeenFormatted", R.string.LastSeenFormatted, LocaleController.formatString("YesterdayAtFormatted", R.string.YesterdayAtFormatted, getInstance().formatterDay.format(new Date(date)))); + } } else if (Math.abs(System.currentTimeMillis() - date) < 31536000000L) { String format = LocaleController.formatString("formatDateAtTime", R.string.formatDateAtTime, getInstance().formatterDayMonth.format(new Date(date)), getInstance().formatterDay.format(new Date(date))); return LocaleController.formatString("LastSeenDateFormatted", R.string.LastSeenDateFormatted, format); @@ -1941,6 +1954,10 @@ public class LocaleController { } public static String formatUserStatus(int currentAccount, TLRPC.User user, boolean[] isOnline) { + return formatUserStatus(currentAccount, user, isOnline, null); + } + + public static String formatUserStatus(int currentAccount, TLRPC.User user, boolean[] isOnline, boolean[] madeShorter) { if (user != null && user.status != null && user.status.expires == 0) { if (user.status instanceof TLRPC.TL_userStatusRecently) { user.status.expires = -100; @@ -1976,8 +1993,8 @@ public class LocaleController { return getString("WithinAWeek", R.string.WithinAWeek); } else if (user.status.expires == -102) { return getString("WithinAMonth", R.string.WithinAMonth); - } else { - return formatDateOnline(user.status.expires); + } else { + return formatDateOnline(user.status.expires, madeShorter); } } } @@ -2123,6 +2140,10 @@ public class LocaleController { } public void loadRemoteLanguages(final int currentAccount) { + loadRemoteLanguages(currentAccount, true); + } + + public void loadRemoteLanguages(final int currentAccount, boolean applyCurrent) { if (loadingRemoteLanguages) { return; } @@ -2189,7 +2210,9 @@ public class LocaleController { } saveOtherLanguages(); NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.suggestedLangpack); - applyLanguage(currentLocaleInfo, true, false, currentAccount); + if (applyCurrent) { + applyLanguage(currentLocaleInfo, true, false, currentAccount); + } }); } }, ConnectionsManager.RequestFlagWithoutLogin); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/LocationController.java b/TMessagesProj/src/main/java/org/telegram/messenger/LocationController.java index 05768b8d6..2c9ca7181 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/LocationController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/LocationController.java @@ -21,6 +21,8 @@ import android.os.SystemClock; import android.text.TextUtils; import android.util.SparseIntArray; +import androidx.collection.LongSparseArray; + import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GoogleApiAvailability; import com.google.android.gms.common.api.GoogleApiClient; @@ -43,8 +45,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; -import androidx.collection.LongSparseArray; - public class LocationController extends BaseController implements NotificationCenter.NotificationCenterDelegate, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private LongSparseArray sharingLocationsMap = new LongSparseArray<>(); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java index 5f671fd06..751d9cfda 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java @@ -61,7 +61,6 @@ import android.widget.FrameLayout; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ui.AspectRatioFrameLayout; -import com.google.android.exoplayer2.util.Log; import org.telegram.messenger.audioinfo.AudioInfo; import org.telegram.messenger.video.MediaCodecVideoConvertor; @@ -401,9 +400,9 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, @Override public String getPath() { if (photoSize != null) { - return FileLoader.getPathToAttach(photoSize, true).getAbsolutePath(); + return FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(photoSize, true).getAbsolutePath(); } else if (document != null) { - return FileLoader.getPathToAttach(document, true).getAbsolutePath(); + return FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true).getAbsolutePath(); } else { return ImageLoader.getHttpFilePath(imageUrl, "jpg").getAbsolutePath(); } @@ -425,9 +424,9 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, public String getPathToAttach() { if (photoSize != null) { - return FileLoader.getPathToAttach(photoSize, true).getAbsolutePath(); + return FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(photoSize, true).getAbsolutePath(); } else if (document != null) { - return FileLoader.getPathToAttach(document, true).getAbsolutePath(); + return FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true).getAbsolutePath(); } else { return imageUrl; } @@ -595,7 +594,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, private ArrayList recordBuffers = new ArrayList<>(); private ByteBuffer fileBuffer; public int recordBufferSize = 1280; - public int sampleRate = 16000; + public int sampleRate = 48000; private int sendAfterDone; private boolean sendAfterDoneNotify; private int sendAfterDoneScheduleDate; @@ -885,7 +884,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, recordQueue.postRunnable(() -> { try { - sampleRate = 16000; + sampleRate = 48000; int minBuferSize = AudioRecord.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); if (minBuferSize <= 0) { minBuferSize = 1280; @@ -1306,7 +1305,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, playMessage(playingMessageObject); } else if (audioInfo == null) { try { - File cacheFile = FileLoader.getPathToMessage(playingMessageObject.messageOwner); + File cacheFile = FileLoader.getInstance(UserConfig.selectedAccount).getPathToMessage(playingMessageObject.messageOwner); audioInfo = AudioInfo.getAudioInfo(cacheFile); } catch (Exception e) { FileLog.e(e); @@ -2359,7 +2358,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, file = null; } } - final File cacheFile = file != null ? file : FileLoader.getPathToMessage(nextAudio.messageOwner); + final File cacheFile = file != null ? file : FileLoader.getInstance(currentAccount).getPathToMessage(nextAudio.messageOwner); boolean exist = cacheFile.exists(); if (cacheFile != file && !cacheFile.exists()) { FileLoader.getInstance(currentAccount).loadFile(nextAudio.getDocument(), nextAudio, 0, 0); @@ -2398,7 +2397,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, file = null; } } - final File cacheFile = file != null ? file : FileLoader.getPathToMessage(nextAudio.messageOwner); + final File cacheFile = file != null ? file : FileLoader.getInstance(currentAccount).getPathToMessage(nextAudio.messageOwner); boolean exist = cacheFile.exists(); if (cacheFile != file && !cacheFile.exists() && nextAudio.isMusic()) { FileLoader.getInstance(currentAccount).loadFile(nextAudio.getDocument(), nextAudio, 0, 0); @@ -2762,7 +2761,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, document.mime_type = "sound/ogg"; document.file_reference = sound.fileReference; document.dc_id = accountInstance.getConnectionsManager().getCurrentDatacenterId(); - File file = FileLoader.getPathToAttach(document, true); + File file = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(document, true); if (file.exists()) { if (loadOnly) { return; @@ -2836,10 +2835,28 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, }); } + private static long volumeBarLastTimeShown; + public void checkVolumeBarUI() { + try { + final long now = System.currentTimeMillis(); + if (Math.abs(now - volumeBarLastTimeShown) < 5000) { + return; + } + AudioManager audioManager = (AudioManager) ApplicationLoader.applicationContext.getSystemService(Context.AUDIO_SERVICE); + int stream = useFrontSpeaker ? AudioManager.STREAM_VOICE_CALL : AudioManager.STREAM_MUSIC; + int volume = audioManager.getStreamVolume(stream); + if (volume == 0) { + audioManager.adjustStreamVolume(stream, volume, AudioManager.FLAG_SHOW_UI); + volumeBarLastTimeShown = now; + } + } catch (Exception ignore) {} + } + public boolean playMessage(final MessageObject messageObject) { if (messageObject == null) { return false; } + checkVolumeBarUI(); if ((audioPlayer != null || videoPlayer != null) && isSamePlayingMessage(messageObject)) { if (isPaused) { resumeAudio(messageObject); @@ -2874,7 +2891,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, file = null; } } - final File cacheFile = file != null ? file : FileLoader.getPathToMessage(messageObject.messageOwner); + final File cacheFile = file != null ? file : FileLoader.getInstance(messageObject.currentAccount).getPathToMessage(messageObject.messageOwner); boolean canStream = SharedConfig.streamMedia && (messageObject.isMusic() || messageObject.isRoundVideo() || messageObject.isVideo() && messageObject.canStreamVideo()) && !DialogObject.isEncryptedDialog(messageObject.getDialogId()); if (cacheFile != file && !(exists = cacheFile.exists()) && !canStream) { FileLoader.getInstance(messageObject.currentAccount).loadFile(messageObject.getDocument(), messageObject, 0, 0); @@ -3491,7 +3508,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, recordingAudioFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), FileLoader.getAttachFileName(recordingAudio)); try { - if (startRecord(recordingAudioFile.getAbsolutePath(), 16000) == 0) { + if (startRecord(recordingAudioFile.getAbsolutePath(), sampleRate) == 0) { AndroidUtilities.runOnUIThread(() -> { recordStartRunnable = null; NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.recordStartError, guid); @@ -3540,7 +3557,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, public void generateWaveform(MessageObject messageObject) { final String id = messageObject.getId() + "_" + messageObject.getDialogId(); - final String path = FileLoader.getPathToMessage(messageObject.messageOwner).getAbsolutePath(); + final String path = FileLoader.getInstance(messageObject.currentAccount).getPathToMessage(messageObject.messageOwner).getAbsolutePath(); if (generatingWaveform.containsKey(id)) { return; } @@ -3707,7 +3724,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(message.messageOwner).toString(); + path = FileLoader.getInstance(currentAccount.getCurrentAccount()).getPathToMessage(message.messageOwner).toString(); } File sourceFile = new File(path); if (!sourceFile.exists()) { @@ -3761,7 +3778,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(message.messageOwner).toString(); + path = FileLoader.getInstance(currentAccount.getCurrentAccount()).getPathToMessage(message.messageOwner).toString(); } File sourceFile = new File(path); if (!sourceFile.exists()) { @@ -4318,10 +4335,24 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } f = AndroidUtilities.getSharingDirectory(); f.mkdirs(); - f = new File(f, name); if (AndroidUtilities.isInternalUri(Uri.fromFile(f))) { return null; } + int count = 0; + do { + f = AndroidUtilities.getSharingDirectory(); + if (count == 0) { + f = new File(f, name); + } else { + int lastDotIndex = name.lastIndexOf("."); + if (lastDotIndex > 0) { + f = new File(f, name.substring(0, lastDotIndex) + " (" + count + ")" + name.substring(lastDotIndex)); + } else { + f = new File(f, name + " (" + count + ")"); + } + } + count++; + } while (f.exists()); inputStream = ApplicationLoader.applicationContext.getContentResolver().openInputStream(uri); if (inputStream instanceof FileInputStream) { FileInputStream fileInputStream = (FileInputStream) inputStream; @@ -4858,7 +4889,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, resultWidth = temp; } - if (framerate > 40 && (Math.min(resultHeight, resultWidth) <= 480)) { + if (!info.shouldLimitFps && framerate > 40 && (Math.min(resultHeight, resultWidth) <= 480)) { framerate = 30; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java index 3c85ae4c2..68e7c4599 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java @@ -32,6 +32,8 @@ import android.text.Spanned; import android.text.SpannedString; import android.text.TextUtils; import android.text.style.CharacterStyle; +import android.text.style.URLSpan; +import android.text.util.Linkify; import android.util.SparseArray; import androidx.annotation.NonNull; @@ -54,8 +56,11 @@ import org.telegram.tgnet.SerializedData; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.EmojiThemes; import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.Bulletin; +import org.telegram.ui.Components.ChatThemeBottomSheet; +import org.telegram.ui.Components.Reactions.ReactionsEffectOverlay; import org.telegram.ui.Components.StickerSetBulletinLayout; import org.telegram.ui.Components.StickersArchiveAlert; import org.telegram.ui.Components.TextStyleSpan; @@ -157,6 +162,7 @@ public class MediaDataController extends BaseController { } loadStickersByEmojiOrName(AndroidUtilities.STICKERS_PLACEHOLDER_PACK_NAME, false, true); + loadEmojiThemes(); ringtoneDataStore = new RingtoneDataStore(currentAccount); } @@ -181,6 +187,10 @@ public class MediaDataController extends BaseController { private boolean isLoadingReactions; private int reactionsUpdateDate; + private TLRPC.TL_help_premiumPromo premiumPromo; + private boolean isLoadingPremiumPromo; + private int premiumPromoUpdateDate; + private ArrayList[] stickerSets = new ArrayList[]{new ArrayList<>(), new ArrayList<>(), new ArrayList<>(0), new ArrayList<>(), new ArrayList<>()}; private LongSparseArray[] stickersByIds = new LongSparseArray[]{new LongSparseArray<>(), new LongSparseArray<>(), new LongSparseArray<>(), new LongSparseArray<>(), new LongSparseArray<>()}; private LongSparseArray stickerSetsById = new LongSparseArray<>(); @@ -225,6 +235,10 @@ public class MediaDataController extends BaseController { private TLRPC.Document greetingsSticker; public final RingtoneDataStore ringtoneDataStore; + public final ArrayList defaultEmojiThemes = new ArrayList<>(); + + public final ArrayList premiumPreviewStickers = new ArrayList<>(); + boolean previewStickersLoading; public void cleanup() { for (int a = 0; a < recentStickers.length; a++) { @@ -308,6 +322,16 @@ public class MediaDataController extends BaseController { } } + public void checkPremiumPromo() { + if (!isLoadingPremiumPromo && Math.abs(System.currentTimeMillis() / 1000 - premiumPromoUpdateDate) >= 60 * 60) { + loadPremiumPromo(true); + } + } + + public TLRPC.TL_help_premiumPromo getPremiumPromo() { + return premiumPromo; + } + public TLRPC.TL_attachMenuBots getAttachMenuBots() { return attachMenuBots; } @@ -358,7 +382,7 @@ public class MediaDataController extends BaseController { } } - private void processLoadedMenuBots(TLRPC.TL_attachMenuBots bots, long hash, int date, boolean cache) { + public void processLoadedMenuBots(TLRPC.TL_attachMenuBots bots, long hash, int date, boolean cache) { if (bots != null && date != 0) { attachMenuBots = bots; menuBotsUpdateHash = hash; @@ -404,6 +428,86 @@ public class MediaDataController extends BaseController { }); } + public void loadPremiumPromo(boolean cache) { + isLoadingPremiumPromo = true; + if (cache) { + getMessagesStorage().getStorageQueue().postRunnable(() -> { + SQLiteCursor c = null; + int date = 0; + TLRPC.TL_help_premiumPromo premiumPromo = null; + try { + c = getMessagesStorage().getDatabase().queryFinalized("SELECT data, date FROM premium_promo"); + if (c.next()) { + NativeByteBuffer data = c.byteBufferValue(0); + if (data != null) { + premiumPromo = TLRPC.TL_help_premiumPromo.TLdeserialize(data, data.readInt32(false), true); + data.reuse(); + } + date = c.intValue(1); + } + } catch (Exception e) { + FileLog.e(e, false); + } finally { + if (c != null) { + c.dispose(); + } + } + if (premiumPromo != null) { + processLoadedPremiumPromo(premiumPromo, date, true); + } + }); + } else { + TLRPC.TL_help_getPremiumPromo req = new TLRPC.TL_help_getPremiumPromo(); + getConnectionsManager().sendRequest(req, (response, error) -> { + int date = (int) (System.currentTimeMillis() / 1000); + if (response instanceof TLRPC.TL_help_premiumPromo) { + TLRPC.TL_help_premiumPromo r = (TLRPC.TL_help_premiumPromo) response; + processLoadedPremiumPromo(r, date, false); + } + }); + } + } + + private void processLoadedPremiumPromo(TLRPC.TL_help_premiumPromo premiumPromo, int date, boolean cache) { + this.premiumPromo = premiumPromo; + premiumPromoUpdateDate = date; + getMessagesController().putUsers(premiumPromo.users, cache); + AndroidUtilities.runOnUIThread(() -> getNotificationCenter().postNotificationName(NotificationCenter.premiumPromoUpdated)); + + if (!cache) { + putPremiumPromoToCache(premiumPromo, date); + } else if (Math.abs(System.currentTimeMillis() / 1000 - date) >= 60 * 60 * 24 || BuildVars.DEBUG_PRIVATE_VERSION) { + loadPremiumPromo(false); + } + } + + private void putPremiumPromoToCache(TLRPC.TL_help_premiumPromo premiumPromo, int date) { + getMessagesStorage().getStorageQueue().postRunnable(() -> { + try { + if (premiumPromo != null) { + getMessagesStorage().getDatabase().executeFast("DELETE FROM premium_promo").stepThis().dispose(); + SQLitePreparedStatement state = getMessagesStorage().getDatabase().executeFast("REPLACE INTO premium_promo VALUES(?, ?)"); + state.requery(); + NativeByteBuffer data = new NativeByteBuffer(premiumPromo.getObjectSize()); + premiumPromo.serializeToStream(data); + state.bindByteBuffer(1, data); + state.bindInteger(2, date); + state.step(); + data.reuse(); + state.dispose(); + } else { + SQLitePreparedStatement state = getMessagesStorage().getDatabase().executeFast("UPDATE premium_promo SET date = ?"); + state.requery(); + state.bindInteger(1, date); + state.step(); + state.dispose(); + } + } catch (Exception e) { + FileLog.e(e); + } + }); + } + public List getReactionsList() { return reactionsList; } @@ -456,7 +560,7 @@ public class MediaDataController extends BaseController { } } - private void processLoadedReactions(List reactions, int hash, int date, boolean cache) { + public void processLoadedReactions(List reactions, int hash, int date, boolean cache) { if (reactions != null && date != 0) { reactionsList.clear(); reactionsMap.clear(); @@ -477,29 +581,27 @@ public class MediaDataController extends BaseController { for (int i = 0; i < reactions.size(); i++) { ImageReceiver imageReceiver = new ImageReceiver(); TLRPC.TL_availableReaction reaction = reactions.get(i); - imageReceiver.setImage(ImageLocation.getForDocument(reaction.activate_animation), null, null, null, 0, 1); + imageReceiver.setImage(ImageLocation.getForDocument(reaction.activate_animation), null, null, null, 0, FileLoader.PRELOAD_CACHE_TYPE); ImageLoader.getInstance().loadImageForImageReceiver(imageReceiver); imageReceiver = new ImageReceiver(); - imageReceiver.setImage(ImageLocation.getForDocument(reaction.appear_animation), "60_60_nolimit", null, null, 0, 1); + imageReceiver.setImage(ImageLocation.getForDocument(reaction.appear_animation), "60_60_nolimit", null, null, 0, FileLoader.PRELOAD_CACHE_TYPE); + ImageLoader.getInstance().loadImageForImageReceiver(imageReceiver); + + int size = ReactionsEffectOverlay.sizeForBigReaction(); + imageReceiver = new ImageReceiver(); + imageReceiver.setImage(ImageLocation.getForDocument(reaction.around_animation), size + "_" + size, null, null, 0, FileLoader.PRELOAD_CACHE_TYPE); ImageLoader.getInstance().loadImageForImageReceiver(imageReceiver); imageReceiver = new ImageReceiver(); - imageReceiver.setImage(ImageLocation.getForDocument(reaction.around_animation), null, null, null, 0, 1); - ImageLoader.getInstance().loadImageForImageReceiver(imageReceiver); - - imageReceiver = new ImageReceiver(); - imageReceiver.setImage(ImageLocation.getForDocument(reaction.center_icon), null, null, null, 0, 1); - ImageLoader.getInstance().loadImageForImageReceiver(imageReceiver); - - imageReceiver = new ImageReceiver(); - imageReceiver.setImage(ImageLocation.getForDocument(reaction.static_icon), null, null, null, 0, 1); + imageReceiver.setImage(ImageLocation.getForDocument(reaction.center_icon), null, null, null, 0, FileLoader.PRELOAD_CACHE_TYPE); ImageLoader.getInstance().loadImageForImageReceiver(imageReceiver); } NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.reactionsDidLoad); }); } + isLoadingReactions = false; if (!cache) { putReactionsToCache(reactions, hash, date); } else if (Math.abs(System.currentTimeMillis() / 1000 - date) >= 60 * 60) { @@ -571,6 +673,24 @@ public class MediaDataController extends BaseController { return false; } + public void clearRecentStickers() { + TLRPC.TL_messages_clearRecentStickers req = new TLRPC.TL_messages_clearRecentStickers(); + getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(()-> { + if (response instanceof TLRPC.TL_boolTrue) { + getMessagesStorage().getStorageQueue().postRunnable(() -> { + try { + getMessagesStorage().getDatabase().executeFast("DELETE FROM web_recent_v3 WHERE type = " + 3).stepThis().dispose(); + } catch (Exception e) { + FileLog.e(e); + } + }); + + recentStickers[TYPE_IMAGE].clear(); + NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.recentDocumentsDidLoad, false, TYPE_IMAGE); + } + })); + } + public void addRecentSticker(int type, Object parentObject, TLRPC.Document document, int date, boolean remove) { if (type == TYPE_GREETINGS || !MessageObject.isStickerDocument(document) && !MessageObject.isAnimatedStickerDocument(document, true)) { return; @@ -595,7 +715,8 @@ public class MediaDataController extends BaseController { if (remove) { NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.showBulletin, Bulletin.TYPE_STICKER, document, StickerSetBulletinLayout.TYPE_REMOVED_FROM_FAVORITES); } else { - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.showBulletin, Bulletin.TYPE_STICKER, document, StickerSetBulletinLayout.TYPE_ADDED_TO_FAVORITES); + boolean replace = recentStickers[type].size() > getMessagesController().maxFaveStickersCount; + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.showBulletin, Bulletin.TYPE_STICKER, document, replace ? StickerSetBulletinLayout.TYPE_REPLACED_TO_FAVORITES : StickerSetBulletinLayout.TYPE_ADDED_TO_FAVORITES); } TLRPC.TL_messages_faveSticker req = new TLRPC.TL_messages_faveSticker(); req.id = new TLRPC.TL_inputDocument(); @@ -708,7 +829,7 @@ public class MediaDataController extends BaseController { return false; } - public void addRecentGif(TLRPC.Document document, int date) { + public void addRecentGif(TLRPC.Document document, int date, boolean showReplaceBulletin) { if (document == null) { return; } @@ -725,7 +846,7 @@ public class MediaDataController extends BaseController { if (!found) { recentGifs.add(0, document); } - if (recentGifs.size() > getMessagesController().maxRecentGifsCount) { + if ((recentGifs.size() > getMessagesController().savedGifsLimitDefault && !UserConfig.getInstance(currentAccount).isPremium()) || recentGifs.size() > getMessagesController().savedGifsLimitPremium) { TLRPC.Document old = recentGifs.remove(recentGifs.size() - 1); getMessagesStorage().getStorageQueue().postRunnable(() -> { try { @@ -734,6 +855,11 @@ public class MediaDataController extends BaseController { FileLog.e(e); } }); + if (showReplaceBulletin) { + AndroidUtilities.runOnUIThread(() -> { + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.showBulletin, Bulletin.TYPE_STICKER, document, StickerSetBulletinLayout.TYPE_REPLACED_TO_FAVORITES_GIFS); + }); + } } ArrayList arrayList = new ArrayList<>(); arrayList.add(document); @@ -919,6 +1045,9 @@ public class MediaDataController extends BaseController { } public TLRPC.Document getEmojiAnimatedSticker(CharSequence message) { + if (message == null) { + return null; + } String emoji = message.toString().replace("\uFE0F", ""); ArrayList arrayList = getStickerSets(MediaDataController.TYPE_EMOJI); for (int a = 0, N = arrayList.size(); a < N; a++) { @@ -988,6 +1117,34 @@ public class MediaDataController extends BaseController { return value != null ? value : ""; } + public static boolean canShowAttachMenuBotForTarget(TLRPC.TL_attachMenuBot bot, String target) { + for (TLRPC.AttachMenuPeerType peerType : bot.peer_types) { + if ((peerType instanceof TLRPC.TL_attachMenuPeerTypeSameBotPM || peerType instanceof TLRPC.TL_attachMenuPeerTypeBotPM) && target.equals("bots") || + peerType instanceof TLRPC.TL_attachMenuPeerTypeBroadcast && target.equals("channels") || + peerType instanceof TLRPC.TL_attachMenuPeerTypeChat && target.equals("groups") || + peerType instanceof TLRPC.TL_attachMenuPeerTypePM && target.equals("users")) { + return true; + } + } + return false; + } + + public static boolean canShowAttachMenuBot(TLRPC.TL_attachMenuBot bot, TLObject peer) { + TLRPC.User user = peer instanceof TLRPC.User ? (TLRPC.User) peer : null; + TLRPC.Chat chat = peer instanceof TLRPC.Chat ? (TLRPC.Chat) peer : null; + + for (TLRPC.AttachMenuPeerType peerType : bot.peer_types) { + if (peerType instanceof TLRPC.TL_attachMenuPeerTypeSameBotPM && user != null && user.bot && user.id == bot.bot_id || + peerType instanceof TLRPC.TL_attachMenuPeerTypeBotPM && user != null && user.bot && user.id != bot.bot_id || + peerType instanceof TLRPC.TL_attachMenuPeerTypePM && user != null && !user.bot || + peerType instanceof TLRPC.TL_attachMenuPeerTypeChat && chat != null && !ChatObject.isChannelAndNotMegaGroup(chat) || + peerType instanceof TLRPC.TL_attachMenuPeerTypeBroadcast && chat != null && ChatObject.isChannelAndNotMegaGroup(chat)) { + return true; + } + } + return false; + } + @Nullable public static TLRPC.TL_attachMenuBotIcon getAnimatedAttachMenuBotIcon(@NonNull TLRPC.TL_attachMenuBot bot) { for (TLRPC.TL_attachMenuBotIcon icon : bot.icons) { @@ -2033,7 +2190,7 @@ public class MediaDataController extends BaseController { } }); Utilities.stageQueue.postRunnable(() -> { - if (cache && (res == null || Math.abs(System.currentTimeMillis() / 1000 - date) >= 60 * 60) || !cache && res == null && hash == 0) { + if (cache && (res == null || BuildVars.DEBUG_PRIVATE_VERSION || Math.abs(System.currentTimeMillis() / 1000 - date) >= 60 * 60) || !cache && res == null && hash == 0) { AndroidUtilities.runOnUIThread(() -> { if (res != null && hash != 0) { loadHash[type] = hash; @@ -2942,10 +3099,11 @@ public class MediaDataController extends BaseController { ArrayList objects = new ArrayList<>(); for (int a = 0; a < res.messages.size(); a++) { TLRPC.Message message = res.messages.get(a); - MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, true, true); + MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, true, false); messageObject.createStrippedThumb(); objects.add(messageObject); } + getFileLoader().checkMediaExistance(objects); AndroidUtilities.runOnUIThread(() -> { int totalCount = res.count; @@ -3376,7 +3534,7 @@ public class MediaDataController extends BaseController { Bitmap bitmap = null; if (photo != null) { try { - File path = FileLoader.getPathToAttach(photo, true); + File path = getFileLoader().getPathToAttach(photo, true); bitmap = BitmapFactory.decodeFile(path.toString()); if (bitmap != null) { int size = AndroidUtilities.dp(48); @@ -3850,7 +4008,7 @@ public class MediaDataController extends BaseController { if (overrideAvatar || photo != null) { try { if (!overrideAvatar) { - File path = FileLoader.getPathToAttach(photo, true); + File path = getFileLoader().getPathToAttach(photo, true); bitmap = BitmapFactory.decodeFile(path.toString()); } if (overrideAvatar || bitmap != null) { @@ -5081,6 +5239,26 @@ public class MediaDataController extends BaseController { } } } + + if (spannable instanceof Spannable) { + AndroidUtilities.addLinks((Spannable) spannable, Linkify.WEB_URLS); + URLSpan[] spansUrl = spannable.getSpans(0, message[0].length(), URLSpan.class); + if (spansUrl != null && spansUrl.length > 0) { + if (entities == null) { + entities = new ArrayList<>(); + } + for (int b = 0; b < spansUrl.length; b++) { + if (spansUrl[b] instanceof URLSpanReplacement || spansUrl[b] instanceof URLSpanUserMention) { + continue; + } + TLRPC.TL_messageEntityUrl entity = new TLRPC.TL_messageEntityUrl(); + entity.offset = spannable.getSpanStart(spansUrl[b]); + entity.length = Math.min(spannable.getSpanEnd(spansUrl[b]), message[0].length()) - entity.offset; + entity.url = spansUrl[b].getURL(); + entities.add(entity); + } + } + } } CharSequence cs = message[0]; @@ -5101,12 +5279,23 @@ public class MediaDataController extends BaseController { int offset = 0; while (m.find()) { String gr = m.group(1); - cs = cs.subSequence(0, m.start() - offset) + gr + cs.subSequence(m.end() - offset, cs.length()); + boolean allowEntity = true; + if (cs instanceof Spannable) { + // check if it is inside a link: do not convert __ ** to styles inside links + URLSpan[] spansUrl = ((Spannable) cs).getSpans(m.start() - offset, m.end() - offset, URLSpan.class); + if (spansUrl != null && spansUrl.length > 0) { + allowEntity = false; + } + } - TLRPC.MessageEntity entity = entityProvider.provide(null); - entity.offset = m.start() - offset; - entity.length = gr.length(); - entities.add(entity); + if (allowEntity) { + cs = cs.subSequence(0, m.start() - offset) + gr + cs.subSequence(m.end() - offset, cs.length()); + + TLRPC.MessageEntity entity = entityProvider.provide(null); + entity.offset = m.start() - offset; + entity.length = gr.length(); + entities.add(entity); + } offset += m.end() - m.start() - gr.length(); } @@ -5717,6 +5906,51 @@ public class MediaDataController extends BaseController { return true; } + public void preloadPremiumPreviewStickers() { + if (previewStickersLoading || !premiumPreviewStickers.isEmpty()) { + for (int i = 0; i < Math.min(premiumPreviewStickers.size(), 3); i++) { + TLRPC.Document document = premiumPreviewStickers.get(i == 2 ? premiumPreviewStickers.size() - 1 : i); + if (MessageObject.isPremiumSticker(document)) { + ImageReceiver imageReceiver = new ImageReceiver(); + imageReceiver.setImage(ImageLocation.getForDocument(document), null, null, "webp", null, 1); + ImageLoader.getInstance().loadImageForImageReceiver(imageReceiver); + + imageReceiver = new ImageReceiver(); + imageReceiver.setImage(ImageLocation.getForDocument(MessageObject.getPremiumStickerAnimation(document), document), null, null, null, "tgs", null, 1); + ImageLoader.getInstance().loadImageForImageReceiver(imageReceiver); + } + } + return; + } + final TLRPC.TL_messages_getStickers req2 = new TLRPC.TL_messages_getStickers(); + req2.emoticon = Emoji.fixEmoji("⭐") + Emoji.fixEmoji("⭐"); + req2.hash = 0; + previewStickersLoading = true; + ConnectionsManager.getInstance(currentAccount).sendRequest(req2, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + if (error != null) { + return; + } + previewStickersLoading = false; + TLRPC.TL_messages_stickers res = (TLRPC.TL_messages_stickers) response; + premiumPreviewStickers.clear(); + premiumPreviewStickers.addAll(res.stickers); + NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.premiumStickersPreviewLoaded); + })); + } + + public void chekAllMedia(boolean force) { + if (force) { + reactionsUpdateDate = 0; + loadFeaturedDate = 0; + } + loadRecents(MediaDataController.TYPE_FAVE, false, true, false); + loadRecents(MediaDataController.TYPE_GREETINGS, false, true, false); + checkFeaturedStickers(); + checkReactions(); + checkMenuBots(); + checkPremiumPromo(); + } + //---------------- BOT END ---------------- //---------------- EMOJI START ---------------- @@ -5996,5 +6230,81 @@ public class MediaDataController extends BaseController { } } + + public void loadEmojiThemes() { + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("emojithemes_config_" + currentAccount, Context.MODE_PRIVATE); + int count = preferences.getInt("count", 0); + ArrayList previewItems = new ArrayList<>(); + previewItems.add(new ChatThemeBottomSheet.ChatThemeItem(EmojiThemes.createHomePreviewTheme())); + for (int i = 0; i < count; ++i) { + String value = preferences.getString("theme_" + i, ""); + SerializedData serializedData = new SerializedData(Utilities.hexToBytes(value)); + try { + TLRPC.TL_theme theme = TLRPC.Theme.TLdeserialize(serializedData, serializedData.readInt32(true), true); + EmojiThemes fullTheme = EmojiThemes.createPreviewFullTheme(theme); + if (fullTheme.items.size() >= 4) { + previewItems.add(new ChatThemeBottomSheet.ChatThemeItem(fullTheme)); + } + + ChatThemeController.chatThemeQueue.postRunnable(new Runnable() { + @Override + public void run() { + for (int i = 0; i < previewItems.size(); i++) { + previewItems.get(i).chatTheme.loadPreviewColors(0); + } + AndroidUtilities.runOnUIThread(() -> { + defaultEmojiThemes.clear(); + defaultEmojiThemes.addAll(previewItems); + }); + } + }); + } catch (Throwable e) { + FileLog.e(e); + } + } + } + + public void generateEmojiPreviewThemes(final ArrayList emojiPreviewThemes, int currentAccount) { + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("emojithemes_config_" + currentAccount, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + editor.putInt("count", emojiPreviewThemes.size()); + for (int i = 0; i < emojiPreviewThemes.size(); ++i) { + TLRPC.TL_theme tlChatTheme = emojiPreviewThemes.get(i); + SerializedData data = new SerializedData(tlChatTheme.getObjectSize()); + tlChatTheme.serializeToStream(data); + editor.putString("theme_" + i, Utilities.bytesToHex(data.toByteArray())); + } + editor.apply(); + + if (!emojiPreviewThemes.isEmpty()) { + final ArrayList previewItems = new ArrayList<>(); + previewItems.add(new ChatThemeBottomSheet.ChatThemeItem(EmojiThemes.createHomePreviewTheme())); + for (int i = 0; i < emojiPreviewThemes.size(); i++) { + TLRPC.TL_theme theme = emojiPreviewThemes.get(i); + EmojiThemes chatTheme = EmojiThemes.createPreviewFullTheme(theme); + ChatThemeBottomSheet.ChatThemeItem item = new ChatThemeBottomSheet.ChatThemeItem(chatTheme); + if (chatTheme.items.size() >= 4) { + previewItems.add(item); + } + } + ChatThemeController.chatThemeQueue.postRunnable(new Runnable() { + @Override + public void run() { + for (int i = 0; i < previewItems.size(); i++) { + previewItems.get(i).chatTheme.loadPreviewColors(currentAccount); + } + AndroidUtilities.runOnUIThread(() -> { + defaultEmojiThemes.clear(); + defaultEmojiThemes.addAll(previewItems); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.emojiPreviewThemesChanged); + }); + } + }); + } else { + defaultEmojiThemes.clear(); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.emojiPreviewThemesChanged); + } + } + //---------------- EMOJI END ---------------- } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessageCustomParamsHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessageCustomParamsHelper.java new file mode 100644 index 000000000..33129ea8f --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessageCustomParamsHelper.java @@ -0,0 +1,101 @@ +package org.telegram.messenger; + +import org.telegram.tgnet.AbstractSerializedData; +import org.telegram.tgnet.NativeByteBuffer; +import org.telegram.tgnet.TLObject; +import org.telegram.tgnet.TLRPC; + +public class MessageCustomParamsHelper { + + public static boolean isEmpty(TLRPC.Message message) { + return message.voiceTranscription == null && + !message.voiceTranscriptionOpen && + !message.voiceTranscriptionFinal && + !message.voiceTranscriptionRated && + message.voiceTranscriptionId == 0 && + !message.premiumEffectWasPlayed; + } + + public static void copyParams(TLRPC.Message fromMessage, TLRPC.Message toMessage) { + toMessage.voiceTranscription = fromMessage.voiceTranscription; + toMessage.voiceTranscriptionOpen = fromMessage.voiceTranscriptionOpen; + toMessage.voiceTranscriptionFinal = fromMessage.voiceTranscriptionFinal; + toMessage.voiceTranscriptionRated = fromMessage.voiceTranscriptionRated; + toMessage.voiceTranscriptionId = fromMessage.voiceTranscriptionId; + toMessage.premiumEffectWasPlayed = fromMessage.premiumEffectWasPlayed; + } + + + public static void readLocalParams(TLRPC.Message message, NativeByteBuffer byteBuffer) { + if (byteBuffer == null) { + return; + } + int version = byteBuffer.readInt32(true); + TLObject params; + switch (version) { + case 1: + params = new Params_v1(message); + break; + default: + throw new RuntimeException("can't read params version = " + version); + } + params.readParams(byteBuffer, true); + } + + public static NativeByteBuffer writeLocalParams(TLRPC.Message message) { + if (isEmpty(message)) { + return null; + } + TLObject params = new Params_v1(message); + try { + NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(params.getObjectSize()); + params.serializeToStream(nativeByteBuffer); + return nativeByteBuffer; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + private static class Params_v1 extends TLObject { + + private final static int VERSION = 1; + final TLRPC.Message message; + int flags = 0; + + private Params_v1(TLRPC.Message message) { + this.message = message; + flags += message.voiceTranscription != null ? 1 : 0; + } + + @Override + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(VERSION); + stream.writeInt32(flags); + if ((flags & 1) != 0) { + stream.writeString(message.voiceTranscription); + } + stream.writeBool(message.voiceTranscriptionOpen); + stream.writeBool(message.voiceTranscriptionFinal); + stream.writeBool(message.voiceTranscriptionRated); + stream.writeInt64(message.voiceTranscriptionId); + + stream.writeBool(message.premiumEffectWasPlayed); + } + + @Override + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(true); + if ((flags & 1) != 0) { + message.voiceTranscription = stream.readString(exception); + } + message.voiceTranscriptionOpen = stream.readBool(exception); + message.voiceTranscriptionFinal = stream.readBool(exception); + message.voiceTranscriptionRated = stream.readBool(exception); + message.voiceTranscriptionId = stream.readInt64(exception); + + message.premiumEffectWasPlayed = stream.readBool(exception); + } + + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java index bd81bace9..f85ebb263 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java @@ -8,11 +8,17 @@ package org.telegram.messenger; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; +import android.os.SystemClock; import android.text.Layout; import android.text.Spannable; import android.text.SpannableString; @@ -21,11 +27,16 @@ import android.text.Spanned; import android.text.StaticLayout; import android.text.TextPaint; import android.text.TextUtils; +import android.text.style.CharacterStyle; import android.text.style.ClickableSpan; +import android.text.style.ImageSpan; import android.text.style.URLSpan; import android.text.util.Linkify; import android.util.Base64; +import android.view.View; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.collection.LongSparseArray; import org.telegram.PhoneFormat.PhoneFormat; @@ -37,7 +48,9 @@ import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.ChatMessageCell; +import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.TextStyleSpan; +import org.telegram.ui.Components.TranscribeButton; import org.telegram.ui.Components.TypefaceSpan; import org.telegram.ui.Components.URLSpanBotCommand; import org.telegram.ui.Components.URLSpanBrowser; @@ -51,6 +64,7 @@ import org.telegram.ui.Components.spoilers.SpoilerEffect; import java.io.BufferedReader; import java.io.File; import java.io.StringReader; +import java.lang.ref.WeakReference; import java.net.URLEncoder; import java.util.AbstractMap; import java.util.ArrayList; @@ -102,6 +116,7 @@ public class MessageObject { public boolean isReactionPush; public boolean putInDownloadsStore; public boolean isDownloadingFile; + public boolean forcePlayEffect; private int isRoundVideoCached; public long eventId; public int contentType; @@ -135,6 +150,8 @@ public class MessageObject { public boolean isRestrictedMessage; public long loadedFileSize; + public AtomicReference> viewRef = new AtomicReference<>(null); + public boolean isSpoilersRevealed; public byte[] sponsoredId; public int sponsoredChannelPost; @@ -247,6 +264,18 @@ public class MessageObject { return false; } + public static boolean isPremiumSticker(TLRPC.Document document) { + if (document == null || document.thumbs == null) { + return false; + } + for (int i = 0; i < document.video_thumbs.size(); i++) { + if ("f".equals(document.video_thumbs.get(i).type)) { + return true; + } + } + return false; + } + public int getEmojiOnlyCount() { return emojiOnlyCount; } @@ -278,6 +307,29 @@ public class MessageObject { } } + public boolean isPremiumSticker() { + if (messageOwner.media != null && messageOwner.media.nopremium) { + return false; + } + return isPremiumSticker(getDocument()); + } + + public TLRPC.VideoSize getPremiumStickerAnimation() { + return getPremiumStickerAnimation(getDocument()); + } + + public static TLRPC.VideoSize getPremiumStickerAnimation(TLRPC.Document document) { + if (document == null || document.thumbs == null) { + return null; + } + for (int i = 0; i < document.video_thumbs.size(); i++) { + if ("f".equals(document.video_thumbs.get(i).type)) { + return document.video_thumbs.get(i); + } + } + return null; + } + public static class SendAnimationData { public float x; public float y; @@ -1026,7 +1078,7 @@ public class MessageObject { paint = Theme.chat_msgTextPaint; } int[] emojiOnly = allowsBigEmoji() ? new int[1] : null; - messageText = Emoji.replaceEmoji(messageText, paint.getFontMetricsInt(), AndroidUtilities.dp(20), false, emojiOnly); + messageText = Emoji.replaceEmoji(messageText, paint.getFontMetricsInt(), AndroidUtilities.dp(20), false, emojiOnly, contentType == 0, viewRef); checkEmojiOnly(emojiOnly); emojiAnimatedSticker = null; if (emojiOnlyCount == 1 && !(message.media instanceof TLRPC.TL_messageMediaWebPage) && !(message.media instanceof TLRPC.TL_messageMediaInvoice) && message.entities.isEmpty() && (message.media instanceof TLRPC.TL_messageMediaEmpty || message.media == null) && messageOwner.grouped_id == 0) { @@ -1936,9 +1988,15 @@ public class MessageObject { } } else if (event.action instanceof TLRPC.TL_channelAdminLogEventActionParticipantJoinByRequest) { TLRPC.TL_channelAdminLogEventActionParticipantJoinByRequest action = (TLRPC.TL_channelAdminLogEventActionParticipantJoinByRequest) event.action; - messageText = replaceWithLink(LocaleController.getString("JoinedViaInviteLinkApproved", R.string.JoinedViaInviteLinkApproved), "un1", fromUser); - messageText = replaceWithLink(messageText, "un2", action.invite); - messageText = replaceWithLink(messageText, "un3", MessagesController.getInstance(currentAccount).getUser(action.approved_by)); + if (action.invite instanceof TLRPC.TL_chatInviteExported && "https://t.me/+PublicChat".equals(((TLRPC.TL_chatInviteExported) action.invite).link) || + action.invite instanceof TLRPC.TL_chatInvitePublicJoinRequests) { + messageText = replaceWithLink(LocaleController.getString("JoinedViaRequestApproved", R.string.JoinedViaRequestApproved), "un1", fromUser); + messageText = replaceWithLink(messageText, "un2", MessagesController.getInstance(currentAccount).getUser(action.approved_by)); + } else { + messageText = replaceWithLink(LocaleController.getString("JoinedViaInviteLinkApproved", R.string.JoinedViaInviteLinkApproved), "un1", fromUser); + messageText = replaceWithLink(messageText, "un2", action.invite); + messageText = replaceWithLink(messageText, "un3", MessagesController.getInstance(currentAccount).getUser(action.approved_by)); + } } else if (event.action instanceof TLRPC.TL_channelAdminLogEventActionSendMessage) { message = ((TLRPC.TL_channelAdminLogEventActionSendMessage) event.action).message; messageText = replaceWithLink(LocaleController.getString("EventLogSendMessages", R.string.EventLogSendMessages), "un1", fromUser); @@ -2018,7 +2076,7 @@ public class MessageObject { paint = Theme.chat_msgTextPaint; } int[] emojiOnly = allowsBigEmoji() ? new int[1] : null; - messageText = Emoji.replaceEmoji(messageText, paint.getFontMetricsInt(), AndroidUtilities.dp(20), false, emojiOnly); + messageText = Emoji.replaceEmoji(messageText, paint.getFontMetricsInt(), AndroidUtilities.dp(20), false, emojiOnly, contentType == 0, viewRef); checkEmojiOnly(emojiOnly); if (mediaController.isPlayingMessage(this)) { MessageObject player = mediaController.getPlayingMessageObject(); @@ -2075,14 +2133,18 @@ public class MessageObject { } public void applyNewText() { - if (TextUtils.isEmpty(messageOwner.message)) { + applyNewText(messageOwner.message); + } + + public void applyNewText(CharSequence text) { + if (TextUtils.isEmpty(text)) { return; } TLRPC.User fromUser = null; if (isFromUser()) { fromUser = MessagesController.getInstance(currentAccount).getUser(messageOwner.from_id.user_id); } - messageText = messageOwner.message; + messageText = text; TextPaint paint; if (messageOwner.media instanceof TLRPC.TL_messageMediaGame) { paint = Theme.chat_msgGameTextPaint; @@ -2090,7 +2152,7 @@ public class MessageObject { paint = Theme.chat_msgTextPaint; } int[] emojiOnly = allowsBigEmoji() ? new int[1] : null; - messageText = Emoji.replaceEmoji(messageText, paint.getFontMetricsInt(), AndroidUtilities.dp(20), false, emojiOnly); + messageText = Emoji.replaceEmoji(messageText, paint.getFontMetricsInt(), AndroidUtilities.dp(20), false, emojiOnly, contentType == 0, viewRef); checkEmojiOnly(emojiOnly); generateLayout(fromUser); } @@ -2144,10 +2206,25 @@ public class MessageObject { } else { name = ""; } + String currency; + try { + currency = LocaleController.getInstance().formatCurrencyString(messageOwner.action.total_amount, messageOwner.action.currency); + } catch (Exception e) { + currency = ""; + FileLog.e(e); + } if (replyMessageObject != null && replyMessageObject.messageOwner.media instanceof TLRPC.TL_messageMediaInvoice) { - messageText = LocaleController.formatString("PaymentSuccessfullyPaid", R.string.PaymentSuccessfullyPaid, LocaleController.getInstance().formatCurrencyString(messageOwner.action.total_amount, messageOwner.action.currency), name, replyMessageObject.messageOwner.media.title); + if (messageOwner.action.recurring_init) { + messageText = LocaleController.formatString(R.string.PaymentSuccessfullyPaidRecurrent, currency, name, replyMessageObject.messageOwner.media.title); + } else { + messageText = LocaleController.formatString("PaymentSuccessfullyPaid", R.string.PaymentSuccessfullyPaid, currency, name, replyMessageObject.messageOwner.media.title); + } } else { - messageText = LocaleController.formatString("PaymentSuccessfullyPaidNoItem", R.string.PaymentSuccessfullyPaidNoItem, LocaleController.getInstance().formatCurrencyString(messageOwner.action.total_amount, messageOwner.action.currency), name); + if (messageOwner.action.recurring_init) { + messageText = LocaleController.formatString(R.string.PaymentSuccessfullyPaidNoItemRecurrent, currency, name); + } else { + messageText = LocaleController.formatString("PaymentSuccessfullyPaidNoItem", R.string.PaymentSuccessfullyPaidNoItem, currency, name); + } } } @@ -2197,13 +2274,13 @@ public class MessageObject { messageText = replaceWithLink(LocaleController.getString("ActionPinnedPhoto", R.string.ActionPinnedPhoto), "un1", fromUser != null ? fromUser : chat); } else if (replyMessageObject.messageOwner.media instanceof TLRPC.TL_messageMediaGame) { messageText = replaceWithLink(LocaleController.formatString("ActionPinnedGame", R.string.ActionPinnedGame, "\uD83C\uDFAE " + replyMessageObject.messageOwner.media.game.title), "un1", fromUser != null ? fromUser : chat); - messageText = Emoji.replaceEmoji(messageText, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); + messageText = Emoji.replaceEmoji(messageText, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false, contentType == 0, viewRef); } else if (replyMessageObject.messageText != null && replyMessageObject.messageText.length() > 0) { CharSequence mess = replyMessageObject.messageText; if (mess.length() > 20) { mess = mess.subSequence(0, 20) + "..."; } - mess = Emoji.replaceEmoji(mess, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); + mess = Emoji.replaceEmoji(mess, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false, contentType == 0, viewRef); MediaDataController.addTextStyleRuns(replyMessageObject, (Spannable) mess); messageText = replaceWithLink(AndroidUtilities.formatSpannable(LocaleController.getString("ActionPinnedText", R.string.ActionPinnedText), mess), "un1", fromUser != null ? fromUser : chat); } else { @@ -2541,7 +2618,7 @@ public class MessageObject { if (str == null) { str = ""; } - text = Emoji.replaceEmoji(str, Theme.chat_msgBotButtonPaint.getFontMetricsInt(), AndroidUtilities.dp(15), false); + text = Emoji.replaceEmoji(str, Theme.chat_msgBotButtonPaint.getFontMetricsInt(), AndroidUtilities.dp(15), false, contentType == 0, viewRef); } StaticLayout staticLayout = new StaticLayout(text, Theme.chat_msgBotButtonPaint, AndroidUtilities.dp(2000), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); if (staticLayout.getLineCount() > 0) { @@ -2561,7 +2638,7 @@ public class MessageObject { TLRPC.TL_reactionCount reactionCount = messageOwner.reactions.results.get(a); int maxButtonSize = 0; botButtonsLayout.append(0).append(a); - CharSequence text = Emoji.replaceEmoji(String.format("%d %s", reactionCount.count, reactionCount.reaction), Theme.chat_msgBotButtonPaint.getFontMetricsInt(), AndroidUtilities.dp(15), false); + CharSequence text = Emoji.replaceEmoji(String.format("%d %s", reactionCount.count, reactionCount.reaction), Theme.chat_msgBotButtonPaint.getFontMetricsInt(), AndroidUtilities.dp(15), false, contentType == 0, viewRef); StaticLayout staticLayout = new StaticLayout(text, Theme.chat_msgBotButtonPaint, AndroidUtilities.dp(2000), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); if (staticLayout.getLineCount() > 0) { float width = staticLayout.getLineWidth(0); @@ -3309,7 +3386,7 @@ public class MessageObject { paint = Theme.chat_msgTextPaint; } int[] emojiOnly = allowsBigEmoji() ? new int[1] : null; - messageText = Emoji.replaceEmoji(messageText, paint.getFontMetricsInt(), AndroidUtilities.dp(20), false, emojiOnly); + messageText = Emoji.replaceEmoji(messageText, paint.getFontMetricsInt(), AndroidUtilities.dp(20), false, emojiOnly, contentType == 0, viewRef); checkEmojiOnly(emojiOnly); generateLayout(fromUser); return true; @@ -3818,7 +3895,7 @@ public class MessageObject { FileLog.e(e); } } - linkDescription = Emoji.replaceEmoji(linkDescription, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); + linkDescription = Emoji.replaceEmoji(linkDescription, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false, contentType == 0, viewRef); if (hashtagsType != 0) { if (!(linkDescription instanceof Spannable)) { linkDescription = new SpannableStringBuilder(linkDescription); @@ -3828,12 +3905,57 @@ public class MessageObject { } } + public CharSequence getVoiceTranscription() { + if (messageOwner == null || messageOwner.voiceTranscription == null) { + return null; + } + if (TextUtils.isEmpty(messageOwner.voiceTranscription)) { + SpannableString ssb = new SpannableString(LocaleController.getString("NoWordsRecognized", R.string.NoWordsRecognized)); + ssb.setSpan(new CharacterStyle() { + @Override + public void updateDrawState(TextPaint textPaint) { + textPaint.setTextSize(textPaint.getTextSize() * .8f); + textPaint.setColor(Theme.chat_timePaint.getColor()); + } + }, 0, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + return ssb; + } + CharSequence text = messageOwner.voiceTranscription; + if (!TextUtils.isEmpty(text)) { + text = Emoji.replaceEmoji(text, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false, contentType == 0, viewRef); + } + return text; + } + + public float measureVoiceTranscriptionHeight() { + CharSequence voiceTranscription = getVoiceTranscription(); + if (voiceTranscription == null) { + return 0; + } + int width = AndroidUtilities.displaySize.x - AndroidUtilities.dp(this.needDrawAvatar() ? 147 : 95); + StaticLayout captionLayout; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + captionLayout = StaticLayout.Builder.obtain(voiceTranscription, 0, voiceTranscription.length(), Theme.chat_msgTextPaint, width) + .setBreakStrategy(StaticLayout.BREAK_STRATEGY_HIGH_QUALITY) + .setHyphenationFrequency(StaticLayout.HYPHENATION_FREQUENCY_NONE) + .setAlignment(Layout.Alignment.ALIGN_NORMAL) + .build(); + } else { + captionLayout = new StaticLayout(voiceTranscription, Theme.chat_msgTextPaint, width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + } + return captionLayout.getHeight(); + } + + public boolean isVoiceTranscriptionOpen() { + return isVoice() && messageOwner != null && messageOwner.voiceTranscriptionOpen && messageOwner.voiceTranscription != null && (messageOwner.voiceTranscriptionFinal || TranscribeButton.isTranscribing(this)) && UserConfig.getInstance(currentAccount).isPremium(); + } + public void generateCaption() { if (caption != null || isRoundVideo()) { return; } if (!isMediaEmpty() && !(messageOwner.media instanceof TLRPC.TL_messageMediaGame) && !TextUtils.isEmpty(messageOwner.message)) { - caption = Emoji.replaceEmoji(messageOwner.message, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); + caption = Emoji.replaceEmoji(messageOwner.message, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false, contentType == 0, viewRef); boolean hasEntities; if (messageOwner.send_state != MESSAGE_SEND_STATE_SENT) { @@ -3843,15 +3965,16 @@ public class MessageObject { } boolean useManualParse = !hasEntities && ( - eventId != 0 || - messageOwner.media instanceof TLRPC.TL_messageMediaPhoto_old || - messageOwner.media instanceof TLRPC.TL_messageMediaPhoto_layer68 || - messageOwner.media instanceof TLRPC.TL_messageMediaPhoto_layer74 || - messageOwner.media instanceof TLRPC.TL_messageMediaDocument_old || - messageOwner.media instanceof TLRPC.TL_messageMediaDocument_layer68 || - messageOwner.media instanceof TLRPC.TL_messageMediaDocument_layer74 || - isOut() && messageOwner.send_state != MESSAGE_SEND_STATE_SENT || - messageOwner.id < 0); + eventId != 0 || + messageOwner.media instanceof TLRPC.TL_messageMediaPhoto_old || + messageOwner.media instanceof TLRPC.TL_messageMediaPhoto_layer68 || + messageOwner.media instanceof TLRPC.TL_messageMediaPhoto_layer74 || + messageOwner.media instanceof TLRPC.TL_messageMediaDocument_old || + messageOwner.media instanceof TLRPC.TL_messageMediaDocument_layer68 || + messageOwner.media instanceof TLRPC.TL_messageMediaDocument_layer74 || + isOut() && messageOwner.send_state != MESSAGE_SEND_STATE_SENT || + messageOwner.id < 0 + ); if (useManualParse) { if (containsUrls(caption)) { @@ -3874,11 +3997,14 @@ public class MessageObject { } public static void addUrlsByPattern(boolean isOut, CharSequence charSequence, boolean botCommands, int patternType, int duration, boolean check) { + if (charSequence == null) { + return; + } try { Matcher matcher; if (patternType == 3 || patternType == 4) { if (videoTimeUrlPattern == null) { - videoTimeUrlPattern = Pattern.compile("\\b(?:(\\d{1,2}):)?(\\d{1,3}):([0-5][0-9])\\b"); + videoTimeUrlPattern = Pattern.compile("\\b(?:(\\d{1,2}):)?(\\d{1,3}):([0-5][0-9])\\b([^\\n]*)"); } matcher = videoTimeUrlPattern.matcher(charSequence); } else if (patternType == 1) { @@ -3898,10 +4024,6 @@ public class MessageObject { int end = matcher.end(); URLSpanNoUnderline url = null; if (patternType == 3 || patternType == 4) { - URLSpan[] spans = spannable.getSpans(start, end, URLSpan.class); - if (spans != null && spans.length > 0) { - continue; - } int count = matcher.groupCount(); int s1 = matcher.start(1); int e1 = matcher.end(1); @@ -3909,9 +4031,19 @@ public class MessageObject { int e2 = matcher.end(2); int s3 = matcher.start(3); int e3 = matcher.end(3); + int s4 = matcher.start(4); + int e4 = matcher.end(4); int minutes = Utilities.parseInt(charSequence.subSequence(s2, e2)); int seconds = Utilities.parseInt(charSequence.subSequence(s3, e3)); int hours = s1 >= 0 && e1 >= 0 ? Utilities.parseInt(charSequence.subSequence(s1, e1)) : -1; + String label = s4 < 0 || e4 < 0 ? null : charSequence.subSequence(s4, e4).toString(); + if (s4 >= 0 || e4 >= 0) { + end = e3; + } + URLSpan[] spans = spannable.getSpans(start, end, URLSpan.class); + if (spans != null && spans.length > 0) { + continue; + } seconds += minutes * 60; if (hours > 0) { seconds += hours * 60 * 60; @@ -3924,6 +4056,7 @@ public class MessageObject { } else { url = new URLSpanNoUnderline("audio?" + seconds); } + url.label = label; } else { char ch = charSequence.charAt(start); if (patternType != 0) { @@ -4075,6 +4208,9 @@ public class MessageObject { } public boolean addEntitiesToText(CharSequence text, boolean photoViewer, boolean useManualParse) { + if (text == null) { + return false; + } if (isRestrictedMessage) { ArrayList entities = new ArrayList<>(); TLRPC.TL_messageEntityItalic entityItalic = new TLRPC.TL_messageEntityItalic(); @@ -4198,6 +4334,9 @@ public class MessageObject { for (int b = 0, N2 = runs.size(); b < N2; b++) { TextStyleSpan.TextStyleRun run = runs.get(b); + if ((run.flags & TextStyleSpan.FLAG_STYLE_SPOILER) != 0 && newRun.start >= run.start && newRun.end <= run.end) { + continue; + } if (newRun.start > run.start) { if (newRun.start >= run.end) { @@ -4804,7 +4943,7 @@ public class MessageObject { return messageOwner.realId != 0 ? messageOwner.realId : messageOwner.id; } - public static int getMessageSize(TLRPC.Message message) { + public static long getMessageSize(TLRPC.Message message) { TLRPC.Document document; if (message.media instanceof TLRPC.TL_messageMediaWebPage) { document = message.media.webpage.document; @@ -4819,7 +4958,7 @@ public class MessageObject { return 0; } - public int getSize() { + public long getSize() { return getMessageSize(messageOwner); } @@ -5789,7 +5928,7 @@ public class MessageObject { } public boolean needDrawForwarded() { - return (messageOwner.flags & TLRPC.MESSAGE_FLAG_FWD) != 0 && messageOwner.fwd_from != null && !messageOwner.fwd_from.imported && (messageOwner.fwd_from.saved_from_peer == null || messageOwner.fwd_from.from_id instanceof TLRPC.TL_peerChannel && messageOwner.fwd_from.saved_from_peer.channel_id != messageOwner.fwd_from.from_id.channel_id) && UserConfig.getInstance(currentAccount).getClientUserId() != getDialogId(); + return (messageOwner.flags & TLRPC.MESSAGE_FLAG_FWD) != 0 && messageOwner.fwd_from != null && !messageOwner.fwd_from.imported && (messageOwner.fwd_from.saved_from_peer == null || !(messageOwner.fwd_from.from_id instanceof TLRPC.TL_peerChannel) || messageOwner.fwd_from.saved_from_peer.channel_id != messageOwner.fwd_from.from_id.channel_id) && UserConfig.getInstance(currentAccount).getClientUserId() != getDialogId(); } public static boolean isForwardedMessage(TLRPC.Message message) { @@ -6115,13 +6254,17 @@ public class MessageObject { } public void checkMediaExistance() { + checkMediaExistance(true); + } + + public void checkMediaExistance(boolean useFileDatabaseQueue) { File cacheFile = null; attachPathExists = false; mediaExists = false; if (type == TYPE_PHOTO) { TLRPC.PhotoSize currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(photoThumbs, AndroidUtilities.getPhotoSize()); if (currentPhotoObject != null) { - File file = FileLoader.getPathToMessage(messageOwner); + File file = FileLoader.getInstance(currentAccount).getPathToMessage(messageOwner, useFileDatabaseQueue); if (needDrawBluredPreview()) { mediaExists = new File(file.getAbsolutePath() + ".enc").exists(); } @@ -6136,7 +6279,7 @@ public class MessageObject { attachPathExists = f.exists(); } if (!attachPathExists) { - File file = FileLoader.getPathToMessage(messageOwner); + File file = FileLoader.getInstance(currentAccount).getPathToMessage(messageOwner, useFileDatabaseQueue); if (type == 3 && needDrawBluredPreview()) { mediaExists = new File(file.getAbsolutePath() + ".enc").exists(); } @@ -6149,22 +6292,22 @@ public class MessageObject { TLRPC.Document document = getDocument(); if (document != null) { if (isWallpaper()) { - mediaExists = FileLoader.getPathToAttach(document, true).exists(); + mediaExists = FileLoader.getInstance(currentAccount).getPathToAttach(document, null, true, useFileDatabaseQueue).exists(); } else { - mediaExists = FileLoader.getPathToAttach(document).exists(); + mediaExists = FileLoader.getInstance(currentAccount).getPathToAttach(document, null, false, useFileDatabaseQueue).exists(); } } else if (type == 0) { TLRPC.PhotoSize currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(photoThumbs, AndroidUtilities.getPhotoSize()); if (currentPhotoObject == null) { return; } - mediaExists = FileLoader.getPathToAttach(currentPhotoObject, true).exists(); + mediaExists = FileLoader.getInstance(currentAccount).getPathToAttach(currentPhotoObject, null, true, useFileDatabaseQueue).exists(); } else if (type == 11) { TLRPC.Photo photo = messageOwner.action.photo; if (photo == null || photo.video_sizes.isEmpty()) { return; } - mediaExists = FileLoader.getPathToAttach(photo.video_sizes.get(0), true).exists(); + mediaExists = FileLoader.getInstance(currentAccount).getPathToAttach(photo.video_sizes.get(0), null, true, useFileDatabaseQueue).exists(); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java index 19d9102d2..1a6d12337 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java @@ -54,9 +54,11 @@ import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.JoinCallAlert; import org.telegram.ui.Components.MotionBackgroundDrawable; import org.telegram.ui.Components.SwipeGestureSettingsView; +import org.telegram.ui.Components.TranscribeButton; import org.telegram.ui.DialogsActivity; import org.telegram.ui.EditWidgetActivity; import org.telegram.ui.LaunchActivity; +import org.telegram.ui.PremiumPreviewFragment; import org.telegram.ui.ProfileActivity; import java.io.File; @@ -142,7 +144,8 @@ public class MessagesController extends BaseController implements NotificationCe private LongSparseArray> pollsToCheck = new LongSparseArray<>(); private int pollsToCheckSize; private long lastViewsCheckTime; - + public SparseIntArray premiumFeaturesTypesToPosition = new SparseIntArray(); + public ArrayList dialogFilters = new ArrayList<>(); public SparseArray dialogFiltersById = new SparseArray<>(); private boolean loadingSuggestedFilters; @@ -306,6 +309,7 @@ public class MessagesController extends BaseController implements NotificationCe public boolean backgroundConnection; public float animatedEmojisZoom; public boolean filtersEnabled; + public boolean getfileExperimentalParams; public boolean showFiltersTooltip; public String venueSearchBot; public String gifSearchBot; @@ -335,11 +339,37 @@ public class MessagesController extends BaseController implements NotificationCe public int ringtoneDurationMax; public int ringtoneSizeMax; + public int channelsLimitDefault; + public int channelsLimitPremium; + public int savedGifsLimitDefault; + public int savedGifsLimitPremium; + public int stickersFavedLimitDefault; + public int stickersFavedLimitPremium; + public int dialogFiltersLimitDefault; + public int dialogFiltersLimitPremium; + public int dialogFiltersChatsLimitDefault; + public int dialogFiltersChatsLimitPremium; + public int dialogFiltersPinnedLimitDefault; + public int dialogFiltersPinnedLimitPremium; + public int publicLinksLimitDefault; + public int publicLinksLimitPremium; + public int captionLengthLimitDefault; + public int captionLengthLimitPremium; + public int aboutLengthLimitDefault; + public int aboutLengthLimitPremium; + + public int uploadMaxFileParts; + public int uploadMaxFilePartsPremium; + + public String premiumBotUsername; + public String premiumInvoiceSlug; + private SharedPreferences notificationsPreferences; private SharedPreferences mainPreferences; private SharedPreferences emojiPreferences; public volatile boolean ignoreSetOnline; + public boolean premiumLocked; public void getNextReactionMention(long dialogId, int count, Consumer callback) { final MessagesStorage messagesStorage = getMessagesStorage(); @@ -381,6 +411,125 @@ public class MessagesController extends BaseController implements NotificationCe }); } + public void updatePremium(boolean premium) { + if (dialogFilters.isEmpty()) { + return; + } + if (!premium) { + if (!dialogFilters.get(0).isDefault()) { + for (int i = 1; i < dialogFilters.size(); i++) { + if (dialogFilters.get(i).isDefault()) { + DialogFilter defaultFilter = dialogFilters.remove(i); + dialogFilters.add(0, defaultFilter); + break; + } + } + } + lockFiltersInternal(); + } else { + for (int i = 0; i < dialogFilters.size(); i++) { + dialogFilters.get(i).locked = false; + } + } + + getMessagesStorage().saveDialogFiltersOrder(); + getNotificationCenter().postNotificationName(NotificationCenter.dialogFiltersUpdated); + } + + public void lockFiltersInternal() { + boolean changed = false; + if (!getUserConfig().isPremium() && dialogFilters.size() - 1 > dialogFiltersLimitDefault) { + int n = dialogFilters.size() - 1 - dialogFiltersLimitDefault; + ArrayList filtersSortedById = new ArrayList<>(dialogFilters); + Collections.reverse(filtersSortedById); + for (int i = 0; i < filtersSortedById.size(); i++) { + if (i < n) { + if (!filtersSortedById.get(i).locked) { + changed = true; + } + filtersSortedById.get(i).locked = true; + } else { + if (filtersSortedById.get(i).locked) { + changed = true; + } + filtersSortedById.get(i).locked = false; + } + } + } + if (changed) { + getNotificationCenter().postNotificationName(NotificationCenter.dialogFiltersUpdated); + } + } + + public int getCaptionMaxLengthLimit() { + return getUserConfig().isPremium() ? captionLengthLimitPremium : captionLengthLimitDefault; + } + + public int getAboutLimit() { + return getUserConfig().isPremium() ? aboutLengthLimitPremium : aboutLengthLimitDefault; + } + + public boolean isPremiumUser(TLRPC.User currentUser) { + return !premiumLocked && currentUser.premium; + } + + + public ArrayList filterPremiumStickers(ArrayList stickerSets) { + if (!premiumLocked) { + return stickerSets; + } + for (int i = 0; i < stickerSets.size(); i++) { + TLRPC.TL_messages_stickerSet newSet = MessagesController.getInstance(currentAccount).filterPremiumStickers(stickerSets.get(i)); + if (newSet == null) { + stickerSets.remove(i); + i--; + } else { + stickerSets.set(i, newSet); + } + } + return stickerSets; + } + + public TLRPC.TL_messages_stickerSet filterPremiumStickers(TLRPC.TL_messages_stickerSet stickerSet) { + if (!premiumLocked || stickerSet == null) { + return stickerSet; + } + try { + + boolean hasPremiumSticker = false; + for (int i = 0; i < stickerSet.documents.size(); i++) { + if (MessageObject.isPremiumSticker(stickerSet.documents.get(i))) { + hasPremiumSticker = true; + break; + } + } + if (hasPremiumSticker) { + NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(stickerSet.getObjectSize()); + stickerSet.serializeToStream(nativeByteBuffer); + nativeByteBuffer.position(0); + TLRPC.TL_messages_stickerSet newStickersSet = new TLRPC.TL_messages_stickerSet(); + nativeByteBuffer.readInt32(true); + newStickersSet.readParams(nativeByteBuffer, true); + nativeByteBuffer.reuse(); + stickerSet = newStickersSet; + + for (int i = 0; i < stickerSet.documents.size(); i++) { + if (MessageObject.isPremiumSticker(stickerSet.documents.get(i))) { + stickerSet.documents.remove(i); + stickerSet.packs.remove(i); + i--; + if (stickerSet.documents.isEmpty()) { + return null; + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return stickerSet; + } + private class SponsoredMessagesInfo { private ArrayList messages; private long loadTime; @@ -555,6 +704,7 @@ public class MessagesController extends BaseController implements NotificationCe private static int dialogFilterPointer = 10; public int localId = dialogFilterPointer++; + public boolean locked; public boolean includesDialog(AccountInstance accountInstance, long dialogId) { MessagesController messagesController = accountInstance.getMessagesController(); @@ -634,6 +784,10 @@ public class MessagesController extends BaseController implements NotificationCe return alwaysShow.contains(dialogId); } + + public boolean isDefault() { + return id == 0; + } } private DialogFilter sortingDialogFilter; @@ -759,7 +913,6 @@ public class MessagesController extends BaseController implements NotificationCe public MessagesController(int num) { super(num); - currentAccount = num; ImageLoader.getInstance(); getMessagesStorage(); getLocationController(); @@ -832,6 +985,7 @@ public class MessagesController extends BaseController implements NotificationCe qrLoginCamera = mainPreferences.getBoolean("qrLoginCamera", false); saveGifsWithStickers = mainPreferences.getBoolean("saveGifsWithStickers", false); filtersEnabled = mainPreferences.getBoolean("filtersEnabled", false); + getfileExperimentalParams = mainPreferences.getBoolean("getfileExperimentalParams", false); showFiltersTooltip = mainPreferences.getBoolean("showFiltersTooltip", false); autoarchiveAvailable = mainPreferences.getBoolean("autoarchiveAvailable", false); groupCallVideoMaxParticipants = mainPreferences.getInt("groipCallVideoMaxParticipants", 30); @@ -845,6 +999,31 @@ public class MessagesController extends BaseController implements NotificationCe roundVideoBitrate = mainPreferences.getInt("roundVideoBitrate", 1000); roundAudioBitrate = mainPreferences.getInt("roundAudioBitrate", 64); pendingSuggestions = mainPreferences.getStringSet("pendingSuggestions", null); + channelsLimitDefault = mainPreferences.getInt("channelsLimitDefault", 500); + channelsLimitPremium = mainPreferences.getInt("channelsLimitPremium", 2 * channelsLimitDefault); + savedGifsLimitDefault = mainPreferences.getInt("savedGifsLimitDefault", 200); + savedGifsLimitPremium = mainPreferences.getInt("savedGifsLimitPremium", 400); + stickersFavedLimitDefault = mainPreferences.getInt("stickersFavedLimitDefault", 5); + stickersFavedLimitPremium = mainPreferences.getInt("stickersFavedLimitPremium", 200); + dialogFiltersLimitDefault = mainPreferences.getInt("dialogFiltersLimitDefault", 10); + dialogFiltersLimitPremium = mainPreferences.getInt("dialogFiltersLimitPremium", 20); + dialogFiltersChatsLimitDefault = mainPreferences.getInt("dialogFiltersChatsLimitDefault", 100); + dialogFiltersChatsLimitPremium = mainPreferences.getInt("dialogFiltersChatsLimitPremium", 200); + dialogFiltersPinnedLimitDefault = mainPreferences.getInt("dialogFiltersPinnedLimitDefault", 5); + dialogFiltersPinnedLimitPremium = mainPreferences.getInt("dialogFiltersPinnedLimitPremium", 10); + publicLinksLimitDefault = mainPreferences.getInt("publicLinksLimitDefault", 10); + publicLinksLimitPremium = mainPreferences.getInt("publicLinksLimitPremium", 20); + captionLengthLimitDefault = mainPreferences.getInt("captionLengthLimitDefault", 1024); + captionLengthLimitPremium = mainPreferences.getInt("captionLengthLimitPremium", 4096); + aboutLengthLimitDefault = mainPreferences.getInt("aboutLengthLimitDefault", 70); + aboutLengthLimitPremium = mainPreferences.getInt("aboutLengthLimitPremium", 140); + uploadMaxFileParts = mainPreferences.getInt("uploadMaxFileParts", (int) (FileLoader.DEFAULT_MAX_FILE_SIZE / 1024L / 512L)); + uploadMaxFilePartsPremium = mainPreferences.getInt("uploadMaxFilePartsPremium", uploadMaxFileParts * 2); + premiumInvoiceSlug = mainPreferences.getString("premiumInvoiceSlug", null); + premiumBotUsername = mainPreferences.getString("premiumBotUsername", null); + premiumLocked = mainPreferences.getBoolean("premiumLocked", false); + + loadPremiumFeaturesPreviewOrder(mainPreferences.getString("premiumFeaturesTypesToPosition", null)); if (pendingSuggestions != null) { pendingSuggestions = new HashSet<>(pendingSuggestions); } else { @@ -965,8 +1144,15 @@ public class MessagesController extends BaseController implements NotificationCe FileLog.e(e); } } + + if (BuildVars.DEBUG_VERSION) { + AndroidUtilities.runOnUIThread(() -> { + loadAppConfig(); + }, 2000); + } } + private void sendLoadPeersRequest(TLObject req, ArrayList requests, TLRPC.messages_Dialogs pinnedDialogs, TLRPC.messages_Dialogs pinnedRemoteDialogs, ArrayList users, ArrayList chats, ArrayList filtersToSave, SparseArray filtersToDelete, ArrayList filtersOrder, HashMap> filterDialogRemovals, HashMap> filterUserRemovals, HashSet filtersUnreadCounterReset) { getConnectionsManager().sendRequest(req, (response, error) -> { if (response instanceof TLRPC.TL_messages_chats) { @@ -1092,6 +1278,7 @@ public class MessagesController extends BaseController implements NotificationCe enc_chats_dict = null; } + ArrayList newMessages = new ArrayList<>(); for (int a = 0; a < pinnedDialogs.messages.size(); a++) { TLRPC.Message message = pinnedDialogs.messages.get(a); if (message.peer_id.channel_id != 0) { @@ -1105,9 +1292,11 @@ public class MessagesController extends BaseController implements NotificationCe continue; } } - MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, false, true); + MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, false, false); + newMessages.add(messageObject); new_dialogMessage.put(messageObject.getDialogId(), messageObject); } + getFileLoader().checkMediaExistance(newMessages); for (int a = 0; a < pinnedDialogs.dialogs.size(); a++) { TLRPC.Dialog d = pinnedDialogs.dialogs.get(a); @@ -1317,6 +1506,8 @@ public class MessagesController extends BaseController implements NotificationCe loadingRemoteFilters = false; getNotificationCenter().postNotificationName(NotificationCenter.filterSettingsUpdated); } + + lockFiltersInternal(); }); }); } @@ -1407,6 +1598,7 @@ public class MessagesController extends BaseController implements NotificationCe if (dialogFilters.size() == 1 && SharedConfig.getChatSwipeAction(currentAccount) != SwipeGestureSettingsView.SWIPE_GESTURE_FOLDERS) { SharedConfig.updateChatListSwipeSetting(SwipeGestureSettingsView.SWIPE_GESTURE_FOLDERS); } + lockFiltersInternal(); } public void removeFilter(DialogFilter filter) { @@ -1430,6 +1622,45 @@ public class MessagesController extends BaseController implements NotificationCe for (int a = 0, N = object.value.size(); a < N; a++) { TLRPC.TL_jsonObjectValue value = object.value.get(a); switch (value.key) { + case "premium_purchase_blocked": { + if (value.value instanceof TLRPC.TL_jsonBool) { + if (premiumLocked != ((TLRPC.TL_jsonBool) value.value).value) { + premiumLocked = ((TLRPC.TL_jsonBool) value.value).value; + editor.putBoolean("premiumLocked", premiumLocked); + changed = true; + } + } + break; + } + case "premium_bot_username": { + if (value.value instanceof TLRPC.TL_jsonString) { + String string = ((TLRPC.TL_jsonString) value.value).value; + if (!string.equals(premiumBotUsername)) { + premiumBotUsername = string; + editor.putString("premiumBotUsername", premiumBotUsername); + changed = true; + } + } + break; + } + case "premium_invoice_slug": { + if (value.value instanceof TLRPC.TL_jsonString) { + String string = ((TLRPC.TL_jsonString) value.value).value; + if (!string.equals(premiumInvoiceSlug)) { + premiumInvoiceSlug = string; + editor.putString("premiumInvoiceSlug", premiumInvoiceSlug); + changed = true; + } + } + break; + } + case "premium_promo_order": { + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray order = (TLRPC.TL_jsonArray) value.value; + changed = savePremiumFeaturesPreviewOrder(editor, order.value); + } + break; + } case "emojies_animated_zoom": { if (value.value instanceof TLRPC.TL_jsonNumber) { TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; @@ -1441,6 +1672,17 @@ public class MessagesController extends BaseController implements NotificationCe } break; } + case "getfile_experimental_params": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != getfileExperimentalParams) { + getfileExperimentalParams = bool.value; + editor.putBoolean("getfileExperimentalParams", getfileExperimentalParams); + changed = true; + } + } + break; + } case "dialog_filters_enabled": { if (value.value instanceof TLRPC.TL_jsonBool) { TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; @@ -1927,10 +2169,230 @@ public class MessagesController extends BaseController implements NotificationCe } break; } + case "channels_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != channelsLimitDefault) { + channelsLimitDefault = (int) number.value; + editor.putInt("channelsLimitDefault", channelsLimitDefault); + changed = true; + } + } + break; + } + case "channels_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != channelsLimitPremium) { + channelsLimitPremium = (int) number.value; + editor.putInt("channelsLimitPremium", channelsLimitPremium); + changed = true; + } + } + break; + } + case "saved_gifs_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != savedGifsLimitDefault) { + savedGifsLimitDefault = (int) number.value; + editor.putInt("savedGifsLimitDefault", savedGifsLimitDefault); + changed = true; + } + } + break; + } + case "saved_gifs_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != savedGifsLimitPremium) { + savedGifsLimitPremium = (int) number.value; + editor.putInt("savedGifsLimitPremium", savedGifsLimitPremium); + changed = true; + } + } + break; + } + case "stickers_faved_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != stickersFavedLimitDefault) { + stickersFavedLimitDefault = (int) number.value; + editor.putInt("stickersFavedLimitDefault", stickersFavedLimitDefault); + changed = true; + } + } + break; + } + case "stickers_faved_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != stickersFavedLimitPremium) { + stickersFavedLimitPremium = (int) number.value; + editor.putInt("stickersFavedLimitPremium", stickersFavedLimitPremium); + changed = true; + } + } + break; + } + case "dialog_filters_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersLimitDefault) { + dialogFiltersLimitDefault = (int) number.value; + editor.putInt("dialogFiltersLimitDefault", dialogFiltersLimitDefault); + changed = true; + } + } + break; + } + case "dialog_filters_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersLimitPremium) { + dialogFiltersLimitPremium = (int) number.value; + editor.putInt("dialogFiltersLimitPremium", dialogFiltersLimitPremium); + changed = true; + } + } + break; + } + case "dialog_filters_chats_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersChatsLimitDefault) { + dialogFiltersChatsLimitDefault = (int) number.value; + editor.putInt("dialogFiltersChatsLimitDefault", dialogFiltersChatsLimitDefault); + changed = true; + } + } + break; + } + case "dialog_filters_chats_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersChatsLimitPremium) { + dialogFiltersChatsLimitPremium = (int) number.value; + editor.putInt("dialogFiltersChatsLimitPremium", dialogFiltersChatsLimitPremium); + changed = true; + } + } + break; + } + case "dialog_filters_pinned_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersPinnedLimitDefault) { + dialogFiltersPinnedLimitDefault = (int) number.value; + editor.putInt("dialogFiltersPinnedLimitDefault", dialogFiltersPinnedLimitDefault); + changed = true; + } + } + break; + } + case "dialog_filters_pinned_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersPinnedLimitPremium) { + dialogFiltersPinnedLimitPremium = (int) number.value; + editor.putInt("dialogFiltersPinnedLimitPremium", dialogFiltersPinnedLimitPremium); + changed = true; + } + } + break; + } + case "upload_max_fileparts_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != uploadMaxFileParts) { + uploadMaxFileParts = (int) number.value; + editor.putInt("uploadMaxFileParts", uploadMaxFileParts); + changed = true; + } + } + break; + } + case "upload_max_fileparts_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != uploadMaxFilePartsPremium) { + uploadMaxFilePartsPremium = (int) number.value; + editor.putInt("uploadMaxFilePartsPremium", uploadMaxFilePartsPremium); + changed = true; + } + } + break; + } + case "channels_public_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != publicLinksLimitDefault) { + publicLinksLimitDefault = (int) number.value; + editor.putInt("publicLinksLimit", publicLinksLimitDefault); + changed = true; + } + } + break; + } + case "channels_public_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != publicLinksLimitPremium) { + publicLinksLimitPremium = (int) number.value; + editor.putInt("publicLinksLimitPremium", publicLinksLimitPremium); + changed = true; + } + } + break; + } + case "caption_length_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != captionLengthLimitDefault) { + captionLengthLimitDefault = (int) number.value; + editor.putInt("captionLengthLimitDefault", captionLengthLimitDefault); + changed = true; + } + } + break; + } + case "caption_length_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != captionLengthLimitPremium) { + captionLengthLimitPremium = (int) number.value; + editor.putInt("captionLengthLimitPremium", captionLengthLimitPremium); + changed = true; + } + } + break; + } + case "about_length_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != aboutLengthLimitDefault) { + aboutLengthLimitDefault = (int) number.value; + editor.putInt("aboutLengthLimitDefault", aboutLengthLimitDefault); + changed = true; + } + } + break; + } + case "about_length_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != aboutLengthLimitPremium) { + aboutLengthLimitPremium = (int) number.value; + editor.putInt("aboutLengthLimitPremium", aboutLengthLimitPremium); + changed = true; + } + } + break; + } } } if (changed) { - editor.commit(); + editor.apply(); } if (keelAliveChanged) { ApplicationLoader.startPushService(); @@ -1942,6 +2404,49 @@ public class MessagesController extends BaseController implements NotificationCe })); } + private boolean savePremiumFeaturesPreviewOrder(SharedPreferences.Editor editor, ArrayList value) { + StringBuilder stringBuilder = new StringBuilder(); + premiumFeaturesTypesToPosition.clear(); + for (int i = 0; i < value.size(); i++) { + String s = null; + if (value.get(i) instanceof TLRPC.TL_jsonString) { + s = ((TLRPC.TL_jsonString) value.get(i)).value; + } + if (s != null) { + int type = PremiumPreviewFragment.severStringToFeatureType(s); + if (type >= 0) { + premiumFeaturesTypesToPosition.put(type, i); + if (stringBuilder.length() > 0) { + stringBuilder.append('_'); + } + stringBuilder.append(type); + } + } + } + + boolean changed; + if (stringBuilder.length() > 0) { + String string = stringBuilder.toString(); + changed = !string.equals(mainPreferences.getString("premiumFeaturesTypesToPosition", null)); + editor.putString("premiumFeaturesTypesToPosition", string); + } else { + editor.remove("premiumFeaturesTypesToPosition"); + changed = mainPreferences.getString("premiumFeaturesTypesToPosition", null) != null; + } + return changed; + } + + private void loadPremiumFeaturesPreviewOrder(String string) { + premiumFeaturesTypesToPosition.clear(); + if (string != null) { + String[] types = string.split("_"); + for (int i = 0; i < types.length; i++) { + int type = Integer.parseInt(types[i]); + premiumFeaturesTypesToPosition.put(type, i); + } + } + + } public void removeSuggestion(long did, String suggestion) { if (TextUtils.isEmpty(suggestion)) { return; @@ -1984,6 +2489,7 @@ public class MessagesController extends BaseController implements NotificationCe revokeTimePmLimit = config.revoke_pm_time_limit; canRevokePmInbox = config.revoke_pm_inbox; linkPrefix = config.me_url_prefix; + boolean forceTryIpV6 = config.force_try_ipv6; if (linkPrefix.endsWith("/")) { linkPrefix = linkPrefix.substring(0, linkPrefix.length() - 1); } @@ -2101,8 +2607,10 @@ public class MessagesController extends BaseController implements NotificationCe editor.putString("dcDomainName2", dcDomainName); editor.putInt("webFileDatacenterId", webFileDatacenterId); editor.putString("suggestedLangCode", suggestedLangCode); + editor.putBoolean("forceTryIpV6", forceTryIpV6); editor.commit(); + getConnectionsManager().setForceTryIpV6(forceTryIpV6); LocaleController.getInstance().checkUpdateForCurrentRemoteLocale(currentAccount, config.lang_pack_version, config.base_lang_pack_version); getNotificationCenter().postNotificationName(NotificationCenter.configLoaded); }); @@ -2327,7 +2835,7 @@ public class MessagesController extends BaseController implements NotificationCe File path = new File(ApplicationLoader.getFilesDirFixed(), overrideWallpaperInfo.originalFileName); if (wallPaper != null) { try { - AndroidUtilities.copyFile(path, FileLoader.getPathToAttach(wallPaper.document, true)); + AndroidUtilities.copyFile(path, getFileLoader().getPathToAttach(wallPaper.document, true)); } catch (Exception ignore) { } @@ -2816,7 +3324,7 @@ public class MessagesController extends BaseController implements NotificationCe } addSupportUser(); - AndroidUtilities.runOnUIThread(()->{ + AndroidUtilities.runOnUIThread(() -> { getNotificationCenter().postNotificationName(NotificationCenter.suggestedFiltersLoaded); getNotificationCenter().postNotificationName(NotificationCenter.dialogFiltersUpdated); getNotificationCenter().postNotificationName(NotificationCenter.dialogsNeedReload); @@ -3595,6 +4103,7 @@ public class MessagesController extends BaseController implements NotificationCe applyDialogNotificationsSettings(user.id, userFull.notify_settings); if (userFull.bot_info instanceof TLRPC.TL_botInfo) { + userFull.bot_info.user_id = user.id; getMediaDataController().putBotInfo(user.id, userFull.bot_info); } int index = blockePeers.indexOfKey(user.id); @@ -3620,7 +4129,11 @@ public class MessagesController extends BaseController implements NotificationCe if (!names.equals(userFull.user.first_name + userFull.user.last_name + userFull.user.username)) { getNotificationCenter().postNotificationName(NotificationCenter.updateInterfaces, UPDATE_MASK_NAME); } + if (userFull.user.photo != null && userFull.user.photo.has_video) { + getNotificationCenter().postNotificationName(NotificationCenter.updateInterfaces, UPDATE_MASK_AVATAR); + } if (userFull.bot_info instanceof TLRPC.TL_botInfo) { + userFull.bot_info.user_id = userFull.id; getNotificationCenter().postNotificationName(NotificationCenter.botInfoDidLoad, userFull.bot_info, classGuid); } getNotificationCenter().postNotificationName(NotificationCenter.userInfoDidLoad, user.id, userFull); @@ -4216,7 +4729,7 @@ public class MessagesController extends BaseController implements NotificationCe setUserAdminRole(chatId, user, rights, rank, isChannel, parentFragment, addingNew, forceAdmin, botHash, onSuccess, null); } - public void setUserAdminRole(long chatId, TLRPC.User user, TLRPC.TL_chatAdminRights rights, String rank, boolean isChannel, BaseFragment parentFragment, boolean addingNew, boolean forceAdmin, String botHash, Runnable onSuccess, Runnable onError) { + public void setUserAdminRole(long chatId, TLRPC.User user, TLRPC.TL_chatAdminRights rights, String rank, boolean isChannel, BaseFragment parentFragment, boolean addingNew, boolean forceAdmin, String botHash, Runnable onSuccess, ErrorDelegate onError) { if (user == null || rights == null) { return; } @@ -4239,11 +4752,11 @@ public class MessagesController extends BaseController implements NotificationCe } else { AndroidUtilities.runOnUIThread(() -> AlertsCreator.processError(currentAccount, error, parentFragment, req, isChannel)); if (onError != null) { - AndroidUtilities.runOnUIThread(onError); + AndroidUtilities.runOnUIThread(() -> onError.run(error)); } } }; - if (chat.megagroup && addingNew) { + if (chat.megagroup && addingNew || !TextUtils.isEmpty(botHash)) { addUserToChat(chatId, user, 0, botHash, parentFragment, true, () -> getConnectionsManager().sendRequest(req, requestDelegate), onError); } else { getConnectionsManager().sendRequest(req, requestDelegate); @@ -4264,11 +4777,11 @@ public class MessagesController extends BaseController implements NotificationCe } else { AndroidUtilities.runOnUIThread(() -> AlertsCreator.processError(currentAccount, error, parentFragment, req, false)); if (onError != null) { - AndroidUtilities.runOnUIThread(onError); + AndroidUtilities.runOnUIThread(() -> onError.run(error)); } } }; - if (req.is_admin || addingNew) { + if (req.is_admin || addingNew || !TextUtils.isEmpty(botHash)) { addUserToChat(chatId, user, 0, botHash, parentFragment, true, () -> getConnectionsManager().sendRequest(req, requestDelegate), onError); } else { getConnectionsManager().sendRequest(req, requestDelegate); @@ -4863,7 +5376,7 @@ public class MessagesController extends BaseController implements NotificationCe long fromId = 0; if (fromUser != null) { fromId = fromUser.id; - } else if (fromChat != null){ + } else if (fromChat != null) { fromId = fromChat.id; } if (offset == 0) { @@ -6728,7 +7241,9 @@ public class MessagesController extends BaseController implements NotificationCe } if (!needProcess && DialogObject.isEncryptedDialog(dialogId)) { - AndroidUtilities.runOnUIThread(() -> getNotificationCenter().postNotificationName(NotificationCenter.messagesDidLoadWithoutProcess, classGuid, messagesRes.messages.size(), isCache, isEnd, last_message_id)); + AndroidUtilities.runOnUIThread(() -> { + getNotificationCenter().postNotificationName(NotificationCenter.messagesDidLoadWithoutProcess, classGuid, messagesRes.messages.size(), isCache, isEnd, last_message_id); + }); return; } ArrayList objects = new ArrayList<>(); @@ -6740,7 +7255,7 @@ public class MessagesController extends BaseController implements NotificationCe TLRPC.Message message = messagesRes.messages.get(a); message.dialog_id = dialogId; long checkFileTime = SystemClock.elapsedRealtime(); - MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, true, true); + MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, true, false); messageObject.createStrippedThumb(); fileProcessTime += (SystemClock.elapsedRealtime() - checkFileTime); messageObject.scheduled = mode == 1; @@ -6767,6 +7282,8 @@ public class MessagesController extends BaseController implements NotificationCe } } } + + getFileLoader().checkMediaExistance(objects); if (BuildVars.LOGS_ENABLED) { FileLog.d("process time = " + (SystemClock.elapsedRealtime() - startProcessTime) + " file time = " + fileProcessTime + " for dialog = " + dialogId); } @@ -7815,6 +8332,7 @@ public class MessagesController extends BaseController implements NotificationCe } TLRPC.Message lastMessage = null; + ArrayList newMessages = new ArrayList<>(); for (int a = 0; a < dialogsRes.messages.size(); a++) { TLRPC.Message message = dialogsRes.messages.get(a); if (lastMessage == null || message.date < lastMessage.date) { @@ -7831,9 +8349,11 @@ public class MessagesController extends BaseController implements NotificationCe continue; } } - MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, false, true); + MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, false, false); + newMessages.add(messageObject); new_dialogMessage.put(messageObject.getDialogId(), messageObject); } + getFileLoader().checkMediaExistance(newMessages); if (!fromCache && !migrate && dialogsLoadOffset[UserConfig.i_dialogsLoadOffsetId] != -1 && loadType == 0) { int totalDialogsLoadCount = getUserConfig().getTotalDialogsCount(folderId); @@ -8493,6 +9013,7 @@ public class MessagesController extends BaseController implements NotificationCe chatsDict.put(c.id, c); } + ArrayList newMessages = new ArrayList<>(); for (int a = 0; a < dialogsRes.messages.size(); a++) { TLRPC.Message message = dialogsRes.messages.get(a); if (promoDialogId == 0 || promoDialogId != message.dialog_id) { @@ -8508,9 +9029,12 @@ public class MessagesController extends BaseController implements NotificationCe } } } - MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, false, true); + MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, false, false); + newMessages.add(messageObject); new_dialogMessage.put(messageObject.getDialogId(), messageObject); } + getFileLoader().checkMediaExistance(newMessages); + for (int a = 0; a < dialogsRes.dialogs.size(); a++) { TLRPC.Dialog d = dialogsRes.dialogs.get(a); DialogObject.initDialog(d); @@ -9222,6 +9746,10 @@ public class MessagesController extends BaseController implements NotificationCe } public void convertToMegaGroup(Context context, long chatId, BaseFragment fragment, MessagesStorage.LongCallback convertRunnable) { + convertToMegaGroup(context, chatId, fragment, convertRunnable, null); + } + + public void convertToMegaGroup(Context context, long chatId, BaseFragment fragment, MessagesStorage.LongCallback convertRunnable, Runnable errorRunnable) { TLRPC.TL_messages_migrateChat req = new TLRPC.TL_messages_migrateChat(); req.chat_id = chatId; AlertDialog progressDialog = context != null ? new AlertDialog(context, 3) : null; @@ -9252,6 +9780,9 @@ public class MessagesController extends BaseController implements NotificationCe } }); } else { + if (errorRunnable != null) { + errorRunnable.run(); + } AndroidUtilities.runOnUIThread(() -> { if (convertRunnable != null) { convertRunnable.run(0); @@ -9380,7 +9911,59 @@ public class MessagesController extends BaseController implements NotificationCe }, ConnectionsManager.RequestFlagInvokeAfter); } - public void toogleChannelSignatures(long chatId, boolean enabled) { + public void toggleChatJoinToSend(long chatId, boolean enabled, Runnable onSuccess, Runnable onError) { + TLRPC.TL_channels_toggleJoinToSend req = new TLRPC.TL_channels_toggleJoinToSend(); + req.channel = getInputChannel(chatId); + req.enabled = enabled; + getConnectionsManager().sendRequest(req, (response, error) -> { + if (response != null) { + processUpdates((TLRPC.Updates) response, false); + AndroidUtilities.runOnUIThread(() -> getNotificationCenter().postNotificationName(NotificationCenter.updateInterfaces, UPDATE_MASK_CHAT)); + if (onSuccess != null) { + onSuccess.run(); + } + } + if (error != null) { + if (!"CHAT_NOT_MODIFIED".equals(error.text)) { + if (onError != null) { + onError.run(); + } + } else if (response == null) { + if (onSuccess != null) { + onSuccess.run(); + } + } + } + }, ConnectionsManager.RequestFlagInvokeAfter); + } + + public void toggleChatJoinRequest(long chatId, boolean enabled, Runnable onSuccess, Runnable onError) { + TLRPC.TL_channels_toggleJoinRequest req = new TLRPC.TL_channels_toggleJoinRequest(); + req.channel = getInputChannel(chatId); + req.enabled = enabled; + getConnectionsManager().sendRequest(req, (response, error) -> { + if (response != null) { + processUpdates((TLRPC.Updates) response, false); + AndroidUtilities.runOnUIThread(() -> getNotificationCenter().postNotificationName(NotificationCenter.updateInterfaces, UPDATE_MASK_CHAT)); + if (onSuccess != null) { + onSuccess.run(); + } + } + if (error != null) { + if (!"CHAT_NOT_MODIFIED".equals(error.text)) { + if (onError != null) { + onError.run(); + } + } else if (response == null) { + if (onSuccess != null) { + onSuccess.run(); + } + } + } + }, ConnectionsManager.RequestFlagInvokeAfter); + } + + public void toggleChannelSignatures(long chatId, boolean enabled) { TLRPC.TL_channels_toggleSignatures req = new TLRPC.TL_channels_toggleSignatures(); req.channel = getInputChannel(chatId); req.enabled = enabled; @@ -9392,7 +9975,7 @@ public class MessagesController extends BaseController implements NotificationCe }, ConnectionsManager.RequestFlagInvokeAfter); } - public void toogleChannelInvitesHistory(long chatId, boolean enabled) { + public void toggleChannelInvitesHistory(long chatId, boolean enabled) { TLRPC.TL_channels_togglePreHistoryHidden req = new TLRPC.TL_channels_togglePreHistoryHidden(); req.channel = getInputChannel(chatId); req.enabled = enabled; @@ -9467,8 +10050,16 @@ public class MessagesController extends BaseController implements NotificationCe addUserToChat(chatId, user, forwardCount, botHash, fragment, false, onFinishRunnable, null); } - public void addUserToChat(long chatId, TLRPC.User user, int forwardCount, String botHash, BaseFragment fragment, boolean ignoreIfAlreadyExists, Runnable onFinishRunnable, Runnable onError) { + public interface ErrorDelegate { + // if returns true, a delegate allows to show default alert + public boolean run(TLRPC.TL_error error); + } + + public void addUserToChat(long chatId, TLRPC.User user, int forwardCount, String botHash, BaseFragment fragment, boolean ignoreIfAlreadyExists, Runnable onFinishRunnable, ErrorDelegate onError) { if (user == null) { + if (onError != null) { + onError.run(null); + } return; } @@ -9481,6 +10072,9 @@ public class MessagesController extends BaseController implements NotificationCe if (isChannel) { if (inputUser instanceof TLRPC.TL_inputUserSelf) { if (joiningToChannels.contains(chatId)) { + if (onError != null) { + onError.run(null); + } return; } TLRPC.TL_channels_joinChannel req = new TLRPC.TL_channels_joinChannel(); @@ -9526,10 +10120,17 @@ public class MessagesController extends BaseController implements NotificationCe return; } if (onError != null) { - AndroidUtilities.runOnUIThread(onError); + AndroidUtilities.runOnUIThread(() -> { + boolean handleErrors = onError.run(error); + if (handleErrors) { + AlertsCreator.processError(currentAccount, error, fragment, request, isChannel && !isMegagroup); + } + }); } AndroidUtilities.runOnUIThread(() -> { - AlertsCreator.processError(currentAccount, error, fragment, request, isChannel && !isMegagroup); + if (onError == null) { + AlertsCreator.processError(currentAccount, error, fragment, request, isChannel && !isMegagroup); + } if (isChannel && inputUser instanceof TLRPC.TL_inputUserSelf) { getNotificationCenter().postNotificationName(NotificationCenter.updateInterfaces, UPDATE_MASK_CHAT); } @@ -9720,8 +10321,8 @@ public class MessagesController extends BaseController implements NotificationCe TLRPC.PhotoSize small = FileLoader.getClosestPhotoSizeWithSize(photo.sizes, 150); TLRPC.VideoSize videoSize = photo.video_sizes.isEmpty() ? null : photo.video_sizes.get(0); if (small != null && smallSize != null) { - File destFile = FileLoader.getPathToAttach(small, true); - File src = FileLoader.getPathToAttach(smallSize, true); + File destFile = getFileLoader().getPathToAttach(small, true); + File src = getFileLoader().getPathToAttach(smallSize, true); src.renameTo(destFile); String oldKey = smallSize.volume_id + "_" + smallSize.local_id + "@50_50"; String newKey = small.location.volume_id + "_" + small.location.local_id + "@50_50"; @@ -9729,12 +10330,12 @@ public class MessagesController extends BaseController implements NotificationCe } TLRPC.PhotoSize big = FileLoader.getClosestPhotoSizeWithSize(photo.sizes, 800); if (big != null && bigSize != null) { - File destFile = FileLoader.getPathToAttach(big, true); - File src = FileLoader.getPathToAttach(bigSize, true); + File destFile = getFileLoader().getPathToAttach(big, true); + File src = getFileLoader().getPathToAttach(bigSize, true); src.renameTo(destFile); } if (videoSize != null && videoPath != null) { - File destFile = FileLoader.getPathToAttach(videoSize, "mp4", true); + File destFile = getFileLoader().getPathToAttach(videoSize, "mp4", true); File src = new File(videoPath); src.renameTo(destFile); } @@ -9835,14 +10436,10 @@ public class MessagesController extends BaseController implements NotificationCe for (int i = 0; i < count; i++) { String value = preferences.getString("log_out_token_" + i, ""); SerializedData serializedData = new SerializedData(Utilities.hexToBytes(value)); - // try { - TLRPC.TL_auth_loggedOut token = TLRPC.TL_auth_loggedOut.TLdeserialize(serializedData, serializedData.readInt32(true), true); - if (token != null) { - tokens.add(token); - } -// } catch (Throwable e) { -// FileLog.e(e); -// } + TLRPC.TL_auth_loggedOut token = TLRPC.TL_auth_loggedOut.TLdeserialize(serializedData, serializedData.readInt32(true), true); + if (token != null) { + tokens.add(token); + } } return tokens; } @@ -9853,17 +10450,17 @@ public class MessagesController extends BaseController implements NotificationCe preferences.edit().clear().apply(); int date = (int) (System.currentTimeMillis() / 1000L); for (int i = 0; i < Math.min(20, tokens.size()); i++) { - activeTokens.add(tokens.get(i)); + activeTokens.add(tokens.get(i)); } if (activeTokens.size() > 0) { - SharedPreferences.Editor editor = preferences.edit(); - editor.putInt("count", activeTokens.size()); - for (int i = 0; i < activeTokens.size(); i++) { - SerializedData data = new SerializedData(activeTokens.get(i).getObjectSize()); - activeTokens.get(i).serializeToStream(data); - editor.putString("log_out_token_" + i, Utilities.bytesToHex(data.toByteArray())); - } - editor.apply(); + SharedPreferences.Editor editor = preferences.edit(); + editor.putInt("count", activeTokens.size()); + for (int i = 0; i < activeTokens.size(); i++) { + SerializedData data = new SerializedData(activeTokens.get(i).getObjectSize()); + activeTokens.get(i).serializeToStream(data); + editor.putString("log_out_token_" + i, Utilities.bytesToHex(data.toByteArray())); + } + editor.apply(); } } @@ -11019,6 +11616,7 @@ public class MessagesController extends BaseController implements NotificationCe chatsDict.put(c.id, c); } + ArrayList newMessages = new ArrayList<>(); for (int a = 0; a < res.messages.size(); a++) { TLRPC.Message message = res.messages.get(a); if (message.peer_id.channel_id != 0) { @@ -11032,9 +11630,11 @@ public class MessagesController extends BaseController implements NotificationCe continue; } } - MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, false, true); + MessageObject messageObject = new MessageObject(currentAccount, message, usersDict, chatsDict, false, false); + newMessages.add(messageObject); new_dialogMessage.put(messageObject.getDialogId(), messageObject); } + getFileLoader().checkMediaExistance(newMessages); boolean firstIsFolder = !newPinnedDialogs.isEmpty() && newPinnedDialogs.get(0) instanceof TLRPC.TL_dialogFolder; for (int a = 0, N = newPinnedDialogs.size(); a < N; a++) { TLRPC.Dialog d = newPinnedDialogs.get(a); @@ -13119,6 +13719,16 @@ public class MessagesController extends BaseController implements NotificationCe updatesOnMainThread = new ArrayList<>(); } updatesOnMainThread.add(baseUpdate); + } else if (baseUpdate instanceof TLRPC.TL_updateTranscribeAudio) { + if (updatesOnMainThread == null) { + updatesOnMainThread = new ArrayList<>(); + } + updatesOnMainThread.add(baseUpdate); + } else if (baseUpdate instanceof TLRPC.TL_updateTranscribedAudio) { + if (updatesOnMainThread == null) { + updatesOnMainThread = new ArrayList<>(); + } + updatesOnMainThread.add(baseUpdate); } } if (messages != null) { @@ -13788,6 +14398,20 @@ public class MessagesController extends BaseController implements NotificationCe getMemberRequestsController().onPendingRequestsUpdated(update); } else if (baseUpdate instanceof TLRPC.TL_updateSavedRingtones) { getMediaDataController().ringtoneDataStore.loadUserRingtones(); + } else if (baseUpdate instanceof TLRPC.TL_updateTranscribeAudio) { + FileLog.e("Received legacy TL_updateTranscribeAudio update"); + } else if (baseUpdate instanceof TLRPC.TL_updateTranscribedAudio) { + TLRPC.TL_updateTranscribedAudio update = (TLRPC.TL_updateTranscribedAudio) baseUpdate; + if (BuildVars.LOGS_ENABLED) { + FileLog.d("Transcription update received, pending=" + update.pending + " id=" + update.transcription_id + " text=" + update.text); + } + + if (!(update.pending && TextUtils.isEmpty(update.text))) { + if (update.pending || !TranscribeButton.finishTranscription(null, update.transcription_id, update.text)) { + getMessagesStorage().updateMessageVoiceTranscription(DialogObject.getPeerDialogId(update.peer), update.msg_id, update.text, update.transcription_id, !update.pending); + getNotificationCenter().postNotificationName(NotificationCenter.voiceTranscriptionUpdate, null, (Long) update.transcription_id, (String) update.text, null, (Boolean) !update.pending); + } + } } } if (editor != null) { @@ -14529,7 +15153,7 @@ public class MessagesController extends BaseController implements NotificationCe save = true; } if (save) { - getMediaDataController().addRecentGif(message.messageOwner.media.document, message.messageOwner.date); + getMediaDataController().addRecentGif(message.messageOwner.media.document, message.messageOwner.date, true); } } else if (!message.isAnimatedEmoji() && (message.isSticker() || message.isAnimatedSticker())) { getMediaDataController().addRecentSticker(MediaDataController.TYPE_IMAGE, message, message.messageOwner.media.document, message.messageOwner.date, false); @@ -15191,7 +15815,7 @@ public class MessagesController extends BaseController implements NotificationCe } public void markSponsoredAsRead(long dialog_id, MessageObject object) { - // sponsoredMessages.remove(dialog_id); + // sponsoredMessages.remove(dialog_id); } public void deleteMessagesRange(long dialogId, long channelId, int minDate, int maxDate, boolean forAll, Runnable callback) { @@ -15261,9 +15885,9 @@ public class MessagesController extends BaseController implements NotificationCe if (callback != null) { TLRPC.ChannelParticipant participant = res instanceof TLRPC.TL_channels_channelParticipant ? ((TLRPC.TL_channels_channelParticipant) res).participant : null; callback.run( - err == null && participant != null && !participant.left, - participant != null ? participant.admin_rights : null, - participant != null ? participant.rank : null + err == null && participant != null && !participant.left, + participant != null ? participant.admin_rights : null, + participant != null ? participant.rank : null ); } }); @@ -15283,9 +15907,9 @@ public class MessagesController extends BaseController implements NotificationCe } if (callback != null) { callback.run( - userParticipant != null, - chatFull.participants != null && chatFull.participants.admin_id == user.id ? ChatRightsEditActivity.emptyAdminRights(true) : null, - null + userParticipant != null, + chatFull.participants != null && chatFull.participants.admin_id == user.id ? ChatRightsEditActivity.emptyAdminRights(true) : null, + null ); } } else { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java index 3a5959cad..f28f30799 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java @@ -27,6 +27,7 @@ import org.telegram.SQLite.SQLiteCursor; import org.telegram.SQLite.SQLiteDatabase; import org.telegram.SQLite.SQLiteException; import org.telegram.SQLite.SQLitePreparedStatement; +import org.telegram.messenger.ringtone.RingtoneDataStore; import org.telegram.messenger.support.LongSparseIntArray; import org.telegram.tgnet.NativeByteBuffer; import org.telegram.tgnet.RequestDelegate; @@ -50,7 +51,7 @@ import java.util.concurrent.atomic.AtomicLong; public class MessagesStorage extends BaseController { - private DispatchQueue storageQueue = new DispatchQueue("storageQueue"); + private DispatchQueue storageQueue; private SQLiteDatabase database; private File cacheFile; private File walCacheFile; @@ -82,7 +83,7 @@ public class MessagesStorage extends BaseController { private CountDownLatch openSync = new CountDownLatch(1); private static volatile MessagesStorage[] Instance = new MessagesStorage[UserConfig.MAX_ACCOUNT_COUNT]; - private final static int LAST_DB_VERSION = 93; + private final static int LAST_DB_VERSION = 97; private boolean databaseMigrationInProgress; public boolean showClearDatabaseAlert; @@ -188,6 +189,7 @@ public class MessagesStorage extends BaseController { public MessagesStorage(int instance) { super(instance); + storageQueue = new DispatchQueue("storageQueue_" + instance); //storageQueue.setPriority(Thread.MAX_PRIORITY); storageQueue.postRunnable(() -> openDatabase(1)); } @@ -285,7 +287,7 @@ public class MessagesStorage extends BaseController { database.executeFast("CREATE INDEX IF NOT EXISTS uid_date_idx_scheduled_messages_v2 ON scheduled_messages_v2(uid, date);").stepThis().dispose(); database.executeFast("CREATE INDEX IF NOT EXISTS reply_to_idx_scheduled_messages_v2 ON scheduled_messages_v2(mid, reply_to_message_id);").stepThis().dispose(); - database.executeFast("CREATE TABLE messages_v2(mid INTEGER, uid INTEGER, read_state INTEGER, send_state INTEGER, date INTEGER, data BLOB, out INTEGER, ttl INTEGER, media INTEGER, replydata BLOB, imp INTEGER, mention INTEGER, forwards INTEGER, replies_data BLOB, thread_reply_id INTEGER, is_channel INTEGER, reply_to_message_id INTEGER, PRIMARY KEY(mid, uid))").stepThis().dispose(); + database.executeFast("CREATE TABLE messages_v2(mid INTEGER, uid INTEGER, read_state INTEGER, send_state INTEGER, date INTEGER, data BLOB, out INTEGER, ttl INTEGER, media INTEGER, replydata BLOB, imp INTEGER, mention INTEGER, forwards INTEGER, replies_data BLOB, thread_reply_id INTEGER, is_channel INTEGER, reply_to_message_id INTEGER, custom_params BLOB, PRIMARY KEY(mid, uid))").stepThis().dispose(); database.executeFast("CREATE INDEX IF NOT EXISTS uid_mid_read_out_idx_messages_v2 ON messages_v2(uid, mid, read_state, out);").stepThis().dispose(); database.executeFast("CREATE INDEX IF NOT EXISTS uid_date_mid_idx_messages_v2 ON messages_v2(uid, date, mid);").stepThis().dispose(); database.executeFast("CREATE INDEX IF NOT EXISTS mid_out_idx_messages_v2 ON messages_v2(mid, out);").stepThis().dispose(); @@ -396,6 +398,8 @@ public class MessagesStorage extends BaseController { database.executeFast("CREATE TABLE downloading_documents(data BLOB, hash INTEGER, id INTEGER, state INTEGER, date INTEGER, PRIMARY KEY(hash, id));").stepThis().dispose(); database.executeFast("CREATE TABLE attach_menu_bots(data BLOB, hash INTEGER, date INTEGER);").stepThis().dispose(); + + database.executeFast("CREATE TABLE premium_promo(data BLOB, date INTEGER);").stepThis().dispose(); //version database.executeFast("PRAGMA user_version = " + LAST_DB_VERSION).stepThis().dispose(); } else { @@ -1565,6 +1569,21 @@ public class MessagesStorage extends BaseController { if (version == 92) { database.executeFast("CREATE TABLE IF NOT EXISTS attach_menu_bots(data BLOB, hash INTEGER, date INTEGER);").stepThis().dispose(); database.executeFast("PRAGMA user_version = 93").stepThis().dispose(); + version = 95; + } + + if (version == 95 || version == 93) { + executeNoException("ALTER TABLE messages_v2 ADD COLUMN custom_params BLOB default NULL"); + database.executeFast("PRAGMA user_version = 96").stepThis().dispose(); + version = 96; + } + + // skip 94, 95. private beta db rollback + if (version == 96) { + database.executeFast("CREATE TABLE IF NOT EXISTS premium_promo(data BLOB, date INTEGER);").stepThis().dispose(); + database.executeFast("UPDATE stickers_v2 SET date = 0"); + database.executeFast("PRAGMA user_version = 97").stepThis().dispose(); + version = 97; } FileLog.d("MessagesStorage db migration finished"); @@ -2171,7 +2190,6 @@ public class MessagesStorage extends BaseController { } - private static class ReadDialog { public int lastMid; public int date; @@ -2387,6 +2405,7 @@ public class MessagesStorage extends BaseController { SQLiteCursor filtersCursor = database.queryFinalized("SELECT id, ord, unread_count, flags, title FROM dialog_filter WHERE 1"); boolean updateCounters = false; + boolean hasDefaultFilter = false; while (filtersCursor.next()) { MessagesController.DialogFilter filter = new MessagesController.DialogFilter(); filter.id = filtersCursor.intValue(0); @@ -2443,9 +2462,33 @@ public class MessagesStorage extends BaseController { } cursor2.dispose(); } + if (filter.id == 0) { + hasDefaultFilter = true; + } } filtersCursor.dispose(); + if (!hasDefaultFilter) { + MessagesController.DialogFilter filter = new MessagesController.DialogFilter(); + filter.id = 0; + filter.order = 0; + filter.name = "ALL_CHATS"; + for (int i = 0; i < dialogFilters.size(); i++) { + dialogFilters.get(i).order++; + } + dialogFilters.add(filter); + dialogFiltersMap.put(filter.id, filter); + filtersById.put(filter.id, filter); + + SQLitePreparedStatement state = database.executeFast("REPLACE INTO dialog_filter VALUES(?, ?, ?, ?, ?)"); + state.bindInteger(1, filter.id); + state.bindInteger(2, filter.order); + state.bindInteger(3, filter.unreadCount); + state.bindInteger(4, filter.flags); + state.bindString(5, filter.name); + state.stepThis().dispose(); + } + Collections.sort(dialogFilters, (o1, o2) -> { if (o1.order > o2.order) { return 1; @@ -2882,7 +2925,7 @@ public class MessagesStorage extends BaseController { state.bindInteger(2, filter.order); state.bindInteger(3, filter.unreadCount); state.bindInteger(4, filter.flags); - state.bindString(5, filter.name); + state.bindString(5, filter.id == 0 ? "ALL_CHATS" : filter.name); state.step(); state.dispose(); if (peers) { @@ -2946,7 +2989,7 @@ public class MessagesStorage extends BaseController { HashMap> filterDialogRemovals = new HashMap<>(); HashSet filtersUnreadCounterReset = new HashSet<>(); for (int a = 0, N = vector.objects.size(); a < N; a++) { - TLRPC.TL_dialogFilter newFilter = (TLRPC.TL_dialogFilter) vector.objects.get(a); + TLRPC.DialogFilter newFilter = (TLRPC.DialogFilter) vector.objects.get(a); filtersOrder.add(newFilter.id); int newFlags = 0; if (newFilter.contacts) { @@ -3336,7 +3379,17 @@ public class MessagesStorage extends BaseController { } public void saveDialogFiltersOrder() { - storageQueue.postRunnable(this::saveDialogFiltersOrderInternal); + ArrayList filtersFinal = new ArrayList<>(getMessagesController().dialogFilters); + storageQueue.postRunnable(() -> { + dialogFilters.clear(); + dialogFiltersMap.clear(); + dialogFilters.addAll(filtersFinal); + for (int i = 0; i < filtersFinal.size(); i++) { + filtersFinal.get(i).order = i; + dialogFiltersMap.put(filtersFinal.get(i).id, filtersFinal.get(i)); + } + saveDialogFiltersOrderInternal(); + }); } protected static void addReplyMessages(TLRPC.Message message, LongSparseArray>> replyMessageOwners, LongSparseArray> dialogReplyMessagesIds) { @@ -3751,6 +3804,9 @@ public class MessagesStorage extends BaseController { if (document == null) { return false; } + if (getMediaDataController().ringtoneDataStore.contains(document.id)) { + return false; + } id = document.id; type = DownloadController.AUTODOWNLOAD_TYPE_AUDIO; } else if (MessageObject.isStickerMessage(message) || MessageObject.isAnimatedStickerMessage(message)) { @@ -3766,6 +3822,9 @@ public class MessagesStorage extends BaseController { id = document.id; type = DownloadController.AUTODOWNLOAD_TYPE_VIDEO; } else if (document != null) { + if (getMediaDataController().ringtoneDataStore.contains(document.id)) { + return false; + } id = document.id; type = DownloadController.AUTODOWNLOAD_TYPE_DOCUMENT; } else if (photo != null) { @@ -3785,7 +3844,7 @@ public class MessagesStorage extends BaseController { if (!TextUtils.isEmpty(name)) { namesToDelete.add(name); } - File file = FileLoader.getPathToAttach(photoSize, forceCache); + File file = getFileLoader().getPathToAttach(photoSize, forceCache); if (file.toString().length() > 0) { filesToDelete.add(file); } @@ -3796,13 +3855,13 @@ public class MessagesStorage extends BaseController { if (!TextUtils.isEmpty(name)) { namesToDelete.add(name); } - File file = FileLoader.getPathToAttach(document, forceCache); + File file = getFileLoader().getPathToAttach(document, forceCache); if (file.toString().length() > 0) { filesToDelete.add(file); } for (int a = 0, N = document.thumbs.size(); a < N; a++) { TLRPC.PhotoSize photoSize = document.thumbs.get(a); - file = FileLoader.getPathToAttach(photoSize); + file = getFileLoader().getPathToAttach(photoSize); if (file.toString().length() > 0) { filesToDelete.add(file); } @@ -4187,7 +4246,7 @@ public class MessagesStorage extends BaseController { ArrayList namesToDelete = new ArrayList<>(); ArrayList> idsToDelete = new ArrayList<>(); ArrayList messages = new ArrayList<>(); - SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM messages_v2 WHERE mid IN (%s) AND uid = %d", TextUtils.join(",", mids), dialogId)); + SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid, custom_params FROM messages_v2 WHERE mid IN (%s) AND uid = %d", TextUtils.join(",", mids), dialogId)); while (cursor.next()) { NativeByteBuffer data = cursor.byteBufferValue(0); if (data != null) { @@ -4208,6 +4267,11 @@ public class MessagesStorage extends BaseController { message.id = cursor.intValue(1); message.date = cursor.intValue(2); message.dialog_id = cursor.longValue(3); + NativeByteBuffer customParams = cursor.byteBufferValue(4); + if (customParams != null) { + MessageCustomParamsHelper.readLocalParams(message, customParams); + customParams.reuse(); + } messages.add(message); } } @@ -4215,7 +4279,8 @@ public class MessagesStorage extends BaseController { cursor.dispose(); deleteFromDownloadQueue(idsToDelete, true); if (!messages.isEmpty()) { - SQLitePreparedStatement state = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0)"); + SQLitePreparedStatement state = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0, ?)"); + for (int a = 0; a < messages.size(); a++) { TLRPC.Message message = messages.get(a); @@ -4259,12 +4324,20 @@ public class MessagesStorage extends BaseController { state.bindInteger(14, 0); } state.bindLong(15, MessageObject.getChannelId(message)); + NativeByteBuffer customParams = MessageCustomParamsHelper.writeLocalParams(message); + if (customParams != null) { + state.bindByteBuffer(16, customParams); + } else { + state.bindNull(16); + } state.step(); - data.reuse(); if (repliesData != null) { repliesData.reuse(); } + if (customParams != null) { + customParams.reuse(); + } } state.dispose(); AndroidUtilities.runOnUIThread(() -> { @@ -4384,6 +4457,145 @@ public class MessagesStorage extends BaseController { }); } + public void updateMessageVoiceTranscriptionOpen(long dialogId, int msgId, TLRPC.Message saveFromMessage) { + storageQueue.postRunnable(() -> { + try { + database.beginTransaction(); + TLRPC.Message message = getMessageWithCustomParamsOnly(msgId, dialogId); + message.voiceTranscriptionOpen = saveFromMessage.voiceTranscriptionOpen; + message.voiceTranscriptionRated = saveFromMessage.voiceTranscriptionRated; + message.voiceTranscriptionFinal = saveFromMessage.voiceTranscriptionFinal; + message.voiceTranscriptionId = saveFromMessage.voiceTranscriptionId; + + SQLitePreparedStatement state = database.executeFast("UPDATE messages_v2 SET custom_params = ? WHERE mid = ? AND uid = ?"); + state.requery(); + NativeByteBuffer nativeByteBuffer = MessageCustomParamsHelper.writeLocalParams(message); + if (nativeByteBuffer != null) { + state.bindByteBuffer(1, nativeByteBuffer); + } else { + state.bindNull(1); + } + state.bindInteger(2, msgId); + state.bindLong(3, dialogId); + state.step(); + state.dispose(); + if (nativeByteBuffer != null) { + nativeByteBuffer.reuse(); + } + database.commitTransaction(); + } catch (Exception e) { + FileLog.e(e); + } + }); + } + + public void updateMessageVoiceTranscription(long dialogId, int messageId, String text, long transcriptionId, boolean isFinal) { + storageQueue.postRunnable(() -> { + try { + database.beginTransaction(); + TLRPC.Message message = getMessageWithCustomParamsOnly(messageId, dialogId); + message.voiceTranscriptionFinal = isFinal; + message.voiceTranscriptionId = transcriptionId; + message.voiceTranscription = text; + + SQLitePreparedStatement state = database.executeFast("UPDATE messages_v2 SET custom_params = ? WHERE mid = ? AND uid = ?"); + state.requery(); + NativeByteBuffer nativeByteBuffer = MessageCustomParamsHelper.writeLocalParams(message); + if (nativeByteBuffer != null) { + state.bindByteBuffer(1, nativeByteBuffer); + } else { + state.bindNull(1); + } + state.bindInteger(2, messageId); + state.bindLong(3, dialogId); + state.step(); + state.dispose(); + database.commitTransaction(); + if (nativeByteBuffer != null) { + nativeByteBuffer.reuse(); + } + } catch (Exception e) { + FileLog.e(e); + } + }); + } + + public void updateMessageVoiceTranscription(long dialogId, int messageId, String text, TLRPC.Message saveFromMessage) { + storageQueue.postRunnable(() -> { + try { + database.beginTransaction(); + TLRPC.Message message = getMessageWithCustomParamsOnly(messageId, dialogId); + message.voiceTranscriptionOpen = saveFromMessage.voiceTranscriptionOpen; + message.voiceTranscriptionRated = saveFromMessage.voiceTranscriptionRated; + message.voiceTranscriptionFinal = saveFromMessage.voiceTranscriptionFinal; + message.voiceTranscriptionId = saveFromMessage.voiceTranscriptionId; + message.voiceTranscription = text; + + SQLitePreparedStatement state = database.executeFast("UPDATE messages_v2 SET custom_params = ? WHERE mid = ? AND uid = ?"); + state.requery(); + NativeByteBuffer nativeByteBuffer = MessageCustomParamsHelper.writeLocalParams(message); + if (nativeByteBuffer != null) { + state.bindByteBuffer(1, nativeByteBuffer); + } else { + state.bindNull(1); + } + state.bindInteger(2, messageId); + state.bindLong(3, dialogId); + state.step(); + state.dispose(); + database.commitTransaction(); + if (nativeByteBuffer != null) { + nativeByteBuffer.reuse(); + } + } catch (Exception e) { + FileLog.e(e); + } + }); + } + + public void updateMessageCustomParams(long dialogId, TLRPC.Message saveFromMessage) { + storageQueue.postRunnable(() -> { + try { + database.beginTransaction(); + TLRPC.Message message = getMessageWithCustomParamsOnly(saveFromMessage.id, dialogId); + MessageCustomParamsHelper.copyParams(saveFromMessage, message); + + SQLitePreparedStatement state = database.executeFast("UPDATE messages_v2 SET custom_params = ? WHERE mid = ? AND uid = ?"); + state.requery(); + NativeByteBuffer nativeByteBuffer = MessageCustomParamsHelper.writeLocalParams(message); + if (nativeByteBuffer != null) { + state.bindByteBuffer(1, nativeByteBuffer); + } else { + state.bindNull(1); + } + state.bindInteger(2, saveFromMessage.id); + state.bindLong(3, dialogId); + state.step(); + state.dispose(); + database.commitTransaction(); + if (nativeByteBuffer != null) { + nativeByteBuffer.reuse(); + } + } catch (Exception e) { + FileLog.e(e); + } + }); + } + + private TLRPC.Message getMessageWithCustomParamsOnly(int messageId, long dialogId) { + TLRPC.Message message = new TLRPC.TL_message(); + try { + SQLiteCursor cursor = database.queryFinalized("SELECT custom_params FROM messages_v2 WHERE mid = " + messageId + " AND uid = " + dialogId); + if (cursor.next()) { + MessageCustomParamsHelper.readLocalParams(message, cursor.byteBufferValue(0)); + } + cursor.dispose(); + } catch (SQLiteException e) { + FileLog.e(e); + } + return message; + } + public void getNewTask(LongSparseArray> oldTask, LongSparseArray> oldTaskMedia) { storageQueue.postRunnable(() -> { try { @@ -6868,7 +7080,7 @@ public class MessagesStorage extends BaseController { LongSparseArray> replyMessageRandomOwners = new LongSparseArray<>(); ArrayList replyMessageRandomIds = new ArrayList<>(); SQLiteCursor cursor; - String messageSelect = "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl, m.mention, m.imp, m.forwards, m.replies_data FROM messages_v2 as m LEFT JOIN randoms_v2 as r ON r.mid = m.mid AND r.uid = m.uid"; + String messageSelect = "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl, m.mention, m.imp, m.forwards, m.replies_data, m.custom_params FROM messages_v2 as m LEFT JOIN randoms_v2 as r ON r.mid = m.mid AND r.uid = m.uid"; if (scheduled) { isEnd = true; @@ -7322,6 +7534,11 @@ public class MessagesStorage extends BaseController { } else if ((flags & 2) != 0) { message.stickerVerified = 2; } + NativeByteBuffer customParams = cursor.byteBufferValue(13); + if (customParams != null) { + MessageCustomParamsHelper.readLocalParams(message, customParams); + customParams.reuse(); + } res.messages.add(message); addUsersAndChatsFromMessage(message, usersToLoad, chatsToLoad); @@ -9035,7 +9252,7 @@ public class MessagesStorage extends BaseController { LongSparseArray> dialogMessagesIdsMap = new LongSparseArray<>(); LongSparseArray> dialogMentionsIdsMap = new LongSparseArray<>(); - SQLitePreparedStatement state_messages = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0)"); + SQLitePreparedStatement state_messages = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0, ?)"); SQLitePreparedStatement state_media = null; SQLitePreparedStatement state_randoms = database.executeFast("REPLACE INTO randoms_v2 VALUES(?, ?, ?)"); SQLitePreparedStatement state_download = database.executeFast("REPLACE INTO download_queue VALUES(?, ?, ?, ?, ?)"); @@ -9308,6 +9525,12 @@ public class MessagesStorage extends BaseController { state_messages.bindInteger(14, 0); } state_messages.bindLong(15, MessageObject.getChannelId(message)); + NativeByteBuffer customParams = MessageCustomParamsHelper.writeLocalParams(message); + if (customParams != null) { + state_messages.bindByteBuffer(16, customParams); + } else { + state_messages.bindNull(16); + } state_messages.step(); if (message.random_id != 0) { @@ -9365,6 +9588,9 @@ public class MessagesStorage extends BaseController { if (repliesData != null) { repliesData.reuse(); } + if (customParams != null) { + customParams.reuse(); + } data.reuse(); if (downloadMask != 0 && (message.peer_id.channel_id == 0 || message.post) && message.date >= getConnectionsManager().getCurrentTime() - 60 * 60 && getDownloadController().canDownloadMedia(message) == 1) { @@ -10819,12 +11045,14 @@ public class MessagesStorage extends BaseController { try { SQLiteCursor cursor = null; int readState = 0; + NativeByteBuffer customParams = null; try { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT uid, read_state FROM messages_v2 WHERE mid = %d AND uid = %d LIMIT 1", message.id, MessageObject.getDialogId(message))); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT uid, read_state, custom_params FROM messages_v2 WHERE mid = %d AND uid = %d LIMIT 1", message.id, MessageObject.getDialogId(message))); if (!cursor.next()) { return; } readState = cursor.intValue(1); + customParams = cursor.byteBufferValue(2); } catch (Exception e) { FileLog.e(e); } finally { @@ -10835,7 +11063,7 @@ public class MessagesStorage extends BaseController { database.beginTransaction(); - SQLitePreparedStatement state = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0)"); + SQLitePreparedStatement state = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0, ?)"); SQLitePreparedStatement state2 = database.executeFast("REPLACE INTO media_v4 VALUES(?, ?, ?, ?, ?)"); if (message.dialog_id == 0) { MessageObject.getDialogId(message); @@ -10881,6 +11109,11 @@ public class MessagesStorage extends BaseController { state.bindInteger(14, 0); } state.bindLong(15, MessageObject.getChannelId(message)); + if (customParams != null) { + state.bindByteBuffer(16, customParams); + } else { + state.bindNull(16); + } state.step(); if (MediaDataController.canAddMessageToMedia(message)) { @@ -10895,6 +11128,9 @@ public class MessagesStorage extends BaseController { if (repliesData != null) { repliesData.reuse(); } + if (customParams != null) { + customParams.reuse(); + } data.reuse(); state.dispose(); @@ -10993,7 +11229,7 @@ public class MessagesStorage extends BaseController { ArrayList namesToDelete = new ArrayList<>(); ArrayList> idsToDelete = new ArrayList<>(); - SQLitePreparedStatement state_messages = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0)"); + SQLitePreparedStatement state_messages = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0, ?)"); SQLitePreparedStatement state_media = database.executeFast("REPLACE INTO media_v4 VALUES(?, ?, ?, ?, ?)"); SQLitePreparedStatement state_polls = null; SQLitePreparedStatement state_webpage = null; @@ -11009,7 +11245,7 @@ public class MessagesStorage extends BaseController { } if (load_type == -2) { - SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT mid, data, ttl, mention, read_state, send_state FROM messages_v2 WHERE mid = %d AND uid = %d", message.id, MessageObject.getDialogId(message))); + SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT mid, data, ttl, mention, read_state, send_state, custom_params FROM messages_v2 WHERE mid = %d AND uid = %d", message.id, MessageObject.getDialogId(message))); boolean exist; if (exist = cursor.next()) { NativeByteBuffer data = cursor.byteBufferValue(1); @@ -11033,6 +11269,11 @@ public class MessagesStorage extends BaseController { if (!sameMedia) { addFilesToDelete(oldMessage, filesToDelete, idsToDelete, namesToDelete, false); } + NativeByteBuffer customParams = cursor.byteBufferValue(6); + MessageCustomParamsHelper.readLocalParams(message, customParams); + if (customParams != null) { + customParams.reuse(); + } } boolean oldMention = cursor.intValue(3) != 0; int readState = cursor.intValue(4); @@ -11147,6 +11388,12 @@ public class MessagesStorage extends BaseController { state_messages.bindInteger(14, 0); } state_messages.bindLong(15, MessageObject.getChannelId(message)); + NativeByteBuffer customParams = MessageCustomParamsHelper.writeLocalParams(message); + if (customParams == null) { + state_messages.bindNull(16); + } else { + state_messages.bindByteBuffer(16, customParams); + } state_messages.step(); if (MediaDataController.canAddMessageToMedia(message)) { @@ -11168,6 +11415,9 @@ public class MessagesStorage extends BaseController { if (repliesData != null) { repliesData.reuse(); } + if (customParams != null) { + customParams.reuse(); + } data.reuse(); if (message.ttl_period != 0 && message.id > 0) { @@ -11650,7 +11900,7 @@ public class MessagesStorage extends BaseController { } if (!dialogs.dialogs.isEmpty()) { - SQLitePreparedStatement state_messages = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0)"); + SQLitePreparedStatement state_messages = database.executeFast("REPLACE INTO messages_v2 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, 0, NULL)"); SQLitePreparedStatement state_dialogs = database.executeFast("REPLACE INTO dialogs VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); SQLitePreparedStatement state_media = database.executeFast("REPLACE INTO media_v4 VALUES(?, ?, ?, ?, ?)"); SQLitePreparedStatement state_settings = database.executeFast("REPLACE INTO dialog_settings VALUES(?, ?)"); @@ -12264,6 +12514,8 @@ public class MessagesStorage extends BaseController { } String savedMessages = LocaleController.getString("SavedMessages", R.string.SavedMessages).toLowerCase(); String savedMessages2 = "saved messages"; + String replies = LocaleController.getString("RepliesTitle", R.string.RepliesTitle).toLowerCase(); + String replies2 = "replies"; String search2 = LocaleController.getInstance().getTranslitString(search1); if (search1.equals(search2) || search2.length() == 0) { search2 = null; @@ -12327,6 +12579,21 @@ public class MessagesStorage extends BaseController { resultCount++; } + if (dialogsType != 4 && (replies).startsWith(search1) || replies2.startsWith(search1)) { + TLRPC.User user = getMessagesController().getUser(708513L); + if (user == null) { + user = getMessagesController().getUser(1271266957L); + } + if (user != null) { + DialogsSearchAdapter.DialogSearchResult dialogSearchResult = new DialogsSearchAdapter.DialogSearchResult(); + dialogSearchResult.date = Integer.MAX_VALUE; + dialogSearchResult.name = LocaleController.getString("RepliesTitle", R.string.RepliesTitle); + dialogSearchResult.object = user; + dialogsResult.put(user.id, dialogSearchResult); + resultCount++; + } + } + if (!usersToLoad.isEmpty()) { cursor = getDatabase().queryFinalized(String.format(Locale.US, "SELECT data, status, name FROM users WHERE uid IN(%s)", TextUtils.join(",", usersToLoad))); while (cursor.next()) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MusicBrowserService.java b/TMessagesProj/src/main/java/org/telegram/messenger/MusicBrowserService.java index f1c54e889..abfd1deaf 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MusicBrowserService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MusicBrowserService.java @@ -35,6 +35,8 @@ import android.os.SystemClock; import android.service.media.MediaBrowserService; import android.text.TextUtils; +import androidx.collection.LongSparseArray; + import org.telegram.SQLite.SQLiteCursor; import org.telegram.messenger.audioinfo.AudioInfo; import org.telegram.tgnet.NativeByteBuffer; @@ -47,8 +49,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; -import androidx.collection.LongSparseArray; - @TargetApi(Build.VERSION_CODES.LOLLIPOP) public class MusicBrowserService extends MediaBrowserService implements NotificationCenter.NotificationCenterDelegate { @@ -297,7 +297,7 @@ public class MusicBrowserService extends MediaBrowserService implements Notifica } Bitmap bitmap = null; if (avatar != null) { - bitmap = createRoundBitmap(FileLoader.getPathToAttach(avatar, true)); + bitmap = createRoundBitmap(FileLoader.getInstance(currentAccount).getPathToAttach(avatar, true)); if (bitmap != null) { builder.setIconBitmap(bitmap); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MusicPlayerService.java b/TMessagesProj/src/main/java/org/telegram/messenger/MusicPlayerService.java index 27b1f1255..69eec1f11 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MusicPlayerService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MusicPlayerService.java @@ -30,11 +30,12 @@ import android.media.session.MediaSession; import android.media.session.PlaybackState; import android.os.Build; import android.os.IBinder; -import androidx.core.app.NotificationCompat; import android.text.TextUtils; import android.view.View; import android.widget.RemoteViews; +import androidx.core.app.NotificationCompat; + import com.google.android.exoplayer2.C; import org.telegram.messenger.audioinfo.AudioInfo; @@ -239,7 +240,7 @@ public class MusicPlayerService extends Service implements NotificationCenter.No albumArt = loadArtworkFromUrl(artworkUrlBig, false, !forBitmap); } } else { - loadingFilePath = FileLoader.getPathToAttach(messageObject.getDocument()).getAbsolutePath(); + loadingFilePath = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(messageObject.getDocument()).getAbsolutePath(); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java index 0d448290b..a146064b1 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java @@ -124,6 +124,7 @@ public class NotificationCenter { public static final int stickersImportComplete = totalEvents++; public static final int dialogDeleted = totalEvents++; public static final int webViewResultSent = totalEvents++; + public static final int voiceTranscriptionUpdate = totalEvents++; public static final int didGenerateFingerprintKeyPair = totalEvents++; @@ -244,6 +245,12 @@ public class NotificationCenter { public static final int onActivityResultReceived = totalEvents++; public static final int onRequestPermissionResultReceived = totalEvents++; public static final int onUserRingtonesUpdated = totalEvents++; + public static final int currentUserPremiumStatusChanged = totalEvents++; + public static final int premiumPromoUpdated = totalEvents++; + public static final int premiumStatusChangedGlobal = totalEvents++; + public static final int currentUserShowLimitReachedDialog = totalEvents++; + public static final int billingProductDetailsUpdated = totalEvents++; + public static final int premiumStickersPreviewLoaded = totalEvents++; private SparseArray> observers = new SparseArray<>(); private SparseArray> removeAfterBroadcast = new SparseArray<>(); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java index 0f1c6b22d..d8da05540 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java @@ -34,8 +34,6 @@ import android.graphics.PorterDuffXfermode; import android.graphics.drawable.BitmapDrawable; import android.media.AudioAttributes; import android.media.AudioManager; -import android.media.Ringtone; -import android.media.RingtoneManager; import android.media.SoundPool; import android.net.Uri; import android.os.Build; @@ -43,7 +41,6 @@ import android.os.PowerManager; import android.os.SystemClock; import android.provider.Settings; import android.text.TextUtils; -import android.util.Log; import android.util.SparseArray; import android.util.SparseBooleanArray; @@ -3719,7 +3716,7 @@ public class NotificationsController extends BaseController { mBuilder.setLargeIcon(img.getBitmap()); } else { try { - File file = FileLoader.getPathToAttach(photoPath, true); + File file = getFileLoader().getPathToAttach(photoPath, true); if (file.exists()) { float scaleFactor = 160.0f / AndroidUtilities.dp(50); BitmapFactory.Options options = new BitmapFactory.Options(); @@ -4104,7 +4101,7 @@ public class NotificationsController extends BaseController { } if (photoPath != null) { - avatalFile = FileLoader.getPathToAttach(photoPath, true); + avatalFile = getFileLoader().getPathToAttach(photoPath, true); if (Build.VERSION.SDK_INT < 28) { BitmapDrawable img = ImageLoader.getInstance().getImageFromMemory(photoPath, null, "50_50"); if (img != null) { @@ -4176,7 +4173,7 @@ public class NotificationsController extends BaseController { try { if (sender != null && sender.photo != null && sender.photo.photo_small != null && sender.photo.photo_small.volume_id != 0 && sender.photo.photo_small.local_id != 0) { Person.Builder personBuilder = new Person.Builder().setName(LocaleController.getString("FromYou", R.string.FromYou)); - File avatar = FileLoader.getPathToAttach(sender.photo.photo_small, true); + File avatar = getFileLoader().getPathToAttach(sender.photo.photo_small, true); loadRoundAvatar(avatar, personBuilder); selfPerson = personBuilder.build(); personCache.put(selfUserId, selfPerson); @@ -4276,7 +4273,7 @@ public class NotificationsController extends BaseController { } } if (sender != null && sender.photo != null && sender.photo.photo_small != null && sender.photo.photo_small.volume_id != 0 && sender.photo.photo_small.local_id != 0) { - avatar = FileLoader.getPathToAttach(sender.photo.photo_small, true); + avatar = getFileLoader().getPathToAttach(sender.photo.photo_small, true); } } loadRoundAvatar(avatar, personBuilder); @@ -4289,7 +4286,7 @@ public class NotificationsController extends BaseController { boolean setPhoto = false; if (preview[0] && Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && !((ActivityManager) ApplicationLoader.applicationContext.getSystemService(Context.ACTIVITY_SERVICE)).isLowRamDevice()) { if (!waitingForPasscode && !messageObject.isSecretMedia() && (messageObject.type == 1 || messageObject.isSticker())) { - File attach = FileLoader.getPathToMessage(messageObject.messageOwner); + File attach = getFileLoader().getPathToMessage(messageObject.messageOwner); NotificationCompat.MessagingStyle.Message msg = new NotificationCompat.MessagingStyle.Message(message, ((long) messageObject.messageOwner.date) * 1000L, person); String mimeType = messageObject.isSticker() ? "image/webp" : "image/jpeg"; Uri uri; @@ -4332,7 +4329,7 @@ public class NotificationsController extends BaseController { if (preview[0] && !waitingForPasscode && messageObject.isVoice()) { List messages = messagingStyle.getMessages(); if (!messages.isEmpty()) { - File f = FileLoader.getPathToMessage(messageObject.messageOwner); + File f = getFileLoader().getPathToMessage(messageObject.messageOwner); Uri uri; if (Build.VERSION.SDK_INT >= 24) { try { @@ -4384,7 +4381,7 @@ public class NotificationsController extends BaseController { msgHeardIntent.putExtra("max_id", maxId); msgHeardIntent.putExtra("currentAccount", currentAccount); PendingIntent readPendingIntent = PendingIntent.getBroadcast(ApplicationLoader.applicationContext, internalId, msgHeardIntent, PendingIntent.FLAG_UPDATE_CURRENT); - NotificationCompat.Action readAction = new NotificationCompat.Action.Builder(R.drawable.menu_read, LocaleController.getString("MarkAsRead", R.string.MarkAsRead), readPendingIntent) + NotificationCompat.Action readAction = new NotificationCompat.Action.Builder(R.drawable.msg_markread, LocaleController.getString("MarkAsRead", R.string.MarkAsRead), readPendingIntent) .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ) .setShowsUserInterface(false) .build(); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SecretChatHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/SecretChatHelper.java index d25e8e7b4..8957efd9e 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SecretChatHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SecretChatHelper.java @@ -529,7 +529,7 @@ public class SecretChatHelper extends BaseController { size.location.local_id = file.key_fingerprint; String fileName2 = size.location.volume_id + "_" + size.location.local_id; File cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName + ".jpg"); - File cacheFile2 = FileLoader.getPathToAttach(size); + File cacheFile2 = getFileLoader().getPathToAttach(size); cacheFile.renameTo(cacheFile2); ImageLoader.getInstance().replaceImageInCache(fileName, fileName2, ImageLocation.getForPhoto(size, newMsg.media.photo), true); ArrayList arr = new ArrayList<>(); @@ -558,7 +558,7 @@ public class SecretChatHelper extends BaseController { if (newMsg.attachPath != null && newMsg.attachPath.startsWith(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE).getAbsolutePath())) { File cacheFile = new File(newMsg.attachPath); - File cacheFile2 = FileLoader.getPathToAttach(newMsg.media.document); + File cacheFile2 = getFileLoader().getPathToAttach(newMsg.media.document); if (cacheFile.renameTo(cacheFile2)) { newMsgObj.mediaExists = newMsgObj.attachPathExists; newMsgObj.attachPathExists = false; @@ -920,7 +920,7 @@ public class SecretChatHelper extends BaseController { big.w = decryptedMessage.media.w; big.h = decryptedMessage.media.h; big.type = "x"; - big.size = file.size; + big.size = (int) file.size; big.location = new TLRPC.TL_fileEncryptedLocation(); big.location.key = decryptedMessage.media.key; big.location.iv = decryptedMessage.media.iv; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java index 2baedb789..7e4bba194 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java @@ -11,6 +11,8 @@ package org.telegram.messenger; import android.content.ClipDescription; import android.content.Context; import android.content.Intent; +import android.content.res.AssetFileDescriptor; +import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.PorterDuff; @@ -27,6 +29,7 @@ import android.os.Build; import android.os.Bundle; import android.os.SystemClock; import android.provider.MediaStore; +import android.provider.OpenableColumns; import android.text.TextUtils; import android.util.Base64; import android.util.SparseArray; @@ -61,12 +64,14 @@ import org.telegram.ui.Components.AnimatedFileDrawable; import org.telegram.ui.Components.Bulletin; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.Point; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.PaymentFormActivity; import org.telegram.ui.TwoStepVerificationActivity; import org.telegram.ui.TwoStepVerificationSetupActivity; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.RandomAccessFile; @@ -1554,7 +1559,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(document.thumbs, 90); if (thumb instanceof TLRPC.TL_photoSize || thumb instanceof TLRPC.TL_photoSizeProgressive) { - File file = FileLoader.getPathToAttach(thumb, true); + File file = FileLoader.getInstance(currentAccount).getPathToAttach(thumb, true); if (file.exists()) { try { int len = (int) file.length(); @@ -1610,8 +1615,8 @@ public class SendMessagesHelper extends BaseController implements NotificationCe docFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_VIDEO), mediaLocationKey + docExt); } - ensureMediaThumbExists(false, finalDocument, docFile.getAbsolutePath(), null, 0); - keyFinal[0] = getKeyForPhotoSize(FileLoader.getClosestPhotoSizeWithSize(finalDocument.thumbs, 320), bitmapFinal, true, true); + ensureMediaThumbExists(getAccountInstance(), false, finalDocument, docFile.getAbsolutePath(), null, 0); + keyFinal[0] = getKeyForPhotoSize(getAccountInstance(), FileLoader.getClosestPhotoSizeWithSize(finalDocument.thumbs, 320), bitmapFinal, true, true); AndroidUtilities.runOnUIThread(() -> { if (bitmapFinal[0] != null && keyFinal[0] != null) { @@ -1696,12 +1701,13 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } continue; } - if (!canSendStickers && (msgObj.isSticker() || msgObj.isAnimatedSticker() || msgObj.isGif() || msgObj.isGame())) { + boolean mediaIsSticker = (msgObj.isSticker() || msgObj.isAnimatedSticker() || msgObj.isGif() || msgObj.isGame()); + if (!canSendStickers && mediaIsSticker) { if (sendResult == 0) { sendResult = ChatObject.isActionBannedByDefault(chat, ChatObject.ACTION_SEND_STICKERS) ? 4 : 1; } continue; - } else if (!canSendMedia && (msgObj.messageOwner.media instanceof TLRPC.TL_messageMediaPhoto || msgObj.messageOwner.media instanceof TLRPC.TL_messageMediaDocument)) { + } else if (!canSendMedia && (msgObj.messageOwner.media instanceof TLRPC.TL_messageMediaPhoto || msgObj.messageOwner.media instanceof TLRPC.TL_messageMediaDocument) && !mediaIsSticker) { if (sendResult == 0) { sendResult = ChatObject.isActionBannedByDefault(chat, ChatObject.ACTION_SEND_MEDIA) ? 5 : 2; } @@ -2223,7 +2229,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe newMsg.attachPath = path; } else { TLRPC.FileLocation location1 = photo.sizes.get(photo.sizes.size() - 1).location; - newMsg.attachPath = FileLoader.getPathToAttach(location1, true).toString(); + newMsg.attachPath = FileLoader.getInstance(currentAccount).getPathToAttach(location1, true).toString(); } } else if (document != null) { newMsg.media = new TLRPC.TL_messageMediaDocument(); @@ -2958,8 +2964,10 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } else if (button instanceof TLRPC.TL_keyboardButtonBuy) { if ((messageObject.messageOwner.media.flags & 4) == 0) { TLRPC.TL_payments_getPaymentForm req = new TLRPC.TL_payments_getPaymentForm(); - req.msg_id = messageObject.getId(); - req.peer = getMessagesController().getInputPeer(messageObject.messageOwner.peer_id); + TLRPC.TL_inputInvoiceMessage inputInvoice = new TLRPC.TL_inputInvoiceMessage(); + inputInvoice.msg_id = messageObject.getId(); + inputInvoice.peer = getMessagesController().getInputPeer(messageObject.messageOwner.peer_id); + req.invoice = inputInvoice; try { JSONObject jsonObject = new JSONObject(); jsonObject.put("bg_color", Theme.getColor(Theme.key_windowBackgroundWhite)); @@ -3305,7 +3313,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe newMsg.attachPath = path; } else { TLRPC.FileLocation location1 = photo.sizes.get(photo.sizes.size() - 1).location; - newMsg.attachPath = FileLoader.getPathToAttach(location1, true).toString(); + newMsg.attachPath = FileLoader.getInstance(currentAccount).getPathToAttach(location1, true).toString(); } } else if (game != null) { newMsg = new TLRPC.TL_message(); @@ -3388,7 +3396,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe params.put("ve", ve); } if (encryptedChat != null && document.dc_id > 0 && !MessageObject.isStickerDocument(document) && !MessageObject.isAnimatedStickerDocument(document, true)) { - newMsg.attachPath = FileLoader.getPathToAttach(document).toString(); + newMsg.attachPath = FileLoader.getInstance(currentAccount).getPathToAttach(document).toString(); } else { newMsg.attachPath = path; } @@ -4467,16 +4475,16 @@ public class SendMessagesHelper extends BaseController implements NotificationCe ImageLoader.getInstance().loadHttpFile(message.httpLocation, "file", currentAccount); } else { if (message.sendRequest != null) { - String location = FileLoader.getPathToAttach(message.photoSize).toString(); + String location = FileLoader.getInstance(currentAccount).getPathToAttach(message.photoSize).toString(); putToDelayedMessages(location, message); getFileLoader().uploadFile(location, false, true, ConnectionsManager.FileTypePhoto); putToUploadingMessages(message.obj); } else { - String location = FileLoader.getPathToAttach(message.photoSize).toString(); + String location = FileLoader.getInstance(currentAccount).getPathToAttach(message.photoSize).toString(); if (message.sendEncryptedRequest != null && message.photoSize.location.dc_id != 0) { File file = new File(location); if (!file.exists()) { - location = FileLoader.getPathToAttach(message.photoSize, true).toString(); + location = FileLoader.getInstance(currentAccount).getPathToAttach(message.photoSize, true).toString(); file = new File(location); } if (!file.exists()) { @@ -4704,7 +4712,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe TLRPC.TL_messages_sendEncryptedMultiMedia request = (TLRPC.TL_messages_sendEncryptedMultiMedia) message.sendEncryptedRequest; inputMedia = request.files.get(index); } - String location = FileLoader.getPathToAttach(message.photoSize).toString(); + String location = FileLoader.getInstance(currentAccount).getPathToAttach(message.photoSize).toString(); putToDelayedMessages(location, message); message.extraHashMap.put(location, inputMedia); message.extraHashMap.put(messageObject, location); @@ -5615,7 +5623,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe File cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName + ".jpg"); File cacheFile2; if (sentMessage.media.ttl_seconds == 0 && (sentMessage.media.photo.sizes.size() == 1 || size.w > 90 || size.h > 90)) { - cacheFile2 = FileLoader.getPathToAttach(size); + cacheFile2 = FileLoader.getInstance(currentAccount).getPathToAttach(size); } else { cacheFile2 = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName2 + ".jpg"); } @@ -5710,7 +5718,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe save = true; } if (save) { - getMediaDataController().addRecentGif(sentMessage.media.document, sentMessage.date); + getMediaDataController().addRecentGif(sentMessage.media.document, sentMessage.date, true); } } else if (MessageObject.isStickerDocument(sentMessage.media.document) || MessageObject.isAnimatedStickerDocument(sentMessage.media.document, true)) { getMediaDataController().addRecentSticker(MediaDataController.TYPE_IMAGE, sentMessage, sentMessage.media.document, sentMessage.date, false); @@ -5719,7 +5727,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (newMsg.attachPath != null && newMsg.attachPath.startsWith(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE).getAbsolutePath())) { File cacheFile = new File(newMsg.attachPath); - File cacheFile2 = FileLoader.getPathToAttach(sentMessage.media.document, sentMessage.media.ttl_seconds != 0); + File cacheFile2 = FileLoader.getInstance(currentAccount).getPathToAttach(sentMessage.media.document, sentMessage.media.ttl_seconds != 0); if (!cacheFile.renameTo(cacheFile2)) { if (cacheFile.exists()) { sentMessage.attachPath = newMsg.attachPath; @@ -6008,20 +6016,26 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } } - private static boolean prepareSendingDocumentInternal(AccountInstance accountInstance, String path, String originalPath, Uri uri, String mime, long dialogId, MessageObject replyToMsg, MessageObject replyToTopMsg, CharSequence caption, final ArrayList entities, final MessageObject editingMessageObject, long[] groupId, boolean isGroupFinal, boolean forceDocument, boolean notify, int scheduleDate, Integer[] docType) { + private final static int ERROR_TYPE_UNSUPPORTED = 1; + private final static int ERROR_TYPE_FILE_TOO_LARGE = 2; + + private static int prepareSendingDocumentInternal(AccountInstance accountInstance, String path, String originalPath, Uri uri, String mime, long dialogId, MessageObject replyToMsg, MessageObject replyToTopMsg, CharSequence caption, final ArrayList entities, final MessageObject editingMessageObject, long[] groupId, boolean isGroupFinal, boolean forceDocument, boolean notify, int scheduleDate, Integer[] docType) { if ((path == null || path.length() == 0) && uri == null) { - return false; + return ERROR_TYPE_UNSUPPORTED; } if (uri != null && AndroidUtilities.isInternalUri(uri)) { - return false; + return ERROR_TYPE_UNSUPPORTED; } if (path != null && AndroidUtilities.isInternalUri(Uri.fromFile(new File(path)))) { - return false; + return ERROR_TYPE_UNSUPPORTED; } MimeTypeMap myMime = MimeTypeMap.getSingleton(); TLRPC.TL_documentAttributeAudio attributeAudio = null; String extension = null; if (uri != null && path == null) { + if (checkFileSize(accountInstance, uri)) { + return ERROR_TYPE_FILE_TOO_LARGE; + } boolean hasExt = false; if (mime != null) { extension = myMime.getExtensionFromMimeType(mime); @@ -6033,7 +6047,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } path = MediaController.copyFileToCache(uri, extension); if (path == null) { - return false; + return ERROR_TYPE_UNSUPPORTED; } if (!hasExt) { extension = null; @@ -6041,7 +6055,11 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } final File f = new File(path); if (!f.exists() || f.length() == 0) { - return false; + return ERROR_TYPE_UNSUPPORTED; + } + + if (!FileLoader.checkUploadFileSize(accountInstance.getCurrentAccount(), f.length())) { + return ERROR_TYPE_FILE_TOO_LARGE; } boolean isEncrypted = DialogObject.isEncryptedDialog(dialogId); @@ -6140,7 +6158,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe parentObject = (String) sentData[1]; } } - ensureMediaThumbExists(isEncrypted, document, path, null, 0); + ensureMediaThumbExists(accountInstance, isEncrypted, document, path, null, 0); } if (document == null) { document = new TLRPC.TL_document(); @@ -6150,7 +6168,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe fileName.file_name = name; document.file_reference = new byte[0]; document.attributes.add(fileName); - document.size = (int) f.length(); + document.size = f.length(); document.dc_id = 0; if (attributeAudio != null) { document.attributes.add(attributeAudio); @@ -6277,7 +6295,31 @@ public class SendMessagesHelper extends BaseController implements NotificationCe accountInstance.getSendMessagesHelper().sendMessage(documentFinal, null, pathFinal, dialogId, replyToMsg, replyToTopMsg, captionFinal, entities, null, params, notify, scheduleDate, 0, parentFinal, null); } }); - return true; + return 0; + } + + private static boolean checkFileSize(AccountInstance accountInstance, Uri uri) { + long len = 0; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + try { + + AssetFileDescriptor assetFileDescriptor = ApplicationLoader.applicationContext.getContentResolver().openAssetFileDescriptor(uri, "r", null); + if (assetFileDescriptor != null ) { + len = assetFileDescriptor.getLength(); + } + Cursor cursor = ApplicationLoader.applicationContext.getContentResolver().query(uri, new String[]{OpenableColumns.SIZE}, null, null, null); + int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE); + cursor.moveToFirst(); + len = cursor.getLong(sizeIndex); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + if (!FileLoader.checkUploadFileSize(accountInstance.getCurrentAccount(), len)) { + return true; + } + return false; } @UiThread @@ -6327,7 +6369,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (sentData != null && sentData[0] instanceof TLRPC.TL_document) { document = (TLRPC.TL_document) sentData[0]; parentObject = (String) sentData[1]; - ensureMediaThumbExists(isEncrypted, document, originalPath, null, 0); + ensureMediaThumbExists(accountInstance, isEncrypted, document, originalPath, null, 0); } } if (document == null) { @@ -6393,8 +6435,8 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (paths == null && originalPaths == null && uris == null || paths != null && originalPaths != null && paths.size() != originalPaths.size()) { return; } - new Thread(() -> { - boolean error = false; + Utilities.globalQueue.postRunnable(() -> { + int error = 0; long[] groupId = new long[1]; int mediaCount = 0; Integer[] docType = new Integer[1]; @@ -6414,9 +6456,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } mediaCount++; long prevGroupId = groupId[0]; - if (!prepareSendingDocumentInternal(accountInstance, paths.get(a), originalPaths.get(a), null, mime, dialogId, replyToMsg, replyToTopMsg, captionFinal, null, editingMessageObject, groupId, mediaCount == 10 || a == count - 1, inputContent == null, notify, scheduleDate, docType)) { - error = true; - } + error = prepareSendingDocumentInternal(accountInstance, paths.get(a), originalPaths.get(a), null, mime, dialogId, replyToMsg, replyToTopMsg, captionFinal, null, editingMessageObject, groupId, mediaCount == 10 || a == count - 1, inputContent == null, notify, scheduleDate, docType); if (prevGroupId != groupId[0] || groupId[0] == -1) { mediaCount = 1; } @@ -6437,9 +6477,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } mediaCount++; long prevGroupId = groupId[0]; - if (!prepareSendingDocumentInternal(accountInstance, null, null, uris.get(a), mime, dialogId, replyToMsg, replyToTopMsg, captionFinal, null, editingMessageObject, groupId, mediaCount == 10 || a == count - 1, inputContent == null, notify, scheduleDate, docType)) { - error = true; - } + error = prepareSendingDocumentInternal(accountInstance, null, null, uris.get(a), mime, dialogId, replyToMsg, replyToTopMsg, captionFinal, null, editingMessageObject, groupId, mediaCount == 10 || a == count - 1, inputContent == null, notify, scheduleDate, docType); if (prevGroupId != groupId[0] || groupId[0] == -1) { mediaCount = 1; } @@ -6448,16 +6486,25 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (inputContent != null) { inputContent.releasePermission(); } - if (error) { - AndroidUtilities.runOnUIThread(() -> { - try { + handleError(error, accountInstance); + }); + } + + private static void handleError(int error, AccountInstance accountInstance) { + if (error != 0) { + int finalError = error; + AndroidUtilities.runOnUIThread(() -> { + try { + if (finalError == ERROR_TYPE_UNSUPPORTED) { NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.showBulletin, Bulletin.TYPE_ERROR, LocaleController.getString("UnsupportedAttachment", R.string.UnsupportedAttachment)); - } catch (Exception e) { - FileLog.e(e); + } else if (finalError == ERROR_TYPE_FILE_TOO_LARGE) { + NotificationCenter.getInstance(accountInstance.getCurrentAccount()).postNotificationName(NotificationCenter.currentUserShowLimitReachedDialog, LimitReachedBottomSheet.TYPE_LARGE_FILE); } - }); - } - }).start(); + } catch (Exception e) { + FileLog.e(e); + } + }); + } } @UiThread @@ -6735,12 +6782,12 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (MessageObject.isGifDocument(document)) { TLRPC.PhotoSize photoSizeThumb = FileLoader.getClosestPhotoSizeWithSize(document.thumbs, 320); - File gifFile = FileLoader.getPathToAttach(document); + File gifFile = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(document); if (!gifFile.exists()) { - gifFile = FileLoader.getPathToAttach(document, true); + gifFile = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(document, true); } - ensureMediaThumbExists(isEncrypted, document, gifFile.getAbsolutePath(), null, 0); - precachedKey[0] = getKeyForPhotoSize(photoSizeThumb, precahcedThumb, true, true); + ensureMediaThumbExists(accountInstance, isEncrypted, document, gifFile.getAbsolutePath(), null, 0); + precachedKey[0] = getKeyForPhotoSize(accountInstance, photoSizeThumb, precahcedThumb, true, true); } AndroidUtilities.runOnUIThread(() -> { if (finalDocument != null) { @@ -6854,7 +6901,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe }))); } - public static void ensureMediaThumbExists(boolean isEncrypted, TLObject object, String path, Uri uri, long startTime) { + public static void ensureMediaThumbExists(AccountInstance accountInstance, boolean isEncrypted, TLObject object, String path, Uri uri, long startTime) { if (object instanceof TLRPC.TL_photo) { TLRPC.TL_photo photo = (TLRPC.TL_photo) object; boolean smallExists; @@ -6862,11 +6909,11 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (smallSize instanceof TLRPC.TL_photoStrippedSize || smallSize instanceof TLRPC.TL_photoPathSize) { smallExists = true; } else { - File smallFile = FileLoader.getPathToAttach(smallSize, true); + File smallFile = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(smallSize, true); smallExists = smallFile.exists(); } TLRPC.PhotoSize bigSize = FileLoader.getClosestPhotoSizeWithSize(photo.sizes, AndroidUtilities.getPhotoSize()); - File bigFile = FileLoader.getPathToAttach(bigSize, false); + File bigFile = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(bigSize, false); boolean bigExists = bigFile.exists(); if (!smallExists || !bigExists) { Bitmap bitmap = ImageLoader.loadBitmap(path, uri, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), true); @@ -6896,7 +6943,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (photoSize instanceof TLRPC.TL_photoStrippedSize || photoSize instanceof TLRPC.TL_photoPathSize) { return; } - File smallFile = FileLoader.getPathToAttach(photoSize, true); + File smallFile = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(photoSize, true); if (!smallFile.exists()) { Bitmap thumb = createVideoThumbnailAtTime(path, startTime); if (thumb == null) { @@ -6909,7 +6956,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } } - public static String getKeyForPhotoSize(TLRPC.PhotoSize photoSize, Bitmap[] bitmap, boolean blur, boolean forceCache) { + public static String getKeyForPhotoSize(AccountInstance accountInstance, TLRPC.PhotoSize photoSize, Bitmap[] bitmap, boolean blur, boolean forceCache) { if (photoSize == null || photoSize.location == null) { return null; } @@ -6919,7 +6966,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe try { BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; - File file = FileLoader.getPathToAttach(photoSize, forceCache); + File file = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(photoSize, forceCache); FileInputStream is = new FileInputStream(file); BitmapFactory.decodeStream(is, null, opts); @@ -7050,7 +7097,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe parentObject = (String) sentData[1]; } } - ensureMediaThumbExists(isEncrypted, photo, info.path, info.uri, 0); + ensureMediaThumbExists(accountInstance, isEncrypted, photo, info.path, info.uri, 0); } final MediaSendPrepareWorker worker = new MediaSendPrepareWorker(); workers.put(info, worker); @@ -7098,7 +7145,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe File cacheFile; if (info.searchImage.document instanceof TLRPC.TL_document) { document = (TLRPC.TL_document) info.searchImage.document; - cacheFile = FileLoader.getPathToAttach(document, true); + cacheFile = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(document, true); } else { /*if (!isEncrypted) { Object[] sentData = getMessagesStorage().getSentFile(info.searchImage.imageUrl, !isEncrypted ? 1 : 4); @@ -7276,7 +7323,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (!forceDocument && (videoEditedInfo != null || info.path.endsWith("mp4"))) { if (info.path == null && info.searchImage != null) { if (info.searchImage.photo instanceof TLRPC.TL_photo) { - info.path = FileLoader.getPathToAttach(info.searchImage.photo, true).getAbsolutePath(); + info.path = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(info.searchImage.photo, true).getAbsolutePath(); } else { String md5 = Utilities.MD5(info.searchImage.imageUrl) + "." + ImageLoader.getHttpUrlExtension(info.searchImage.imageUrl, "jpg"); info.path = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), md5).getAbsolutePath(); @@ -7304,7 +7351,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (sentData != null && sentData[0] instanceof TLRPC.TL_document) { document = (TLRPC.TL_document) sentData[0]; parentObject = (String) sentData[1]; - ensureMediaThumbExists(isEncrypted, document, info.path, null, startTime); + ensureMediaThumbExists(accountInstance, isEncrypted, document, info.path, null, startTime); } } if (document == null) { @@ -7322,7 +7369,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (thumb != null) { int side = isEncrypted || info.ttl != 0 ? 90 : Math.max(thumb.getWidth(), thumb.getHeight()); size = ImageLoader.scaleAndSaveImage(thumb, side, side, side > 90 ? 80 : 55, isEncrypted); - thumbKey = getKeyForPhotoSize(size, null, true, false); + thumbKey = getKeyForPhotoSize(accountInstance, size, null, true, false); } document = new TLRPC.TL_document(); document.file_reference = new byte[0]; @@ -7568,7 +7615,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe parentObject = (String) sentData[1]; } } - ensureMediaThumbExists(isEncrypted, photo, info.path, info.uri, 0); + ensureMediaThumbExists(accountInstance, isEncrypted, photo, info.path, info.uri, 0); } if (photo == null) { photo = accountInstance.getSendMessagesHelper().generatePhotoSizes(info.path, info.uri); @@ -7603,7 +7650,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (!groupMediaFinal || media.size() == 1) { TLRPC.PhotoSize currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(photoFinal.sizes, AndroidUtilities.getPhotoSize()); if (currentPhotoObject != null) { - keyFinal[0] = getKeyForPhotoSize(currentPhotoObject, bitmapFinal, false, false); + keyFinal[0] = getKeyForPhotoSize(accountInstance, currentPhotoObject, bitmapFinal, false, false); } } } catch (Exception e) { @@ -7661,7 +7708,8 @@ public class SendMessagesHelper extends BaseController implements NotificationCe mediaCount = 0; } mediaCount++; - prepareSendingDocumentInternal(accountInstance, sendAsDocuments.get(a), sendAsDocumentsOriginal.get(a), sendAsDocumentsUri.get(a), extension, dialogId, replyToMsg, replyToTopMsg, sendAsDocumentsCaptions.get(a), sendAsDocumentsEntities.get(a), editingMessageObject, groupId2, mediaCount == 10 || a == documentsCount - 1, forceDocument, notify, scheduleDate, null); + int error = prepareSendingDocumentInternal(accountInstance, sendAsDocuments.get(a), sendAsDocumentsOriginal.get(a), sendAsDocumentsUri.get(a), extension, dialogId, replyToMsg, replyToTopMsg, sendAsDocumentsCaptions.get(a), sendAsDocumentsEntities.get(a), editingMessageObject, groupId2, mediaCount == 10 || a == documentsCount - 1, forceDocument, notify, scheduleDate, null); + handleError(error, accountInstance); } } if (BuildVars.LOGS_ENABLED) { @@ -7957,7 +8005,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe if (sentData != null && sentData[0] instanceof TLRPC.TL_document) { document = (TLRPC.TL_document) sentData[0]; parentObject = (String) sentData[1]; - ensureMediaThumbExists(isEncrypted, document, videoPath, null, startTime); + ensureMediaThumbExists(accountInstance, isEncrypted, document, videoPath, null, startTime); } } if (document == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java index 39f0cca36..e02743ff0 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java @@ -19,6 +19,7 @@ import android.os.SystemClock; import android.text.TextUtils; import android.util.Base64; import android.util.SparseArray; +import android.webkit.WebView; import androidx.annotation.IntDef; import androidx.core.content.pm.ShortcutManagerCompat; @@ -49,6 +50,10 @@ public class SharedConfig { }) public @interface PasscodeType {} + public final static int SAVE_TO_GALLERY_FLAG_PEER = 1; + public final static int SAVE_TO_GALLERY_FLAG_GROUP = 2; + public final static int SAVE_TO_GALLERY_FLAG_CHANNELS = 4; + public static String pushString = ""; public static String pushStringStatus = ""; public static long pushStringGetTimeStart; @@ -100,7 +105,7 @@ public class SharedConfig { private static final Object sync = new Object(); private static final Object localIdSync = new Object(); - public static boolean saveToGallery; + public static int saveToGalleryFlags; public static int mapPreviewType = 2; public static boolean chatBubbles = Build.VERSION.SDK_INT >= 30; public static boolean autoplayGifs = true; @@ -121,6 +126,7 @@ public class SharedConfig { public static boolean noiseSupression; public static boolean noStatusBar = true; public static boolean forceRtmpStream; + public static boolean debugWebView; public static boolean sortContactsByName; public static boolean sortFilesByName; public static boolean shuffleMusic; @@ -341,7 +347,13 @@ public class SharedConfig { } preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); - saveToGallery = preferences.getBoolean("save_gallery", false); + boolean saveToGalleryLegacy = preferences.getBoolean("save_gallery", false); + if (saveToGalleryLegacy) { + saveToGalleryFlags = SAVE_TO_GALLERY_FLAG_PEER + SAVE_TO_GALLERY_FLAG_CHANNELS + SAVE_TO_GALLERY_FLAG_GROUP; + preferences.edit().remove("save_gallery").putInt("save_gallery_flags", saveToGalleryFlags).apply(); + } else { + saveToGalleryFlags = preferences.getInt("save_gallery_flags", 0); + } autoplayGifs = preferences.getBoolean("autoplay_gif", true); autoplayVideo = preferences.getBoolean("autoplay_video", true); mapPreviewType = preferences.getInt("mapPreviewType", 2); @@ -379,6 +391,7 @@ public class SharedConfig { keepMedia = preferences.getInt("keep_media", 2); noStatusBar = preferences.getBoolean("noStatusBar", true); forceRtmpStream = preferences.getBoolean("forceRtmpStream", false); + debugWebView = preferences.getBoolean("debugWebView", false); lastKeepMediaCheckTime = preferences.getInt("lastKeepMediaCheckTime", 0); lastLogsCheckTime = preferences.getInt("lastLogsCheckTime", 0); searchMessagesAsListHintShows = preferences.getInt("searchMessagesAsListHintShows", 0); @@ -402,6 +415,14 @@ public class SharedConfig { showNotificationsForAllAccounts = preferences.getBoolean("AllAccounts", true); configLoaded = true; + + try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + WebView.setWebContentsDebuggingEnabled(debugWebView); + } + } catch (Exception e) { + FileLog.e(e); + } } } @@ -615,7 +636,7 @@ public class SharedConfig { editor.commit(); } - public static void removeScheduledOrNoSuoundHint() { + public static void removeScheduledOrNoSoundHint() { SharedPreferences preferences = MessagesController.getGlobalMainSettings(); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("scheduledOrNoSoundHintShows", 3); @@ -746,6 +767,17 @@ public class SharedConfig { editor.apply(); } + public static void toggleDebugWebView() { + debugWebView = !debugWebView; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + WebView.setWebContentsDebuggingEnabled(debugWebView); + } + SharedPreferences preferences = MessagesController.getGlobalMainSettings(); + SharedPreferences.Editor editor = preferences.edit(); + editor.putBoolean("debugWebView", debugWebView); + editor.apply(); + } + public static void toggleNoStatusBar() { noStatusBar = !noStatusBar; SharedPreferences preferences = MessagesController.getGlobalMainSettings(); @@ -800,12 +832,14 @@ public class SharedConfig { editor.commit(); } - public static void toggleSaveToGallery() { - saveToGallery = !saveToGallery; + public static void toggleSaveToGalleryFlag(int flag) { + if ((saveToGalleryFlags & flag) != 0) { + saveToGalleryFlags &= ~flag; + } else { + saveToGalleryFlags |= flag; + } SharedPreferences preferences = MessagesController.getGlobalMainSettings(); - SharedPreferences.Editor editor = preferences.edit(); - editor.putBoolean("save_gallery", saveToGallery); - editor.commit(); + preferences.edit().putInt("save_gallery_flags", saveToGalleryFlags).apply(); ImageLoader.getInstance().checkMediaPaths(); ImageLoader.getInstance().getCacheOutQueue().postRunnable(() -> { checkSaveToGalleryFiles(); @@ -1095,7 +1129,7 @@ public class SharedConfig { File videoPath = new File(telegramPath, "Telegram Video"); videoPath.mkdir(); - if (saveToGallery) { + if (saveToGalleryFlags != 0 || !BuildVars.NO_SCOPED_STORAGE) { if (imagePath.isDirectory()) { new File(imagePath, ".nomedia").delete(); } @@ -1224,6 +1258,7 @@ public class SharedConfig { public static boolean canBlurChat() { return getDevicePerformanceClass() == PERFORMANCE_CLASS_HIGH; } + public static boolean chatBlurEnabled() { return canBlurChat() && chatBlur; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SvgHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/SvgHelper.java index 65f2aa53d..c4cec3a41 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SvgHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SvgHelper.java @@ -102,6 +102,7 @@ public class SvgHelper { protected ArrayList commands = new ArrayList<>(); protected HashMap paints = new HashMap<>(); + private Paint overridePaint; protected int width; protected int height; private static int[] parentPosition = new int[2]; @@ -148,9 +149,7 @@ public class SvgHelper { setupGradient(currentColorKey, colorAlpha); } Rect bounds = getBounds(); - float scaleX = bounds.width() / (float) width; - float scaleY = bounds.height() / (float) height; - float scale = aspectFill ? Math.max(scaleX, scaleY) : Math.min(scaleX, scaleY); + float scale = getScale(); canvas.save(); canvas.translate(bounds.left, bounds.top); if (!aspectFill) { @@ -165,7 +164,12 @@ public class SvgHelper { } else if (object == null) { canvas.restore(); } else { - Paint paint = paints.get(object); + Paint paint; + if (overridePaint != null) { + paint = overridePaint; + } else { + paint = paints.get(object); + } int originalAlpha = paint.getAlpha(); paint.setAlpha((int) (crossfadeAlpha * originalAlpha)); if (object instanceof Path) { @@ -222,6 +226,13 @@ public class SvgHelper { } } + public float getScale() { + Rect bounds = getBounds(); + float scaleX = bounds.width() / (float) width; + float scaleY = bounds.height() / (float) height; + return aspectFill ? Math.max(scaleX, scaleY) : Math.min(scaleX, scaleY); + } + @Override public void setAlpha(int alpha) { crossfadeAlpha = alpha / 255.0f; @@ -283,6 +294,10 @@ public class SvgHelper { } } } + + public void setPaint(Paint paint) { + overridePaint = paint; + } } public static Bitmap getBitmap(int res, int width, int height, int color) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java b/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java index b3801f31b..4038b36c9 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java @@ -21,7 +21,8 @@ import java.util.Arrays; public class UserConfig extends BaseController { public static int selectedAccount; - public final static int MAX_ACCOUNT_COUNT = 3; + public final static int MAX_ACCOUNT_DEFAULT_COUNT = 3; + public final static int MAX_ACCOUNT_COUNT = 4; private final Object sync = new Object(); private boolean configLoaded; @@ -92,6 +93,19 @@ public class UserConfig extends BaseController { super(instance); } + public static boolean hasPremiumOnAccounts() { + for (int a = 0; a < MAX_ACCOUNT_COUNT; a++) { + if (AccountInstance.getInstance(a).getUserConfig().isClientActivated() && AccountInstance.getInstance(a).getUserConfig().getUserConfig().isPremium()) { + return true; + } + } + return false; + } + + public static int getMaxAccountCount() { + return hasPremiumOnAccounts() ? 5 : 3; + } + public int getNewMessageId() { int id; synchronized (sync) { @@ -216,8 +230,22 @@ public class UserConfig extends BaseController { public void setCurrentUser(TLRPC.User user) { synchronized (sync) { + TLRPC.User oldUser = currentUser; currentUser = user; clientUserId = user.id; + checkPremium(oldUser, user); + } + } + + private void checkPremium(TLRPC.User oldUser, TLRPC.User newUser) { + if (oldUser == null || (newUser != null && oldUser.premium != newUser.premium)) { + AndroidUtilities.runOnUIThread(() -> { + getMessagesController().updatePremium(newUser.premium); + NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.currentUserPremiumStatusChanged); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.premiumStatusChangedGlobal); + + getMediaDataController().loadPremiumPromo(false); + }); } } @@ -296,6 +324,7 @@ public class UserConfig extends BaseController { } } if (currentUser != null) { + checkPremium(null, currentUser); clientUserId = currentUser.id; } configLoaded = true; @@ -431,4 +460,11 @@ public class UserConfig extends BaseController { editor.putBoolean("hasValidDialogLoadIds", true); editor.commit(); } + + public boolean isPremium() { + if (currentUser == null) { + return false; + } + return currentUser.premium; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java index ea3f1862a..58a7df743 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java @@ -65,7 +65,7 @@ public class Utilities { private native static void aesIgeEncryption(ByteBuffer buffer, byte[] key, byte[] iv, boolean encrypt, int offset, int length); private native static void aesIgeEncryptionByteArray(byte[] buffer, byte[] key, byte[] iv, boolean encrypt, int offset, int length); public native static void aesCtrDecryption(ByteBuffer buffer, byte[] key, byte[] iv, int offset, int length); - public native static void aesCtrDecryptionByteArray(byte[] buffer, byte[] key, byte[] iv, int offset, int length, int n); + public native static void aesCtrDecryptionByteArray(byte[] buffer, byte[] key, byte[] iv, int offset, long length, int n); private native static void aesCbcEncryptionByteArray(byte[] buffer, byte[] key, byte[] iv, int offset, int length, int n, int encrypt); public native static void aesCbcEncryption(ByteBuffer buffer, byte[] key, byte[] iv, int offset, int length, int encrypt); public native static String readlink(String path); @@ -113,16 +113,47 @@ public class Utilities { } int val = 0; try { - Matcher matcher = pattern.matcher(value); - if (matcher.find()) { - String num = matcher.group(0); - val = Integer.parseInt(num); + int start = -1, end; + for (end = 0; end < value.length(); ++end) { + char character = value.charAt(end); + boolean allowedChar = character == '-' || character >= '0' && character <= '9'; + if (allowedChar && start < 0) { + start = end; + } else if (!allowedChar && start >= 0) { + end++; + break; + } } - } catch (Exception ignore) { - - } + if (start >= 0) { + String str = value.subSequence(start, end).toString(); +// val = parseInt(str); + val = Integer.parseInt(str); + } +// Matcher matcher = pattern.matcher(value); +// if (matcher.find()) { +// String num = matcher.group(0); +// val = Integer.parseInt(num); +// } + } catch (Exception ignore) {} return val; } + private static int parseInt(final String s) { + int num = 0; + boolean negative = true; + final int len = s.length(); + final char ch = s.charAt(0); + if (ch == '-') { + negative = false; + } else { + num = '0' - ch; + } + int i = 1; + while (i < len) { + num = num * 10 + '0' - s.charAt(i++); + } + + return negative ? -num : num; + } public static Long parseLong(String value) { if (value == null) { @@ -283,10 +314,10 @@ public class Utilities { return computeSHA256(convertme, 0, convertme.length); } - public static byte[] computeSHA256(byte[] convertme, int offset, int len) { + public static byte[] computeSHA256(byte[] convertme, int offset, long len) { try { MessageDigest md = MessageDigest.getInstance("SHA-256"); - md.update(convertme, offset, len); + md.update(convertme, offset, (int) len); return md.digest(); } catch (Exception e) { FileLog.e(e); @@ -403,8 +434,14 @@ public class Utilities { return null; } - public static float clamp(float value, float top, float bottom) { - return Math.max(Math.min(value, top), bottom); + public static float clamp(float value, float maxValue, float minValue) { + if (Float.isNaN(value)) { + return minValue; + } + if (Float.isInfinite(value)) { + return maxValue; + } + return Math.max(Math.min(value, maxValue), minValue); } public static String generateRandomString() { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/VideoEditedInfo.java b/TMessagesProj/src/main/java/org/telegram/messenger/VideoEditedInfo.java index ae3bbf151..a023c6b5d 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/VideoEditedInfo.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/VideoEditedInfo.java @@ -54,6 +54,7 @@ public class VideoEditedInfo { public boolean canceled; public boolean videoConvertFirstWrite; public boolean needUpdateProgress = false; + public boolean shouldLimitFps = true; public static class MediaEntity { public byte type; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java b/TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java index 007ccc3ea..4c28181f3 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java @@ -26,7 +26,6 @@ import org.telegram.messenger.BuildVars; import org.telegram.messenger.CustomTabsCopyReceiver; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; -import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.ShareBroadcastReceiver; @@ -329,7 +328,7 @@ public class Browser { builder.setToolbarColor(Theme.getColor(Theme.key_actionBarBrowser)); builder.setShowTitle(true); - builder.setActionButton(BitmapFactory.decodeResource(context.getResources(), R.drawable.abc_ic_menu_share_mtrl_alpha), LocaleController.getString("ShareFile", R.string.ShareFile), PendingIntent.getBroadcast(ApplicationLoader.applicationContext, 0, share, 0), true); + builder.setActionButton(BitmapFactory.decodeResource(context.getResources(), R.drawable.msg_filled_shareout), LocaleController.getString("ShareFile", R.string.ShareFile), PendingIntent.getBroadcast(ApplicationLoader.applicationContext, 0, share, 0), true); CustomTabsIntent intent = builder.build(); intent.setUseNewTask(); intent.launchUrl(context, uri); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraController.java b/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraController.java index 7603578f7..1e399dd7d 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraController.java @@ -239,7 +239,7 @@ public class CameraController implements MediaRecorder.OnInfoListener { NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.cameraInitied); }); } catch (Exception e) { - FileLog.e(e); + FileLog.e(e, !"APP_PAUSED".equals(e.getMessage())); AndroidUtilities.runOnUIThread(() -> { onFinishCameraInitRunnables.clear(); loadingCameras = false; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraView.java b/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraView.java index bed3eb41a..a80b830c0 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraView.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraView.java @@ -24,7 +24,6 @@ import android.graphics.RectF; import android.graphics.SurfaceTexture; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; -import android.hardware.Camera; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaCodec; @@ -42,7 +41,6 @@ import android.os.Looper; import android.os.Message; import android.os.VibrationEffect; import android.os.Vibrator; -import android.util.Log; import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.Surface; @@ -151,6 +149,8 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur private FloatBuffer vertexBuffer; private FloatBuffer textureBuffer; + private final static int audioSampleRate = 44100; + public void setRecordFile(File generateVideoPath) { recordFile = generateVideoPath; } @@ -415,8 +415,8 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur int photoMaxHeight; if (initialFrontface) { aspectRatio = new Size(16, 9); - photoMaxWidth = wantedWidth = 480; - photoMaxHeight = wantedHeight = 270; + photoMaxWidth = wantedWidth = 1280; + photoMaxHeight = wantedHeight = 720; } else { if (Math.abs(screenSize - size4to3) < 0.1f) { aspectRatio = new Size(4, 3); @@ -1298,7 +1298,7 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur } buffer.offset[a] = audioPresentationTimeUs; buffer.read[a] = readResult; - int bufferDurationUs = 1000000 * readResult / 44100 / 2; + int bufferDurationUs = 1000000 * readResult / audioSampleRate / 2; audioPresentationTimeUs += bufferDurationUs; } if (buffer.results >= 0 || buffer.last) { @@ -1676,7 +1676,7 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur private void prepareEncoder() { try { - int recordBufferSize = AudioRecord.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); + int recordBufferSize = AudioRecord.getMinBufferSize(audioSampleRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); if (recordBufferSize <= 0) { recordBufferSize = 3584; } @@ -1687,7 +1687,7 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur for (int a = 0; a < 3; a++) { buffers.add(new InstantCameraView.AudioBufferInfo()); } - audioRecorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, 44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); + audioRecorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, audioSampleRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); audioRecorder.startRecording(); if (BuildVars.LOGS_ENABLED) { FileLog.d("CameraView " + "initied audio record with channels " + audioRecorder.getChannelCount() + " sample rate = " + audioRecorder.getSampleRate() + " bufferSize = " + bufferSize); @@ -1701,7 +1701,7 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur MediaFormat audioFormat = new MediaFormat(); audioFormat.setString(MediaFormat.KEY_MIME, AUDIO_MIME_TYPE); - audioFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, 44100); + audioFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, audioSampleRate); audioFormat.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1); audioFormat.setInteger(MediaFormat.KEY_BIT_RATE, 32000); audioFormat.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, 2048 * InstantCameraView.AudioBufferInfo.MAX_SAMPLES); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ringtone/RingtoneDataStore.java b/TMessagesProj/src/main/java/org/telegram/messenger/ringtone/RingtoneDataStore.java index d486846d4..56e25b652 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ringtone/RingtoneDataStore.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ringtone/RingtoneDataStore.java @@ -106,7 +106,9 @@ public class RingtoneDataStore { } } if (notify) { - NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.onUserRingtonesUpdated); + AndroidUtilities.runOnUIThread(() -> { + NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.onUserRingtonesUpdated); + }); } } @@ -226,7 +228,7 @@ public class RingtoneDataStore { if (!TextUtils.isEmpty(userRingtones.get(i).localUri)) { return userRingtones.get(i).localUri; } - return FileLoader.getPathToAttach(userRingtones.get(i).document).toString(); + return FileLoader.getInstance(currentAccount).getPathToAttach(userRingtones.get(i).document).toString(); } } return "NoSound"; @@ -241,6 +243,9 @@ public class RingtoneDataStore { Utilities.globalQueue.postRunnable(() -> { for (int i = 0; i < cachedTones.size(); i++) { CachedTone tone = cachedTones.get(i); + if (tone == null) { + continue; + } if (!TextUtils.isEmpty(tone.localUri)) { File file = new File(tone.localUri); if (file.exists()) { @@ -250,7 +255,7 @@ public class RingtoneDataStore { if (tone.document != null) { TLRPC.Document document = tone.document; - File file = FileLoader.getPathToAttach(document); + File file = FileLoader.getInstance(currentAccount).getPathToAttach(document); if (file == null || !file.exists()) { AndroidUtilities.runOnUIThread(() -> { FileLoader.getInstance(currentAccount).loadFile(document, document, 0, 0); @@ -303,10 +308,14 @@ public class RingtoneDataStore { loadFromPrefs(true); loaded = true; } - for (int i = 0; i < userRingtones.size(); i++) { - if (userRingtones.get(i).document != null && userRingtones.get(i).document.id == id) { - return userRingtones.get(i).document; + try { + for (int i = 0; i < userRingtones.size(); i++) { + if (userRingtones.get(i) != null && userRingtones.get(i).document != null && userRingtones.get(i).document.id == id) { + return userRingtones.get(i).document; + } } + } catch (Exception e) { + FileLog.e(e); } return null; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java b/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java index cc9b6e11a..6d3451ebc 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java @@ -204,8 +204,9 @@ public final class Instance { public final boolean stun; public final String username; public final String password; + public final boolean tcp; - public Endpoint(boolean isRtc, long id, String ipv4, String ipv6, int port, int type, byte[] peerTag, boolean turn, boolean stun, String username, String password) { + public Endpoint(boolean isRtc, long id, String ipv4, String ipv6, int port, int type, byte[] peerTag, boolean turn, boolean stun, String username, String password, boolean tcp) { this.isRtc = isRtc; this.id = id; this.ipv4 = ipv4; @@ -217,6 +218,7 @@ public final class Instance { this.stun = stun; this.username = username; this.password = password; + this.tcp = tcp; } @Override @@ -232,6 +234,7 @@ public final class Instance { ", stun=" + stun + ", username=" + username + ", password=" + password + + ", tcp=" + tcp + '}'; } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java b/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java index e24b5f902..0d891f8f5 100755 --- a/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java @@ -90,7 +90,6 @@ import org.telegram.messenger.BuildConfig; import org.telegram.messenger.BuildVars; import org.telegram.messenger.ChatObject; import org.telegram.messenger.ContactsController; -import org.telegram.messenger.DownloadController; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLoader; @@ -2348,7 +2347,7 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa final Instance.Endpoint[] endpoints = new Instance.Endpoint[privateCall.connections.size()]; for (int i = 0; i < endpoints.length; i++) { final TLRPC.PhoneConnection connection = privateCall.connections.get(i); - endpoints[i] = new Instance.Endpoint(connection instanceof TLRPC.TL_phoneConnectionWebrtc, connection.id, connection.ip, connection.ipv6, connection.port, endpointType, connection.peer_tag, connection.turn, connection.stun, connection.username, connection.password); + endpoints[i] = new Instance.Endpoint(connection instanceof TLRPC.TL_phoneConnectionWebrtc, connection.id, connection.ip, connection.ipv6, connection.port, endpointType, connection.peer_tag, connection.turn, connection.stun, connection.username, connection.password, connection.tcp); } if (forceTcp) { AndroidUtilities.runOnUIThread(() -> Toast.makeText(VoIPService.this, "This call uses TCP which will degrade its quality.", Toast.LENGTH_SHORT).show()); @@ -3408,62 +3407,15 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa req.peer = new TLRPC.TL_inputPhoneCall(); req.peer.access_hash = privateCall.access_hash; req.peer.id = privateCall.id; - - File file = new File(VoIPHelper.getLogFilePath(privateCall.id, true)); - String cachedFile = MediaController.copyFileToCache(Uri.fromFile(file), "log"); - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> { if (BuildVars.LOGS_ENABLED) { FileLog.d("Sent debug logs, response = " + response); } - try { - if (response instanceof TLRPC.TL_boolFalse) { - AndroidUtilities.runOnUIThread(() -> { - uploadLogFile(cachedFile); - }); - } else { - File cacheFile = new File(cachedFile); - cacheFile.delete(); - } - } catch (Exception e) { - FileLog.e(e); - } }); needSendDebugLog = false; } } - private void uploadLogFile(String filePath) { - NotificationCenter.NotificationCenterDelegate uploadDelegate = new NotificationCenter.NotificationCenterDelegate() { - @Override - public void didReceivedNotification(int id, int account, Object... args) { - if (id == NotificationCenter.fileUploaded || id == NotificationCenter.fileUploadFailed) { - final String location = (String) args[0]; - if (location.equals(filePath)) { - if (id == NotificationCenter.fileUploaded) { - TLRPC.TL_phone_saveCallLog req = new TLRPC.TL_phone_saveCallLog(); - final TLRPC.InputFile file = (TLRPC.InputFile) args[1]; - req.file = file; - req.peer = new TLRPC.TL_inputPhoneCall(); - req.peer.access_hash = privateCall.access_hash; - req.peer.id = privateCall.id; - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> { - if (BuildVars.LOGS_ENABLED) { - FileLog.d("Sent debug file log, response = " + response); - } - }); - } - NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.fileUploaded); - NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.fileUploadFailed); - } - } - } - }; - NotificationCenter.getInstance(currentAccount).addObserver(uploadDelegate, NotificationCenter.fileUploaded); - NotificationCenter.getInstance(currentAccount).addObserver(uploadDelegate, NotificationCenter.fileUploadFailed); - FileLoader.getInstance(currentAccount).uploadFile(filePath, false, true, ConnectionsManager.FileTypeFile); - } - private void initializeAccountRelatedThings() { updateServerConfig(); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.appDidLogout); @@ -3901,7 +3853,7 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa try { BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inMutable = true; - bitmap = BitmapFactory.decodeFile(FileLoader.getPathToAttach(user.photo.photo_small, true).toString(), opts); + bitmap = BitmapFactory.decodeFile(FileLoader.getInstance(currentAccount).getPathToAttach(user.photo.photo_small, true).toString(), opts); } catch (Throwable e) { FileLog.e(e); } @@ -3917,7 +3869,7 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa try { BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inMutable = true; - bitmap = BitmapFactory.decodeFile(FileLoader.getPathToAttach(chat.photo.photo_small, true).toString(), opts); + bitmap = BitmapFactory.decodeFile(FileLoader.getInstance(currentAccount).getPathToAttach(chat.photo.photo_small, true).toString(), opts); } catch (Throwable e) { FileLog.e(e); } diff --git a/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java b/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java index b500edb78..cb976d91e 100644 --- a/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java +++ b/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java @@ -10,16 +10,15 @@ import android.os.SystemClock; import android.text.TextUtils; import android.util.Base64; -import com.google.android.exoplayer2.util.Log; import com.google.firebase.remoteconfig.FirebaseRemoteConfig; import org.json.JSONArray; import org.json.JSONObject; import org.telegram.messenger.AccountInstance; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.BaseController; import org.telegram.messenger.BuildVars; -import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.EmuDetector; import org.telegram.messenger.FileLog; import org.telegram.messenger.KeepAliveJob; @@ -116,12 +115,21 @@ public class ConnectionsManager extends BaseController { } }; + private boolean forceTryIpV6; + static { ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE_SECONDS, TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory); threadPoolExecutor.allowCoreThreadTimeOut(true); DNS_THREAD_POOL_EXECUTOR = threadPoolExecutor; } + public void setForceTryIpV6(boolean forceTryIpV6) { + if (this.forceTryIpV6 != forceTryIpV6) { + this.forceTryIpV6 = forceTryIpV6; + checkConnection(); + } + } + private static class ResolvedDomain { public ArrayList addresses; @@ -141,7 +149,7 @@ public class ConnectionsManager extends BaseController { private static int lastClassGuid = 1; - private static volatile ConnectionsManager[] Instance = new ConnectionsManager[UserConfig.MAX_ACCOUNT_COUNT]; + private static final ConnectionsManager[] Instance = new ConnectionsManager[UserConfig.MAX_ACCOUNT_COUNT]; public static ConnectionsManager getInstance(int num) { ConnectionsManager localInstance = Instance[num]; if (localInstance == null) { @@ -206,7 +214,13 @@ public class ConnectionsManager extends BaseController { String fingerprint = AndroidUtilities.getCertificateSHA256Fingerprint(); int timezoneOffset = (TimeZone.getDefault().getRawOffset() + TimeZone.getDefault().getDSTSavings()) / 1000; - + SharedPreferences mainPreferences; + if (currentAccount == 0) { + mainPreferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + } else { + mainPreferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig" + currentAccount, Activity.MODE_PRIVATE); + } + forceTryIpV6 = mainPreferences.getBoolean("forceTryIpV6", false); init(BuildVars.BUILD_VERSION, TLRPC.LAYER, BuildVars.APP_ID, deviceModel, systemVersion, appVersion, langCode, systemLangCode, configPath, FileLog.getNetworkLogPath(), pushString, fingerprint, timezoneOffset, getUserConfig().getClientUserId(), enablePushConnection); } @@ -744,7 +758,7 @@ public class ConnectionsManager extends BaseController { } @SuppressLint("NewApi") - protected static byte getIpStrategy() { + protected byte getIpStrategy() { if (Build.VERSION.SDK_INT < 19) { return USE_IPV4_ONLY; } @@ -810,6 +824,9 @@ public class ConnectionsManager extends BaseController { } } if (hasIpv6) { + if (forceTryIpV6) { + return USE_IPV6_ONLY; + } if (hasStrangeIpv4) { return USE_IPV4_IPV6_RANDOM; } diff --git a/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java b/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java index 4740da3f4..356156762 100644 --- a/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java +++ b/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java @@ -66,7 +66,7 @@ public class TLRPC { public static final int MESSAGE_FLAG_HAS_BOT_ID = 0x00000800; public static final int MESSAGE_FLAG_EDITED = 0x00008000; - public static final int LAYER = 140; + public static final int LAYER = 143; public static class TL_stats_megagroupStats extends TLObject { public static int constructor = 0xef7ff916; @@ -3092,13 +3092,17 @@ public class TLRPC { } public static class TL_payments_paymentForm extends TLObject { - public static int constructor = 0x1694761b; + public static int constructor = 0xb0133b37; public int flags; public boolean can_save_credentials; public boolean password_missing; + public boolean test; public long form_id; public long bot_id; + public String title; + public String description; + public WebDocument photo; public TL_invoice invoice; public long provider_id; public String url; @@ -3125,8 +3129,14 @@ public class TLRPC { flags = stream.readInt32(exception); can_save_credentials = (flags & 4) != 0; password_missing = (flags & 8) != 0; + test = (flags & 64) != 0; form_id = stream.readInt64(exception); bot_id = stream.readInt64(exception); + title = stream.readString(exception); + description = stream.readString(exception); + if ((flags & 32) != 0) { + photo = WebDocument.TLdeserialize(stream, stream.readInt32(exception), exception); + } invoice = TL_invoice.TLdeserialize(stream, stream.readInt32(exception), exception); provider_id = stream.readInt64(exception); url = stream.readString(exception); @@ -3163,9 +3173,15 @@ public class TLRPC { stream.writeInt32(constructor); flags = can_save_credentials ? (flags | 4) : (flags &~ 4); flags = password_missing ? (flags | 8) : (flags &~ 8); + flags = test ? (flags | 64) : (flags &~ 64); stream.writeInt32(flags); stream.writeInt64(form_id); stream.writeInt64(bot_id); + stream.writeString(title); + stream.writeString(description); + if ((flags & 32) != 0) { + photo.serializeToStream(stream); + } invoice.serializeToStream(stream); stream.writeInt64(provider_id); stream.writeString(url); @@ -3280,16 +3296,19 @@ public class TLRPC { public static abstract class EncryptedFile extends TLObject { public long id; public long access_hash; - public int size; + public long size; public int dc_id; public int key_fingerprint; public static EncryptedFile TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { EncryptedFile result = null; switch (constructor) { - case 0x4a70994c: + case 0xa8008cd8: result = new TL_encryptedFile(); break; + case 0x4a70994c: + result = new TL_encryptedFile_layer142(); + break; case 0xc21f497e: result = new TL_encryptedFileEmpty(); break; @@ -3305,6 +3324,27 @@ public class TLRPC { } public static class TL_encryptedFile extends EncryptedFile { + public static int constructor = 0xa8008cd8; + + public void readParams(AbstractSerializedData stream, boolean exception) { + id = stream.readInt64(exception); + access_hash = stream.readInt64(exception); + size = stream.readInt64(exception); + dc_id = stream.readInt32(exception); + key_fingerprint = stream.readInt32(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt64(id); + stream.writeInt64(access_hash); + stream.writeInt64(size); + stream.writeInt32(dc_id); + stream.writeInt32(key_fingerprint); + } + } + + public static class TL_encryptedFile_layer142 extends EncryptedFile { public static int constructor = 0x4a70994c; @@ -3320,7 +3360,7 @@ public class TLRPC { stream.writeInt32(constructor); stream.writeInt64(id); stream.writeInt64(access_hash); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeInt32(dc_id); stream.writeInt32(key_fingerprint); } @@ -4208,16 +4248,41 @@ public class TLRPC { } public static class TL_secureFile extends SecureFile { - public static int constructor = 0xe0277a62; + public static int constructor = 0x7d09c27e; public long id; public long access_hash; - public int size; + public long size; public int dc_id; public int date; public byte[] file_hash; public byte[] secret; + public void readParams(AbstractSerializedData stream, boolean exception) { + id = stream.readInt64(exception); + access_hash = stream.readInt64(exception); + size = stream.readInt64(exception); + dc_id = stream.readInt32(exception); + date = stream.readInt32(exception); + file_hash = stream.readByteArray(exception); + secret = stream.readByteArray(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt64(id); + stream.writeInt64(access_hash); + stream.writeInt64(size); + stream.writeInt32(dc_id); + stream.writeInt32(date); + stream.writeByteArray(file_hash); + stream.writeByteArray(secret); + } + } + + public static class TL_secureFile_layer142 extends TL_secureFile { + public static int constructor = 0xe0277a62; + public void readParams(AbstractSerializedData stream, boolean exception) { id = stream.readInt64(exception); access_hash = stream.readInt64(exception); @@ -4232,7 +4297,7 @@ public class TLRPC { stream.writeInt32(constructor); stream.writeInt64(id); stream.writeInt64(access_hash); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeInt32(dc_id); stream.writeInt32(date); stream.writeByteArray(file_hash); @@ -7310,6 +7375,7 @@ public class TLRPC { public void readParams(AbstractSerializedData stream, boolean exception) { flags = stream.readInt32(exception); + nopremium = (flags & 8) != 0; if ((flags & 1) != 0) { document = Document.TLdeserialize(stream, stream.readInt32(exception), exception); } else { @@ -7322,6 +7388,7 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); + flags = nopremium ? (flags | 8) : (flags &~ 8); stream.writeInt32(flags); if ((flags & 1) != 0) { document.serializeToStream(stream); @@ -8621,6 +8688,206 @@ public class TLRPC { } } + public static class TL_help_premiumPromo_layer140 extends TL_help_premiumPromo { + public static int constructor = 0xe0360f1b; + + public void readParams(AbstractSerializedData stream, boolean exception) { + status_text = stream.readString(exception); + int magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + int count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + MessageEntity object = MessageEntity.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + status_entities.add(object); + } + magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + video_sections.add(stream.readString(exception)); + } + magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + Document object = Document.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + videos.add(object); + } + currency = stream.readString(exception); + monthly_amount = stream.readInt64(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(status_text); + stream.writeInt32(0x1cb5c415); + int count = status_entities.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + status_entities.get(a).serializeToStream(stream); + } + stream.writeInt32(0x1cb5c415); + count = video_sections.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + stream.writeString(video_sections.get(a)); + } + stream.writeInt32(0x1cb5c415); + count = videos.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + videos.get(a).serializeToStream(stream); + } + stream.writeString(currency); + stream.writeInt64(monthly_amount); + } + } + + public static class TL_help_premiumPromo extends TLObject { + public static int constructor = 0x8a4f3c29; + + public String status_text; + public ArrayList status_entities = new ArrayList<>(); + public ArrayList video_sections = new ArrayList<>(); + public ArrayList videos = new ArrayList<>(); + public String currency; + public long monthly_amount; + public ArrayList users = new ArrayList<>(); + + public static TL_help_premiumPromo TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + TL_help_premiumPromo result = null; + switch (constructor) { + case 0x8a4f3c29: + result = new TL_help_premiumPromo(); + break; + case 0xe0360f1b: + result = new TL_help_premiumPromo_layer140(); + break; + } + if (result == null && exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_help_premiumPromo", constructor)); + } + if (result != null) { + result.readParams(stream, exception); + } + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + status_text = stream.readString(exception); + int magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + int count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + MessageEntity object = MessageEntity.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + status_entities.add(object); + } + magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + video_sections.add(stream.readString(exception)); + } + magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + Document object = Document.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + videos.add(object); + } + currency = stream.readString(exception); + monthly_amount = stream.readInt64(exception); + magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + User object = User.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + users.add(object); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(status_text); + stream.writeInt32(0x1cb5c415); + int count = status_entities.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + status_entities.get(a).serializeToStream(stream); + } + stream.writeInt32(0x1cb5c415); + count = video_sections.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + stream.writeString(video_sections.get(a)); + } + stream.writeInt32(0x1cb5c415); + count = videos.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + videos.get(a).serializeToStream(stream); + } + stream.writeString(currency); + stream.writeInt64(monthly_amount); + stream.writeInt32(0x1cb5c415); + count = users.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + users.get(a).serializeToStream(stream); + } + } + } + public static abstract class help_UserInfo extends TLObject { public static help_UserInfo TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { @@ -9232,10 +9499,16 @@ public class TLRPC { public ArrayList commands = new ArrayList<>(); public int version; public BotMenuButton menu_button; + public int flags; + public Photo description_photo; + public Document description_document; public static BotInfo TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { BotInfo result = null; switch (constructor) { + case 0xe4169b5d: + result = new TL_botInfo_layer140(); + break; case 0xbb2e37ce: result = new TL_botInfoEmpty_layer48(); break; @@ -9248,7 +9521,7 @@ public class TLRPC { case 0x1b74b335: result = new TL_botInfo_layer139(); break; - case 0xe4169b5d: + case 0x8f300b57: result = new TL_botInfo(); break; } @@ -9387,6 +9660,75 @@ public class TLRPC { } public static class TL_botInfo extends BotInfo { + public static int constructor = 0x8f300b57; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + if ((flags & 1) != 0) { + user_id = stream.readInt64(exception); + } + if ((flags & 2) != 0) { + description = stream.readString(exception); + } + if ((flags & 16) != 0) { + description_photo = Photo.TLdeserialize(stream, stream.readInt32(exception), exception); + } + if ((flags & 32) != 0) { + description_document = Document.TLdeserialize(stream, stream.readInt32(exception), exception); + } + if ((flags & 4) != 0) { + int magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + int count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + TL_botCommand object = TL_botCommand.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + commands.add(object); + } + } + if ((flags & 8) != 0) { + menu_button = BotMenuButton.TLdeserialize(stream, stream.readInt32(exception), exception); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + if ((flags & 1) != 0) { + stream.writeInt64(user_id); + } + if ((flags & 2) != 0) { + stream.writeString(description); + } + if ((flags & 16) != 0) { + description_photo.serializeToStream(stream); + } + if ((flags & 32) != 0) { + description_document.serializeToStream(stream); + } + if ((flags & 4) != 0) { + stream.writeInt32(0x1cb5c415); + int count = commands.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + commands.get(a).serializeToStream(stream); + } + } + if ((flags & 8) != 0) { + menu_button.serializeToStream(stream); + } + } + } + + public static class TL_botInfo_layer140 extends TL_botInfo { public static int constructor = 0xe4169b5d; @@ -18563,7 +18905,7 @@ public class TLRPC { public static messages_FeaturedStickers TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { messages_FeaturedStickers result = null; switch (constructor) { - case 0x84c02310: + case 0xbe382906: result = new TL_messages_featuredStickers(); break; case 0xc6dc0c66: @@ -18581,14 +18923,18 @@ public class TLRPC { } public static class TL_messages_featuredStickers extends messages_FeaturedStickers { - public static int constructor = 0x84c02310; + public static int constructor = 0xbe382906; + public int flags; + public boolean premium; public long hash; public int count; public ArrayList sets = new ArrayList<>(); public ArrayList unread = new ArrayList<>(); public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + premium = (flags & 1) != 0; hash = stream.readInt64(exception); count = stream.readInt32(exception); int magic = stream.readInt32(exception); @@ -18621,6 +18967,8 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); + flags = premium ? (flags | 1) : (flags &~ 1); + stream.writeInt32(flags); stream.writeInt64(hash); stream.writeInt32(count); stream.writeInt32(0x1cb5c415); @@ -19104,8 +19452,7 @@ public class TLRPC { } } - public static class TL_dialogFilter extends TLObject { - public static int constructor = 0x7438f7e8; + public static abstract class DialogFilter extends TLObject { public int flags; public boolean contacts; @@ -19123,18 +19470,37 @@ public class TLRPC { public ArrayList include_peers = new ArrayList<>(); public ArrayList exclude_peers = new ArrayList<>(); - public static TL_dialogFilter TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { - if (TL_dialogFilter.constructor != constructor) { - if (exception) { - throw new RuntimeException(String.format("can't parse magic %x in TL_dialogFilter", constructor)); - } else { - return null; - } + public static DialogFilter TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + DialogFilter result = null; + switch (constructor) { + case 0x363293ae: + result = new TL_dialogFilterDefault(); + break; + case 0x7438f7e8: + result = new TL_dialogFilter(); + break; + } + if (result == null && exception) { + throw new RuntimeException(String.format("can't parse magic %x in DialogFilter", constructor)); + } + if (result != null) { + result.readParams(stream, exception); } - TL_dialogFilter result = new TL_dialogFilter(); - result.readParams(stream, exception); return result; } + } + + public static class TL_dialogFilterDefault extends DialogFilter { + public static int constructor = 0x363293ae; + + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_dialogFilter extends DialogFilter { + public static int constructor = 0x7438f7e8; public void readParams(AbstractSerializedData stream, boolean exception) { flags = stream.readInt32(exception); @@ -19209,7 +19575,7 @@ public class TLRPC { flags = exclude_read ? (flags | 4096) : (flags &~ 4096); flags = exclude_archived ? (flags | 8192) : (flags &~ 8192); stream.writeInt32(flags); - stream.writeInt32((int) id); + stream.writeInt32(id); stream.writeString(title); if ((flags & 33554432) != 0) { stream.writeString(emoticon); @@ -20202,6 +20568,7 @@ public class TLRPC { public boolean scam; public boolean apply_min_photo; public boolean fake; + public boolean premium; public int bot_info_version; public String bot_inline_placeholder; public String lang_code; @@ -20369,7 +20736,7 @@ public class TLRPC { apply_min_photo = (flags & 33554432) != 0; fake = (flags & 67108864) != 0; bot_attach_menu = (flags & 134217728) != 0; - bot_menu_webview = (flags & 268435456) != 0; + premium = (flags & 268435456) != 0; id = stream.readInt64(exception); if ((flags & 1) != 0) { access_hash = stream.readInt64(exception); @@ -20438,7 +20805,7 @@ public class TLRPC { flags = apply_min_photo ? (flags | 33554432) : (flags &~ 33554432); flags = fake ? (flags | 67108864) : (flags &~ 67108864); flags = bot_attach_menu ? (flags | 134217728) : (flags &~ 134217728); - flags = bot_menu_webview ? (flags | 268435456) : (flags &~ 268435456); + flags = premium ? (flags | 268435456) : (flags &~ 268435456); stream.writeInt32(flags); stream.writeInt64(id); if ((flags & 1) != 0) { @@ -21688,8 +22055,11 @@ public class TLRPC { public long call_id; public PhoneCallDiscardReason reason; public int duration; + public boolean recurring_init; + public boolean recurring_used; public String currency; public long total_amount; + public String invoice_slug; public long game_id; public int score; public boolean video; @@ -21820,9 +22190,12 @@ public class TLRPC { case 0xabe9affe: result = new TL_messageActionBotAllowed(); break; - case 0x40699cd0: + case 0x96163f56: result = new TL_messageActionPaymentSent(); break; + case 0x40699cd0: + result = new TL_messageActionPaymentSent_layer140(); + break; case 0xb6aef7b0: result = new TL_messageActionEmpty(); break; @@ -21832,6 +22205,9 @@ public class TLRPC { case 0xb3a07661: result = new TL_messageActionGroupCallScheduled(); break; + case 0x8f31b327: + result = new TL_messageActionPaymentSentMe(); + break; } if (result == null && exception) { throw new RuntimeException(String.format("can't parse magic %x in MessageAction", constructor)); @@ -22543,10 +22919,37 @@ public class TLRPC { } public static class TL_messageActionPaymentSent extends MessageAction { - public static int constructor = 0x40699cd0; - + public static int constructor = 0x96163f56; public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + recurring_init = (flags & 4) != 0; + recurring_used = (flags & 8) != 0; + currency = stream.readString(exception); + total_amount = stream.readInt64(exception); + if ((flags & 1) != 0) { + invoice_slug = stream.readString(exception); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = recurring_init ? (flags | 4) : (flags &~ 4); + flags = recurring_used ? (flags | 8) : (flags &~ 8); + stream.writeInt32(flags); + stream.writeString(currency); + stream.writeInt64(total_amount); + if ((flags & 1) != 0) { + stream.writeString(invoice_slug); + } + } + } + + public static class TL_messageActionPaymentSent_layer140 extends TL_messageActionPaymentSent { + public static int constructor = 0x40699cd0; + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); currency = stream.readString(exception); total_amount = stream.readInt64(exception); } @@ -22598,6 +23001,46 @@ public class TLRPC { } } + public static class TL_messageActionPaymentSentMe extends MessageAction { + public static int constructor = 0x8f31b327; + + public int flags; + public byte[] payload; + public TL_paymentRequestedInfo info; + public String shipping_option_id; + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + recurring_init = (flags & 4) != 0; + recurring_used = (flags & 8) != 0; + currency = stream.readString(exception); + total_amount = stream.readInt64(exception); + payload = stream.readByteArray(exception); + if ((flags & 1) != 0) { + info = TL_paymentRequestedInfo.TLdeserialize(stream, stream.readInt32(exception), exception); + } + if ((flags & 2) != 0) { + shipping_option_id = stream.readString(exception); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = recurring_init ? (flags | 4) : (flags &~ 4); + flags = recurring_used ? (flags | 8) : (flags &~ 8); + stream.writeInt32(flags); + stream.writeString(currency); + stream.writeInt64(total_amount); + stream.writeByteArray(payload); + if ((flags & 1) != 0) { + info.serializeToStream(stream); + } + if ((flags & 2) != 0) { + stream.writeString(shipping_option_id); + } + } + } + public static class TL_messageActionGroupCallScheduled extends MessageAction { public static int constructor = 0xb3a07661; @@ -23118,7 +23561,7 @@ public class TLRPC { } public static class TL_invoice extends TLObject { - public static int constructor = 0xcd886e0; + public static int constructor = 0x3e85a91b; public int flags; public boolean test; @@ -23129,10 +23572,12 @@ public class TLRPC { public boolean flexible; public boolean phone_to_provider; public boolean email_to_provider; + public boolean recurring; public String currency; public ArrayList prices = new ArrayList<>(); public long max_tip_amount; public ArrayList suggested_tip_amounts = new ArrayList<>(); + public String recurring_terms_url; public static TL_invoice TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { if (TL_invoice.constructor != constructor) { @@ -23157,6 +23602,7 @@ public class TLRPC { flexible = (flags & 32) != 0; phone_to_provider = (flags & 64) != 0; email_to_provider = (flags & 128) != 0; + recurring = (flags & 512) != 0; currency = stream.readString(exception); int magic = stream.readInt32(exception); if (magic != 0x1cb5c415) { @@ -23189,6 +23635,9 @@ public class TLRPC { suggested_tip_amounts.add(stream.readInt64(exception)); } } + if ((flags & 512) != 0) { + recurring_terms_url = stream.readString(exception); + } } public void serializeToStream(AbstractSerializedData stream) { @@ -23201,6 +23650,7 @@ public class TLRPC { flags = flexible ? (flags | 32) : (flags &~ 32); flags = phone_to_provider ? (flags | 64) : (flags &~ 64); flags = email_to_provider ? (flags | 128) : (flags &~ 128); + flags = recurring ? (flags | 512) : (flags &~ 512); stream.writeInt32(flags); stream.writeString(currency); stream.writeInt32(0x1cb5c415); @@ -23220,6 +23670,9 @@ public class TLRPC { stream.writeInt64(suggested_tip_amounts.get(a)); } } + if ((flags & 512) != 0) { + stream.writeString(recurring_terms_url); + } } } @@ -24756,7 +25209,7 @@ public class TLRPC { public int date; public String file_name; public String mime_type; - public int size; + public long size; public ArrayList thumbs = new ArrayList<>(); public ArrayList video_thumbs = new ArrayList<>(); public int version; @@ -24765,6 +25218,7 @@ public class TLRPC { public byte[] iv; public ArrayList attributes = new ArrayList<>(); public String file_name_fixed; //custom + public String localPath; //custom public static Document TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { Document result = null; @@ -24781,9 +25235,12 @@ public class TLRPC { case 0x55555556: result = new TL_documentEncrypted_old(); break; - case 0x1e87342b: + case 0x8fd4c4d8: result = new TL_document(); break; + case 0x1e87342b: + result = new TL_document_layer142(); + break; case 0x9efc6326: result = new TL_document_old(); break; @@ -24845,7 +25302,7 @@ public class TLRPC { stream.writeByteArray(file_reference); stream.writeInt32(date); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); thumbs.get(0).serializeToStream(stream); stream.writeInt32(dc_id); stream.writeInt32(0x1cb5c415); @@ -24893,7 +25350,7 @@ public class TLRPC { stream.writeInt64(access_hash); stream.writeInt32(date); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); thumbs.get(0).serializeToStream(stream); stream.writeInt32(dc_id); stream.writeInt32(0); @@ -24932,7 +25389,7 @@ public class TLRPC { stream.writeInt32(date); stream.writeString(file_name); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); thumbs.get(0).serializeToStream(stream); stream.writeInt32(dc_id); stream.writeByteArray(key); @@ -24941,6 +25398,104 @@ public class TLRPC { } public static class TL_document extends Document { + public static int constructor = 0x8fd4c4d8; + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + id = stream.readInt64(exception); + access_hash = stream.readInt64(exception); + file_reference = stream.readByteArray(exception); + date = stream.readInt32(exception); + mime_type = stream.readString(exception); + size = stream.readInt64(exception); + if ((flags & 1) != 0) { + int magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + int count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + PhotoSize object = PhotoSize.TLdeserialize(0, id, 0, stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + thumbs.add(object); + } + } + if ((flags & 2) != 0) { + int magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + int count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + VideoSize object = VideoSize.TLdeserialize(0, id, stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + video_thumbs.add(object); + } + } + dc_id = stream.readInt32(exception); + int magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + int count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + DocumentAttribute object = DocumentAttribute.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + attributes.add(object); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + stream.writeInt64(id); + stream.writeInt64(access_hash); + stream.writeByteArray(file_reference); + stream.writeInt32(date); + stream.writeString(mime_type); + stream.writeInt64(size); + if ((flags & 1) != 0) { + stream.writeInt32(0x1cb5c415); + int count = thumbs.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + thumbs.get(a).serializeToStream(stream); + } + } + if ((flags & 2) != 0) { + stream.writeInt32(0x1cb5c415); + int count = video_thumbs.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + video_thumbs.get(a).serializeToStream(stream); + } + } + stream.writeInt32(dc_id); + stream.writeInt32(0x1cb5c415); + int count = attributes.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + attributes.get(a).serializeToStream(stream); + } + } + } + + public static class TL_document_layer142 extends TL_document { public static int constructor = 0x1e87342b; @@ -25012,7 +25567,7 @@ public class TLRPC { stream.writeByteArray(file_reference); stream.writeInt32(date); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); if ((flags & 1) != 0) { stream.writeInt32(0x1cb5c415); int count = thumbs.size(); @@ -25094,7 +25649,7 @@ public class TLRPC { stream.writeByteArray(file_reference); stream.writeInt32(date); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); if ((flags & 1) != 0) { stream.writeInt32(0x1cb5c415); int count = thumbs.size(); @@ -25137,7 +25692,7 @@ public class TLRPC { stream.writeInt32(date); stream.writeString(file_name); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); thumbs.get(0).serializeToStream(stream); stream.writeInt32(dc_id); } @@ -25194,7 +25749,7 @@ public class TLRPC { stream.writeInt64(access_hash); stream.writeInt32(date); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); thumbs.get(0).serializeToStream(stream); stream.writeInt32(dc_id); stream.writeInt32(0x1cb5c415); @@ -25243,7 +25798,7 @@ public class TLRPC { stream.writeInt64(access_hash); stream.writeInt32(date); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); thumbs.get(0).serializeToStream(stream); stream.writeInt32(dc_id); stream.writeInt32(0x1cb5c415); @@ -27847,7 +28402,7 @@ public class TLRPC { public static class TL_dialogFilterSuggested extends TLObject { public static int constructor = 0x77744d4a; - public TL_dialogFilter filter; + public DialogFilter filter; public String description; public static TL_dialogFilterSuggested TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { @@ -27864,7 +28419,7 @@ public class TLRPC { } public void readParams(AbstractSerializedData stream, boolean exception) { - filter = TL_dialogFilter.TLdeserialize(stream, stream.readInt32(exception), exception); + filter = DialogFilter.TLdeserialize(stream, stream.readInt32(exception), exception); description = stream.readString(exception); } @@ -28085,12 +28640,18 @@ public class TLRPC { case 0x2661bf09: result = new TL_updatePhoneCallSignalingData(); break; + case 0x88617090: + result = new TL_updateTranscribeAudio(); + break; case 0xfa0f3ca2: result = new TL_updatePinnedDialogs(); break; case 0x74d8be99: result = new TL_updateSavedRingtones(); break; + case 0x84cd5a: + result = new TL_updateTranscribedAudio(); + break; case 0xb4afcfb0: result = new TL_updatePeerLocated(); break; @@ -29193,6 +29754,36 @@ public class TLRPC { } } + public static class TL_updateTranscribedAudio extends Update { + public static int constructor = 0x84cd5a; + + public int flags; + public boolean pending; + public Peer peer; + public int msg_id; + public long transcription_id; + public String text; + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + pending = (flags & 1) != 0; + peer = Peer.TLdeserialize(stream, stream.readInt32(exception), exception); + msg_id = stream.readInt32(exception); + transcription_id = stream.readInt64(exception); + text = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = pending ? (flags | 1) : (flags &~ 1); + stream.writeInt32(flags); + peer.serializeToStream(stream); + stream.writeInt32(msg_id); + stream.writeInt64(transcription_id); + stream.writeString(text); + } + } + public static class TL_updateLangPack extends Update { public static int constructor = 0x56022f4d; @@ -29434,13 +30025,13 @@ public class TLRPC { public int flags; public int id; - public TL_dialogFilter filter; + public DialogFilter filter; public void readParams(AbstractSerializedData stream, boolean exception) { flags = stream.readInt32(exception); id = stream.readInt32(exception); if ((flags & 1) != 0) { - filter = TL_dialogFilter.TLdeserialize(stream, stream.readInt32(exception), exception); + filter = DialogFilter.TLdeserialize(stream, stream.readInt32(exception), exception); } } @@ -29535,6 +30126,30 @@ public class TLRPC { } } + public static class TL_updateTranscribeAudio extends Update { + public static int constructor = 0x88617090; + + public int flags; + public boolean isFinal; + public long transcription_id; + public String text; + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + isFinal = (flags & 1) != 0; + transcription_id = stream.readInt64(exception); + text = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = isFinal ? (flags | 1) : (flags &~ 1); + stream.writeInt32(flags); + stream.writeInt64(transcription_id); + stream.writeString(text); + } + } + public static class TL_updatePinnedDialogs extends Update { public static int constructor = 0xfa0f3ca2; @@ -31217,6 +31832,9 @@ public class TLRPC { case 0x208e68c9: result = new TL_inputMessageEntityMentionName(); break; + case 0x5eef0214: + result = new TL_messageEntityAnimatedEmoji(); + break; case 0x4c4e743f: result = new TL_messageEntityCashtag(); break; @@ -31457,6 +32075,24 @@ public class TLRPC { } } + public static class TL_messageEntityAnimatedEmoji extends MessageEntity { + public static int constructor = 0x5eef0214; + + public int offset; + public int length; + + public void readParams(AbstractSerializedData stream, boolean exception) { + offset = stream.readInt32(exception); + length = stream.readInt32(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(offset); + stream.writeInt32(length); + } + } + public static class TL_messageEntityBold extends MessageEntity { public static int constructor = 0xbd610bc9; @@ -32602,6 +33238,7 @@ public class TLRPC { public boolean revoke_pm_inbox; public boolean blocked_mode; public boolean pfs_enabled; + public boolean force_try_ipv6; public int date; public int expires; public boolean test_mode; @@ -32669,6 +33306,7 @@ public class TLRPC { revoke_pm_inbox = (flags & 64) != 0; blocked_mode = (flags & 256) != 0; pfs_enabled = (flags & 8192) != 0; + force_try_ipv6 = (flags & 16384) != 0; date = stream.readInt32(exception); expires = stream.readInt32(exception); test_mode = stream.readBool(exception); @@ -32756,6 +33394,7 @@ public class TLRPC { flags = revoke_pm_inbox ? (flags | 64) : (flags &~ 64); flags = blocked_mode ? (flags | 256) : (flags &~ 256); flags = pfs_enabled ? (flags | 8192) : (flags &~ 8192); + flags = force_try_ipv6 ? (flags | 16384) : (flags &~ 16384); stream.writeInt32(flags); stream.writeInt32(date); stream.writeInt32(expires); @@ -33642,11 +34281,12 @@ public class TLRPC { public String username; public String password; public byte[] peer_tag; + public boolean tcp; public static PhoneConnection TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { PhoneConnection result = null; switch (constructor) { - case 0x9d4c17c0: + case 0x9cc123c7: result = new TL_phoneConnection(); break; case 0x635fe375: @@ -33664,10 +34304,11 @@ public class TLRPC { } public static class TL_phoneConnection extends PhoneConnection { - public static int constructor = 0x9d4c17c0; - + public static int constructor = 0x9cc123c7; public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + tcp = (flags & 1) != 0; id = stream.readInt64(exception); ip = stream.readString(exception); ipv6 = stream.readString(exception); @@ -33677,6 +34318,8 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); + flags = tcp ? (flags | 1) : (flags &~ 1); + stream.writeInt32(flags); stream.writeInt64(id); stream.writeString(ip); stream.writeString(ipv6); @@ -36616,7 +37259,7 @@ public class TLRPC { public static abstract class DecryptedMessageMedia extends TLObject { public int duration; public String mime_type; - public int size; + public long size; public byte[] key; public byte[] iv; public double lat; @@ -36717,7 +37360,7 @@ public class TLRPC { stream.writeInt32(constructor); stream.writeInt32(duration); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeByteArray(key); stream.writeByteArray(iv); } @@ -36805,7 +37448,7 @@ public class TLRPC { stream.writeInt32(thumb_w); stream.writeInt32(thumb_h); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeByteArray(key); stream.writeByteArray(iv); stream.writeInt32(0x1cb5c415); @@ -36856,7 +37499,7 @@ public class TLRPC { stream.writeInt32(thumb_h); stream.writeInt32(w); stream.writeInt32(h); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeByteArray(key); stream.writeByteArray(iv); stream.writeString(caption); @@ -36891,7 +37534,7 @@ public class TLRPC { stream.writeString(mime_type); stream.writeInt32(w); stream.writeInt32(h); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeByteArray(key); stream.writeByteArray(iv); stream.writeString(caption); @@ -36921,7 +37564,7 @@ public class TLRPC { stream.writeInt32(thumb_h); stream.writeString(file_name); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeByteArray(key); stream.writeByteArray(iv); } @@ -36952,7 +37595,7 @@ public class TLRPC { stream.writeInt32(duration); stream.writeInt32(w); stream.writeInt32(h); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeByteArray(key); stream.writeByteArray(iv); } @@ -37018,7 +37661,7 @@ public class TLRPC { stream.writeInt64(access_hash); stream.writeInt32(date); stream.writeString(mime_type); - stream.writeInt32(size); + stream.writeInt32((int) size); thumb.serializeToStream(stream); stream.writeInt32(dc_id); stream.writeInt32(0x1cb5c415); @@ -37057,7 +37700,7 @@ public class TLRPC { stream.writeString(mime_type); stream.writeInt32(w); stream.writeInt32(h); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeByteArray(key); stream.writeByteArray(iv); } @@ -37077,7 +37720,7 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); stream.writeInt32(duration); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeByteArray(key); stream.writeByteArray(iv); } @@ -37106,7 +37749,7 @@ public class TLRPC { stream.writeInt32(thumb_h); stream.writeInt32(w); stream.writeInt32(h); - stream.writeInt32(size); + stream.writeInt32((int) size); stream.writeByteArray(key); stream.writeByteArray(iv); } @@ -37377,6 +38020,7 @@ public class TLRPC { public int flags; public boolean inactive; + public boolean premium; public String reaction; public String title; public Document static_icon; @@ -37404,6 +38048,7 @@ public class TLRPC { public void readParams(AbstractSerializedData stream, boolean exception) { flags = stream.readInt32(exception); inactive = (flags & 1) != 0; + premium = (flags & 4) != 0; reaction = stream.readString(exception); title = stream.readString(exception); static_icon = Document.TLdeserialize(stream, stream.readInt32(exception), exception); @@ -37422,6 +38067,7 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); flags = inactive ? (flags | 1) : (flags &~ 1); + flags = premium ? (flags | 4) : (flags &~ 4); stream.writeInt32(flags); stream.writeString(reaction); stream.writeString(title); @@ -38509,7 +39155,7 @@ public class TLRPC { } public static class TL_autoDownloadSettings extends TLObject { - public static int constructor = 0xe04232f3; + public static int constructor = 0x8efab953; public int flags; public boolean disabled; @@ -38517,8 +39163,8 @@ public class TLRPC { public boolean audio_preload_next; public boolean phonecalls_less_data; public int photo_size_max; - public int video_size_max; - public int file_size_max; + public long video_size_max; + public long file_size_max; public int video_upload_maxbitrate; public static TL_autoDownloadSettings TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { @@ -38541,8 +39187,8 @@ public class TLRPC { audio_preload_next = (flags & 4) != 0; phonecalls_less_data = (flags & 8) != 0; photo_size_max = stream.readInt32(exception); - video_size_max = stream.readInt32(exception); - file_size_max = stream.readInt32(exception); + video_size_max = stream.readInt64(exception); + file_size_max = stream.readInt64(exception); video_upload_maxbitrate = stream.readInt32(exception); } @@ -38554,8 +39200,8 @@ public class TLRPC { flags = phonecalls_less_data ? (flags | 8) : (flags &~ 8); stream.writeInt32(flags); stream.writeInt32(photo_size_max); - stream.writeInt32(video_size_max); - stream.writeInt32(file_size_max); + stream.writeInt64(video_size_max); + stream.writeInt64(file_size_max); stream.writeInt32(video_upload_maxbitrate); } } @@ -38772,6 +39418,8 @@ public class TLRPC { public TL_chatBannedRights banned_rights; public TL_chatBannedRights default_banned_rights; public InputChannel migrated_to; + public boolean join_to_send; + public boolean join_request; public static Chat TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { Chat result = null; @@ -39238,6 +39886,8 @@ public class TLRPC { fake = (flags & 33554432) != 0; gigagroup = (flags & 67108864) != 0; noforwards = (flags & 134217728) != 0; + join_to_send = (flags & 268435456) != 0; + join_request = (flags & 536870912) != 0; id = stream.readInt64(exception); if ((flags & 8192) != 0) { access_hash = stream.readInt64(exception); @@ -39298,6 +39948,8 @@ public class TLRPC { flags = fake ? (flags | 33554432) : (flags &~ 33554432); flags = gigagroup ? (flags | 67108864) : (flags &~ 67108864); flags = noforwards ? (flags | 134217728) : (flags &~ 134217728); + flags = join_to_send ? (flags | 268435456) : (flags &~ 268435456); + flags = join_request ? (flags | 536870912) : (flags &~ 536870912); stream.writeInt32(flags); stream.writeInt64(id); if ((flags & 8192) != 0) { @@ -41998,6 +42650,9 @@ public class TLRPC { case 0xfc2e05bc: result = new TL_chatInviteExported_layer122(); break; + case 0xed107ab7: + result = new TL_chatInvitePublicJoinRequests(); + break; } if (result == null && exception) { throw new RuntimeException(String.format("can't parse magic %x in ExportedChatInvite", constructor)); @@ -45015,9 +45670,9 @@ public class TLRPC { } public static class TL_fileHash extends TLObject { - public static int constructor = 0x6242c773; + public static int constructor = 0xf39b035c; - public int offset; + public long offset; public int limit; public byte[] hash; @@ -45035,14 +45690,14 @@ public class TLRPC { } public void readParams(AbstractSerializedData stream, boolean exception) { - offset = stream.readInt32(exception); + offset = stream.readInt64(exception); limit = stream.readInt32(exception); hash = stream.readByteArray(exception); } public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); - stream.writeInt32(offset); + stream.writeInt64(offset); stream.writeInt32(limit); stream.writeByteArray(hash); } @@ -46583,6 +47238,19 @@ public class TLRPC { } } + public static class TL_help_getPremiumPromo extends TLObject { + public static int constructor = 0xb81b93d4; + + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return TL_help_premiumPromo.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + public static class TL_help_getUserInfo extends TLObject { public static int constructor = 0x38a08d3; @@ -47486,13 +48154,13 @@ public class TLRPC { } public static class TL_upload_getFile extends TLObject { - public static int constructor = 0xb15a9afc; + public static int constructor = 0xbe5335be; public int flags; public boolean precise; public boolean cdn_supported; public InputFileLocation location; - public int offset; + public long offset; public int limit; public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { @@ -47505,7 +48173,7 @@ public class TLRPC { flags = cdn_supported ? (flags | 2) : (flags &~ 2); stream.writeInt32(flags); location.serializeToStream(stream); - stream.writeInt32(offset); + stream.writeInt64(offset); stream.writeInt32(limit); } } @@ -50783,7 +51451,7 @@ public class TLRPC { Vector vector = new Vector(); int size = stream.readInt32(exception); for (int a = 0; a < size; a++) { - TL_dialogFilter object = TL_dialogFilter.TLdeserialize(stream, stream.readInt32(exception), exception); + DialogFilter object = DialogFilter.TLdeserialize(stream, stream.readInt32(exception), exception); if (object == null) { return vector; } @@ -52484,23 +53152,6 @@ public class TLRPC { } } - public static class TL_phone_saveCallLog extends TLObject { - public static int constructor = 0x41248786; - - public TL_inputPhoneCall peer; - public InputFile file; - - public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { - return Bool.TLdeserialize(stream, constructor, exception); - } - - public void serializeToStream(AbstractSerializedData stream) { - stream.writeInt32(constructor); - peer.serializeToStream(stream); - file.serializeToStream(stream); - } - } - public static class TL_phone_sendSignalingData extends TLObject { public static int constructor = 0xff7a9383; @@ -53046,11 +53697,10 @@ public class TLRPC { } public static class TL_payments_getPaymentForm extends TLObject { - public static int constructor = 0x8a333c8d; + public static int constructor = 0x37148dbb; public int flags; - public InputPeer peer; - public int msg_id; + public InputInvoice invoice; public TL_dataJSON theme_params; public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { @@ -53060,8 +53710,7 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); stream.writeInt32(flags); - peer.serializeToStream(stream); - stream.writeInt32(msg_id); + invoice.serializeToStream(stream); if ((flags & 1) != 0) { theme_params.serializeToStream(stream); } @@ -53086,12 +53735,11 @@ public class TLRPC { } public static class TL_payments_validateRequestedInfo extends TLObject { - public static int constructor = 0xdb103170; + public static int constructor = 0xb6c8f12b; public int flags; public boolean save; - public InputPeer peer; - public int msg_id; + public InputInvoice invoice; public TL_paymentRequestedInfo info; public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { @@ -53102,19 +53750,17 @@ public class TLRPC { stream.writeInt32(constructor); flags = save ? (flags | 1) : (flags &~ 1); stream.writeInt32(flags); - peer.serializeToStream(stream); - stream.writeInt32(msg_id); + invoice.serializeToStream(stream); info.serializeToStream(stream); } } public static class TL_payments_sendPaymentForm extends TLObject { - public static int constructor = 0x30c3bc9d; + public static int constructor = 0x2d03522f; public int flags; public long form_id; - public InputPeer peer; - public int msg_id; + public InputInvoice invoice; public String requested_info_id; public String shipping_option_id; public InputPaymentCredentials credentials; @@ -53128,8 +53774,7 @@ public class TLRPC { stream.writeInt32(constructor); stream.writeInt32(flags); stream.writeInt64(form_id); - peer.serializeToStream(stream); - stream.writeInt32(msg_id); + invoice.serializeToStream(stream); if ((flags & 1) != 0) { stream.writeString(requested_info_id); } @@ -53251,6 +53896,21 @@ public class TLRPC { } } + public static class TL_payments_assignPlayMarketTransaction extends TLObject { + public static int constructor = 0x4faa4aed; + + public String purchase_token; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return TL_updates.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(purchase_token); + } + } + public static class TL_payments_getSavedInfo extends TLObject { public static int constructor = 0x227d824b; @@ -53794,6 +54454,7 @@ public class TLRPC { public int period; public int ttl_seconds; public int proximity_notification_radius; + public boolean nopremium; public static MessageMedia TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { MessageMedia result = null; @@ -54342,6 +55003,12 @@ public class TLRPC { public int realId; //custom public int stickerVerified = 1; //custom public boolean isThreadMessage; //custom + public String voiceTranscription; //custom + public boolean voiceTranscriptionOpen; //custom + public boolean voiceTranscriptionRated; //custom + public boolean voiceTranscriptionFinal; //custom + public long voiceTranscriptionId; //custom + public boolean premiumEffectWasPlayed; //custom public static Message TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { Message result = null; @@ -57695,10 +58362,10 @@ public class TLRPC { } public static class TL_upload_getCdnFile extends TLObject { - public static int constructor = 0x2000bcc3; + public static int constructor = 0x395f69da; public byte[] file_token; - public int offset; + public long offset; public int limit; public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { @@ -57708,7 +58375,7 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); stream.writeByteArray(file_token); - stream.writeInt32(offset); + stream.writeInt64(offset); stream.writeInt32(limit); } } @@ -57740,10 +58407,10 @@ public class TLRPC { } public static class TL_upload_getCdnFileHashes extends TLObject { - public static int constructor = 0x4da54231; + public static int constructor = 0x91dc3f31; public byte[] file_token; - public int offset; + public long offset; public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { Vector vector = new Vector(); @@ -57761,7 +58428,7 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); stream.writeByteArray(file_token); - stream.writeInt32(offset); + stream.writeInt64(offset); } } @@ -58226,15 +58893,9 @@ public class TLRPC { } } - public static class TL_attachMenuBot extends TLObject { + public static class TL_attachMenuBot_layer140 extends TL_attachMenuBot { public static int constructor = 0xe93cb772; - public int flags; - public boolean inactive; - public long bot_id; - public String short_name; - public ArrayList icons = new ArrayList<>(); - public static TL_attachMenuBot TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { if (TL_attachMenuBot.constructor != constructor) { if (exception) { @@ -58285,6 +58946,99 @@ public class TLRPC { } } + public static class TL_attachMenuBot extends AttachMenuBot { + public static int constructor = 0xc8aa2cd2; + + public int flags; + public boolean inactive; + public boolean has_settings; + public long bot_id; + public String short_name; + public ArrayList peer_types = new ArrayList<>(); + public ArrayList icons = new ArrayList<>(); + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + inactive = (flags & 1) != 0; + has_settings = (flags & 2) != 0; + bot_id = stream.readInt64(exception); + short_name = stream.readString(exception); + int magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + int count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + AttachMenuPeerType object = AttachMenuPeerType.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + peer_types.add(object); + } + magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + TL_attachMenuBotIcon object = TL_attachMenuBotIcon.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + icons.add(object); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = inactive ? (flags | 1) : (flags &~ 1); + flags = has_settings ? (flags | 2) : (flags &~ 2); + stream.writeInt32(flags); + stream.writeInt64(bot_id); + stream.writeString(short_name); + stream.writeInt32(0x1cb5c415); + int count = peer_types.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + peer_types.get(a).serializeToStream(stream); + } + stream.writeInt32(0x1cb5c415); + count = icons.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + icons.get(a).serializeToStream(stream); + } + } + } + + public static abstract class AttachMenuBot extends TLObject { + + public static TL_attachMenuBot TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + TL_attachMenuBot result = null; + switch (constructor) { + case 0xe93cb772: + result = new TL_attachMenuBot_layer140(); + break; + case 0xc8aa2cd2: + result = new TL_attachMenuBot(); + break; + } + if (result == null && exception) { + throw new RuntimeException(String.format("can't parse magic %x in AttachMenuBot", constructor)); + } + if (result != null) { + result.readParams(stream, exception); + } + return result; + } + } + public static abstract class AttachMenuBots extends TLObject { public static AttachMenuBots TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { @@ -58513,18 +59267,18 @@ public class TLRPC { } public static class TL_messages_requestWebView extends TLObject { - public static int constructor = 0xfa04dff; + public static int constructor = 0x91b15831; public int flags; + public boolean from_bot_menu; public boolean silent; - public boolean background; public InputPeer peer; public InputUser bot; public String url; public String start_param; public TL_dataJSON theme_params; public int reply_to_msg_id; - public boolean from_bot_menu; + public InputPeer send_as; public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { return TL_webViewResultUrl.TLdeserialize(stream, constructor, exception); @@ -58532,9 +59286,8 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); - flags = silent ? (flags | 32) : (flags &~ 32); - flags = background ? (flags | 64) : (flags &~ 64); flags = from_bot_menu ? (flags | 16) : (flags &~ 16); + flags = silent ? (flags | 32) : (flags &~ 32); stream.writeInt32(flags); peer.serializeToStream(stream); bot.serializeToStream(stream); @@ -58550,11 +59303,14 @@ public class TLRPC { if ((flags & 1) != 0) { stream.writeInt32(reply_to_msg_id); } + if ((flags & 8192) != 0) { + send_as.serializeToStream(stream); + } } } public static class TL_messages_prolongWebView extends TLObject { - public static int constructor = 0xd22ad148; + public static int constructor = 0xea5fbcce; public int flags; public boolean silent; @@ -58562,6 +59318,7 @@ public class TLRPC { public InputUser bot; public long query_id; public int reply_to_msg_id; + public InputPeer send_as; public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { return Bool.TLdeserialize(stream, constructor, exception); @@ -58577,6 +59334,9 @@ public class TLRPC { if ((flags & 1) != 0) { stream.writeInt32(reply_to_msg_id); } + if ((flags & 8192) != 0) { + send_as.serializeToStream(stream); + } } } @@ -59176,6 +59936,362 @@ public class TLRPC { stream.writeInt32(constructor); } } + + public static class TL_channels_toggleJoinToSend extends TLObject { + public static int constructor = 0xe4cb9580; + + public InputChannel channel; + public boolean enabled; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Updates.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + channel.serializeToStream(stream); + stream.writeBool(enabled); + } + } + + public static class TL_channels_toggleJoinRequest extends TLObject { + public static int constructor = 0x4c2985b6; + + public InputChannel channel; + public boolean enabled; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Updates.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + channel.serializeToStream(stream); + stream.writeBool(enabled); + } + } + + public static class TL_chatInvitePublicJoinRequests extends TL_chatInviteExported { + public static int constructor = 0xed107ab7; + + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_phone_saveCallLog extends TLObject { + public static int constructor = 0x41248786; + + public TL_inputPhoneCall peer; + public InputFile file; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Bool.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + peer.serializeToStream(stream); + file.serializeToStream(stream); + } + } + + public static abstract class AttachMenuPeerType extends TLObject { + + public static AttachMenuPeerType TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + AttachMenuPeerType result = null; + switch (constructor) { + case 0xc32bfa1a: + result = new TL_attachMenuPeerTypeBotPM(); + break; + case 0xf146d31f: + result = new TL_attachMenuPeerTypePM(); + break; + case 0x7bfbdefc: + result = new TL_attachMenuPeerTypeBroadcast(); + break; + case 0x509113f: + result = new TL_attachMenuPeerTypeChat(); + break; + case 0x7d6be90e: + result = new TL_attachMenuPeerTypeSameBotPM(); + break; + } + if (result == null && exception) { + throw new RuntimeException(String.format("can't parse magic %x in AttachMenuPeerType", constructor)); + } + if (result != null) { + result.readParams(stream, exception); + } + return result; + } + } + + public static class TL_attachMenuPeerTypeBotPM extends AttachMenuPeerType { + public static int constructor = 0xc32bfa1a; + + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_attachMenuPeerTypePM extends AttachMenuPeerType { + public static int constructor = 0xf146d31f; + + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_attachMenuPeerTypeBroadcast extends AttachMenuPeerType { + public static int constructor = 0x7bfbdefc; + + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_attachMenuPeerTypeChat extends AttachMenuPeerType { + public static int constructor = 0x509113f; + + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_attachMenuPeerTypeSameBotPM extends AttachMenuPeerType { + public static int constructor = 0x7d6be90e; + + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static abstract class InputInvoice extends TLObject { + + public static InputInvoice TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + InputInvoice result = null; + switch (constructor) { + case 0xc5b56859: + result = new TL_inputInvoiceMessage(); + break; + case 0xc326caef: + result = new TL_inputInvoiceSlug(); + break; + } + if (result == null && exception) { + throw new RuntimeException(String.format("can't parse magic %x in InputInvoice", constructor)); + } + if (result != null) { + result.readParams(stream, exception); + } + return result; + } + } + + public static class TL_inputInvoiceMessage extends InputInvoice { + public static int constructor = 0xc5b56859; + + public InputPeer peer; + public int msg_id; + + public void readParams(AbstractSerializedData stream, boolean exception) { + peer = InputPeer.TLdeserialize(stream, stream.readInt32(exception), exception); + msg_id = stream.readInt32(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + peer.serializeToStream(stream); + stream.writeInt32(msg_id); + } + } + + public static class TL_inputInvoiceSlug extends InputInvoice { + public static int constructor = 0xc326caef; + + public String slug; + + public void readParams(AbstractSerializedData stream, boolean exception) { + slug = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(slug); + } + } + + public static class TL_payments_exportedInvoice extends TLObject { + public static int constructor = 0xaed0cbd9; + + public String url; + + public static TL_payments_exportedInvoice TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_payments_exportedInvoice.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_payments_exportedInvoice", constructor)); + } else { + return null; + } + } + TL_payments_exportedInvoice result = new TL_payments_exportedInvoice(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + url = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(url); + } + } + + public static class TL_payments_exportInvoice extends TLObject { + public static int constructor = 0xf91b065; + + public InputMedia invoice_media; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return TL_payments_exportedInvoice.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + invoice_media.serializeToStream(stream); + } + } + + public static class TL_messages_transcribeAudio extends TLObject { + public static int constructor = 0x269e9a49; + + public InputPeer peer; + public int msg_id; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return TL_messages_transcribedAudio.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + peer.serializeToStream(stream); + stream.writeInt32(msg_id); + } + } + + public static class TL_messages_rateTranscribedAudio extends TLObject { + public static int constructor = 0x7f1d072f; + + public InputPeer peer; + public int msg_id; + public long transcription_id; + public boolean good; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Bool.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + peer.serializeToStream(stream); + stream.writeInt32(msg_id); + stream.writeInt64(transcription_id); + stream.writeBool(good); + } + } + + public static class TL_messages_transcribedAudio extends TLObject { + public static int constructor = 0x93752c52; + + public int flags; + public boolean pending; + public long transcription_id; + public String text; + + public static TL_messages_transcribedAudio TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_messages_transcribedAudio.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_messages_transcribedAudio", constructor)); + } else { + return null; + } + } + TL_messages_transcribedAudio result = new TL_messages_transcribedAudio(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + pending = (flags & 1) != 0; + transcription_id = stream.readInt64(exception); + text = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = pending ? (flags | 1) : (flags &~ 1); + stream.writeInt32(flags); + stream.writeInt64(transcription_id); + stream.writeString(text); + } + } + + public static class TL_payments_restorePlayMarketReceipt extends TLObject { + public static int constructor = 0xd164e36a; + + public byte[] receipt; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Updates.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeByteArray(receipt); + } + } + + public static class TL_payments_canPurchasePremium extends TLObject { + public static int constructor = 0xaa6a90c8; + + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Bool.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_payments_requestRecurringPayment extends TLObject { + public static int constructor = 0x146e958d; + + public InputUser user_id; + public String recurring_init_charge; + public InputMedia invoice_media; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Updates.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + user_id.serializeToStream(stream); + stream.writeString(recurring_init_charge); + invoice_media.serializeToStream(stream); + } + } //functions public static class Vector extends TLObject { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java index 1eaca168f..eebf8f7ee 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java @@ -69,12 +69,14 @@ public class ActionBar extends FrameLayout { } private ImageView backButtonImageView; + private Drawable backButtonDrawable; private SimpleTextView[] titleTextView = new SimpleTextView[2]; private SimpleTextView subtitleTextView; private SimpleTextView additionalSubtitleTextView; private View actionModeTop; private int actionModeColor; private int actionBarColor; + private boolean isMenuOffsetSuppressed; private ActionBarMenu menu; private ActionBarMenu actionMode; private String actionModeTag; @@ -84,6 +86,7 @@ public class ActionBar extends FrameLayout { private boolean addToContainer = true; private boolean clipContent; private boolean interceptTouches = true; + private boolean forceSkipTouches; private int extraHeight; private AnimatorSet actionModeAnimation; private View actionModeExtraView; @@ -127,6 +130,11 @@ public class ActionBar extends FrameLayout { private View.OnTouchListener interceptTouchEventListener; private final Theme.ResourcesProvider resourcesProvider; + SizeNotifierFrameLayout contentView; + boolean blurredBackground; + public Paint blurScrimPaint = new Paint(); + Rect rectTmp = new Rect(); + EllipsizeSpanAnimator ellipsizeSpanAnimator = new EllipsizeSpanAnimator(this); public ActionBar(Context context) { @@ -171,12 +179,16 @@ public class ActionBar extends FrameLayout { backButtonImageView.setContentDescription(LocaleController.getString("AccDescrGoBack", R.string.AccDescrGoBack)); } + public Drawable getBackButtonDrawable() { + return backButtonDrawable; + } + public void setBackButtonDrawable(Drawable drawable) { if (backButtonImageView == null) { createBackButtonImage(); } backButtonImageView.setVisibility(drawable == null ? GONE : VISIBLE); - backButtonImageView.setImageDrawable(drawable); + backButtonImageView.setImageDrawable(backButtonDrawable = drawable); if (drawable instanceof BackDrawable) { BackDrawable backDrawable = (BackDrawable) drawable; backDrawable.setRotation(isActionModeShowed() ? 1 : 0, false); @@ -1037,13 +1049,19 @@ public class ActionBar extends FrameLayout { menu.measure(menuWidth, actionBarHeightSpec); int itemsWidth = menu.getItemsMeasuredWidth(); menuWidth = MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(AndroidUtilities.isTablet() ? 74 : 66) + menu.getItemsMeasuredWidth(), MeasureSpec.EXACTLY); - menu.translateXItems(-itemsWidth); + if (!isMenuOffsetSuppressed) { + menu.translateXItems(-itemsWidth); + } } else if (isSearchFieldVisible) { menuWidth = MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(AndroidUtilities.isTablet() ? 74 : 66), MeasureSpec.EXACTLY); - menu.translateXItems(0); + if (!isMenuOffsetSuppressed) { + menu.translateXItems(0); + } } else { menuWidth = MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST); - menu.translateXItems(0); + if (!isMenuOffsetSuppressed) { + menu.translateXItems(0); + } } menu.measure(menuWidth, actionBarHeightSpec); @@ -1107,6 +1125,10 @@ public class ActionBar extends FrameLayout { } } + public void setMenuOffsetSuppressed(boolean menuOffsetSuppressed) { + isMenuOffsetSuppressed = menuOffsetSuppressed; + } + @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { int additionalTop = occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; @@ -1387,6 +1409,9 @@ public class ActionBar extends FrameLayout { @Override public boolean onTouchEvent(MotionEvent event) { + if (forceSkipTouches) { + return false; + } return super.onTouchEvent(event) || interceptTouches; } @@ -1572,9 +1597,6 @@ public class ActionBar extends FrameLayout { return color != null ? color : Theme.getColor(key); } - SizeNotifierFrameLayout contentView; - boolean blurredBackground; - public void setDrawBlurBackground(SizeNotifierFrameLayout contentView) { blurredBackground = true; this.contentView = contentView; @@ -1582,8 +1604,6 @@ public class ActionBar extends FrameLayout { setBackground(null); } - public Paint blurScrimPaint = new Paint(); - Rect rectTmp = new Rect(); @Override protected void dispatchDraw(Canvas canvas) { if (blurredBackground && actionBarColor != Color.TRANSPARENT) { @@ -1593,4 +1613,8 @@ public class ActionBar extends FrameLayout { } super.dispatchDraw(canvas); } + + public void setForceSkipTouches(boolean forceSkipTouches) { + this.forceSkipTouches = forceSkipTouches; + } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java index 12a41ba6e..39acdaec1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java @@ -12,6 +12,7 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; @@ -24,6 +25,7 @@ import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; +import android.util.Log; import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.KeyEvent; @@ -35,6 +37,7 @@ import android.view.ViewGroup; import android.view.ViewOutlineProvider; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.DecelerateInterpolator; +import android.view.animation.OvershootInterpolator; import android.widget.FrameLayout; import androidx.annotation.Keep; @@ -43,6 +46,7 @@ import androidx.core.math.MathUtils; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.FileLog; +import org.telegram.messenger.ImageLoader; import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; @@ -69,6 +73,8 @@ public class ActionBarLayout extends FrameLayout { void onRebuildAllFragments(ActionBarLayout layout, boolean last); } + public boolean highlightActionButtons = false; + public class LayoutContainer extends FrameLayout { private Rect rect = new Rect(); @@ -78,6 +84,8 @@ public class ActionBarLayout extends FrameLayout { private Paint backgroundPaint = new Paint(); private int backgroundColor; + private boolean wasPortrait; + public LayoutContainer(Context context) { super(context); setWillNotDraw(false); @@ -125,6 +133,12 @@ public class ActionBarLayout extends FrameLayout { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = MeasureSpec.getSize(widthMeasureSpec); int height = MeasureSpec.getSize(heightMeasureSpec); + boolean isPortrait = height > width; + if (wasPortrait != isPortrait && isInPreviewMode()) { + finishPreviewFragment(); + } + wasPortrait = isPortrait; + int count = getChildCount(); int actionBarHeight = 0; for (int a = 0; a < count; a++) { @@ -185,11 +199,11 @@ public class ActionBarLayout extends FrameLayout { @Override public boolean dispatchTouchEvent(MotionEvent ev) { + processMenuButtonsTouch(ev); boolean passivePreview = inPreviewMode && previewMenu == null; if ((passivePreview || transitionAnimationPreviewMode) && (ev.getActionMasked() == MotionEvent.ACTION_DOWN || ev.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN)) { return false; } - // try { return (!passivePreview || this != containerView) && super.dispatchTouchEvent(ev); } catch (Throwable e) { @@ -214,6 +228,76 @@ public class ActionBarLayout extends FrameLayout { this.fragmentPanTranslationOffset = fragmentPanTranslationOffset; invalidate(); } + + // for menu buttons to be clicked by hover: + private float pressX, pressY; + private boolean allowToPressByHover; + public void processMenuButtonsTouch(MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + pressX = event.getX(); + pressY = event.getY(); + allowToPressByHover = false; + } else if (event.getAction() == MotionEvent.ACTION_MOVE || event.getAction() == MotionEvent.ACTION_UP) { + if (previewMenu != null && highlightActionButtons) { +// movePreviewFragment(Math.min(pressY, AndroidUtilities.displaySize.y * .4f) - event.getY()); + if (!allowToPressByHover && Math.sqrt(Math.pow(pressX - event.getX(), 2) + Math.pow(pressY - event.getY(), 2)) > AndroidUtilities.dp(30)) { + allowToPressByHover = true; + } + if (allowToPressByHover && (previewMenu.getSwipeBack() == null || !previewMenu.getSwipeBack().isForegroundOpen())) { + for (int i = 0; i < previewMenu.getItemsCount(); ++i) { + ActionBarMenuSubItem button = (ActionBarMenuSubItem) previewMenu.getItemAt(i); + if (button != null) { + Drawable ripple = button.getBackground(); + button.getGlobalVisibleRect(AndroidUtilities.rectTmp2); + boolean shouldBeEnabled = AndroidUtilities.rectTmp2.contains((int) event.getX(), (int) event.getY()), + enabled = ripple.getState().length == 2; + if (event.getAction() == MotionEvent.ACTION_MOVE) { + if (shouldBeEnabled != enabled) { + ripple.setState(shouldBeEnabled ? new int[]{android.R.attr.state_pressed, android.R.attr.state_enabled} : new int[]{}); + if (shouldBeEnabled) { + try { + button.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } catch (Exception ignore) {} + } + } + } else if (event.getAction() == MotionEvent.ACTION_UP) { + if (shouldBeEnabled) { + button.performClick(); + } + } + } + } + } + } + } + if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { + if (previewMenu != null && highlightActionButtons) { + int alpha = 255; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + alpha = Theme.moveUpDrawable.getAlpha(); + } + ValueAnimator arrowAlphaUpdate = ValueAnimator.ofFloat(alpha, 0); + arrowAlphaUpdate.addUpdateListener(a -> { + Theme.moveUpDrawable.setAlpha(((Float) a.getAnimatedValue()).intValue()); + if (drawerLayoutContainer != null) { + drawerLayoutContainer.invalidate(); + } + if (containerView != null) { + containerView.invalidate(); + } + ActionBarLayout.this.invalidate(); + }); + arrowAlphaUpdate.setDuration(150); + arrowAlphaUpdate.setInterpolator(CubicBezierInterpolator.DEFAULT); + arrowAlphaUpdate.start(); + ObjectAnimator containerTranslationUpdate = ObjectAnimator.ofFloat(containerView, View.TRANSLATION_Y, 0); + containerTranslationUpdate.setDuration(150); + containerTranslationUpdate.setInterpolator(CubicBezierInterpolator.DEFAULT); + containerTranslationUpdate.start(); + } + highlightActionButtons = false; + } + } } public static class ThemeAnimationSettings { @@ -265,10 +349,11 @@ public class ActionBarLayout extends FrameLayout { private BaseFragment oldFragment; /* Contest */ - private View previewMenu; + private ActionBarPopupWindow.ActionBarPopupWindowLayout previewMenu; private AnimatorSet currentAnimation; private DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator(1.5f); + private OvershootInterpolator overshootInterpolator = new OvershootInterpolator(1.02f); private AccelerateDecelerateInterpolator accelerateDecelerateInterpolator = new AccelerateDecelerateInterpolator(); public float innerTranslationX; @@ -364,6 +449,7 @@ public class ActionBarLayout extends FrameLayout { fragment.setParentLayout(this); } } + @Override public void onConfigurationChanged(android.content.res.Configuration newConfig) { super.onConfigurationChanged(newConfig); @@ -469,6 +555,13 @@ public class ActionBarLayout extends FrameLayout { } } + public void onUserLeaveHint() { + if (!fragmentsStack.isEmpty()) { + BaseFragment lastFragment = fragmentsStack.get(fragmentsStack.size() - 1); + lastFragment.onUserLeaveHint(); + } + } + public void onPause() { if (!fragmentsStack.isEmpty()) { BaseFragment lastFragment = fragmentsStack.get(fragmentsStack.size() - 1); @@ -595,9 +688,10 @@ public class ActionBarLayout extends FrameLayout { previewBackgroundDrawable.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight()); previewBackgroundDrawable.draw(canvas); if (previewMenu == null) { - int x = (getMeasuredWidth() - AndroidUtilities.dp(24)) / 2; + int width = AndroidUtilities.dp(32), height = width / 2; + int x = (getMeasuredWidth() - width) / 2; int y = (int) (view.getTop() + containerView.getTranslationY() - AndroidUtilities.dp(12 + (Build.VERSION.SDK_INT < 21 ? 20 : 0))); - Theme.moveUpDrawable.setBounds(x, y, x + AndroidUtilities.dp(24), y + AndroidUtilities.dp(24)); + Theme.moveUpDrawable.setBounds(x, y, x + width, y + height); Theme.moveUpDrawable.draw(canvas); } } @@ -968,7 +1062,7 @@ public class ActionBarLayout extends FrameLayout { return presentFragment(fragment, false, false, true, true, null); } - public boolean presentFragmentAsPreviewWithMenu(BaseFragment fragment, View menu) { + public boolean presentFragmentAsPreviewWithMenu(BaseFragment fragment, ActionBarPopupWindow.ActionBarPopupWindowLayout menu) { return presentFragment(fragment, false, false, true, true, menu); } @@ -1001,7 +1095,8 @@ public class ActionBarLayout extends FrameLayout { dt = 18; } lastFrameTime = newTime; - animationProgress += dt / 150.0f; + float duration = preview && open ? 190.0f : 150.0f; + animationProgress += dt / duration; if (animationProgress > 1.0f) { animationProgress = 1.0f; } @@ -1013,30 +1108,49 @@ public class ActionBarLayout extends FrameLayout { } Integer oldNavigationBarColor = oldFragment != null ? oldFragment.getNavigationBarColor() : null; Integer newNavigationBarColor = newFragment != null ? newFragment.getNavigationBarColor() : null; - if (newFragment != null && !newFragment.inPreviewMode && oldNavigationBarColor != null) { + if (newFragment != null && oldNavigationBarColor != null) { float ratio = MathUtils.clamp(2f * animationProgress - (open ? 1f : 0f), 0f, 1f); newFragment.setNavigationBarColor(ColorUtils.blendARGB(oldNavigationBarColor, newNavigationBarColor, ratio)); } - float interpolated = decelerateInterpolator.getInterpolation(animationProgress); + float interpolated; + if (preview) { + if (open) { + interpolated = overshootInterpolator.getInterpolation(animationProgress); + } else { + interpolated = CubicBezierInterpolator.EASE_OUT_QUINT.getInterpolation(animationProgress); + } + } else { + interpolated = decelerateInterpolator.getInterpolation(animationProgress); + } if (open) { - containerView.setAlpha(interpolated); + float clampedInterpolated = MathUtils.clamp(interpolated, 0, 1); + containerView.setAlpha(clampedInterpolated); if (preview) { - containerView.setScaleX(0.9f + 0.1f * interpolated); - containerView.setScaleY(0.9f + 0.1f * interpolated); - previewBackgroundDrawable.setAlpha((int) (0x2e * interpolated)); - Theme.moveUpDrawable.setAlpha((int) (255 * interpolated)); + containerView.setScaleX(0.7f + 0.3f * interpolated); + containerView.setScaleY(0.7f + 0.3f * interpolated); + if (previewMenu != null) { + containerView.setTranslationY(AndroidUtilities.dp(40) * (1f - interpolated)); + previewMenu.setTranslationY(-AndroidUtilities.dp(40 + 30) * (1f - interpolated)); + previewMenu.setScaleX(0.95f + 0.05f * interpolated); + previewMenu.setScaleY(0.95f + 0.05f * interpolated); + } + previewBackgroundDrawable.setAlpha((int) (0x2e * clampedInterpolated)); + Theme.moveUpDrawable.setAlpha((int) (255 * clampedInterpolated)); containerView.invalidate(); invalidate(); } else { containerView.setTranslationX(AndroidUtilities.dp(48) * (1.0f - interpolated)); } } else { - containerViewBack.setAlpha(1.0f - interpolated); + float clampedReverseInterpolated = MathUtils.clamp(1f - interpolated, 0, 1); + containerViewBack.setAlpha(clampedReverseInterpolated); if (preview) { containerViewBack.setScaleX(0.9f + 0.1f * (1.0f - interpolated)); containerViewBack.setScaleY(0.9f + 0.1f * (1.0f - interpolated)); - previewBackgroundDrawable.setAlpha((int) (0x2e * (1.0f - interpolated))); - Theme.moveUpDrawable.setAlpha((int) (255 * (1.0f - interpolated))); + previewBackgroundDrawable.setAlpha((int) (0x2e * clampedReverseInterpolated)); + if (previewMenu == null) { + Theme.moveUpDrawable.setAlpha((int) (255 * clampedReverseInterpolated)); + } containerView.invalidate(); invalidate(); } else { @@ -1079,12 +1193,26 @@ public class ActionBarLayout extends FrameLayout { return presentFragment(fragment, removeLast, forceWithoutAnimation, check, preview, null); } - public boolean presentFragment(final BaseFragment fragment, final boolean removeLast, boolean forceWithoutAnimation, boolean check, final boolean preview, View menu) { + public boolean presentFragment(final BaseFragment fragment, final boolean removeLast, boolean forceWithoutAnimation, boolean check, final boolean preview, ActionBarPopupWindow.ActionBarPopupWindowLayout menu) { if (fragment == null || checkTransitionAnimation() || delegate != null && check && !delegate.needPresentFragment(fragment, removeLast, forceWithoutAnimation, this) || !fragment.onFragmentCreate()) { return false; } + if (inPreviewMode && transitionAnimationPreviewMode) { + if (delayedOpenAnimationRunnable != null) { + AndroidUtilities.cancelRunOnUIThread(delayedOpenAnimationRunnable); + delayedOpenAnimationRunnable = null; + } + closeLastFragment(false, true); + } fragment.setInPreviewMode(preview); - fragment.setInMenuMode(menu != null); + if (previewMenu != null) { + if (previewMenu.getParent() != null) { + ((ViewGroup) previewMenu.getParent()).removeView(previewMenu); + } + previewMenu = null; + } + previewMenu = menu; + fragment.setInMenuMode(previewMenu != null); if (parentActivity.getCurrentFocus() != null && fragment.hideKeyboardOnShow() && !preview) { AndroidUtilities.hideKeyboard(parentActivity.getCurrentFocus()); } @@ -1126,11 +1254,12 @@ public class ActionBarLayout extends FrameLayout { layoutParams.height = height; layoutParams.topMargin = statusBarHeight + (getMeasuredHeight() - statusBarHeight - height) / 2; } else { - layoutParams.topMargin = layoutParams.bottomMargin = AndroidUtilities.dp(menu != null ? 0 : 46); + layoutParams.topMargin = layoutParams.bottomMargin = AndroidUtilities.dp(menu != null ? 0 : 24); layoutParams.topMargin += AndroidUtilities.statusBarHeight; } if (menu != null) { layoutParams.bottomMargin += menuHeight + AndroidUtilities.dp(8); +// layoutParams.topMargin += AndroidUtilities.dp(32); } layoutParams.rightMargin = layoutParams.leftMargin = AndroidUtilities.dp(8); } else { @@ -1368,6 +1497,7 @@ public class ActionBarLayout extends FrameLayout { if (onFragmentStackChangedListener != null) { onFragmentStackChangedListener.run(); } + ImageLoader.getInstance().onFragmentStackChanged(); } public boolean addFragmentToStack(BaseFragment fragment) { @@ -1419,7 +1549,7 @@ public class ActionBarLayout extends FrameLayout { } public void movePreviewFragment(float dy) { - if (!inPreviewMode || transitionAnimationPreviewMode || previewMenu != null) { + if (!inPreviewMode || previewMenu != null || transitionAnimationPreviewMode) { return; } float currentTranslation = containerView.getTranslationY(); @@ -1427,41 +1557,8 @@ public class ActionBarLayout extends FrameLayout { if (nextTranslation > 0) { nextTranslation = 0; } else if (nextTranslation < -AndroidUtilities.dp(60)) { - previewOpenAnimationInProgress = true; - inPreviewMode = false; nextTranslation = 0; - - BaseFragment prevFragment = fragmentsStack.get(fragmentsStack.size() - 2); - BaseFragment fragment = fragmentsStack.get(fragmentsStack.size() - 1); - - if (Build.VERSION.SDK_INT >= 21) { - fragment.fragmentView.setOutlineProvider(null); - fragment.fragmentView.setClipToOutline(false); - } - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) fragment.fragmentView.getLayoutParams(); - layoutParams.topMargin = layoutParams.bottomMargin = layoutParams.rightMargin = layoutParams.leftMargin = 0; - layoutParams.height = LayoutHelper.MATCH_PARENT; - fragment.fragmentView.setLayoutParams(layoutParams); - - presentFragmentInternalRemoveOld(false, prevFragment); - - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.playTogether( - ObjectAnimator.ofFloat(fragment.fragmentView, View.SCALE_X, 1.0f, 1.05f, 1.0f), - ObjectAnimator.ofFloat(fragment.fragmentView, View.SCALE_Y, 1.0f, 1.05f, 1.0f)); - animatorSet.setDuration(200); - animatorSet.setInterpolator(new CubicBezierInterpolator(0.42, 0.0, 0.58, 1.0)); - animatorSet.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - previewOpenAnimationInProgress = false; - fragment.onPreviewOpenAnimationEnd(); - } - }); - animatorSet.start(); - performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP); - - fragment.setInPreviewMode(false); + expandPreviewFragment(); } if (currentTranslation != nextTranslation) { containerView.setTranslationY(nextTranslation); @@ -1469,6 +1566,44 @@ public class ActionBarLayout extends FrameLayout { } } + public void expandPreviewFragment() { + previewOpenAnimationInProgress = true; + inPreviewMode = false; + + BaseFragment prevFragment = fragmentsStack.get(fragmentsStack.size() - 2); + BaseFragment fragment = fragmentsStack.get(fragmentsStack.size() - 1); + + if (Build.VERSION.SDK_INT >= 21) { + fragment.fragmentView.setOutlineProvider(null); + fragment.fragmentView.setClipToOutline(false); + } + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) fragment.fragmentView.getLayoutParams(); + layoutParams.topMargin = layoutParams.bottomMargin = layoutParams.rightMargin = layoutParams.leftMargin = 0; + layoutParams.height = LayoutHelper.MATCH_PARENT; + fragment.fragmentView.setLayoutParams(layoutParams); + + presentFragmentInternalRemoveOld(false, prevFragment); + + AnimatorSet animatorSet = new AnimatorSet(); + animatorSet.playTogether( + ObjectAnimator.ofFloat(fragment.fragmentView, View.SCALE_X, 1.0f, 1.05f, 1.0f), + ObjectAnimator.ofFloat(fragment.fragmentView, View.SCALE_Y, 1.0f, 1.05f, 1.0f)); + animatorSet.setDuration(200); + animatorSet.setInterpolator(new CubicBezierInterpolator(0.42, 0.0, 0.58, 1.0)); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + previewOpenAnimationInProgress = false; + fragment.onPreviewOpenAnimationEnd(); + } + }); + animatorSet.start(); + performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP); + + fragment.setInPreviewMode(false); + fragment.setInMenuMode(false); + } + public void finishPreviewFragment() { if (!inPreviewMode && !transitionAnimationPreviewMode) { return; @@ -1481,6 +1616,10 @@ public class ActionBarLayout extends FrameLayout { } public void closeLastFragment(boolean animated) { + closeLastFragment(animated, false); + } + + public void closeLastFragment(boolean animated, boolean forceNoAnimation) { if (delegate != null && !delegate.needCloseLastFragment(this) || checkTransitionAnimation() || fragmentsStack.isEmpty()) { return; } @@ -1488,7 +1627,7 @@ public class ActionBarLayout extends FrameLayout { AndroidUtilities.hideKeyboard(parentActivity.getCurrentFocus()); } setInnerTranslationX(0); - boolean needAnimation = inPreviewMode || transitionAnimationPreviewMode || animated && MessagesController.getGlobalMainSettings().getBoolean("view_animations", true); + boolean needAnimation = !forceNoAnimation && (inPreviewMode || transitionAnimationPreviewMode || animated && MessagesController.getGlobalMainSettings().getBoolean("view_animations", true)); final BaseFragment currentFragment = fragmentsStack.get(fragmentsStack.size() - 1); BaseFragment previousFragment = null; if (fragmentsStack.size() > 1) { @@ -1550,10 +1689,6 @@ public class ActionBarLayout extends FrameLayout { fragmentView.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); } - if (!needAnimation) { - closeLastFragmentInternalRemoveOld(currentFragment); - } - if (needAnimation) { transitionAnimationStartTime = System.currentTimeMillis(); transitionAnimationInProgress = true; @@ -1614,12 +1749,13 @@ public class ActionBarLayout extends FrameLayout { } onFragmentStackChanged(); } else { + closeLastFragmentInternalRemoveOld(currentFragment); currentFragment.onTransitionAnimationEnd(false, true); previousFragment.onTransitionAnimationEnd(true, true); previousFragment.onBecomeFullyVisible(); } } else { - if (useAlphaAnimations) { + if (useAlphaAnimations && !forceNoAnimation) { transitionAnimationStartTime = System.currentTimeMillis(); transitionAnimationInProgress = true; layoutToIgnore = containerView; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java index 7290a988a..e132fee1a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java @@ -82,6 +82,10 @@ public class ActionBarMenu extends LinearLayout { return addItem(id, icon, null, isActionMode ? parentActionBar.itemsActionModeBackgroundColor : parentActionBar.itemsBackgroundColor, null, width, null); } + public ActionBarMenuItem addItemWithWidth(int id, Drawable drawable, int width, CharSequence title) { + return addItem(id, 0, null, isActionMode ? parentActionBar.itemsActionModeBackgroundColor : parentActionBar.itemsBackgroundColor, drawable, width, title); + } + public ActionBarMenuItem addItemWithWidth(int id, int icon, int width, CharSequence title) { return addItem(id, icon, null, isActionMode ? parentActionBar.itemsActionModeBackgroundColor : parentActionBar.itemsBackgroundColor, null, width, title); } @@ -355,7 +359,7 @@ public class ActionBarMenu extends LinearLayout { return false; } - public void translateXItems(int offset) { + public void translateXItems(float offset) { int count = getChildCount(); for (int a = 0; a < count; a++) { View view = getChildAt(a); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java index 5288da6bf..82ee9b3b0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java @@ -29,6 +29,7 @@ import android.transition.TransitionManager; import android.transition.TransitionSet; import android.transition.TransitionValues; import android.transition.Visibility; +import android.util.Log; import android.util.TypedValue; import android.view.ActionMode; import android.view.Gravity; @@ -59,6 +60,7 @@ import org.telegram.messenger.LocaleController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; +import org.telegram.messenger.XiaomiUtilities; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Adapters.FiltersView; import org.telegram.ui.Components.BackupImageView; @@ -378,7 +380,7 @@ public class ActionBarMenuItem extends FrameLayout { if (popupLayout == null) { return; } - popupLayout.setShownFromBotton(value); + popupLayout.setShownFromBottom(value); } public void addSubItem(View view, int width, int height) { @@ -804,7 +806,7 @@ public class ActionBarMenuItem extends FrameLayout { } } } - clearSearchFilters(); +// clearSearchFilters(); } if (listener != null) { listener.onSearchCollapse(); @@ -1364,6 +1366,8 @@ public class ActionBarMenuItem extends FrameLayout { searchField.setImeOptions(EditorInfo.IME_FLAG_NO_FULLSCREEN | EditorInfo.IME_ACTION_SEARCH); searchField.setTextIsSelectable(false); + searchField.setHighlightColor(getThemedColor(Theme.key_chat_inTextSelectionHighlight)); + searchField.setHandlesColor(getThemedColor(Theme.key_chat_TextSelectionCursor)); searchFilterLayout = new LinearLayout(getContext()); searchFilterLayout.setOrientation(LinearLayout.HORIZONTAL); @@ -1694,11 +1698,17 @@ public class ActionBarMenuItem extends FrameLayout { } public void showSubItem(int id) { + showSubItem(id, false); + } + + public void showSubItem(int id, boolean animated) { if (popupLayout == null) { return; } View view = popupLayout.findViewWithTag(id); if (view != null && view.getVisibility() != VISIBLE) { + view.setAlpha(0); + view.animate().alpha(1f).setInterpolator(CubicBezierInterpolator.DEFAULT).setDuration(150).start(); view.setVisibility(VISIBLE); measurePopup = true; } @@ -1748,6 +1758,13 @@ public class ActionBarMenuItem extends FrameLayout { } } } + if (searchField != null) { + searchField.setCursorColor(getThemedColor(Theme.key_actionBarDefaultSearch)); + searchField.setHintTextColor(getThemedColor(Theme.key_actionBarDefaultSearchPlaceholder)); + searchField.setTextColor(getThemedColor(Theme.key_actionBarDefaultSearch)); + searchField.setHighlightColor(getThemedColor(Theme.key_chat_inTextSelectionHighlight)); + searchField.setHandlesColor(getThemedColor(Theme.key_chat_TextSelectionCursor)); + } } public void collapseSearchFilters() { @@ -1755,7 +1772,7 @@ public class ActionBarMenuItem extends FrameLayout { onFiltersChanged(); } - public void setTransitionOffset(int offset) { + public void setTransitionOffset(float offset) { this.transitionOffset = offset; setTranslationX(0); } @@ -1916,13 +1933,13 @@ public class ActionBarMenuItem extends FrameLayout { public ActionBarPopupWindow.GapView addColoredGap() { createPopupLayout(); - ActionBarPopupWindow.GapView gap = new ActionBarPopupWindow.GapView(getContext(), Theme.key_graySection); + ActionBarPopupWindow.GapView gap = new ActionBarPopupWindow.GapView(getContext(), resourcesProvider, Theme.key_actionBarDefaultSubmenuSeparator); gap.setTag(R.id.fit_width_tag, 1); popupLayout.addView(gap, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); return gap; } - public static ActionBarMenuSubItem addItem(ActionBarPopupWindow.ActionBarPopupWindowLayout windowLayout, int icon, String text, boolean needCheck, Theme.ResourcesProvider resourcesProvider) { + public static ActionBarMenuSubItem addItem(ActionBarPopupWindow.ActionBarPopupWindowLayout windowLayout, int icon, CharSequence text, boolean needCheck, Theme.ResourcesProvider resourcesProvider) { ActionBarMenuSubItem cell = new ActionBarMenuSubItem(windowLayout.getContext(), needCheck, false, false, resourcesProvider); cell.setTextAndIcon(text, icon); cell.setMinimumWidth(AndroidUtilities.dp(196)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSubItem.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSubItem.java index 6e97e7e0c..778b0ef77 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSubItem.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSubItem.java @@ -4,16 +4,21 @@ import android.content.Context; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; +import android.graphics.drawable.RippleDrawable; +import android.os.Build; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; +import android.view.MotionEvent; import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; import org.telegram.ui.Components.CheckBox2; import org.telegram.ui.Components.LayoutHelper; @@ -101,6 +106,17 @@ public class ActionBarMenuSubItem extends FrameLayout { checkView.setChecked(checked, true); } + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setEnabled(isEnabled()); + if (checkView != null && checkView.isChecked()) { + info.setCheckable(true); + info.setChecked(checkView.isChecked()); + info.setClassName("android.widget.CheckBox"); + } + } + public void setCheckColor(String colorKey) { checkView.setColor(null, null, colorKey); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarPopupWindow.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarPopupWindow.java index ead3ce152..8ef064c57 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarPopupWindow.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarPopupWindow.java @@ -17,11 +17,14 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; +import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build; +import android.util.Log; +import android.view.Gravity; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; @@ -62,6 +65,7 @@ public class ActionBarPopupWindow extends PopupWindow { private int currentAccount = UserConfig.selectedAccount; private boolean pauseNotifications; private long outEmptyTime = -1; + private boolean scaleOut; static { Field f = null; @@ -82,21 +86,27 @@ public class ActionBarPopupWindow extends PopupWindow { private ViewTreeObserver mViewTreeObserver; private int popupAnimationIndex = -1; + public void setScaleOut(boolean b) { + scaleOut = b; + } + public interface OnDispatchKeyEventListener { void onDispatchKeyEvent(KeyEvent keyEvent); } public static class ActionBarPopupWindowLayout extends FrameLayout { public final static int FLAG_USE_SWIPEBACK = 1; + public final static int FLAG_SHOWN_FROM_BOTTOM = 2; public boolean updateAnimation; public boolean swipeBackGravityRight; private OnDispatchKeyEventListener mOnDispatchKeyEventListener; private float backScaleX = 1; private float backScaleY = 1; + private boolean startAnimationPending = false; private int backAlpha = 255; private int lastStartedChild = 0; - private boolean shownFromBotton; + private boolean shownFromBottom; private boolean animationEnabled = allowAnimation; private ArrayList itemAnimators; private HashMap positions = new HashMap<>(); @@ -116,6 +126,8 @@ public class ActionBarPopupWindow extends PopupWindow { private final Theme.ResourcesProvider resourcesProvider; private View topView; + public int subtractBackgroundHeight; + public ActionBarPopupWindowLayout(Context context) { this(context, null); } @@ -143,6 +155,10 @@ public class ActionBarPopupWindow extends PopupWindow { setWillNotDraw(false); + if ((flags & FLAG_SHOWN_FROM_BOTTOM) > 0) { + shownFromBottom = true; + } + if ((flags & FLAG_USE_SWIPEBACK) > 0) { swipeBackLayout = new PopupSwipeBackLayout(context, resourcesProvider); addView(swipeBackLayout, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); @@ -152,8 +168,10 @@ public class ActionBarPopupWindow extends PopupWindow { scrollView = new ScrollView(context); scrollView.setVerticalScrollBarEnabled(false); if (swipeBackLayout != null) { - swipeBackLayout.addView(scrollView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); - } else addView(scrollView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); + swipeBackLayout.addView(scrollView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, shownFromBottom ? Gravity.BOTTOM : Gravity.TOP)); + } else { + addView(scrollView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); + } } catch (Throwable e) { FileLog.e(e); } @@ -202,12 +220,20 @@ public class ActionBarPopupWindow extends PopupWindow { } super.onMeasure(widthMeasureSpec, heightMeasureSpec); } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + if (child instanceof GapView) { + return false; + } + return super.drawChild(canvas, child, drawingTime); + } }; linearLayout.setOrientation(LinearLayout.VERTICAL); if (scrollView != null) { scrollView.addView(linearLayout, new ScrollView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); } else if (swipeBackLayout != null) { - swipeBackLayout.addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); + swipeBackLayout.addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, shownFromBottom ? Gravity.BOTTOM : Gravity.TOP)); } else { addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); } @@ -219,7 +245,7 @@ public class ActionBarPopupWindow extends PopupWindow { } public int addViewToSwipeBack(View v) { - swipeBackLayout.addView(v, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); + swipeBackLayout.addView(v, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, shownFromBottom ? Gravity.BOTTOM : Gravity.TOP)); return swipeBackLayout.getChildCount() - 1; } @@ -227,8 +253,8 @@ public class ActionBarPopupWindow extends PopupWindow { fitItems = value; } - public void setShownFromBotton(boolean value) { - shownFromBotton = value; + public void setShownFromBottom(boolean value) { + shownFromBottom = value; } public void setDispatchKeyEventListener(OnDispatchKeyEventListener listener) { @@ -257,8 +283,7 @@ public class ActionBarPopupWindow extends PopupWindow { @Keep public void setBackScaleX(float value) { - if (backScaleY != value) { - backScaleY = value; + if (backScaleX != value) { backScaleX = value; invalidate(); if (onSizeChangedListener != null) { @@ -267,13 +292,23 @@ public class ActionBarPopupWindow extends PopupWindow { } } + public void translateChildrenAfter(int index, float ty) { + subtractBackgroundHeight = (int) -ty; + for (int i = index + 1; i < linearLayout.getChildCount(); ++i) { + View child = linearLayout.getChildAt(i); + if (child != null) { + child.setTranslationY(ty); + } + } + } + @Keep public void setBackScaleY(float value) { if (backScaleY != value) { backScaleY = value; if (animationEnabled && updateAnimation) { int height = getMeasuredHeight() - AndroidUtilities.dp(16); - if (shownFromBotton) { + if (shownFromBottom) { for (int a = lastStartedChild; a >= 0; a--) { View child = getItemAt(a); if (child.getVisibility() != VISIBLE || child instanceof GapView) { @@ -327,7 +362,7 @@ public class ActionBarPopupWindow extends PopupWindow { AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether( ObjectAnimator.ofFloat(child, View.ALPHA, 0f, child.isEnabled() ? 1f : 0.5f), - ObjectAnimator.ofFloat(child, View.TRANSLATION_Y, AndroidUtilities.dp(shownFromBotton ? 6 : -6), 0)); + ObjectAnimator.ofFloat(child, View.TRANSLATION_Y, AndroidUtilities.dp(shownFromBottom ? 6 : -6), 0)); animatorSet.setDuration(180); animatorSet.addListener(new AnimatorListenerAdapter() { @Override @@ -357,6 +392,16 @@ public class ActionBarPopupWindow extends PopupWindow { linearLayout.addView(child, layoutParams); } + public int getViewsCount() { + return linearLayout.getChildCount(); + } + + public int precalculateHeight() { + int MOST_SPEC = View.MeasureSpec.makeMeasureSpec(999999, View.MeasureSpec.AT_MOST); + linearLayout.measure(MOST_SPEC, MOST_SPEC); + return linearLayout.getMeasuredHeight(); + } + public void removeInnerViews() { linearLayout.removeAllViews(); } @@ -400,7 +445,7 @@ public class ActionBarPopupWindow extends PopupWindow { int end = gapEndY - scrollView.getScrollY(); boolean hasGap = false; for (int i = 0; i < linearLayout.getChildCount(); i++) { - if (linearLayout.getChildAt(i) instanceof GapView) { + if (linearLayout.getChildAt(i) instanceof GapView && linearLayout.getChildAt(i).getVisibility() == View.VISIBLE) { hasGap = true; break; } @@ -421,14 +466,14 @@ public class ActionBarPopupWindow extends PopupWindow { canvas.clipRect(0, bgPaddings.top, getMeasuredWidth(), getMeasuredHeight()); } backgroundDrawable.setAlpha(applyAlpha ? backAlpha : 255); - if (shownFromBotton) { + if (shownFromBottom) { final int height = getMeasuredHeight(); backgroundDrawable.setBounds(0, (int) (height * (1.0f - backScaleY)), (int) (getMeasuredWidth() * backScaleX), height); } else { if (start > -AndroidUtilities.dp(16)) { int h = (int) (getMeasuredHeight() * backScaleY); if (a == 0) { - backgroundDrawable.setBounds(0, -scrollView.getScrollY() + (gapStartY != -1000000 ? AndroidUtilities.dp(1) : 0), (int) (getMeasuredWidth() * backScaleX), (gapStartY != -1000000 ? Math.min(h, start + AndroidUtilities.dp(16)) : h)); + backgroundDrawable.setBounds(0, -scrollView.getScrollY() + (gapStartY != -1000000 ? AndroidUtilities.dp(1) : 0), (int) (getMeasuredWidth() * backScaleX), (gapStartY != -1000000 ? Math.min(h, start + AndroidUtilities.dp(16)) : h) - subtractBackgroundHeight); } else { if (h < end) { if (gapStartY != -1000000) { @@ -436,34 +481,35 @@ public class ActionBarPopupWindow extends PopupWindow { } continue; } - backgroundDrawable.setBounds(0, end, (int) (getMeasuredWidth() * backScaleX), h); + backgroundDrawable.setBounds(0, end, (int) (getMeasuredWidth() * backScaleX), h - subtractBackgroundHeight); } } else { - backgroundDrawable.setBounds(0, gapStartY < 0 ? 0 : -AndroidUtilities.dp(16), (int) (getMeasuredWidth() * backScaleX), (int) (getMeasuredHeight() * backScaleY)); + backgroundDrawable.setBounds(0, (gapStartY < 0 ? 0 : -AndroidUtilities.dp(16)), (int) (getMeasuredWidth() * backScaleX), (int) (getMeasuredHeight() * backScaleY) - subtractBackgroundHeight); } } - backgroundDrawable.draw(canvas); + backgroundDrawable.draw(canvas); if (hasGap) { canvas.save(); AndroidUtilities.rectTmp2.set(backgroundDrawable.getBounds()); AndroidUtilities.rectTmp2.inset(AndroidUtilities.dp(8), AndroidUtilities.dp(8)); canvas.clipRect(AndroidUtilities.rectTmp2); for (int i = 0; i < linearLayout.getChildCount(); i++) { - if (linearLayout.getChildAt(i) instanceof GapView) { + if (linearLayout.getChildAt(i) instanceof GapView && linearLayout.getChildAt(i).getVisibility() == View.VISIBLE) { canvas.save(); float x = 0, y = 0; - View view = linearLayout.getChildAt(i) ; + GapView child = (GapView) linearLayout.getChildAt(i); + View view = child; while (view != this) { x += view.getX(); y += view.getY(); view = (View) view.getParent(); if (view == null) { - return; + break; } } - canvas.translate(x, y); - linearLayout.getChildAt(i).draw(canvas); + canvas.translate(x, y * scrollView.getScaleY()); + child.draw(canvas); canvas.restore(); } } @@ -555,6 +601,14 @@ public class ActionBarPopupWindow extends PopupWindow { public void setSwipeBackForegroundColor(int color) { getSwipeBack().setForegroundColor(color); } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + if (swipeBackLayout != null) { + swipeBackLayout.invalidateTransforms(!startAnimationPending); + } + } } public ActionBarPopupWindow() { @@ -692,10 +746,12 @@ public class ActionBarPopupWindow extends PopupWindow { ActionBarPopupWindowLayout content = null; if (viewGroup instanceof ActionBarPopupWindowLayout) { content = (ActionBarPopupWindowLayout) viewGroup; + content.startAnimationPending = true; } else { for (int i = 0; i < viewGroup.getChildCount(); i++) { if (viewGroup.getChildAt(i) instanceof ActionBarPopupWindowLayout) { content = (ActionBarPopupWindowLayout) viewGroup.getChildAt(i); + content.startAnimationPending = true; } } } @@ -715,19 +771,19 @@ public class ActionBarPopupWindow extends PopupWindow { content.positions.put(child, visibleCount); visibleCount++; } - if (content.shownFromBotton) { + if (content.shownFromBottom) { content.lastStartedChild = count - 1; } else { content.lastStartedChild = 0; } - float finalsScaleY = 1f; + float finalScaleY = 1f; if (content.getSwipeBack() != null) { content.getSwipeBack().invalidateTransforms(); - finalsScaleY = content.backScaleY; + finalScaleY = content.backScaleY; } windowAnimatorSet = new AnimatorSet(); windowAnimatorSet.playTogether( - ObjectAnimator.ofFloat(content, "backScaleY", 0.0f, finalsScaleY), + ObjectAnimator.ofFloat(content, "backScaleY", 0.0f, finalScaleY), ObjectAnimator.ofInt(content, "backAlpha", 0, 255)); windowAnimatorSet.setDuration(150 + 16 * visibleCount); windowAnimatorSet.addListener(new AnimatorListenerAdapter() { @@ -738,10 +794,12 @@ public class ActionBarPopupWindow extends PopupWindow { ActionBarPopupWindowLayout content = null; if (viewGroup instanceof ActionBarPopupWindowLayout) { content = (ActionBarPopupWindowLayout) viewGroup; + content.startAnimationPending = false; } else { for (int i = 0; i < viewGroup.getChildCount(); i++) { if (viewGroup.getChildAt(i) instanceof ActionBarPopupWindowLayout) { content = (ActionBarPopupWindowLayout) viewGroup.getChildAt(i); + content.startAnimationPending = false; } } } @@ -820,9 +878,15 @@ public class ActionBarPopupWindow extends PopupWindow { if (outEmptyTime > 0) { windowAnimatorSet.playTogether(ValueAnimator.ofFloat(0, 1f)); windowAnimatorSet.setDuration(outEmptyTime); + } else if (scaleOut) { + windowAnimatorSet.playTogether( + ObjectAnimator.ofFloat(viewGroup, View.SCALE_Y, 0.8f), + ObjectAnimator.ofFloat(viewGroup, View.SCALE_X, 0.8f), + ObjectAnimator.ofFloat(viewGroup, View.ALPHA, 0.0f)); + windowAnimatorSet.setDuration(dismissAnimationDuration); } else { windowAnimatorSet.playTogether( - ObjectAnimator.ofFloat(viewGroup, View.TRANSLATION_Y, AndroidUtilities.dp((content != null && content.shownFromBotton) ? 5 : -5)), + ObjectAnimator.ofFloat(viewGroup, View.TRANSLATION_Y, AndroidUtilities.dp((content != null && content.shownFromBottom) ? 5 : -5)), ObjectAnimator.ofFloat(viewGroup, View.ALPHA, 0.0f)); windowAnimatorSet.setDuration(dismissAnimationDuration); } @@ -868,26 +932,24 @@ public class ActionBarPopupWindow extends PopupWindow { public static class GapView extends FrameLayout { - Paint paint = new Paint(); + Theme.ResourcesProvider resourcesProvider; String colorKey; - int color = 0; - public GapView(Context context, String colorKey) { + + public GapView(Context context, Theme.ResourcesProvider resourcesProvider, String colorKey) { super(context); + this.resourcesProvider = resourcesProvider; this.colorKey = colorKey; + + setBackgroundColor(getThemedColor(colorKey)); } - @Override - protected void onDraw(Canvas canvas) { - if (color == 0) { - paint.setColor(Theme.getColor(colorKey)); - } else { - paint.setColor(color); - } - canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), paint); + private int getThemedColor(String key) { + Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null; + return color != null ? color : Theme.getColor(key); } public void setColor(int color) { - this.color = color; + setBackgroundColor(color); } } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AdjustPanLayoutHelper.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AdjustPanLayoutHelper.java index 4f08716c6..50c01e342 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AdjustPanLayoutHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AdjustPanLayoutHelper.java @@ -5,15 +5,22 @@ import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.app.Activity; import android.content.Context; +import android.os.Build; +import android.os.SystemClock; import android.view.ContextThemeWrapper; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.ViewTreeObserver; import android.view.Window; +import android.view.WindowInsets; +import android.view.WindowInsetsAnimation; import android.view.animation.Interpolator; import android.widget.FrameLayout; +import androidx.annotation.NonNull; +import androidx.annotation.RequiresApi; +import androidx.core.view.WindowInsetsCompat; import androidx.recyclerview.widget.ChatListItemAnimator; import org.telegram.messenger.AndroidUtilities; @@ -22,9 +29,12 @@ import org.telegram.messenger.SharedConfig; import org.telegram.messenger.UserConfig; import java.util.ArrayList; +import java.util.List; public class AdjustPanLayoutHelper { + public static boolean USE_ANDROID11_INSET_ANIMATOR = false; + public final static Interpolator keyboardInterpolator = ChatListItemAnimator.DEFAULT_INTERPOLATOR; public final static long keyboardDuration = 250; @@ -33,6 +43,7 @@ public class AdjustPanLayoutHelper { private ViewGroup contentView; private View resizableView; + private boolean usingInsetAnimator = false; private boolean animationInProgress; private boolean needDelay; private Runnable delayedAnimationRunnable = new Runnable() { @@ -44,6 +55,14 @@ public class AdjustPanLayoutHelper { } }; + public View getAdjustingParent() { + return parent; + } + + public View getAdjustingContentView() { + return contentView; + } + int previousHeight = -1; int previousContentHeight = -1; int previousStartOffset = -1; @@ -58,6 +77,11 @@ public class AdjustPanLayoutHelper { boolean checkHierarchyHeight; + float from, to; + boolean inverse; + boolean isKeyboardVisible; + long startAfter; + ViewTreeObserver.OnPreDrawListener onPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { @@ -71,6 +95,7 @@ public class AdjustPanLayoutHelper { previousHeight = contentHeight; previousContentHeight = contentView.getHeight(); previousStartOffset = startOffset(); + usingInsetAnimator = false; } return true; } @@ -79,11 +104,12 @@ public class AdjustPanLayoutHelper { previousHeight = contentHeight; previousContentHeight = contentView.getHeight(); previousStartOffset = startOffset(); + usingInsetAnimator = false; return true; } if (previousHeight != -1 && previousContentHeight == contentView.getHeight()) { - boolean isKeyboardVisible = contentHeight < contentView.getBottom(); + isKeyboardVisible = contentHeight < contentView.getBottom(); animateHeight(previousHeight, contentHeight, isKeyboardVisible); previousHeight = contentHeight; previousContentHeight = contentView.getHeight(); @@ -99,6 +125,43 @@ public class AdjustPanLayoutHelper { }; private void animateHeight(int previousHeight, int contentHeight, boolean isKeyboardVisible) { + if (ignoreOnce) { + ignoreOnce = false; + return; + } + if (!enabled) { + return; + } + startTransition(previousHeight, contentHeight, isKeyboardVisible); + animator.addUpdateListener(animation -> { + if (!usingInsetAnimator) { + updateTransition((float) animation.getAnimatedValue()); + } + }); + int selectedAccount = UserConfig.selectedAccount; + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + if (!usingInsetAnimator) { + stopTransition(); + } + } + }); + animator.setDuration(keyboardDuration); + animator.setInterpolator(keyboardInterpolator); + + notificationsIndex = NotificationCenter.getInstance(selectedAccount).setAnimationInProgress(notificationsIndex, null); + if (needDelay) { + needDelay = false; + startAfter = SystemClock.elapsedRealtime() + 100; + AndroidUtilities.runOnUIThread(delayedAnimationRunnable, 100); + } else { + animator.start(); + startAfter = -1; + } + } + + public void startTransition(int previousHeight, int contentHeight, boolean isKeyboardVisible) { if (animator != null) { animator.cancel(); } @@ -118,59 +181,67 @@ public class AdjustPanLayoutHelper { onTransitionStart(isKeyboardVisible, contentHeight); float dy = contentHeight - previousHeight; - float from; - float to; keyboardSize = Math.abs(dy); + animationInProgress = true; if (contentHeight > previousHeight) { dy -= startOffset; parent.setTranslationY(-dy); onPanTranslationUpdate(dy, 1f, isKeyboardVisible); from = -dy; to = 0; - animator = ValueAnimator.ofFloat(1f, 0); + inverse = true; } else { parent.setTranslationY(previousStartOffset); onPanTranslationUpdate(-previousStartOffset, 0f, isKeyboardVisible); to = -previousStartOffset; from = dy; - animator = ValueAnimator.ofFloat(0, 1f); - } - animator.addUpdateListener(animation -> { - float v = (float) animation.getAnimatedValue(); - float y = (int) (from * v + to * (1f - v)); - parent.setTranslationY(y); - onPanTranslationUpdate(-y, v, isKeyboardVisible); - }); - animationInProgress = true; - int selectedAccount = UserConfig.selectedAccount; - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - animationInProgress = false; - NotificationCenter.getInstance(selectedAccount).onAnimationFinish(notificationsIndex); - animator = null; - setViewHeight(ViewGroup.LayoutParams.MATCH_PARENT); - viewsToHeightSet.clear(); - resizableView.requestLayout(); - onPanTranslationUpdate(0, isKeyboardVisible ? 1f : 0f, isKeyboardVisible); - parent.setTranslationY(0); - onTransitionEnd(); - } - }); - animator.setDuration(keyboardDuration); - animator.setInterpolator(keyboardInterpolator); - - notificationsIndex = NotificationCenter.getInstance(selectedAccount).setAnimationInProgress(notificationsIndex, null); - if (needDelay) { - needDelay = false; - AndroidUtilities.runOnUIThread(delayedAnimationRunnable, 100); - } else { - animator.start(); + inverse = false; } + animator = ValueAnimator.ofFloat(0, 1); + usingInsetAnimator = false; } - private void setViewHeight(int height) { + public void updateTransition(float t) { + if (inverse) { + t = 1f - t; + } + float y = (int) (from * t + to * (1f - t)); + parent.setTranslationY(y); + onPanTranslationUpdate(-y, t, isKeyboardVisible); + } + + public void stopTransition() { + if (animator != null) { + animator.cancel(); + } + animationInProgress = false; + usingInsetAnimator = false; + NotificationCenter.getInstance(UserConfig.selectedAccount).onAnimationFinish(notificationsIndex); + animator = null; + setViewHeight(ViewGroup.LayoutParams.MATCH_PARENT); + viewsToHeightSet.clear(); + resizableView.requestLayout(); + onPanTranslationUpdate(0, isKeyboardVisible ? 1f : 0f, isKeyboardVisible); + parent.setTranslationY(0); + onTransitionEnd(); + } + public void stopTransition(float t, boolean isKeyboardVisible) { + if (animator != null) { + animator.cancel(); + } + animationInProgress = false; + NotificationCenter.getInstance(UserConfig.selectedAccount).onAnimationFinish(notificationsIndex); + animator = null; + setViewHeight(ViewGroup.LayoutParams.MATCH_PARENT); + viewsToHeightSet.clear(); + resizableView.requestLayout(); + onPanTranslationUpdate(0, t, this.isKeyboardVisible = isKeyboardVisible); + parent.setTranslationY(0); + onTransitionEnd(); + } + + public void setViewHeight(int height) { for (int i = 0; i < viewsToHeightSet.size(); i++) { viewsToHeightSet.get(i).getLayoutParams().height = height; viewsToHeightSet.get(i).requestLayout(); @@ -181,7 +252,7 @@ public class AdjustPanLayoutHelper { return 0; } - private void getViewsToSetHeight(View parent) { + public void getViewsToSetHeight(View parent) { viewsToHeightSet.clear(); View v = parent; while (v != null) { @@ -202,6 +273,12 @@ public class AdjustPanLayoutHelper { onAttach(); } + public AdjustPanLayoutHelper(View parent, boolean useInsetsAnimator) { + USE_ANDROID11_INSET_ANIMATOR = USE_ANDROID11_INSET_ANIMATOR && useInsetsAnimator; + this.parent = parent; + onAttach(); + } + public void onAttach() { if (!SharedConfig.smoothKeyboard) { return; @@ -218,6 +295,9 @@ public class AdjustPanLayoutHelper { parentForListener = resizableView; resizableView.getViewTreeObserver().addOnPreDrawListener(onPreDrawListener); } + if (USE_ANDROID11_INSET_ANIMATOR && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + setupNewCallback(); + } } private Activity getActivity(Context context) { @@ -255,12 +335,35 @@ public class AdjustPanLayoutHelper { parentForListener.getViewTreeObserver().removeOnPreDrawListener(onPreDrawListener); parentForListener = null; } + if (parent != null && USE_ANDROID11_INSET_ANIMATOR && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + parent.setWindowInsetsAnimationCallback(null); + } + } + + private boolean enabled = true; + public void setEnabled(boolean value) { + this.enabled = value; + } + + private boolean ignoreOnce; + public void ignoreOnce() { + ignoreOnce = true; } protected boolean heightAnimationEnabled() { return true; } + public void OnPanTranslationUpdate(float y, float progress, boolean keyboardVisible) { + onPanTranslationUpdate(y, progress, keyboardVisible); + } + public void OnTransitionStart(boolean keyboardVisible, int contentHeight) { + onTransitionStart(keyboardVisible, contentHeight); + } + public void OnTransitionEnd() { + onTransitionEnd(); + } + protected void onPanTranslationUpdate(float y, float progress, boolean keyboardVisible) { } @@ -293,4 +396,44 @@ public class AdjustPanLayoutHelper { AndroidUtilities.cancelRunOnUIThread(delayedAnimationRunnable); delayedAnimationRunnable.run(); } + + @RequiresApi(api = Build.VERSION_CODES.R) + private void setupNewCallback() { + if (resizableView == null) { + return; + } + resizableView.setWindowInsetsAnimationCallback( + new WindowInsetsAnimation.Callback(WindowInsetsAnimation.Callback.DISPATCH_MODE_CONTINUE_ON_SUBTREE) { + @NonNull + @Override + public WindowInsets onProgress(@NonNull WindowInsets insets, @NonNull List runningAnimations) { + if (!animationInProgress || AndroidUtilities.screenRefreshRate < 90) { + return insets; + } + + WindowInsetsAnimation imeAnimation = null; + for (WindowInsetsAnimation animation : runningAnimations) { + if ((animation.getTypeMask() & WindowInsetsCompat.Type.ime()) != 0) { + imeAnimation = animation; + break; + } + } + + if (imeAnimation != null && SystemClock.elapsedRealtime() >= startAfter) { + usingInsetAnimator = true; + updateTransition((float) imeAnimation.getInterpolatedFraction()); + } + return insets; + } + + @Override + public void onEnd(@NonNull WindowInsetsAnimation animation) { + if (!animationInProgress || AndroidUtilities.screenRefreshRate < 90) { + return; + } + stopTransition(); + } + } + ); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AlertDialog.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AlertDialog.java index 960089a8e..8dbf07943 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AlertDialog.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AlertDialog.java @@ -719,10 +719,10 @@ public class AlertDialog extends Dialog implements Drawable.Callback { } if (totalWidth > availableWidth) { View negative = findViewWithTag(BUTTON_NEGATIVE); - View neuntral = findViewWithTag(BUTTON_NEUTRAL); - if (negative != null && neuntral != null) { - if (negative.getMeasuredWidth() < neuntral.getMeasuredWidth()) { - neuntral.measure(MeasureSpec.makeMeasureSpec(neuntral.getMeasuredWidth() - (totalWidth - availableWidth), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(neuntral.getMeasuredHeight(), MeasureSpec.EXACTLY)); + View neutral = findViewWithTag(BUTTON_NEUTRAL); + if (negative != null && neutral != null) { + if (negative.getMeasuredWidth() < neutral.getMeasuredWidth()) { + neutral.measure(MeasureSpec.makeMeasureSpec(neutral.getMeasuredWidth() - (totalWidth - availableWidth), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(neutral.getMeasuredHeight(), MeasureSpec.EXACTLY)); } else { negative.measure(MeasureSpec.makeMeasureSpec(negative.getMeasuredWidth() - (totalWidth - availableWidth), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(negative.getMeasuredHeight(), MeasureSpec.EXACTLY)); } @@ -837,7 +837,7 @@ public class AlertDialog extends Dialog implements Drawable.Callback { textView.setEllipsize(TextUtils.TruncateAt.END); textView.setSingleLine(true); textView.setText(neutralButtonText.toString().toUpperCase()); - textView.setBackgroundDrawable(Theme.getRoundRectSelectorDrawable(getThemedColor(dialogButtonColorKey))); + textView.setBackground(Theme.getRoundRectSelectorDrawable(getThemedColor(dialogButtonColorKey))); textView.setPadding(AndroidUtilities.dp(10), 0, AndroidUtilities.dp(10), 0); if (verticalButtons) { buttonsLayout.addView(textView, 1, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 36, LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT)); @@ -1206,6 +1206,10 @@ public class AlertDialog extends Dialog implements Drawable.Callback { return null; } + public ViewGroup getButtonsLayout() { + return buttonsLayout; + } + public static class Builder { private AlertDialog alertDialog; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java index 7d38023e6..2a5ee6f3c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java @@ -230,13 +230,15 @@ public abstract class BaseFragment { } if (parentLayout != null && actionBar == null) { actionBar = createActionBar(parentLayout.getContext()); - actionBar.parentFragment = this; + if (actionBar != null) { + actionBar.parentFragment = this; + } } } } protected ActionBar createActionBar(Context context) { - ActionBar actionBar = new ActionBar(context); + ActionBar actionBar = new ActionBar(context, getResourceProvider()); actionBar.setBackgroundColor(getThemedColor(Theme.key_actionBarDefault)); actionBar.setItemsBackgroundColor(getThemedColor(Theme.key_actionBarDefaultSelector), false); actionBar.setItemsBackgroundColor(getThemedColor(Theme.key_actionBarActionModeDefaultSelector), true); @@ -315,6 +317,8 @@ public abstract class BaseFragment { } } + public void onUserLeaveHint() {} + @CallSuper public void onResume() { isPaused = false; @@ -389,7 +393,7 @@ public abstract class BaseFragment { return allowPresentFragment() && parentLayout != null && parentLayout.presentFragmentAsPreview(fragment); } - public boolean presentFragmentAsPreviewWithMenu(BaseFragment fragment, View menu) { + public boolean presentFragmentAsPreviewWithMenu(BaseFragment fragment, ActionBarPopupWindow.ActionBarPopupWindowLayout menu) { return allowPresentFragment() && parentLayout != null && parentLayout.presentFragmentAsPreviewWithMenu(fragment, menu); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java index 33e783443..d0aed7cf4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java @@ -38,6 +38,7 @@ import android.view.ViewGroup; import android.view.Window; import android.view.WindowInsets; import android.view.WindowManager; +import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.Interpolator; import android.widget.FrameLayout; import android.widget.ImageView; @@ -72,6 +73,7 @@ public class BottomSheet extends Dialog { protected boolean keyboardVisible; private WindowInsets lastInsets; public boolean drawNavigationBar; + public boolean drawDoubleNavigationBar; public boolean scrollNavBar; protected boolean useSmoothKeyboard; @@ -93,6 +95,7 @@ public class BottomSheet extends Dialog { private View customView; private CharSequence title; private boolean bigTitle; + private boolean multipleLinesTitle; private int bottomInset; private int leftInset; private int rightInset; @@ -150,6 +153,8 @@ public class BottomSheet extends Dialog { protected AnimatorSet currentSheetAnimation; protected int currentSheetAnimationType; + protected ValueAnimator navigationBarAnimation; + protected float navigationBarAlpha = 0; protected View nestedScrollChild; private boolean disableScroll; @@ -160,6 +165,7 @@ public class BottomSheet extends Dialog { private OnDismissListener onHideListener; protected Theme.ResourcesProvider resourcesProvider; + protected boolean isPortrait; public void setDisableScroll(boolean b) { disableScroll = b; @@ -170,6 +176,7 @@ public class BottomSheet extends Dialog { private boolean openNoDelay; private float hideSystemVerticalInsetsProgress; + public boolean useBackgroundTopPadding = true; protected class ContainerView extends FrameLayout implements NestedScrollingParent { @@ -278,9 +285,18 @@ public class BottomSheet extends Dialog { allowCustomAnimation = allowOld; } else { currentAnimation = new AnimatorSet(); - currentAnimation.playTogether(ObjectAnimator.ofFloat(containerView, "translationY", 0)); - currentAnimation.setDuration((int) (150 * (Math.max(0, translationY) / AndroidUtilities.getPixelsInCM(0.8f, false)))); - currentAnimation.setInterpolator(CubicBezierInterpolator.EASE_OUT); + ValueAnimator invalidateContainer = ValueAnimator.ofFloat(0, 1); + invalidateContainer.addUpdateListener(a -> { + if (container != null) { + container.invalidate(); + } + }); + currentAnimation.playTogether( + ObjectAnimator.ofFloat(containerView, "translationY", 0), + invalidateContainer + ); + currentAnimation.setDuration((int) (250 * (Math.max(0, translationY) / AndroidUtilities.getPixelsInCM(0.8f, false)))); + currentAnimation.setInterpolator(CubicBezierInterpolator.DEFAULT); currentAnimation.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { @@ -419,7 +435,7 @@ public class BottomSheet extends Dialog { if (lastInsets != null && Build.VERSION.SDK_INT >= 21) { width -= getRightInset() + getLeftInset(); } - boolean isPortrait = width < height; + isPortrait = width < height; if (containerView != null) { if (!fullWidth) { @@ -427,7 +443,7 @@ public class BottomSheet extends Dialog { if (AndroidUtilities.isTablet()) { widthSpec = MeasureSpec.makeMeasureSpec((int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.8f) + backgroundPaddingLeft * 2, MeasureSpec.EXACTLY); } else { - widthSpec = MeasureSpec.makeMeasureSpec(isPortrait ? width + backgroundPaddingLeft * 2 : (int) Math.max(width * 0.8f, Math.min(AndroidUtilities.dp(480), width)) + backgroundPaddingLeft * 2, MeasureSpec.EXACTLY); + widthSpec = MeasureSpec.makeMeasureSpec((getBottomSheetWidth(isPortrait, width, height)) + backgroundPaddingLeft * 2, MeasureSpec.EXACTLY); } containerView.measure(widthSpec, MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); } else { @@ -586,6 +602,9 @@ public class BottomSheet extends Dialog { } else { backgroundPaint.setColor(0xff000000); } + if (drawDoubleNavigationBar && !shouldOverlayCameraViewOverNavBar()) { + drawNavigationBar(canvas, 1f); + } if (backgroundPaint.getAlpha() < 255 && drawNavigationBar) { float translation = 0; if (scrollNavBar || Build.VERSION.SDK_INT >= 29 && getAdditionalMandatoryOffsets() > 0) { @@ -601,7 +620,7 @@ public class BottomSheet extends Dialog { super.dispatchDraw(canvas); } if (!shouldOverlayCameraViewOverNavBar()) { - drawNavigationBar(canvas); + drawNavigationBar(canvas, (drawDoubleNavigationBar ? 0.7f * navigationBarAlpha : 1f)); } if (drawNavigationBar && rightInset != 0 && rightInset > leftInset && fullWidth && AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y) { canvas.drawRect(containerView.getRight() - backgroundPaddingLeft, containerView.getTranslationY(), containerView.getRight() + rightInset, getMeasuredHeight(), backgroundPaint); @@ -621,7 +640,7 @@ public class BottomSheet extends Dialog { protected boolean drawChild(Canvas canvas, View child, long drawingTime) { if (child instanceof CameraView) { if (shouldOverlayCameraViewOverNavBar()) { - drawNavigationBar(canvas); + drawNavigationBar(canvas, 1f); } return super.drawChild(canvas, child, drawingTime); } @@ -653,7 +672,7 @@ public class BottomSheet extends Dialog { } } - public void drawNavigationBar(Canvas canvas) { + public void drawNavigationBar(Canvas canvas, float alpha) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (navBarColorKey != null) { backgroundPaint.setColor(getThemedColor(navBarColorKey)); @@ -665,21 +684,40 @@ public class BottomSheet extends Dialog { } if ((drawNavigationBar && bottomInset != 0) || currentPanTranslationY != 0) { float translation = 0; - if (scrollNavBar || Build.VERSION.SDK_INT >= 29 && getAdditionalMandatoryOffsets() > 0) { - float dist = containerView.getMeasuredHeight() - containerView.getTranslationY(); - translation = Math.max(0, getBottomInset() - dist); - } int navBarHeight = drawNavigationBar ? getBottomInset() : 0; + if (scrollNavBar || Build.VERSION.SDK_INT >= 29 && getAdditionalMandatoryOffsets() > 0) { + if (drawDoubleNavigationBar) { + translation = Math.max(0, Math.min(navBarHeight - currentPanTranslationY, containerView.getTranslationY())); + } else { + float dist = containerView.getMeasuredHeight() - containerView.getTranslationY(); + translation = Math.max(0, getBottomInset() - dist); + } + } + int wasAlpha = backgroundPaint.getAlpha(); + if (alpha < 1f) { + backgroundPaint.setAlpha((int) (wasAlpha * alpha)); + } canvas.drawRect(containerView.getLeft() + backgroundPaddingLeft, getMeasuredHeight() - navBarHeight + translation - currentPanTranslationY, containerView.getRight() - backgroundPaddingLeft, getMeasuredHeight() + translation, backgroundPaint); + backgroundPaint.setAlpha(wasAlpha); if (overlayDrawNavBarColor != 0) { backgroundPaint.setColor(overlayDrawNavBarColor); + wasAlpha = backgroundPaint.getAlpha(); + if (alpha < 1f) { + backgroundPaint.setAlpha((int) (wasAlpha * alpha)); + translation = 0; + } canvas.drawRect(containerView.getLeft() + backgroundPaddingLeft, getMeasuredHeight() - navBarHeight + translation - currentPanTranslationY, containerView.getRight() - backgroundPaddingLeft, getMeasuredHeight() + translation, backgroundPaint); + backgroundPaint.setAlpha(wasAlpha); } } } } + protected int getBottomSheetWidth(boolean isPortrait, int width,int height) { + return isPortrait ? width : (int) Math.max(width * 0.8f, Math.min(AndroidUtilities.dp(480), width)); + } + protected boolean shouldOverlayCameraViewOverNavBar() { return false; } @@ -776,7 +814,7 @@ public class BottomSheet extends Dialog { textView.setTextColor(getThemedColor(Theme.key_featuredStickers_buttonText)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - textView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), getThemedColor(Theme.key_featuredStickers_addButton), getThemedColor(Theme.key_featuredStickers_addButtonPressed))); + textView.setBackground(Theme.AdaptiveRipple.filledRect(getThemedColor(Theme.key_featuredStickers_addButton), 4)); addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 0, 16, 16, 16, 16)); } } @@ -844,6 +882,16 @@ public class BottomSheet extends Dialog { Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null; return color != null ? color : Theme.getColor(key); } + + public boolean isSelected = false; + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (isSelected) { + info.setSelected(true); + } + } } public void setAllowNestedScroll(boolean value) { @@ -886,6 +934,12 @@ public class BottomSheet extends Dialog { } return true; } + + @Override + protected void dispatchDraw(Canvas canvas) { + super.dispatchDraw(canvas); + mainContainerDispatchDraw(canvas); + } }; container.setBackgroundDrawable(backDrawable); focusable = needFocus; @@ -914,6 +968,22 @@ public class BottomSheet extends Dialog { backDrawable.setAlpha(0); } + protected void mainContainerDispatchDraw(Canvas canvas) { + + } + + public void fixNavigationBar() { + fixNavigationBar(getThemedColor(Theme.key_dialogBackground)); + } + + public void fixNavigationBar(int bgColor) { + drawNavigationBar = true; + drawDoubleNavigationBar = true; + scrollNavBar = true; + navBarColorKey = null; + setOverlayNavBarColor(navBarColor = bgColor); + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -955,32 +1025,66 @@ public class BottomSheet extends Dialog { int topOffset = 0; if (title != null) { - titleView = new TextView(getContext()); - titleView.setLines(1); - titleView.setSingleLine(true); + titleView = new TextView(getContext()) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + if (multipleLinesTitle) { + int topOffset = getMeasuredHeight(); + if (customView != null) { + ((ViewGroup.MarginLayoutParams) customView.getLayoutParams()).topMargin = topOffset; + } else if (containerView != null) { + for (int i = 1; i < containerView.getChildCount(); ++i) { + View child = containerView.getChildAt(i); + if (child instanceof BottomSheetCell) { + ((ViewGroup.MarginLayoutParams) child.getLayoutParams()).topMargin = topOffset; + topOffset += AndroidUtilities.dp(48); + } + } + } + } + } + }; + int height = 48; titleView.setText(title); if (bigTitle) { titleView.setTextColor(getThemedColor(Theme.key_dialogTextBlack)); titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); titleView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - titleView.setPadding(AndroidUtilities.dp(21), AndroidUtilities.dp(6), AndroidUtilities.dp(21), AndroidUtilities.dp(8)); + titleView.setPadding(AndroidUtilities.dp(21), AndroidUtilities.dp(multipleLinesTitle ? 14 : 6), AndroidUtilities.dp(21), AndroidUtilities.dp(8)); } else { titleView.setTextColor(getThemedColor(Theme.key_dialogTextGray2)); titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - titleView.setPadding(AndroidUtilities.dp(16), 0, AndroidUtilities.dp(16), AndroidUtilities.dp(8)); + titleView.setPadding(AndroidUtilities.dp(16), AndroidUtilities.dp(multipleLinesTitle ? 8 : 0), AndroidUtilities.dp(16), AndroidUtilities.dp(8)); + } + if (multipleLinesTitle) { + titleView.setSingleLine(false); + titleView.setMaxLines(5); + titleView.setEllipsize(TextUtils.TruncateAt.END); + } else { + titleView.setLines(1); + titleView.setSingleLine(true); + titleView.setEllipsize(TextUtils.TruncateAt.MIDDLE); } - titleView.setEllipsize(TextUtils.TruncateAt.MIDDLE); titleView.setGravity(Gravity.CENTER_VERTICAL); - containerView.addView(titleView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48)); + containerView.addView(titleView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, multipleLinesTitle ? ViewGroup.LayoutParams.WRAP_CONTENT : height)); titleView.setOnTouchListener((v, event) -> true); - topOffset += 48; + topOffset += height; } if (customView != null) { if (customView.getParent() != null) { ViewGroup viewGroup = (ViewGroup) customView.getParent(); viewGroup.removeView(customView); } - containerView.addView(customView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 0, topOffset, 0, 0)); + if (!useBackgroundTopPadding) { + containerView.setClipToPadding(false); + containerView.setClipChildren(false); + container.setClipToPadding(false); + container.setClipChildren(false); + containerView.addView(customView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 0, -backgroundPaddingTop + topOffset, 0, 0)); + } else { + containerView.addView(customView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 0, topOffset, 0, 0)); + } } else { if (items != null) { FrameLayout rowLayout = null; @@ -1186,8 +1290,8 @@ public class BottomSheet extends Dialog { if (currentSheetAnimation != null) { currentSheetAnimation.cancel(); currentSheetAnimation = null; - currentSheetAnimationType = 0; } + currentSheetAnimationType = 0; } public void setOnHideListener(OnDismissListener listener) { @@ -1208,12 +1312,24 @@ public class BottomSheet extends Dialog { if (Build.VERSION.SDK_INT >= 20 && useHardwareLayer) { container.setLayerType(View.LAYER_TYPE_HARDWARE, null); } - containerView.setTranslationY(containerView.getMeasuredHeight() + (scrollNavBar ? getBottomInset() : 0)); + containerView.setTranslationY(getContainerViewHeight() + container.keyboardHeight + AndroidUtilities.dp(10) + (scrollNavBar ? getBottomInset() : 0)); currentSheetAnimationType = 1; + if (navigationBarAnimation != null) { + navigationBarAnimation.cancel(); + } + navigationBarAnimation = ValueAnimator.ofFloat(navigationBarAlpha, 1f); + navigationBarAnimation.addUpdateListener(a -> { + navigationBarAlpha = (float) a.getAnimatedValue(); + if (container != null) { + container.invalidate(); + } + }); currentSheetAnimation = new AnimatorSet(); currentSheetAnimation.playTogether( ObjectAnimator.ofFloat(containerView, View.TRANSLATION_Y, 0), - ObjectAnimator.ofInt(backDrawable, AnimationProperties.COLOR_DRAWABLE_ALPHA, dimBehind ? dimBehindAlpha : 0)); + ObjectAnimator.ofInt(backDrawable, AnimationProperties.COLOR_DRAWABLE_ALPHA, dimBehind ? dimBehindAlpha : 0), + navigationBarAnimation + ); currentSheetAnimation.setDuration(400); currentSheetAnimation.setStartDelay(20); currentSheetAnimation.setInterpolator(openInterpolator); @@ -1323,7 +1439,7 @@ public class BottomSheet extends Dialog { currentSheetAnimationType = 2; currentSheetAnimation = new AnimatorSet(); currentSheetAnimation.playTogether( - ObjectAnimator.ofFloat(containerView, View.TRANSLATION_Y, containerView.getMeasuredHeight() + AndroidUtilities.dp(10) + (scrollNavBar ? getBottomInset() : 0)), + ObjectAnimator.ofFloat(containerView, View.TRANSLATION_Y, getContainerViewHeight() + container.keyboardHeight + AndroidUtilities.dp(10) + (scrollNavBar ? getBottomInset() : 0)), ObjectAnimator.ofInt(backDrawable, AnimationProperties.COLOR_DRAWABLE_ALPHA, 0) ); currentSheetAnimation.setDuration(180); @@ -1371,6 +1487,15 @@ public class BottomSheet extends Dialog { return super.dispatchTouchEvent(ev); } + public void onDismissAnimationStart() {} + + public int getContainerViewHeight() { + if (containerView == null) { + return 0; + } + return containerView.getMeasuredHeight(); + } + @Override public void dismiss() { if (delegate != null && !delegate.canDismiss()) { @@ -1385,22 +1510,34 @@ public class BottomSheet extends Dialog { } cancelSheetAnimation(); long duration = 0; + onDismissAnimationStart(); if (!allowCustomAnimation || !onCustomCloseAnimation()) { currentSheetAnimationType = 2; currentSheetAnimation = new AnimatorSet(); - currentSheetAnimation.playTogether( - ObjectAnimator.ofFloat(containerView, View.TRANSLATION_Y, containerView.getMeasuredHeight() + container.keyboardHeight + AndroidUtilities.dp(10) + (scrollNavBar ? getBottomInset() : 0)), - ObjectAnimator.ofInt(backDrawable, AnimationProperties.COLOR_DRAWABLE_ALPHA, 0) - ); - if (useFastDismiss) { - int height = containerView.getMeasuredHeight(); - duration = Math.max(60, (int) (250 * (height - containerView.getTranslationY()) / (float) height)); - currentSheetAnimation.setDuration(duration); - useFastDismiss = false; - } else { - currentSheetAnimation.setDuration(duration = 250); + if (navigationBarAnimation != null) { + navigationBarAnimation.cancel(); } - currentSheetAnimation.setInterpolator(CubicBezierInterpolator.DEFAULT); + navigationBarAnimation = ValueAnimator.ofFloat(navigationBarAlpha, 0f); + navigationBarAnimation.addUpdateListener(a -> { + navigationBarAlpha = (float) a.getAnimatedValue(); + if (container != null) { + container.invalidate(); + } + }); + currentSheetAnimation.playTogether( + ObjectAnimator.ofFloat(containerView, View.TRANSLATION_Y, getContainerViewHeight() + container.keyboardHeight + AndroidUtilities.dp(10) + (scrollNavBar ? getBottomInset() : 0)), + ObjectAnimator.ofInt(backDrawable, AnimationProperties.COLOR_DRAWABLE_ALPHA, 0), + navigationBarAnimation + ); +// if (useFastDismiss) { +// int height = containerView.getMeasuredHeight(); +// duration = Math.max(60, (int) (250 * (height - containerView.getTranslationY()) / (float) height)); +// currentSheetAnimation.setDuration(duration); +// useFastDismiss = false; +// } else { + currentSheetAnimation.setDuration(duration = 250); +// } + currentSheetAnimation.setInterpolator(CubicBezierInterpolator.EASE_OUT); currentSheetAnimation.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { @@ -1468,12 +1605,27 @@ public class BottomSheet extends Dialog { this(context, false); } + public Builder(Context context, int bgColor) { + this(context, false, null, bgColor); + } + public Builder(Context context, boolean needFocus) { this(context, needFocus, null); } + public Builder(Context context, boolean needFocus, int bgColor) { + this(context, needFocus, null, bgColor); + } + public Builder(Context context, boolean needFocus, Theme.ResourcesProvider resourcesProvider) { bottomSheet = new BottomSheet(context, needFocus, resourcesProvider); + bottomSheet.fixNavigationBar(); + } + + public Builder(Context context, boolean needFocus, Theme.ResourcesProvider resourcesProvider, int bgColor) { + bottomSheet = new BottomSheet(context, needFocus, resourcesProvider); + bottomSheet.setBackgroundColor(bgColor); + bottomSheet.fixNavigationBar(bgColor); } public Builder setItems(CharSequence[] items, final OnClickListener onClickListener) { @@ -1508,6 +1660,11 @@ public class BottomSheet extends Dialog { return this; } + public Builder setTitleMultipleLines(boolean allowMultipleLines) { + bottomSheet.multipleLinesTitle = allowMultipleLines; + return this; + } + public BottomSheet create() { return bottomSheet; } @@ -1565,13 +1722,6 @@ public class BottomSheet extends Dialog { bottomSheet.setOnHideListener(onDismissListener); return this; } - - public Builder fixNavigationBar() { - bottomSheet.drawNavigationBar = true; - bottomSheet.scrollNavBar = true; - bottomSheet.setOverlayNavBarColor(bottomSheet.getThemedColor(Theme.key_dialogBackground)); - return this; - } } public int getLeftInset() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/EmojiThemes.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/EmojiThemes.java index 884710841..86c81decd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/EmojiThemes.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/EmojiThemes.java @@ -15,7 +15,6 @@ import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLoader; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; -import org.telegram.messenger.SharedConfig; import org.telegram.messenger.Utilities; import org.telegram.tgnet.ResultCallback; import org.telegram.tgnet.TLRPC; @@ -31,7 +30,7 @@ public class EmojiThemes { public boolean showAsDefaultStub; public String emoji; int currentIndex = 0; - ArrayList items = new ArrayList<>(); + public ArrayList items = new ArrayList<>(); private static final String[] previewColorKeys = new String[]{ Theme.key_chat_inBubble, @@ -364,14 +363,11 @@ public class EmojiThemes { } ImageLocation imageLocation = ImageLocation.getForDocument(wallPaper.document); ImageReceiver imageReceiver = new ImageReceiver(); + String imageFilter; - if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW) { - int w = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); - int h = Math.max(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); - imageFilter = (int) (w / AndroidUtilities.density) + "_" + (int) (h / AndroidUtilities.density) + "_f"; - } else { - imageFilter = (int) (1080 / AndroidUtilities.density) + "_" + (int) (1920 / AndroidUtilities.density) + "_f"; - } + int w = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); + int h = Math.max(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); + imageFilter = (int) (w / AndroidUtilities.density) + "_" + (int) (h / AndroidUtilities.density) + "_f"; imageReceiver.setImage(imageLocation, imageFilter, null, ".jpg", wallPaper, 1); imageReceiver.setDelegate((receiver, set, thumb, memCache) -> { @@ -424,13 +420,13 @@ public class EmojiThemes { } return; } - final TLRPC.PhotoSize thumbSize = FileLoader.getClosestPhotoSizeWithSize(wallpaper.document.thumbs, 120); + final TLRPC.PhotoSize thumbSize = FileLoader.getClosestPhotoSizeWithSize(wallpaper.document.thumbs, 140); ImageLocation imageLocation = ImageLocation.getForDocument(thumbSize, wallpaper.document); ImageReceiver imageReceiver = new ImageReceiver(); - imageReceiver.setImage(imageLocation, "120_80", null, null, null, 1); + imageReceiver.setImage(imageLocation, "120_140", null, null, null, 1); imageReceiver.setDelegate((receiver, set, thumb, memCache) -> { ImageReceiver.BitmapHolder holder = receiver.getBitmapSafe(); - if (!set || holder == null) { + if (!set || holder == null || holder.bitmap.isRecycled()) { return; } Bitmap resultBitmap = holder.bitmap; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java index 1933463cd..7c246508f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java @@ -27,7 +27,9 @@ import android.text.SpannableStringBuilder; import android.text.StaticLayout; import android.text.TextPaint; import android.text.TextUtils; +import android.util.Log; import android.view.Gravity; +import android.view.MotionEvent; import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; @@ -82,6 +84,8 @@ public class SimpleTextView extends View implements Drawable.Callback { private int textWidth; private int totalWidth; private int textHeight; + public int rightDrawableX; + public int rightDrawableY; private boolean wasLayout; private int minWidth; @@ -102,6 +106,11 @@ public class SimpleTextView extends View implements Drawable.Callback { private Stack spoilersPool = new Stack<>(); private Path path = new Path(); private boolean usaAlphaForEmoji; + private boolean canHideRightDrawable; + private boolean rightDrawableHidden; + private OnClickListener rightDrawableOnClickListener; + private boolean maybeClick; + private float touchDownX, touchDownY; public SimpleTextView(Context context) { super(context); @@ -242,15 +251,17 @@ public class SimpleTextView extends View implements Drawable.Callback { protected boolean createLayout(int width) { CharSequence text = this.text; replacingDrawableTextIndex = -1; + rightDrawableHidden = false; if (text != null) { try { if (leftDrawable != null) { width -= leftDrawable.getIntrinsicWidth(); width -= drawablePadding; } + int rightDrawableWidth = 0; if (rightDrawable != null) { - int dw = (int) (rightDrawable.getIntrinsicWidth() * rightDrawableScale); - width -= dw; + rightDrawableWidth = (int) (rightDrawable.getIntrinsicWidth() * rightDrawableScale); + width -= rightDrawableWidth; width -= drawablePadding; } if (replacedText != null && replacedDrawable != null) { @@ -264,6 +275,14 @@ public class SimpleTextView extends View implements Drawable.Callback { width -= drawablePadding; } } + if (canHideRightDrawable && rightDrawableWidth != 0) { + CharSequence string = TextUtils.ellipsize(text, textPaint, width, TextUtils.TruncateAt.END); + if (!text.equals(string)) { + rightDrawableHidden = true; + width += rightDrawableWidth; + width += drawablePadding; + } + } if (buildFullLayout) { CharSequence string = TextUtils.ellipsize(text, textPaint, width, TextUtils.TruncateAt.END); if (!string.equals(text)) { @@ -618,7 +637,7 @@ public class SimpleTextView extends View implements Drawable.Callback { totalWidth += drawablePadding + replacedDrawable.getIntrinsicWidth(); } } - if (rightDrawable != null) { + if (rightDrawable != null && !rightDrawableHidden && rightDrawableScale > 0) { int x = textOffsetX + textWidth + drawablePadding + (int) -scrollingOffset; if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == Gravity.CENTER_HORIZONTAL) { x += offsetX; @@ -629,6 +648,8 @@ public class SimpleTextView extends View implements Drawable.Callback { int dh = (int) (rightDrawable.getIntrinsicHeight() * rightDrawableScale); int y = (textHeight - dh) / 2 + rightDrawableTopPadding; rightDrawable.setBounds(x, y, x + dw, y + dh); + rightDrawableX = x + (dw >> 1); + rightDrawableY = y + (dh >> 1); rightDrawable.draw(canvas); totalWidth += drawablePadding + dw; } @@ -829,4 +850,37 @@ public class SimpleTextView extends View implements Drawable.Callback { public int getTextColor() { return textPaint.getColor(); } + + public void setCanHideRightDrawable(boolean b) { + canHideRightDrawable = b; + } + + public void setRightDrawableOnClick(OnClickListener onClickListener) { + rightDrawableOnClickListener = onClickListener; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (rightDrawableOnClickListener != null && rightDrawable != null) { + AndroidUtilities.rectTmp.set(rightDrawableX - AndroidUtilities.dp(16), rightDrawableY - AndroidUtilities.dp(16), rightDrawableX + AndroidUtilities.dp(16), rightDrawableY + AndroidUtilities.dp(16)); + if (event.getAction() == MotionEvent.ACTION_DOWN && AndroidUtilities.rectTmp.contains((int) event.getX(), (int) event.getY())) { + maybeClick = true; + touchDownX = event.getX(); + touchDownY = event.getY(); + getParent().requestDisallowInterceptTouchEvent(true); + } else if (event.getAction() == MotionEvent.ACTION_MOVE && maybeClick) { + if (Math.abs(event.getX() - touchDownX) >= AndroidUtilities.touchSlop || Math.abs(event.getY() - touchDownY) >= AndroidUtilities.touchSlop) { + maybeClick = false; + getParent().requestDisallowInterceptTouchEvent(false); + } + } else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { + if (maybeClick && event.getAction() == MotionEvent.ACTION_UP) { + rightDrawableOnClickListener.onClick(this); + } + maybeClick = false; + getParent().requestDisallowInterceptTouchEvent(false); + } + } + return super.onTouchEvent(event) || maybeClick; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java index 9b8511c32..5619f0a53 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java @@ -8,6 +8,8 @@ package org.telegram.ui.ActionBar; +import static org.telegram.messenger.AndroidUtilities.dp; + import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Activity; @@ -39,6 +41,7 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; +import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.NinePatchDrawable; import android.graphics.drawable.RippleDrawable; import android.graphics.drawable.ShapeDrawable; @@ -55,6 +58,7 @@ import android.os.SystemClock; import android.text.TextPaint; import android.text.TextUtils; import android.util.Base64; +import android.util.Log; import android.util.LongSparseArray; import android.util.SparseArray; import android.util.StateSet; @@ -71,12 +75,12 @@ import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.Bitmaps; import org.telegram.messenger.BuildVars; -import org.telegram.messenger.ChatThemeController; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; @@ -91,7 +95,6 @@ import org.telegram.tgnet.SerializedData; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Components.AudioVisualizerDrawable; import org.telegram.ui.Components.BackgroundGradientDrawable; -import org.telegram.ui.Components.ChatThemeBottomSheet; import org.telegram.ui.Components.ChoosingStickerStatusDrawable; import org.telegram.ui.Components.CombinedDrawable; import org.telegram.ui.Components.FragmentContextViewWavesDrawable; @@ -100,6 +103,7 @@ import org.telegram.ui.Components.MotionBackgroundDrawable; import org.telegram.ui.Components.MsgClockDrawable; import org.telegram.ui.Components.PathAnimator; import org.telegram.ui.Components.PlayingGameDrawable; +import org.telegram.ui.Components.Premium.PremiumGradient; import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.RecordStatusDrawable; import org.telegram.ui.Components.RoundStatusDrawable; @@ -126,6 +130,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Locale; import java.util.Map; +import java.util.Set; import java.util.concurrent.CountDownLatch; public class Theme { @@ -995,7 +1000,7 @@ public class Theme { } TLRPC.TL_wallPaper wallPaper = (TLRPC.TL_wallPaper) object; if (wallPaper.pattern) { - File patternPath = FileLoader.getPathToAttach(wallPaper.document, true); + File patternPath = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(wallPaper.document, true); Boolean exists = null; Bitmap patternBitmap = null; for (int a = 0, N = accents.size(); a < N; a++) { @@ -1127,8 +1132,10 @@ public class Theme { } if (patternBitmap == null) { + int w = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); + int h = Math.max(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); if (svg) { - patternBitmap = SvgHelper.getBitmap(patternPath, AndroidUtilities.dp(360), AndroidUtilities.dp(640), false); + patternBitmap = SvgHelper.getBitmap(patternPath, w, h, false); } else { patternBitmap = loadScreenSizedBitmap(new FileInputStream(patternPath), 0); } @@ -1172,7 +1179,7 @@ public class Theme { Utilities.globalQueue.postRunnable(() -> { ArrayList createdAccents = null; TLRPC.TL_wallPaper wallPaper = loadingPattern.pattern; - File patternPath = FileLoader.getPathToAttach(wallPaper.document, true); + File patternPath = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(wallPaper.document, true); Bitmap patternBitmap = null; for (int a = 0, N = loadingPattern.accents.size(); a < N; a++) { ThemeAccent accent = loadingPattern.accents.get(a); @@ -1276,8 +1283,11 @@ public class Theme { boolean isDarkTheme = parentTheme.isDark(); if (accentColor != parentTheme.accentBaseColor || accentColor2 != 0) { - HashSet keys = new HashSet<>(currentColorsNoAccent.keySet()); - keys.addAll(defaultColors.keySet()); + Set currentKeySet = currentColorsNoAccent.keySet(); + Set defaultKeySet = defaultColors.keySet(); + HashSet keys = new HashSet<>(currentKeySet.size() + defaultKeySet.size()); + keys.addAll(currentKeySet); + keys.addAll(defaultKeySet); keys.removeAll(themeAccentExclusionKeys); for (String key : keys) { @@ -1537,9 +1547,11 @@ public class Theme { if (inBubble == null) { inBubble = getColor(key_chat_inBubble); } + + int gradientAverageColor = outBubble; if (info != null && info.emoticon != null && !isDarkTheme) { currentColors.remove(key_chat_selectedBackground); - int gradientAverageColor = averageColor(currentColors, key_chat_wallpaper_gradient_to1, key_chat_wallpaper_gradient_to2, key_chat_wallpaper_gradient_to3); + gradientAverageColor = averageColor(currentColors, key_chat_wallpaper_gradient_to1, key_chat_wallpaper_gradient_to2, key_chat_wallpaper_gradient_to3); if (gradientAverageColor == 0) { gradientAverageColor = averageColor(currentColors, key_chat_wallpaper); } @@ -1557,6 +1569,12 @@ public class Theme { currentColors.put(key_chat_inBubbleSelected, Theme.blendOver(inBubble, inOverlay)); } + if (!isDarkTheme) { + currentColors.put(key_chat_inTextSelectionHighlight, textSelectionBackground(false, inBubble, accentColor)); + currentColors.put(key_chat_outTextSelectionHighlight, textSelectionBackground(true, outBubble, accentColor)); + currentColors.put(key_chat_outTextSelectionCursor, textSelectionHandle(outBubble, accentColor)); + } + Integer inMsgLink = currentColors.get(key_chat_messageLinkIn); if (inMsgLink == null) { inMsgLink = getColor(key_chat_messageLinkIn); @@ -1568,10 +1586,30 @@ public class Theme { currentColors.put(key_chat_linkSelectBackground, linkSelectionBackground(inMsgLink, inBubble, isDarkTheme)); currentColors.put(key_chat_outLinkSelectBackground, linkSelectionBackground(outMsgLink, outBubble, isDarkTheme)); + Integer submenuBackground = currentColors.get(key_actionBarDefaultSubmenuBackground); + if (submenuBackground == null) { + submenuBackground = getColor(key_actionBarDefaultSubmenuBackground); + } + currentColors.put(key_actionBarDefaultSubmenuSeparator, Color.argb( + Color.alpha(submenuBackground), + Math.max(0, Color.red(submenuBackground) - 10), + Math.max(0, Color.green(submenuBackground) - 10), + Math.max(0, Color.blue(submenuBackground) - 10) + )); + return !isMyMessagesGradientColorsNear; } private float[] tempHSV = new float[3]; + private int setHue(int color, int hueFromColor) { + Color.colorToHSV(hueFromColor, tempHSV); + float hue = tempHSV[0]; + Color.colorToHSV(color, tempHSV); + if (tempHSV[1] > 0.02f) { + tempHSV[0] = hue; + } + return Color.HSVToColor(Color.alpha(color), tempHSV); + } private int bubbleSelectedOverlay(int bubble, int accentColor) { Color.colorToHSV(accentColor, tempHSV); float h = tempHSV[0]; @@ -1583,6 +1621,28 @@ public class Theme { tempHSV[2] = Math.max(0, Math.min(1, tempHSV[2] - .05f)); return Color.HSVToColor(30, tempHSV); } + private int textSelectionBackground(boolean isOut, int bubble, int accentColor) { + Color.colorToHSV(accentColor, tempHSV); + float h = tempHSV[0]; + Color.colorToHSV(bubble, tempHSV); + if (tempHSV[1] <= 0 || tempHSV[0] > 45 && tempHSV[0] < 85) { + tempHSV[0] = h; + } + tempHSV[1] = Math.max(0, Math.min(1, tempHSV[1] + (tempHSV[2] > .85f ? .25f : .45f))); + tempHSV[2] = Math.max(0, Math.min(1, tempHSV[2] - .15f)); + return Color.HSVToColor(80, tempHSV); + } + private int textSelectionHandle(int bubble, int accentColor) { + Color.colorToHSV(accentColor, tempHSV); + float h = tempHSV[0]; + Color.colorToHSV(bubble, tempHSV); + if (tempHSV[1] <= 0 || tempHSV[0] > 45 && tempHSV[0] < 85) { + tempHSV[0] = h; + } + tempHSV[1] = Math.max(0, Math.min(1, tempHSV[1] + .6f)); + tempHSV[2] = Math.max(0, Math.min(1, tempHSV[2] - (tempHSV[2] > .7f ? .25f : .125f))); + return Theme.blendOver(bubble, Color.HSVToColor(255, tempHSV)); + } private int linkSelectionBackground(int linkColor, int bgColor, boolean isDarkTheme) { Color.colorToHSV(ColorUtils.blendARGB(linkColor, bgColor, .25f), tempHSV); tempHSV[1] = Math.max(0, Math.min(1, tempHSV[1] - .1f)); @@ -1705,18 +1765,29 @@ public class Theme { } } - public static int blendOver(int y, int x) { + public static int blendOver(int A, int B) { // B over A // over operator: https://en.wikipedia.org/wiki/Alpha_compositing#Description - float ax = Color.alpha(x) / 255f, - ay = Color.alpha(y) / 255f, - az = (ax + ay * (1 - ax)); - if (az == 0f) + float aB = Color.alpha(B) / 255f, + aA = Color.alpha(A) / 255f, + aC = (aB + aA * (1 - aB)); + if (aC == 0f) return 0; return Color.argb( - (int) (az * 255), - (int) ((Color.red(x) * ax + Color.red(y) * ay * (1 - ax)) / az), - (int) ((Color.green(x) * ax + Color.green(y) * ay * (1 - ax)) / az), - (int) ((Color.blue(x) * ax + Color.blue(y) * ay * (1 - ax)) / az) + (int) (aC * 255), + (int) ((Color.red(B) * aB + Color.red(A) * aA * (1 - aB)) / aC), + (int) ((Color.green(B) * aB + Color.green(A) * aA * (1 - aB)) / aC), + (int) ((Color.blue(B) * aB + Color.blue(A) * aA * (1 - aB)) / aC) + ); + } + + public static int reverseBlendOver(float ax, int y, int z) { + float ay = Color.alpha(y) / 255f, + az = Color.alpha(z) / 255f; + return Color.argb( + (int) (ax * 255), + (int) ((Color.red(y) * ay * (1 - ax) - Color.red(z) * az) / ax), + (int) ((Color.green(y) * ay * (1 - ax) - Color.green(z) * az) / ax), + (int) ((Color.blue(y) * ay * (1 - ax) - Color.blue(z) * az) / ax) ); } @@ -2649,7 +2720,7 @@ public class Theme { } private static final Object sync = new Object(); - private static Runnable wallpaperLoadTask; + public static Runnable wallpaperLoadTask; public static final int ACTION_BAR_PHOTO_VIEWER_COLOR = 0x7f000000; public static final int ACTION_BAR_MEDIA_PICKER_COLOR = 0xff333333; @@ -2712,7 +2783,6 @@ public class Theme { private static long[] remoteThemesHash = new long[UserConfig.MAX_ACCOUNT_COUNT]; public static ArrayList themes; - public static final ArrayList defaultEmojiThemes = new ArrayList<>(); private static ArrayList otherThemes; private static HashMap themesDict; private static ThemeInfo currentTheme; @@ -2792,9 +2862,6 @@ public class Theme { public static Drawable dialogs_errorDrawable; public static Drawable dialogs_reorderDrawable; public static Drawable dialogs_lockDrawable; - public static Drawable dialogs_groupDrawable; - public static Drawable dialogs_broadcastDrawable; - public static Drawable dialogs_botDrawable; public static Drawable dialogs_muteDrawable; public static Drawable dialogs_verifiedDrawable; public static ScamDrawable dialogs_scamDrawable; @@ -2945,11 +3012,7 @@ public class Theme { public static Drawable chat_inlineResultAudio; public static Drawable chat_inlineResultLocation; public static Drawable chat_redLocationIcon; - public static Drawable chat_msgOutBroadcastDrawable; - public static Drawable chat_msgMediaBroadcastDrawable; public static Drawable chat_msgOutLocationDrawable; - public static Drawable chat_msgBroadcastDrawable; - public static Drawable chat_msgBroadcastMediaDrawable; public static Drawable chat_contextResult_shadowUnderSwitchDrawable; public static Drawable chat_shareIconDrawable; public static Drawable chat_replyIconDrawable; @@ -2981,7 +3044,6 @@ public class Theme { public static Drawable[] chat_locationDrawable = new Drawable[2]; public static Drawable[] chat_contactDrawable = new Drawable[2]; public static Drawable[][] chat_fileStatesDrawable = new Drawable[10][2]; - public static CombinedDrawable[][] chat_fileMiniStatesDrawable = new CombinedDrawable[6][2]; public static Drawable[][] chat_photoStatesDrawables = new Drawable[13][2]; public static Drawable calllog_msgCallUpRedDrawable; @@ -3185,6 +3247,7 @@ public class Theme { public static final String key_actionBarDefaultSubmenuItem = "actionBarDefaultSubmenuItem"; public static final String key_actionBarDefaultSubmenuItemIcon = "actionBarDefaultSubmenuItemIcon"; public static final String key_actionBarDefaultSubmenuBackground = "actionBarDefaultSubmenuBackground"; + public static final String key_actionBarDefaultSubmenuSeparator = "actionBarDefaultSubmenuSeparator"; public static final String key_actionBarTabActiveText = "actionBarTabActiveText"; public static final String key_actionBarTabUnactiveText = "actionBarTabUnactiveText"; public static final String key_actionBarTabLine = "actionBarTabLine"; @@ -3569,6 +3632,7 @@ public class Theme { public static final String key_chat_inTextSelectionHighlight = "chat_inTextSelectionHighlight"; public static final String key_chat_recordedVoiceHighlight = "key_chat_recordedVoiceHighlight"; public static final String key_chat_TextSelectionCursor = "chat_TextSelectionCursor"; + public static final String key_chat_outTextSelectionCursor = "chat_outTextSelectionCursor"; public static final String key_chat_BlurAlpha = "chat_BlurAlpha"; public static final String key_voipgroup_listSelector = "voipgroup_listSelector"; @@ -3800,6 +3864,22 @@ public class Theme { public static final String key_chat_inReactionButtonTextSelected = "chat_inReactionButtonTextSelected"; public static final String key_chat_outReactionButtonTextSelected = "chat_outReactionButtonTextSelected"; + public static final String key_premiumGradient1 = "premiumGradient1"; + public static final String key_premiumGradient2 = "premiumGradient2"; + public static final String key_premiumGradient3 = "premiumGradient3"; + public static final String key_premiumGradient4 = "premiumGradient4"; + public static final String key_premiumGradientBackground1 = "premiumGradientBackground1"; + public static final String key_premiumGradientBackground2 = "premiumGradientBackground2"; + public static final String key_premiumGradientBackground3 = "premiumGradientBackground3"; + public static final String key_premiumGradientBackground4 = "premiumGradientBackground4"; + public static final String key_premiumGradientBackgroundOverlay = "premiumGradientBackgroundOverlay"; + public static final String key_premiumStartSmallStarsColor = "premiumStartSmallStarsColor"; + public static final String key_premiumStartGradient1 = "premiumStarGradient1"; + public static final String key_premiumStartGradient2 = "premiumStarGradient2"; + public static final String key_premiumStartSmallStarsColor2 = "premiumStartSmallStarsColor2"; + public static final String key_premiumGradientBottomSheet1 = "premiumGradientBottomSheet1"; + public static final String key_premiumGradientBottomSheet2 = "premiumGradientBottomSheet2"; + public static final String key_premiumGradientBottomSheet3 = "premiumGradientBottomSheet3"; public static final String key_drawable_botInline = "drawableBotInline"; public static final String key_drawable_botLink = "drawableBotLink"; @@ -4056,6 +4136,7 @@ public class Theme { defaultColors.put(key_actionBarDefaultSubmenuItem, 0xff222222); defaultColors.put(key_actionBarDefaultSubmenuItemIcon, 0xff676b70); defaultColors.put(key_actionBarDefaultSubmenuBackground, 0xffffffff); + defaultColors.put(key_actionBarDefaultSubmenuSeparator, 0xfff5f5f5); defaultColors.put(key_actionBarActionModeDefaultSelector, 0xffe2e2e2); defaultColors.put(key_actionBarTabActiveText, 0xffffffff); defaultColors.put(key_actionBarTabUnactiveText, 0xffd5e8f7); @@ -4568,6 +4649,7 @@ public class Theme { defaultColors.put(key_chat_outTextSelectionHighlight, 0x2E3F9923); defaultColors.put(key_chat_inTextSelectionHighlight, 0x5062A9E3); defaultColors.put(key_chat_TextSelectionCursor, 0xFF419FE8); + defaultColors.put(key_chat_outTextSelectionCursor, 0xFF419FE8); defaultColors.put(key_chat_BlurAlpha, 0xFF000000); defaultColors.put(key_statisticChartSignature, 0x7f252529); @@ -4669,6 +4751,23 @@ public class Theme { defaultColors.put(key_chat_inReactionButtonTextSelected, 0xffffffff); defaultColors.put(key_chat_outReactionButtonTextSelected, 0xffffffff); + defaultColors.put(key_premiumGradient1, 0xff55A5FF); + defaultColors.put(key_premiumGradient2, 0xffA767FF); + defaultColors.put(key_premiumGradient3, 0xffDB5C9D); + defaultColors.put(key_premiumGradient4, 0xffF38926); + + defaultColors.put(key_premiumGradientBackground1, 0xff55A5FF); + defaultColors.put(key_premiumGradientBackground2, 0xffA767FF); + defaultColors.put(key_premiumGradientBackground3, 0xffDB5C9D); + defaultColors.put(key_premiumGradientBackground4, 0xffF38926); + defaultColors.put(key_premiumGradientBackgroundOverlay, Color.WHITE); + defaultColors.put(key_premiumStartGradient1, 0xffFFFFFF); + defaultColors.put(key_premiumStartGradient2, 0xffE3ECFA); + defaultColors.put(key_premiumStartSmallStarsColor, ColorUtils.setAlphaComponent(Color.WHITE, 90)); + defaultColors.put(key_premiumStartSmallStarsColor2, ColorUtils.setAlphaComponent(Color.WHITE, 90)); + defaultColors.put(key_premiumGradientBottomSheet1, 0xff5B9DE7); + defaultColors.put(key_premiumGradientBottomSheet2, 0xffAB87DD); + defaultColors.put(key_premiumGradientBottomSheet3, 0xffE794BE); fallbackKeys.put(key_chat_inAdminText, key_chat_inTimeText); fallbackKeys.put(key_chat_inAdminSelectedText, key_chat_inTimeSelectedText); @@ -4704,7 +4803,7 @@ public class Theme { fallbackKeys.put(key_switchTrackBlueChecked, key_switchTrackChecked); fallbackKeys.put(key_switchTrackBlueThumb, key_windowBackgroundWhite); fallbackKeys.put(key_switchTrackBlueThumbChecked, key_windowBackgroundWhite); - fallbackKeys.put(key_windowBackgroundCheckText, key_windowBackgroundWhiteBlackText); + fallbackKeys.put(key_windowBackgroundCheckText, key_windowBackgroundWhite); fallbackKeys.put(key_contextProgressInner4, key_contextProgressInner1); fallbackKeys.put(key_contextProgressOuter4, key_contextProgressOuter1); fallbackKeys.put(key_switchTrackBlueSelector, key_listSelector); @@ -4754,6 +4853,7 @@ public class Theme { fallbackKeys.put(key_profile_status, key_avatar_subtitleInProfileBlue); fallbackKeys.put(key_chats_menuTopBackgroundCats, key_avatar_backgroundActionBarBlue); fallbackKeys.put(key_chat_outLinkSelectBackground, key_chat_linkSelectBackground); + fallbackKeys.put(key_actionBarDefaultSubmenuSeparator, key_windowBackgroundGray); //fallbackKeys.put(key_chat_attachActiveTab, 0xff33a7f5); //fallbackKeys.put(key_chat_attachUnactiveTab, 0xff92999e); fallbackKeys.put(key_chat_attachPermissionImage, key_dialogTextBlack); @@ -4779,6 +4879,7 @@ public class Theme { fallbackKeys.put(key_chat_outTextSelectionHighlight, key_chat_textSelectBackground); fallbackKeys.put(key_chat_inTextSelectionHighlight, key_chat_textSelectBackground); fallbackKeys.put(key_chat_TextSelectionCursor, key_chat_messagePanelCursor); + fallbackKeys.put(key_chat_outTextSelectionCursor, key_chat_TextSelectionCursor); fallbackKeys.put(key_chat_inPollCorrectAnswer, key_chat_attachLocationBackground); fallbackKeys.put(key_chat_outPollCorrectAnswer, key_chat_attachLocationBackground); fallbackKeys.put(key_chat_inPollWrongAnswer, key_chat_attachAudioBackground); @@ -4894,6 +4995,10 @@ public class Theme { themeAccentExclusionKeys.add(key_voipgroup_mutedByAdminMuteButtonDisabled); themeAccentExclusionKeys.add(key_voipgroup_windowBackgroundWhiteInputField); themeAccentExclusionKeys.add(key_voipgroup_windowBackgroundWhiteInputFieldActivated); + themeAccentExclusionKeys.add(key_premiumGradient1); + themeAccentExclusionKeys.add(key_premiumGradient2); + themeAccentExclusionKeys.add(key_premiumGradient3); + themeAccentExclusionKeys.add(key_premiumGradient4); myMessagesBubblesColorKeys.add(key_chat_outBubble); myMessagesBubblesColorKeys.add(key_chat_outBubbleSelected); @@ -5407,36 +5512,6 @@ public class Theme { applyTheme(applyingTheme, false, false, switchToTheme == 2); AndroidUtilities.runOnUIThread(Theme::checkAutoNightThemeConditions); - preferences = ApplicationLoader.applicationContext.getSharedPreferences("emojithemes_config", Context.MODE_PRIVATE); - int count = preferences.getInt("count", 0); - ArrayList previewItems = new ArrayList<>(); - previewItems.add(new ChatThemeBottomSheet.ChatThemeItem(EmojiThemes.createHomePreviewTheme())); - for (int i = 0; i < count; ++i) { - String value = preferences.getString("theme_" + i, ""); - SerializedData serializedData = new SerializedData(Utilities.hexToBytes(value)); - try { - TLRPC.TL_theme theme = TLRPC.Theme.TLdeserialize(serializedData, serializedData.readInt32(true), true); - EmojiThemes fullTheme = EmojiThemes.createPreviewFullTheme(theme); - if (fullTheme.items.size() >= 4) { - previewItems.add(new ChatThemeBottomSheet.ChatThemeItem(fullTheme)); - } - - ChatThemeController.chatThemeQueue.postRunnable(new Runnable() { - @Override - public void run() { - for (int i = 0; i < previewItems.size(); i++) { - previewItems.get(i).chatTheme.loadPreviewColors(0); - } - AndroidUtilities.runOnUIThread(() -> { - defaultEmojiThemes.clear(); - defaultEmojiThemes.addAll(previewItems); - }); - } - }); - } catch (Throwable e) { - FileLog.e(e); - } - } } private static void sortAccents(ThemeInfo info) { @@ -5892,23 +5967,6 @@ public class Theme { } } - public static Drawable getRoundRectSelectorWithBackgroundDrawable(int corners, int bgColor, int color) { - if (Build.VERSION.SDK_INT >= 21) { - Drawable maskDrawable = createRoundRectDrawable(corners, 0xffffffff); - ColorStateList colorStateList = new ColorStateList( - new int[][]{StateSet.WILD_CARD}, - new int[]{color} - ); - return new RippleDrawable(colorStateList, createRoundRectDrawable(corners, bgColor), maskDrawable); - } else { - StateListDrawable stateListDrawable = new StateListDrawable(); - stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, createRoundRectDrawable(corners, color)); - stateListDrawable.addState(new int[]{android.R.attr.state_selected}, createRoundRectDrawable(corners, color)); - stateListDrawable.addState(StateSet.WILD_CARD, new ColorDrawable(bgColor)); - return stateListDrawable; - } - } - public static Drawable createSelectorWithBackgroundDrawable(int backgroundColor, int color) { if (Build.VERSION.SDK_INT >= 21) { Drawable maskDrawable = new ColorDrawable(backgroundColor); @@ -5960,20 +6018,33 @@ public class Theme { } public static Drawable createSelectorDrawable(int color) { - return createSelectorDrawable(color, 1, -1); + return createSelectorDrawable(color, RIPPLE_MASK_CIRCLE_20DP, -1); } public static Drawable createSelectorDrawable(int color, int maskType) { return createSelectorDrawable(color, maskType, -1); } + public static final int RIPPLE_MASK_CIRCLE_20DP = 1; + public static final int RIPPLE_MASK_ALL = 2; + public static final int RIPPLE_MASK_CIRCLE_TO_BOUND_EDGE = 3; + public static final int RIPPLE_MASK_CIRCLE_TO_BOUND_CORNER = 4; + public static final int RIPPLE_MASK_CIRCLE_AUTO = 5; + private static final int RIPPLE_MASK_ROUNDRECT_6DP = 7; + public static Drawable createSelectorDrawable(int color, int maskType, int radius) { - Drawable drawable; if (Build.VERSION.SDK_INT >= 21) { Drawable maskDrawable = null; - if ((maskType == 1 || maskType == 5) && Build.VERSION.SDK_INT >= 23) { + if ((maskType == RIPPLE_MASK_CIRCLE_20DP || maskType == 5) && Build.VERSION.SDK_INT >= 23) { maskDrawable = null; - } else if (maskType == 1 || maskType == 3 || maskType == 4 || maskType == 5 || maskType == 6 || maskType == 7) { + } else if ( + maskType == RIPPLE_MASK_CIRCLE_20DP || + maskType == RIPPLE_MASK_CIRCLE_TO_BOUND_EDGE || + maskType == RIPPLE_MASK_CIRCLE_TO_BOUND_CORNER || + maskType == RIPPLE_MASK_CIRCLE_AUTO || + maskType == 6 || + maskType == RIPPLE_MASK_ROUNDRECT_6DP + ) { maskPaint.setColor(0xffffffff); maskDrawable = new Drawable() { @@ -5982,7 +6053,7 @@ public class Theme { @Override public void draw(Canvas canvas) { android.graphics.Rect bounds = getBounds(); - if (maskType == 7) { + if (maskType == RIPPLE_MASK_ROUNDRECT_6DP) { if (rect == null) { rect = new RectF(); } @@ -5990,11 +6061,13 @@ public class Theme { canvas.drawRoundRect(rect, AndroidUtilities.dp(6), AndroidUtilities.dp(6), maskPaint); } else { int rad; - if (maskType == 1 || maskType == 6) { + if (maskType == RIPPLE_MASK_CIRCLE_20DP || maskType == 6) { rad = AndroidUtilities.dp(20); - } else if (maskType == 3) { + } else if (maskType == RIPPLE_MASK_CIRCLE_TO_BOUND_EDGE) { rad = (Math.max(bounds.width(), bounds.height()) / 2); } else { + // RIPPLE_MASK_CIRCLE_AUTO = 5 + // RIPPLE_MASK_CIRCLE_TO_BOUND_CORNER = 4 rad = (int) Math.ceil(Math.sqrt((bounds.left - bounds.centerX()) * (bounds.left - bounds.centerX()) + (bounds.top - bounds.centerY()) * (bounds.top - bounds.centerY()))); } canvas.drawCircle(bounds.centerX(), bounds.centerY(), rad, maskPaint); @@ -6016,18 +6089,18 @@ public class Theme { return PixelFormat.UNKNOWN; } }; - } else if (maskType == 2) { + } else if (maskType == RIPPLE_MASK_ALL) { maskDrawable = new ColorDrawable(0xffffffff); } ColorStateList colorStateList = new ColorStateList( - new int[][]{StateSet.WILD_CARD}, - new int[]{color} + new int[][]{ StateSet.WILD_CARD }, + new int[]{ color } ); RippleDrawable rippleDrawable = new RippleDrawable(colorStateList, null, maskDrawable); if (Build.VERSION.SDK_INT >= 23) { - if (maskType == 1) { + if (maskType == RIPPLE_MASK_CIRCLE_20DP) { rippleDrawable.setRadius(radius <= 0 ? AndroidUtilities.dp(20) : radius); - } else if (maskType == 5) { + } else if (maskType == RIPPLE_MASK_CIRCLE_AUTO) { rippleDrawable.setRadius(RippleDrawable.RADIUS_AUTO); } } @@ -6080,6 +6153,304 @@ public class Theme { } } + /** + * AdaptiveRipple implements methods for creating ripple drawables + * Ripple color is based on background color, shifting saturation and value + * + * There are four public static methods: + * circle(String|int backgroundColor?, float radius?) + * - creates ripple drawable for circle buttons, draws only ripples + * radius (by default) can be RADIUS_TO_BOUNDS (-1): will be calculated to touch bounds edges + * radius can be RADIUS_OUT_BOUNDS (-2): will be calculated to touch bounds corners (fill entire bounds) + * otherwise radius is described in dp + * filledCircle(String|Drawable|int background?, String|int backgroundColor?, float radius?) + * - creates ripple drawable for circle buttons, draws ripples and background + * (!) it's not recommended to use only drawable background, as it would be impossible to get background color + * (there would be an attempt to cast drawable to ColorDrawable to retrieve a color) + * rect(String|int backgroundColor?, ...float radii?) + * - creates ripple drawable for rectangular buttons, draws only ripples + * radii array is allowed to have 0, 1, 2, 3, 4, 8 elements: + * 0 - no rounding + * 1 - all roundings + * 2 - top, bottom roundings + * 3 - top-left, top-right, bottom roundings + * 4 - top-left, top-right, bottom-right, bottom-left roundings + * 8 - top-left-x, top-left-y, top-right-x, top-right-y, + * bottom-right-x, bottom-right-y, bottom-left-x, bottom-left-y roundings + * in case it has more, would be downgraded to nearest (ex.: 5 -> 4, 10 -> 8) + * filledRect(String|Drawable|int background?, String|int backgroundColor?, ...float radii?) + * - creates ripple drawable for rectangular buttons, draws ripples and background + * + * by default, backgroundColor is getColor(Theme.key_windowBackgroundWhite) + */ + public static class AdaptiveRipple { + + public static final float RADIUS_TO_BOUNDS = -1; + public static final float RADIUS_OUT_BOUNDS = -2; + + private static final String defaultBackgroundColorKey = Theme.key_windowBackgroundWhite; + + public static Drawable circle() { + return circle(Theme.getColor(defaultBackgroundColorKey), RADIUS_TO_BOUNDS); + } + public static Drawable circle(String backgroundColorKey) { + return circle(Theme.getColor(backgroundColorKey), RADIUS_TO_BOUNDS); + } + public static Drawable circle(String backgroundColorKey, float radius) { + return circle(Theme.getColor(backgroundColorKey), radius); + } + public static Drawable circle(int backgroundColor) { + return circle(backgroundColor, RADIUS_TO_BOUNDS); + } + public static Drawable circle(int backgroundColor, float radius) { + return createCircle(calcRippleColor(backgroundColor), radius); + } + + public static Drawable filledCircle() { + return filledCircle(null, Theme.getColor(defaultBackgroundColorKey), RADIUS_TO_BOUNDS); + } + public static Drawable filledCircle(Drawable background) { + return filledCircle(background, Theme.getColor(defaultBackgroundColorKey), RADIUS_TO_BOUNDS); + } + public static Drawable filledCircle(String backgroundColorKey) { + return filledCircle(null, Theme.getColor(backgroundColorKey), RADIUS_TO_BOUNDS); + } + public static Drawable filledCircle(Drawable background, String backgroundColorKey) { + return filledCircle(background, Theme.getColor(backgroundColorKey), RADIUS_TO_BOUNDS); + } + public static Drawable filledCircle(String backgroundColorKey, float radius) { + return filledCircle(null, Theme.getColor(backgroundColorKey), radius); + } + public static Drawable filledCircle(Drawable background, String backgroundColorKey, float radius) { + return filledCircle(background, Theme.getColor(backgroundColorKey), radius); + } + public static Drawable filledCircle(int backgroundColor) { + return filledCircle(null, backgroundColor, RADIUS_TO_BOUNDS); + } + public static Drawable filledCircle(int backgroundColor, float radius) { + return filledCircle(null, backgroundColor, radius); + } + public static Drawable filledCircle(Drawable background, int backgroundColor, float radius) { + return createCircle(background, calcRippleColor(backgroundColor), radius); + } + + public static Drawable rect() { + return rect(Theme.getColor(defaultBackgroundColorKey)); + } + public static Drawable rect(String backgroundColorKey) { + return rect(Theme.getColor(backgroundColorKey)); + } + public static Drawable rect(String backgroundColorKey, float ...radii) { + return rect(Theme.getColor(backgroundColorKey), radii); + } + public static Drawable rect(int backgroundColor) { + return rect(backgroundColor, 0); + } + public static Drawable rect(int backgroundColor, float ...radii) { + return createRect(0, calcRippleColor(backgroundColor), radii); + } + + public static Drawable filledRect() { + return filledRect(Theme.getColor(defaultBackgroundColorKey), 0); + } + public static Drawable filledRect(Drawable background) { + int backgroundColor = background instanceof ColorDrawable ? ((ColorDrawable) background).getColor() : Theme.getColor(defaultBackgroundColorKey); + return filledRect(background, backgroundColor, 0); + } + public static Drawable filledRect(String backgroundColorKey) { + return filledRect(Theme.getColor(backgroundColorKey)); + } + public static Drawable filledRect(Drawable background, String backgroundColorKey) { + return filledRect(background, Theme.getColor(backgroundColorKey)); + } + public static Drawable filledRect(String backgroundColorKey, float ...radii) { + return filledRect(Theme.getColor(backgroundColorKey), radii); + } + public static Drawable filledRect(Drawable background, String backgroundColorKey, float ...radii) { + return filledRect(background, Theme.getColor(backgroundColorKey), radii); + } + public static Drawable filledRect(int backgroundColor) { + return createRect(backgroundColor, calcRippleColor(backgroundColor)); + } + public static Drawable filledRect(int backgroundColor, float ...radii) { + return createRect(backgroundColor, calcRippleColor(backgroundColor), radii); + } + public static Drawable filledRect(Drawable background, int backgroundColor, float ...radii) { + return createRect(background, calcRippleColor(backgroundColor), radii); + } + + private static Drawable createRect(int rippleColor, float ...radii) { + return createRect(0, rippleColor, radii); + } + private static Drawable createRect(int backgroundColor, int rippleColor, float ...radii) { + Drawable background = null; + if (backgroundColor != 0) { + if (hasNonzeroRadii(radii)) { + background = new ShapeDrawable(new RoundRectShape(calcRadii(radii), null, null)); + ((ShapeDrawable) background).getPaint().setColor(backgroundColor); + } else { + background = new ColorDrawable(backgroundColor); + } + } + return createRect( + background, + rippleColor, + radii + ); + } + private static Drawable createRect(Drawable background, int rippleColor, float ...radii) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Drawable maskDrawable = null; + if (hasNonzeroRadii(radii)) { + maskDrawable = new ShapeDrawable(new RoundRectShape(calcRadii(radii), null, null)); + ((ShapeDrawable) maskDrawable).getPaint().setColor(0xffffffff); + } + return new RippleDrawable( + new ColorStateList( + new int[][]{ StateSet.WILD_CARD }, + new int[]{ rippleColor } + ), + background, + maskDrawable + ); + } else { + StateListDrawable stateListDrawable = new StateListDrawable(); + Drawable ripple; + if (hasNonzeroRadii(radii)) { + ripple = new ShapeDrawable(new RoundRectShape(calcRadii(radii), null, null)); + ((ShapeDrawable) ripple).getPaint().setColor(rippleColor); + } else { + ripple = new ColorDrawable(rippleColor); + } + Drawable pressed = new LayerDrawable(new Drawable[] { background, ripple }); + stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, pressed); + stateListDrawable.addState(new int[]{android.R.attr.state_selected}, pressed); + stateListDrawable.addState(StateSet.WILD_CARD, background); + return stateListDrawable; + } + } + + private static Drawable createCircle(int rippleColor) { + return createCircle(0, rippleColor, RADIUS_TO_BOUNDS); + } + private static Drawable createCircle(int rippleColor, float radius) { + return createCircle(0, rippleColor, radius); + } + private static Drawable createCircle(int backgroundColor, int rippleColor, float radius) { + return createCircle( + backgroundColor == 0 ? null : new CircleDrawable(radius, backgroundColor), + rippleColor, + radius + ); + } + private static Drawable createCircle(Drawable background, int rippleColor, float radius) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return new RippleDrawable( + new ColorStateList( + new int[][]{ StateSet.WILD_CARD }, + new int[]{ rippleColor } + ), + background, + new CircleDrawable(radius) + ); + } else { + StateListDrawable stateListDrawable = new StateListDrawable(); + Drawable ripple = new CircleDrawable(radius, rippleColor); + Drawable pressed = new LayerDrawable(new Drawable[] { background, ripple }); + stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, pressed); + stateListDrawable.addState(new int[]{android.R.attr.state_selected}, pressed); + stateListDrawable.addState(StateSet.WILD_CARD, background); + return stateListDrawable; + } + } + + private static class CircleDrawable extends Drawable { + + private static Paint maskPaint; + private Paint paint; + private float radius; + + public CircleDrawable(float radius) { + this.radius = radius; + if (this.maskPaint == null) { + this.maskPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + this.maskPaint.setColor(0xffffffff); + } + this.paint = this.maskPaint; + } + + public CircleDrawable(float radius, int paintColor) { + this.radius = radius; + this.paint = new Paint(Paint.ANTI_ALIAS_FLAG); + this.paint.setColor(paintColor); + } + + @Override + public void draw(@NonNull Canvas canvas) { + android.graphics.Rect bounds = getBounds(); + float rad; + if (Math.abs(radius - RADIUS_TO_BOUNDS) < 0.01f) { + rad = Math.max(bounds.width(), bounds.height()) / 2; + } else if (Math.abs(radius - RADIUS_OUT_BOUNDS) < 0.01f) { + rad = (int) Math.ceil(Math.sqrt((bounds.left - bounds.centerX()) * (bounds.left - bounds.centerX()) + (bounds.top - bounds.centerY()) * (bounds.top - bounds.centerY()))); + } else { + rad = AndroidUtilities.dp(radius); + } + canvas.drawCircle(bounds.centerX(), bounds.centerY(), rad, paint); + } + + @Override + public void setAlpha(int i) {} + @Override + public void setColorFilter(@Nullable ColorFilter colorFilter) {} + @Deprecated @Override + public int getOpacity() { + return PixelFormat.TRANSPARENT; + } + } + + private static float[] calcRadii(float ...radii) { + if (radii.length == 0) { + return new float[] { 0, 0, 0, 0, 0, 0, 0, 0 }; + } else if (radii.length == 1) { + return new float[] { dp(radii[0]), dp(radii[0]), dp(radii[0]), dp(radii[0]), dp(radii[0]), dp(radii[0]), dp(radii[0]), dp(radii[0]) }; + } else if (radii.length == 2) { + return new float[] { dp(radii[0]), dp(radii[0]), dp(radii[0]), dp(radii[0]), dp(radii[1]), dp(radii[1]), dp(radii[1]), dp(radii[1]) }; + } else if (radii.length == 3) { + return new float[] { dp(radii[0]), dp(radii[0]), dp(radii[1]), dp(radii[1]), dp(radii[2]), dp(radii[2]), dp(radii[2]), dp(radii[2]) }; + } else if (radii.length < 8) { + return new float[] { dp(radii[0]), dp(radii[0]), dp(radii[1]), dp(radii[1]), dp(radii[2]), dp(radii[2]), dp(radii[3]), dp(radii[3]) }; + } else { + return new float[] { dp(radii[0]), dp(radii[1]), dp(radii[2]), dp(radii[3]), dp(radii[4]), dp(radii[5]), dp(radii[6]), dp(radii[7]) }; + } + } + private static boolean hasNonzeroRadii(float ...radii) { + for (int i = 0; i < Math.min(8, radii.length); ++i) { + if (radii[i] > 0) { + return true; + } + } + return false; + } + + private static float[] tempHSV; + private static int calcRippleColor(int backgroundColor) { + if (tempHSV == null) { + tempHSV = new float[3]; + } + Color.colorToHSV(backgroundColor, tempHSV); + if (tempHSV[1] > 0.01f) { + // when saturation is too low, hue is ignored + // so changing saturation at that point would reveal ignored hue (usually red, hue=0) + tempHSV[1] = Math.min(1, Math.max(0, tempHSV[1] + (isCurrentThemeDark() ? -.25f : .25f))); + tempHSV[2] = Math.min(1, Math.max(0, tempHSV[2] + (isCurrentThemeDark() ? .05f : -.05f))); + } else { + tempHSV[2] = Math.min(1, Math.max(0, tempHSV[2] + (isCurrentThemeDark() ? .1f : -.1f))); + } + return Color.HSVToColor(127, tempHSV); + } + } + public static class RippleRadMaskDrawable extends Drawable { private Path path = new Path(); private float[] radii = new float[8]; @@ -6423,7 +6794,7 @@ public class Theme { SharedPreferences preferences = MessagesController.getGlobalMainSettings(); SharedPreferences.Editor editor = preferences.edit(); editor.putString("theme", themeInfo.getKey()); - editor.commit(); + editor.apply(); } String[] wallpaperLink = new String[1]; if (themeInfo.assetName != null) { @@ -6508,7 +6879,7 @@ public class Theme { SharedPreferences preferences = MessagesController.getGlobalMainSettings(); SharedPreferences.Editor editor = preferences.edit(); editor.remove("theme"); - editor.commit(); + editor.apply(); } currentColorsNoAccent.clear(); themedWallpaperFileOffset = 0; @@ -6635,11 +7006,19 @@ public class Theme { return changeColorAccent(currentTheme, accent != null ? accent.accentColor : 0, color); } + private static float abs(float a) { + return a > 0 ? a : -a; + } + + private static float[] tmpHSV5; public static int changeColorAccent(float[] baseHsv, float[] accentHsv, int color, boolean isDarkTheme) { - float[] colorHsv = getTempHsv(5); + if (tmpHSV5 == null) { + tmpHSV5 = new float[3]; + } + float[] colorHsv = tmpHSV5; Color.colorToHSV(color, colorHsv); - final float diffH = Math.min(Math.abs(colorHsv[0] - baseHsv[0]), Math.abs(colorHsv[0] - baseHsv[0] - 360f)); + final float diffH = Math.min(abs(colorHsv[0] - baseHsv[0]), abs(colorHsv[0] - baseHsv[0] - 360f)); if (diffH > 30f) { return color; } @@ -7383,7 +7762,12 @@ public class Theme { loadingRemoteThemes[currentAccount] = true; TLRPC.TL_account_getThemes req = new TLRPC.TL_account_getThemes(); req.format = "android"; - req.hash = remoteThemesHash[currentAccount]; + if (!MediaDataController.getInstance(currentAccount).defaultEmojiThemes.isEmpty()) { + req.hash = remoteThemesHash[currentAccount]; + } + if (BuildVars.LOGS_ENABLED) { + Log.i("theme", "loading remote themes, hash " + req.hash); + } ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { loadingRemoteThemes[currentAccount] = false; if (response instanceof TLRPC.TL_account_themes) { @@ -7511,53 +7895,11 @@ public class Theme { if (loadPatterns) { PatternsLoader.createLoader(true); } - generateEmojiPreviewThemes(emojiPreviewThemes, currentAccount); + MediaDataController.getInstance(currentAccount).generateEmojiPreviewThemes(emojiPreviewThemes, currentAccount); } })); } - private static void generateEmojiPreviewThemes(final ArrayList emojiPreviewThemes, int currentAccount) { - SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("emojithemes_config", Context.MODE_PRIVATE); - SharedPreferences.Editor editor = preferences.edit(); - editor.putInt("count", emojiPreviewThemes.size()); - for (int i = 0; i < emojiPreviewThemes.size(); ++i) { - TLRPC.TL_theme tlChatTheme = emojiPreviewThemes.get(i); - SerializedData data = new SerializedData(tlChatTheme.getObjectSize()); - tlChatTheme.serializeToStream(data); - editor.putString("theme_" + i, Utilities.bytesToHex(data.toByteArray())); - } - editor.apply(); - - if (!emojiPreviewThemes.isEmpty()) { - final ArrayList previewItems = new ArrayList<>(); - previewItems.add(new ChatThemeBottomSheet.ChatThemeItem(EmojiThemes.createHomePreviewTheme())); - for (int i = 0; i < emojiPreviewThemes.size(); i++) { - TLRPC.TL_theme theme = emojiPreviewThemes.get(i); - EmojiThemes chatTheme = EmojiThemes.createPreviewFullTheme(theme); - ChatThemeBottomSheet.ChatThemeItem item = new ChatThemeBottomSheet.ChatThemeItem(chatTheme); - if (chatTheme.items.size() >= 4) { - previewItems.add(item); - } - } - ChatThemeController.chatThemeQueue.postRunnable(new Runnable() { - @Override - public void run() { - for (int i = 0; i < previewItems.size(); i++) { - previewItems.get(i).chatTheme.loadPreviewColors(currentAccount); - } - AndroidUtilities.runOnUIThread(() -> { - defaultEmojiThemes.clear(); - defaultEmojiThemes.addAll(previewItems); - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.emojiPreviewThemesChanged); - }); - } - }); - } else { - defaultEmojiThemes.clear(); - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.emojiPreviewThemesChanged); - } - } - public static String getBaseThemeKey(TLRPC.ThemeSettings settings) { if (settings.base_theme instanceof TLRPC.TL_baseThemeClassic) { return "Blue"; @@ -7830,7 +8172,8 @@ public class Theme { options.inJustDecodeBounds = true; BitmapFactory.decodeFile(wallpaperPath, options); if (options.outWidth > 0 && options.outHeight > 0) { - float scale = Math.min(options.outWidth / 560.0f, options.outHeight / 560.0f); + float side = 560.0f; + float scale = Math.min(options.outWidth / side, options.outHeight / side); options.inSampleSize = 1; if (scale > 1.0f) { do { @@ -7848,7 +8191,7 @@ public class Theme { } else { Paint bitmapPaint = new Paint(); bitmapPaint.setFilterBitmap(true); - scale = Math.min(wallpaper.getWidth() / 560.0f, wallpaper.getHeight() / 560.0f); + scale = Math.min(wallpaper.getWidth() / side, wallpaper.getHeight() / side); rect.set(0, 0, wallpaper.getWidth() / scale, wallpaper.getHeight() / scale); rect.offset((bitmap.getWidth() - rect.width()) / 2, (bitmap.getHeight() - rect.height()) / 2); canvas.drawBitmap(wallpaper, null, rect, bitmapPaint); @@ -8014,7 +8357,7 @@ public class Theme { public static HashMap getThemeFileValues(File file, String assetName, String[] wallpaperLink) { FileInputStream stream = null; - HashMap stringMap = new HashMap<>(); + HashMap stringMap = new HashMap<>(500); try { byte[] bytes = new byte[1024]; int currentPosition = 0; @@ -8111,15 +8454,15 @@ public class Theme { avatarDrawables[0] = resources.getDrawable(R.drawable.chats_saved); avatarDrawables[1] = resources.getDrawable(R.drawable.ghost); - avatarDrawables[2] = resources.getDrawable(R.drawable.folders_private); - avatarDrawables[3] = resources.getDrawable(R.drawable.folders_requests); - avatarDrawables[4] = resources.getDrawable(R.drawable.folders_group); - avatarDrawables[5] = resources.getDrawable(R.drawable.folders_channel); - avatarDrawables[6] = resources.getDrawable(R.drawable.folders_bot); - avatarDrawables[7] = resources.getDrawable(R.drawable.folders_mute); - avatarDrawables[8] = resources.getDrawable(R.drawable.folders_read); - avatarDrawables[9] = resources.getDrawable(R.drawable.folders_archive); - avatarDrawables[10] = resources.getDrawable(R.drawable.folders_private); + avatarDrawables[2] = resources.getDrawable(R.drawable.msg_folders_private); + avatarDrawables[3] = resources.getDrawable(R.drawable.msg_folders_requests); + avatarDrawables[4] = resources.getDrawable(R.drawable.msg_folders_groups); + avatarDrawables[5] = resources.getDrawable(R.drawable.msg_folders_channels); + avatarDrawables[6] = resources.getDrawable(R.drawable.msg_folders_bots); + avatarDrawables[7] = resources.getDrawable(R.drawable.msg_folders_muted); + avatarDrawables[8] = resources.getDrawable(R.drawable.msg_folders_read); + avatarDrawables[9] = resources.getDrawable(R.drawable.msg_folders_archive); + avatarDrawables[10] = resources.getDrawable(R.drawable.msg_folders_private); avatarDrawables[11] = resources.getDrawable(R.drawable.chats_replies); @@ -8214,6 +8557,8 @@ public class Theme { dialogs_unarchiveDrawable.setLayerColor("Box2.**", getNonAnimatedColor(key_chats_archiveIcon)); dialogs_unarchiveDrawable.setLayerColor("Box1.**", getNonAnimatedColor(key_chats_archiveIcon)); dialogs_unarchiveDrawable.commitApplyLayerColors(); + + PremiumGradient.getInstance().checkIconColors(); } public static void createCommonDialogResources(Context context) { @@ -8274,8 +8619,6 @@ public class Theme { dialogs_clockDrawable = new MsgClockDrawable(); dialogs_errorDrawable = resources.getDrawable(R.drawable.list_warning_sign); dialogs_reorderDrawable = resources.getDrawable(R.drawable.list_reorder).mutate(); - dialogs_groupDrawable = resources.getDrawable(R.drawable.list_group); - dialogs_broadcastDrawable = resources.getDrawable(R.drawable.list_broadcast); dialogs_muteDrawable = resources.getDrawable(R.drawable.list_mute).mutate(); dialogs_verifiedDrawable = resources.getDrawable(R.drawable.verified_area).mutate(); dialogs_scamDrawable = new ScamDrawable(11, 0); @@ -8283,9 +8626,8 @@ public class Theme { dialogs_verifiedCheckDrawable = resources.getDrawable(R.drawable.verified_check).mutate(); dialogs_mentionDrawable = resources.getDrawable(R.drawable.mentionchatslist); dialogs_reactionsMentionDrawable = resources.getDrawable(R.drawable.reactionchatslist); - dialogs_botDrawable = resources.getDrawable(R.drawable.list_bot); dialogs_pinnedDrawable = resources.getDrawable(R.drawable.list_pin); - moveUpDrawable = resources.getDrawable(R.drawable.preview_open); + moveUpDrawable = resources.getDrawable(R.drawable.preview_arrow); RectF rect = new RectF(); chat_updatePath[0] = new Path(); @@ -8352,9 +8694,6 @@ public class Theme { setDrawableColorByKey(dialogs_halfCheckDrawable, key_chats_sentReadCheck); setDrawableColorByKey(dialogs_clockDrawable, key_chats_sentClock); setDrawableColorByKey(dialogs_errorDrawable, key_chats_sentErrorIcon); - setDrawableColorByKey(dialogs_groupDrawable, key_chats_nameIcon); - setDrawableColorByKey(dialogs_broadcastDrawable, key_chats_nameIcon); - setDrawableColorByKey(dialogs_botDrawable, key_chats_nameIcon); setDrawableColorByKey(dialogs_pinnedDrawable, key_chats_pinnedIcon); setDrawableColorByKey(dialogs_reorderDrawable, key_chats_pinnedIcon); setDrawableColorByKey(dialogs_muteDrawable, key_chats_muteIcon); @@ -8531,10 +8870,10 @@ public class Theme { playPauseAnimator.addSvgKeyFrame("M 47.641 17.125 C 50.641 18.207 51.09 19.935 51.078 22.653 C 51.07 24.191 51.062 21.23 51.088 23.063 C 51.109 24.886 49.587 27 47.377 27 L 5 27.009 C 2.79 27.009 1 25.219 1 23.009 L 0.983 11.459 C 0.983 8.908 3.414 7.522 5.476 7.838 C 7.138 8.486 47.641 17.125 47.641 17.125 Z", 300); playPauseAnimator.addSvgKeyFrame("M 48 7 C 50.21 7 52 8.79 52 11 C 52 19 52 19 52 19 C 52 21.21 50.21 23 48 23 L 4 23 C 1.79 23 0 21.21 0 19 L 0 11 C 0 8.79 1.79 7 4 7 C 48 7 48 7 48 7 Z", 383); - chat_msgOutCheckDrawable = resources.getDrawable(R.drawable.msg_check).mutate(); - chat_msgOutCheckSelectedDrawable = resources.getDrawable(R.drawable.msg_check).mutate(); - chat_msgOutCheckReadDrawable = resources.getDrawable(R.drawable.msg_check).mutate(); - chat_msgOutCheckReadSelectedDrawable = resources.getDrawable(R.drawable.msg_check).mutate(); + chat_msgOutCheckDrawable = resources.getDrawable(R.drawable.msg_check_s).mutate(); + chat_msgOutCheckSelectedDrawable = resources.getDrawable(R.drawable.msg_check_s).mutate(); + chat_msgOutCheckReadDrawable = resources.getDrawable(R.drawable.msg_check_s).mutate(); + chat_msgOutCheckReadSelectedDrawable = resources.getDrawable(R.drawable.msg_check_s).mutate(); chat_msgMediaCheckDrawable = resources.getDrawable(R.drawable.msg_check_s).mutate(); chat_msgStickerCheckDrawable = resources.getDrawable(R.drawable.msg_check_s).mutate(); chat_msgOutHalfCheckDrawable = resources.getDrawable(R.drawable.msg_halfcheck).mutate(); @@ -8570,8 +8909,6 @@ public class Theme { chat_msgErrorDrawable = resources.getDrawable(R.drawable.msg_warning); chat_muteIconDrawable = resources.getDrawable(R.drawable.list_mute).mutate(); chat_lockIconDrawable = resources.getDrawable(R.drawable.ic_lock_header); - chat_msgBroadcastDrawable = resources.getDrawable(R.drawable.broadcast3).mutate(); - chat_msgBroadcastMediaDrawable = resources.getDrawable(R.drawable.broadcast3).mutate(); chat_msgInCallDrawable[0] = resources.getDrawable(R.drawable.chat_calls_voice).mutate(); chat_msgInCallSelectedDrawable[0] = resources.getDrawable(R.drawable.chat_calls_voice).mutate(); chat_msgOutCallDrawable[0] = resources.getDrawable(R.drawable.chat_calls_voice).mutate(); @@ -8586,7 +8923,7 @@ public class Theme { for (int a = 0; a < 2; a++) { chat_pollCheckDrawable[a] = resources.getDrawable(R.drawable.poll_right).mutate(); chat_pollCrossDrawable[a] = resources.getDrawable(R.drawable.poll_wrong).mutate(); - chat_pollHintDrawable[a] = resources.getDrawable(R.drawable.smiles_panel_objects).mutate(); + chat_pollHintDrawable[a] = resources.getDrawable(R.drawable.msg_emoji_objects).mutate(); chat_psaHelpDrawable[a] = resources.getDrawable(R.drawable.msg_psa).mutate(); } @@ -8625,19 +8962,6 @@ public class Theme { chat_replyIconDrawable = resources.getDrawable(R.drawable.fast_reply); chat_goIconDrawable = resources.getDrawable(R.drawable.message_arrow); - chat_fileMiniStatesDrawable[0][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.audio_mini_arrow); - chat_fileMiniStatesDrawable[0][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.audio_mini_arrow); - chat_fileMiniStatesDrawable[1][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.audio_mini_cancel); - chat_fileMiniStatesDrawable[1][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.audio_mini_cancel); - chat_fileMiniStatesDrawable[2][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.audio_mini_arrow); - chat_fileMiniStatesDrawable[2][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.audio_mini_arrow); - chat_fileMiniStatesDrawable[3][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.audio_mini_cancel); - chat_fileMiniStatesDrawable[3][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.audio_mini_cancel); - chat_fileMiniStatesDrawable[4][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.video_mini_arrow); - chat_fileMiniStatesDrawable[4][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.video_mini_arrow); - chat_fileMiniStatesDrawable[5][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.video_mini_cancel); - chat_fileMiniStatesDrawable[5][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(22), R.drawable.video_mini_cancel); - int rad = AndroidUtilities.dp(2); RectF rect = new RectF(); chat_filePath[0] = new Path(); @@ -8702,14 +9026,11 @@ public class Theme { chat_photoStatesDrawables[7][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_load_m); chat_photoStatesDrawables[8][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); chat_photoStatesDrawables[8][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); - chat_photoStatesDrawables[9][0] = resources.getDrawable(R.drawable.doc_big).mutate(); - chat_photoStatesDrawables[9][1] = resources.getDrawable(R.drawable.doc_big).mutate(); + chat_photoStatesDrawables[10][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_load_m); chat_photoStatesDrawables[10][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_load_m); chat_photoStatesDrawables[11][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); chat_photoStatesDrawables[11][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); - chat_photoStatesDrawables[12][0] = resources.getDrawable(R.drawable.doc_big).mutate(); - chat_photoStatesDrawables[12][1] = resources.getDrawable(R.drawable.doc_big).mutate(); chat_contactDrawable[0] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_contact); chat_contactDrawable[1] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_contact); @@ -8936,8 +9257,6 @@ public class Theme { setDrawableColorByKey(chat_msgErrorDrawable, key_chat_sentErrorIcon); setDrawableColorByKey(chat_muteIconDrawable, key_chat_muteIcon); setDrawableColorByKey(chat_lockIconDrawable, key_chat_lockIcon); - setDrawableColorByKey(chat_msgBroadcastDrawable, key_chat_outBroadcast); - setDrawableColorByKey(chat_msgBroadcastMediaDrawable, key_chat_mediaBroadcast); setDrawableColorByKey(chat_inlineResultFile, key_chat_inlineResultIcon); setDrawableColorByKey(chat_inlineResultAudio, key_chat_inlineResultIcon); setDrawableColorByKey(chat_inlineResultLocation, key_chat_inlineResultIcon); @@ -8965,23 +9284,6 @@ public class Theme { setDrawableColorByKey(chat_status_drawables[i], key_chats_actionMessage); } - for (int a = 0; a < 2; a++) { - setCombinedDrawableColor(chat_fileMiniStatesDrawable[a][0], getColor(key_chat_outLoader), false); - setCombinedDrawableColor(chat_fileMiniStatesDrawable[a][0], getColor(key_chat_outMediaIcon), true); - setCombinedDrawableColor(chat_fileMiniStatesDrawable[a][1], getColor(key_chat_outLoaderSelected), false); - setCombinedDrawableColor(chat_fileMiniStatesDrawable[a][1], getColor(key_chat_outMediaIconSelected), true); - - setCombinedDrawableColor(chat_fileMiniStatesDrawable[2 + a][0], getColor(key_chat_inLoader), false); - setCombinedDrawableColor(chat_fileMiniStatesDrawable[2 + a][0], getColor(key_chat_inMediaIcon), true); - setCombinedDrawableColor(chat_fileMiniStatesDrawable[2 + a][1], getColor(key_chat_inLoaderSelected), false); - setCombinedDrawableColor(chat_fileMiniStatesDrawable[2 + a][1], getColor(key_chat_inMediaIconSelected), true); - - setCombinedDrawableColor(chat_fileMiniStatesDrawable[4 + a][0], getColor(key_chat_mediaLoaderPhoto), false); - setCombinedDrawableColor(chat_fileMiniStatesDrawable[4 + a][0], getColor(key_chat_mediaLoaderPhotoIcon), true); - setCombinedDrawableColor(chat_fileMiniStatesDrawable[4 + a][1], getColor(key_chat_mediaLoaderPhotoSelected), false); - setCombinedDrawableColor(chat_fileMiniStatesDrawable[4 + a][1], getColor(key_chat_mediaLoaderPhotoIconSelected), true); - } - for (int a = 0; a < 5; a++) { setCombinedDrawableColor(chat_fileStatesDrawable[a][0], getColor(key_chat_outLoader), false); setCombinedDrawableColor(chat_fileStatesDrawable[a][0], getColor(key_chat_outMediaIcon), true); @@ -9009,11 +9311,6 @@ public class Theme { setCombinedDrawableColor(chat_photoStatesDrawables[10 + a][1], getColor(key_chat_inLoaderPhotoIconSelected), true); } - setDrawableColorByKey(chat_photoStatesDrawables[9][0], key_chat_outFileIcon); - setDrawableColorByKey(chat_photoStatesDrawables[9][1], key_chat_outFileSelectedIcon); - setDrawableColorByKey(chat_photoStatesDrawables[12][0], key_chat_inFileIcon); - setDrawableColorByKey(chat_photoStatesDrawables[12][1], key_chat_inFileSelectedIcon); - setCombinedDrawableColor(chat_contactDrawable[0], getColor(key_chat_inContactBackground), false); setCombinedDrawableColor(chat_contactDrawable[0], getColor(key_chat_inContactIcon), true); setCombinedDrawableColor(chat_contactDrawable[1], getColor(key_chat_outContactBackground), false); @@ -9797,16 +10094,16 @@ public class Theme { } if (gradientToColor1 != null && gradientToColor2 != null) { MotionBackgroundDrawable motionBackgroundDrawable = new MotionBackgroundDrawable(backgroundColor, gradientToColor1, gradientToColor2, gradientToColor3, false); - Bitmap pattensBitmap = null; + Bitmap patternBitmap = null; if (wallpaperFile != null && wallpaperDocument != null) { - File f = FileLoader.getPathToAttach(wallpaperDocument, true); - pattensBitmap = SvgHelper.getBitmap(f, AndroidUtilities.dp(360), AndroidUtilities.dp(640), false); - if (pattensBitmap != null) { + File f = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(wallpaperDocument, true); + patternBitmap = SvgHelper.getBitmap(f, AndroidUtilities.dp(360), AndroidUtilities.dp(640), false); + if (patternBitmap != null) { FileOutputStream stream = null; try { stream = new FileOutputStream(wallpaperFile); - pattensBitmap.compress(Bitmap.CompressFormat.PNG, 87, stream); + patternBitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); stream.close(); } catch (Exception e) { FileLog.e(e); @@ -9814,7 +10111,7 @@ public class Theme { } } } - motionBackgroundDrawable.setPatternBitmap(intensity, pattensBitmap); + motionBackgroundDrawable.setPatternBitmap(intensity, patternBitmap); motionBackgroundDrawable.setPhase(previousPhase); settings.wallpaper = motionBackgroundDrawable; } else if (gradientToColor1 == null || gradientToColor1.equals(backgroundColor)) { @@ -9860,6 +10157,7 @@ public class Theme { Bitmap bitmap = loadScreenSizedBitmap(new FileInputStream(file), themedWallpaperFileOffset); if (bitmap != null) { settings.wallpaper = settings.themedWallpaper = wallpaper = new BitmapDrawable(bitmap); + wallpaper.setFilterBitmap(true); settings.isCustomTheme = true; } } catch (Throwable e) { @@ -9911,6 +10209,7 @@ public class Theme { Bitmap bitmap = loadScreenSizedBitmap(new FileInputStream(toFile), 0); if (bitmap != null) { settings.wallpaper = new BitmapDrawable(bitmap); + settings.wallpaper.setFilterBitmap(true); settings.isCustomTheme = true; } } @@ -9958,8 +10257,8 @@ public class Theme { float photoW = opts.outWidth; float photoH = opts.outHeight; float scaleFactor; - int w_filter = AndroidUtilities.dp(360); - int h_filter = AndroidUtilities.dp(640); + int w_filter = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); + int h_filter = Math.max(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); if (w_filter >= h_filter && photoW > photoH) { scaleFactor = Math.max(photoW / w_filter, photoH / h_filter); } else { @@ -9979,7 +10278,16 @@ public class Theme { opts.inSampleSize = (int) scaleFactor; } stream.getChannel().position(offset); - return BitmapFactory.decodeStream(stream, null, opts); + Bitmap bitmap = BitmapFactory.decodeStream(stream, null, opts); + if (bitmap.getWidth() < w_filter || bitmap.getHeight() < h_filter) { + float scale = Math.max((float) w_filter / bitmap.getWidth(), (float) h_filter / bitmap.getHeight()); + if (scale >= 1.02f) { + Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, (int) (bitmap.getWidth() * scale), (int) (bitmap.getHeight() * scale), true); + bitmap.recycle(); + return scaledBitmap; + } + } + return bitmap; } catch (Exception e) { FileLog.e(e); } finally { @@ -10126,12 +10434,7 @@ public class Theme { } public static Drawable getCachedWallpaper() { - Drawable drawable; - if (themedWallpaper != null) { - drawable = themedWallpaper; - } else { - drawable = wallpaper; - } + Drawable drawable = getCachedWallpaperNonBlocking(); if (drawable == null && wallpaperLoadTask != null) { CountDownLatch countDownLatch = new CountDownLatch(1); Utilities.themeQueue.postRunnable(countDownLatch::countDown); @@ -10140,11 +10443,7 @@ public class Theme { } catch (Exception e) { FileLog.e(e); } - if (themedWallpaper != null) { - drawable = themedWallpaper; - } else { - drawable = wallpaper; - } + drawable = getCachedWallpaperNonBlocking(); } return drawable; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionIntroActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionIntroActivity.java index b04e7c3e9..e523820fa 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionIntroActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionIntroActivity.java @@ -591,7 +591,7 @@ public class ActionIntroActivity extends BaseFragment implements LocationControl } cellFlickerDrawable.setParentWidth(getMeasuredWidth()); AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); - cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(4)); + cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(4), null); invalidate(); } } @@ -603,7 +603,7 @@ public class ActionIntroActivity extends BaseFragment implements LocationControl buttonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); buttonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); int buttonRadiusDp = currentType == ACTION_TYPE_SET_PASSCODE || currentType == ACTION_TYPE_CHANGE_PHONE_NUMBER ? 6 : 4; - buttonTextView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(buttonRadiusDp), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + buttonTextView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, buttonRadiusDp)); viewGroup.addView(buttonTextView); buttonTextView.setOnClickListener(v -> { if (getParentActivity() == null) { @@ -660,7 +660,7 @@ public class ActionIntroActivity extends BaseFragment implements LocationControl AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setTitle(LocaleController.getString("PhoneNumberChangeTitle", R.string.PhoneNumberChangeTitle)); builder.setMessage(LocaleController.getString("PhoneNumberAlert", R.string.PhoneNumberAlert)); - builder.setPositiveButton(LocaleController.getString("Change", R.string.Change), (dialogInterface, i) -> presentFragment(new ChangePhoneActivity(), true)); + builder.setPositiveButton(LocaleController.getString("Change", R.string.Change), (dialogInterface, i) -> presentFragment(new LoginActivity().changePhoneNumber(), true)); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); showDialog(builder.create()); break; @@ -682,6 +682,7 @@ public class ActionIntroActivity extends BaseFragment implements LocationControl case ACTION_TYPE_SET_PASSCODE: { imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); imageView.setAnimation(R.raw.utyan_passcode, 200, 200); + imageView.setFocusable(false); imageView.setOnClickListener(v -> { if (!imageView.getAnimatedDrawable().isRunning()) { imageView.getAnimatedDrawable().setCurrentFrame(0, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsAdapter.java index 4a920d86f..1ef84f6fc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsAdapter.java @@ -17,15 +17,18 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; +import androidx.collection.LongSparseArray; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ContactsController; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MessagesController; +import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; -import org.telegram.messenger.ContactsController; -import org.telegram.messenger.MessagesController; -import org.telegram.messenger.R; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.DividerCell; @@ -43,9 +46,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import androidx.collection.LongSparseArray; -import androidx.recyclerview.widget.RecyclerView; - public class ContactsAdapter extends RecyclerListView.SectionsAdapter { private int currentAccount = UserConfig.selectedAccount; @@ -439,23 +439,23 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { if (section == 0) { if (needPhonebook) { if (position == 0) { - textCell.setTextAndIcon(LocaleController.getString("InviteFriends", R.string.InviteFriends), R.drawable.menu_invite, false); + textCell.setTextAndIcon(LocaleController.getString("InviteFriends", R.string.InviteFriends), R.drawable.msg_invite, false); } else if (position == 1) { - textCell.setTextAndIcon(LocaleController.getString("AddPeopleNearby", R.string.AddPeopleNearby), R.drawable.menu_location, false); + textCell.setTextAndIcon(LocaleController.getString("AddPeopleNearby", R.string.AddPeopleNearby), R.drawable.msg_location, false); } } else if (isAdmin) { if (isChannel) { - textCell.setTextAndIcon(LocaleController.getString("ChannelInviteViaLink", R.string.ChannelInviteViaLink), R.drawable.profile_link, false); + textCell.setTextAndIcon(LocaleController.getString("ChannelInviteViaLink", R.string.ChannelInviteViaLink), R.drawable.msg_link2, false); } else { - textCell.setTextAndIcon(LocaleController.getString("InviteToGroupByLink", R.string.InviteToGroupByLink), R.drawable.profile_link, false); + textCell.setTextAndIcon(LocaleController.getString("InviteToGroupByLink", R.string.InviteToGroupByLink), R.drawable.msg_link2, false); } } else { if (position == 0) { - textCell.setTextAndIcon(LocaleController.getString("NewGroup", R.string.NewGroup), R.drawable.menu_groups, false); + textCell.setTextAndIcon(LocaleController.getString("NewGroup", R.string.NewGroup), R.drawable.msg_groups, false); } else if (position == 1) { - textCell.setTextAndIcon(LocaleController.getString("NewSecretChat", R.string.NewSecretChat), R.drawable.menu_secret, false); + textCell.setTextAndIcon(LocaleController.getString("NewSecretChat", R.string.NewSecretChat), R.drawable.msg_secret, false); } else if (position == 2) { - textCell.setTextAndIcon(LocaleController.getString("NewChannel", R.string.NewChannel), R.drawable.menu_broadcast, false); + textCell.setTextAndIcon(LocaleController.getString("NewChannel", R.string.NewChannel), R.drawable.msg_channel, false); } } } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java index f1fd62971..ac5ec4776 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java @@ -28,7 +28,6 @@ import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; -import org.telegram.messenger.AccountInstance; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.BuildVars; import org.telegram.messenger.ChatObject; @@ -186,6 +185,9 @@ public class DialogsAdapter extends RecyclerListView.SelectionAdapter { } return (currentCount = 0); } + if (dialogsCount == 0 && messagesController.isLoadingDialogs(folderId)) { + return (currentCount = 0); + } int count = dialogsCount; if (dialogsType == 7 || dialogsType == 8) { if (dialogsCount == 0) { @@ -418,7 +420,11 @@ public class DialogsAdapter extends RecyclerListView.SelectionAdapter { case VIEW_TYPE_CONTACTS_FLICKER: FlickerLoadingView flickerLoadingView = new FlickerLoadingView(mContext); flickerLoadingView.setIsSingleCell(true); - flickerLoadingView.setViewType(viewType == VIEW_TYPE_CONTACTS_FLICKER ? FlickerLoadingView.CONTACT_TYPE : FlickerLoadingView.DIALOG_CELL_TYPE); + int flickerType = viewType == VIEW_TYPE_CONTACTS_FLICKER ? FlickerLoadingView.CONTACT_TYPE : FlickerLoadingView.DIALOG_CELL_TYPE; + flickerLoadingView.setViewType(flickerType); + if (flickerType == FlickerLoadingView.CONTACT_TYPE) { + flickerLoadingView.setIgnoreHeightCheck(true); + } if (viewType == VIEW_TYPE_CONTACTS_FLICKER) { flickerLoadingView.setItemsCount((int) (AndroidUtilities.displaySize.y * 0.5f / AndroidUtilities.dp(64))); } @@ -703,25 +709,17 @@ public class DialogsAdapter extends RecyclerListView.SelectionAdapter { cell.setTextSize(14); cell.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText)); cell.setBackgroundColor(Theme.getColor(Theme.key_graySection)); - try { - MessagesController messagesController = AccountInstance.getInstance(currentAccount).getMessagesController(); - int j = 0; - if (messagesController.dialogsMyChannels.size() > 0) { - if (i == j) { - cell.setText(LocaleController.getString("MyChannels", R.string.MyChannels)); - } - j += 1 + messagesController.dialogsMyChannels.size(); - } - if (messagesController.dialogsMyGroups.size() > 0) { - if (i == j) { - cell.setText(LocaleController.getString("MyGroups", R.string.MyGroups)); - } - j += 1 + messagesController.dialogsMyGroups.size(); - } - if (messagesController.dialogsCanAddUsers.size() > 0 && i == j) { + switch (((DialogsActivity.DialogsHeader) getItem(i)).headerType) { + case DialogsActivity.DialogsHeader.HEADER_TYPE_MY_CHANNELS: + cell.setText(LocaleController.getString("MyChannels", R.string.MyChannels)); + break; + case DialogsActivity.DialogsHeader.HEADER_TYPE_MY_GROUPS: + cell.setText(LocaleController.getString("MyGroups", R.string.MyGroups)); + break; + case DialogsActivity.DialogsHeader.HEADER_TYPE_GROUPS: cell.setText(LocaleController.getString("FilterGroups", R.string.FilterGroups)); - } - } catch (Exception ignore) {} + break; + } break; } case VIEW_TYPE_NEW_CHAT_HINT: { @@ -740,7 +738,7 @@ public class DialogsAdapter extends RecyclerListView.SelectionAdapter { case VIEW_TYPE_TEXT: { TextCell cell = (TextCell) holder.itemView; cell.setColors(Theme.key_windowBackgroundWhiteBlueText4, Theme.key_windowBackgroundWhiteBlueText4); - cell.setTextAndIcon(LocaleController.getString("CreateGroupForImport", R.string.CreateGroupForImport), R.drawable.groups_create, dialogsCount != 0); + cell.setTextAndIcon(LocaleController.getString("CreateGroupForImport", R.string.CreateGroupForImport), R.drawable.msg_groups_create, dialogsCount != 0); cell.setIsInDialogs(); cell.setOffsetFromImage(75); break; @@ -839,7 +837,7 @@ public class DialogsAdapter extends RecyclerListView.SelectionAdapter { } else if (i > size) { return VIEW_TYPE_LAST_EMPTY; } - if (dialogsType == 2 && getItem(i) == null) { + if (dialogsType == 2 && getItem(i) instanceof DialogsActivity.DialogsHeader) { return VIEW_TYPE_HEADER_2; } return VIEW_TYPE_DIALOG; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java index 70ecdca10..ac743c1ce 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java @@ -9,9 +9,11 @@ package org.telegram.ui.Adapters; import android.content.Context; +import android.os.SystemClock; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; +import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -37,6 +39,7 @@ import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.ActionBar.ThemeDescription; import org.telegram.ui.Cells.DialogCell; import org.telegram.ui.Cells.GraySectionCell; import org.telegram.ui.Cells.HashtagSearchCell; @@ -54,6 +57,7 @@ import java.util.HashMap; import java.util.concurrent.ConcurrentHashMap; import androidx.collection.LongSparseArray; +import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -89,13 +93,21 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { private int lastLocalSearchId; private int lastMessagesSearchId; private int dialogsType; + private DefaultItemAnimator itemAnimator; private SearchAdapterHelper searchAdapterHelper; private RecyclerListView innerListView; private long selfUserId; + public int showMoreLastItem; + public boolean showMoreAnimation = false; + private long lastShowMoreUpdate; + public View showMoreHeader; + private Runnable cancelShowMoreAnimation; private int currentAccount = UserConfig.selectedAccount; private ArrayList recentSearchObjects = new ArrayList<>(); + private ArrayList filteredRecentSearchObjects = new ArrayList<>(); + private String filteredRecentQuery = null; private LongSparseArray recentSearchObjectsById = new LongSparseArray<>(); private ArrayList localTipDates = new ArrayList<>(); private boolean localTipArchive; @@ -133,6 +145,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { private final Context mContext; private final int currentAccount; private boolean drawChecked; + private boolean forceDarkTheme; public CategoryAdapterRecycler(Context context, int account, boolean drawChecked) { this.drawChecked = drawChecked; @@ -146,9 +159,9 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = new HintDialogCell(mContext, drawChecked); - view.setLayoutParams(new RecyclerView.LayoutParams(AndroidUtilities.dp(80), AndroidUtilities.dp(86))); - return new RecyclerListView.Holder(view); + HintDialogCell cell = new HintDialogCell(mContext, drawChecked); + cell.setLayoutParams(new RecyclerView.LayoutParams(AndroidUtilities.dp(80), AndroidUtilities.dp(86))); + return new RecyclerListView.Holder(cell); } @Override @@ -191,7 +204,8 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } } - public DialogsSearchAdapter(Context context, int messagesSearch, int type) { + public DialogsSearchAdapter(Context context, int messagesSearch, int type, DefaultItemAnimator itemAnimator) { + this.itemAnimator = itemAnimator; searchAdapterHelper = new SearchAdapterHelper(false); searchAdapterHelper.setDelegate(new SearchAdapterHelper.SearchAdapterHelperDelegate() { @Override @@ -270,12 +284,16 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { reqId = 0; } if (TextUtils.isEmpty(query)) { + filteredRecentQuery = null; searchResultMessages.clear(); lastReqId = 0; lastMessagesSearchString = null; searchWas = false; notifyDataSetChanged(); return; + } else { + filterRecent(query); + searchAdapterHelper.mergeResults(searchResult, filteredRecentSearchObjects); } final TLRPC.TL_messages_searchGlobal req = new TLRPC.TL_messages_searchGlobal(); @@ -359,6 +377,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { searchAdapterHelper.clear(); } } + searchAdapterHelper.mergeResults(searchResult, filteredRecentSearchObjects); if (delegate != null) { delegate.searchStateChanged(waitingResponseCount > 0, true); delegate.runResultsEnterAnimation(); @@ -374,11 +393,15 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } public boolean hasRecentSearch() { - return dialogsType != 2 && dialogsType != 4 && dialogsType != 5 && dialogsType != 6 && dialogsType != 11 && (!recentSearchObjects.isEmpty() || !MediaDataController.getInstance(currentAccount).hints.isEmpty()); + return dialogsType != 2 && dialogsType != 4 && dialogsType != 5 && dialogsType != 6 && dialogsType != 11 && getRecentItemsCount() > 0; + } + + public boolean isSearchWas() { + return searchWas; } public boolean isRecentSearchDisplayed() { - return needMessagesSearch != 2 && !searchWas && (!recentSearchObjects.isEmpty() || !MediaDataController.getInstance(currentAccount).hints.isEmpty()) && dialogsType != 2 && dialogsType != 4 && dialogsType != 5 && dialogsType != 6 && dialogsType != 11; + return needMessagesSearch != 2 && hasRecentSearch(); } public void loadRecentSearch() { @@ -522,12 +545,36 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } public void clearRecentSearch() { - recentSearchObjectsById = new LongSparseArray<>(); - recentSearchObjects = new ArrayList<>(); + StringBuilder queryFilter = null; + if (searchWas) { + while (filteredRecentSearchObjects.size() > 0) { + RecentSearchObject obj = filteredRecentSearchObjects.remove(0); + recentSearchObjects.remove(obj); + recentSearchObjectsById.remove(obj.did); + if (queryFilter == null) { + queryFilter = new StringBuilder("did IN ("); + queryFilter.append(obj.did); + } else { + queryFilter.append(", ").append(obj.did); + } + } + if (queryFilter == null) { + queryFilter = new StringBuilder("1"); + } else { + queryFilter.append(")"); + } + } else { + filteredRecentSearchObjects.clear(); + recentSearchObjects.clear(); + recentSearchObjectsById.clear(); + queryFilter = new StringBuilder("1"); + } + final StringBuilder finalQueryFilter = queryFilter; notifyDataSetChanged(); MessagesStorage.getInstance(currentAccount).getStorageQueue().postRunnable(() -> { try { - MessagesStorage.getInstance(currentAccount).getDatabase().executeFast("DELETE FROM search_recent WHERE 1").stepThis().dispose(); + finalQueryFilter.insert(0, "DELETE FROM search_recent WHERE "); + MessagesStorage.getInstance(currentAccount).getDatabase().executeFast(finalQueryFilter.toString()).stepThis().dispose(); } catch (Exception e) { FileLog.e(e); } @@ -615,6 +662,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { searchResultMessages.clear(); } searchWas = true; + final int recentCount = filteredRecentSearchObjects.size(); for (int a = 0; a < result.size(); a++) { Object obj = result.get(a); long dialogId = 0; @@ -652,11 +700,25 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { }); } } + + boolean foundInRecent = false; + for (int j = 0; j < recentCount; ++j) { + RecentSearchObject o = filteredRecentSearchObjects.get(j); + if (o != null && o.did == dialogId) { + foundInRecent = true; + break; + } + } + if (foundInRecent) { + result.remove(a); + names.remove(a); + a--; + } } MessagesController.getInstance(currentAccount).putUsers(encUsers, true); searchResult = result; searchResultNames = names; - searchAdapterHelper.mergeResults(searchResult); + searchAdapterHelper.mergeResults(searchResult, filteredRecentSearchObjects); notifyDataSetChanged(); if (delegate != null) { delegate.searchStateChanged(waitingResponseCount > 0, true); @@ -698,11 +760,12 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { query = null; } if (TextUtils.isEmpty(query)) { + filteredRecentQuery = null; searchAdapterHelper.unloadRecentHashtags(); searchResult.clear(); searchResultNames.clear(); searchResultHashtags.clear(); - searchAdapterHelper.mergeResults(null); + searchAdapterHelper.mergeResults(null, null); searchAdapterHelper.queryServerSearch(null, true, true, dialogsType != 11, dialogsType != 11, dialogsType == 2 || dialogsType == 11, 0, dialogsType == 0, 0, 0); searchWas = false; lastSearchId = 0; @@ -720,6 +783,8 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { filtersDelegate.updateFiltersView(false, null, localTipDates, localTipArchive); } } else { + filterRecent(query); + searchAdapterHelper.mergeResults(searchResult, filteredRecentSearchObjects); if (needMessagesSearch != 2 && (query.startsWith("#") && query.length() == 1)) { messagesSearchEndReached = true; if (searchAdapterHelper.loadRecentHashtags()) { @@ -773,21 +838,36 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } } + public int getRecentItemsCount() { + ArrayList recent = searchWas ? filteredRecentSearchObjects : recentSearchObjects; + return (!recent.isEmpty() ? recent.size() + 1 : 0) + (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0); + } + + public int getRecentResultsCount() { + ArrayList recent = searchWas ? filteredRecentSearchObjects : recentSearchObjects; + return recent != null ? recent.size() : 0; + } + @Override public int getItemCount() { if (waitingResponseCount == 3) { return 0; } - if (isRecentSearchDisplayed()) { - return (!recentSearchObjects.isEmpty() ? recentSearchObjects.size() + 1 : 0) + (!MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0); - } int count = 0; if (!searchResultHashtags.isEmpty()) { count += searchResultHashtags.size() + 1; return count; } - count += searchResult.size(); + if (isRecentSearchDisplayed()) { + count += getRecentItemsCount(); + if (!searchWas) { + return count; + } + } + int resultsCount = searchResult.size(); + count += resultsCount; int localServerCount = searchAdapterHelper.getLocalServerSearch().size(); + count += localServerCount; int globalCount = searchAdapterHelper.getGlobalSearch().size(); if (globalCount > 3 && globalSearchCollapsed) { globalCount = 3; @@ -797,7 +877,9 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { phoneCount = 3; } int messagesCount = searchResultMessages.size(); - count += localServerCount; + if (resultsCount + localServerCount > 0 && getRecentItemsCount() > 0) { + count++; + } if (globalCount != 0) { count += globalCount + 1; } @@ -811,10 +893,18 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } public Object getItem(int i) { + if (!searchResultHashtags.isEmpty()) { + if (i > 0) { + return searchResultHashtags.get(i - 1); + } else { + return null; + } + } if (isRecentSearchDisplayed()) { - int offset = (!MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0); - if (i > offset && i - 1 - offset < recentSearchObjects.size()) { - TLObject object = recentSearchObjects.get(i - 1 - offset).object; + int offset = (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0); + ArrayList recent = searchWas ? filteredRecentSearchObjects : recentSearchObjects; + if (i > offset && i - 1 - offset < recent.size()) { + TLObject object = recent.get(i - 1 - offset).object; if (object instanceof TLRPC.User) { TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(((TLRPC.User) object).id); if (user != null) { @@ -828,14 +918,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } return object; } else { - return null; - } - } - if (!searchResultHashtags.isEmpty()) { - if (i > 0) { - return searchResultHashtags.get(i - 1); - } else { - return null; + i -= getRecentItemsCount(); } } ArrayList globalSearch = searchAdapterHelper.getGlobalSearch(); @@ -843,6 +926,12 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { ArrayList phoneSearch = searchAdapterHelper.getPhoneSearch(); int localCount = searchResult.size(); int localServerCount = localServerSearch.size(); + if (localCount + localServerCount > 0 && getRecentItemsCount() > 0) { + if (i == 0) { + return null; + } + i--; + } int phoneCount = phoneSearch.size(); if (phoneCount > 3 && phoneCollapsed) { phoneCount = 3; @@ -854,37 +943,42 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { int messagesCount = searchResultMessages.isEmpty() ? 0 : searchResultMessages.size() + 1; if (i >= 0 && i < localCount) { return searchResult.get(i); - } else { - i -= localCount; - if (i >= 0 && i < localServerCount) { - return localServerSearch.get(i); - } else { - i -= localServerCount; - if (i >= 0 && i < phoneCount) { - return phoneSearch.get(i); - } else { - i -= phoneCount; - if (i > 0 && i < globalCount) { - return globalSearch.get(i - 1); - } else { - i -= globalCount; - if (i > 0 && i < messagesCount) { - return searchResultMessages.get(i - 1); - } - } - } - } + } + i -= localCount; + if (i >= 0 && i < localServerCount) { + return localServerSearch.get(i); + } + i -= localServerCount; + if (i >= 0 && i < phoneCount) { + return phoneSearch.get(i); + } + i -= phoneCount; + if (i > 0 && i < globalCount) { + return globalSearch.get(i - 1); + } + i -= globalCount; + if (i > 0 && i < messagesCount) { + return searchResultMessages.get(i - 1); } return null; } public boolean isGlobalSearch(int i) { - if (isRecentSearchDisplayed()) { + if (!searchWas) { return false; } if (!searchResultHashtags.isEmpty()) { return false; } + if (isRecentSearchDisplayed()) { + int offset = (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0); + ArrayList recent = searchWas ? filteredRecentSearchObjects : recentSearchObjects; + if (i > offset && i - 1 - offset < recent.size()) { + return false; + } else { + i -= getRecentItemsCount(); + } + } ArrayList globalSearch = searchAdapterHelper.getGlobalSearch(); ArrayList localServerSearch = searchAdapterHelper.getLocalServerSearch(); int localCount = searchResult.size(); @@ -901,26 +995,22 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { if (i >= 0 && i < localCount) { return false; - } else { - i -= localCount; - if (i >= 0 && i < localServerCount) { - return false; - } else { - i -= localServerCount; - if (i > 0 && i < phoneCount) { - return false; - } else { - i -= phoneCount; - if (i > 0 && i < globalCount) { - return true; - } else { - i -= globalCount; - if (i > 0 && i < messagesCount) { - return false; - } - } - } - } + } + i -= localCount; + if (i >= 0 && i < localServerCount) { + return false; + } + i -= localServerCount; + if (i > 0 && i < phoneCount) { + return false; + } + i -= phoneCount; + if (i > 0 && i < globalCount) { + return true; + } + i -= globalCount; + if (i > 0 && i < messagesCount) { + return false; } return false; } @@ -1014,6 +1104,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { switch (holder.getItemViewType()) { case VIEW_TYPE_PROFILE_CELL: { ProfileSearchCell cell = (ProfileSearchCell) holder.itemView; + cell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); long oldDialogId = cell.getDialogId(); TLRPC.User user = null; @@ -1040,75 +1131,85 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } if (isRecentSearchDisplayed()) { - isRecent = true; - cell.useSeparator = position != getItemCount() - 1; - } else { - ArrayList globalSearch = searchAdapterHelper.getGlobalSearch(); - ArrayList phoneSearch = searchAdapterHelper.getPhoneSearch(); - int localCount = searchResult.size(); - int localServerCount = searchAdapterHelper.getLocalServerSearch().size(); - int phoneCount = phoneSearch.size(); - if (phoneCount > 3 && phoneCollapsed) { - phoneCount = 3; + if (position < getRecentItemsCount()) { + cell.useSeparator = position != getRecentItemsCount() - 1; + isRecent = true; } - int phoneCount2 = phoneCount; - if (phoneCount > 0 && phoneSearch.get(phoneCount - 1) instanceof String) { - phoneCount2 -= 2; - } - int globalCount = globalSearch.isEmpty() ? 0 : globalSearch.size() + 1; - if (globalCount > 4 && globalSearchCollapsed) { - globalCount = 4; - } - cell.useSeparator = (position != getItemCount() - 1 && position != localCount + phoneCount2 + localServerCount - 1 && position != localCount + globalCount + phoneCount + localServerCount - 1); - if (position < searchResult.size()) { - name = searchResultNames.get(position); - if (name != null && user != null && user.username != null && user.username.length() > 0) { - if (name.toString().startsWith("@" + user.username)) { - username = name; - name = null; - } - } - } else { - String foundUserName = searchAdapterHelper.getLastFoundUsername(); - if (!TextUtils.isEmpty(foundUserName)) { - String nameSearch = null; - int index; - if (user != null) { - nameSearch = ContactsController.formatName(user.first_name, user.last_name); - } else if (chat != null) { - nameSearch = chat.title; - } - if (nameSearch != null && (index = AndroidUtilities.indexOfIgnoreCase(nameSearch, foundUserName)) != -1) { - SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(nameSearch); - spannableStringBuilder.setSpan(new ForegroundColorSpanThemable(Theme.key_windowBackgroundWhiteBlueText4), index, index + foundUserName.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - name = spannableStringBuilder; - } else if (un != null) { - if (foundUserName.startsWith("@")) { - foundUserName = foundUserName.substring(1); - } - try { - SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); - spannableStringBuilder.append("@"); - spannableStringBuilder.append(un); - if ((index = AndroidUtilities.indexOfIgnoreCase(un, foundUserName)) != -1) { - int len = foundUserName.length(); - if (index == 0) { - len++; - } else { - index++; - } - spannableStringBuilder.setSpan(new ForegroundColorSpanThemable(Theme.key_windowBackgroundWhiteBlueText4), index, index + len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - } - username = spannableStringBuilder; - } catch (Exception e) { - username = un; - FileLog.e(e); - } - } - } - } - cell.setChecked(false, false); + position -= getRecentItemsCount(); } + ArrayList globalSearch = searchAdapterHelper.getGlobalSearch(); + ArrayList phoneSearch = searchAdapterHelper.getPhoneSearch(); + int localCount = searchResult.size(); + int localServerCount = searchAdapterHelper.getLocalServerSearch().size(); + if (localCount + localServerCount > 0 && getRecentItemsCount() > 0) { + position--; + } + int phoneCount = phoneSearch.size(); + if (phoneCount > 3 && phoneCollapsed) { + phoneCount = 3; + } + int phoneCount2 = phoneCount; + if (phoneCount > 0 && phoneSearch.get(phoneCount - 1) instanceof String) { + phoneCount2 -= 2; + } + int globalCount = globalSearch.isEmpty() ? 0 : globalSearch.size() + 1; + if (globalCount > 4 && globalSearchCollapsed) { + globalCount = 4; + } + if (!isRecent) { + cell.useSeparator = (position != getItemCount() - getRecentItemsCount() - 1 && position != localCount + phoneCount2 + localServerCount - 1 && position != localCount + globalCount + phoneCount + localServerCount - 1); + } + if (position >= 0 && position < searchResult.size() && user == null) { + name = searchResultNames.get(position); + if (name != null && user != null && user.username != null && user.username.length() > 0) { + if (name.toString().startsWith("@" + user.username)) { + username = name; + name = null; + } + } + } + if (username == null) { + String foundUserName = isRecent ? filteredRecentQuery : searchAdapterHelper.getLastFoundUsername(); + if (!TextUtils.isEmpty(foundUserName)) { + String nameSearch = null; + int index; + if (user != null) { + nameSearch = ContactsController.formatName(user.first_name, user.last_name); + } else if (chat != null) { + nameSearch = chat.title; + } + if (nameSearch != null && (index = AndroidUtilities.indexOfIgnoreCase(nameSearch, foundUserName)) != -1) { + SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(nameSearch); + spannableStringBuilder.setSpan(new ForegroundColorSpanThemable(Theme.key_windowBackgroundWhiteBlueText4), index, index + foundUserName.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + name = spannableStringBuilder; + } + if (un != null && user == null) { + if (foundUserName.startsWith("@")) { + foundUserName = foundUserName.substring(1); + } + try { + SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); + spannableStringBuilder.append("@"); + spannableStringBuilder.append(un); + boolean hasMatch = (index = AndroidUtilities.indexOfIgnoreCase(un, foundUserName)) != -1; + if (hasMatch) { + int len = foundUserName.length(); + if (index == 0) { + len++; + } else { + index++; + } + spannableStringBuilder.setSpan(new ForegroundColorSpanThemable(Theme.key_windowBackgroundWhiteBlueText4), index, index + len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + username = spannableStringBuilder; + } catch (Exception e) { + username = un; + FileLog.e(e); + } + } + } + } + cell.setChecked(false, false); boolean savedMessages = false; if (user != null && user.id == selfUserId) { name = LocaleController.getString("SavedMessages", R.string.SavedMessages); @@ -1130,30 +1231,47 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { username = membersString; } } - cell.setData(user != null ? user : chat, encryptedChat, name, username, isRecent, savedMessages); + cell.setData(user != null ? user : chat, encryptedChat, name, username, true, savedMessages); cell.setChecked(delegate.isSelected(cell.getDialogId()), oldDialogId == cell.getDialogId()); break; } case VIEW_TYPE_GRAY_SECTION: { - GraySectionCell cell = (GraySectionCell) holder.itemView; - if (isRecentSearchDisplayed()) { - int offset = (!MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0); - if (position < offset) { - cell.setText(LocaleController.getString("ChatHints", R.string.ChatHints)); - } else { - cell.setText(LocaleController.getString("Recent", R.string.Recent), LocaleController.getString("ClearButton", R.string.ClearButton), v -> { - if (delegate != null) { - delegate.needClearList(); - } - }); - } - } else if (!searchResultHashtags.isEmpty()) { + final GraySectionCell cell = (GraySectionCell) holder.itemView; + if (!searchResultHashtags.isEmpty()) { cell.setText(LocaleController.getString("Hashtags", R.string.Hashtags), LocaleController.getString("ClearButton", R.string.ClearButton), v -> { if (delegate != null) { delegate.needClearList(); } }); } else { + int rawPosition = position; + if (isRecentSearchDisplayed()) { + int offset = (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0); + if (position < offset) { + cell.setText(LocaleController.getString("ChatHints", R.string.ChatHints)); + return; + } else if (position == offset) { + if (!searchWas) { + cell.setText(LocaleController.getString("Recent", R.string.Recent), LocaleController.getString("ClearButton", R.string.ClearButton), v -> { + if (delegate != null) { + delegate.needClearList(); + } + }); + } else { + cell.setText(LocaleController.getString("Recent", R.string.Recent), LocaleController.getString("Clear", R.string.Clear), v -> { + if (delegate != null) { + delegate.needClearList(); + } + }); + } + return; + } else if (position == getRecentItemsCount()) { + cell.setText(LocaleController.getString("SearchAllChatsShort", R.string.SearchAllChatsShort)); + return; + } else { + position -= getRecentItemsCount(); + } + } ArrayList globalSearch = searchAdapterHelper.getGlobalSearch(); int localCount = searchResult.size(); int localServerCount = searchAdapterHelper.getLocalServerSearch().size(); @@ -1176,6 +1294,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { showMore = phoneCollapsed; onClick = () -> { phoneCollapsed = !phoneCollapsed; + cell.setRightText(phoneCollapsed ? LocaleController.getString("ShowMore", R.string.ShowMore) : LocaleController.getString("ShowLess", R.string.ShowLess)); notifyDataSetChanged(); }; } @@ -1186,8 +1305,61 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { if (searchAdapterHelper.getGlobalSearch().size() > 3) { showMore = globalSearchCollapsed; onClick = () -> { + final long now = SystemClock.elapsedRealtime(); + if (now - lastShowMoreUpdate < 300) { + return; + } + lastShowMoreUpdate = now; + + int totalGlobalCount = globalSearch.isEmpty() ? 0 : globalSearch.size(); + boolean disableRemoveAnimation = getItemCount() > rawPosition + Math.min(totalGlobalCount, globalSearchCollapsed ? 4 : Integer.MAX_VALUE) + 1; + if (itemAnimator != null) { + itemAnimator.setAddDuration(disableRemoveAnimation ? 45 : 200); + itemAnimator.setRemoveDuration(disableRemoveAnimation ? 80 : 200); + itemAnimator.setRemoveDelay(disableRemoveAnimation ? 270 : 0); + } globalSearchCollapsed = !globalSearchCollapsed; - notifyDataSetChanged(); + cell.setRightText(globalSearchCollapsed ? LocaleController.getString("ShowMore", R.string.ShowMore) : LocaleController.getString("ShowLess", R.string.ShowLess), globalSearchCollapsed); + showMoreHeader = null; + View parent = (View) cell.getParent(); + if (parent instanceof RecyclerView) { + RecyclerView listView = (RecyclerView) parent; + final int nextGraySectionPosition = !globalSearchCollapsed ? rawPosition + 4 : rawPosition + totalGlobalCount + 1; + for (int i = 0; i < listView.getChildCount(); ++i) { + View child = listView.getChildAt(i); + if (listView.getChildAdapterPosition(child) == nextGraySectionPosition) { + showMoreHeader = child; + break; + } + } + } + if (!globalSearchCollapsed) { + notifyItemChanged(rawPosition + 3); + notifyItemRangeInserted(rawPosition + 4, (totalGlobalCount - 3)); + } else { + notifyItemRangeRemoved(rawPosition + 4, (totalGlobalCount - 3)); + if (disableRemoveAnimation) { + AndroidUtilities.runOnUIThread(() -> notifyItemChanged(rawPosition + 3), 350); + } else { + notifyItemChanged(rawPosition + 3); + } + } + + if (cancelShowMoreAnimation != null) { + AndroidUtilities.cancelRunOnUIThread(cancelShowMoreAnimation); + } + if (disableRemoveAnimation) { + showMoreAnimation = true; + AndroidUtilities.runOnUIThread(cancelShowMoreAnimation = () -> { + showMoreAnimation = false; + showMoreHeader = null; + if (parent != null) { + parent.invalidate(); + } + }, 400); + } else { + showMoreAnimation = false; + } }; } } else { @@ -1206,6 +1378,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } case VIEW_TYPE_DIALOG_CELL: { DialogCell cell = (DialogCell) holder.itemView; + cell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); cell.useSeparator = (position != getItemCount() - 1); MessageObject messageObject = (MessageObject) getItem(position); cell.setDialog(messageObject.getDialogId(), messageObject, messageObject.messageOwner.date, false); @@ -1213,6 +1386,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } case VIEW_TYPE_HASHTAG_CELL: { HashtagSearchCell cell = (HashtagSearchCell) holder.itemView; + cell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); cell.setText(searchResultHashtags.get(position - 1)); cell.setNeedDivider(position != searchResultHashtags.size()); break; @@ -1237,22 +1411,31 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { @Override public int getItemViewType(int i) { + if (!searchResultHashtags.isEmpty()) { + return i == 0 ? VIEW_TYPE_GRAY_SECTION : VIEW_TYPE_HASHTAG_CELL; + } if (isRecentSearchDisplayed()) { - int offset = (!MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0); + int offset = (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0); if (i < offset) { return VIEW_TYPE_CATEGORY_LIST; } if (i == offset) { return VIEW_TYPE_GRAY_SECTION; } - return VIEW_TYPE_PROFILE_CELL; - } - if (!searchResultHashtags.isEmpty()) { - return i == 0 ? VIEW_TYPE_GRAY_SECTION : VIEW_TYPE_HASHTAG_CELL; + if (i < getRecentItemsCount()) { + return VIEW_TYPE_PROFILE_CELL; + } + i -= getRecentItemsCount(); } ArrayList globalSearch = searchAdapterHelper.getGlobalSearch(); int localCount = searchResult.size(); int localServerCount = searchAdapterHelper.getLocalServerSearch().size(); + if (localCount + localServerCount > 0 && getRecentItemsCount() > 0) { + if (i == 0) { + return VIEW_TYPE_GRAY_SECTION; + } + i--; + } int phoneCount = searchAdapterHelper.getPhoneSearch().size(); if (phoneCount > 3 && phoneCollapsed) { phoneCount = 3; @@ -1265,43 +1448,39 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { if (i >= 0 && i < localCount) { return VIEW_TYPE_PROFILE_CELL; - } else { - i -= localCount; - if (i >= 0 && i < localServerCount) { - return VIEW_TYPE_PROFILE_CELL; - } else { - i -= localServerCount; - if (i >= 0 && i < phoneCount) { - Object object = getItem(i); - if (object instanceof String) { - String str = (String) object; - if ("section".equals(str)) { - return VIEW_TYPE_GRAY_SECTION; - } else { - return VIEW_TYPE_ADD_BY_PHONE; - } - } - return VIEW_TYPE_PROFILE_CELL; + } + i -= localCount; + if (i >= 0 && i < localServerCount) { + return VIEW_TYPE_PROFILE_CELL; + } + i -= localServerCount; + if (i >= 0 && i < phoneCount) { + Object object = getItem(i); + if (object instanceof String) { + String str = (String) object; + if ("section".equals(str)) { + return VIEW_TYPE_GRAY_SECTION; } else { - i -= phoneCount; - if (i >= 0 && i < globalCount) { - if (i == 0) { - return VIEW_TYPE_GRAY_SECTION; - } else { - return VIEW_TYPE_PROFILE_CELL; - } - } else { - i -= globalCount; - if (i >= 0 && i < messagesCount) { - if (i == 0) { - return VIEW_TYPE_GRAY_SECTION; - } else { - return VIEW_TYPE_DIALOG_CELL; - } - } - } + return VIEW_TYPE_ADD_BY_PHONE; } } + return VIEW_TYPE_PROFILE_CELL; + } + i -= phoneCount; + if (i >= 0 && i < globalCount) { + if (i == 0) { + return VIEW_TYPE_GRAY_SECTION; + } else { + return VIEW_TYPE_PROFILE_CELL; + } + } + i -= globalCount; + if (i >= 0 && i < messagesCount) { + if (i == 0) { + return VIEW_TYPE_GRAY_SECTION; + } else { + return VIEW_TYPE_DIALOG_CELL; + } } return VIEW_TYPE_LOADING; } @@ -1317,6 +1496,54 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { return currentItemCount; } + public void filterRecent(String query) { + filteredRecentQuery = query; + filteredRecentSearchObjects.clear(); + if (TextUtils.isEmpty(query)) { + return; + } + String lowerCasedQuery = query.toLowerCase(); + final int count = recentSearchObjects.size(); + for (int i = 0; i < count; ++i) { + RecentSearchObject obj = recentSearchObjects.get(i); + if (obj == null || obj.object == null) { + continue; + } + String title = null, username = null; + if (obj.object instanceof TLRPC.Chat) { + title = ((TLRPC.Chat) obj.object).title; + username = ((TLRPC.Chat) obj.object).username; + } else if (obj.object instanceof TLRPC.User) { + title = UserObject.getUserName((TLRPC.User) obj.object); + username = ((TLRPC.User) obj.object).username; + } else if (obj.object instanceof TLRPC.ChatInvite) { + title = ((TLRPC.ChatInvite) obj.object).title; + } + if (title != null && wordStartsWith(title.toLowerCase(), lowerCasedQuery) || + username != null && wordStartsWith(username.toLowerCase(), lowerCasedQuery)) { + filteredRecentSearchObjects.add(obj); + } + if (filteredRecentSearchObjects.size() >= 5) { + break; + } + } + } + + private boolean wordStartsWith(String loweredTitle, String loweredQuery) { + if (loweredQuery == null || loweredTitle == null) { + return false; + } + String[] words = loweredTitle.toLowerCase().split(" "); + boolean found = false; + for (int j = 0; j < words.length; ++j) { + if (words[j] != null && (words[j].startsWith(loweredQuery) || loweredQuery.startsWith(words[j]))) { + found = true; + break; + } + } + return found; + } + public interface OnRecentSearchLoaded { void setRecentSearch(ArrayList arrayList, LongSparseArray hashMap); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DrawerLayoutAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DrawerLayoutAdapter.java index 741297e35..7a9d16324 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DrawerLayoutAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DrawerLayoutAdapter.java @@ -13,29 +13,28 @@ import android.content.pm.PackageManager; import android.view.View; import android.view.ViewGroup; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; -import org.telegram.ui.ActionBar.ActionBarLayout; import org.telegram.ui.ActionBar.DrawerLayoutContainer; import org.telegram.ui.ActionBar.Theme; -import org.telegram.ui.Cells.DrawerActionCell; import org.telegram.ui.Cells.DividerCell; +import org.telegram.ui.Cells.DrawerActionCell; import org.telegram.ui.Cells.DrawerAddCell; +import org.telegram.ui.Cells.DrawerProfileCell; import org.telegram.ui.Cells.DrawerUserCell; import org.telegram.ui.Cells.EmptyCell; -import org.telegram.ui.Cells.DrawerProfileCell; import org.telegram.ui.Components.RecyclerListView; import org.telegram.ui.Components.SideMenultItemAnimator; import java.util.ArrayList; import java.util.Collections; -import androidx.recyclerview.widget.RecyclerView; - public class DrawerLayoutAdapter extends RecyclerListView.SelectionAdapter { private Context mContext; @@ -195,7 +194,7 @@ public class DrawerLayoutAdapter extends RecyclerListView.SelectionAdapter { } i -= getAccountRowsCount(); } - if (items.get(i) == null) { + if (i < 0 || i >= items.size() || items.get(i) == null) { return 2; } return 3; @@ -252,49 +251,49 @@ public class DrawerLayoutAdapter extends RecyclerListView.SelectionAdapter { int helpIcon; int peopleNearbyIcon; if (eventType == 0) { - newGroupIcon = R.drawable.menu_groups_ny; - //newSecretIcon = R.drawable.menu_secret_ny; - //newChannelIcon = R.drawable.menu_channel_ny; - contactsIcon = R.drawable.menu_contacts_ny; - callsIcon = R.drawable.menu_calls_ny; - savedIcon = R.drawable.menu_bookmarks_ny; - settingsIcon = R.drawable.menu_settings_ny; - inviteIcon = R.drawable.menu_invite_ny; - helpIcon = R.drawable.menu_help_ny; - peopleNearbyIcon = R.drawable.menu_nearby_ny; + newGroupIcon = R.drawable.msg_groups_ny; + //newSecretIcon = R.drawable.msg_secret_ny; + //newChannelIcon = R.drawable.msg_channel_ny; + contactsIcon = R.drawable.msg_contacts_ny; + callsIcon = R.drawable.msg_calls_ny; + savedIcon = R.drawable.msg_saved_ny; + settingsIcon = R.drawable.msg_settings_ny; + inviteIcon = R.drawable.msg_invite_ny; + helpIcon = R.drawable.msg_help_ny; + peopleNearbyIcon = R.drawable.msg_nearby_ny; } else if (eventType == 1) { - newGroupIcon = R.drawable.menu_groups_14; - //newSecretIcon = R.drawable.menu_secret_14; - //newChannelIcon = R.drawable.menu_broadcast_14; - contactsIcon = R.drawable.menu_contacts_14; - callsIcon = R.drawable.menu_calls_14; - savedIcon = R.drawable.menu_bookmarks_14; - settingsIcon = R.drawable.menu_settings_14; - inviteIcon = R.drawable.menu_secret_ny; - helpIcon = R.drawable.menu_help; - peopleNearbyIcon = R.drawable.menu_secret_14; + newGroupIcon = R.drawable.msg_groups_14; + //newSecretIcon = R.drawable.msg_secret_14; + //newChannelIcon = R.drawable.msg_channel_14; + contactsIcon = R.drawable.msg_contacts_14; + callsIcon = R.drawable.msg_calls_14; + savedIcon = R.drawable.msg_saved_14; + settingsIcon = R.drawable.msg_settings_14; + inviteIcon = R.drawable.msg_secret_ny; + helpIcon = R.drawable.msg_help; + peopleNearbyIcon = R.drawable.msg_secret_14; } else if (eventType == 2) { - newGroupIcon = R.drawable.menu_groups_hw; - //newSecretIcon = R.drawable.menu_secret_hw; - //newChannelIcon = R.drawable.menu_broadcast_hw; - contactsIcon = R.drawable.menu_contacts_hw; - callsIcon = R.drawable.menu_calls_hw; - savedIcon = R.drawable.menu_bookmarks_hw; - settingsIcon = R.drawable.menu_settings_hw; - inviteIcon = R.drawable.menu_invite_hw; - helpIcon = R.drawable.menu_help_hw; - peopleNearbyIcon = R.drawable.menu_secret_hw; + newGroupIcon = R.drawable.msg_groups_hw; + //newSecretIcon = R.drawable.msg_secret_hw; + //newChannelIcon = R.drawable.msg_channel_hw; + contactsIcon = R.drawable.msg_contacts_hw; + callsIcon = R.drawable.msg_calls_hw; + savedIcon = R.drawable.msg_saved_hw; + settingsIcon = R.drawable.msg_settings_hw; + inviteIcon = R.drawable.msg_invite_hw; + helpIcon = R.drawable.msg_help_hw; + peopleNearbyIcon = R.drawable.msg_secret_hw; } else { - newGroupIcon = R.drawable.menu_groups; - //newSecretIcon = R.drawable.menu_secret; - //newChannelIcon = R.drawable.menu_broadcast; - contactsIcon = R.drawable.menu_contacts; - callsIcon = R.drawable.menu_calls; - savedIcon = R.drawable.menu_saved; - settingsIcon = R.drawable.menu_settings; - inviteIcon = R.drawable.menu_invite; - helpIcon = R.drawable.menu_help; - peopleNearbyIcon = R.drawable.menu_nearby; + newGroupIcon = R.drawable.msg_groups; + //newSecretIcon = R.drawable.msg_secret; + //newChannelIcon = R.drawable.msg_channel; + contactsIcon = R.drawable.msg_contacts; + callsIcon = R.drawable.msg_calls; + savedIcon = R.drawable.msg_saved; + settingsIcon = R.drawable.msg_settings_old; + inviteIcon = R.drawable.msg_invite; + helpIcon = R.drawable.msg_help; + peopleNearbyIcon = R.drawable.msg_nearby; } items.add(new Item(2, LocaleController.getString("NewGroup", R.string.NewGroup), newGroupIcon)); //items.add(new Item(3, LocaleController.getString("NewSecretChat", R.string.NewSecretChat), newSecretIcon)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/FiltersView.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/FiltersView.java index e89ac3c41..a108fc04f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/FiltersView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/FiltersView.java @@ -69,11 +69,11 @@ public class FiltersView extends RecyclerListView { public final static int FILTER_INDEX_VOICE = 4; public final static MediaFilterData[] filters = new MediaFilterData[]{ - new MediaFilterData(R.drawable.search_media, R.drawable.search_media_filled, LocaleController.getString("SharedMediaTab2", R.string.SharedMediaTab2), new TLRPC.TL_inputMessagesFilterPhotoVideo(), FILTER_TYPE_MEDIA), - new MediaFilterData(R.drawable.search_links, R.drawable.search_links_filled, LocaleController.getString("SharedLinksTab2", R.string.SharedLinksTab2), new TLRPC.TL_inputMessagesFilterUrl(), FILTER_TYPE_LINKS), - new MediaFilterData(R.drawable.search_files, R.drawable.search_files_filled, LocaleController.getString("SharedFilesTab2", R.string.SharedFilesTab2), new TLRPC.TL_inputMessagesFilterDocument(), FILTER_TYPE_FILES), - new MediaFilterData(R.drawable.search_music, R.drawable.search_music_filled, LocaleController.getString("SharedMusicTab2", R.string.SharedMusicTab2), new TLRPC.TL_inputMessagesFilterMusic(), FILTER_TYPE_MUSIC), - new MediaFilterData(R.drawable.search_voice, R.drawable.search_voice_filled, LocaleController.getString("SharedVoiceTab2", R.string.SharedVoiceTab2), new TLRPC.TL_inputMessagesFilterRoundVoice(), FILTER_TYPE_VOICE) + new MediaFilterData(R.drawable.search_media_filled, LocaleController.getString("SharedMediaTab2", R.string.SharedMediaTab2), new TLRPC.TL_inputMessagesFilterPhotoVideo(), FILTER_TYPE_MEDIA), + new MediaFilterData(R.drawable.search_links_filled, LocaleController.getString("SharedLinksTab2", R.string.SharedLinksTab2), new TLRPC.TL_inputMessagesFilterUrl(), FILTER_TYPE_LINKS), + new MediaFilterData(R.drawable.search_files_filled, LocaleController.getString("SharedFilesTab2", R.string.SharedFilesTab2), new TLRPC.TL_inputMessagesFilterDocument(), FILTER_TYPE_FILES), + new MediaFilterData(R.drawable.search_music_filled, LocaleController.getString("SharedMusicTab2", R.string.SharedMusicTab2), new TLRPC.TL_inputMessagesFilterMusic(), FILTER_TYPE_MUSIC), + new MediaFilterData(R.drawable.search_voice_filled, LocaleController.getString("SharedVoiceTab2", R.string.SharedVoiceTab2), new TLRPC.TL_inputMessagesFilterRoundVoice(), FILTER_TYPE_VOICE) }; private ArrayList usersFilters = new ArrayList<>(); @@ -235,7 +235,7 @@ public class FiltersView extends RecyclerListView { } else { title = ContactsController.formatName(user.first_name, user.last_name, 10); } - MediaFilterData data = new MediaFilterData(R.drawable.search_users, R.drawable.search_users_filled, title, null, FILTER_TYPE_CHAT); + MediaFilterData data = new MediaFilterData(R.drawable.search_users_filled, title, null, FILTER_TYPE_CHAT); data.setUser(user); usersFilters.add(data); } else if (object instanceof TLRPC.Chat) { @@ -244,7 +244,7 @@ public class FiltersView extends RecyclerListView { if (chat.title.length() > 12) { title = String.format("%s...", title.substring(0, 10)); } - MediaFilterData data = new MediaFilterData(R.drawable.search_users, R.drawable.search_users_filled, title, null, FILTER_TYPE_CHAT); + MediaFilterData data = new MediaFilterData(R.drawable.search_users_filled, title, null, FILTER_TYPE_CHAT); data.setUser(chat); usersFilters.add(data); } @@ -253,13 +253,13 @@ public class FiltersView extends RecyclerListView { if (dates != null) { for (int i = 0; i < dates.size(); i++) { DateData dateData = dates.get(i); - MediaFilterData data = new MediaFilterData(R.drawable.search_date, R.drawable.search_date_filled, dateData.title, null, FILTER_TYPE_DATE); + MediaFilterData data = new MediaFilterData(R.drawable.search_date_filled, dateData.title, null, FILTER_TYPE_DATE); data.setDate(dateData); usersFilters.add(data); } } if (archive) { - FiltersView.MediaFilterData filterData = new FiltersView.MediaFilterData(R.drawable.chats_archive, R.drawable.chats_archive, LocaleController.getString("ArchiveSearchFilter", R.string.ArchiveSearchFilter), null, FiltersView.FILTER_TYPE_ARCHIVE); + FiltersView.MediaFilterData filterData = new FiltersView.MediaFilterData(R.drawable.chats_archive, LocaleController.getString("ArchiveSearchFilter", R.string.ArchiveSearchFilter), null, FiltersView.FILTER_TYPE_ARCHIVE); usersFilters.add(filterData); } if (getAdapter() != null) { @@ -787,7 +787,6 @@ public class FiltersView extends RecyclerListView { public static class MediaFilterData { - public final int iconRes; public final int iconResFilled; public final String title; public final int filterType; @@ -796,8 +795,7 @@ public class FiltersView extends RecyclerListView { public DateData dateData; public boolean removable = true; - public MediaFilterData(int iconRes, int iconResFilled, String title, TLRPC.MessagesFilter filter, int filterType) { - this.iconRes = iconRes; + public MediaFilterData(int iconResFilled, String title, TLRPC.MessagesFilter filter, int filterType) { this.iconResFilled = iconResFilled; this.title = title; this.filter = filter; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java index 76ce30416..5fedea661 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java @@ -20,6 +20,9 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import androidx.collection.LongSparseArray; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.ContactsController; @@ -27,8 +30,8 @@ import org.telegram.messenger.DialogObject; import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLoader; import org.telegram.messenger.ImageLocation; -import org.telegram.messenger.MediaDataController; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; @@ -58,19 +61,18 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; -import java.util.Objects; - -import androidx.collection.LongSparseArray; -import androidx.recyclerview.widget.RecyclerView; public class MentionsAdapter extends RecyclerListView.SelectionAdapter implements NotificationCenter.NotificationCenterDelegate { public interface MentionsAdapterDelegate { void needChangePanelVisibility(boolean show); + void onItemCountUpdate(int oldCount, int newCount); void onContextSearch(boolean searching); void onContextClick(TLRPC.BotInlineResult result); } + private final boolean USE_DIVIDERS = false; + private int currentAccount = UserConfig.selectedAccount; private Context mContext; private long dialog_id; @@ -167,7 +169,6 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement }; public MentionsAdapter(Context context, boolean darkTheme, long did, int threadMessageId, MentionsAdapterDelegate mentionsAdapterDelegate, Theme.ResourcesProvider resourcesProvider) { -// setHasStableIds(true); this.resourcesProvider = resourcesProvider; mContext = context; delegate = mentionsAdapterDelegate; @@ -201,7 +202,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement String fileName = (String) args[0]; stickersToLoad.remove(fileName); if (stickersToLoad.isEmpty()) { - delegate.needChangePanelVisibility(stickers != null && !stickers.isEmpty()); + delegate.needChangePanelVisibility(getItemCountInternal() > 0); } } } @@ -215,10 +216,14 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement if (stickersMap != null && stickersMap.containsKey(key)) { return; } + if (!UserConfig.getInstance(currentAccount).isPremium() && MessageObject.isPremiumSticker(document)) { + return; + } if (stickers == null) { stickers = new ArrayList<>(); stickersMap = new HashMap<>(); } + stickers.add(new StickerResult(document, parent)); stickersMap.put(key, document); if (mentionsStickersActionTracker != null) { @@ -236,9 +241,8 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement if (stickersMap != null && stickersMap.containsKey(key)) { continue; } - if (stickers == null) { - stickers = new ArrayList<>(); - stickersMap = new HashMap<>(); + if (!UserConfig.getInstance(currentAccount).isPremium() && MessageObject.isPremiumSticker(document)) { + continue; } for (int b = 0, size2 = document.attributes.size(); b < size2; b++) { TLRPC.DocumentAttribute attribute = document.attributes.get(b); @@ -247,46 +251,15 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement break; } } + if (stickers == null) { + stickers = new ArrayList<>(); + stickersMap = new HashMap<>(); + } stickers.add(new StickerResult(document, parent)); stickersMap.put(key, document); } } -// public long getItemIdInternal(int position) { -// try { -// if (stickers != null) { -// return stickers.get(position).sticker.id; -// } else if (foundContextBot != null && !inlineMediaEnabled) { -// return foundContextBot.id; -// } else if (searchResultBotContext != null) { -// if (position == 0 && searchResultBotContextSwitch != null) { -// return -1; -// } -// return searchResultBotContext.get(position - (searchResultBotContextSwitch != null ? 1 : 0)).query_id; -// } else if (searchResultUsernames != null) { -// TLObject obj = searchResultUsernames.get(position); -// if (obj instanceof TLRPC.User) { -// return ((TLRPC.User) obj).id; -// } else if (obj instanceof TLRPC.Chat) { -// return ((TLRPC.Chat) obj).id; -// } -// return obj.hashCode(); -// } else if (searchResultHashtags != null) { -// return searchResultHashtags.get(position).hashCode(); -// } else if (searchResultCommands != null) { -// return searchResultCommands.get(position).hashCode(); -// } else if (searchResultSuggestions != null) { -// return searchResultSuggestions.get(position).emoji.hashCode(); -// } -// } catch (Exception ignore) {} -// return 0; -// } -// -// @Override -// public long getItemId(int position) { -// return Objects.hash(getItemIdInternal(position), getItemCount() < 5 ? getItemCount() - position : position); -// } - private boolean checkStickerFilesExistAndDownload() { if (stickers == null) { return false; @@ -297,7 +270,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement StickerResult result = stickers.get(a); TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(result.sticker.thumbs, 90); if (thumb instanceof TLRPC.TL_photoSize || thumb instanceof TLRPC.TL_photoSizeProgressive) { - File f = FileLoader.getPathToAttach(thumb, "webp", true); + File f = FileLoader.getInstance(currentAccount).getPathToAttach(thumb, "webp", true); if (!f.exists()) { stickersToLoad.add(FileLoader.getAttachFileName(thumb, "webp")); FileLoader.getInstance(currentAccount).loadFile(ImageLocation.getForDocument(thumb, result.sticker), result.parent, "webp", 1, 1); @@ -336,7 +309,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement int newCount = stickers != null ? stickers.size() : 0; if (!visibleByStickersSearch && stickers != null && !stickers.isEmpty()) { checkStickerFilesExistAndDownload(); - delegate.needChangePanelVisibility(stickersToLoad.isEmpty()); + delegate.needChangePanelVisibility(getItemCountInternal() > 0); visibleByStickersSearch = true; } if (oldCount != newCount) { @@ -345,6 +318,69 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement })); } + private Object[] lastData; + + @Override + public void notifyDataSetChanged() { + if (lastItemCount == -1 || lastData == null) { + if (delegate != null) { + delegate.onItemCountUpdate(0, getItemCount()); + } + super.notifyDataSetChanged(); + lastData = new Object[getItemCount()]; + for (int i = 0; i < lastData.length; ++i) { + lastData[i] = getItem(i); + } + } else { + int oldCount = lastItemCount, newCount = getItemCount(); + boolean hadChanges = oldCount != newCount; + int min = Math.min(oldCount, newCount); + Object[] newData = new Object[newCount]; + for (int i = 0; i < newCount; ++i) { + newData[i] = getItem(i); + } + for (int i = 0; i < min; ++i) { + if (i < 0 || i >= lastData.length || i >= newData.length || !itemsEqual(lastData[i], newData[i])) { + notifyItemChanged(i); + hadChanges = true; + } else if ((i == oldCount - 1) != (i == newCount - 1) && USE_DIVIDERS) { + notifyItemChanged(i); // divider update + } + } + notifyItemRangeRemoved(min, oldCount - min); + notifyItemRangeInserted(min, newCount - min); + if (hadChanges && delegate != null) { + delegate.onItemCountUpdate(oldCount, newCount); + } + lastData = newData; + } + + } + + private boolean itemsEqual(Object a, Object b) { + if (a == b) { + return true; + } + if (a instanceof MentionsAdapter.StickerResult && b instanceof MentionsAdapter.StickerResult && ((StickerResult) a).sticker == ((StickerResult) b).sticker) { + return true; + } + if (a instanceof TLRPC.User && b instanceof TLRPC.User && ((TLRPC.User) a).id == ((TLRPC.User) b).id) { + return true; + } + if (a instanceof TLRPC.Chat && b instanceof TLRPC.Chat && ((TLRPC.Chat) a).id == ((TLRPC.Chat) b).id) { + return true; + } + if (a instanceof String && b instanceof String && a.equals(b)) { + return true; + } + if (a instanceof MediaDataController.KeywordResult && b instanceof MediaDataController.KeywordResult && + ((MediaDataController.KeywordResult) a).keyword != null && ((MediaDataController.KeywordResult) a).keyword.equals(((MediaDataController.KeywordResult) b).keyword) && + ((MediaDataController.KeywordResult) a).emoji != null && ((MediaDataController.KeywordResult) a).emoji.equals(((MediaDataController.KeywordResult) b).emoji)) { + return true; + } + return false; + } + private void clearStickers() { lastSticker = null; stickers = null; @@ -515,9 +551,6 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement if (foundContextBot != null && foundContextBot.username != null && foundContextBot.username.equals(username) && searchingContextQuery != null && searchingContextQuery.equals(query)) { return; } - searchResultBotContext = null; - searchResultBotContextSwitch = null; - notifyDataSetChanged(); if (foundContextBot != null) { if (!inlineMediaEnabled && username != null && query != null) { return; @@ -606,6 +639,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement } } processFoundUser(user); + contextUsernameReqid = 0; })); } } @@ -989,7 +1023,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement lastText = text; lastPosition = position; messages = messageObjects; - delegate.needChangePanelVisibility(false); +// delegate.needChangePanelVisibility(false); return; } } else if (a == 0 && botInfo != null && ch == '/') { @@ -1231,7 +1265,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement searchResultCommandsUsers = null; searchResultSuggestions = null; notifyDataSetChanged(); - delegate.needChangePanelVisibility(!newResult.isEmpty()); + delegate.needChangePanelVisibility(!searchResultHashtags.isEmpty()); } else if (foundType == 2) { ArrayList newResult = new ArrayList<>(); ArrayList newResultHelp = new ArrayList<>(); @@ -1287,6 +1321,20 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement } } + private boolean isReversed = false; + public void setIsReversed(boolean isReversed) { + if (this.isReversed != isReversed) { + this.isReversed = isReversed; + int itemCount = getLastItemCount(); + if (itemCount > 0) { + notifyItemChanged(0); + } + if (itemCount > 1) { + notifyItemChanged(itemCount - 1); + } + } + } + private void showUsersResult(ArrayList newResult, LongSparseArray newMap, boolean notify) { searchResultUsernames = newResult; searchResultUsernamesMap = newMap; @@ -1294,6 +1342,8 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement AndroidUtilities.cancelRunOnUIThread(cancelDelayRunnable); cancelDelayRunnable = null; } + searchResultBotContext = null; + stickers = null; if (notify) { notifyDataSetChanged(); delegate.needChangePanelVisibility(!searchResultUsernames.isEmpty()); @@ -1312,14 +1362,24 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement return searchResultBotContext; } + private int lastItemCount = -1; + @Override public int getItemCount() { + return lastItemCount = getItemCountInternal(); + } + + public int getLastItemCount() { + return lastItemCount; + } + + public int getItemCountInternal() { if (foundContextBot != null && !inlineMediaEnabled) { return 1; } if (stickers != null) { return stickers.size(); - }else if (searchResultBotContext != null) { + } else if (searchResultBotContext != null) { return searchResultBotContext.size() + (searchResultBotContextSwitch != null ? 1 : 0); } else if (searchResultUsernames != null) { return searchResultUsernames.size(); @@ -1333,6 +1393,33 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement return 0; } + public void clear(boolean safe) { + if (safe && (channelReqId != 0 || contextQueryReqid != 0 || contextUsernameReqid != 0 || lastReqId != 0)) { + return; + } + foundContextBot = null; + if (stickers != null) { + stickers.clear(); + } + if (searchResultBotContext != null) { + searchResultBotContext.clear(); + } + searchResultBotContextSwitch = null; + if (searchResultUsernames != null) { + searchResultUsernames.clear(); + } + if (searchResultHashtags != null) { + searchResultHashtags.clear(); + } + if (searchResultCommands != null) { + searchResultCommands.clear(); + } + if (searchResultSuggestions != null) { + searchResultSuggestions.clear(); + } + notifyDataSetChanged(); + } + @Override public int getItemViewType(int position) { if (stickers != null) { @@ -1444,7 +1531,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement View view; switch (viewType) { case 0: - view = new MentionCell(mContext); + view = new MentionCell(mContext, resourcesProvider); ((MentionCell) view).setIsDarkTheme(isDarkTheme); break; case 1: @@ -1516,6 +1603,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement } else if (searchResultCommands != null) { ((MentionCell) holder.itemView).setBotCommand(searchResultCommands.get(position), searchResultCommandsHelp.get(position), searchResultCommandsUsers != null ? searchResultCommandsUsers.get(position) : null); } + ((MentionCell) holder.itemView).setDivider(USE_DIVIDERS && (isReversed ? position > 0 : position < getItemCount() - 1)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/PaddedListAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/PaddedListAdapter.java new file mode 100644 index 000000000..786ee81cc --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/PaddedListAdapter.java @@ -0,0 +1,159 @@ +package org.telegram.ui.Adapters; + +import android.view.View; +import android.view.ViewGroup; +import android.widget.ListAdapter; +import android.widget.WrapperListAdapter; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.ui.Components.RecyclerListView; + +/** + * PaddedListAdapter wraps list adapter and adds transparent padding view at the start + */ +public class PaddedListAdapter extends RecyclerListView.SelectionAdapter { + + private final int PADDING_VIEW_TYPE = -983904; + + private RecyclerListView.SelectionAdapter wrappedAdapter; + private GetPaddingRunnable getPaddingRunnable; + private Integer padding = null; + public View paddingView; + + public boolean paddingViewAttached = false; + + public PaddedListAdapter(RecyclerListView.SelectionAdapter adapter) { + wrappedAdapter = adapter; + wrappedAdapter.registerAdapterDataObserver(mDataObserver); + } + public PaddedListAdapter(RecyclerListView.SelectionAdapter adapter, GetPaddingRunnable getPaddingRunnable) { + wrappedAdapter = adapter; + wrappedAdapter.registerAdapterDataObserver(mDataObserver); + this.getPaddingRunnable = getPaddingRunnable; + } + + @Override + public boolean isEnabled(RecyclerView.ViewHolder holder) { + if (holder.getAdapterPosition() == 0) { + return false; + } + return wrappedAdapter.isEnabled(holder); + } + + public interface GetPaddingRunnable { + public int run(int parentHeight); + } + + public void setPadding(int padding) { + this.padding = padding; + if (paddingView != null) { + paddingView.requestLayout(); + } + } + + public void setPadding(GetPaddingRunnable getPaddingRunnable) { + this.getPaddingRunnable = getPaddingRunnable; + if (paddingView != null) { + paddingView.requestLayout(); + } + } + + private int getPadding(int parentHeight) { + if (padding != null) { + return lastPadding = padding; + } else if (getPaddingRunnable != null) { + return lastPadding = getPaddingRunnable.run(parentHeight); + } else { + return lastPadding = 0; + } + } + + private int lastPadding; + public int getPadding() { + return lastPadding; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + if (viewType == PADDING_VIEW_TYPE) { + return new RecyclerListView.Holder(paddingView = new View(parent.getContext()) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int parentHeight = ((View) getParent()).getMeasuredHeight(); + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(getPadding(parentHeight), MeasureSpec.EXACTLY)); + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + paddingViewAttached = true; + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + paddingViewAttached = false; + } + }); + } + return wrappedAdapter.onCreateViewHolder(parent, viewType); + } + + @Override + public int getItemViewType(int position) { + if (position == 0) { + return PADDING_VIEW_TYPE; + } + return wrappedAdapter.getItemViewType(position - 1); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (position > 0) { + wrappedAdapter.onBindViewHolder(holder, position - 1); + } + } + + @Override + public int getItemCount() { + return 1 + wrappedAdapter.getItemCount(); + } + + private RecyclerView.AdapterDataObserver mDataObserver = new RecyclerView.AdapterDataObserver() { + @Override + public void onChanged() { + super.onChanged(); + notifyDataSetChanged(); + } + + @Override + public void onItemRangeChanged(int positionStart, int itemCount) { + super.onItemRangeChanged(positionStart, itemCount); + notifyItemRangeChanged(1 + positionStart, itemCount); + } + + @Override + public void onItemRangeInserted(int positionStart, int itemCount) { + super.onItemRangeInserted(positionStart, itemCount); + notifyItemRangeInserted(1 + positionStart, itemCount); + } + + @Override + public void onItemRangeRemoved(int positionStart, int itemCount) { + super.onItemRangeRemoved(positionStart, itemCount); + notifyItemRangeRemoved(1 + positionStart, itemCount); + } + + @Override + public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { + super.onItemRangeMoved(fromPosition, toPosition, itemCount); + notifyItemRangeChanged(1 + fromPosition, 1 + toPosition + itemCount); + } + }; + + +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/SearchAdapterHelper.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/SearchAdapterHelper.java index e0376f6c3..642f12472 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/SearchAdapterHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/SearchAdapterHelper.java @@ -77,6 +77,7 @@ public class SearchAdapterHelper { private LongSparseArray phoneSearchMap = new LongSparseArray<>(); private ArrayList phonesSearch = new ArrayList<>(); private ArrayList localSearchResults; + private ArrayList localRecentResults; private int currentAccount = UserConfig.selectedAccount; @@ -328,7 +329,7 @@ public class SearchAdapterHelper { } removeGroupSearchFromGlobal(); if (localSearchResults != null) { - mergeResults(localSearchResults); + mergeResults(localSearchResults, localRecentResults); } mergeExcludeResults(); delegate.onDataSetChanged(searchId); @@ -415,13 +416,23 @@ public class SearchAdapterHelper { } public void mergeResults(ArrayList localResults) { + mergeResults(localResults, null); + } + + public void mergeResults(ArrayList localResults, ArrayList recentResults) { localSearchResults = localResults; - if (globalSearchMap.size() == 0 || localResults == null) { + localRecentResults = recentResults; + if (globalSearchMap.size() == 0 || localResults == null && recentResults == null) { return; } - int count = localResults.size(); + final int localResultsCount = localResults == null ? 0 : localResults.size(); + final int recentResultsCount = recentResults == null ? 0 : recentResults.size(); + int count = localResultsCount + recentResultsCount; for (int a = 0; a < count; a++) { - Object obj = localResults.get(a); + Object obj = a < localResultsCount ? localResults.get(a) : recentResults.get(a - localResultsCount); + if (obj instanceof DialogsSearchAdapter.RecentSearchObject) { + obj = ((DialogsSearchAdapter.RecentSearchObject) obj).object; + } if (obj instanceof ShareAlert.DialogSearchResult) { ShareAlert.DialogSearchResult searchResult = (ShareAlert.DialogSearchResult) obj; obj = searchResult.object; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/StickersAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/StickersAdapter.java index a00962659..e75f41b52 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/StickersAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/StickersAdapter.java @@ -12,13 +12,15 @@ import android.content.Context; import android.text.TextUtils; import android.view.ViewGroup; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.MediaDataController; import org.telegram.messenger.Emoji; +import org.telegram.messenger.FileLoader; import org.telegram.messenger.ImageLocation; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.UserConfig; -import org.telegram.messenger.FileLoader; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.EmojiReplacementCell; @@ -28,8 +30,6 @@ import java.io.File; import java.util.ArrayList; import java.util.Arrays; -import androidx.recyclerview.widget.RecyclerView; - public class StickersAdapter extends RecyclerListView.SelectionAdapter implements NotificationCenter.NotificationCenterDelegate { private int currentAccount = UserConfig.selectedAccount; @@ -136,7 +136,7 @@ public class StickersAdapter extends RecyclerListView.SelectionAdapter implement TLRPC.Document animatedSticker = MediaDataController.getInstance(currentAccount).getEmojiAnimatedSticker(emoji); if (animatedSticker != null) { ArrayList sets = MediaDataController.getInstance(currentAccount).getStickerSets(MediaDataController.TYPE_EMOJI); - File f = FileLoader.getPathToAttach(animatedSticker, true); + File f = FileLoader.getInstance(currentAccount).getPathToAttach(animatedSticker, true); if (!f.exists()) { FileLoader.getInstance(currentAccount).loadFile(ImageLocation.getForDocument(animatedSticker), sets.get(0), null, 1, 1); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ArticleViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/ArticleViewer.java index 7bc02653a..8e08ac697 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ArticleViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ArticleViewer.java @@ -518,6 +518,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg sizeBar = new SeekBarView(context); sizeBar.setReportChanges(true); +// sizeBar.setSeparatorsCount(endFontSize - startFontSize); sizeBar.setDelegate(new SeekBarView.SeekBarViewDelegate() { @Override public void onSeekBarDrag(boolean stop, float progress) { @@ -1281,7 +1282,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg popupWindow.dismiss(); } }); - popupLayout.setShownFromBotton(false); + popupLayout.setShownFromBottom(false); deleteView = new TextView(parentActivity); deleteView.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.getColor(Theme.key_listSelector), 2)); @@ -3534,7 +3535,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg menuButton.addSubItem(search_item, R.drawable.msg_search, LocaleController.getString("Search", R.string.Search)); menuButton.addSubItem(share_item, R.drawable.msg_share, LocaleController.getString("ShareFile", R.string.ShareFile)); menuButton.addSubItem(open_item, R.drawable.msg_openin, LocaleController.getString("OpenInExternalApp", R.string.OpenInExternalApp)); - menuButton.addSubItem(settings_item, R.drawable.menu_settings, LocaleController.getString("Settings", R.string.Settings)); + menuButton.addSubItem(settings_item, R.drawable.msg_settings_old, LocaleController.getString("Settings", R.string.Settings)); menuButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); menuButton.setContentDescription(LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions)); menuContainer.addView(menuButton, LayoutHelper.createFrame(48, 56)); @@ -4847,13 +4848,13 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg if (photo != null) { TLRPC.PhotoSize sizeFull = FileLoader.getClosestPhotoSizeWithSize(photo.sizes, AndroidUtilities.getPhotoSize()); if (sizeFull != null) { - return FileLoader.getPathToAttach(sizeFull, true); + return FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(sizeFull, true); } } } else if (block instanceof TLRPC.TL_pageBlockVideo) { TLRPC.Document document = getDocumentWithId(page, ((TLRPC.TL_pageBlockVideo) block).video_id); if (document != null) { - return FileLoader.getPathToAttach(document, true); + return FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true); } } return null; @@ -6129,7 +6130,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg if (isGif) { autoDownload = DownloadController.getInstance(currentAccount).canDownloadMedia(DownloadController.AUTODOWNLOAD_TYPE_VIDEO, currentDocument.size); - File path = FileLoader.getPathToAttach(currentDocument, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(currentDocument, true); if (autoDownload || path.exists()) { imageView.setStrippedLocation(null); imageView.setImage(ImageLocation.getForDocument(currentDocument), ImageLoader.AUTOPLAY_FILTER, null, null, ImageLocation.getForDocument(thumb, currentDocument), "80_80_b", null, currentDocument.size, null, parentAdapter.currentPage, 1); @@ -6227,7 +6228,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg public void updateButtonState(boolean animated) { String fileName = FileLoader.getAttachFileName(currentDocument); - File path = FileLoader.getPathToAttach(currentDocument, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(currentDocument, true); boolean fileExists = path.exists(); if (TextUtils.isEmpty(fileName)) { radialProgress.setIcon(MediaActionDrawable.ICON_NONE, false, false); @@ -6635,7 +6636,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg public void updateButtonState(boolean animated) { String fileName = FileLoader.getAttachFileName(currentDocument); - File path = FileLoader.getPathToAttach(currentDocument, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(currentDocument, true); boolean fileExists = path.exists(); if (TextUtils.isEmpty(fileName)) { radialProgress.setIcon(MediaActionDrawable.ICON_NONE, false, false); @@ -9871,7 +9872,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg isFirst = first; channelCell.setVisibility(INVISIBLE); if (!TextUtils.isEmpty(currentBlock.url)) { - linkDrawable = getResources().getDrawable(R.drawable.instant_link); + linkDrawable = getResources().getDrawable(R.drawable.msg_instant_link); } if (currentBlock != null) { TLRPC.Photo photo = parentAdapter.getPhotoWithId(currentBlock.photo_id); @@ -10007,7 +10008,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg currentThumbFilter = "80_80_b"; autoDownload = (DownloadController.getInstance(currentAccount).getCurrentDownloadMask() & DownloadController.AUTODOWNLOAD_TYPE_PHOTO) != 0; - File path = FileLoader.getPathToAttach(currentPhotoObject, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(currentPhotoObject, true); if (autoDownload || path.exists()) { imageView.setStrippedLocation(null); imageView.setImage(ImageLocation.getForPhoto(currentPhotoObject, currentPhoto), currentFilter, ImageLocation.getForPhoto(currentPhotoObjectThumb, currentPhoto), currentThumbFilter, currentPhotoObject.size, null, parentAdapter.currentPage, 1); @@ -10123,7 +10124,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg public void updateButtonState(boolean animated) { String fileName = FileLoader.getAttachFileName(currentPhotoObject); - File path = FileLoader.getPathToAttach(currentPhotoObject, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(currentPhotoObject, true); boolean fileExists = path.exists(); if (TextUtils.isEmpty(fileName)) { radialProgress.setIcon(MediaActionDrawable.ICON_NONE, false, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java index aae03c136..98467afc3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java @@ -38,6 +38,7 @@ import org.telegram.messenger.FileLog; import org.telegram.messenger.FilesMigrationService; import org.telegram.messenger.ImageLoader; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; import org.telegram.messenger.NotificationCenter; @@ -131,10 +132,12 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe return; } documentsSize = getDirectorySize(FileLoader.checkDirectory(FileLoader.MEDIA_DIR_DOCUMENT), 1); + documentsSize += getDirectorySize(FileLoader.checkDirectory(FileLoader.MEDIA_DIR_FILES), 1); if (canceled) { return; } musicSize = getDirectorySize(FileLoader.checkDirectory(FileLoader.MEDIA_DIR_DOCUMENT), 2); + musicSize += getDirectorySize(FileLoader.checkDirectory(FileLoader.MEDIA_DIR_FILES), 2); if (canceled) { return; } @@ -335,6 +338,13 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe Utilities.clearDir(file.getAbsolutePath(), documentsMusicType, Long.MAX_VALUE, false); } } + if (type == FileLoader.MEDIA_DIR_DOCUMENT) { + file = FileLoader.checkDirectory(FileLoader.MEDIA_DIR_FILES); + if (file != null) { + Utilities.clearDir(file.getAbsolutePath(), documentsMusicType, Long.MAX_VALUE, false); + } + } + if (type == FileLoader.MEDIA_DIR_CACHE) { cacheSize = getDirectorySize(FileLoader.checkDirectory(FileLoader.MEDIA_DIR_CACHE), documentsMusicType); imagesCleared = true; @@ -343,8 +353,10 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe } else if (type == FileLoader.MEDIA_DIR_DOCUMENT) { if (documentsMusicType == 1) { documentsSize = getDirectorySize(FileLoader.checkDirectory(FileLoader.MEDIA_DIR_DOCUMENT), documentsMusicType); + documentsSize += getDirectorySize(FileLoader.checkDirectory(FileLoader.MEDIA_DIR_FILES), documentsMusicType); } else { musicSize = getDirectorySize(FileLoader.checkDirectory(FileLoader.MEDIA_DIR_DOCUMENT), documentsMusicType); + musicSize += getDirectorySize(FileLoader.checkDirectory(FileLoader.MEDIA_DIR_FILES), documentsMusicType); } } else if (type == FileLoader.MEDIA_DIR_IMAGE) { imagesCleared = true; @@ -404,8 +416,7 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe getMediaDataController().ringtoneDataStore.checkRingtoneSoundsLoaded(); cacheRemovedTooltip.setInfoText(LocaleController.formatString("CacheWasCleared", R.string.CacheWasCleared, AndroidUtilities.formatFileSize(finalClearedSize))); cacheRemovedTooltip.showWithAction(0, UndoView.ACTION_CACHE_WAS_CLEARED, null, null); - - getMediaDataController().loadAttachMenuBots(false, true); + MediaDataController.getInstance(currentAccount).chekAllMedia(true); }); }); } @@ -455,6 +466,7 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe return false; } }; + bottomSheet.fixNavigationBar(); bottomSheet.setAllowNestedScroll(true); bottomSheet.setApplyBottomPadding(false); LinearLayout linearLayout = new LinearLayout(getParentActivity()); @@ -749,7 +761,7 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe } if (actionTextView != null) { - actionTextView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + actionTextView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); } }; ArrayList arrayList = new ArrayList<>(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CalendarActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CalendarActivity.java index dc9c3f422..8ff67b7c7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CalendarActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CalendarActivity.java @@ -640,7 +640,7 @@ public class CalendarActivity extends BaseFragment { } } else { PeriodDay day = getDayAtCoord(e.getX(), e.getY()); - if (parentLayout.fragmentsStack.size() >= 2) { + if (day != null && parentLayout.fragmentsStack.size() >= 2) { BaseFragment fragment = parentLayout.fragmentsStack.get(parentLayout.fragmentsStack.size() - 2); if (fragment instanceof ChatActivity) { finishFragment(); @@ -777,7 +777,6 @@ public class CalendarActivity extends BaseFragment { prepareBlurBitmap(); presentFragmentAsPreviewWithMenu(chatActivity, previewMenu); - } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CallLogActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CallLogActivity.java index bfb72ae42..934e72503 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CallLogActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CallLogActivity.java @@ -90,8 +90,6 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter. private boolean firstLoaded; private boolean endReached; - private ProgressButton waitingForLoadButton; - private ArrayList activeGroupCalls; private ArrayList selectedIds = new ArrayList<>(); @@ -280,9 +278,6 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter. if (chatFull.id == waitingForCallChatId) { ChatObject.Call groupCall = getMessagesController().getGroupCall(waitingForCallChatId, true); if (groupCall != null) { - if (waitingForLoadButton != null) { - waitingForLoadButton.setDrawProgress(false, false); - } VoIPHelper.startCall(lastCallChat, null, null, false, getParentActivity(), CallLogActivity.this, getAccountInstance()); waitingForCallChatId = null; } @@ -293,9 +288,6 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter. } Long chatId = (Long) args[0]; if (waitingForCallChatId.equals(chatId)) { - if (waitingForLoadButton != null) { - waitingForLoadButton.setDrawProgress(false, false); - } VoIPHelper.startCall(lastCallChat, null, null, false, getParentActivity(), CallLogActivity.this, getAccountInstance()); waitingForCallChatId = null; } @@ -367,14 +359,13 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter. addView(profileSearchCell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); button.setText(text); + button.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); button.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); button.setProgressColor(Theme.getColor(Theme.key_featuredStickers_buttonProgress)); - button.setBackgroundRoundRect(Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed)); - addView(button, LayoutHelper.createFrameRelatively(LayoutHelper.WRAP_CONTENT, 28, Gravity.TOP | Gravity.END, 0, 18, 14, 0)); + button.setBackgroundRoundRect(Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed), 16); + button.setPadding(AndroidUtilities.dp(14), 0, AndroidUtilities.dp(14), 0); + addView(button, LayoutHelper.createFrameRelatively(LayoutHelper.WRAP_CONTENT, 28, Gravity.TOP | Gravity.END, 0, 16, 14, 0)); button.setOnClickListener(v -> { - if (waitingForLoadButton != null) { - waitingForLoadButton.setDrawProgress(false, true); - } Long tag = (Long) v.getTag(); ChatObject.Call call = getMessagesController().getGroupCall(tag, false); lastCallChat = getMessagesController().getChat(tag); @@ -383,8 +374,6 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter. } else { waitingForCallChatId = tag; getMessagesController().loadFullChat(tag, 0, true); - button.setDrawProgress(true, true); - waitingForLoadButton = button; } }); } @@ -1005,7 +994,7 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter. view.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); break; case 3: - view = new HeaderCell(mContext); + view = new HeaderCell(mContext, Theme.key_windowBackgroundWhiteBlueHeader, 21, 15, 2, false, getResourceProvider()); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; case 4: @@ -1023,15 +1012,6 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter. if (holder.itemView instanceof CallCell) { CallLogRow row = calls.get(holder.getAdapterPosition() - callsStartRow); ((CallCell) holder.itemView).setChecked(isSelected(row.calls), false); - } else if (holder.itemView instanceof GroupCallCell) { - GroupCallCell cell = (GroupCallCell) holder.itemView; - TLRPC.Chat chat = cell.profileSearchCell.getChat(); - if (waitingForCallChatId != null && chat.id == waitingForCallChatId) { - waitingForLoadButton = cell.button; - cell.button.setDrawProgress(true, false); - } else { - cell.button.setDrawProgress(false, false); - } } } @@ -1103,8 +1083,8 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter. text = LocaleController.getString("MegaPublic", R.string.MegaPublic).toLowerCase(); } } + cell.profileSearchCell.useSeparator = position != activeGroupCalls.size() - 1 && !endReached; cell.profileSearchCell.setData(chat, null, null, text, false, false); - cell.profileSearchCell.useSeparator = position != activeGroupCalls.size() - 1 || !endReached; break; } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CameraScanActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CameraScanActivity.java index d07ec4d30..7237c6d39 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CameraScanActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CameraScanActivity.java @@ -107,6 +107,7 @@ public class CameraScanActivity extends BaseFragment { private ImageView flashButton; private AnimatorSet flashAnimator; private float backShadowAlpha = .5f; + protected boolean shownAsBottomSheet = false; private SpringAnimation qrAppearing = null; private float qrAppearingValue = 0; @@ -123,7 +124,7 @@ public class CameraScanActivity extends BaseFragment { private int recognizeIndex = 0; private String recognizedText; - private int sps; // samples per second (already when recognized) + private int sps; // samples per second (when already recognized) private boolean qrLoading = false; private boolean qrLoaded = false; @@ -173,6 +174,7 @@ public class CameraScanActivity extends BaseFragment { dismiss(); } }; + fragment.shownAsBottomSheet = true; fragment.needGalleryButton = gallery; actionBarLayout[0].addFragmentToStack(fragment); actionBarLayout[0].showLastFragment(); @@ -206,9 +208,8 @@ public class CameraScanActivity extends BaseFragment { }; bottomSheet.setUseLightStatusBar(false); AndroidUtilities.setLightNavigationBar(bottomSheet.getWindow(), false); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - bottomSheet.getWindow().setNavigationBarColor(0xff000000); - } + AndroidUtilities.setNavigationBarColor(bottomSheet.getWindow(), 0xff000000, false); + bottomSheet.setUseLightStatusBar(false); bottomSheet.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); bottomSheet.show(); return actionBarLayout; @@ -252,8 +253,15 @@ public class CameraScanActivity extends BaseFragment { @Override public View createView(Context context) { actionBar.setBackButtonImage(R.drawable.ic_ab_back); - actionBar.setItemsColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false); - actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_actionBarWhiteSelector), false); + if (shownAsBottomSheet) { + actionBar.setItemsColor(0xffffffff, false); + actionBar.setItemsBackgroundColor(0xffffffff, false); + actionBar.setTitleColor(0xffffffff); + } else { + actionBar.setItemsColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false); + actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_actionBarWhiteSelector), false); + actionBar.setTitleColor(Theme.getColor(Theme.key_actionBarDefaultTitle)); + } actionBar.setCastShadows(false); if (!AndroidUtilities.isTablet() && !isQr()) { actionBar.showActionModeTop(); @@ -423,7 +431,7 @@ public class CameraScanActivity extends BaseFragment { fragmentView = viewGroup; if (currentType == TYPE_QR || currentType == TYPE_QR_LOGIN) { - fragmentView.postDelayed(this::initCameraView, 350); + fragmentView.postDelayed(this::initCameraView, 450); } else { initCameraView(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AboutLinkCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AboutLinkCell.java index 1fea1d142..295c9560b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AboutLinkCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AboutLinkCell.java @@ -27,6 +27,7 @@ import android.text.StaticLayout; import android.text.TextUtils; import android.text.style.ClickableSpan; import android.text.style.URLSpan; +import android.text.util.Linkify; import android.util.TypedValue; import android.view.Gravity; import android.view.HapticFeedbackConstants; @@ -80,13 +81,19 @@ public class AboutLinkCell extends FrameLayout { private LinkPath urlPath = new LinkPath(true); private BaseFragment parentFragment; + private Theme.ResourcesProvider resourcesProvider; private FrameLayout container; private Drawable rippleBackground; public AboutLinkCell(Context context, BaseFragment fragment) { + this(context, fragment, null); + } + + public AboutLinkCell(Context context, BaseFragment fragment, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; parentFragment = fragment; container = new FrameLayout(context) { @@ -139,24 +146,26 @@ public class AboutLinkCell extends FrameLayout { return result || super.onTouchEvent(event); } }; + container.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); links = new LinkSpanDrawable.LinkCollector(container); container.setClickable(true); - rippleBackground = Theme.createRadSelectorDrawable(Theme.getColor(Theme.key_listSelector), 0, 0); + rippleBackground = Theme.createRadSelectorDrawable(Theme.getColor(Theme.key_listSelector, resourcesProvider), 0, 0); valueTextView = new TextView(context); valueTextView.setVisibility(GONE); - valueTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); + valueTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2, resourcesProvider)); valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); valueTextView.setLines(1); valueTextView.setMaxLines(1); valueTextView.setSingleLine(true); valueTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); valueTextView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); + valueTextView.setFocusable(false); container.addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM, 23, 0, 23, 10)); bottomShadow = new FrameLayout(context); Drawable shadowDrawable = context.getResources().getDrawable(R.drawable.gradient_bottom).mutate(); - shadowDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhite), PorterDuff.Mode.SRC_ATOP)); + shadowDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhite, resourcesProvider), PorterDuff.Mode.SRC_ATOP)); bottomShadow.setBackground(shadowDrawable); addView(bottomShadow, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 12, Gravity.BOTTOM | Gravity.FILL_HORIZONTAL, 0, 0, 0, 0)); @@ -187,7 +196,7 @@ public class AboutLinkCell extends FrameLayout { super.onDraw(canvas); } }; - showMoreTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText)); + showMoreTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText, resourcesProvider)); showMoreTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); showMoreTextView.setLines(1); showMoreTextView.setMaxLines(1); @@ -199,7 +208,7 @@ public class AboutLinkCell extends FrameLayout { showMoreTextView.setPadding(AndroidUtilities.dp(2), 0, AndroidUtilities.dp(2), 0); showMoreTextBackgroundView = new FrameLayout(context); showMoreBackgroundDrawable = context.getResources().getDrawable(R.drawable.gradient_left).mutate(); - showMoreBackgroundDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhite), PorterDuff.Mode.MULTIPLY)); + showMoreBackgroundDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhite, resourcesProvider), PorterDuff.Mode.MULTIPLY)); showMoreTextBackgroundView.setBackground(showMoreBackgroundDrawable); showMoreTextBackgroundView.setPadding( showMoreTextBackgroundView.getPaddingLeft() + AndroidUtilities.dp(4), @@ -209,7 +218,7 @@ public class AboutLinkCell extends FrameLayout { ); showMoreTextBackgroundView.addView(showMoreTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); addView(showMoreTextBackgroundView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.RIGHT | Gravity.BOTTOM, 22 - showMoreTextBackgroundView.getPaddingLeft() / AndroidUtilities.density, 0, 22 - showMoreTextBackgroundView.getPaddingRight() / AndroidUtilities.density, 6)); - backgroundPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + backgroundPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhite, resourcesProvider)); setWillNotDraw(false); } @@ -420,7 +429,7 @@ public class AboutLinkCell extends FrameLayout { if (left <= x && left + textLayout.getLineWidth(line) >= x && y >= 0 && y <= textLayout.getHeight()) { Spannable buffer = (Spannable) textLayout.getText(); ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class); - if (link.length != 0) { + if (link.length != 0 && !AndroidUtilities.isAccessibilityScreenReaderEnabled()) { resetPressedLink(); pressedLink = new LinkSpanDrawable(link[0], parentFragment.getResourceProvider(), ex, ey); links.addLink(pressedLink); @@ -466,7 +475,7 @@ public class AboutLinkCell extends FrameLayout { private static final int COLLAPSED_HEIGHT = AndroidUtilities.dp(8 + 20 * 3 + 8); private static final int MAX_OPEN_HEIGHT = COLLAPSED_HEIGHT;// + AndroidUtilities.dp(20); - private class SpringInterpolator { + public class SpringInterpolator { public float tension; public float friction; public SpringInterpolator(float tension, float friction) { @@ -712,8 +721,9 @@ public class AboutLinkCell extends FrameLayout { public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); if (textLayout != null) { - final CharSequence text = textLayout.getText(); + final CharSequence text = stringBuilder; final CharSequence valueText = valueTextView.getText(); + info.setClassName("android.widget.TextView"); if (TextUtils.isEmpty(valueText)) { info.setText(text); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AdminedChannelCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AdminedChannelCell.java index 3200b73ed..20e0f540c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AdminedChannelCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AdminedChannelCell.java @@ -14,12 +14,10 @@ import android.graphics.PorterDuffColorFilter; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.view.Gravity; -import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; @@ -29,6 +27,7 @@ import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.BackupImageView; +import org.telegram.ui.Components.CheckBox2; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.URLSpanNoUnderline; @@ -42,35 +41,47 @@ public class AdminedChannelCell extends FrameLayout { private TLRPC.Chat currentChannel; private boolean isLast; private int currentAccount = UserConfig.selectedAccount; + CheckBox2 checkBox; - public AdminedChannelCell(Context context, View.OnClickListener onClickListener) { + public AdminedChannelCell(Context context, OnClickListener onClickListener, boolean needCheck, int padding) { super(context); avatarDrawable = new AvatarDrawable(); - avatarImageView = new BackupImageView(context); avatarImageView.setRoundRadius(AndroidUtilities.dp(24)); - addView(avatarImageView, LayoutHelper.createFrame(48, 48, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 12, 12, LocaleController.isRTL ? 12 : 0, 0)); + addView(avatarImageView, LayoutHelper.createFrame(48, 48, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 12 + padding, 6, LocaleController.isRTL ? 12 + padding : 0, 6)); + if (needCheck) { + checkBox = new CheckBox2(context, 21); + checkBox.setColor(null, Theme.key_windowBackgroundWhite, Theme.key_checkboxCheck); + checkBox.setDrawUnchecked(false); + checkBox.setDrawBackgroundAsArc(3); + addView(checkBox, LayoutHelper.createFrame(24, 24, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 42 + padding, 32, LocaleController.isRTL ? 42 + padding: 0, 0)); + } + + int leftPadding = onClickListener == null ? 24 : 62; nameTextView = new SimpleTextView(context); nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); nameTextView.setTextSize(17); nameTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP); - addView(nameTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 20, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 62 : 73, 15.5f, LocaleController.isRTL ? 73 : 62, 0)); + addView(nameTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 20, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? leftPadding : 73 + padding, 9.5f, LocaleController.isRTL ? 73 + padding: leftPadding, 0)); statusTextView = new SimpleTextView(context); statusTextView.setTextSize(14); statusTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText)); statusTextView.setLinkTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkText)); statusTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP); - addView(statusTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 20, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 62 : 73, 38.5f, LocaleController.isRTL ? 73 : 62, 0)); + addView(statusTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 20, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? leftPadding : 73 + padding, 32.5f, LocaleController.isRTL ? 73 + padding : leftPadding, 6)); - deleteButton = new ImageView(context); - deleteButton.setScaleType(ImageView.ScaleType.CENTER); - deleteButton.setImageResource(R.drawable.msg_panel_clear); - deleteButton.setOnClickListener(onClickListener); - deleteButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText), PorterDuff.Mode.MULTIPLY)); - addView(deleteButton, LayoutHelper.createFrame(48, 48, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, LocaleController.isRTL ? 7 : 0, 12, LocaleController.isRTL ? 0 : 7, 0)); + if (onClickListener != null) { + deleteButton = new ImageView(context); + deleteButton.setScaleType(ImageView.ScaleType.CENTER); + deleteButton.setImageResource(R.drawable.msg_panel_clear); + deleteButton.setOnClickListener(onClickListener); + deleteButton.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_listSelector))); + deleteButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText), PorterDuff.Mode.MULTIPLY)); + addView(deleteButton, LayoutHelper.createFrame(48, 48, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, LocaleController.isRTL ? 7 : 0, 6, LocaleController.isRTL ? 0 : 7, 0)); + } } public void setChannel(TLRPC.Chat channel, boolean last) { @@ -115,4 +126,8 @@ public class AdminedChannelCell extends FrameLayout { public ImageView getDeleteButton() { return deleteButton; } + + public void setChecked(boolean checked, boolean animated) { + checkBox.setChecked(checked, animated); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AppIconsSelectorCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AppIconsSelectorCell.java new file mode 100644 index 000000000..1c1272095 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AppIconsSelectorCell.java @@ -0,0 +1,343 @@ +package org.telegram.ui.Cells; + +import android.animation.ValueAnimator; +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.text.Spannable; +import android.text.SpannableString; +import android.util.DisplayMetrics; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.ColorUtils; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.LinearSmoothScroller; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MessagesController; +import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.Bulletin; +import org.telegram.ui.Components.ColoredImageSpan; +import org.telegram.ui.Components.Easings; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.PremiumFeatureBottomSheet; +import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.LauncherIconController; +import org.telegram.ui.PremiumPreviewFragment; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class AppIconsSelectorCell extends RecyclerListView implements NotificationCenter.NotificationCenterDelegate { + public final static float ICONS_ROUND_RADIUS = 18; + + private List availableIcons = new ArrayList<>(); + private LinearLayoutManager linearLayoutManager; + private int currentAccount; + + public AppIconsSelectorCell(Context context, BaseFragment fragment, int currentAccount) { + super(context); + this.currentAccount = currentAccount; + setPadding(0, AndroidUtilities.dp(12), 0, AndroidUtilities.dp(12)); + + setFocusable(false); + setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + setItemAnimator(null); + setLayoutAnimation(null); + + setLayoutManager(linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)); + setAdapter(new Adapter() { + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new RecyclerListView.Holder(new IconHolderView(parent.getContext())); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + IconHolderView holderView = (IconHolderView) holder.itemView; + LauncherIconController.LauncherIcon icon = availableIcons.get(position); + holderView.bind(icon); + holderView.iconView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(ICONS_ROUND_RADIUS), Color.TRANSPARENT, Theme.getColor(Theme.key_listSelector), Color.BLACK)); + holderView.iconView.setForeground(icon.foreground); + } + + @Override + public int getItemCount() { + return availableIcons.size(); + } + }); + addItemDecoration(new ItemDecoration() { + @Override + public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull State state) { + int pos = parent.getChildViewHolder(view).getAdapterPosition(); + if (pos == 0) { + outRect.left = AndroidUtilities.dp(18); + } + if (pos == getAdapter().getItemCount() - 1) { + outRect.right = AndroidUtilities.dp(18); + } else { + int itemCount = getAdapter().getItemCount(); + if (itemCount == 4) { + outRect.right = (getWidth() - AndroidUtilities.dp(36) - AndroidUtilities.dp(58) * itemCount) / (itemCount - 1); + } else { + outRect.right = AndroidUtilities.dp(24); + } + } + } + }); + setOnItemClickListener((view, position) -> { + IconHolderView holderView = (IconHolderView) view; + LauncherIconController.LauncherIcon icon = availableIcons.get(position); + if (icon.premium && !UserConfig.hasPremiumOnAccounts()) { + fragment.showDialog(new PremiumFeatureBottomSheet(fragment, PremiumPreviewFragment.PREMIUM_FEATURE_APPLICATION_ICONS, true)); + return; + } + + if (LauncherIconController.isEnabled(icon)) { + return; + } + + LinearSmoothScroller smoothScroller = new LinearSmoothScroller(context) { + @Override + public int calculateDtToFit(int viewStart, int viewEnd, int boxStart, int boxEnd, int snapPreference) { + return boxStart - viewStart + AndroidUtilities.dp(16); + } + + @Override + protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) { + return super.calculateSpeedPerPixel(displayMetrics) * 3f; + } + }; + smoothScroller.setTargetPosition(position); + linearLayoutManager.startSmoothScroll(smoothScroller); + + LauncherIconController.setIcon(icon); + holderView.setSelected(true, true); + + for (int i = 0; i < getChildCount(); i++) { + IconHolderView otherView = (IconHolderView) getChildAt(i); + if (otherView != holderView) { + otherView.setSelected(false, true); + } + } + + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.showBulletin, Bulletin.TYPE_APP_ICON, icon); + }); + updateIconsVisibility(); + } + + @SuppressLint("NotifyDataSetChanged") + private void updateIconsVisibility() { + availableIcons.clear(); + availableIcons.addAll(Arrays.asList(LauncherIconController.LauncherIcon.values())); + if (MessagesController.getInstance(currentAccount).premiumLocked) { + for (int i = 0; i < availableIcons.size(); i++) { + if (availableIcons.get(i).premium) { + availableIcons.remove(i); + i--; + } + } + } + getAdapter().notifyDataSetChanged(); + invalidateItemDecorations(); + + for (int i = 0; i < availableIcons.size(); i++) { + LauncherIconController.LauncherIcon icon = availableIcons.get(i); + if (LauncherIconController.isEnabled(icon)) { + linearLayoutManager.scrollToPositionWithOffset(i, AndroidUtilities.dp(16)); + break; + } + } + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + + invalidateItemDecorations(); + } + + @Override + protected void onMeasure(int widthSpec, int heightSpec) { + super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthSpec), MeasureSpec.EXACTLY), heightSpec); + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.premiumStatusChangedGlobal); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.premiumStatusChangedGlobal); + } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.premiumStatusChangedGlobal) { + updateIconsVisibility(); + } + } + + private final static class IconHolderView extends LinearLayout { + private Paint outlinePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + private AdaptiveIconImageView iconView; + private TextView titleView; + + private float progress; + + private IconHolderView(@NonNull Context context) { + super(context); + + setOrientation(VERTICAL); + + setWillNotDraw(false); + iconView = new AdaptiveIconImageView(context); + iconView.setPadding(AndroidUtilities.dp(8), AndroidUtilities.dp(8), AndroidUtilities.dp(8), AndroidUtilities.dp(8)); + addView(iconView, LayoutHelper.createLinear(58, 58, Gravity.CENTER_HORIZONTAL)); + + titleView = new TextView(context); + titleView.setSingleLine(); + titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + titleView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + addView(titleView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 0, 4, 0, 0)); + + outlinePaint.setStyle(Paint.Style.STROKE); + outlinePaint.setStrokeWidth(Math.max(2, AndroidUtilities.dp(0.5f))); + } + + @Override + public void draw(Canvas canvas) { + super.draw(canvas); + + float stroke = outlinePaint.getStrokeWidth(); + AndroidUtilities.rectTmp.set(iconView.getLeft() + stroke, iconView.getTop() + stroke, iconView.getRight() - stroke, iconView.getBottom() - stroke); + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(ICONS_ROUND_RADIUS), AndroidUtilities.dp(ICONS_ROUND_RADIUS), outlinePaint); + } + + private void setProgress(float progress) { + this.progress = progress; + + titleView.setTextColor(ColorUtils.blendARGB(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText), Theme.getColor(Theme.key_windowBackgroundWhiteValueText), progress)); + outlinePaint.setColor(ColorUtils.blendARGB(ColorUtils.setAlphaComponent(Theme.getColor(Theme.key_switchTrack), 0x3F), Theme.getColor(Theme.key_windowBackgroundWhiteValueText), progress)); + outlinePaint.setStrokeWidth(Math.max(2, AndroidUtilities.dp(AndroidUtilities.lerp(0.5f, 2f, progress)))); + invalidate(); + } + + private void setSelected(boolean selected, boolean animate) { + float to = selected ? 1 : 0; + if (to == progress && animate) { + return; + } + + if (animate) { + ValueAnimator animator = ValueAnimator.ofFloat(progress, to).setDuration(250); + animator.setInterpolator(Easings.easeInOutQuad); + animator.addUpdateListener(animation -> setProgress((Float) animation.getAnimatedValue())); + animator.start(); + } else { + setProgress(to); + } + } + + private void bind(LauncherIconController.LauncherIcon icon) { + iconView.setImageResource(icon.background); + + MarginLayoutParams params = (MarginLayoutParams) titleView.getLayoutParams(); + if (icon.premium && !UserConfig.hasPremiumOnAccounts()) { + SpannableString str = new SpannableString("d " + LocaleController.getString(icon.title)); + ColoredImageSpan span = new ColoredImageSpan(R.drawable.msg_mini_premiumlock); + span.setTopOffset(1); + span.setSize(AndroidUtilities.dp(13)); + str.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + + params.rightMargin = AndroidUtilities.dp(4); + titleView.setText(str); + } else { + params.rightMargin = 0; + titleView.setText(LocaleController.getString(icon.title)); + } + setSelected(LauncherIconController.isEnabled(icon), false); + } + } + + public static class AdaptiveIconImageView extends ImageView { + private Drawable foreground; + private Path path = new Path(); + private int outerPadding = AndroidUtilities.dp(5); + private int backgroundOuterPadding = AndroidUtilities.dp(42); + + public AdaptiveIconImageView(Context context) { + super(context); + } + + public void setForeground(int res) { + foreground = ContextCompat.getDrawable(getContext(), res); + invalidate(); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + updatePath(); + } + + public void setPadding(int padding) { + setPadding(padding, padding, padding, padding); + } + + public void setOuterPadding(int outerPadding) { + this.outerPadding = outerPadding; + } + + public void setBackgroundOuterPadding(int backgroundOuterPadding) { + this.backgroundOuterPadding = backgroundOuterPadding; + } + + @Override + public void draw(Canvas canvas) { + canvas.save(); + canvas.clipPath(path); + canvas.scale(1f + backgroundOuterPadding / (float) getWidth(), 1f + backgroundOuterPadding / (float) getHeight(), getWidth() / 2f, getHeight() / 2f); + super.draw(canvas); + canvas.restore(); + + if (foreground != null) { + foreground.setBounds(-outerPadding, -outerPadding, getWidth() + outerPadding, getHeight() + outerPadding); + foreground.draw(canvas); + } + } + + private void updatePath() { + path.rewind(); + path.addCircle(getWidth() / 2f, getHeight() / 2f, Math.min(getWidth() - getPaddingLeft() - getPaddingRight(), getHeight() - getPaddingTop() - getPaddingBottom()) / 2f, Path.Direction.CW); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AudioPlayerCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AudioPlayerCell.java index fd323a858..c195b6d9d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AudioPlayerCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AudioPlayerCell.java @@ -316,7 +316,7 @@ public class AudioPlayerCell extends View implements DownloadController.FileDown } } if (cacheFile == null) { - cacheFile = FileLoader.getPathToAttach(currentMessageObject.getDocument()); + cacheFile = FileLoader.getInstance(currentAccount).getPathToAttach(currentMessageObject.getDocument()); } if (TextUtils.isEmpty(fileName)) { return; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AvailableReactionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AvailableReactionCell.java index cd114d622..d805ab524 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AvailableReactionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AvailableReactionCell.java @@ -6,6 +6,7 @@ import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.TextView; @@ -43,7 +44,7 @@ public class AvailableReactionCell extends FrameLayout { textView.setSingleLine(true); textView.setEllipsize(TextUtils.TruncateAt.END); textView.setGravity(LayoutHelper.getAbsoluteGravityStart() | Gravity.CENTER_VERTICAL); - addView(textView, LayoutHelper.createFrameRelatively(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 81, 0, 91, 0)); + addView(textView, LayoutHelper.createFrameRelatively(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 81, 0, 61, 0)); imageView = new BackupImageView(context); imageView.setAspectFit(true); @@ -85,7 +86,7 @@ public class AvailableReactionCell extends FrameLayout { this.react = react; textView.setText(react.title); SvgHelper.SvgDrawable svgThumb = DocumentObject.getSvgThumb(react.static_icon, Theme.key_windowBackgroundGray, 1.0f); - imageView.setImage(ImageLocation.getForDocument(react.static_icon), "50_50", "webp", svgThumb, react); + imageView.setImage(ImageLocation.getForDocument(react.center_icon), "40_40_lastframe", "webp", svgThumb, react); setChecked(checked, animated); } @@ -111,6 +112,16 @@ public class AvailableReactionCell extends FrameLayout { } } + public boolean isChecked() { + if (switchView != null) { + return switchView.isChecked(); + } + if (checkBox != null) { + return checkBox.isChecked(); + } + return false; + } + @Override protected void onDraw(Canvas canvas) { canvas.drawColor(Theme.getColor(Theme.key_windowBackgroundWhite)); @@ -125,4 +136,19 @@ public class AvailableReactionCell extends FrameLayout { canvas.drawLine(getPaddingLeft() + l, getHeight() - w, getWidth() - getPaddingRight() - r, getHeight() - w, Theme.dividerPaint); } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setEnabled(true); + info.setClickable(true); + if (switchView != null) { + info.setCheckable(true); + info.setChecked(isChecked()); + info.setClassName("android.widget.Switch"); + } else if (isChecked()) { + info.setSelected(true); + } + info.setContentDescription(textView.getText()); + } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BaseCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BaseCell.java index 90248c6f3..9e498d045 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BaseCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BaseCell.java @@ -33,7 +33,7 @@ public abstract class BaseCell extends ViewGroup { public void run() { if (checkingForLongPress && getParent() != null && currentPressCount == pressCount) { checkingForLongPress = false; - performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); + performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); if (onLongPress()) { MotionEvent event = MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0); onTouchEvent(event); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotHelpCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotHelpCell.java index 8128e5b5c..3730df322 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotHelpCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotHelpCell.java @@ -10,12 +10,14 @@ package org.telegram.ui.Cells; import android.content.Context; import android.graphics.Canvas; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.text.Layout; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.StaticLayout; +import android.text.TextUtils; import android.text.style.ClickableSpan; import android.text.style.URLSpan; import android.view.MotionEvent; @@ -24,20 +26,32 @@ import android.view.accessibility.AccessibilityNodeInfo; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.Emoji; +import org.telegram.messenger.FileLoader; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.FileRefController; +import org.telegram.messenger.ImageLoader; +import org.telegram.messenger.ImageLocation; +import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; -import org.telegram.messenger.FileLog; import org.telegram.messenger.R; -import org.telegram.ui.Components.LinkPath; +import org.telegram.messenger.SharedConfig; +import org.telegram.tgnet.TLObject; +import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.LinkPath; import org.telegram.ui.Components.TypefaceSpan; import org.telegram.ui.Components.URLSpanNoUnderline; +import java.util.Objects; + public class BotHelpCell extends View { private StaticLayout textLayout; private String oldText; + private String currentPhotoKey; + private int width; private int height; private int textX; @@ -48,7 +62,13 @@ public class BotHelpCell extends View { private LinkPath urlPath = new LinkPath(); private BotHelpCellDelegate delegate; - private final Theme.ResourcesProvider resourcesProvider; + private Theme.ResourcesProvider resourcesProvider; + + private int photoHeight; + private ImageReceiver imageReceiver; + private boolean isPhotoVisible; + private boolean isTextVisible; + private int imagePadding = AndroidUtilities.dp(4); private boolean animating; @@ -59,6 +79,11 @@ public class BotHelpCell extends View { public BotHelpCell(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); this.resourcesProvider = resourcesProvider; + + imageReceiver = new ImageReceiver(this); + imageReceiver.setInvalidateAll(true); + imageReceiver.setCrossfadeWithOldImage(true); + imageReceiver.setCrossfadeDuration(300); } public void setDelegate(BotHelpCellDelegate botHelpCellDelegate) { @@ -73,13 +98,52 @@ public class BotHelpCell extends View { } public void setText(boolean bot, String text) { - if (text == null || text.length() == 0) { + setText(bot, text, null, null); + } + + public void setText(boolean bot, String text, TLObject imageOrAnimation, TLRPC.BotInfo botInfo) { + boolean photoVisible = imageOrAnimation != null; + boolean textVisible = !TextUtils.isEmpty(text); + if ((text == null || text.length() == 0) && !photoVisible) { setVisibility(GONE); return; } - if (text != null && text.equals(oldText)) { + if (text == null) { + text = ""; + } + if (text != null && text.equals(oldText) && isPhotoVisible == photoVisible) { return; } + isPhotoVisible = photoVisible; + isTextVisible = textVisible; + if (isPhotoVisible) { + String photoKey = FileRefController.getKeyForParentObject(botInfo); + if (!Objects.equals(currentPhotoKey, photoKey)) { + currentPhotoKey = photoKey; + if (imageOrAnimation instanceof TLRPC.TL_photo) { + TLRPC.Photo photo = (TLRPC.Photo) imageOrAnimation; + imageReceiver.setImage(ImageLocation.getForPhoto(FileLoader.getClosestPhotoSizeWithSize(photo.sizes, 400), photo), "400_400", null, "jpg", botInfo, 0); + } else if (imageOrAnimation instanceof TLRPC.Document) { + TLRPC.Document doc = (TLRPC.Document) imageOrAnimation; + TLRPC.PhotoSize photoThumb = FileLoader.getClosestPhotoSizeWithSize(doc.thumbs, 400); + BitmapDrawable strippedThumb = null; + if (SharedConfig.getDevicePerformanceClass() != SharedConfig.PERFORMANCE_CLASS_LOW) { + for (TLRPC.PhotoSize photoSize : doc.thumbs) { + if (photoSize instanceof TLRPC.TL_photoStrippedSize) { + strippedThumb = new BitmapDrawable(getResources(), ImageLoader.getStrippedPhotoBitmap(photoSize.bytes, "b")); + } + } + } + imageReceiver.setImage(ImageLocation.getForDocument(doc), ImageLoader.AUTOPLAY_FILTER, ImageLocation.getForDocument(MessageObject.getDocumentVideoThumb(doc), doc), null, ImageLocation.getForDocument(photoThumb, doc), "86_86_b", strippedThumb, doc.size, "mp4", botInfo, 0); + } + + int topRadius = AndroidUtilities.dp(SharedConfig.bubbleRadius) - AndroidUtilities.dp(2), bottomRadius = AndroidUtilities.dp(4); + if (!isTextVisible) { + bottomRadius = topRadius; + } + imageReceiver.setRoundRadius(topRadius, topRadius, bottomRadius, bottomRadius); + } + } oldText = AndroidUtilities.getSafeString(text); setVisibility(VISIBLE); int maxWidth; @@ -88,39 +152,47 @@ public class BotHelpCell extends View { } else { maxWidth = (int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.7f); } - String[] lines = text.split("\n"); - SpannableStringBuilder stringBuilder = new SpannableStringBuilder(); - String help = LocaleController.getString("BotInfoTitle", R.string.BotInfoTitle); - if (bot) { - stringBuilder.append(help); - stringBuilder.append("\n\n"); - } - for (int a = 0; a < lines.length; a++) { - stringBuilder.append(lines[a].trim()); - if (a != lines.length - 1) { - stringBuilder.append("\n"); + if (isTextVisible) { + String[] lines = text.split("\n"); + SpannableStringBuilder stringBuilder = new SpannableStringBuilder(); + String help = LocaleController.getString(R.string.BotInfoTitle); + if (bot) { + stringBuilder.append(help); + stringBuilder.append("\n\n"); } - } - MessageObject.addLinks(false, stringBuilder); - if (bot) { - stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf")), 0, help.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - } - Emoji.replaceEmoji(stringBuilder, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); - try { - textLayout = new StaticLayout(stringBuilder, Theme.chat_msgTextPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - width = 0; - height = textLayout.getHeight() + AndroidUtilities.dp(4 + 18); - int count = textLayout.getLineCount(); - for (int a = 0; a < count; a++) { - width = (int) Math.ceil(Math.max(width, textLayout.getLineWidth(a) + textLayout.getLineLeft(a))); + for (int a = 0; a < lines.length; a++) { + stringBuilder.append(lines[a].trim()); + if (a != lines.length - 1) { + stringBuilder.append("\n"); + } } - if (width > maxWidth) { - width = maxWidth; + MessageObject.addLinks(false, stringBuilder); + if (bot) { + stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf")), 0, help.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } - } catch (Exception e) { - FileLog.e(e); + Emoji.replaceEmoji(stringBuilder, Theme.chat_msgTextPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); + try { + textLayout = new StaticLayout(stringBuilder, Theme.chat_msgTextPaint, maxWidth - (isPhotoVisible ? AndroidUtilities.dp(5) : 0), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + width = 0; + height = textLayout.getHeight() + AndroidUtilities.dp(4 + 18); + int count = textLayout.getLineCount(); + for (int a = 0; a < count; a++) { + width = (int) Math.ceil(Math.max(width, textLayout.getLineWidth(a) + textLayout.getLineLeft(a))); + } + if (width > maxWidth || isPhotoVisible) { + width = maxWidth; + } + } catch (Exception e) { + FileLog.e(e); + } + } else if (isPhotoVisible) { + width = maxWidth; } width += AndroidUtilities.dp(4 + 18); + + if (isPhotoVisible) { + height += (photoHeight = (int) (width * 0.5625)) + AndroidUtilities.dp(4); // 16:9 + } } @Override @@ -136,10 +208,10 @@ public class BotHelpCell extends View { try { int x2 = (int) (x - textX); int y2 = (int) (y - textY); - final int line = textLayout.getLineForVertical(y2); - final int off = textLayout.getOffsetForHorizontal(line, x2); + int line = textLayout.getLineForVertical(y2); + int off = textLayout.getOffsetForHorizontal(line, x2); - final float left = textLayout.getLineLeft(line); + float left = textLayout.getLineLeft(line); if (left <= x2 && left + textLayout.getLineWidth(line) >= x2) { Spannable buffer = (Spannable) textLayout.getText(); ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class); @@ -203,7 +275,8 @@ public class BotHelpCell extends View { @Override protected void onDraw(Canvas canvas) { int x = (getWidth() - width) / 2; - int y = AndroidUtilities.dp(2); + int y = photoHeight; + y += AndroidUtilities.dp(2); Drawable shadowDrawable = Theme.chat_msgInMediaDrawable.getShadowDrawable(); if (shadowDrawable != null) { shadowDrawable.setBounds(x, y, width + x, height + y); @@ -218,12 +291,16 @@ public class BotHelpCell extends View { } Theme.MessageDrawable drawable = (Theme.MessageDrawable) getThemedDrawable(Theme.key_drawable_msgInMedia); drawable.setTop((int) getY(), w, h, false, false); - drawable.setBounds(x, y, width + x, height + y); + drawable.setBounds(x, 0, width + x, height); drawable.draw(canvas); + + imageReceiver.setImageCoords(x + imagePadding, imagePadding, width - imagePadding * 2, photoHeight - imagePadding); + imageReceiver.draw(canvas); + Theme.chat_msgTextPaint.setColor(getThemedColor(Theme.key_chat_messageTextIn)); Theme.chat_msgTextPaint.linkColor = getThemedColor(Theme.key_chat_messageLinkIn); canvas.save(); - canvas.translate(textX = AndroidUtilities.dp(2 + 9) + x, textY = AndroidUtilities.dp(2 + 9) + y); + canvas.translate(textX = AndroidUtilities.dp(isPhotoVisible ? 14 : 11) + x, textY = AndroidUtilities.dp(11) + y); if (pressedLink != null) { canvas.drawPath(urlPath, Theme.chat_urlPaint); } @@ -234,10 +311,16 @@ public class BotHelpCell extends View { wasDraw = true; } + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + imageReceiver.onAttachedToWindow(); + } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); + imageReceiver.onDetachedFromWindow(); wasDraw = false; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BrightnessControlCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BrightnessControlCell.java index 97ada487a..e74477dfe 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BrightnessControlCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BrightnessControlCell.java @@ -34,7 +34,7 @@ public class BrightnessControlCell extends FrameLayout { super(context); leftImageView = new ImageView(context); - leftImageView.setImageResource(R.drawable.brightness_low); + leftImageView.setImageResource(R.drawable.msg_brightness_low); addView(leftImageView, LayoutHelper.createFrame(24, 24, Gravity.LEFT | Gravity.TOP, 17, 12, 0, 0)); seekBarView = new SeekBarView(context, /* inPercents = */ true, null) { @@ -66,7 +66,7 @@ public class BrightnessControlCell extends FrameLayout { addView(seekBarView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, Gravity.TOP | Gravity.LEFT, 54, 5, 54, 0)); rightImageView = new ImageView(context); - rightImageView.setImageResource(R.drawable.brightness_high); + rightImageView.setImageResource(R.drawable.msg_brightness_high); addView(rightImageView, LayoutHelper.createFrame(24, 24, Gravity.RIGHT | Gravity.TOP, 0, 12, 17, 0)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java index df47f8b6d..930415ace 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java @@ -14,14 +14,20 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; +import android.os.Build; import android.text.Layout; import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.Spanned; import android.text.StaticLayout; import android.text.TextPaint; import android.text.TextUtils; +import android.text.style.CharacterStyle; +import android.text.style.ClickableSpan; import android.text.style.URLSpan; import android.view.MotionEvent; import android.view.SoundEffectConstants; +import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityNodeInfo; @@ -47,6 +53,7 @@ import org.telegram.ui.Components.URLSpanNoUnderline; import org.telegram.ui.Components.spoilers.SpoilerEffect; import org.telegram.ui.PhotoViewer; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.Stack; @@ -185,6 +192,7 @@ public class ChatActionCell extends BaseCell implements DownloadController.FileD return; } customText = newText; + accessibilityText = null; updateTextInternal(inLayout); } @@ -220,7 +228,11 @@ public class ChatActionCell extends BaseCell implements DownloadController.FileD if (currentMessageObject == messageObject && (textLayout == null || TextUtils.equals(textLayout.getText(), messageObject.messageText)) && (hasReplyMessage || messageObject.replyMessageObject == null)) { return; } + accessibilityText = null; currentMessageObject = messageObject; + if (currentMessageObject != null && currentMessageObject.viewRef != null && (currentMessageObject.viewRef.get() == null || currentMessageObject.viewRef.get().get() != this)) { + currentMessageObject.viewRef.set(new WeakReference<>(this)); + } hasReplyMessage = messageObject.replyMessageObject != null; DownloadController.getInstance(currentAccount).removeLoadingFileObserver(this); previousWidth = 0; @@ -366,43 +378,7 @@ public class ChatActionCell extends BaseCell implements DownloadController.FileD result = true; } else { if (link[0] == pressedLink) { - if (delegate != null) { - String url = link[0].getURL(); - if (url.startsWith("invite") && pressedLink instanceof URLSpanNoUnderline) { - URLSpanNoUnderline spanNoUnderline = (URLSpanNoUnderline) pressedLink; - TLObject object = spanNoUnderline.getObject(); - if (object instanceof TLRPC.TL_chatInviteExported) { - TLRPC.TL_chatInviteExported invite = (TLRPC.TL_chatInviteExported) object; - delegate.needOpenInviteLink(invite); - } - } else if (url.startsWith("game")) { - delegate.didPressReplyMessage(this, currentMessageObject.getReplyMsgId()); - /*TLRPC.KeyboardButton gameButton = null; - MessageObject messageObject = currentMessageObject.replyMessageObject; - if (messageObject != null && messageObject.messageOwner.reply_markup != null) { - for (int a = 0; a < messageObject.messageOwner.reply_markup.rows.size(); a++) { - TLRPC.TL_keyboardButtonRow row = messageObject.messageOwner.reply_markup.rows.get(a); - for (int b = 0; b < row.buttons.size(); b++) { - TLRPC.KeyboardButton button = row.buttons.get(b); - if (button instanceof TLRPC.TL_keyboardButtonGame && button.game_id == currentMessageObject.messageOwner.action.game_id) { - gameButton = button; - break; - } - } - if (gameButton != null) { - break; - } - } - } - if (gameButton != null) { - delegate.didPressBotButton(messageObject, gameButton); - }*/ - } else if (url.startsWith("http")) { - Browser.openUrl(getContext(), url); - } else { - delegate.needOpenUserProfile(Long.parseLong(url)); - } - } + openLink(pressedLink); result = true; } } @@ -425,6 +401,46 @@ public class ChatActionCell extends BaseCell implements DownloadController.FileD return result; } + private void openLink(CharacterStyle link) { + if (delegate != null && link instanceof URLSpan) { + String url = ((URLSpan) link).getURL(); + if (url.startsWith("invite") && pressedLink instanceof URLSpanNoUnderline) { + URLSpanNoUnderline spanNoUnderline = (URLSpanNoUnderline) pressedLink; + TLObject object = spanNoUnderline.getObject(); + if (object instanceof TLRPC.TL_chatInviteExported) { + TLRPC.TL_chatInviteExported invite = (TLRPC.TL_chatInviteExported) object; + delegate.needOpenInviteLink(invite); + } + } else if (url.startsWith("game")) { + delegate.didPressReplyMessage(this, currentMessageObject.getReplyMsgId()); + /*TLRPC.KeyboardButton gameButton = null; + MessageObject messageObject = currentMessageObject.replyMessageObject; + if (messageObject != null && messageObject.messageOwner.reply_markup != null) { + for (int a = 0; a < messageObject.messageOwner.reply_markup.rows.size(); a++) { + TLRPC.TL_keyboardButtonRow row = messageObject.messageOwner.reply_markup.rows.get(a); + for (int b = 0; b < row.buttons.size(); b++) { + TLRPC.KeyboardButton button = row.buttons.get(b); + if (button instanceof TLRPC.TL_keyboardButtonGame && button.game_id == currentMessageObject.messageOwner.action.game_id) { + gameButton = button; + break; + } + } + if (gameButton != null) { + break; + } + } + } + if (gameButton != null) { + delegate.didPressBotButton(messageObject, gameButton); + }*/ + } else if (url.startsWith("http")) { + Browser.openUrl(getContext(), url); + } else { + delegate.needOpenUserProfile(Long.parseLong(url)); + } + } + } + private void createLayout(CharSequence text, int width) { int maxWidth = width - AndroidUtilities.dp(30); invalidatePath = true; @@ -757,13 +773,40 @@ public class ChatActionCell extends BaseCell implements DownloadController.FileD return TAG; } + private SpannableStringBuilder accessibilityText; + @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); if (TextUtils.isEmpty(customText) && currentMessageObject == null) { return; } - info.setText(!TextUtils.isEmpty(customText) ? customText : currentMessageObject.messageText); + if (accessibilityText == null) { + CharSequence text = !TextUtils.isEmpty(customText) ? customText : currentMessageObject.messageText; + SpannableStringBuilder sb = new SpannableStringBuilder(text); + CharacterStyle[] links = sb.getSpans(0, sb.length(), ClickableSpan.class); + for (CharacterStyle link : links) { + int start = sb.getSpanStart(link); + int end = sb.getSpanEnd(link); + sb.removeSpan(link); + + ClickableSpan underlineSpan = new ClickableSpan() { + @Override + public void onClick(View view) { + if (delegate != null) { + openLink(link); + } + } + }; + sb.setSpan(underlineSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + accessibilityText = sb; + } + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { + info.setContentDescription(accessibilityText.toString()); + } else { + info.setText(accessibilityText); + } info.setEnabled(true); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatListCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatListCell.java index 1a7b6a83d..b597329e1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatListCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatListCell.java @@ -7,6 +7,7 @@ import android.graphics.Paint; import android.graphics.RectF; import android.text.TextPaint; import android.view.Gravity; +import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.LinearLayout; @@ -96,6 +97,7 @@ public class ChatListCell extends LinearLayout { info.setClassName(RadioButton.class.getName()); info.setChecked(button.isChecked()); info.setCheckable(true); + info.setContentDescription(isThreeLines ? LocaleController.getString("ChatListExpanded", R.string.ChatListExpanded) : LocaleController.getString("ChatListDefault", R.string.ChatListDefault)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java index 967ee1f8b..2296c4fe3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java @@ -43,6 +43,7 @@ import android.os.Bundle; import android.os.SystemClock; import android.text.Layout; import android.text.Spannable; +import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.StaticLayout; @@ -59,6 +60,7 @@ import android.view.HapticFeedbackConstants; import android.view.MotionEvent; import android.view.SoundEffectConstants; import android.view.View; +import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewStructure; import android.view.accessibility.AccessibilityEvent; @@ -68,6 +70,7 @@ import android.view.accessibility.AccessibilityNodeProvider; import android.view.animation.Interpolator; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.core.graphics.ColorUtils; import org.telegram.PhoneFormat.PhoneFormat; @@ -134,6 +137,7 @@ import org.telegram.ui.Components.SlotsDrawable; import org.telegram.ui.Components.StaticLayoutEx; import org.telegram.ui.Components.TextStyleSpan; import org.telegram.ui.Components.TimerParticles; +import org.telegram.ui.Components.TranscribeButton; import org.telegram.ui.Components.TypefaceSpan; import org.telegram.ui.Components.URLSpanBotCommand; import org.telegram.ui.Components.URLSpanBrowser; @@ -146,6 +150,7 @@ import org.telegram.ui.PinchToZoomHelper; import org.telegram.ui.SecretMediaViewer; import java.io.File; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -158,6 +163,7 @@ import java.util.concurrent.atomic.AtomicReference; public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate, ImageReceiver.ImageReceiverDelegate, DownloadController.FileDownloadProgressListener, TextSelectionHelper.SelectableView, NotificationCenter.NotificationCenterDelegate { public boolean clipToGroupBounds; + private boolean flipImage; public RadialProgress2 getRadialProgress() { return radialProgress; @@ -329,6 +335,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate default void didPressBotButton(ChatMessageCell cell, TLRPC.KeyboardButton button) { } + default void didLongPressBotButton(ChatMessageCell cell, TLRPC.KeyboardButton button) { + } + default void didPressReaction(ChatMessageCell cell, TLRPC.TL_reactionCount reaction, boolean longpress) { } @@ -344,6 +353,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate default void didPressHint(ChatMessageCell cell, int type) { } + default void needShowPremiumFeatures(String source) { + } + default String getAdminRank(long uid) { return null; } @@ -356,6 +368,10 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate return false; } + default boolean onAccessibilityAction(int action, Bundle arguments) { + return false; + } + default void videoTimerReached() { } @@ -566,7 +582,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate private int instantTextX; private int instantTextLeftX; private int instantWidth; - private boolean insantTextNewLine; + private boolean instantTextNewLine; private boolean instantPressed; private boolean instantButtonPressed; private Drawable[] selectorDrawable = new Drawable[2]; @@ -652,13 +668,17 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate private Path rectPath = new Path(); private static float[] radii = new float[8]; - private boolean useSeekBarWaweform; + private boolean useSeekBarWaveform; private SeekBar seekBar; private SeekBarWaveform seekBarWaveform; private SeekBarAccessibilityDelegate seekBarAccessibilityDelegate; private int seekBarX; private int seekBarY; + private boolean useTranscribeButton; + private TranscribeButton transcribeButton; + private float transcribeX, transcribeY; + private StaticLayout durationLayout; private int lastTime; private int timeWidthAudio; @@ -1023,11 +1043,13 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (currentMessageObject.isMusic()) { return seekBar.getProgress(); } else if (currentMessageObject.isVoice()) { - if (useSeekBarWaweform) { + if (useSeekBarWaveform) { return seekBarWaveform.getProgress(); } else { return seekBar.getProgress(); } + } else if (currentMessageObject.isRoundVideo()) { + return currentMessageObject.audioProgress; } else { return 0f; } @@ -1038,11 +1060,13 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (currentMessageObject.isMusic()) { seekBar.setProgress(progress); } else if (currentMessageObject.isVoice()) { - if (useSeekBarWaweform) { + if (useSeekBarWaveform) { seekBarWaveform.setProgress(progress); } else { seekBar.setProgress(progress); } + } else if (currentMessageObject.isRoundVideo()) { + currentMessageObject.audioProgress = progress; } else { return; } @@ -1181,7 +1205,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (link.length == 0 || link[0] instanceof URLSpanBotCommand && !URLSpanBotCommand.enabled) { ignore = true; } - if (!ignore) { + if (!ignore && !AndroidUtilities.isAccessibilityScreenReaderEnabled()) { if (event.getAction() == MotionEvent.ACTION_DOWN) { if (pressedLink == null || pressedLink.getSpan() != link[0]) { links.removeLink(pressedLink); @@ -1293,7 +1317,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (link.length == 0 || link[0] instanceof URLSpanBotCommand && !URLSpanBotCommand.enabled) { ignore = true; } - if (!ignore) { + if (!ignore && !AndroidUtilities.isAccessibilityScreenReaderEnabled()) { if (pressedLink == null || pressedLink.getSpan() != link[0]) { links.removeLink(pressedLink); pressedLink = new LinkSpanDrawable(link[0], resourcesProvider, x, y, spanSupportsLongPress(link[0])); @@ -1358,7 +1382,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (link.length == 0 || link[0] instanceof URLSpanBotCommand && !URLSpanBotCommand.enabled) { ignore = true; } - if (!ignore) { + if (!ignore && !AndroidUtilities.isAccessibilityScreenReaderEnabled()) { if (pressedLink == null || pressedLink.getSpan() != link[0]) { links.removeLink(pressedLink); pressedLink = new LinkSpanDrawable(link[0], resourcesProvider, x, y, spanSupportsLongPress(link[0])); @@ -1418,6 +1442,10 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate return false; } + private boolean checkTranscribeButtonMotionEvent(MotionEvent event) { + return useTranscribeButton && transcribeButton != null && transcribeButton.onTouch(event.getAction(), event.getX() - transcribeX, event.getY() - transcribeY); + } + private boolean checkLinkPreviewMotionEvent(MotionEvent event) { if (currentMessageObject.type != 0 || !hasLinkPreview) { return false; @@ -1443,7 +1471,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (link.length == 0 || link[0] instanceof URLSpanBotCommand && !URLSpanBotCommand.enabled) { ignore = true; } - if (!ignore) { + if (!ignore && !AndroidUtilities.isAccessibilityScreenReaderEnabled()) { if (pressedLink == null || pressedLink.getSpan() != link[0]) { links.removeLink(pressedLink); pressedLink = new LinkSpanDrawable(link[0], resourcesProvider, x, y, spanSupportsLongPress(link[0])); @@ -2094,11 +2122,14 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (documentAttachType != DOCUMENT_ATTACH_TYPE_AUDIO && documentAttachType != DOCUMENT_ATTACH_TYPE_MUSIC) { return false; } + if (AndroidUtilities.isAccessibilityScreenReaderEnabled()) { + return false; + } int x = (int) event.getX(); int y = (int) event.getY(); boolean result; - if (useSeekBarWaweform) { + if (useSeekBarWaveform) { result = seekBarWaveform.onTouch(event.getAction(), event.getX() - seekBarX - AndroidUtilities.dp(13), event.getY() - seekBarY); } else { if (MediaController.getInstance().isPlayingMessage(currentMessageObject)) { @@ -2108,9 +2139,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } } if (result) { - if (!useSeekBarWaweform && event.getAction() == MotionEvent.ACTION_DOWN) { + if (!useSeekBarWaveform && event.getAction() == MotionEvent.ACTION_DOWN) { getParent().requestDisallowInterceptTouchEvent(true); - } else if (useSeekBarWaweform && !seekBarWaveform.isStartDraging() && event.getAction() == MotionEvent.ACTION_UP) { + } else if (useSeekBarWaveform && !seekBarWaveform.isStartDraging() && event.getAction() == MotionEvent.ACTION_UP) { didPressButton(true, false); } disallowLongPress = true; @@ -2175,9 +2206,32 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate return result; } - private boolean checkSpoilersMotionEvent(MotionEvent event) { - if (isSpoilerRevealing) + public boolean checkSpoilersMotionEvent(MotionEvent event) { + if (currentMessageObject.hasValidGroupId() && currentMessagesGroup != null && !currentMessagesGroup.isDocuments) { + ViewGroup parent = (ViewGroup) getParent(); + for (int i = 0; i < parent.getChildCount(); i++) { + View v = parent.getChildAt(i); + if (v instanceof ChatMessageCell) { + ChatMessageCell cell = (ChatMessageCell) v; + MessageObject.GroupedMessages group = cell.getCurrentMessagesGroup(); + MessageObject.GroupedMessagePosition position = cell.getCurrentPosition(); + if (group != null && group.groupId == currentMessagesGroup.groupId && + (position.flags & MessageObject.POSITION_FLAG_BOTTOM) != 0 && + (position.flags & MessageObject.POSITION_FLAG_LEFT) != 0) { + if (cell != this) { + event.offsetLocation(this.getLeft() - cell.getLeft(), this.getTop() - cell.getTop()); + boolean result = cell.checkSpoilersMotionEvent(event); + event.offsetLocation(-(this.getLeft() - cell.getLeft()), -(this.getTop() - cell.getTop())); + return result; + } + } + } + } + } + + if (isSpoilerRevealing) { return false; + } int x = (int) event.getX(); int y = (int) event.getY(); @@ -2308,6 +2362,20 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate pressedBotButton = a; invalidate(); result = true; + final int longPressedBotButton = pressedBotButton; + postDelayed(() -> { + if (longPressedBotButton == pressedBotButton) { + if (!currentMessageObject.scheduled) { + BotButton button2 = botButtons.get(pressedBotButton); + if (button2.button != null) { + cancelCheckLongPress(); + delegate.didLongPressBotButton(this, button2.button); + } + } + pressedBotButton = -1; + invalidate(); + } + }, ViewConfiguration.getLongPressTimeout() - 1); break; } } @@ -2384,6 +2452,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (!result) { result = checkCaptionMotionEvent(event); } + if (!result) { + result = checkTranscribeButtonMotionEvent(event); + } if (!result) { result = checkAudioMotionEvent(event); } @@ -2852,7 +2923,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } invalidate(); } else if (documentAttach != null) { - if (useSeekBarWaweform) { + if (useSeekBarWaveform) { if (!seekBarWaveform.isDragging()) { seekBarWaveform.setProgress(currentMessageObject.audioProgress, true); } @@ -3070,6 +3141,15 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (buttonState == -1) { delegate.didPressImage(this, lastTouchX, lastTouchY); } + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // open message options then + if (delegate != null) { + if (currentMessageObject.type == 16) { + delegate.didLongPress(this, 0, 0); + } else { + delegate.didPressOther(this, otherX, otherY); + } + } } } @@ -3134,7 +3214,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } else if (currentPhotoObject == null || currentPhotoObject.location instanceof TLRPC.TL_fileLocationUnavailable) { return object.type == MessageObject.TYPE_PHOTO || object.type == MessageObject.TYPE_ROUND_VIDEO || object.type == MessageObject.TYPE_VIDEO || object.type == 8 || object.isAnyKindOfSticker(); } else if (currentMessageObject != null && photoNotSet) { - File cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); + File cacheFile = FileLoader.getInstance(currentAccount).getPathToMessage(currentMessageObject.messageOwner); return cacheFile.exists(); } return false; @@ -3374,8 +3454,8 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate radialProgress.onAttachedToWindow(); videoRadialProgress.onAttachedToWindow(); - avatarImage.onAttachedToWindow(); avatarImage.setParentView((View) getParent()); + avatarImage.onAttachedToWindow(); if (pollAvatarImages != null) { for (int a = 0; a < pollAvatarImages.length; a++) { pollAvatarImages[a].onAttachedToWindow(); @@ -3439,10 +3519,8 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate newReply != lastReplyMessage; boolean groupChanged = groupedMessages != currentMessagesGroup; boolean pollChanged = false; - if (dataChanged || messageChanged || messageIdChanged) { - accessibilityText = null; - } - if (drawCommentButton || drawSideButton == 3 && !((hasDiscussion && messageObject.isLinkedToChat(linkedChatId) || isRepliesChat) && (currentPosition == null || currentPosition.siblingHeights == null && (currentPosition.flags & MessageObject.POSITION_FLAG_BOTTOM) != 0 || currentPosition.siblingHeights != null && (currentPosition.flags & MessageObject.POSITION_FLAG_TOP) == 0))) { + accessibilityText = null; + if (drawCommentButton || useTranscribeButton || drawSideButton == 3 && !((hasDiscussion && messageObject.isLinkedToChat(linkedChatId) || isRepliesChat) && (currentPosition == null || currentPosition.siblingHeights == null && (currentPosition.flags & MessageObject.POSITION_FLAG_BOTTOM) != 0 || currentPosition.siblingHeights != null && (currentPosition.flags & MessageObject.POSITION_FLAG_TOP) == 0))) { dataChanged = true; } if (!messageChanged && messageObject.isDice()) { @@ -3479,6 +3557,24 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } animatePollAvatars = lastPollResultsVoters == 0 || lastPollResultsVoters != 0 && newVoters == 0; } + if (!messageIdChanged && newPoll != null && lastPoll.quiz && newPoll.quiz && currentMessageObject != null && !pollVoted && messageObject != null && messageObject.isVoted()) { + TLRPC.TL_messageMediaPoll mediaPoll = (TLRPC.TL_messageMediaPoll) messageObject.messageOwner.media; + if (mediaPoll.results != null && !mediaPoll.results.results.isEmpty()) { + TLRPC.TL_pollAnswerVoters chosenAnswer = null; + int a; + final int count = mediaPoll.results.results.size(); + for (a = 0; a < count; a++) { + TLRPC.TL_pollAnswerVoters answer = mediaPoll.results.results.get(a); + if (answer.chosen) { + chosenAnswer = answer; + break; + } + } + if (chosenAnswer != null) { + sendAccessibilityEventForVirtualView(MessageAccessibilityNodeProvider.POLL_BUTTONS_START + a, AccessibilityEvent.TYPE_VIEW_SELECTED, chosenAnswer.correct ? LocaleController.getString("AccDescrQuizCorrectAnswer", R.string.AccDescrQuizCorrectAnswer) : LocaleController.getString("AccDescrQuizIncorrectAnswer", R.string.AccDescrQuizIncorrectAnswer)); + } + } + } } if (!groupChanged && groupedMessages != null) { MessageObject.GroupedMessagePosition newPosition; @@ -3524,11 +3620,14 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate lastDeleteDate = messageObject.messageOwner.destroyTime; lastViewsCount = messageObject.messageOwner.views; lastRepliesCount = getRepliesCount(); - isPressed = false; + if (messageIdChanged) { + isPressed = false; + isCheckPressed = true; + } gamePreviewPressed = false; sideButtonPressed = false; - isCheckPressed = true; hasNewLineForTime = false; + flipImage = false; isThreadPost = isThreadChat && messageObject.messageOwner.fwd_from != null && messageObject.messageOwner.fwd_from.channel_post != 0; isAvatarVisible = !isThreadPost && isChat && !messageObject.isOutOwner() && messageObject.needDrawAvatar() && (currentPosition == null || currentPosition.edge); boolean drawAvatar = isChat && !isThreadPost && !messageObject.isOutOwner() && messageObject.needDrawAvatar(); @@ -3638,7 +3737,8 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate photoNotSet = false; drawBackground = true; drawName = false; - useSeekBarWaweform = false; + useSeekBarWaveform = false; + useTranscribeButton = false; drawInstantView = false; drawInstantViewType = 0; drawForwardedName = false; @@ -3657,6 +3757,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate imageBackgroundSideColor = 0; mediaBackground = false; isMedia = false; + photoImage.animatedFileDrawableRepeatMaxCount = 0; hasPsaHint = messageObject.messageOwner.fwd_from != null && !TextUtils.isEmpty(messageObject.messageOwner.fwd_from.psa_type); if (hasPsaHint) { createSelectorDrawable(0); @@ -4035,7 +4136,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } String site_name; String title; - String author; + CharSequence author; String description; TLRPC.Photo photo; TLRPC.Document document; @@ -4223,6 +4324,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate linkPreviewHeight += AndroidUtilities.dp(2); totalHeight += AndroidUtilities.dp(2); } + try { + author = Emoji.replaceEmoji(author, Theme.chat_replyNamePaint.getFontMetricsInt(), AndroidUtilities.dp(14), false); + } catch (Exception ignore) {} if (restLinesCount == 3 && (!isSmallImage || description == null)) { authorLayout = new StaticLayout(author, Theme.chat_replyNamePaint, linkPreviewMaxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); } else { @@ -4557,6 +4661,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate maxPhotoWidth = AndroidUtilities.roundMessageSize; photoImage.setAllowDecodeSingleFrame(true); } + if (hasInvoicePreview && maxPhotoWidth < messageObject.textWidth) { + maxPhotoWidth = messageObject.textWidth + AndroidUtilities.dp(22); + } maxChildWidth = Math.max(maxChildWidth, maxPhotoWidth - (hasInvoicePreview ? AndroidUtilities.dp(12) : 0) + additinalWidth); if (currentPhotoObject != null) { @@ -4668,6 +4775,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_STICKER) { boolean isWebpSticker = messageObject.isSticker(); + if (!SharedConfig.loopStickers && messageObject.isVideoSticker()) { + photoImage.animatedFileDrawableRepeatMaxCount = 1; + } if (SharedConfig.loopStickers || (isWebpSticker && !messageObject.isVideoSticker())) { photoImage.setAutoRepeat(1); } else { @@ -4709,7 +4819,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate autoPlayingMedia = true; TLRPC.VideoSize videoSize = MessageObject.getDocumentVideoThumb(document); if (!messageObject.mediaExists && videoSize != null && (currentPhotoObject == null || currentPhotoObjectThumb == null)) { - photoImage.setImage(ImageLocation.getForDocument(document), document.size < 1024 * 32 ? null : ImageLoader.AUTOPLAY_FILTER, ImageLocation.getForDocument(videoSize, documentAttach), null, ImageLocation.getForDocument(currentPhotoObject != null ? currentPhotoObject : currentPhotoObjectThumb, documentAttach), currentPhotoObject != null ? filter : currentPhotoFilterThumb, currentPhotoObjectThumbStripped, document.size, null, messageObject, 0); + photoImage.setImage(ImageLocation.getForDocument(document), document.size < 1024 * 32 ? null : ImageLoader.AUTOPLAY_FILTER, ImageLocation.getForDocument(videoSize, documentAttach), null, ImageLocation.getForDocument(currentPhotoObject != null ? currentPhotoObject : currentPhotoObjectThumb, documentAttach), currentPhotoObject != null ? filter : currentPhotoFilterThumb, currentPhotoObjectThumbStripped, document.size, null, messageObject, 0); // TODO: Here } else { photoImage.setImage(ImageLocation.getForDocument(document), document.size < 1024 * 32 ? null : ImageLoader.AUTOPLAY_FILTER, ImageLocation.getForDocument(currentPhotoObject, documentAttach), filter, ImageLocation.getForDocument(currentPhotoObjectThumb, documentAttach), currentPhotoFilterThumb, currentPhotoObjectThumbStripped, document.size, null, messageObject, 0); } @@ -5295,7 +5405,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (drawPinnedTop) { namesOffset -= AndroidUtilities.dp(1); } - insantTextNewLine = false; + instantTextNewLine = false; if (media.poll.public_voters || media.poll.multiple_choice) { int instantTextWidth = 0; for (int a = 0; a < 3; a++) { @@ -5312,7 +5422,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate int timeWidthTotal = timeWidth + (messageObject.isOutOwner() ? AndroidUtilities.dp(20) : 0) + getExtraTimeX(); if (!reactionsLayoutInBubble.isSmall && reactionsLayoutInBubble.isEmpty && timeWidthTotal >= (backgroundWidth - AndroidUtilities.dp(76) - instantTextWidth) / 2) { totalHeight += AndroidUtilities.dp(18); - insantTextNewLine = true; + instantTextNewLine = true; } } if (!reactionsLayoutInBubble.isSmall) { @@ -5716,8 +5826,13 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate photoImage.setRoundRadius(0); canChangeRadius = false; + if (!messageObject.isOutOwner() && MessageObject.isPremiumSticker(messageObject.getDocument())) { + flipImage = true; + } if (messageObject.isVideoSticker()) { - // photoImage.setAspectFit(true); + if (!SharedConfig.loopStickers) { + photoImage.animatedFileDrawableRepeatMaxCount = 1; + } photoImage.setImage(ImageLocation.getForDocument(messageObject.getDocument()), ImageLoader.AUTOPLAY_FILTER, null, null, messageObject.pathThumb, @@ -6372,20 +6487,35 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate // if ((currentPosition == null || currentMessageObject.isMusic() || currentMessageObject.isDocument()) && !messageObject.isAnyKindOfSticker() && addedCaptionHeight == 0) { - if (!messageObject.isRestrictedMessage && captionLayout == null && messageObject.caption != null) { + if (!messageObject.isRestrictedMessage && captionLayout == null && (messageObject.caption != null || messageObject.isVoiceTranscriptionOpen())) { + currentCaption = messageObject.isVoiceTranscriptionOpen() ? messageObject.getVoiceTranscription() : messageObject.caption; + if (currentCaption != null && !TextUtils.isEmpty(messageObject.messageOwner.voiceTranscription) && currentMessageObject.isVoiceTranscriptionOpen() && !currentMessageObject.messageOwner.voiceTranscriptionFinal) { + currentCaption += " "; + if (!(currentCaption instanceof Spannable)) { + currentCaption = new SpannableString(currentCaption); + } + ((SpannableString) currentCaption).setSpan(new TranscribeButton.LoadingPointsSpan(), currentCaption.length() - 1, currentCaption.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } try { - currentCaption = messageObject.caption; - int width = backgroundWidth - AndroidUtilities.dp(31); - int widthForCaption = width - AndroidUtilities.dp(10) - getExtraTextX() * 2; + int width = backgroundWidth; + if (messageObject.isVoiceTranscriptionOpen()) { + if (AndroidUtilities.isTablet()) { + width = AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(drawAvatar ? 102 : 50); + } else { + width = getParentWidth() - AndroidUtilities.dp(drawAvatar ? 102 : 50); + } + } + int widthForCaption = width - AndroidUtilities.dp(31) - AndroidUtilities.dp(10) - getExtraTextX() * 2; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - captionLayout = StaticLayout.Builder.obtain(messageObject.caption, 0, messageObject.caption.length(), Theme.chat_msgTextPaint, widthForCaption) + captionLayout = StaticLayout.Builder.obtain(currentCaption, 0, currentCaption.length(), Theme.chat_msgTextPaint, widthForCaption) .setBreakStrategy(StaticLayout.BREAK_STRATEGY_HIGH_QUALITY) .setHyphenationFrequency(StaticLayout.HYPHENATION_FREQUENCY_NONE) .setAlignment(Layout.Alignment.ALIGN_NORMAL) .build(); } else { - captionLayout = new StaticLayout(messageObject.caption, Theme.chat_msgTextPaint, widthForCaption, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + captionLayout = new StaticLayout(currentCaption, Theme.chat_msgTextPaint, widthForCaption, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); } + updateSeekBarWaveformWidth(); updateCaptionSpoilers(); } catch (Exception e) { FileLog.e(e); @@ -6393,6 +6523,16 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } if (captionLayout != null) { try { + if (messageObject.isVoiceTranscriptionOpen()) { + float startMaxWidth = backgroundWidth - AndroidUtilities.dp(31) - AndroidUtilities.dp(10) - getExtraTextX() * 2, maxWidth = startMaxWidth; + for (int i = 0; i < captionLayout.getLineCount(); ++i) { + float captionLineWidth = captionLayout.getLineWidth(i); + if (captionLineWidth > maxWidth) { + maxWidth = captionLineWidth; + } + } + backgroundWidth += maxWidth - startMaxWidth; + } int width = backgroundWidth - AndroidUtilities.dp(31); if (captionLayout != null && captionLayout.getLineCount() > 0) { captionWidth = width; @@ -6581,7 +6721,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (b == row.buttons.size() - 1) { maxButtonsWidth = Math.max(maxButtonsWidth, botButton.x + botButton.width); } - if (messageObject.isFromUser() && botButton.button instanceof TLRPC.TL_keyboardButtonUrl) { // TODO(dkaraush): or instanceof TLRPC.TL_keyboardButtonInvite in the future + if (messageObject.isFromUser() && botButton.button instanceof TLRPC.TL_keyboardButtonUrl) { try { final Uri uri = Uri.parse(botButton.button.url); final String host = uri.getHost().toLowerCase(); @@ -6696,6 +6836,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } photoImage.setRoundRadius(tl, tr, br, bl); } + if (currentMessageObject != null && currentMessageObject.viewRef != null && (currentMessageObject.viewRef.get() == null || currentMessageObject.viewRef.get().get() != this)) { + currentMessageObject.viewRef.set(new WeakReference<>(this)); + } } if (messageIdChanged) { currentUrl = null; @@ -6719,8 +6862,12 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate seekBarWaveform.setProgress(0); } + if (transcribeButton != null) { + transcribeButton.setOpen(currentMessageObject.messageOwner != null && currentMessageObject.messageOwner.voiceTranscriptionOpen && currentMessageObject.messageOwner.voiceTranscriptionFinal, !messageIdChanged); + transcribeButton.setLoading(TranscribeButton.isTranscribing(currentMessageObject), !messageIdChanged); + } updateWaveform(); - updateButtonState(false, dataChanged && !messageObject.cancelEditing, true); + updateButtonState(false, !messageIdChanged && !messageObject.cancelEditing, true); if (!currentMessageObject.loadingCancelled && buttonState == 2 && documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO && DownloadController.getInstance(currentAccount).canDownloadMedia(messageObject)) { FileLoader.getInstance(currentAccount).loadFile(documentAttach, currentMessageObject, 1, 0); @@ -6940,7 +7087,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate isCheckPressed = value; isPressed = pressed; updateRadialProgressBackground(); - if (useSeekBarWaweform) { + if (useSeekBarWaveform) { seekBarWaveform.setSelected(isDrawSelectionBackground()); } else { seekBar.setSelected(isDrawSelectionBackground()); @@ -7022,7 +7169,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } updateRadialProgressBackground(); - if (useSeekBarWaweform) { + if (useSeekBarWaveform) { seekBarWaveform.setSelected(isDrawSelectionBackground()); } else { seekBar.setSelected(isDrawSelectionBackground()); @@ -7037,7 +7184,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate public void setPressed(boolean pressed) { super.setPressed(pressed); updateRadialProgressBackground(); - if (useSeekBarWaweform) { + if (useSeekBarWaveform) { seekBarWaveform.setSelected(isDrawSelectionBackground()); } else { seekBar.setSelected(isDrawSelectionBackground()); @@ -7091,11 +7238,27 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (attribute.waveform == null || attribute.waveform.length == 0) { MediaController.getInstance().generateWaveform(currentMessageObject); } - useSeekBarWaweform = attribute.waveform != null; + useSeekBarWaveform = attribute.waveform != null; seekBarWaveform.setWaveform(attribute.waveform); break; } } + useTranscribeButton = currentMessageObject.isVoice() && useSeekBarWaveform && currentMessageObject.messageOwner != null && !(currentMessageObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage) && UserConfig.getInstance(currentAccount).isPremium(); + updateSeekBarWaveformWidth(); + } + + private void updateSeekBarWaveformWidth() { + if (seekBarWaveform != null) { + int offset = -AndroidUtilities.dp(92 + (hasLinkPreview ? 10 : 0)) - AndroidUtilities.dp(useTranscribeButton ? 34 : 0); + if (transitionParams.animateBackgroundBoundsInner && documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { + int fromBackgroundWidth = this.backgroundWidth; + int toBackgroundWidth = (int) (this.backgroundWidth - transitionParams.toDeltaLeft + transitionParams.toDeltaRight); + int backgroundWidth = (int) (this.backgroundWidth - transitionParams.deltaLeft + transitionParams.deltaRight); + seekBarWaveform.setSize(backgroundWidth + offset, AndroidUtilities.dp(30), fromBackgroundWidth + offset, toBackgroundWidth + offset); + } else { + seekBarWaveform.setSize(backgroundWidth + offset, AndroidUtilities.dp(30)); + } + } } private int createDocumentLayout(int maxWidth, MessageObject messageObject) { @@ -7247,6 +7410,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate int lastLineWidth = (reactionsLayoutInBubble.isEmpty || reactionsLayoutInBubble.isSmall) ? currentMessageObject.lastLineWidth : reactionsLayoutInBubble.lastLineX; if (!reactionsLayoutInBubble.isEmpty && !reactionsLayoutInBubble.isSmall) { newLineForTime = maxWidth - lastLineWidth < timeMore || currentMessageObject.hasRtl; + if (hasInvoicePreview) { + totalHeight += AndroidUtilities.dp(14); + } } else { newLineForTime = hasLinkPreview || hasOldCaptionPreview || hasGamePreview || hasInvoicePreview || maxWidth - lastLineWidth < timeMore || currentMessageObject.hasRtl; } @@ -7367,7 +7533,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate @Override public void invalidateDrawable(Drawable drawable) { super.invalidateDrawable(drawable); - if (currentMessagesGroup != null && drawable == selectorDrawable[1]) { + if (currentMessagesGroup != null) { invalidateWithParent(); } } @@ -7456,7 +7622,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate path.reset(); boolean out = currentMessageObject != null && currentMessageObject.isOutOwner(); for (int a = 0; a < 4; a++) { - if (!insantTextNewLine) { + if (!instantTextNewLine) { if (a == 2 && !out) { radii[a * 2] = radii[a * 2 + 1] = AndroidUtilities.dp(SharedConfig.bubbleRadius); continue; @@ -7739,7 +7905,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate buttonX += AndroidUtilities.dp(10); timeAudioX += AndroidUtilities.dp(10); } - seekBarWaveform.setSize(backgroundWidth - AndroidUtilities.dp(92 + (hasLinkPreview ? 10 : 0)), AndroidUtilities.dp(30)); + updateSeekBarWaveformWidth(); seekBar.setSize(backgroundWidth - AndroidUtilities.dp(72 + (hasLinkPreview ? 10 : 0)), AndroidUtilities.dp(30)); seekBarY = AndroidUtilities.dp(13) + namesOffset + mediaOffsetY; buttonY = AndroidUtilities.dp(13) + namesOffset + mediaOffsetY; @@ -8057,11 +8223,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate buttonY = (transitionParams.animateFromButtonY * (1f - transitionParams.animateChangeProgress) + this.buttonY * (transitionParams.animateChangeProgress)); radialProgress.setProgressRect((int) buttonX, (int) buttonY, (int) buttonX + AndroidUtilities.dp(44), (int) buttonY + AndroidUtilities.dp(44)); } - if (transitionParams.animateBackgroundBoundsInner && documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { - int backgroundWidth = (int) (this.backgroundWidth - transitionParams.deltaLeft + transitionParams.deltaRight); - seekBarWaveform.setSize(backgroundWidth - AndroidUtilities.dp(92 + (hasLinkPreview ? 10 : 0)), AndroidUtilities.dp(30)); - seekBar.setSize(backgroundWidth - AndroidUtilities.dp(72 + (hasLinkPreview ? 10 : 0)), AndroidUtilities.dp(30)); - } + updateSeekBarWaveformWidth(); forceNotDrawTime = currentMessagesGroup != null; photoImage.setPressed((isHighlightedAnimated || isHighlighted) && currentPosition != null ? 2 : 0); photoImage.setVisible(!PhotoViewer.isShowingImage(currentMessageObject) && !SecretMediaViewer.getInstance().isShowingImage(currentMessageObject), false); @@ -8209,10 +8371,18 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate photoImage.setSideClip(0); } if (delegate == null || delegate.getPinchToZoomHelper() == null || !delegate.getPinchToZoomHelper().isInOverlayModeFor(this)) { - imageDrawn = photoImage.draw(canvas); + if (flipImage) { + canvas.save(); + canvas.scale(-1f, 1, photoImage.getCenterX(), photoImage.getCenterY()); + photoImage.draw(canvas); + canvas.restore(); + } else { + imageDrawn = photoImage.draw(canvas); + } } boolean drawTimeOld = drawTime; - drawTime = photoImage.getVisible(); + boolean groupPhotoVisible = photoImage.getVisible(); + drawTime = groupPhotoVisible || currentMessageObject.shouldDrawReactionsInLayout() && currentMessageObject.hasReactions(); if (currentPosition != null && drawTimeOld != drawTime) { ViewGroup viewGroup = (ViewGroup) getParent(); if (viewGroup != null) { @@ -8228,7 +8398,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (cell.getCurrentMessagesGroup() == currentMessagesGroup) { MessageObject.GroupedMessagePosition position = cell.getCurrentPosition(); if (position.last && position.maxY == currentPosition.maxY && cell.timeX - AndroidUtilities.dp(4) + cell.getLeft() < getRight()) { - cell.groupPhotoInvisible = !drawTime; + cell.groupPhotoInvisible = !groupPhotoVisible; cell.invalidate(); viewGroup.invalidate(); } @@ -8401,7 +8571,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate timeAudioX -= offset; } canvas.save(); - if (useSeekBarWaweform) { + if (useSeekBarWaveform) { canvas.translate(seekBarX + AndroidUtilities.dp(13), seekBarY); seekBarWaveform.draw(canvas, this); } else { @@ -8410,6 +8580,24 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } canvas.restore(); + if (useTranscribeButton) { + canvas.save(); + int backgroundWidth = this.backgroundWidth; + if (transitionParams.animateBackgroundBoundsInner && documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { + backgroundWidth = (int) (this.backgroundWidth - transitionParams.deltaLeft + transitionParams.deltaRight); + } + int seekBarWidth = backgroundWidth - AndroidUtilities.dp(92 + (hasLinkPreview ? 10 : 0) + 36); + canvas.translate(transcribeX = seekBarX + AndroidUtilities.dp(13 + 8) + seekBarWidth, transcribeY = seekBarY); + if (transcribeButton == null) { + transcribeButton = new TranscribeButton(this, seekBarWaveform); + transcribeButton.setOpen(currentMessageObject.messageOwner != null && currentMessageObject.messageOwner.voiceTranscriptionOpen && currentMessageObject.messageOwner.voiceTranscriptionFinal, false); + transcribeButton.setLoading(TranscribeButton.isTranscribing(currentMessageObject), false); + } + transcribeButton.setColor(currentMessageObject.isOut(), getThemedColor(currentMessageObject.isOutOwner() ? Theme.key_chat_outReactionButtonBackground : Theme.key_chat_inReactionButtonBackground), getThemedColor(Theme.key_windowBackgroundWhiteGrayText)); + transcribeButton.draw(canvas); + canvas.restore(); + } + canvas.save(); canvas.translate(timeAudioX, AndroidUtilities.dp(44) + namesOffset + mediaOffsetY); durationLayout.draw(canvas); @@ -8579,6 +8767,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate canvas.save(); canvas.translate(x, subtitleY); if (buttonState == 1 && loadingProgressLayout != null) { +// loadingProgressLayout.copyStylesFrom(Theme.chat_infoPaint); loadingProgressLayout.draw(canvas); } else { infoLayout.draw(canvas); @@ -9144,7 +9333,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } try { Emoji.emojiDrawingYOffset = -transitionYOffsetForDrawables; - SpoilerEffect.renderWithRipple(this, invalidateSpoilersParent, spoilersColor, 0, block.spoilersPatchedTextLayout, block.textLayout, block.spoilers, canvas); + SpoilerEffect.renderWithRipple(this, invalidateSpoilersParent, spoilersColor, 0, block.spoilersPatchedTextLayout, block.textLayout, block.spoilers, canvas, false); Emoji.emojiDrawingYOffset = 0; } catch (Exception e) { FileLog.e(e); @@ -9735,7 +9924,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (miniButtonState == 0) { miniButtonState = 1; radialProgress.setProgress(0, false); - currentMessageObject.putInDownloadsStore = true; + if (currentMessageObject != null && !currentMessageObject.isAnyKindOfSticker()) { + currentMessageObject.putInDownloadsStore = true; + } if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { FileLoader.getInstance(currentAccount).loadFile(documentAttach, currentMessageObject, 1, 0); currentMessageObject.loadingCancelled = false; @@ -9761,7 +9952,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } private void didPressButton(boolean animated, boolean video) { - if (currentMessageObject != null) { + if (currentMessageObject != null && !currentMessageObject.isAnyKindOfSticker()) { currentMessageObject.putInDownloadsStore = true; } if (buttonState == 0 && (!drawVideoImageButton || video)) { @@ -10032,7 +10223,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } else { if (!lottieDrawable.hasBaseDice() && stickerSet.documents.size() > 0) { TLRPC.Document document = stickerSet.documents.get(0); - File path = FileLoader.getPathToAttach(document, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(document, true); if (lottieDrawable.setBaseDice(path)) { DownloadController.getInstance(currentAccount).removeLoadingFileObserver(this); } else { @@ -10049,7 +10240,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } } TLRPC.Document document = stickerSet.documents.get(Math.max(value, 0)); - File path = FileLoader.getPathToAttach(document, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(document, true); if (lottieDrawable.setDiceNumber(path, instant)) { DownloadController.getInstance(currentAccount).removeLoadingFileObserver(this); } else { @@ -10192,6 +10383,18 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate w = (int) Math.ceil(Theme.chat_infoPaint.measureText(str)); } loadingProgressLayout = new StaticLayout(str, Theme.chat_infoPaint, w, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); +// if (loadingProgressLayout != null) { +// loadingProgressLayout.copyStylesFrom(Theme.chat_infoPaint); +// loadingProgressLayout.setBounds(0, 0, w, (int) Theme.chat_infoPaint.getTextSize()); +// loadingProgressLayout.setText(str, true); +// } else { +// loadingProgressLayout = new AnimatedTextView.AnimatedTextDrawable(false, true, true); +// loadingProgressLayout.setAnimationProperties(0.3f, 0, 140, CubicBezierInterpolator.EASE_OUT); +// loadingProgressLayout.setCallback(this); +// loadingProgressLayout.copyStylesFrom(Theme.chat_infoPaint); +// loadingProgressLayout.setBounds(0, 0, w, (int) Theme.chat_infoPaint.getTextSize()); +// loadingProgressLayout.setText(str, false); +// } } @@ -10454,7 +10657,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate currentPhoto = null; } avatarDrawable.setInfo(currentUser); - avatarImage.setForUserOrChat(currentUser, avatarDrawable); + avatarImage.setForUserOrChat(currentUser, avatarDrawable, null, true); } else if (currentChat != null) { if (currentChat.photo != null) { currentPhoto = currentChat.photo.photo_small; @@ -10568,6 +10771,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } nameStringFinal = TextUtils.ellipsize(nameStringFinal, Theme.chat_namePaint, nameWidth, TextUtils.TruncateAt.END); } + try { + nameStringFinal = Emoji.replaceEmoji(nameStringFinal, Theme.chat_namePaint.getFontMetricsInt(), AndroidUtilities.dp(14), false); + } catch (Exception ignore) {} try { nameLayout = new StaticLayout(nameStringFinal, Theme.chat_namePaint, nameWidth + AndroidUtilities.dp(2), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); if (nameLayout.getLineCount() > 0) { @@ -10665,6 +10871,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } lastLine = stringBuilder; lastLine = TextUtils.ellipsize(lastLine, Theme.chat_forwardNamePaint, forwardedNameWidth, TextUtils.TruncateAt.END); + try { + lastLine = Emoji.replaceEmoji(lastLine, Theme.chat_forwardNamePaint.getFontMetricsInt(), AndroidUtilities.dp(14), false); + } catch (Exception ignore) {}; try { forwardedNameLayout[1] = new StaticLayout(lastLine, Theme.chat_forwardNamePaint, forwardedNameWidth + AndroidUtilities.dp(2), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); lastLine = TextUtils.ellipsize(AndroidUtilities.replaceTags(forwardedString), Theme.chat_forwardNamePaint, forwardedNameWidth, TextUtils.TruncateAt.END); @@ -10855,7 +11064,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } } CharSequence stringFinalName = name == null ? "" : TextUtils.ellipsize(name.replace('\n', ' '), Theme.chat_replyNamePaint, maxWidth, TextUtils.TruncateAt.END); - + try { + stringFinalName = Emoji.replaceEmoji(stringFinalName, Theme.chat_replyNamePaint.getFontMetricsInt(), AndroidUtilities.dp(14), false); + } catch (Exception ignore) {} try { replyNameWidth = AndroidUtilities.dp(4 + (needReplyImage ? 44 : 0)); if (stringFinalName != null) { @@ -11539,6 +11750,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate currentBackgroundSelectedDrawable.drawCached(canvas, backgroundCacheParams); } } else if (selectedBackgroundProgress != 0 && !(currentMessagesGroup != null && currentMessagesGroup.isDocuments)) { + currentBackgroundDrawable.setAlpha((int) (255 * alphaInternal)); currentBackgroundDrawable.drawCached(canvas, backgroundCacheParams); currentSelectedBackgroundAlpha = selectedBackgroundProgress; currentBackgroundSelectedDrawable.setAlpha((int) (currentSelectedBackgroundAlpha * alphaInternal * 255)); @@ -12328,7 +12540,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate canvas.translate(forwardNameX, replyStartY + AndroidUtilities.dp(19)); int spoilersColor = currentMessageObject.isOut() && !ChatObject.isChannelAndNotMegaGroup(currentMessageObject.getChatId(), currentAccount) ? getThemedColor(Theme.key_chat_outTimeText) : replyTextLayout.getPaint().getColor(); - SpoilerEffect.renderWithRipple(this, invalidateSpoilersParent, spoilersColor, -AndroidUtilities.dp(2), spoilersPatchedReplyTextLayout, replyTextLayout, replySpoilers, canvas); + SpoilerEffect.renderWithRipple(this, invalidateSpoilersParent, spoilersColor, -AndroidUtilities.dp(2), spoilersPatchedReplyTextLayout, replyTextLayout, replySpoilers, canvas, false); canvas.restore(); } } @@ -12449,6 +12661,10 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate drawCaptionLayout(canvas, captionLayout, selectionOnly, alpha); } + if (currentMessageObject != null && currentMessageObject.messageOwner != null && currentMessageObject.isVoiceTranscriptionOpen() && !currentMessageObject.messageOwner.voiceTranscriptionFinal && TranscribeButton.isTranscribing(currentMessageObject)) { + invalidate(); + } + if (!selectionOnly && (currentPosition == null || ((currentPosition.flags & MessageObject.POSITION_FLAG_BOTTOM) != 0 && (currentPosition.flags & MessageObject.POSITION_FLAG_LEFT) != 0)) && !reactionsLayoutInBubble.isSmall) { if (reactionsLayoutInBubble.drawServiceShaderBackground) { applyServiceShaderMatrix(); @@ -12461,7 +12677,6 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate reactionsLayoutInBubble.draw(canvas, transitionParams.animateChange ? transitionParams.animateChangeProgress : 1f, null); canvas.restore(); } - } } @@ -12561,6 +12776,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (currentMessagesGroup.transitionParams.backgroundChangeBounds) { ly -= getTranslationY(); } + } else { + int backgroundWidth = (int) (this.backgroundWidth - transitionParams.deltaLeft + transitionParams.deltaRight); + endX = x + backgroundWidth - AndroidUtilities.dp(12); } canvas.drawLine(x, ly, endX - AndroidUtilities.dp(14), ly, Theme.chat_replyLinePaint); } @@ -12730,7 +12948,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } else if (transitionParams.moveCaption) { captionX = this.captionX * transitionParams.animateChangeProgress + transitionParams.captionFromX * (1f - transitionParams.animateChangeProgress); captionY = this.captionY * transitionParams.animateChangeProgress + transitionParams.captionFromY * (1f - transitionParams.animateChangeProgress); - } else { + } else if (!currentMessageObject.isVoice() || !TextUtils.isEmpty(currentMessageObject.caption)) { captionX += transitionParams.deltaLeft; } } @@ -12741,16 +12959,16 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate restore = canvas.saveLayerAlpha(rect, (int) (255 * renderingAlpha), Canvas.ALL_SAVE_FLAG); } if (transitionParams.animateBackgroundBoundsInner && currentBackgroundDrawable != null && currentMessagesGroup == null) { - Rect r = currentBackgroundDrawable.getBounds(); + int bottomoffset = (drawCommentButton && commentButtonRect != null ? commentButtonRect.height() : 0) + (reactionsLayoutInBubble != null && !reactionsLayoutInBubble.isSmall ? reactionsLayoutInBubble.height : 0); if (currentMessageObject.isOutOwner() && !mediaBackground && !pinnedBottom) { canvas.clipRect( getBackgroundDrawableLeft() + transitionParams.deltaLeft + AndroidUtilities.dp(4), getBackgroundDrawableTop() + transitionParams.deltaTop + AndroidUtilities.dp(4), - getBackgroundDrawableRight() + transitionParams.deltaRight - AndroidUtilities.dp(10), getBackgroundDrawableBottom() + transitionParams.deltaBottom - AndroidUtilities.dp(4) + getBackgroundDrawableRight() + transitionParams.deltaRight - AndroidUtilities.dp(10), getBackgroundDrawableBottom() + transitionParams.deltaBottom - AndroidUtilities.dp(4) - bottomoffset ); } else { canvas.clipRect( getBackgroundDrawableLeft() + transitionParams.deltaLeft + AndroidUtilities.dp(4), getBackgroundDrawableTop() + transitionParams.deltaTop + AndroidUtilities.dp(4), - getBackgroundDrawableRight() + transitionParams.deltaRight - AndroidUtilities.dp(4), getBackgroundDrawableBottom() + transitionParams.deltaBottom - AndroidUtilities.dp(4) + getBackgroundDrawableRight() + transitionParams.deltaRight - AndroidUtilities.dp(4), getBackgroundDrawableBottom() + transitionParams.deltaBottom - AndroidUtilities.dp(4) - bottomoffset ); } } @@ -12772,7 +12990,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate Emoji.emojiDrawingYOffset = -transitionYOffsetForDrawables; int spoilersColor = currentMessageObject.isOut() && !ChatObject.isChannelAndNotMegaGroup(currentMessageObject.getChatId(), currentAccount) ? getThemedColor(Theme.key_chat_outTimeText) : captionLayout.getPaint().getColor(); - SpoilerEffect.renderWithRipple(this, invalidateSpoilersParent, spoilersColor, 0, captionPatchedSpoilersLayout, captionLayout, captionSpoilers, canvas); + SpoilerEffect.renderWithRipple(this, invalidateSpoilersParent, spoilersColor, 0, captionPatchedSpoilersLayout, captionLayout, captionSpoilers, canvas, currentMessagesGroup != null); Emoji.emojiDrawingYOffset = 0; } catch (Exception e) { @@ -12801,7 +13019,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate return; } for (int i = 0; i < 2; i++) { - float curentAplha = alpha; + float currentAlpha = alpha; if (i == 0 && isDrawSelectionBackground() && currentSelectedBackgroundAlpha == 1f && !shouldDrawTimeOnMedia()) { continue; } else if (i == 1 && ((!isDrawSelectionBackground() && currentSelectedBackgroundAlpha == 0) || shouldDrawTimeOnMedia())) { @@ -12809,21 +13027,21 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } boolean drawSelectionBackground = i == 1; if (i == 1) { - curentAplha *= currentSelectedBackgroundAlpha; + currentAlpha *= currentSelectedBackgroundAlpha; } else if (!shouldDrawTimeOnMedia()) { - curentAplha *= (1f - currentSelectedBackgroundAlpha); + currentAlpha *= (1f - currentSelectedBackgroundAlpha); } if (transitionParams.animateShouldDrawTimeOnMedia && transitionParams.animateChangeProgress != 1f) { if (shouldDrawTimeOnMedia()) { overideShouldDrawTimeOnMedia = 1; - drawTimeInternal(canvas, curentAplha * transitionParams.animateChangeProgress, fromParent, this.timeX, timeLayout, timeWidth, drawSelectionBackground); + drawTimeInternal(canvas, currentAlpha * transitionParams.animateChangeProgress, fromParent, this.timeX, timeLayout, timeWidth, drawSelectionBackground); overideShouldDrawTimeOnMedia = 2; - drawTimeInternal(canvas, curentAplha * (1f - transitionParams.animateChangeProgress), fromParent, transitionParams.animateFromTimeX, transitionParams.animateTimeLayout, transitionParams.animateTimeWidth, drawSelectionBackground); + drawTimeInternal(canvas, currentAlpha * (1f - transitionParams.animateChangeProgress), fromParent, transitionParams.animateFromTimeX, transitionParams.animateTimeLayout, transitionParams.animateTimeWidth, drawSelectionBackground); } else { overideShouldDrawTimeOnMedia = 2; - drawTimeInternal(canvas, curentAplha * transitionParams.animateChangeProgress, fromParent, this.timeX, timeLayout, timeWidth, drawSelectionBackground); + drawTimeInternal(canvas, currentAlpha * transitionParams.animateChangeProgress, fromParent, this.timeX, timeLayout, timeWidth, drawSelectionBackground); overideShouldDrawTimeOnMedia = 1; - drawTimeInternal(canvas, curentAplha * (1f - transitionParams.animateChangeProgress), fromParent, transitionParams.animateFromTimeX, transitionParams.animateTimeLayout, transitionParams.animateTimeWidth, drawSelectionBackground); + drawTimeInternal(canvas, currentAlpha * (1f - transitionParams.animateChangeProgress), fromParent, transitionParams.animateFromTimeX, transitionParams.animateTimeLayout, transitionParams.animateTimeWidth, drawSelectionBackground); } overideShouldDrawTimeOnMedia = 0; } else { @@ -12836,7 +13054,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate timeX = this.timeX + transitionParams.deltaRight; timeWidth = this.timeWidth; } - drawTimeInternal(canvas, curentAplha, fromParent, timeX, timeLayout, timeWidth, drawSelectionBackground); + drawTimeInternal(canvas, currentAlpha, fromParent, timeX, timeLayout, timeWidth, drawSelectionBackground); } } @@ -13108,7 +13326,6 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate boolean drawCheck2 = (currentStatus & 2) != 0; boolean drawClock = (currentStatus & 4) != 0; boolean drawError = (currentStatus & 8) != 0; - boolean isBroadcast = (currentStatus & 16) != 0; boolean needRestore = false; if (transitionYOffsetForDrawables != 0) { needRestore = true; @@ -13120,15 +13337,14 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate boolean outDrawCheck2 = (animateFromStatusDrawableParams & 2) != 0; boolean outDrawClock = (animateFromStatusDrawableParams & 4) != 0; boolean outDrawError = (animateFromStatusDrawableParams & 8) != 0; - boolean outIsBroadcast = (animateFromStatusDrawableParams & 16) != 0; - if (!outDrawClock && !isBroadcast && !outIsBroadcast && outDrawCheck2 && drawCheck2 && !outDrawCheck1 && drawCheck1) { - drawStatusDrawable(canvas, drawCheck1, drawCheck2, drawClock, drawError, isBroadcast, alpha, bigRadius, timeYOffset, layoutHeight, statusDrawableProgress, true, drawSelectionBackground); + if (!outDrawClock && outDrawCheck2 && drawCheck2 && !outDrawCheck1 && drawCheck1) { + drawStatusDrawable(canvas, drawCheck1, drawCheck2, drawClock, drawError, alpha, bigRadius, timeYOffset, layoutHeight, statusDrawableProgress, true, drawSelectionBackground); } else { - drawStatusDrawable(canvas, outDrawCheck1, outDrawCheck2, outDrawClock, outDrawError, outIsBroadcast, alpha, bigRadius, timeYOffset, layoutHeight, 1f - statusDrawableProgress, false, drawSelectionBackground); - drawStatusDrawable(canvas, drawCheck1, drawCheck2, drawClock, drawError, isBroadcast, alpha, bigRadius, timeYOffset, layoutHeight, statusDrawableProgress, false, drawSelectionBackground); + drawStatusDrawable(canvas, outDrawCheck1, outDrawCheck2, outDrawClock, outDrawError, alpha, bigRadius, timeYOffset, layoutHeight, 1f - statusDrawableProgress, false, drawSelectionBackground); + drawStatusDrawable(canvas, drawCheck1, drawCheck2, drawClock, drawError, alpha, bigRadius, timeYOffset, layoutHeight, statusDrawableProgress, false, drawSelectionBackground); } } else { - drawStatusDrawable(canvas, drawCheck1, drawCheck2, drawClock, drawError, isBroadcast, alpha, bigRadius, timeYOffset, layoutHeight, 1, false, drawSelectionBackground); + drawStatusDrawable(canvas, drawCheck1, drawCheck2, drawClock, drawError, alpha, bigRadius, timeYOffset, layoutHeight, 1, false, drawSelectionBackground); } if (needRestore) { canvas.restore(); @@ -13144,14 +13360,12 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate private void createStatusDrawableAnimator(int lastStatusDrawableParams, int currentStatus, boolean fromParent) { boolean drawCheck1 = (currentStatus & 1) != 0; boolean drawCheck2 = (currentStatus & 2) != 0; - boolean isBroadcast = (currentStatus & 16) != 0; boolean outDrawCheck1 = (lastStatusDrawableParams & 1) != 0; boolean outDrawCheck2 = (lastStatusDrawableParams & 2) != 0; boolean outDrawClock = (lastStatusDrawableParams & 4) != 0; - boolean outIsBroadcast = (lastStatusDrawableParams & 16) != 0; - boolean moveCheckTransition = !outDrawClock && !isBroadcast && !outIsBroadcast && outDrawCheck2 && drawCheck2 && !outDrawCheck1 && drawCheck1; + boolean moveCheckTransition = !outDrawClock && outDrawCheck2 && drawCheck2 && !outDrawCheck1 && drawCheck1; if (transitionParams.messageEntering && !moveCheckTransition) { return; @@ -13455,7 +13669,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } } - private void drawStatusDrawable(Canvas canvas, boolean drawCheck1, boolean drawCheck2, boolean drawClock, boolean drawError, boolean isBroadcast, float alpha, boolean bigRadius, float timeYOffset, float layoutHeight, float progress, boolean moveCheck, boolean drawSelectionBackground) { + private void drawStatusDrawable(Canvas canvas, boolean drawCheck1, boolean drawCheck2, boolean drawClock, boolean drawError, float alpha, boolean bigRadius, float timeYOffset, float layoutHeight, float progress, boolean moveCheck, boolean drawSelectionBackground) { final boolean useScale = progress != 1f && !moveCheck; float scale = 0.5f + 0.5f * progress; if (useScale) { @@ -13493,17 +13707,34 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } invalidate(); } - if (isBroadcast) { - if (drawCheck1 || drawCheck2) { + if (drawCheck2) { + if (shouldDrawTimeOnMedia()) { Drawable drawable; - if (shouldDrawTimeOnMedia()) { - setDrawableBounds(Theme.chat_msgBroadcastMediaDrawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 26 : 24) - Theme.chat_msgBroadcastMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(14.0f) - Theme.chat_msgBroadcastMediaDrawable.getIntrinsicHeight() + timeYOffset); - Theme.chat_msgBroadcastMediaDrawable.setAlpha((int) (255 * alpha)); - drawable = Theme.chat_msgBroadcastMediaDrawable; + if (moveCheck) { + canvas.save(); + } + if (currentMessageObject.shouldDrawWithoutBackground()) { + drawable = getThemedDrawable(Theme.key_drawable_msgStickerCheck); + if (drawCheck1) { + if (moveCheck) { + canvas.translate(AndroidUtilities.dp(4.8f) * (1f - progress), 0); + } + setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 28.3f : 26.3f) - drawable.getIntrinsicWidth(), timeY - drawable.getIntrinsicHeight() + timeYOffset); + } else { + setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 23.5f : 21.5f) - drawable.getIntrinsicWidth(), timeY - drawable.getIntrinsicHeight() + timeYOffset); + } + drawable.setAlpha((int) (255 * timeAlpha * alpha)); } else { - setDrawableBounds(Theme.chat_msgBroadcastDrawable, layoutWidth - AndroidUtilities.dp(20.5f) - Theme.chat_msgBroadcastDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.0f) - Theme.chat_msgBroadcastDrawable.getIntrinsicHeight() + timeYOffset); - Theme.chat_msgBroadcastDrawable.setAlpha((int) (255 * alpha)); - drawable = Theme.chat_msgBroadcastDrawable; + if (drawCheck1) { + if (moveCheck) { + canvas.translate(AndroidUtilities.dp(4.8f) * (1f - progress), 0); + } + setDrawableBounds(Theme.chat_msgMediaCheckDrawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 28.3f : 26.3f) - Theme.chat_msgMediaCheckDrawable.getIntrinsicWidth(), timeY - Theme.chat_msgMediaCheckDrawable.getIntrinsicHeight() + timeYOffset); + } else { + setDrawableBounds(Theme.chat_msgMediaCheckDrawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 23.5f : 21.5f) - Theme.chat_msgMediaCheckDrawable.getIntrinsicWidth(), timeY - Theme.chat_msgMediaCheckDrawable.getIntrinsicHeight() + timeYOffset); + } + Theme.chat_msgMediaCheckDrawable.setAlpha((int) (255 * timeAlpha * alpha)); + drawable = Theme.chat_msgMediaCheckDrawable; } if (useScale) { canvas.save(); @@ -13513,115 +13744,67 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (useScale) { canvas.restore(); } + if (moveCheck) { + canvas.restore(); + } + drawable.setAlpha(255); + } else { + Drawable drawable; + if (moveCheck) { + canvas.save(); + } + if (drawCheck1) { + if (moveCheck) { + canvas.translate(AndroidUtilities.dp(4) * (1f - progress), 0); + } + drawable = getThemedDrawable(drawSelectionBackground ? Theme.key_drawable_msgOutCheckReadSelected : Theme.key_drawable_msgOutCheckRead); + setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(22.5f) - drawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(pinnedBottom || pinnedTop ? 9 : 8) - drawable.getIntrinsicHeight() + timeYOffset); + } else { + drawable = getThemedDrawable(drawSelectionBackground ? Theme.key_drawable_msgOutCheckSelected : Theme.key_drawable_msgOutCheck); + setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(18.5f) - drawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(pinnedBottom || pinnedTop ? 9 : 8) - drawable.getIntrinsicHeight() + timeYOffset); + } + drawable.setAlpha((int) (255 * alpha)); + if (useScale) { + canvas.save(); + canvas.scale(scale, scale, drawable.getBounds().centerX(), drawable.getBounds().centerY()); + } + drawable.draw(canvas); + if (useScale) { + canvas.restore(); + } + if (moveCheck) { + canvas.restore(); + } drawable.setAlpha(255); } - } else { - if (drawCheck2) { - if (shouldDrawTimeOnMedia()) { - Drawable drawable; - if (moveCheck) { - canvas.save(); - } - if (currentMessageObject.shouldDrawWithoutBackground()) { - drawable = getThemedDrawable(Theme.key_drawable_msgStickerCheck); - if (drawCheck1) { - if (moveCheck) { - canvas.translate(AndroidUtilities.dp(4.8f) * (1f - progress), 0); - } - setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 28.3f : 26.3f) - drawable.getIntrinsicWidth(), timeY - drawable.getIntrinsicHeight() + timeYOffset); - } else { - setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 23.5f : 21.5f) - drawable.getIntrinsicWidth(), timeY - drawable.getIntrinsicHeight() + timeYOffset); - } - drawable.setAlpha((int) (255 * timeAlpha * alpha)); - } else { - if (drawCheck1) { - if (moveCheck) { - canvas.translate(AndroidUtilities.dp(4.8f) * (1f - progress), 0); - } - setDrawableBounds(Theme.chat_msgMediaCheckDrawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 28.3f : 26.3f) - Theme.chat_msgMediaCheckDrawable.getIntrinsicWidth(), timeY - Theme.chat_msgMediaCheckDrawable.getIntrinsicHeight() + timeYOffset); - } else { - setDrawableBounds(Theme.chat_msgMediaCheckDrawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 23.5f : 21.5f) - Theme.chat_msgMediaCheckDrawable.getIntrinsicWidth(), timeY - Theme.chat_msgMediaCheckDrawable.getIntrinsicHeight() + timeYOffset); - } - Theme.chat_msgMediaCheckDrawable.setAlpha((int) (255 * timeAlpha * alpha)); - drawable = Theme.chat_msgMediaCheckDrawable; - } - if (useScale) { - canvas.save(); - canvas.scale(scale, scale, drawable.getBounds().centerX(), drawable.getBounds().centerY()); - } - drawable.draw(canvas); - if (useScale) { - canvas.restore(); - } - if (moveCheck) { - canvas.restore(); - } - drawable.setAlpha(255); - } else { - Drawable drawable; - if (moveCheck) { - canvas.save(); - } - if (drawCheck1) { - if (moveCheck) { - canvas.translate(AndroidUtilities.dp(4) * (1f - progress), 0); - } - drawable = getThemedDrawable(drawSelectionBackground ? Theme.key_drawable_msgOutCheckReadSelected : Theme.key_drawable_msgOutCheckRead); - setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(22.5f) - drawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(pinnedBottom || pinnedTop ? 9 : 8) - drawable.getIntrinsicHeight() + timeYOffset); - } else { - drawable = getThemedDrawable(drawSelectionBackground ? Theme.key_drawable_msgOutCheckSelected : Theme.key_drawable_msgOutCheck); - setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(18.5f) - drawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(pinnedBottom || pinnedTop ? 9 : 8) - drawable.getIntrinsicHeight() + timeYOffset); - } - drawable.setAlpha((int) (255 * alpha)); - if (useScale) { - canvas.save(); - canvas.scale(scale, scale, drawable.getBounds().centerX(), drawable.getBounds().centerY()); - } - drawable.draw(canvas); - if (useScale) { - canvas.restore(); - } - if (moveCheck) { - canvas.restore(); - } - drawable.setAlpha(255); + } + if (drawCheck1) { + if (shouldDrawTimeOnMedia()) { + Drawable drawable = currentMessageObject.shouldDrawWithoutBackground() ? getThemedDrawable(Theme.key_drawable_msgStickerHalfCheck) : Theme.chat_msgMediaHalfCheckDrawable; + setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 23.5f : 21.5f) - drawable.getIntrinsicWidth(), timeY - drawable.getIntrinsicHeight() + timeYOffset); + drawable.setAlpha((int) (255 * timeAlpha * alpha)); + if (useScale || moveCheck) { + canvas.save(); + canvas.scale(scale, scale, drawable.getBounds().centerX(), drawable.getBounds().centerY()); } - } - if (drawCheck1) { - if (shouldDrawTimeOnMedia()) { - Drawable drawable; - if (currentMessageObject.shouldDrawWithoutBackground()) { - drawable = getThemedDrawable(Theme.key_drawable_msgStickerHalfCheck); - setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 23.5f : 21.5f) - drawable.getIntrinsicWidth(), timeY - drawable.getIntrinsicHeight() + timeYOffset); - drawable.setAlpha((int) (255 * timeAlpha * alpha)); - } else { - drawable = Theme.chat_msgMediaHalfCheckDrawable; - setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(bigRadius ? 23.5f : 21.5f) - drawable.getIntrinsicWidth(), timeY - drawable.getIntrinsicHeight() + timeYOffset); - drawable.setAlpha((int) (255 * timeAlpha * alpha)); - } - if (useScale || moveCheck) { - canvas.save(); - canvas.scale(scale, scale, drawable.getBounds().centerX(), drawable.getBounds().centerY()); - } - drawable.draw(canvas); - if (useScale || moveCheck) { - canvas.restore(); - } - drawable.setAlpha(255); - } else { - Drawable drawable = getThemedDrawable(drawSelectionBackground ? Theme.key_drawable_msgOutHalfCheckSelected : Theme.key_drawable_msgOutHalfCheck); - setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(18) - drawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(pinnedBottom || pinnedTop ? 9 : 8) - drawable.getIntrinsicHeight() + timeYOffset); - drawable.setAlpha((int) (255 * alpha)); - if (useScale || moveCheck) { - canvas.save(); - canvas.scale(scale, scale, drawable.getBounds().centerX(), drawable.getBounds().centerY()); - } - drawable.draw(canvas); - if (useScale || moveCheck) { - canvas.restore(); - } - drawable.setAlpha(255); + drawable.draw(canvas); + if (useScale || moveCheck) { + canvas.restore(); } + drawable.setAlpha(255); + } else { + Drawable drawable = getThemedDrawable(drawSelectionBackground ? Theme.key_drawable_msgOutHalfCheckSelected : Theme.key_drawable_msgOutHalfCheck); + setDrawableBounds(drawable, layoutWidth - AndroidUtilities.dp(18) - drawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(pinnedBottom || pinnedTop ? 9 : 8) - drawable.getIntrinsicHeight() + timeYOffset); + drawable.setAlpha((int) (255 * alpha)); + if (useScale || moveCheck) { + canvas.save(); + canvas.scale(scale, scale, drawable.getBounds().centerX(), drawable.getBounds().centerY()); + } + drawable.draw(canvas); + if (useScale || moveCheck) { + canvas.restore(); + } + drawable.setAlpha(255); } } if (drawError) { @@ -13743,6 +13926,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (drawLoadingProgress && loadingProgressLayout != null) { imageW = 0; infoW = (int) loadingProgressLayout.getLineWidth(0); +// infoW = loadingProgressLayout.getCurrentWidth(); } else { infoW = infoWidth; } @@ -13788,6 +13972,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate Theme.chat_infoPaint.setAlpha((int) (255 * controlsAlpha * alpha)); canvas.translate(0, AndroidUtilities.dp(14.3f * alpha)); } +// loadingProgressLayout.copyStylesFrom(Theme.chat_infoPaint); loadingProgressLayout.draw(canvas); canvas.restore(); } else if (drawDocTitleLayout) { @@ -14587,6 +14772,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate @Override public boolean performAccessibilityAction(int action, Bundle arguments) { + if (delegate != null && delegate.onAccessibilityAction(action, arguments)) { + return false; + } if (action == AccessibilityNodeInfo.ACTION_CLICK) { int icon = getIconForCurrentState(); if (icon != MediaActionDrawable.ICON_NONE && icon != MediaActionDrawable.ICON_FILE) { @@ -14607,8 +14795,18 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate delegate.didPressOther(this, otherX, otherY); } } + } else if (action == R.id.acc_action_open_forwarded_origin) { + if (delegate != null) { + if (currentForwardChannel != null) { + delegate.didPressChannelAvatar(ChatMessageCell.this, currentForwardChannel, currentMessageObject.messageOwner.fwd_from.channel_post, lastTouchX, lastTouchY); + } else if (currentForwardUser != null) { + delegate.didPressUserAvatar(ChatMessageCell.this, currentForwardUser, lastTouchX, lastTouchY); + } else if (currentForwardName != null) { + delegate.didPressHiddenForward(ChatMessageCell.this); + } + } } - if (currentMessageObject.isVoice() || currentMessageObject.isMusic() && MediaController.getInstance().isPlayingMessage(currentMessageObject)) { + if (currentMessageObject.isVoice() || currentMessageObject.isRoundVideo() || currentMessageObject.isMusic() && MediaController.getInstance().isPlayingMessage(currentMessageObject)) { if (seekBarAccessibilityDelegate.performAccessibilityActionInternal(action, arguments)) { return true; } @@ -14661,11 +14859,18 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } private void sendAccessibilityEventForVirtualView(int viewId, int eventType) { + sendAccessibilityEventForVirtualView(viewId, eventType, null); + } + + private void sendAccessibilityEventForVirtualView(int viewId, int eventType, String text) { AccessibilityManager am = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); if (am.isTouchExplorationEnabled()) { AccessibilityEvent event = AccessibilityEvent.obtain(eventType); event.setPackageName(getContext().getPackageName()); event.setSource(ChatMessageCell.this, viewId); + if (text != null) { + event.getText().add(text); + } if (getParent() != null) { getParent().requestSendAccessibilityEvent(ChatMessageCell.this, event); } @@ -14868,22 +15073,40 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate return seekBar; } + public SeekBarWaveform getSeekBarWaveform() { + return seekBarWaveform; + } + private class MessageAccessibilityNodeProvider extends AccessibilityNodeProvider { - private final int LINK_IDS_START = 2000; - private final int LINK_CAPTION_IDS_START = 3000; - private final int BOT_BUTTONS_START = 1000; - private final int POLL_BUTTONS_START = 500; - private final int INSTANT_VIEW = 499; - private final int SHARE = 498; - private final int REPLY = 497; - private final int COMMENT = 496; - private final int POLL_HINT = 495; - private final int FORWARD = 494; + public static final int PROFILE = 5000; + public static final int LINK_IDS_START = 2000; + public static final int LINK_CAPTION_IDS_START = 3000; + public static final int BOT_BUTTONS_START = 1000; + public static final int POLL_BUTTONS_START = 500; + public static final int INSTANT_VIEW = 499; + public static final int SHARE = 498; + public static final int REPLY = 497; + public static final int COMMENT = 496; + public static final int POLL_HINT = 495; + public static final int FORWARD = 494; private Path linkPath = new Path(); private RectF rectF = new RectF(); private Rect rect = new Rect(); + private class ProfileSpan extends ClickableSpan { + private TLRPC.User user; + public ProfileSpan(TLRPC.User user) { + this.user = user; + } + @Override + public void onClick(@NonNull View view) { + if (delegate != null) { + delegate.didPressUserAvatar(ChatMessageCell.this, user, 0, 0); + } + } + } + @Override public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { int[] pos = {0, 0}; @@ -14895,6 +15118,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate SpannableStringBuilder sb = new SpannableStringBuilder(); if (isChat && currentUser != null && !currentMessageObject.isOut()) { sb.append(UserObject.getUserName(currentUser)); + sb.setSpan(new ProfileSpan(currentUser), 0, sb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); sb.append('\n'); } if (drawForwardedName) { @@ -14915,13 +15139,6 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate final String key = sending ? "AccDescrUploadProgress" : "AccDescrDownloadProgress"; final int resId = sending ? R.string.AccDescrUploadProgress : R.string.AccDescrDownloadProgress; sb.append(LocaleController.formatString(key, resId, AndroidUtilities.formatFileSize(currentMessageObject.loadedFileSize), AndroidUtilities.formatFileSize(lastLoadingSizeTotal))); - } else if (buttonState == 0 || documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { - sb.append(", "); - sb.append(AndroidUtilities.formatFileSize(documentAttach.size)); - } - if (documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO) { - sb.append(", "); - sb.append(LocaleController.formatDuration(currentMessageObject.getDuration())); } } if (currentMessageObject.isMusic()) { @@ -14932,9 +15149,11 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } else if (currentMessageObject.isVoice() || isRoundVideo) { sb.append(", "); sb.append(LocaleController.formatDuration(currentMessageObject.getDuration())); + sb.append(", "); if (currentMessageObject.isContentUnread()) { - sb.append(", "); sb.append(LocaleController.getString("AccDescrMsgNotPlayed", R.string.AccDescrMsgNotPlayed)); + } else { + sb.append(LocaleController.getString("AccDescrMsgPlayed", R.string.AccDescrMsgPlayed)); } } if (lastPoll != null) { @@ -14963,6 +15182,16 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate sb.append("\n"); sb.append(currentMessageObject.caption); } + if (documentAttach != null) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO) { + sb.append(", "); + sb.append(LocaleController.formatDuration(currentMessageObject.getDuration())); + } + if (buttonState == 0 || documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { + sb.append(", "); + sb.append(AndroidUtilities.formatFileSize(documentAttach.size)); + } + } if (currentMessageObject.isOut()) { if (currentMessageObject.isSent()) { sb.append("\n"); @@ -14988,6 +15217,51 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate sb.append("\n"); sb.append(LocaleController.formatString("AccDescrReceivedDate", R.string.AccDescrReceivedDate, LocaleController.getString("TodayAt", R.string.TodayAt) + " " + currentTimeString)); } + if (getRepliesCount() > 0 && !hasCommentLayout()) { + sb.append("\n"); + sb.append(LocaleController.formatPluralString("AccDescrNumberOfReplies", getRepliesCount())); + } + if (currentMessageObject.messageOwner.reactions != null && currentMessageObject.messageOwner.reactions.results != null) { + if (currentMessageObject.messageOwner.reactions.results.size() == 1) { + TLRPC.TL_reactionCount reaction = currentMessageObject.messageOwner.reactions.results.get(0); + if (reaction.count == 1) { + sb.append("\n"); + boolean isMe = false; + String userName = ""; + if (currentMessageObject.messageOwner.reactions.recent_reactions != null && currentMessageObject.messageOwner.reactions.recent_reactions.size() == 1) { + TLRPC.TL_messagePeerReaction recentReaction = currentMessageObject.messageOwner.reactions.recent_reactions.get(0); + if (recentReaction != null) { + TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(MessageObject.getPeerId(recentReaction.peer_id)); + isMe = UserObject.isUserSelf(user); + if (user != null) { + userName = UserObject.getFirstName(user); + } + } + } + if (isMe) { + sb.append(LocaleController.formatString("AccDescrYouReactedWith", R.string.AccDescrYouReactedWith, reaction.reaction)); + } else { + sb.append(LocaleController.formatString("AccDescrReactedWith", R.string.AccDescrReactedWith, userName, reaction.reaction)); + } + } else if (reaction.count > 1) { + sb.append("\n"); + sb.append(LocaleController.formatPluralString("AccDescrNumberOfPeopleReactions", reaction.count, reaction.reaction)); + } + } else { + sb.append(LocaleController.getString("Reactions", R.string.Reactions)).append((": ")); + final int count = currentMessageObject.messageOwner.reactions.results.size(); + for (int i = 0; i < count; ++i) { + TLRPC.TL_reactionCount reactionCount = currentMessageObject.messageOwner.reactions.results.get(i); + if (reactionCount != null) { + sb.append(reactionCount.reaction).append(" ").append(reactionCount.count + ""); + if (i + 1 < count) { + sb.append(", "); + } + } + } + sb.append("\n"); + } + } if ((currentMessageObject.messageOwner.flags & TLRPC.MESSAGE_FLAG_HAS_VIEWS) != 0) { sb.append("\n"); sb.append(LocaleController.formatPluralString("AccDescrNumberOfViews", currentMessageObject.messageOwner.views)); @@ -15004,7 +15278,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate ClickableSpan underlineSpan = new ClickableSpan() { @Override public void onClick(View view) { - if (delegate != null) { + if (link instanceof ProfileSpan) { + ((ProfileSpan) link).onClick(view); + } else if (delegate != null) { delegate.didPressUrl(ChatMessageCell.this, link, false); } } @@ -15063,12 +15339,15 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); } - if ((currentMessageObject.isVoice() || currentMessageObject.isMusic()) && MediaController.getInstance().isPlayingMessage(currentMessageObject)) { + if ((currentMessageObject.isVoice() || currentMessageObject.isRoundVideo() || currentMessageObject.isMusic()) && MediaController.getInstance().isPlayingMessage(currentMessageObject)) { seekBarAccessibilityDelegate.onInitializeAccessibilityNodeInfoInternal(info); } int i; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { + if (isChat && currentUser != null && !currentMessageObject.isOut()) { + info.addChild(ChatMessageCell.this, PROFILE); + } if (currentMessageObject.messageText instanceof Spannable) { Spannable buffer = (Spannable) currentMessageObject.messageText; CharacterStyle[] links = buffer.getSpans(0, buffer.length(), ClickableSpan.class); @@ -15114,7 +15393,11 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate info.addChild(ChatMessageCell.this, REPLY); } if (forwardedNameLayout[0] != null && forwardedNameLayout[1] != null) { - info.addChild(ChatMessageCell.this, FORWARD); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + info.addAction(new AccessibilityNodeInfo.AccessibilityAction(R.id.acc_action_open_forwarded_origin, LocaleController.getString("AccActionOpenForwardedOrigin", R.string.AccActionOpenForwardedOrigin))); + } else { + info.addChild(ChatMessageCell.this, FORWARD); + } } if (drawSelectionBackground || getBackground() != null) { info.setSelected(true); @@ -15125,7 +15408,26 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate info.setSource(ChatMessageCell.this, virtualViewId); info.setParent(ChatMessageCell.this); info.setPackageName(getContext().getPackageName()); - if (virtualViewId >= LINK_CAPTION_IDS_START) { + if (virtualViewId == PROFILE) { + if (currentUser == null) { + return null; + } + String content = UserObject.getUserName(currentUser); + info.setText(content); + rect.set((int) nameX, (int) nameY, (int) (nameX + nameWidth), (int) (nameY + (nameLayout != null ? nameLayout.getHeight() : 10))); + info.setBoundsInParent(rect); + if (accessibilityVirtualViewBounds.get(virtualViewId) == null) { + accessibilityVirtualViewBounds.put(virtualViewId, new Rect(rect)); + } + rect.offset(pos[0], pos[1]); + info.setBoundsInScreen(rect); + info.setClassName("android.widget.TextView"); + info.setEnabled(true); + info.setClickable(true); + info.setLongClickable(true); + info.addAction(AccessibilityNodeInfo.ACTION_CLICK); + info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); + } else if (virtualViewId >= LINK_CAPTION_IDS_START) { if (!(currentMessageObject.caption instanceof Spannable) || captionLayout == null) { return null; } @@ -15230,8 +15532,8 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } else { info.setSelected(button.chosen); sb.append(", ").append(button.percent).append("%"); - if (lastPoll != null && lastPoll.quiz && button.correct) { - sb.append(", ").append(LocaleController.getString("AccDescrQuizCorrectAnswer", R.string.AccDescrQuizCorrectAnswer)); + if (lastPoll != null && lastPoll.quiz && (button.chosen || button.correct)) { + sb.append(", ").append(button.correct ? LocaleController.getString("AccDescrQuizCorrectAnswer", R.string.AccDescrQuizCorrectAnswer) : LocaleController.getString("AccDescrQuizIncorrectAnswer", R.string.AccDescrQuizIncorrectAnswer)); } } info.setText(sb); @@ -15341,8 +15643,19 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } else if (virtualViewId == COMMENT) { info.setClassName("android.widget.Button"); info.setEnabled(true); - if (commentLayout != null) { - info.setText(commentLayout.getText()); + int commentCount = getRepliesCount(); + String comment = null; + if (currentMessageObject != null && !currentMessageObject.shouldDrawWithoutBackground() && !currentMessageObject.isAnimatedEmoji()) { + if (isRepliesChat) { + comment = LocaleController.getString("ViewInChat", R.string.ViewInChat); + } else { + comment = commentCount == 0 ? LocaleController.getString("LeaveAComment", R.string.LeaveAComment) : LocaleController.formatPluralString("CommentsCount", commentCount); + } + } else if (!isRepliesChat && commentCount > 0) { + comment = LocaleController.formatShortNumber(commentCount, null); + } + if (comment != null) { + info.setText(comment); } info.addAction(AccessibilityNodeInfo.ACTION_CLICK); rect.set(commentButtonRect); @@ -15368,7 +15681,11 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (action == AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS) { sendAccessibilityEventForVirtualView(virtualViewId, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); } else if (action == AccessibilityNodeInfo.ACTION_CLICK) { - if (virtualViewId >= LINK_CAPTION_IDS_START) { + if (virtualViewId == PROFILE) { + if (delegate != null) { + delegate.didPressUserAvatar(ChatMessageCell.this, currentUser, 0, 0); + } + } else if (virtualViewId >= LINK_CAPTION_IDS_START) { ClickableSpan link = getLinkById(virtualViewId, true); if (link != null) { delegate.didPressUrl(ChatMessageCell.this, link, false); @@ -15451,6 +15768,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } private ClickableSpan getLinkById(int id, boolean caption) { + if (id == PROFILE) { + return null; + } if (caption) { id -= LINK_CAPTION_IDS_START; if (!(currentMessageObject.caption instanceof Spannable) || id < 0) { @@ -15613,6 +15933,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate public float deltaBottom; public float deltaTop; + // in animation, describe to what values deltaLeft and deltaRight moves to + public float toDeltaLeft, toDeltaRight; + public float animateToImageX, animateToImageY, animateToImageW, animateToImageH; public float captionFromX, captionFromY; private boolean moveCaption; @@ -15840,7 +16163,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (captionLayout != lastDrawingCaptionLayout) { String oldCaption = lastDrawingCaptionLayout == null ? null : lastDrawingCaptionLayout.getText().toString(); String currentCaption = captionLayout == null ? null : captionLayout.getText().toString(); - if (currentCaption != null && (oldCaption == null || !oldCaption.equals(currentCaption))) { + if ((currentCaption == null) != (oldCaption == null) || (oldCaption != null && !oldCaption.equals(currentCaption))) { animateReplaceCaptionLayout = true; animateOutCaptionLayout = lastDrawingCaptionLayout; changed = true; @@ -16021,6 +16344,8 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate deltaRight = 0; deltaBottom = 0; deltaTop = 0; + toDeltaLeft = 0; + toDeltaRight = 0; if (imageChangeBoundsTransition && animateToImageW != 0 && animateToImageH != 0) { photoImage.setImageCoords(animateToImageX, animateToImageY, animateToImageW, animateToImageH); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java index f85ae0489..a6eafa43e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java @@ -80,6 +80,7 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F private LetterDrawable letterDrawable; private int currentAccount = UserConfig.selectedAccount; private Object parentObject; + private Theme.ResourcesProvider resourcesProvider; private boolean needDivider; private boolean buttonPressed; @@ -128,25 +129,30 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F private ContextLinkCellDelegate delegate; public ContextLinkCell(Context context) { - this(context, false); + this(context, false, null); } public ContextLinkCell(Context context, boolean needsCheckBox) { + this(context, needsCheckBox, null); + } + + public ContextLinkCell(Context context, boolean needsCheckBox, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; linkImageView = new ImageReceiver(this); linkImageView.setLayerNum(1); linkImageView.setUseSharedAnimationQueue(true); - letterDrawable = new LetterDrawable(); + letterDrawable = new LetterDrawable(resourcesProvider); radialProgress = new RadialProgress2(this); TAG = DownloadController.getInstance(currentAccount).generateObserverTag(); setFocusable(true); if (needsCheckBox) { backgroundPaint = new Paint(); - backgroundPaint.setColor(Theme.getColor(Theme.key_sharedMedia_photoPlaceholder)); + backgroundPaint.setColor(Theme.getColor(Theme.key_sharedMedia_photoPlaceholder, resourcesProvider)); - checkBox = new CheckBox2(context, 21); + checkBox = new CheckBox2(context, 21, resourcesProvider); checkBox.setVisibility(INVISIBLE); checkBox.setColor(null, Theme.key_sharedMedia_photoPlaceholder, Theme.key_checkboxCheck); checkBox.setDrawUnchecked(false); @@ -502,6 +508,10 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F documentAttachType = DOCUMENT_ATTACH_TYPE_GIF; } requestLayout(); + fileName = null; + cacheFile = null; + fileExist = false; + resolvingFileName = false; updateButtonState(false, false); } @@ -530,6 +540,10 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F setAttachType(); documentAttachType = DOCUMENT_ATTACH_TYPE_GIF; requestLayout(); + fileName = null; + cacheFile = null; + fileExist = false; + resolvingFileName = false; updateButtonState(false, false); } @@ -717,7 +731,7 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F } if (descriptionLayout != null) { - Theme.chat_contextResult_descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); + Theme.chat_contextResult_descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2, resourcesProvider)); canvas.save(); canvas.translate(AndroidUtilities.dp(LocaleController.isRTL ? 8 : AndroidUtilities.leftBaseline), descriptionY); descriptionLayout.draw(canvas); @@ -725,7 +739,7 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F } if (linkLayout != null) { - Theme.chat_contextResult_descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkText)); + Theme.chat_contextResult_descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkText, resourcesProvider)); canvas.save(); canvas.translate(AndroidUtilities.dp(LocaleController.isRTL ? 8 : AndroidUtilities.leftBaseline), linkY); linkLayout.draw(canvas); @@ -739,7 +753,7 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F letterDrawable.setAlpha(255); } if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { - radialProgress.setProgressColor(Theme.getColor(buttonPressed ? Theme.key_chat_inAudioSelectedProgress : Theme.key_chat_inAudioProgress)); + radialProgress.setProgressColor(Theme.getColor(buttonPressed ? Theme.key_chat_inAudioSelectedProgress : Theme.key_chat_inAudioProgress, resourcesProvider)); radialProgress.draw(canvas); } else if (inlineResult != null && inlineResult.type.equals("file")) { int w = Theme.chat_inlineResultFile.getIntrinsicWidth(); @@ -838,93 +852,126 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F return buttonState == 1 ? MediaActionDrawable.ICON_EMPTY : MediaActionDrawable.ICON_NONE; } + boolean resolvingFileName; + String fileName; + File cacheFile = null; + int resolveFileNameId; + boolean fileExist; + private static int resolveFileIdPointer; + public void updateButtonState(boolean ifSame, boolean animated) { - String fileName = null; - File cacheFile = null; - if (documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { - if (documentAttach != null) { - fileName = FileLoader.getAttachFileName(documentAttach); - cacheFile = FileLoader.getPathToAttach(documentAttach); - } else if (inlineResult.content instanceof TLRPC.TL_webDocument) { - fileName = Utilities.MD5(inlineResult.content.url) + "." + ImageLoader.getHttpUrlExtension(inlineResult.content.url, documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC ? "mp3" : "ogg"); - cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); - } - } else if (mediaWebpage) { - if (inlineResult != null) { - if (inlineResult.document instanceof TLRPC.TL_document) { - fileName = FileLoader.getAttachFileName(inlineResult.document); - cacheFile = FileLoader.getPathToAttach(inlineResult.document); - } else if (inlineResult.photo instanceof TLRPC.TL_photo) { - currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(inlineResult.photo.sizes, AndroidUtilities.getPhotoSize(), true); - fileName = FileLoader.getAttachFileName(currentPhotoObject); - cacheFile = FileLoader.getPathToAttach(currentPhotoObject); - } else if (inlineResult.content instanceof TLRPC.TL_webDocument) { - fileName = Utilities.MD5(inlineResult.content.url) + "." + ImageLoader.getHttpUrlExtension(inlineResult.content.url, FileLoader.getMimeTypePart(inlineResult.content.mime_type)); - cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); - if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF && inlineResult.thumb instanceof TLRPC.TL_webDocument && "video/mp4".equals(inlineResult.thumb.mime_type)) { - fileName = null; + if (fileName == null && !resolvingFileName) { + resolvingFileName = true; + int localId = resolveFileNameId = resolveFileNameId++; + Utilities.searchQueue.postRunnable(new Runnable() { + @Override + public void run() { + String fileName = null; + File cacheFile = null; + if (documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { + if (documentAttach != null) { + fileName = FileLoader.getAttachFileName(documentAttach); + cacheFile = FileLoader.getInstance(currentAccount).getPathToAttach(documentAttach); + } else if (inlineResult.content instanceof TLRPC.TL_webDocument) { + fileName = Utilities.MD5(inlineResult.content.url) + "." + ImageLoader.getHttpUrlExtension(inlineResult.content.url, documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC ? "mp3" : "ogg"); + cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); + } + } else if (mediaWebpage) { + if (inlineResult != null) { + if (inlineResult.document instanceof TLRPC.TL_document) { + fileName = FileLoader.getAttachFileName(inlineResult.document); + cacheFile = FileLoader.getInstance(currentAccount).getPathToAttach(inlineResult.document); + } else if (inlineResult.photo instanceof TLRPC.TL_photo) { + currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(inlineResult.photo.sizes, AndroidUtilities.getPhotoSize(), true); + fileName = FileLoader.getAttachFileName(currentPhotoObject); + cacheFile = FileLoader.getInstance(currentAccount).getPathToAttach(currentPhotoObject); + } else if (inlineResult.content instanceof TLRPC.TL_webDocument) { + fileName = Utilities.MD5(inlineResult.content.url) + "." + ImageLoader.getHttpUrlExtension(inlineResult.content.url, FileLoader.getMimeTypePart(inlineResult.content.mime_type)); + cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); + if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF && inlineResult.thumb instanceof TLRPC.TL_webDocument && "video/mp4".equals(inlineResult.thumb.mime_type)) { + fileName = null; + } + } else if (inlineResult.thumb instanceof TLRPC.TL_webDocument) { + fileName = Utilities.MD5(inlineResult.thumb.url) + "." + ImageLoader.getHttpUrlExtension(inlineResult.thumb.url, FileLoader.getMimeTypePart(inlineResult.thumb.mime_type)); + cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); + } + } else if (documentAttach != null) { + fileName = FileLoader.getAttachFileName(documentAttach); + cacheFile = FileLoader.getInstance(currentAccount).getPathToAttach(documentAttach); + } + + if (documentAttach != null && documentAttachType == DOCUMENT_ATTACH_TYPE_GIF && MessageObject.getDocumentVideoThumb(documentAttach) != null) { + fileName = null; + } } - } else if (inlineResult.thumb instanceof TLRPC.TL_webDocument) { - fileName = Utilities.MD5(inlineResult.thumb.url) + "." + ImageLoader.getHttpUrlExtension(inlineResult.thumb.url, FileLoader.getMimeTypePart(inlineResult.thumb.mime_type)); - cacheFile = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); + String fileNameFinal = fileName; + File cacheFileFinal = cacheFile; + boolean fileExist = !TextUtils.isEmpty(fileName) && cacheFile.exists(); + AndroidUtilities.runOnUIThread(() -> { + resolvingFileName = false; + if (resolveFileNameId == localId) { + ContextLinkCell.this.fileName = fileNameFinal; + if (ContextLinkCell.this.fileName == null) { + ContextLinkCell.this.fileName = ""; + } + ContextLinkCell.this.cacheFile = cacheFileFinal; + ContextLinkCell.this.fileExist = fileExist; + } + updateButtonState(ifSame, true); + }); } - } else if (documentAttach != null) { - fileName = FileLoader.getAttachFileName(documentAttach); - cacheFile = FileLoader.getPathToAttach(documentAttach); - } - - if (documentAttach != null && documentAttachType == DOCUMENT_ATTACH_TYPE_GIF && MessageObject.getDocumentVideoThumb(documentAttach) != null) { - fileName = null; - } - } - - if (TextUtils.isEmpty(fileName)) { - buttonState = -1; + }); radialProgress.setIcon(MediaActionDrawable.ICON_NONE, ifSame, false); - return; - } - if (!cacheFile.exists()) { - DownloadController.getInstance(currentAccount).addLoadingFileObserver(fileName, this); - if (documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { - boolean isLoading; - if (documentAttach != null) { - isLoading = FileLoader.getInstance(currentAccount).isLoadingFile(fileName); - } else { - isLoading = ImageLoader.getInstance().isLoadingHttpFile(fileName); - } - if (!isLoading) { - buttonState = 2; - } else { - buttonState = 4; - Float progress = ImageLoader.getInstance().getFileProgress(fileName); - if (progress != null) { - radialProgress.setProgress(progress, animated); - } else { - radialProgress.setProgress(0, animated); - } - } - } else { - buttonState = 1; - Float progress = ImageLoader.getInstance().getFileProgress(fileName); - float setProgress = progress != null ? progress : 0; - radialProgress.setProgress(setProgress, false); - } } else { - DownloadController.getInstance(currentAccount).removeLoadingFileObserver(this); - if (documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { - boolean playing = MediaController.getInstance().isPlayingMessage(currentMessageObject); - if (!playing || playing && MediaController.getInstance().isMessagePaused()) { - buttonState = 0; + if (TextUtils.isEmpty(fileName)) { + buttonState = -1; + radialProgress.setIcon(MediaActionDrawable.ICON_NONE, ifSame, false); + return; + } + + boolean isLoading; + if (documentAttach != null) { + isLoading = FileLoader.getInstance(currentAccount).isLoadingFile(fileName); + } else { + isLoading = ImageLoader.getInstance().isLoadingHttpFile(fileName); + } + if (isLoading || !fileExist) { + DownloadController.getInstance(currentAccount).addLoadingFileObserver(fileName, this); + if (documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { + if (!isLoading) { + buttonState = 2; + } else { + buttonState = 4; + Float progress = ImageLoader.getInstance().getFileProgress(fileName); + if (progress != null) { + radialProgress.setProgress(progress, animated); + } else { + radialProgress.setProgress(0, animated); + } + } } else { buttonState = 1; + Float progress = ImageLoader.getInstance().getFileProgress(fileName); + float setProgress = progress != null ? progress : 0; + radialProgress.setProgress(setProgress, false); } - radialProgress.setProgress(1, animated); } else { - buttonState = -1; + DownloadController.getInstance(currentAccount).removeLoadingFileObserver(this); + if (documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { + boolean playing = MediaController.getInstance().isPlayingMessage(currentMessageObject); + if (!playing || playing && MediaController.getInstance().isMessagePaused()) { + buttonState = 0; + } else { + buttonState = 1; + } + radialProgress.setProgress(1, animated); + } else { + buttonState = -1; + } } + radialProgress.setIcon(getIconForCurrentState(), ifSame, animated); + invalidate(); } - radialProgress.setIcon(getIconForCurrentState(), ifSame, animated); - invalidate(); } public void setDelegate(ContextLinkCellDelegate contextLinkCellDelegate) { @@ -942,6 +989,7 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F @Override public void onSuccessDownload(String fileName) { + fileExist = true; radialProgress.setProgress(1, true); updateButtonState(false, true); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/CreationTextCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/CreationTextCell.java index 458abdb8f..219c3d651 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/CreationTextCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/CreationTextCell.java @@ -20,12 +20,16 @@ public class CreationTextCell extends FrameLayout { public int startPadding = 70; public CreationTextCell(Context context) { + this(context, null); + } + + public CreationTextCell(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); textView = new SimpleTextView(context); textView.setTextSize(16); textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText2)); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText2, resourcesProvider)); textView.setTag(Theme.key_windowBackgroundWhiteBlueText2); addView(textView); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java index 5f89d038c..12c543f6e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -19,6 +19,7 @@ import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; +import android.os.Bundle; import android.os.SystemClock; import android.text.Layout; import android.text.Spannable; @@ -31,6 +32,7 @@ import android.text.style.CharacterStyle; import android.text.style.ClickableSpan; import android.text.style.ReplacementSpan; import android.text.style.StyleSpan; +import android.util.Log; import android.view.HapticFeedbackConstants; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; @@ -66,6 +68,7 @@ import org.telegram.ui.Components.CheckBox2; import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.EmptyStubSpan; import org.telegram.ui.Components.ForegroundColorSpanThemable; +import org.telegram.ui.Components.Premium.PremiumGradient; import org.telegram.ui.Components.PullForegroundDrawable; import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.StaticLayoutEx; @@ -217,9 +220,6 @@ public class DialogCell extends BaseCell { private int nameLeft; private StaticLayout nameLayout; private boolean drawNameLock; - private boolean drawNameGroup; - private boolean drawNameBroadcast; - private boolean drawNameBot; private int nameMuteLeft; private int nameLockLeft; private int nameLockTop; @@ -288,6 +288,7 @@ public class DialogCell extends BaseCell { private StaticLayout mentionLayout; private boolean drawVerified; + private boolean drawPremium; private int drawScam; @@ -345,7 +346,7 @@ public class DialogCell extends BaseCell { currentAccount = account; if (needCheck) { - checkBox = new CheckBox2(context, 21); + checkBox = new CheckBox2(context, 21, resourcesProvider); checkBox.setColor(null, Theme.key_windowBackgroundWhite, Theme.key_checkboxCheck); checkBox.setDrawUnchecked(false); checkBox.setDrawBackgroundAsArc(3); @@ -552,6 +553,18 @@ public class DialogCell extends BaseCell { return (unreadCount != 0 || markUnread) && !dialogMuted; } + public boolean getHasUnread() { + return (unreadCount != 0 || markUnread); + } + + public boolean getIsMuted() { + return dialogMuted; + } + + public boolean getIsPinned() { + return drawPin; + } + private CharSequence formatArchivedDialogNames() { ArrayList dialogs = MessagesController.getInstance(currentAccount).getDialogs(currentDialogFolderId); currentDialogFolderDialogsCount = dialogs.size(); @@ -637,11 +650,9 @@ public class DialogCell extends BaseCell { TextPaint currentMessagePaint = Theme.dialogs_messagePaint[paintIndex]; boolean checkMessage = true; - drawNameGroup = false; - drawNameBroadcast = false; drawNameLock = false; - drawNameBot = false; drawVerified = false; + drawPremium = false; drawScam = 0; drawPinBackground = false; hasMessageThumb = false; @@ -649,7 +660,7 @@ public class DialogCell extends BaseCell { boolean showChecks = !UserObject.isUserSelf(user) && !useMeForMyMessages; boolean drawTime = true; printingStringType = -1; - int printigStingReplaceIndex = -1; + int printingStringReplaceIndex = -1; String messageFormat; boolean hasNameInMessage; @@ -706,40 +717,17 @@ public class DialogCell extends BaseCell { } } else { drawVerified = customDialog.verified; - if (SharedConfig.drawDialogIcons && customDialog.type == 1) { - drawNameGroup = true; - if (useForceThreeLines || SharedConfig.useThreeLinesLayout) { - nameLockTop = AndroidUtilities.dp(13.5f); - if (!LocaleController.isRTL) { - nameLockLeft = AndroidUtilities.dp(72 + 6); - nameLeft = AndroidUtilities.dp(72 + 10) + (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(72 + 6) - (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - nameLeft = AndroidUtilities.dp(22); - } + if (useForceThreeLines || SharedConfig.useThreeLinesLayout) { + if (!LocaleController.isRTL) { + nameLeft = AndroidUtilities.dp(72 + 6); } else { - if (!LocaleController.isRTL) { - nameLockTop = AndroidUtilities.dp(17.5f); - nameLockLeft = AndroidUtilities.dp(72 + 4); - nameLeft = AndroidUtilities.dp(72 + 8) + (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(72 + 4) - (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - nameLeft = AndroidUtilities.dp(18); - } + nameLeft = AndroidUtilities.dp(22); } } else { - if (useForceThreeLines || SharedConfig.useThreeLinesLayout) { - if (!LocaleController.isRTL) { - nameLeft = AndroidUtilities.dp(72 + 6); - } else { - nameLeft = AndroidUtilities.dp(22); - } + if (!LocaleController.isRTL) { + nameLeft = AndroidUtilities.dp(72 + 4); } else { - if (!LocaleController.isRTL) { - nameLeft = AndroidUtilities.dp(72 + 4); - } else { - nameLeft = AndroidUtilities.dp(18); - } + nameLeft = AndroidUtilities.dp(18); } } } @@ -840,41 +828,6 @@ public class DialogCell extends BaseCell { } else { drawVerified = chat.verified; } - if (SharedConfig.drawDialogIcons) { - if (useForceThreeLines || SharedConfig.useThreeLinesLayout) { - if (chat.id < 0 || ChatObject.isChannel(chat) && !chat.megagroup) { - drawNameBroadcast = true; - nameLockTop = AndroidUtilities.dp(12.5f); - } else { - drawNameGroup = true; - nameLockTop = AndroidUtilities.dp(13.5f); - } - - if (!LocaleController.isRTL) { - nameLockLeft = AndroidUtilities.dp(72 + 6); - nameLeft = AndroidUtilities.dp(72 + 10) + (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(72 + 6) - (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - nameLeft = AndroidUtilities.dp(22); - } - } else { - if (chat.id < 0 || ChatObject.isChannel(chat) && !chat.megagroup) { - drawNameBroadcast = true; - nameLockTop = AndroidUtilities.dp(16.5f); - } else { - drawNameGroup = true; - nameLockTop = AndroidUtilities.dp(17.5f); - } - - if (!LocaleController.isRTL) { - nameLockLeft = AndroidUtilities.dp(72 + 4); - nameLeft = AndroidUtilities.dp(72 + 8) + (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(72 + 4) - (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - nameLeft = AndroidUtilities.dp(18); - } - } - } } else if (user != null) { if (user.scam) { drawScam = 1; @@ -885,28 +838,7 @@ public class DialogCell extends BaseCell { } else { drawVerified = user.verified; } - if (SharedConfig.drawDialogIcons && user.bot) { - drawNameBot = true; - if (useForceThreeLines || SharedConfig.useThreeLinesLayout) { - nameLockTop = AndroidUtilities.dp(12.5f); - if (!LocaleController.isRTL) { - nameLockLeft = AndroidUtilities.dp(72 + 6); - nameLeft = AndroidUtilities.dp(72 + 10) + Theme.dialogs_botDrawable.getIntrinsicWidth(); - } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(72 + 6) - Theme.dialogs_botDrawable.getIntrinsicWidth(); - nameLeft = AndroidUtilities.dp(22); - } - } else { - nameLockTop = AndroidUtilities.dp(16.5f); - if (!LocaleController.isRTL) { - nameLockLeft = AndroidUtilities.dp(72 + 4); - nameLeft = AndroidUtilities.dp(72 + 8) + Theme.dialogs_botDrawable.getIntrinsicWidth(); - } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(72 + 4) - Theme.dialogs_botDrawable.getIntrinsicWidth(); - nameLeft = AndroidUtilities.dp(18); - } - } - } + drawPremium = MessagesController.getInstance(currentAccount).isPremiumUser(user) && UserConfig.getInstance(currentAccount).clientUserId != user.id && user.id != 0; } } } @@ -939,10 +871,10 @@ public class DialogCell extends BaseCell { printingString = TextUtils.replace(printingString, new String[]{"..."}, new String[]{""}); if (printingStringType == 5) { - printigStingReplaceIndex = printingString.toString().indexOf("**oo**"); + printingStringReplaceIndex = printingString.toString().indexOf("**oo**"); } - if (printigStingReplaceIndex >= 0) { - spannableStringBuilder.append(printingString).setSpan(new FixedWidthSpan(Theme.getChatStatusDrawable(printingStringType).getIntrinsicWidth()), printigStingReplaceIndex, printigStingReplaceIndex + 6, 0); + if (printingStringReplaceIndex >= 0) { + spannableStringBuilder.append(printingString).setSpan(new FixedWidthSpan(Theme.getChatStatusDrawable(printingStringType).getIntrinsicWidth()), printingStringReplaceIndex, printingStringReplaceIndex + 6, 0); } else { spannableStringBuilder.append(" ").append(printingString).setSpan(new FixedWidthSpan(startPadding), 0, 1, 0); } @@ -1116,9 +1048,6 @@ public class DialogCell extends BaseCell { stringBuilder = SpannableStringBuilder.valueOf(String.format(messageFormat, restrictionReason, messageNameString)); } else if (message.caption != null) { CharSequence mess = message.caption.toString(); - if (mess.length() > 150) { - mess = mess.subSequence(0, 150); - } String emoji; if (!needEmoji) { emoji = ""; @@ -1133,9 +1062,30 @@ public class DialogCell extends BaseCell { } else { emoji = "\uD83D\uDCCE "; } - SpannableStringBuilder msgBuilder = new SpannableStringBuilder(mess); - MediaDataController.addTextStyleRuns(message.messageOwner.entities, message.caption, msgBuilder, TextStyleSpan.FLAG_STYLE_SPOILER); - stringBuilder = AndroidUtilities.formatSpannable(messageFormat, new SpannableStringBuilder(emoji).append(AndroidUtilities.replaceNewLines(msgBuilder)), messageNameString); + if (message.hasHighlightedWords() && !TextUtils.isEmpty(message.messageOwner.message)) { + String str = message.messageTrimmedToHighlight; + if (message.messageTrimmedToHighlight != null) { + str = message.messageTrimmedToHighlight; + } + int w = getMeasuredWidth() - AndroidUtilities.dp(72 + 23 + 24); + if (hasNameInMessage) { + if (!TextUtils.isEmpty(messageNameString)) { + w -= currentMessagePaint.measureText(messageNameString.toString()); + } + w -= currentMessagePaint.measureText(": "); + } + if (w > 0) { + str = AndroidUtilities.ellipsizeCenterEnd(str, message.highlightedWords.get(0), w, currentMessagePaint, 130).toString(); + } + stringBuilder = new SpannableStringBuilder(emoji).append(str); + } else { + if (mess.length() > 150) { + mess = mess.subSequence(0, 150); + } + SpannableStringBuilder msgBuilder = new SpannableStringBuilder(mess); + MediaDataController.addTextStyleRuns(message.messageOwner.entities, mess, msgBuilder, TextStyleSpan.FLAG_STYLE_SPOILER); + stringBuilder = AndroidUtilities.formatSpannable(messageFormat, new SpannableStringBuilder(emoji).append(AndroidUtilities.replaceNewLines(msgBuilder)), messageNameString); + } } else if (message.messageOwner.media != null && !message.isMediaEmpty()) { currentMessagePaint = Theme.dialogs_messagePrintingPaint[paintIndex]; String innerMessage; @@ -1220,8 +1170,13 @@ public class DialogCell extends BaseCell { } checkMessage = false; SpannableStringBuilder builder = (SpannableStringBuilder) messageString; - builder.insert(thumbInsertIndex, " "); - builder.setSpan(new FixedWidthSpan(AndroidUtilities.dp(thumbSize + 6)), thumbInsertIndex, thumbInsertIndex + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + if (thumbInsertIndex >= builder.length()) { + builder.append(" "); + builder.setSpan(new FixedWidthSpan(AndroidUtilities.dp(thumbSize + 6)), builder.length() - 1, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else { + builder.insert(thumbInsertIndex, " "); + builder.setSpan(new FixedWidthSpan(AndroidUtilities.dp(thumbSize + 6)), thumbInsertIndex, thumbInsertIndex + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } } } else { if (!TextUtils.isEmpty(restrictionReason)) { @@ -1490,12 +1445,6 @@ public class DialogCell extends BaseCell { } if (drawNameLock) { nameWidth -= AndroidUtilities.dp(4) + Theme.dialogs_lockDrawable.getIntrinsicWidth(); - } else if (drawNameGroup) { - nameWidth -= AndroidUtilities.dp(4) + Theme.dialogs_groupDrawable.getIntrinsicWidth(); - } else if (drawNameBroadcast) { - nameWidth -= AndroidUtilities.dp(4) + Theme.dialogs_broadcastDrawable.getIntrinsicWidth(); - } else if (drawNameBot) { - nameWidth -= AndroidUtilities.dp(4) + Theme.dialogs_botDrawable.getIntrinsicWidth(); } if (drawClock) { int w = Theme.dialogs_clockDrawable.getIntrinsicWidth() + AndroidUtilities.dp(5); @@ -1541,6 +1490,12 @@ public class DialogCell extends BaseCell { if (LocaleController.isRTL) { nameLeft += w; } + } else if (drawPremium) { + int w = AndroidUtilities.dp(6) + PremiumGradient.getInstance().premiumStarDrawableMini.getIntrinsicWidth(); + nameWidth -= w; + if (LocaleController.isRTL) { + nameLeft += w; + } } else if (drawScam != 0) { int w = AndroidUtilities.dp(6) + (drawScam == 1 ? Theme.dialogs_scamDrawable : Theme.dialogs_fakeDrawable).getIntrinsicWidth(); nameWidth -= w; @@ -1548,10 +1503,13 @@ public class DialogCell extends BaseCell { nameLeft += w; } } - - nameWidth = Math.max(AndroidUtilities.dp(12), nameWidth); try { - CharSequence nameStringFinal = TextUtils.ellipsize(nameString.replace('\n', ' '), Theme.dialogs_namePaint[paintIndex], nameWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END); + int ellipsizeWidth = nameWidth - AndroidUtilities.dp(12); + if (ellipsizeWidth < 0) { + ellipsizeWidth = 0; + } + CharSequence nameStringFinal = TextUtils.ellipsize(nameString.replace('\n', ' '), Theme.dialogs_namePaint[paintIndex], ellipsizeWidth, TextUtils.TruncateAt.END); + nameStringFinal = Emoji.replaceEmoji(nameStringFinal, Theme.dialogs_namePaint[paintIndex].getFontMetricsInt(), AndroidUtilities.dp(20), false); if (message != null && message.hasHighlightedWords()) { CharSequence s = AndroidUtilities.highlightText(nameStringFinal, message.highlightedWords, resourcesProvider); if (s != null) { @@ -1661,14 +1619,28 @@ public class DialogCell extends BaseCell { messageNameLeft += w; } drawMention = true; + } else { + mentionWidth = 0; } if (drawReactionMention) { int w = AndroidUtilities.dp(24); messageWidth -= w; if (!LocaleController.isRTL) { - reactionMentionLeft = getMeasuredWidth() - AndroidUtilities.dp(32) - (mentionWidth != 0 ? (mentionWidth + AndroidUtilities.dp(18)) : 0) - (countWidth != 0 ? countWidth + AndroidUtilities.dp(18) : 0); + reactionMentionLeft = getMeasuredWidth() - AndroidUtilities.dp(32); + if (drawMention) { + reactionMentionLeft -= (mentionWidth != 0 ? (mentionWidth + AndroidUtilities.dp(18)) : 0); + } + if (drawCount) { + reactionMentionLeft -= (countWidth != 0 ? countWidth + AndroidUtilities.dp(18) : 0); + } } else { - reactionMentionLeft = AndroidUtilities.dp(20) + (countWidth != 0 ? countWidth + AndroidUtilities.dp(18) : 0); + reactionMentionLeft = AndroidUtilities.dp(20); + if (drawMention) { + reactionMentionLeft += (mentionWidth != 0 ? (mentionWidth + AndroidUtilities.dp(18)) : 0); + } + if (drawCount) { + reactionMentionLeft += (countWidth != 0 ? (countWidth + AndroidUtilities.dp(18)) : 0); + } messageLeft += w; messageNameLeft += w; } @@ -1785,6 +1757,8 @@ public class DialogCell extends BaseCell { nameMuteLeft = (int) (nameLeft + (nameWidth - widthpx) - AndroidUtilities.dp(6) - Theme.dialogs_muteDrawable.getIntrinsicWidth()); } else if (drawVerified) { nameMuteLeft = (int) (nameLeft + (nameWidth - widthpx) - AndroidUtilities.dp(6) - Theme.dialogs_verifiedDrawable.getIntrinsicWidth()); + } else if (drawPremium) { + nameMuteLeft = (int) (nameLeft + (nameWidth - widthpx) - AndroidUtilities.dp(6) - PremiumGradient.getInstance().premiumStarDrawableMini.getIntrinsicWidth()); } else if (drawScam != 0) { nameMuteLeft = (int) (nameLeft + (nameWidth - widthpx) - AndroidUtilities.dp(6) - (drawScam == 1 ? Theme.dialogs_scamDrawable : Theme.dialogs_fakeDrawable).getIntrinsicWidth()); } @@ -1831,7 +1805,7 @@ public class DialogCell extends BaseCell { nameLeft -= (nameWidth - widthpx); } } - if (dialogMuted || drawVerified || drawScam != 0) { + if (dialogMuted || drawVerified || drawPremium || drawScam != 0) { nameMuteLeft = (int) (nameLeft + left + AndroidUtilities.dp(6)); } } @@ -1868,9 +1842,9 @@ public class DialogCell extends BaseCell { } if (messageLayout != null && printingStringType >= 0) { float x1, x2; - if (printigStingReplaceIndex >= 0 && printigStingReplaceIndex + 1 < messageLayout.getText().length() ){ - x1 = messageLayout.getPrimaryHorizontal(printigStingReplaceIndex); - x2 = messageLayout.getPrimaryHorizontal(printigStingReplaceIndex + 1); + if (printingStringReplaceIndex >= 0 && printingStringReplaceIndex + 1 < messageLayout.getText().length() ){ + x1 = messageLayout.getPrimaryHorizontal(printingStringReplaceIndex); + x2 = messageLayout.getPrimaryHorizontal(printingStringReplaceIndex + 1); } else { x1 = messageLayout.getPrimaryHorizontal(0); x2 = messageLayout.getPrimaryHorizontal(1); @@ -2273,7 +2247,7 @@ public class DialogCell extends BaseCell { avatarDrawable.setAvatarType(AvatarDrawable.AVATAR_TYPE_SAVED); avatarImage.setImage(null, null, avatarDrawable, null, user, 0); } else { - avatarImage.setForUserOrChat(user, avatarDrawable); + avatarImage.setForUserOrChat(user, avatarDrawable, null, true); } } else if (chat != null) { avatarDrawable.setInfo(chat); @@ -2679,15 +2653,6 @@ public class DialogCell extends BaseCell { if (drawNameLock) { setDrawableBounds(Theme.dialogs_lockDrawable, nameLockLeft, nameLockTop); Theme.dialogs_lockDrawable.draw(canvas); - } else if (drawNameGroup) { - setDrawableBounds(Theme.dialogs_groupDrawable, nameLockLeft, nameLockTop); - Theme.dialogs_groupDrawable.draw(canvas); - } else if (drawNameBroadcast) { - setDrawableBounds(Theme.dialogs_broadcastDrawable, nameLockLeft, nameLockTop); - Theme.dialogs_broadcastDrawable.draw(canvas); - } else if (drawNameBot) { - setDrawableBounds(Theme.dialogs_botDrawable, nameLockLeft, nameLockTop); - Theme.dialogs_botDrawable.draw(canvas); } if (nameLayout != null) { @@ -2807,7 +2772,7 @@ public class DialogCell extends BaseCell { lastStatusDrawableParams = (this.drawClock ? 1 : 0) + (this.drawCheck1 ? 2 : 0) + (this.drawCheck2 ? 4 : 0); } - if (dialogsType != 2 && (dialogMuted || dialogMutedProgress > 0) && !drawVerified && drawScam == 0) { + if (dialogsType != 2 && (dialogMuted || dialogMutedProgress > 0) && !drawVerified && drawScam == 0 && !drawPremium) { if (dialogMuted && dialogMutedProgress != 1f) { dialogMutedProgress += 16 / 150f; if (dialogMutedProgress > 1f) { @@ -2836,10 +2801,14 @@ public class DialogCell extends BaseCell { } } else if (drawVerified) { - setDrawableBounds(Theme.dialogs_verifiedDrawable, nameMuteLeft, AndroidUtilities.dp(useForceThreeLines || SharedConfig.useThreeLinesLayout ? 12.5f : 16.5f)); - setDrawableBounds(Theme.dialogs_verifiedCheckDrawable, nameMuteLeft, AndroidUtilities.dp(useForceThreeLines || SharedConfig.useThreeLinesLayout ? 12.5f : 16.5f)); + setDrawableBounds(Theme.dialogs_verifiedDrawable, nameMuteLeft - AndroidUtilities.dp(1), AndroidUtilities.dp(useForceThreeLines || SharedConfig.useThreeLinesLayout ? 13.5f : 16.5f)); + setDrawableBounds(Theme.dialogs_verifiedCheckDrawable, nameMuteLeft - AndroidUtilities.dp(1), AndroidUtilities.dp(useForceThreeLines || SharedConfig.useThreeLinesLayout ? 13.5f : 16.5f)); Theme.dialogs_verifiedDrawable.draw(canvas); Theme.dialogs_verifiedCheckDrawable.draw(canvas); + } else if (drawPremium) { + Drawable premiumDrawable = PremiumGradient.getInstance().premiumStarDrawableMini; + setDrawableBounds(premiumDrawable, nameMuteLeft - AndroidUtilities.dp(1), AndroidUtilities.dp(useForceThreeLines || SharedConfig.useThreeLinesLayout ? 12.5f : 15.5f)); + premiumDrawable.draw(canvas); } else if (drawScam != 0) { setDrawableBounds((drawScam == 1 ? Theme.dialogs_scamDrawable : Theme.dialogs_fakeDrawable), nameMuteLeft, AndroidUtilities.dp(useForceThreeLines || SharedConfig.useThreeLinesLayout ? 12 : 15)); (drawScam == 1 ? Theme.dialogs_scamDrawable : Theme.dialogs_fakeDrawable).draw(canvas); @@ -3339,6 +3308,15 @@ public class DialogCell extends BaseCell { return false; } + @Override + public boolean performAccessibilityAction(int action, Bundle arguments) { + if (action == R.id.acc_action_chat_preview && parentFragment != null) { + parentFragment.showChatPreview(this); + return true; + } + return super.performAccessibilityAction(action, arguments); + } + @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); @@ -3347,6 +3325,14 @@ public class DialogCell extends BaseCell { } else { info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); + if (!isFolderCell() && parentFragment != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + info.addAction(new AccessibilityNodeInfo.AccessibilityAction(R.id.acc_action_chat_preview, LocaleController.getString("AccActionChatPreview", R.string.AccActionChatPreview))); + } + } + if (checkBox != null && checkBox.isChecked()) { + info.setClassName("android.widget.CheckBox"); + info.setCheckable(true); + info.setChecked(true); } } @@ -3388,10 +3374,22 @@ public class DialogCell extends BaseCell { sb.append(". "); } } + if (drawVerified) { + sb.append(LocaleController.getString("AccDescrVerified", R.string.AccDescrVerified)); + sb.append(". "); + } if (unreadCount > 0) { sb.append(LocaleController.formatPluralString("NewMessages", unreadCount)); sb.append(". "); } + if (mentionCount > 0) { + sb.append(LocaleController.formatPluralString("AccDescrMentionCount", mentionCount)); + sb.append(". "); + } + if (reactionMentionCount > 0) { + sb.append(LocaleController.getString("AccDescrMentionReaction", R.string.AccDescrMentionReaction)); + sb.append(". "); + } if (message == null || currentDialogFolderId != 0) { event.setContentDescription(sb.toString()); return; @@ -3415,13 +3413,27 @@ public class DialogCell extends BaseCell { } } if (encryptedChat == null) { - sb.append(message.messageText); + StringBuilder messageString = new StringBuilder(); + messageString.append(message.messageText); if (!message.isMediaEmpty()) { if (!TextUtils.isEmpty(message.caption)) { - sb.append(". "); - sb.append(message.caption); + messageString.append(". "); + messageString.append(message.caption); } } + int len = messageLayout == null ? -1 : messageLayout.getText().length(); + if (len > 0) { + int index = messageString.length(), b; + if ((b = messageString.indexOf("\n", len)) < index && b >= 0) + index = b; + if ((b = messageString.indexOf("\t", len)) < index && b >= 0) + index = b; + if ((b = messageString.indexOf(" ", len)) < index && b >= 0) + index = b; + sb.append(messageString.substring(0, index)); + } else { + sb.append(messageString); + } } event.setContentDescription(sb.toString()); } @@ -3451,6 +3463,10 @@ public class DialogCell extends BaseCell { return currentDialogFolderId; } + public boolean isDialogFolder() { + return currentDialogFolderId > 0; + } + public MessageObject getMessage() { return message; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogMeUrlCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogMeUrlCell.java index 3b341bd6b..6adfb8b54 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogMeUrlCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogMeUrlCell.java @@ -16,7 +16,6 @@ import android.text.TextPaint; import android.text.TextUtils; import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ChatObject; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLocation; @@ -42,9 +41,6 @@ public class DialogMeUrlCell extends BaseCell { private int nameLeft; private StaticLayout nameLayout; private boolean drawNameLock; - private boolean drawNameGroup; - private boolean drawNameBroadcast; - private boolean drawNameBot; private int nameMuteLeft; private int nameLockLeft; private int nameLockTop; @@ -103,28 +99,18 @@ public class DialogMeUrlCell extends BaseCell { TextPaint currentNamePaint = Theme.dialogs_namePaint[0]; TextPaint currentMessagePaint = Theme.dialogs_messagePaint[0]; - drawNameGroup = false; - drawNameBroadcast = false; drawNameLock = false; - drawNameBot = false; drawVerified = false; if (recentMeUrl instanceof TLRPC.TL_recentMeUrlChat) { TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(recentMeUrl.chat_id); - if (chat.id < 0 || ChatObject.isChannel(chat) && !chat.megagroup) { - drawNameBroadcast = true; - nameLockTop = AndroidUtilities.dp(16.5f); - } else { - drawNameGroup = true; - nameLockTop = AndroidUtilities.dp(17.5f); - } drawVerified = chat.verified; if (!LocaleController.isRTL) { nameLockLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline); - nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4) + (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); + nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4); } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline) - (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); + nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline); nameLeft = AndroidUtilities.dp(14); } nameString = chat.title; @@ -139,13 +125,12 @@ public class DialogMeUrlCell extends BaseCell { } if (user != null) { if (user.bot) { - drawNameBot = true; nameLockTop = AndroidUtilities.dp(16.5f); if (!LocaleController.isRTL) { nameLockLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline); - nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4) + Theme.dialogs_botDrawable.getIntrinsicWidth(); + nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4); } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline) - Theme.dialogs_botDrawable.getIntrinsicWidth(); + nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline); nameLeft = AndroidUtilities.dp(14); } } @@ -172,33 +157,19 @@ public class DialogMeUrlCell extends BaseCell { if (recentMeUrl.chat_invite.chat != null) { avatarDrawable.setInfo(recentMeUrl.chat_invite.chat); nameString = recentMeUrl.chat_invite.chat.title; - if (recentMeUrl.chat_invite.chat.id < 0 || ChatObject.isChannel(recentMeUrl.chat_invite.chat) && !recentMeUrl.chat_invite.chat.megagroup) { - drawNameBroadcast = true; - nameLockTop = AndroidUtilities.dp(16.5f); - } else { - drawNameGroup = true; - nameLockTop = AndroidUtilities.dp(17.5f); - } drawVerified = recentMeUrl.chat_invite.chat.verified; avatarImage.setForUserOrChat(recentMeUrl.chat_invite.chat, avatarDrawable, recentMeUrl); } else { nameString = recentMeUrl.chat_invite.title; avatarDrawable.setInfo(5, recentMeUrl.chat_invite.title, null); - if (recentMeUrl.chat_invite.broadcast || recentMeUrl.chat_invite.channel) { - drawNameBroadcast = true; - nameLockTop = AndroidUtilities.dp(16.5f); - } else { - drawNameGroup = true; - nameLockTop = AndroidUtilities.dp(17.5f); - } TLRPC.PhotoSize size = FileLoader.getClosestPhotoSizeWithSize(recentMeUrl.chat_invite.photo.sizes, 50); avatarImage.setImage(ImageLocation.getForPhoto(size, recentMeUrl.chat_invite.photo), "50_50", avatarDrawable, null, recentMeUrl, 0); } if (!LocaleController.isRTL) { nameLockLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline); - nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4) + (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); + nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4); } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline) - (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); + nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline); nameLeft = AndroidUtilities.dp(14); } } else if (recentMeUrl instanceof TLRPC.TL_recentMeUrlUnknown) { @@ -227,12 +198,6 @@ public class DialogMeUrlCell extends BaseCell { } if (drawNameLock) { nameWidth -= AndroidUtilities.dp(4) + Theme.dialogs_lockDrawable.getIntrinsicWidth(); - } else if (drawNameGroup) { - nameWidth -= AndroidUtilities.dp(4) + Theme.dialogs_groupDrawable.getIntrinsicWidth(); - } else if (drawNameBroadcast) { - nameWidth -= AndroidUtilities.dp(4) + Theme.dialogs_broadcastDrawable.getIntrinsicWidth(); - } else if (drawNameBot) { - nameWidth -= AndroidUtilities.dp(4) + Theme.dialogs_botDrawable.getIntrinsicWidth(); } if (drawVerified) { @@ -335,15 +300,6 @@ public class DialogMeUrlCell extends BaseCell { if (drawNameLock) { setDrawableBounds(Theme.dialogs_lockDrawable, nameLockLeft, nameLockTop); Theme.dialogs_lockDrawable.draw(canvas); - } else if (drawNameGroup) { - setDrawableBounds(Theme.dialogs_groupDrawable, nameLockLeft, nameLockTop); - Theme.dialogs_groupDrawable.draw(canvas); - } else if (drawNameBroadcast) { - setDrawableBounds(Theme.dialogs_broadcastDrawable, nameLockLeft, nameLockTop); - Theme.dialogs_broadcastDrawable.draw(canvas); - } else if (drawNameBot) { - setDrawableBounds(Theme.dialogs_botDrawable, nameLockLeft, nameLockTop); - Theme.dialogs_botDrawable.draw(canvas); } if (nameLayout != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DividerCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DividerCell.java index efd3a9d76..e796560b4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DividerCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DividerCell.java @@ -23,9 +23,15 @@ public class DividerCell extends View { private boolean forceDarkTheme; private Paint paint = new Paint(); + private Theme.ResourcesProvider resourcesProvider; public DividerCell(Context context) { + this(context, null); + } + + public DividerCell(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; setPadding(0, AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8)); } @@ -37,9 +43,9 @@ public class DividerCell extends View { @Override protected void onDraw(Canvas canvas) { if (forceDarkTheme) { - paint.setColor(ColorUtils.blendARGB(Color.BLACK, Theme.getColor(Theme.key_voipgroup_dialogBackground), 0.2f)); + paint.setColor(ColorUtils.blendARGB(Color.BLACK, Theme.getColor(Theme.key_voipgroup_dialogBackground, resourcesProvider), 0.2f)); } else { - paint.setColor(Theme.getColor(Theme.key_divider)); + paint.setColor(Theme.getColor(Theme.key_divider, resourcesProvider)); } canvas.drawLine(getPaddingLeft(), getPaddingTop(), getWidth() - getPaddingRight(), getPaddingTop(), paint); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerAddCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerAddCell.java index ed2152d14..8a576d94e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerAddCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerAddCell.java @@ -38,8 +38,8 @@ public class DrawerAddCell extends FrameLayout { textView.setMaxLines(1); textView.setSingleLine(true); textView.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); - textView.setCompoundDrawablePadding(AndroidUtilities.dp(34)); - addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 23, 0, 16, 0)); + textView.setCompoundDrawablePadding(AndroidUtilities.dp(29)); + addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 19, 0, 16, 0)); } @Override @@ -52,7 +52,7 @@ public class DrawerAddCell extends FrameLayout { super.onAttachedToWindow(); textView.setTextColor(Theme.getColor(Theme.key_chats_menuItemText)); textView.setText(LocaleController.getString("AddAccount", R.string.AddAccount)); - Drawable drawable = getResources().getDrawable(R.drawable.account_add); + Drawable drawable = getResources().getDrawable(R.drawable.msg_add); if (drawable != null) { drawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chats_menuItemIcon), PorterDuff.Mode.MULTIPLY)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java index f6101d400..d8450f496 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java @@ -23,6 +23,7 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.RippleDrawable; import android.os.Build; +import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; @@ -32,29 +33,34 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import androidx.core.content.ContextCompat; + import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.Emoji; +import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.NotificationCenter; -import org.telegram.messenger.UserObject; -import org.telegram.messenger.FileLog; import org.telegram.messenger.R; +import org.telegram.messenger.UserObject; +import org.telegram.messenger.Utilities; import org.telegram.tgnet.TLRPC; -import org.telegram.ui.ActionBar.ActionBarLayout; -import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.DrawerLayoutContainer; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.BackupImageView; +import org.telegram.ui.Components.ColoredImageSpan; import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.LayoutHelper; -import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.Premium.PremiumGradient; +import org.telegram.ui.Components.Premium.StarParticlesView; import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.RLottieImageView; import org.telegram.ui.Components.SnowflakesEffect; import org.telegram.ui.ThemeActivity; -public class DrawerProfileCell extends FrameLayout { +public class DrawerProfileCell extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { private BackupImageView avatarImageView; private TextView nameTextView; @@ -74,6 +80,11 @@ public class DrawerProfileCell extends FrameLayout { private boolean accountsShown; private int darkThemeBackgroundColor; public static boolean switchingTheme; + public boolean drawPremium; + public float drawPremiumProgress; + + StarParticlesView.Drawable starParticlesDrawable; + PremiumGradient.GradientTools gradientTools; public DrawerProfileCell(Context context, DrawerLayoutContainer drawerLayoutContainer) { super(context); @@ -108,7 +119,7 @@ public class DrawerProfileCell extends FrameLayout { arrowView = new ImageView(context); arrowView.setScaleType(ImageView.ScaleType.CENTER); - arrowView.setImageResource(R.drawable.menu_expand); + arrowView.setImageResource(R.drawable.msg_expand); addView(arrowView, LayoutHelper.createFrame(59, 59, Gravity.RIGHT | Gravity.BOTTOM)); setArrowState(false); @@ -124,13 +135,14 @@ public class DrawerProfileCell extends FrameLayout { @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); - if (sunDrawable.getCustomEndFrame() != 0) { - info.setText(LocaleController.getString("AccDescrSwitchToNightTheme", R.string.AccDescrSwitchToNightTheme)); - } else { + if (Theme.isCurrentThemeDark()) { info.setText(LocaleController.getString("AccDescrSwitchToDayTheme", R.string.AccDescrSwitchToDayTheme)); + } else { + info.setText(LocaleController.getString("AccDescrSwitchToNightTheme", R.string.AccDescrSwitchToNightTheme)); } } }; + darkThemeView.setFocusable(true); darkThemeView.setBackground(Theme.createCircleSelectorDrawable(Theme.getColor(Theme.key_dialogButtonSelector), 0, 0)); sunDrawable.beginApplyLayerColors(); int color = Theme.getColor(Theme.key_chats_menuName); @@ -212,6 +224,13 @@ public class DrawerProfileCell extends FrameLayout { protected void onAttachedToWindow() { super.onAttachedToWindow(); updateColors(); + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.emojiLoaded); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.emojiLoaded); } @Override @@ -228,6 +247,22 @@ public class DrawerProfileCell extends FrameLayout { } } + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + if (drawPremium) { + if (starParticlesDrawable == null) { + starParticlesDrawable = new StarParticlesView.Drawable(15); + starParticlesDrawable.init(); + starParticlesDrawable.speedScale = 0.8f; + starParticlesDrawable.minLifeTime = 3000; + } + starParticlesDrawable.rect.set(avatarImageView.getLeft(), avatarImageView.getTop(), avatarImageView.getRight(), avatarImageView.getBottom()); + starParticlesDrawable.rect.inset(-AndroidUtilities.dp(20), -AndroidUtilities.dp(20)); + starParticlesDrawable.resetPositions(); + } + } + @Override protected void onDraw(Canvas canvas) { Drawable backgroundDrawable = Theme.getCachedWallpaper(); @@ -298,16 +333,40 @@ public class DrawerProfileCell extends FrameLayout { darkBackColor = Theme.getColor(Theme.key_listSelector); } - if (darkBackColor != 0) { - if (darkBackColor != darkThemeBackgroundColor) { - backPaint.setColor(darkThemeBackgroundColor = darkBackColor); - if (Build.VERSION.SDK_INT >= 21) { - Theme.setSelectorDrawableColor(darkThemeView.getBackground(), darkThemeBackgroundColor = darkBackColor, true); - } + +// if (darkBackColor != 0) { +// if (darkBackColor != darkThemeBackgroundColor) { +// backPaint.setColor(darkThemeBackgroundColor = darkBackColor); +// if (Build.VERSION.SDK_INT >= 21) { +// Theme.setSelectorDrawableColor(darkThemeView.getBackground(), darkThemeBackgroundColor = darkBackColor, true); +// } +// } +// if (useImageBackground && backgroundDrawable instanceof BitmapDrawable) { +// canvas.drawCircle(darkThemeView.getX() + darkThemeView.getMeasuredWidth() / 2, darkThemeView.getY() + darkThemeView.getMeasuredHeight() / 2, AndroidUtilities.dp(17), backPaint); +// } +// } + if (drawPremium && drawPremiumProgress != 1f) { + drawPremiumProgress += 16 / 220f; + } else if (!drawPremium && drawPremiumProgress != 0) { + drawPremiumProgress -= 16 / 220f; + } + drawPremiumProgress = Utilities.clamp(drawPremiumProgress, 1f, 0); + if (drawPremiumProgress != 0) { + if (gradientTools == null) { + gradientTools = new PremiumGradient.GradientTools(Theme.key_premiumGradientBottomSheet1, Theme.key_premiumGradientBottomSheet2, Theme.key_premiumGradientBottomSheet3, null); + gradientTools.x1 = 0; + gradientTools.y1 = 1.1f; + gradientTools.x2 = 1.5f; + gradientTools.y2 = -0.2f; + gradientTools.exactly = true; } - if (useImageBackground && backgroundDrawable instanceof BitmapDrawable) { - canvas.drawCircle(darkThemeView.getX() + darkThemeView.getMeasuredWidth() / 2, darkThemeView.getY() + darkThemeView.getMeasuredHeight() / 2, AndroidUtilities.dp(17), backPaint); + gradientTools.gradientMatrix(0, 0, getMeasuredWidth(), getMeasuredHeight(), 0, 0); + gradientTools.paint.setAlpha((int) (drawPremiumProgress * 255)); + canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), gradientTools.paint); + if (starParticlesDrawable != null) { + starParticlesDrawable.onDraw(canvas, drawPremiumProgress); } + invalidate(); } if (snowflakesEffect != null) { @@ -341,13 +400,25 @@ public class DrawerProfileCell extends FrameLayout { } accountsShown = accounts; setArrowState(false); - nameTextView.setText(UserObject.getUserName(user)); + CharSequence text = UserObject.getUserName(user); + try { + text = Emoji.replaceEmoji(text, nameTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(22), false); + } catch (Exception ignore) {} + + drawPremium = false;//user.premium; + if (text != null && drawPremium) { + SpannableStringBuilder spannableStringBuilder = SpannableStringBuilder.valueOf(text); + spannableStringBuilder.append(" d"); + spannableStringBuilder.setSpan(new ColoredImageSpan(ContextCompat.getDrawable(getContext(), R.drawable.msg_premium_liststar)), spannableStringBuilder.length() - 1, spannableStringBuilder.length(), 0); + text = spannableStringBuilder; + } + nameTextView.setText(text); phoneTextView.setText(PhoneFormat.getInstance().format("+" + user.phone)); AvatarDrawable avatarDrawable = new AvatarDrawable(user); avatarDrawable.setColor(Theme.getColor(Theme.key_avatar_backgroundInProfileBlue)); avatarImageView.setForUserOrChat(user, avatarDrawable); - applyBackground(true); + } public String applyBackground(boolean force) { @@ -377,4 +448,10 @@ public class DrawerProfileCell extends FrameLayout { arrowView.setContentDescription(accountsShown ? LocaleController.getString("AccDescrHideAccounts", R.string.AccDescrHideAccounts) : LocaleController.getString("AccDescrShowAccounts", R.string.AccDescrShowAccounts)); } + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.emojiLoaded) { + nameTextView.invalidate(); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerUserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerUserCell.java index eb1676fc2..881ac736d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerUserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerUserCell.java @@ -11,28 +11,30 @@ package org.telegram.ui.Cells; import android.content.Context; import android.graphics.Canvas; import android.graphics.RectF; -import android.text.TextUtils; -import android.util.TypedValue; import android.view.Gravity; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; -import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ContactsController; +import org.telegram.messenger.Emoji; +import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; +import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.NotificationsController; import org.telegram.messenger.UserConfig; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.GroupCreateCheckBox; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.PremiumGradient; -public class DrawerUserCell extends FrameLayout { +public class DrawerUserCell extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { - private TextView textView; + private SimpleTextView textView; private BackupImageView imageView; private AvatarDrawable avatarDrawable; private GroupCreateCheckBox checkBox; @@ -50,16 +52,13 @@ public class DrawerUserCell extends FrameLayout { imageView.setRoundRadius(AndroidUtilities.dp(18)); addView(imageView, LayoutHelper.createFrame(36, 36, Gravity.LEFT | Gravity.TOP, 14, 6, 0, 0)); - textView = new TextView(context); + textView = new SimpleTextView(context); textView.setTextColor(Theme.getColor(Theme.key_chats_menuItemText)); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + textView.setTextSize(15); textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - textView.setLines(1); textView.setMaxLines(1); - textView.setSingleLine(true); textView.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); - textView.setEllipsize(TextUtils.TruncateAt.END); - addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 72, 0, 60, 0)); + addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.CENTER_VERTICAL, 72, 0, 60, 0)); checkBox = new GroupCreateCheckBox(context); checkBox.setChecked(true, false); @@ -80,6 +79,30 @@ public class DrawerUserCell extends FrameLayout { protected void onAttachedToWindow() { super.onAttachedToWindow(); textView.setTextColor(Theme.getColor(Theme.key_chats_menuItemText)); + for (int i = 0; i < UserConfig.MAX_ACCOUNT_COUNT; i++){ + NotificationCenter.getInstance(i).addObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + } + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.emojiLoaded); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + for (int i = 0; i < UserConfig.MAX_ACCOUNT_COUNT; i++){ + NotificationCenter.getInstance(i).removeObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + } + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.emojiLoaded); + } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.currentUserPremiumStatusChanged) { + if (account == accountNumber) { + setAccount(accountNumber); + } + } else if (id == NotificationCenter.emojiLoaded) { + textView.invalidate(); + } } public void setAccount(int account) { @@ -89,7 +112,17 @@ public class DrawerUserCell extends FrameLayout { return; } avatarDrawable.setInfo(user); - textView.setText(ContactsController.formatName(user.first_name, user.last_name)); + CharSequence text = ContactsController.formatName(user.first_name, user.last_name); + try { + text = Emoji.replaceEmoji(text, textView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(20), false); + } catch (Exception ignore) {} + textView.setText(text); + if (MessagesController.getInstance(account).isPremiumUser(user)) { + textView.setDrawablePadding(AndroidUtilities.dp(6)); + textView.setRightDrawable(PremiumGradient.getInstance().premiumStarDrawableMini); + } else { + textView.setRightDrawable(null); + } imageView.getImageReceiver().setCurrentAccount(account); imageView.setForUserOrChat(user, avatarDrawable); checkBox.setVisibility(account == UserConfig.selectedAccount ? VISIBLE : INVISIBLE); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/FeaturedStickerSetCell2.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/FeaturedStickerSetCell2.java index b310a1b3b..0c35a0b5b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/FeaturedStickerSetCell2.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/FeaturedStickerSetCell2.java @@ -108,6 +108,10 @@ public class FeaturedStickerSetCell2 extends FrameLayout { updateColors(); } + public TextView getTextView() { + return textView; + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(64) + (needDivider ? 1 : 0), MeasureSpec.EXACTLY)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/FixedHeightEmptyCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/FixedHeightEmptyCell.java new file mode 100644 index 000000000..120c76cf5 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/FixedHeightEmptyCell.java @@ -0,0 +1,21 @@ +package org.telegram.ui.Cells; + +import android.content.Context; +import android.view.View; + +import org.telegram.messenger.AndroidUtilities; + +public class FixedHeightEmptyCell extends View { + + int heightInDp; + + public FixedHeightEmptyCell(Context context, int heightInDp) { + super(context); + this.heightInDp = heightInDp; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(heightInDp), MeasureSpec.EXACTLY)); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/GraySectionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/GraySectionCell.java index 0abe3ab1c..198e87f00 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/GraySectionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/GraySectionCell.java @@ -21,6 +21,8 @@ import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; +import org.telegram.ui.Components.AnimatedTextView; +import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RecyclerListView; @@ -29,7 +31,7 @@ import java.util.List; public class GraySectionCell extends FrameLayout { private TextView textView; - private TextView rightTextView; + private AnimatedTextView rightTextView; private final Theme.ResourcesProvider resourcesProvider; public GraySectionCell(Context context) { @@ -49,15 +51,17 @@ public class GraySectionCell extends FrameLayout { textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 16, 0, 16, 0)); - rightTextView = new TextView(getContext()) { + rightTextView = new AnimatedTextView(getContext(), true, true, true) { @Override public CharSequence getAccessibilityClassName() { return Button.class.getName(); } }; - rightTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + rightTextView.setPadding(AndroidUtilities.dp(2), 0, AndroidUtilities.dp(2), 0); + rightTextView.setAnimationProperties(1f, 0, 400, CubicBezierInterpolator.EASE_OUT_QUINT); + rightTextView.setTextSize(AndroidUtilities.dp(14)); rightTextView.setTextColor(getThemedColor(Theme.key_graySectionText)); - rightTextView.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL); + rightTextView.setGravity(LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT); addView(rightTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, 16, 0, 16, 0)); ViewCompat.setAccessibilityHeading(this, true); @@ -74,18 +78,32 @@ public class GraySectionCell extends FrameLayout { rightTextView.setTextColor(color); } + public CharSequence getText() { + return textView.getText(); + } + public void setText(String text) { textView.setText(text); rightTextView.setVisibility(GONE); + rightTextView.setOnClickListener(null); } public void setText(String left, String right, OnClickListener onClickListener) { textView.setText(left); - rightTextView.setText(right); + rightTextView.setText(right, false); rightTextView.setOnClickListener(onClickListener); rightTextView.setVisibility(VISIBLE); } + public void setRightText(String right) { + setRightText(right, true); + } + + public void setRightText(String right, boolean moveDown) { + rightTextView.setText(right, true, moveDown); + rightTextView.setVisibility(VISIBLE); + } + public static void createThemeDescriptions(List descriptions, RecyclerListView listView) { descriptions.add(new ThemeDescription(listView, 0, new Class[]{GraySectionCell.class}, new String[]{"textView"}, null, null, null, Theme.key_graySectionText)); descriptions.add(new ThemeDescription(listView, 0, new Class[]{GraySectionCell.class}, new String[]{"rightTextView"}, null, null, null, Theme.key_graySectionText)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCreateUserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCreateUserCell.java index 355437b76..e1d42eab4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCreateUserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCreateUserCell.java @@ -16,11 +16,11 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.text.TextUtils; import android.view.Gravity; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; -import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; @@ -103,7 +103,7 @@ public class GroupCreateUserCell extends FrameLayout { checkBox.setColor(null, Theme.key_windowBackgroundWhite, Theme.key_checkboxCheck); checkBox.setDrawUnchecked(false); checkBox.setDrawBackgroundAsArc(3); - addView(checkBox, LayoutHelper.createFrame(24, 24, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 40, 33, LocaleController.isRTL ? 39 : 0, 0)); + addView(checkBox, LayoutHelper.createFrame(24, 24, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 40 + padding, 33, LocaleController.isRTL ? 39 + padding : 0, 0)); } else if (checkBoxType == 2) { paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setStyle(Paint.Style.STROKE); @@ -254,11 +254,11 @@ public class GroupCreateUserCell extends FrameLayout { } avatarImageView.getLayoutParams().width = avatarImageView.getLayoutParams().height = AndroidUtilities.dp(46); if (checkBox != null) { - ((LayoutParams) checkBox.getLayoutParams()).topMargin = AndroidUtilities.dp(33); + ((LayoutParams) checkBox.getLayoutParams()).topMargin = AndroidUtilities.dp(33) + padding; if (LocaleController.isRTL) { - ((LayoutParams) checkBox.getLayoutParams()).rightMargin = AndroidUtilities.dp(39); + ((LayoutParams) checkBox.getLayoutParams()).rightMargin = AndroidUtilities.dp(39) + padding; } else { - ((LayoutParams) checkBox.getLayoutParams()).leftMargin = AndroidUtilities.dp(40); + ((LayoutParams) checkBox.getLayoutParams()).leftMargin = AndroidUtilities.dp(40) + padding; } } @@ -426,4 +426,13 @@ public class GroupCreateUserCell extends FrameLayout { public boolean hasOverlappingRendering() { return false; } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (isChecked()) { + info.setCheckable(true); + info.setChecked(true); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/HeaderCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/HeaderCell.java index aadad0a6a..b0d999323 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/HeaderCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/HeaderCell.java @@ -15,6 +15,7 @@ import android.os.Build; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; +import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.TextView; @@ -48,11 +49,19 @@ public class HeaderCell extends FrameLayout { this(context, Theme.key_windowBackgroundWhiteBlueHeader, padding, 15, false, null); } + public HeaderCell(Context context, int padding, Theme.ResourcesProvider resourcesProvider) { + this(context, Theme.key_windowBackgroundWhiteBlueHeader, padding, 15, false, resourcesProvider); + } + public HeaderCell(Context context, String textColorKey, int padding, int topMargin, boolean text2) { this(context, textColorKey, padding, topMargin, text2, null); } public HeaderCell(Context context, String textColorKey, int padding, int topMargin, boolean text2, Theme.ResourcesProvider resourcesProvider) { + this(context, textColorKey, padding, topMargin, 0, text2, resourcesProvider); + } + + public HeaderCell(Context context, String textColorKey, int padding, int topMargin, int bottomMargin, boolean text2, Theme.ResourcesProvider resourcesProvider) { super(context); this.resourcesProvider = resourcesProvider; @@ -64,13 +73,13 @@ public class HeaderCell extends FrameLayout { textView.setMinHeight(AndroidUtilities.dp(height - topMargin)); textView.setTextColor(getThemedColor(textColorKey)); textView.setTag(textColorKey); - addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, padding, topMargin, padding, 0)); + addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, padding, topMargin, padding, text2 ? 0 : bottomMargin)); if (text2) { textView2 = new SimpleTextView(getContext()); textView2.setTextSize(13); textView2.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP); - addView(textView2, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, padding, 21, padding, 0)); + addView(textView2, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, padding, 21, padding, bottomMargin)); } ViewCompat.setAccessibilityHeading(this, true); @@ -82,7 +91,7 @@ public class HeaderCell extends FrameLayout { public void setEnabled(boolean value, ArrayList animators) { if (animators != null) { - animators.add(ObjectAnimator.ofFloat(textView, "alpha", value ? 1.0f : 0.5f)); + animators.add(ObjectAnimator.ofFloat(textView, View.ALPHA, value ? 1.0f : 0.5f)); } else { textView.setAlpha(value ? 1.0f : 0.5f); } @@ -123,12 +132,15 @@ public class HeaderCell extends FrameLayout { @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + info.setHeading(true); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { AccessibilityNodeInfo.CollectionItemInfo collection = info.getCollectionItemInfo(); if (collection != null) { info.setCollectionItemInfo(AccessibilityNodeInfo.CollectionItemInfo.obtain(collection.getRowIndex(), collection.getRowSpan(), collection.getColumnIndex(), collection.getColumnSpan(), true)); } } + info.setEnabled(true); } private int getThemedColor(String key) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/HintDialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/HintDialogCell.java index 6d4b10164..44772c36a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/HintDialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/HintDialogCell.java @@ -85,7 +85,7 @@ public class HintDialogCell extends FrameLayout { invalidate(); }); addView(checkBox, LayoutHelper.createFrame(24, 24, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 19, 42, 0, 0)); - checkBox.setChecked(true, false); + checkBox.setChecked(false, false); setWillNotDraw(false); } } @@ -130,6 +130,12 @@ public class HintDialogCell extends FrameLayout { } } + public void setColors(String textColorKey, String backgroundColorKey) { + nameTextView.setTextColor(Theme.getColor(textColorKey)); + this.backgroundColorKey = backgroundColorKey; + checkBox.setColor(Theme.key_dialogRoundCheckBox, backgroundColorKey, Theme.key_dialogRoundCheckBoxCheck); + } + public void setDialog(long uid, boolean counter, CharSequence name) { if (dialogId != uid) { wasDraw = false; @@ -165,6 +171,8 @@ public class HintDialogCell extends FrameLayout { } } + private String backgroundColorKey = Theme.key_windowBackgroundWhite; + @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { boolean result = super.drawChild(canvas, child, drawingTime); @@ -191,7 +199,7 @@ public class HintDialogCell extends FrameLayout { int left = AndroidUtilities.dp(59); canvas.save(); canvas.scale(showOnlineProgress, showOnlineProgress, left, top); - Theme.dialogs_onlineCirclePaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + Theme.dialogs_onlineCirclePaint.setColor(Theme.getColor(backgroundColorKey)); canvas.drawCircle(left, top, AndroidUtilities.dp(7), Theme.dialogs_onlineCirclePaint); Theme.dialogs_onlineCirclePaint.setColor(Theme.getColor(Theme.key_chats_onlineCircle)); canvas.drawCircle(left, top, AndroidUtilities.dp(5), Theme.dialogs_onlineCirclePaint); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/LocationDirectionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/LocationDirectionCell.java index 9a7d4ec63..f60b6e743 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/LocationDirectionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/LocationDirectionCell.java @@ -23,7 +23,7 @@ public class LocationDirectionCell extends FrameLayout { this.resourcesProvider = resourcesProvider; frameLayout = new FrameLayout(context); - frameLayout.setBackgroundDrawable(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), getThemedColor(Theme.key_featuredStickers_addButton), getThemedColor(Theme.key_featuredStickers_addButtonPressed))); + frameLayout.setBackground(Theme.AdaptiveRipple.filledRect(getThemedColor(Theme.key_featuredStickers_addButton), 4)); addView(frameLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.TOP, 16, 10, 16, 0)); buttonTextView = new SimpleTextView(context); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ManageChatUserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ManageChatUserCell.java index 062194a7e..89ca2b2ac 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ManageChatUserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ManageChatUserCell.java @@ -40,6 +40,7 @@ public class ManageChatUserCell extends FrameLayout { private SimpleTextView statusTextView; private ImageView optionsButton; private ImageView customImageView; + private Theme.ResourcesProvider resourcesProvider; private AvatarDrawable avatarDrawable; private Object currentObject; @@ -70,10 +71,15 @@ public class ManageChatUserCell extends FrameLayout { } public ManageChatUserCell(Context context, int avatarPadding, int nPadding, boolean needOption) { - super(context); + this(context, avatarPadding, nPadding, needOption, null); + } - statusColor = Theme.getColor(Theme.key_windowBackgroundWhiteGrayText); - statusOnlineColor = Theme.getColor(Theme.key_windowBackgroundWhiteBlueText); + public ManageChatUserCell(Context context, int avatarPadding, int nPadding, boolean needOption, Theme.ResourcesProvider resourcesProvider) { + super(context); + this.resourcesProvider = resourcesProvider; + + statusColor = Theme.getColor(Theme.key_windowBackgroundWhiteGrayText, resourcesProvider); + statusOnlineColor = Theme.getColor(Theme.key_windowBackgroundWhiteBlueText, resourcesProvider); namePadding = nPadding; @@ -84,7 +90,7 @@ public class ManageChatUserCell extends FrameLayout { addView(avatarImageView, LayoutHelper.createFrame(46, 46, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 7 + avatarPadding, 8, LocaleController.isRTL ? 7 + avatarPadding : 0, 0)); nameTextView = new SimpleTextView(context); - nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); nameTextView.setTextSize(17); nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); nameTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP); @@ -98,9 +104,9 @@ public class ManageChatUserCell extends FrameLayout { if (needOption) { optionsButton = new ImageView(context); optionsButton.setFocusable(false); - optionsButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.getColor(Theme.key_stickers_menuSelector))); + optionsButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.getColor(Theme.key_stickers_menuSelector, resourcesProvider))); optionsButton.setImageResource(R.drawable.ic_ab_other); - optionsButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_stickers_menu), PorterDuff.Mode.MULTIPLY)); + optionsButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_stickers_menu, resourcesProvider), PorterDuff.Mode.MULTIPLY)); optionsButton.setScaleType(ImageView.ScaleType.CENTER); addView(optionsButton, LayoutHelper.createFrame(60, 64, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP)); optionsButton.setOnClickListener(v -> delegate.onOptionsButtonCheck(ManageChatUserCell.this, true)); @@ -112,7 +118,7 @@ public class ManageChatUserCell extends FrameLayout { customImageView = new ImageView(getContext()); customImageView.setImageResource(resId); customImageView.setScaleType(ImageView.ScaleType.CENTER); - customImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_voipgroup_mutedIconUnscrolled), PorterDuff.Mode.MULTIPLY)); + customImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_voipgroup_mutedIconUnscrolled, resourcesProvider), PorterDuff.Mode.MULTIPLY)); addView(customImageView, LayoutHelper.createFrame(52, 64, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP)); } @@ -348,7 +354,7 @@ public class ManageChatUserCell extends FrameLayout { protected void onDraw(Canvas canvas) { if (needDivider) { if (dividerColor != null) { - Theme.dividerExtraPaint.setColor(Theme.getColor(dividerColor)); + Theme.dividerExtraPaint.setColor(Theme.getColor(dividerColor, resourcesProvider)); } canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(68), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(68) : 0), getMeasuredHeight() - 1, dividerColor != null ? Theme.dividerExtraPaint : Theme.dividerPaint); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/MaxFileSizeCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/MaxFileSizeCell.java index 020a31935..d5970db50 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/MaxFileSizeCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/MaxFileSizeCell.java @@ -95,7 +95,7 @@ public class MaxFileSizeCell extends FrameLayout { progress -= 0.25f; size += 90 * 1024 * 1024; - size += (FileLoader.MAX_FILE_SIZE - size) * (progress / 0.25f); + size += (FileLoader.DEFAULT_MAX_FILE_SIZE - size) * (progress / 0.25f); } } } @@ -196,7 +196,7 @@ public class MaxFileSizeCell extends FrameLayout { progress += 0.25f; size -= 90 * 1024 * 1024; - progress += Math.max(0, size / (float) (FileLoader.MAX_FILE_SIZE - 100 * 1024 * 1024)) * 0.25f; + progress += Math.max(0, size / (float) (FileLoader.DEFAULT_MAX_FILE_SIZE - 100 * 1024 * 1024)) * 0.25f; } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/MemberRequestCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/MemberRequestCell.java index 03ce557bd..31faf8f37 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/MemberRequestCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/MemberRequestCell.java @@ -53,7 +53,7 @@ public class MemberRequestCell extends FrameLayout { int btnPadding = AndroidUtilities.dp(17); TextView addButton = new TextView(getContext()); - addButton.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + addButton.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); addButton.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); addButton.setMaxLines(1); addButton.setPadding(btnPadding, 0, btnPadding, 0); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/MentionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/MentionCell.java index 89cbb021a..bf06cc94e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/MentionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/MentionCell.java @@ -9,6 +9,7 @@ package org.telegram.ui.Cells; import android.content.Context; +import android.graphics.Canvas; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; @@ -32,8 +33,9 @@ public class MentionCell extends LinearLayout { private TextView nameTextView; private TextView usernameTextView; private AvatarDrawable avatarDrawable; + private Theme.ResourcesProvider resourcesProvider; - public MentionCell(Context context) { + public MentionCell(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); setOrientation(HORIZONTAL); @@ -46,7 +48,7 @@ public class MentionCell extends LinearLayout { addView(imageView, LayoutHelper.createLinear(28, 28, 12, 4, 0, 0)); nameTextView = new TextView(context); - nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + nameTextView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); nameTextView.setSingleLine(true); nameTextView.setGravity(Gravity.LEFT); @@ -54,7 +56,7 @@ public class MentionCell extends LinearLayout { addView(nameTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 12, 0, 0, 0)); usernameTextView = new TextView(context); - usernameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText3)); + usernameTextView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText3)); usernameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); usernameTextView.setSingleLine(true); usernameTextView.setGravity(Gravity.LEFT); @@ -90,6 +92,23 @@ public class MentionCell extends LinearLayout { usernameTextView.setVisibility(VISIBLE); } + private boolean needsDivider = false; + public void setDivider(boolean enabled) { + if (enabled != needsDivider) { + needsDivider = enabled; + setWillNotDraw(!needsDivider); + invalidate(); + } + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + if (needsDivider) { + canvas.drawLine(AndroidUtilities.dp(52), getHeight() - 1, getWidth() - AndroidUtilities.dp(8), getHeight() - 1, Theme.dividerPaint); + } + } + public void setChat(TLRPC.Chat chat) { if (chat == null) { nameTextView.setText(""); @@ -157,8 +176,13 @@ public class MentionCell extends LinearLayout { nameTextView.setTextColor(0xffffffff); usernameTextView.setTextColor(0xffbbbbbb); } else { - nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - usernameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText3)); + nameTextView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); + usernameTextView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText3)); } } + + private int getThemedColor(String key) { + Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null; + return color != null ? color : Theme.getColor(key); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/NotificationsCheckCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/NotificationsCheckCell.java index 97d086b14..7804a56e0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/NotificationsCheckCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/NotificationsCheckCell.java @@ -15,6 +15,7 @@ import android.graphics.PorterDuffColorFilter; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -38,13 +39,24 @@ public class NotificationsCheckCell extends FrameLayout { private boolean isMultiline; private int currentHeight; private boolean animationsEnabled; + private Theme.ResourcesProvider resourcesProvider; public NotificationsCheckCell(Context context) { - this(context, 21, 70, false); + this(context, 21, 70, false, null); + } + + public NotificationsCheckCell(Context context, Theme.ResourcesProvider resourcesProvider) { + this(context, 21, 70, false, resourcesProvider); } public NotificationsCheckCell(Context context, int padding, int height, boolean reorder) { + this(context, padding, height, reorder, null); + } + + public NotificationsCheckCell(Context context, int padding, int height, boolean reorder, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; + setWillNotDraw(false); currentHeight = height; @@ -53,12 +65,12 @@ public class NotificationsCheckCell extends FrameLayout { moveImageView.setFocusable(false); moveImageView.setScaleType(ImageView.ScaleType.CENTER); moveImageView.setImageResource(R.drawable.poll_reorder); - moveImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon), PorterDuff.Mode.MULTIPLY)); + moveImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon, resourcesProvider), PorterDuff.Mode.MULTIPLY)); addView(moveImageView, LayoutHelper.createFrame(48, 48, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL, 6, 0, 6, 0)); } textView = new TextView(context); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); @@ -68,7 +80,7 @@ public class NotificationsCheckCell extends FrameLayout { addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 80 : (reorder ? 64 : padding), 13 + (currentHeight - 70) / 2, LocaleController.isRTL ? (reorder ? 64 : padding) : 80, 0)); valueTextView = new TextView(context); - valueTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); + valueTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2, resourcesProvider)); valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); valueTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); valueTextView.setLines(1); @@ -78,10 +90,10 @@ public class NotificationsCheckCell extends FrameLayout { valueTextView.setEllipsize(TextUtils.TruncateAt.END); addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 80 : (reorder ? 64 : padding), 38 + (currentHeight - 70) / 2, LocaleController.isRTL ? (reorder ? 64 : padding) : 80, 0)); - checkBox = new Switch(context); + checkBox = new Switch(context, resourcesProvider); checkBox.setColors(Theme.key_switchTrack, Theme.key_switchTrackChecked, Theme.key_windowBackgroundWhite, Theme.key_windowBackgroundWhite); addView(checkBox, LayoutHelper.createFrame(37, 40, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL, 21, 0, 21, 0)); - checkBox.setFocusable(true); + checkBox.setFocusable(false); } @Override @@ -156,4 +168,19 @@ public class NotificationsCheckCell extends FrameLayout { public void setAnimationsEnabled(boolean animationsEnabled) { this.animationsEnabled = animationsEnabled; } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName("android.widget.Switch"); + StringBuilder sb = new StringBuilder(); + sb.append(textView.getText()); + if (valueTextView != null && !TextUtils.isEmpty(valueTextView.getText())) { + sb.append("\n"); + sb.append(valueTextView.getText()); + } + info.setContentDescription(sb); + info.setCheckable(true); + info.setChecked(checkBox.isChecked()); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PatternCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PatternCell.java index 05306832d..3cdf2402e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PatternCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PatternCell.java @@ -35,6 +35,8 @@ import java.io.File; public class PatternCell extends BackupImageView implements DownloadController.FileDownloadProgressListener { + private final int SIZE = 100; + private RectF rect = new RectF(); private RadialProgress2 radialProgress; private boolean wasSelected; @@ -76,7 +78,7 @@ public class PatternCell extends BackupImageView implements DownloadController.F radialProgress = new RadialProgress2(this); radialProgress.setProgressRect(AndroidUtilities.dp(30), AndroidUtilities.dp(30), AndroidUtilities.dp(70), AndroidUtilities.dp(70)); - backgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + backgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); TAG = DownloadController.getInstance(currentAccount).generateObserverTag(); @@ -94,8 +96,8 @@ public class PatternCell extends BackupImageView implements DownloadController.F public void setPattern(TLRPC.TL_wallPaper wallPaper) { currentPattern = wallPaper; if (wallPaper != null) { - TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(wallPaper.document.thumbs, 100); - setImage(ImageLocation.getForDocument(thumb, wallPaper.document), "100_100", null, null, "jpg", 0, 1, wallPaper); + TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(wallPaper.document.thumbs, AndroidUtilities.dp(SIZE)); + setImage(ImageLocation.getForDocument(thumb, wallPaper.document), SIZE + "_" + SIZE, null, null, "png", 0, 1, wallPaper); } else { setImageDrawable(null); } @@ -135,12 +137,12 @@ public class PatternCell extends BackupImageView implements DownloadController.F if (TextUtils.isEmpty(fileName)) { return; } - path = FileLoader.getPathToAttach(wallPaper.document, true); + path = FileLoader.getInstance(currentAccount).getPathToAttach(wallPaper.document, true); } else { MediaController.SearchImage wallPaper = (MediaController.SearchImage) image; if (wallPaper.photo != null) { TLRPC.PhotoSize photoSize = FileLoader.getClosestPhotoSizeWithSize(wallPaper.photo.sizes, maxWallpaperSize, true); - path = FileLoader.getPathToAttach(photoSize, true); + path = FileLoader.getInstance(currentAccount).getPathToAttach(photoSize, true); fileName = FileLoader.getAttachFileName(photoSize); } else { path = ImageLoader.getHttpFilePath(wallPaper.imageUrl, "jpg"); @@ -245,7 +247,7 @@ public class PatternCell extends BackupImageView implements DownloadController.F @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - setMeasuredDimension(AndroidUtilities.dp(100), AndroidUtilities.dp(100)); + setMeasuredDimension(AndroidUtilities.dp(SIZE), AndroidUtilities.dp(SIZE)); } @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PaymentInfoCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PaymentInfoCell.java index 66fb58991..1c23e9d23 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PaymentInfoCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PaymentInfoCell.java @@ -37,6 +37,7 @@ public class PaymentInfoCell extends FrameLayout { super(context); imageView = new BackupImageView(context); + imageView.getImageReceiver().setRoundRadius(AndroidUtilities.dp(8)); addView(imageView, LayoutHelper.createFrame(100, 100, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), 10, 10, 10, 0)); nameTextView = new TextView(context); @@ -83,9 +84,9 @@ public class PaymentInfoCell extends FrameLayout { super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), h); } - public void setInvoice(TLRPC.TL_messageMediaInvoice invoice, String botname) { - nameTextView.setText(invoice.title); - detailTextView.setText(invoice.description); + public void setInfo(String title, String description, TLRPC.WebDocument photo, String botname, Object parentObject) { + nameTextView.setText(title); + detailTextView.setText(description); detailExTextView.setText(botname); int maxPhotoWidth; @@ -99,13 +100,13 @@ public class PaymentInfoCell extends FrameLayout { float scale = width / (float) (maxPhotoWidth - AndroidUtilities.dp(2)); width /= scale; height /= scale; - if (invoice.photo != null && invoice.photo.mime_type.startsWith("image/")) { + if (photo != null && photo.mime_type.startsWith("image/")) { nameTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 10 : 123, 9, LocaleController.isRTL ? 123 : 10, 0)); detailTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 10 : 123, 33, LocaleController.isRTL ? 123 : 10, 0)); detailExTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 10 : 123, 90, LocaleController.isRTL ? 123 : 10, 0)); imageView.setVisibility(VISIBLE); String filter = String.format(Locale.US, "%d_%d", width, height); - imageView.getImageReceiver().setImage(ImageLocation.getForWebFile(WebFile.createWithWebDocument(invoice.photo)), filter, null, null, -1, null, invoice, 1); + imageView.getImageReceiver().setImage(ImageLocation.getForWebFile(WebFile.createWithWebDocument(photo)), filter, null, null, -1, null, parentObject, 1); } else { nameTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 17, 9, 17, 0)); detailTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 17, 33, 17, 0)); @@ -114,34 +115,11 @@ public class PaymentInfoCell extends FrameLayout { } } + public void setInvoice(TLRPC.TL_messageMediaInvoice invoice, String botname) { + setInfo(invoice.title, invoice.description, invoice.photo, botname, invoice); + } + public void setReceipt(TLRPC.TL_payments_paymentReceipt receipt, String botname) { - nameTextView.setText(receipt.title); - detailTextView.setText(receipt.description); - detailExTextView.setText(botname); - - int maxPhotoWidth; - if (AndroidUtilities.isTablet()) { - maxPhotoWidth = (int) (AndroidUtilities.getMinTabletSide() * 0.7f); - } else { - maxPhotoWidth = (int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.7f); - } - int width = 640; - int height = 360; - float scale = width / (float) (maxPhotoWidth - AndroidUtilities.dp(2)); - width /= scale; - height /= scale; - if (receipt.photo != null && receipt.photo.mime_type.startsWith("image/")) { - nameTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 10 : 123, 9, LocaleController.isRTL ? 123 : 10, 0)); - detailTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 10 : 123, 33, LocaleController.isRTL ? 123 : 10, 0)); - detailExTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 10 : 123, 90, LocaleController.isRTL ? 123 : 10, 0)); - imageView.setVisibility(VISIBLE); - String filter = String.format(Locale.US, "%d_%d", width, height); - imageView.getImageReceiver().setImage(ImageLocation.getForWebFile(WebFile.createWithWebDocument(receipt.photo)), filter, null, null, -1, null, receipt, 1); - } else { - nameTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 17, 9, 17, 0)); - detailTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 17, 33, 17, 0)); - detailExTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 17, 90, 17, 9)); - imageView.setVisibility(GONE); - } + setInfo(receipt.title, receipt.description, receipt.photo, botname, receipt); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java index e2c9d7611..febf7ee60 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java @@ -11,6 +11,7 @@ package org.telegram.ui.Cells; import android.content.Context; import android.graphics.Canvas; import android.graphics.RectF; +import android.graphics.drawable.Drawable; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; @@ -21,29 +22,31 @@ import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.DialogObject; +import org.telegram.messenger.Emoji; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; -import org.telegram.messenger.SharedConfig; -import org.telegram.messenger.UserObject; +import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.messenger.UserObject; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; -import org.telegram.messenger.UserConfig; -import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.CheckBox2; -import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.PremiumGradient; import org.telegram.ui.NotificationsSettingsActivity; -public class ProfileSearchCell extends BaseCell { +public class ProfileSearchCell extends BaseCell implements NotificationCenter.NotificationCenterDelegate { private CharSequence currentName; private ImageReceiver avatarImage; private AvatarDrawable avatarDrawable; private CharSequence subLabel; + private Theme.ResourcesProvider resourcesProvider; private TLRPC.User user; private TLRPC.Chat chat; @@ -64,9 +67,6 @@ public class ProfileSearchCell extends BaseCell { private int nameTop; private StaticLayout nameLayout; private boolean drawNameLock; - private boolean drawNameBroadcast; - private boolean drawNameGroup; - private boolean drawNameBot; private int nameLockLeft; private int nameLockTop; private int nameWidth; @@ -80,8 +80,10 @@ public class ProfileSearchCell extends BaseCell { private int countLeft; private int countWidth; private StaticLayout countLayout; + private boolean[] isOnline; private boolean drawCheck; + private boolean drawPremium; private int statusLeft; private StaticLayout statusLayout; @@ -91,13 +93,18 @@ public class ProfileSearchCell extends BaseCell { CheckBox2 checkBox; public ProfileSearchCell(Context context) { + this(context, null); + } + + public ProfileSearchCell(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; avatarImage = new ImageReceiver(this); avatarImage.setRoundRadius(AndroidUtilities.dp(23)); avatarDrawable = new AvatarDrawable(); - checkBox = new CheckBox2(context, 21); + checkBox = new CheckBox2(context, 21, resourcesProvider); checkBox.setColor(null, Theme.key_windowBackgroundWhite, Theme.key_checkboxCheck); checkBox.setDrawUnchecked(false); checkBox.setDrawBackgroundAsArc(3); @@ -188,12 +195,21 @@ public class ProfileSearchCell extends BaseCell { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); avatarImage.onDetachedFromWindow(); + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.emojiLoaded); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); avatarImage.onAttachedToWindow(); + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.emojiLoaded); + } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.emojiLoaded) { + invalidate(); + } } @Override @@ -236,11 +252,9 @@ public class ProfileSearchCell extends BaseCell { CharSequence nameString; TextPaint currentNamePaint; - drawNameBroadcast = false; drawNameLock = false; - drawNameGroup = false; drawCheck = false; - drawNameBot = false; + drawPremium = false; if (encryptedChat != null) { drawNameLock = true; @@ -256,30 +270,11 @@ public class ProfileSearchCell extends BaseCell { } else { if (chat != null) { dialog_id = -chat.id; - if (SharedConfig.drawDialogIcons) { - if (ChatObject.isChannel(chat) && !chat.megagroup) { - drawNameBroadcast = true; - nameLockTop = AndroidUtilities.dp(22.5f); - } else { - drawNameGroup = true; - nameLockTop = AndroidUtilities.dp(24); - } - } drawCheck = chat.verified; - if (SharedConfig.drawDialogIcons) { - if (!LocaleController.isRTL) { - nameLockLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline); - nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4) + (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline + 2) - (drawNameGroup ? Theme.dialogs_groupDrawable.getIntrinsicWidth() : Theme.dialogs_broadcastDrawable.getIntrinsicWidth()); - nameLeft = AndroidUtilities.dp(11); - } + if (!LocaleController.isRTL) { + nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline); } else { - if (!LocaleController.isRTL) { - nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline); - } else { - nameLeft = AndroidUtilities.dp(11); - } + nameLeft = AndroidUtilities.dp(11); } } else if (user != null) { dialog_id = user.id; @@ -288,20 +283,9 @@ public class ProfileSearchCell extends BaseCell { } else { nameLeft = AndroidUtilities.dp(11); } - if (SharedConfig.drawDialogIcons && user.bot && !MessagesController.isSupportUser(user)) { - drawNameBot = true; - if (!LocaleController.isRTL) { - nameLockLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline); - nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4) + Theme.dialogs_botDrawable.getIntrinsicWidth(); - } else { - nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline + 2) - Theme.dialogs_botDrawable.getIntrinsicWidth(); - nameLeft = AndroidUtilities.dp(11); - } - nameLockTop = AndroidUtilities.dp(20.5f); - } else { - nameLockTop = AndroidUtilities.dp(21); - } + nameLockTop = AndroidUtilities.dp(21); drawCheck = user.verified; + drawPremium = !user.self && MessagesController.getInstance(currentAccount).isPremiumUser(user); } } @@ -337,12 +321,6 @@ public class ProfileSearchCell extends BaseCell { } if (drawNameLock) { nameWidth -= AndroidUtilities.dp(6) + Theme.dialogs_lockDrawable.getIntrinsicWidth(); - } else if (drawNameBroadcast) { - nameWidth -= AndroidUtilities.dp(6) + Theme.dialogs_broadcastDrawable.getIntrinsicWidth(); - } else if (drawNameGroup) { - nameWidth -= AndroidUtilities.dp(6) + Theme.dialogs_groupDrawable.getIntrinsicWidth(); - } else if (drawNameBot) { - nameWidth -= AndroidUtilities.dp(6) + Theme.dialogs_botDrawable.getIntrinsicWidth(); } nameWidth -= getPaddingLeft() + getPaddingRight(); @@ -357,6 +335,7 @@ public class ProfileSearchCell extends BaseCell { countLayout = new StaticLayout(countString, Theme.dialogs_countTextPaint, countWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false); int w = countWidth + AndroidUtilities.dp(18); nameWidth -= w; + statusWidth -= w; if (!LocaleController.isRTL) { countLeft = getMeasuredWidth() - countWidth - AndroidUtilities.dp(19); } else { @@ -376,6 +355,9 @@ public class ProfileSearchCell extends BaseCell { nameWidth = 0; } CharSequence nameStringFinal = TextUtils.ellipsize(nameString, currentNamePaint, nameWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END); + if (nameStringFinal != null) { + nameStringFinal = Emoji.replaceEmoji(nameStringFinal, currentNamePaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); + } nameLayout = new StaticLayout(nameStringFinal, currentNamePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); CharSequence statusString = null; @@ -397,7 +379,14 @@ public class ProfileSearchCell extends BaseCell { } else if (user.id == 333000 || user.id == 777000) { statusString = LocaleController.getString("ServiceNotifications", R.string.ServiceNotifications); } else { - statusString = LocaleController.formatUserStatus(currentAccount, user); + if (isOnline == null) { + isOnline = new boolean[1]; + } + isOnline[0] = false; + statusString = LocaleController.formatUserStatus(currentAccount, user, isOnline); + if (isOnline[0]) { + currentStatusPaint = Theme.dialogs_onlinePaint; + } if (user != null && (user.id == UserConfig.getInstance(currentAccount).getClientUserId() || user.status != null && user.status.expires > ConnectionsManager.getInstance(currentAccount).getCurrentTime())) { currentStatusPaint = Theme.dialogs_onlinePaint; statusString = LocaleController.getString("Online", R.string.Online); @@ -512,17 +501,25 @@ public class ProfileSearchCell extends BaseCell { avatarDrawable.setAvatarType(AvatarDrawable.AVATAR_TYPE_SAVED); avatarImage.setImage(null, null, avatarDrawable, null, null, 0); } else { + Drawable thumb = avatarDrawable; if (user.photo != null) { photo = user.photo.photo_small; + if (user.photo.strippedBitmap != null) { + thumb = user.photo.strippedBitmap; + } } - avatarImage.setImage(ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_SMALL), "50_50", ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_STRIPPED), "50_50", avatarDrawable, user, 0); + avatarImage.setImage(ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_SMALL), "50_50", ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_STRIPPED), "50_50", thumb, user, 0); } } else if (chat != null) { + Drawable thumb = avatarDrawable; if (chat.photo != null) { photo = chat.photo.photo_small; + if (chat.photo.strippedBitmap != null) { + thumb = chat.photo.strippedBitmap; + } } avatarDrawable.setInfo(chat); - avatarImage.setImage(ImageLocation.getForUserOrChat(chat, ImageLocation.TYPE_SMALL), "50_50", ImageLocation.getForUserOrChat(chat, ImageLocation.TYPE_STRIPPED), "50_50", avatarDrawable, chat, 0); + avatarImage.setImage(ImageLocation.getForUserOrChat(chat, ImageLocation.TYPE_SMALL), "50_50", ImageLocation.getForUserOrChat(chat, ImageLocation.TYPE_STRIPPED), "50_50", thumb, chat, 0); } else { avatarDrawable.setInfo(0, null, null); avatarImage.setImage(null, null, avatarDrawable, null, null, 0); @@ -605,15 +602,6 @@ public class ProfileSearchCell extends BaseCell { if (drawNameLock) { setDrawableBounds(Theme.dialogs_lockDrawable, nameLockLeft, nameLockTop); Theme.dialogs_lockDrawable.draw(canvas); - } else if (drawNameGroup) { - setDrawableBounds(Theme.dialogs_groupDrawable, nameLockLeft, nameLockTop); - Theme.dialogs_groupDrawable.draw(canvas); - } else if (drawNameBroadcast) { - setDrawableBounds(Theme.dialogs_broadcastDrawable, nameLockLeft, nameLockTop); - Theme.dialogs_broadcastDrawable.draw(canvas); - } else if (drawNameBot) { - setDrawableBounds(Theme.dialogs_botDrawable, nameLockLeft, nameLockTop); - Theme.dialogs_botDrawable.draw(canvas); } if (nameLayout != null) { @@ -621,22 +609,28 @@ public class ProfileSearchCell extends BaseCell { canvas.translate(nameLeft, nameTop); nameLayout.draw(canvas); canvas.restore(); - if (drawCheck) { + if (drawCheck || drawPremium) { int x; + Drawable drawable = drawCheck ? Theme.dialogs_verifiedDrawable : PremiumGradient.getInstance().premiumStarDrawableMini; if (LocaleController.isRTL) { if (nameLayout.getLineLeft(0) == 0) { - x = nameLeft - AndroidUtilities.dp(6) - Theme.dialogs_verifiedDrawable.getIntrinsicWidth(); + x = nameLeft - AndroidUtilities.dp(6) - drawable.getIntrinsicWidth(); } else { float w = nameLayout.getLineWidth(0); - x = (int) (nameLeft + nameWidth - Math.ceil(w) - AndroidUtilities.dp(6) - Theme.dialogs_verifiedDrawable.getIntrinsicWidth()); + x = (int) (nameLeft + nameWidth - Math.ceil(w) - AndroidUtilities.dp(6) - drawable.getIntrinsicWidth()); } } else { x = (int) (nameLeft + nameLayout.getLineRight(0) + AndroidUtilities.dp(6)); } - setDrawableBounds(Theme.dialogs_verifiedDrawable, x, nameTop + AndroidUtilities.dp(3)); - setDrawableBounds(Theme.dialogs_verifiedCheckDrawable, x, nameTop + AndroidUtilities.dp(3)); - Theme.dialogs_verifiedDrawable.draw(canvas); - Theme.dialogs_verifiedCheckDrawable.draw(canvas); + if (drawCheck) { + setDrawableBounds(Theme.dialogs_verifiedDrawable, x, nameTop + AndroidUtilities.dp(3)); + setDrawableBounds(Theme.dialogs_verifiedCheckDrawable, x, nameTop + AndroidUtilities.dp(3)); + Theme.dialogs_verifiedDrawable.draw(canvas); + Theme.dialogs_verifiedCheckDrawable.draw(canvas); + } else if (drawPremium) { + setDrawableBounds(drawable, x, nameTop + AndroidUtilities.dp(1.5f)); + drawable.draw(canvas); + } } } @@ -667,6 +661,9 @@ public class ProfileSearchCell extends BaseCell { if (nameLayout != null) { builder.append(nameLayout.getText()); } + if (drawCheck) { + builder.append(", ").append(LocaleController.getString("AccDescrVerified", R.string.AccDescrVerified)).append("\n"); + } if (statusLayout != null) { if (builder.length() > 0) { builder.append(", "); @@ -674,6 +671,11 @@ public class ProfileSearchCell extends BaseCell { builder.append(statusLayout.getText()); } info.setText(builder.toString()); + if (checkBox.isChecked()) { + info.setCheckable(true); + info.setChecked(checkBox.isChecked()); + info.setClassName("android.widget.CheckBox"); + } } public long getDialogId() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/RadioCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/RadioCell.java index dd5075d26..5e7e1f075 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/RadioCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/RadioCell.java @@ -30,6 +30,7 @@ import java.util.ArrayList; public class RadioCell extends FrameLayout { + private Theme.ResourcesProvider resourcesProvider; private TextView textView; private RadioButton radioButton; private boolean needDivider; @@ -38,14 +39,23 @@ public class RadioCell extends FrameLayout { this(context, false, 21); } + public RadioCell(Context context, Theme.ResourcesProvider resourcesProvider) { + this(context, false, 21, resourcesProvider); + } + public RadioCell(Context context, boolean dialog, int padding) { + this(context, dialog, padding, null); + } + + public RadioCell(Context context, boolean dialog, int padding, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; textView = new TextView(context); if (dialog) { - textView.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); + textView.setTextColor(Theme.getColor(Theme.key_dialogTextBlack, resourcesProvider)); } else { - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); } textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); @@ -58,9 +68,9 @@ public class RadioCell extends FrameLayout { radioButton = new RadioButton(context); radioButton.setSize(AndroidUtilities.dp(20)); if (dialog) { - radioButton.setColor(Theme.getColor(Theme.key_dialogRadioBackground), Theme.getColor(Theme.key_dialogRadioBackgroundChecked)); + radioButton.setColor(Theme.getColor(Theme.key_dialogRadioBackground, resourcesProvider), Theme.getColor(Theme.key_dialogRadioBackgroundChecked, resourcesProvider)); } else { - radioButton.setColor(Theme.getColor(Theme.key_radioBackground), Theme.getColor(Theme.key_radioBackgroundChecked)); + radioButton.setColor(Theme.getColor(Theme.key_radioBackground, resourcesProvider), Theme.getColor(Theme.key_radioBackgroundChecked, resourcesProvider)); } addView(radioButton, LayoutHelper.createFrame(22, 22, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, (LocaleController.isRTL ? padding + 1 : 0), 14, (LocaleController.isRTL ? 0 : padding + 1), 0)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/RecurrentPaymentsAcceptCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/RecurrentPaymentsAcceptCell.java new file mode 100644 index 000000000..27d397506 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/RecurrentPaymentsAcceptCell.java @@ -0,0 +1,70 @@ +package org.telegram.ui.Cells; + +import android.content.Context; +import android.graphics.Canvas; +import android.text.TextUtils; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.FrameLayout; +import android.widget.TextView; + +import org.telegram.messenger.LocaleController; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.CheckBoxSquare; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.LinkSpanDrawable; + +public class RecurrentPaymentsAcceptCell extends FrameLayout { + private LinkSpanDrawable.LinkCollector links; + + private TextView textView; + private CheckBoxSquare checkBox; + + public RecurrentPaymentsAcceptCell(Context context, Theme.ResourcesProvider resourcesProvider) { + super(context); + + checkBox = new CheckBoxSquare(context, false); + checkBox.setDuplicateParentStateEnabled(false); + checkBox.setFocusable(false); + checkBox.setFocusableInTouchMode(false); + checkBox.setClickable(false); + addView(checkBox, LayoutHelper.createFrame(18, 18, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL, 21, 0, 21, 0)); + + textView = new LinkSpanDrawable.LinksTextView(context, links = new LinkSpanDrawable.LinkCollector(this), resourcesProvider); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); + textView.setLinkTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkText, resourcesProvider)); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + textView.setMaxLines(2); + textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); + textView.setEllipsize(TextUtils.TruncateAt.END); + addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 16 : 58, 21, LocaleController.isRTL ? 58 : 16, 21)); + + setWillNotDraw(false); + } + + public TextView getTextView() { + return textView; + } + + public void setText(CharSequence text) { + textView.setText(text); + } + + public void setChecked(boolean checked) { + checkBox.setChecked(checked, true); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + if (links != null) { + canvas.save(); + canvas.translate(textView.getLeft(), textView.getTop()); + if (links.draw(canvas)) { + invalidate(); + } + canvas.restore(); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SendLocationCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SendLocationCell.java index 16ded5540..414f2a1b9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SendLocationCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SendLocationCell.java @@ -57,6 +57,8 @@ public class SendLocationCell extends FrameLayout { imageView = new ImageView(context); + setBackground(Theme.AdaptiveRipple.rect()); + imageView.setTag(live ? Theme.key_location_sendLiveLocationBackground + Theme.key_location_sendLiveLocationIcon : Theme.key_location_sendLocationBackground + Theme.key_location_sendLocationIcon); Drawable circle = Theme.createSimpleSelectorCircleDrawable(AndroidUtilities.dp(42), getThemedColor(live ? Theme.key_location_sendLiveLocationBackground : Theme.key_location_sendLocationBackground), getThemedColor(live ? Theme.key_location_sendLiveLocationBackground : Theme.key_location_sendLocationBackground)); if (live) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SessionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SessionCell.java index 55985d392..46be5c9e2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SessionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SessionCell.java @@ -15,6 +15,7 @@ import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.text.SpannableStringBuilder; import android.text.TextUtils; +import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -35,9 +36,11 @@ import org.telegram.messenger.UserObject; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.AnimatedFloat; import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.CombinedDrawable; +import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.DotDividerSpan; import org.telegram.ui.Components.FlickerLoadingView; import org.telegram.ui.Components.LayoutHelper; @@ -50,10 +53,12 @@ public class SessionCell extends FrameLayout { private TextView onlineTextView; private TextView detailTextView; private TextView detailExTextView; + private BackupImageView placeholderImageView; private BackupImageView imageView; private AvatarDrawable avatarDrawable; private boolean needDivider; private boolean showStub; + private AnimatedFloat showStubValue = new AnimatedFloat(this); FlickerLoadingView globalGradient; LinearLayout linearLayout; @@ -71,10 +76,15 @@ public class SessionCell extends FrameLayout { avatarDrawable = new AvatarDrawable(); avatarDrawable.setTextSize(AndroidUtilities.dp(10)); + imageView = new BackupImageView(context); imageView.setRoundRadius(AndroidUtilities.dp(10)); addView(imageView, LayoutHelper.createFrame(20, 20, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, (LocaleController.isRTL ? 0 : 21), 13, (LocaleController.isRTL ? 21 : 0), 0)); } else { + placeholderImageView = new BackupImageView(context); + placeholderImageView.setRoundRadius(AndroidUtilities.dp(10)); + addView(placeholderImageView, LayoutHelper.createFrame(42, 42, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, (LocaleController.isRTL ? 0 : 16), 13, (LocaleController.isRTL ? 16 : 0), 0)); + imageView = new BackupImageView(context); imageView.setRoundRadius(AndroidUtilities.dp(10)); addView(imageView, LayoutHelper.createFrame(42, 42, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, (LocaleController.isRTL ? 0 : 16), 13, (LocaleController.isRTL ? 16 : 0), 0)); @@ -136,6 +146,30 @@ public class SessionCell extends FrameLayout { addView(detailExTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, leftMargin, 59, rightMargin, 0)); } + private void setContentAlpha(float alpha) { + if (detailExTextView != null) { + detailExTextView.setAlpha(alpha); + } + if (detailTextView != null) { + detailTextView.setAlpha(alpha); + } + if (nameTextView != null) { + nameTextView.setAlpha(alpha); + } + if (onlineTextView != null) { + onlineTextView.setAlpha(alpha); + } + if (imageView != null) { + imageView.setAlpha(alpha); + } + if (placeholderImageView != null) { + placeholderImageView.setAlpha(1f - alpha); + } + if (linearLayout != null) { + linearLayout.setAlpha(alpha); + } + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(90) + (needDivider ? 1 : 0), MeasureSpec.EXACTLY)); @@ -302,7 +336,13 @@ public class SessionCell extends FrameLayout { @Override protected void onDraw(Canvas canvas) { - if (showStub && globalGradient != null) { + float stubAlpha = showStubValue.set(showStub ? 1 : 0); + setContentAlpha(1f - stubAlpha); + if (stubAlpha > 0 && globalGradient != null) { + if (stubAlpha < 1f) { + AndroidUtilities.rectTmp.set(0, 0, getWidth(), getHeight()); + canvas.saveLayerAlpha(AndroidUtilities.rectTmp, (int) (255 * stubAlpha), Canvas.ALL_SAVE_FLAG); + } globalGradient.updateColors(); globalGradient.updateGradient(); if (getParent() != null) { @@ -327,6 +367,10 @@ public class SessionCell extends FrameLayout { AndroidUtilities.rectTmp.set(x, y - AndroidUtilities.dp(4), x + getMeasuredWidth() * 0.3f, y + AndroidUtilities.dp(4)); canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(4), AndroidUtilities.dp(4), globalGradient.getPaint()); invalidate(); + + if (stubAlpha < 1f) { + canvas.restore(); + } } if (needDivider) { canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(20), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(20) : 0), getMeasuredHeight() - 1, Theme.dividerPaint); @@ -340,7 +384,11 @@ public class SessionCell extends FrameLayout { Drawable iconDrawable = ContextCompat.getDrawable(ApplicationLoader.applicationContext, AndroidUtilities.isTablet() ? R.drawable.device_tablet_android : R.drawable.device_phone_android).mutate(); iconDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_avatar_text), PorterDuff.Mode.SRC_IN)); CombinedDrawable combinedDrawable = new CombinedDrawable(Theme.createCircleDrawable(AndroidUtilities.dp(42), Theme.getColor(Theme.key_avatar_backgroundGreen)), iconDrawable); - imageView.setImageDrawable(combinedDrawable); + if (placeholderImageView != null) { + placeholderImageView.setImageDrawable(combinedDrawable); + } else { + imageView.setImageDrawable(combinedDrawable); + } invalidate(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SettingsSuggestionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SettingsSuggestionCell.java index e4619a392..19146b46c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SettingsSuggestionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SettingsSuggestionCell.java @@ -30,13 +30,15 @@ public class SettingsSuggestionCell extends LinearLayout { private TextView detailTextView; private TextView yesButton; private TextView noButton; + private Theme.ResourcesProvider resourcesProvider; private int currentType; private int currentAccount = UserConfig.selectedAccount; - public SettingsSuggestionCell(Context context) { + public SettingsSuggestionCell(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; setOrientation(VERTICAL); textView = new TextView(context); @@ -44,14 +46,14 @@ public class SettingsSuggestionCell extends LinearLayout { textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); textView.setEllipsize(TextUtils.TruncateAt.END); textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueHeader)); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueHeader, resourcesProvider)); addView(textView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 21, 15, 21, 0)); detailTextView = new TextView(context); - detailTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); + detailTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2, resourcesProvider)); detailTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); - detailTextView.setLinkTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkText)); - detailTextView.setHighlightColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkSelection)); + detailTextView.setLinkTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkText, resourcesProvider)); + detailTextView.setHighlightColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkSelection, resourcesProvider)); detailTextView.setMovementMethod(new AndroidUtilities.LinkMovementMethodMy()); detailTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); addView(detailTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 21, 8, 21, 0)); @@ -62,13 +64,13 @@ public class SettingsSuggestionCell extends LinearLayout { for (int a = 0; a < 2; a++) { TextView textView = new TextView(context); - textView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + textView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); textView.setLines(1); textView.setSingleLine(true); textView.setGravity(Gravity.CENTER_HORIZONTAL); textView.setEllipsize(TextUtils.TruncateAt.END); textView.setGravity(Gravity.CENTER); - textView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); + textView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText, resourcesProvider)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); linearLayout.addView(textView, LayoutHelper.createLinear(0, 40, 0.5f, a == 0 ? 0 : 4, 0, a == 0 ? 4 : 0, 0)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowSectionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowSectionCell.java index 15f79a7a8..dbdc917ff 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowSectionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowSectionCell.java @@ -23,18 +23,30 @@ public class ShadowSectionCell extends View { private int size; public ShadowSectionCell(Context context) { - this(context, 12); + this(context, 12, null); } - public ShadowSectionCell(Context context, int s) { + public ShadowSectionCell(Context context, Theme.ResourcesProvider resourcesProvider) { + this(context, 12, resourcesProvider); + } + + public ShadowSectionCell(Context context, int s) { + this(context, s, null); + } + + public ShadowSectionCell(Context context, int s, Theme.ResourcesProvider resourcesProvider) { super(context); - setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); + setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.getColor(Theme.key_windowBackgroundGrayShadow, resourcesProvider))); size = s; } public ShadowSectionCell(Context context, int s, int backgroundColor) { + this(context, s, backgroundColor, null); + } + + public ShadowSectionCell(Context context, int s, int backgroundColor, Theme.ResourcesProvider resourcesProvider) { super(context); - Drawable shadowDrawable = Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow); + Drawable shadowDrawable = Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.getColor(Theme.key_windowBackgroundGrayShadow, resourcesProvider)); Drawable background = new ColorDrawable(backgroundColor); CombinedDrawable combinedDrawable = new CombinedDrawable(background, shadowDrawable, 0, 0); combinedDrawable.setFullsize(true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShareDialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShareDialogCell.java index 4a038a467..3846c84c8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShareDialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShareDialogCell.java @@ -15,6 +15,7 @@ import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.TextView; @@ -205,4 +206,12 @@ public class ShareDialogCell extends FrameLayout { Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null; return color != null ? color : Theme.getColor(key); } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (checkBox.isChecked()) { + info.setSelected(true); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedAudioCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedAudioCell.java index 4fe9e6251..4115c62ae 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedAudioCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedAudioCell.java @@ -4,6 +4,9 @@ import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; +import android.graphics.Rect; +import android.os.Build; +import android.os.Bundle; import android.text.Layout; import android.text.SpannableStringBuilder; import android.text.StaticLayout; @@ -12,7 +15,11 @@ import android.text.TextUtils; import android.view.Gravity; import android.view.MotionEvent; import android.view.SoundEffectConstants; +import android.view.View; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; +import android.view.accessibility.AccessibilityNodeProvider; import android.widget.FrameLayout; import org.telegram.messenger.AndroidUtilities; @@ -28,6 +35,7 @@ import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; import org.telegram.messenger.UserConfig; +import org.telegram.messenger.UserObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.CheckBox2; @@ -38,6 +46,8 @@ import org.telegram.ui.Components.MediaActionDrawable; import org.telegram.ui.Components.RadialProgress2; import org.telegram.ui.FilteredSearchView; +import java.util.Locale; + public class SharedAudioCell extends FrameLayout implements DownloadController.FileDownloadProgressListener, NotificationCenter.NotificationCenterDelegate { private SpannableStringBuilder dotSpan; @@ -94,6 +104,7 @@ public class SharedAudioCell extends FrameLayout implements DownloadController.F this.resourcesProvider = resourcesProvider; this.viewType = viewType; setFocusable(true); + setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); radialProgress = new RadialProgress2(this, resourcesProvider); radialProgress.setColors(Theme.key_chat_inLoader, Theme.key_chat_inLoaderSelected, Theme.key_chat_inMediaIcon, Theme.key_chat_inMediaIconSelected); @@ -523,6 +534,7 @@ public class SharedAudioCell extends FrameLayout implements DownloadController.F @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); + info.setEnabled(true); if (currentMessageObject.isMusic()) { info.setText(LocaleController.formatString("AccDescrMusicInfo", R.string.AccDescrMusicInfo, currentMessageObject.getMusicAuthor(), currentMessageObject.getMusicTitle())); } else if (titleLayout != null && descriptionLayout != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java index 19139aa2e..4584b302a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java @@ -31,12 +31,12 @@ import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DownloadController; +import org.telegram.messenger.FileLoader; import org.telegram.messenger.ImageLoader; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.MessageObject; -import org.telegram.messenger.FileLoader; import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; import org.telegram.tgnet.TLRPC; @@ -400,7 +400,7 @@ public class SharedDocumentCell extends FrameLayout implements DownloadControlle if (!messageObject.isVideo() && !(messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaPhoto) && !MessageObject.isGifDocument(document)) { fileName = FileLoader.getDocumentFileName(document); } - if (TextUtils.isEmpty(fileName)) { + if (TextUtils.isEmpty(fileName) && document.mime_type != null) { if (document.mime_type.startsWith("video")) { if (MessageObject.isGifDocument(document)) { fileName = LocaleController.getString("AttachGif", R.string.AttachGif); @@ -408,7 +408,11 @@ public class SharedDocumentCell extends FrameLayout implements DownloadControlle fileName = LocaleController.getString("AttachVideo", R.string.AttachVideo); } } else if (document.mime_type.startsWith("image")) { - fileName = LocaleController.getString("AttachPhoto", R.string.AttachPhoto); + if (MessageObject.isGifDocument(document)) { + fileName = LocaleController.getString("AttachGif", R.string.AttachGif); + } else { + fileName = LocaleController.getString("AttachPhoto", R.string.AttachPhoto); + } } else if (document.mime_type.startsWith("audio")) { fileName = LocaleController.getString("AttachAudio", R.string.AttachAudio); } else { @@ -682,7 +686,7 @@ public class SharedDocumentCell extends FrameLayout implements DownloadControlle super.onInitializeAccessibilityNodeInfo(info); if (checkBox.isChecked()) { info.setCheckable(true); - info.setChecked(true); + info.setChecked(checkBox.isChecked()); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedLinkCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedLinkCell.java index 12473cf6f..8724e5895 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedLinkCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedLinkCell.java @@ -11,6 +11,7 @@ package org.telegram.ui.Cells; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; +import android.graphics.CornerPathEffect; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; @@ -170,16 +171,22 @@ public class SharedLinkCell extends FrameLayout { private int fromInfoLayoutY = AndroidUtilities.dp(30); private StaticLayout fromInfoLayout; + private Theme.ResourcesProvider resourcesProvider; private int viewType; public final static int VIEW_TYPE_DEFAULT = 0; public final static int VIEW_TYPE_GLOBAL_SEARCH = 1; public SharedLinkCell(Context context) { - this(context, VIEW_TYPE_DEFAULT); + this(context, VIEW_TYPE_DEFAULT, null); } public SharedLinkCell(Context context, int viewType) { + this(context, viewType, null); + } + + public SharedLinkCell(Context context, int viewType, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; this.viewType = viewType; setFocusable(true); @@ -188,7 +195,7 @@ public class SharedLinkCell extends FrameLayout { titleTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); titleTextPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - titleTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + titleTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); descriptionTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); @@ -198,9 +205,9 @@ public class SharedLinkCell extends FrameLayout { setWillNotDraw(false); linkImageView = new ImageReceiver(this); linkImageView.setRoundRadius(AndroidUtilities.dp(4)); - letterDrawable = new LetterDrawable(); + letterDrawable = new LetterDrawable(resourcesProvider); - checkBox = new CheckBox2(context, 21); + checkBox = new CheckBox2(context, 21, resourcesProvider); checkBox.setVisibility(INVISIBLE); checkBox.setColor(null, Theme.key_windowBackgroundWhite, Theme.key_checkboxCheck); checkBox.setDrawUnchecked(false); @@ -744,10 +751,12 @@ public class SharedLinkCell extends FrameLayout { checkBox.setChecked(checked, animated); } + private Paint urlPaint; + @Override protected void onDraw(Canvas canvas) { if (viewType == VIEW_TYPE_GLOBAL_SEARCH) { - description2TextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText3)); + description2TextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText3, resourcesProvider)); } if (dateLayout != null) { canvas.save(); @@ -767,30 +776,30 @@ public class SharedLinkCell extends FrameLayout { } if (captionLayout != null) { - captionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + captionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); canvas.save(); canvas.translate(AndroidUtilities.dp(LocaleController.isRTL ? 8 : AndroidUtilities.leftBaseline), captionY); captionLayout.draw(canvas); canvas.restore(); } if (descriptionLayout != null) { - descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); canvas.save(); canvas.translate(AndroidUtilities.dp(LocaleController.isRTL ? 8 : AndroidUtilities.leftBaseline), descriptionY); - SpoilerEffect.renderWithRipple(this, false, descriptionTextPaint.getColor(), -AndroidUtilities.dp(2), patchedDescriptionLayout, descriptionLayout, descriptionLayoutSpoilers, canvas); + SpoilerEffect.renderWithRipple(this, false, descriptionTextPaint.getColor(), -AndroidUtilities.dp(2), patchedDescriptionLayout, descriptionLayout, descriptionLayoutSpoilers, canvas, false); canvas.restore(); } if (descriptionLayout2 != null) { - descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); canvas.save(); canvas.translate(AndroidUtilities.dp(LocaleController.isRTL ? 8 : AndroidUtilities.leftBaseline), description2Y); - SpoilerEffect.renderWithRipple(this, false, descriptionTextPaint.getColor(), -AndroidUtilities.dp(2), patchedDescriptionLayout2, descriptionLayout2, descriptionLayout2Spoilers, canvas); + SpoilerEffect.renderWithRipple(this, false, descriptionTextPaint.getColor(), -AndroidUtilities.dp(2), patchedDescriptionLayout2, descriptionLayout2, descriptionLayout2Spoilers, canvas, false); canvas.restore(); } if (!linkLayout.isEmpty()) { - descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkText)); + descriptionTextPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkText, resourcesProvider)); int offset = 0; for (int a = 0; a < linkLayout.size(); a++) { StaticLayout layout = linkLayout.get(a); @@ -806,10 +815,15 @@ public class SharedLinkCell extends FrameLayout { path.addRect(b.left, b.top, b.right, b.bottom, Path.Direction.CW); } } + if (urlPaint == null) { + urlPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + urlPaint.setPathEffect(new CornerPathEffect(AndroidUtilities.dp(4))); + } + urlPaint.setColor(Theme.getColor(Theme.key_chat_linkSelectBackground, resourcesProvider)); canvas.save(); canvas.clipPath(path, Region.Op.DIFFERENCE); if (pressedLink == a) { - canvas.drawPath(urlPath, Theme.linkSelectionPaint); + canvas.drawPath(urlPath, urlPaint); } layout.draw(canvas); canvas.restore(); @@ -822,7 +836,7 @@ public class SharedLinkCell extends FrameLayout { canvas.clipPath(path); if (pressedLink == a) { - canvas.drawPath(urlPath, Theme.linkSelectionPaint); + canvas.drawPath(urlPath, urlPaint); } layout.draw(canvas); canvas.restore(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell2.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell2.java index 13086c2d6..04cc5a2af 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell2.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell2.java @@ -440,13 +440,13 @@ public class SharedPhotoVideoCell2 extends View { Paint highlightPaint = new Paint(); SparseArray imageFilters = new SparseArray<>(); - public SharedResources(Context context) { + public SharedResources(Context context, Theme.ResourcesProvider resourcesProvider) { textPaint.setTextSize(AndroidUtilities.dp(12)); textPaint.setColor(Color.WHITE); textPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); playDrawable = ContextCompat.getDrawable(context, R.drawable.play_mini_video); playDrawable.setBounds(0, 0, playDrawable.getIntrinsicWidth(), playDrawable.getIntrinsicHeight()); - backgroundPaint.setColor(Theme.getColor(Theme.key_sharedMedia_photoPlaceholder)); + backgroundPaint.setColor(Theme.getColor(Theme.key_sharedMedia_photoPlaceholder, resourcesProvider)); } public String getFilterString(int width) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java index 2b1384fc5..216ff6138 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java @@ -10,6 +10,8 @@ package org.telegram.ui.Cells; import android.content.Context; import android.graphics.Canvas; +import android.graphics.Paint; +import android.os.Vibrator; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -27,6 +29,7 @@ import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessageObject; +import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.SendMessagesHelper; import org.telegram.messenger.SvgHelper; @@ -35,10 +38,12 @@ import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.PremiumLockIconView; -public class StickerEmojiCell extends FrameLayout { +public class StickerEmojiCell extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { private BackupImageView imageView; + private PremiumLockIconView premiumIconView; private TLRPC.Document sticker; private SendMessagesHelper.ImportingSticker stickerPath; private Object parentObject; @@ -54,6 +59,11 @@ public class StickerEmojiCell extends FrameLayout { private static AccelerateInterpolator interpolator = new AccelerateInterpolator(0.5f); private int currentAccount = UserConfig.selectedAccount; private boolean fromEmojiPanel; + private boolean isPremiumSticker; + private float premiumAlpha = 1f; + private boolean showPremiumLock; + + int stickerColor; public StickerEmojiCell(Context context, boolean isEmojiPanel) { super(context); @@ -67,7 +77,16 @@ public class StickerEmojiCell extends FrameLayout { emojiTextView = new TextView(context); emojiTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - addView(emojiTextView, LayoutHelper.createFrame(28, 28, Gravity.BOTTOM | Gravity.RIGHT)); + // addView(emojiTextView, LayoutHelper.createFrame(28, 28, Gravity.BOTTOM | Gravity.RIGHT)); + + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Theme.getColor(Theme.key_featuredStickers_addButton)); + + premiumIconView = new PremiumLockIconView(context, PremiumLockIconView.TYPE_STICKERS); + premiumIconView.setImageReceiver(imageView.getImageReceiver()); + premiumIconView.setPadding(AndroidUtilities.dp(4), AndroidUtilities.dp(4), AndroidUtilities.dp(4), AndroidUtilities.dp(4)); + premiumIconView.setImageReceiver(imageView.getImageReceiver()); + addView(premiumIconView, LayoutHelper.createFrame(24, 24, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0 ,0, 0, 0)); setFocusable(true); } @@ -120,6 +139,11 @@ public class StickerEmojiCell extends FrameLayout { public void setSticker(TLRPC.Document document, SendMessagesHelper.ImportingSticker path, Object parent, String emoji, boolean showEmoji) { currentEmoji = emoji; + isPremiumSticker = MessageObject.isPremiumSticker(document); + if (isPremiumSticker) { + premiumIconView.setColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + premiumIconView.setWaitingImage(); + } if (path != null) { stickerPath = path; if (path.validated) { @@ -184,13 +208,31 @@ public class StickerEmojiCell extends FrameLayout { emojiTextView.setVisibility(INVISIBLE); } } + updatePremiumStatus(false); + imageView.getImageReceiver().setAlpha(alpha * premiumAlpha); + } + + private void updatePremiumStatus(boolean animated) { + float alpha; + if (isPremiumSticker && !UserConfig.getInstance(currentAccount).isPremium()) { + alpha = 0.5f; + showPremiumLock = true; + } else { + alpha = 1f; + showPremiumLock = false; + } + AndroidUtilities.updateViewVisibilityAnimated(premiumIconView, showPremiumLock, 0.9f, animated); +// if (!animated) { +// premiumAlpha = alpha; +// } + invalidate(); } public void disable() { changingAlpha = true; alpha = 0.5f; time = 0; - imageView.getImageReceiver().setAlpha(alpha); + imageView.getImageReceiver().setAlpha(alpha * premiumAlpha); imageView.invalidate(); lastUpdateTime = System.currentTimeMillis(); invalidate(); @@ -220,6 +262,28 @@ public class StickerEmojiCell extends FrameLayout { super.invalidate(); } + @Override + protected void dispatchDraw(Canvas canvas) { +// if (showPremiumLock && premiumAlpha > 0.5f) { +// premiumAlpha -= 16 / 150f; +// if (premiumAlpha < 0.5f) { +// premiumAlpha = 0.5f; +// } +// invalidate(); +// imageView.invalidate(); +// } else if (!showPremiumLock && premiumAlpha < 1f) { +// premiumAlpha += 16 / 150f; +// if (premiumAlpha > 1f) { +// premiumAlpha = 1f; +// } +// invalidate(); +// imageView.invalidate(); +// } + imageView.getImageReceiver().setAlpha(alpha * premiumAlpha); + + super.dispatchDraw(canvas); + } + @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { boolean result = super.drawChild(canvas, child, drawingTime); @@ -237,7 +301,7 @@ public class StickerEmojiCell extends FrameLayout { changingAlpha = false; alpha = 1.0f; } - imageView.getImageReceiver().setAlpha(alpha); + imageView.getImageReceiver().setAlpha(alpha * premiumAlpha); } else if (scaled && scale != 0.8f) { scale -= dt / 400.0f; if (scale < 0.8f) { @@ -276,4 +340,33 @@ public class StickerEmojiCell extends FrameLayout { info.setContentDescription(descr); info.setEnabled(true); } + + public void showRequirePremiumAnimation() { + if (premiumIconView != null) { + Vibrator v = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE); + if (v != null) { + v.vibrate(200); + } + AndroidUtilities.shakeView(premiumIconView, 2, 0); + } + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.currentUserPremiumStatusChanged) { + updatePremiumStatus(true); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java index 3ba7c5f4f..f99ca5175 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java @@ -8,6 +8,8 @@ package org.telegram.ui.Cells; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; @@ -15,10 +17,12 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.os.Build; +import android.text.SpannableString; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -37,12 +41,15 @@ import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.CheckBox2; import org.telegram.ui.Components.Easings; +import org.telegram.ui.Components.ForegroundColorSpanThemable; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RadialProgressView; import java.util.ArrayList; +import java.util.Locale; public class StickerSetCell extends FrameLayout { + private final static String LINK_PREFIX = "t.me/addstickers/"; private final int option; @@ -95,10 +102,13 @@ public class StickerSetCell extends FrameLayout { optionsButton = new ImageView(context); optionsButton.setFocusable(false); optionsButton.setScaleType(ImageView.ScaleType.CENTER); - optionsButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.getColor(Theme.key_stickers_menuSelector))); + if (option != 3) { + optionsButton.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_stickers_menuSelector))); + } if (option == 1) { optionsButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_stickers_menu), PorterDuff.Mode.MULTIPLY)); optionsButton.setImageResource(R.drawable.msg_actions); + optionsButton.setContentDescription(LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions)); addView(optionsButton, LayoutHelper.createFrame(40, 40, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL)); reorderButton = new ImageView(context); @@ -116,7 +126,7 @@ public class StickerSetCell extends FrameLayout { addView(checkBox, LayoutHelper.createFrameRelatively(24, 24, Gravity.START, 34, 30, 0, 0)); } else if (option == 3) { optionsButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_featuredStickers_addedIcon), PorterDuff.Mode.MULTIPLY)); - optionsButton.setImageResource(R.drawable.sticker_added); + optionsButton.setImageResource(R.drawable.floating_check); addView(optionsButton, LayoutHelper.createFrame(40, 40, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, (LocaleController.isRTL ? 10 : 0), 9, (LocaleController.isRTL ? 0 : 10), 0)); } } @@ -156,6 +166,28 @@ public class StickerSetCell extends FrameLayout { } public void setStickersSet(TLRPC.TL_messages_stickerSet set, boolean divider) { + setStickersSet(set, divider, false); + } + + public void setSearchQuery(TLRPC.TL_messages_stickerSet tlSet, String query, Theme.ResourcesProvider resourcesProvider) { + TLRPC.StickerSet set = tlSet.set; + int titleIndex = set.title.toLowerCase(Locale.ROOT).indexOf(query); + if (titleIndex != -1) { + SpannableString spannableString = new SpannableString(set.title); + spannableString.setSpan(new ForegroundColorSpanThemable(Theme.key_windowBackgroundWhiteBlueText4, resourcesProvider), titleIndex, titleIndex + query.length(), 0); + textView.setText(spannableString); + } + int linkIndex = set.short_name.toLowerCase(Locale.ROOT).indexOf(query); + if (linkIndex != -1) { + linkIndex += LINK_PREFIX.length(); + SpannableString spannableString = new SpannableString(LINK_PREFIX + set.short_name); + spannableString.setSpan(new ForegroundColorSpanThemable(Theme.key_windowBackgroundWhiteBlueText4, resourcesProvider), linkIndex, linkIndex + query.length(), 0); + valueTextView.setText(spannableString); + } + } + + @SuppressLint("SetTextI18n") + public void setStickersSet(TLRPC.TL_messages_stickerSet set, boolean divider, boolean groupSearch) { needDivider = divider; stickersSet = set; @@ -211,19 +243,49 @@ public class StickerSetCell extends FrameLayout { valueTextView.setText(LocaleController.formatPluralString("Stickers", 0)); imageView.setImageDrawable(null); } + if (groupSearch) { + valueTextView.setText(LINK_PREFIX + set.set.short_name); + } } public void setChecked(boolean checked) { setChecked(checked, true); } + public boolean isChecked() { + return option == 1 ? checkBox.isChecked() : option == 3 && optionsButton.getVisibility() == VISIBLE; + } + public void setChecked(boolean checked, boolean animated) { switch (option) { case 1: checkBox.setChecked(checked, animated); break; case 3: - optionsButton.setVisibility(checked ? VISIBLE : INVISIBLE); + if (animated) { + optionsButton.animate().cancel(); + optionsButton.animate().setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + if (!checked) { + optionsButton.setVisibility(INVISIBLE); + } + } + + @Override + public void onAnimationStart(Animator animation) { + if (checked) { + optionsButton.setVisibility(VISIBLE); + } + } + }).alpha(checked ? 1 : 0).scaleX(checked ? 1 : 0.1f).scaleY(checked ? 1 : 0.1f).setDuration(150).start(); + } else { + optionsButton.setVisibility(checked ? VISIBLE : INVISIBLE); + if (!checked) { + optionsButton.setScaleX(0.1f); + optionsButton.setScaleY(0.1f); + } + } break; } } @@ -308,7 +370,16 @@ public class StickerSetCell extends FrameLayout { @Override protected void onDraw(Canvas canvas) { if (needDivider) { - canvas.drawLine(0, getHeight() - 1, getWidth() - getPaddingRight(), getHeight() - 1, Theme.dividerPaint); + canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(71), getHeight() - 1, getWidth() - getPaddingRight() - (LocaleController.isRTL ? AndroidUtilities.dp(71) : 0), getHeight() - 1, Theme.dividerPaint); + } + } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (checkBox != null && checkBox.isChecked()) { + info.setCheckable(true); + info.setChecked(true); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetGroupInfoCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetGroupInfoCell.java index 12704d16a..cc6445b2d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetGroupInfoCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetGroupInfoCell.java @@ -42,7 +42,7 @@ public class StickerSetGroupInfoCell extends LinearLayout { addButton.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); addButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); addButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - addButton.setBackgroundDrawable(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + addButton.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); addButton.setText(LocaleController.getString("ChooseStickerSet", R.string.ChooseStickerSet).toUpperCase()); addView(addButton, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 28, Gravity.TOP | Gravity.LEFT, 17, 10, 14, 8)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetNameCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetNameCell.java index 8cb3455f9..1baecce37 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetNameCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetNameCell.java @@ -117,7 +117,11 @@ public class StickerSetNameCell extends FrameLayout { } public void setText(CharSequence text, int resId) { - setText(text, resId, 0, 0); + setText(text, resId, null, 0, 0); + } + + public void setText(CharSequence text, int resId, CharSequence iconAccDescr) { + setText(text, resId, iconAccDescr, 0, 0); } public void setTitleColor(int color) { @@ -125,6 +129,10 @@ public class StickerSetNameCell extends FrameLayout { } public void setText(CharSequence text, int resId, int index, int searchLength) { + setText(text, resId, null, index, searchLength); + } + + public void setText(CharSequence text, int resId, CharSequence iconAccDescr, int index, int searchLength) { stickerSetName = text; stickerSetNameSearchIndex = index; stickerSetNameSearchLength = searchLength; @@ -140,6 +148,7 @@ public class StickerSetNameCell extends FrameLayout { } if (resId != 0) { buttonView.setImageResource(resId); + buttonView.setContentDescription(iconAccDescr); buttonView.setVisibility(VISIBLE); } else { buttonView.setVisibility(INVISIBLE); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java index 6684bedb9..1bf80bb97 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java @@ -23,6 +23,7 @@ import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.RLottieImageView; @@ -37,25 +38,36 @@ public class TextCell extends FrameLayout { private int offsetFromImage = 71; public int imageLeft = 21; private boolean inDialogs; + private boolean prioritizeTitleOverValue; + private Theme.ResourcesProvider resourcesProvider; public TextCell(Context context) { - this(context, 23, false); + this(context, 23, false, null); + } + + public TextCell(Context context, Theme.ResourcesProvider resourcesProvider) { + this(context, 23, false, resourcesProvider); } public TextCell(Context context, int left, boolean dialog) { + this(context, left, dialog, null); + } + + public TextCell(Context context, int left, boolean dialog, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; leftPadding = left; textView = new SimpleTextView(context); - textView.setTextColor(Theme.getColor(dialog ? Theme.key_dialogTextBlack : Theme.key_windowBackgroundWhiteBlackText)); + textView.setTextColor(Theme.getColor(dialog ? Theme.key_dialogTextBlack : Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); textView.setTextSize(16); textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); textView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); - addView(textView); + addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT)); valueTextView = new SimpleTextView(context); - valueTextView.setTextColor(Theme.getColor(dialog ? Theme.key_dialogTextBlue2 : Theme.key_windowBackgroundWhiteValueText)); + valueTextView.setTextColor(Theme.getColor(dialog ? Theme.key_dialogTextBlue2 : Theme.key_windowBackgroundWhiteValueText, resourcesProvider)); valueTextView.setTextSize(16); valueTextView.setGravity(LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT); valueTextView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); @@ -63,7 +75,7 @@ public class TextCell extends FrameLayout { imageView = new RLottieImageView(context); imageView.setScaleType(ImageView.ScaleType.CENTER); - imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(dialog ? Theme.key_dialogIcon : Theme.key_windowBackgroundWhiteGrayIcon), PorterDuff.Mode.MULTIPLY)); + imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(dialog ? Theme.key_dialogIcon : Theme.key_windowBackgroundWhiteGrayIcon, resourcesProvider), PorterDuff.Mode.MULTIPLY)); addView(imageView); valueImageView = new ImageView(context); @@ -93,13 +105,23 @@ public class TextCell extends FrameLayout { return valueImageView; } + public void setPrioritizeTitleOverValue(boolean prioritizeTitleOverValue) { + this.prioritizeTitleOverValue = prioritizeTitleOverValue; + requestLayout(); + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = MeasureSpec.getSize(widthMeasureSpec); int height = AndroidUtilities.dp(48); - valueTextView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(leftPadding), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); - textView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(71 + leftPadding) - valueTextView.getTextWidth(), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); + if (prioritizeTitleOverValue) { + textView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(71 + leftPadding), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); + valueTextView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(103 + leftPadding) - textView.getTextWidth(), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); + } else { + valueTextView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(leftPadding), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); + textView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(71 + leftPadding) - valueTextView.getTextWidth(), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); + } if (imageView.getVisibility() == VISIBLE) { imageView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); } @@ -116,6 +138,9 @@ public class TextCell extends FrameLayout { int viewTop = (height - valueTextView.getTextHeight()) / 2; int viewLeft = LocaleController.isRTL ? AndroidUtilities.dp(leftPadding) : 0; + if (prioritizeTitleOverValue && !LocaleController.isRTL) { + viewLeft = width - valueTextView.getMeasuredWidth() - AndroidUtilities.dp(leftPadding); + } valueTextView.layout(viewLeft, viewTop, viewLeft + valueTextView.getMeasuredWidth(), viewTop + valueTextView.getMeasuredHeight()); viewTop = (height - textView.getTextHeight()) / 2; @@ -144,10 +169,10 @@ public class TextCell extends FrameLayout { } public void setColors(String icon, String text) { - textView.setTextColor(Theme.getColor(text)); + textView.setTextColor(Theme.getColor(text, resourcesProvider)); textView.setTag(text); if (icon != null) { - imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(icon), PorterDuff.Mode.MULTIPLY)); + imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(icon, resourcesProvider), PorterDuff.Mode.MULTIPLY)); imageView.setTag(icon); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java index 55b58f238..345b27fe6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java @@ -21,6 +21,7 @@ import android.util.Property; import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; +import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.TextView; @@ -51,6 +52,7 @@ public class TextCheckCell extends FrameLayout { private float lastTouchX; private ObjectAnimator animator; private boolean drawCheckRipple; + private Theme.ResourcesProvider resourcesProvider; public static final Property ANIMATION_PROGRESS = new AnimationProperties.FloatProperty("animationProgress") { @Override @@ -70,14 +72,23 @@ public class TextCheckCell extends FrameLayout { } public TextCheckCell(Context context, int padding) { - this(context, padding, false); + this(context, padding, false, null); + } + + public TextCheckCell(Context context, Theme.ResourcesProvider resourcesProvider) { + this(context, 21, false, resourcesProvider); } public TextCheckCell(Context context, int padding, boolean dialog) { + this(context, padding, dialog, null); + } + + public TextCheckCell(Context context, int padding, boolean dialog, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; textView = new TextView(context); - textView.setTextColor(Theme.getColor(dialog ? Theme.key_dialogTextBlack : Theme.key_windowBackgroundWhiteBlackText)); + textView.setTextColor(Theme.getColor(dialog ? Theme.key_dialogTextBlack : Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); @@ -87,7 +98,7 @@ public class TextCheckCell extends FrameLayout { addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 70 : padding, 0, LocaleController.isRTL ? padding : 70, 0)); valueTextView = new TextView(context); - valueTextView.setTextColor(Theme.getColor(dialog ? Theme.key_dialogIcon : Theme.key_windowBackgroundWhiteGrayText2)); + valueTextView.setTextColor(Theme.getColor(dialog ? Theme.key_dialogIcon : Theme.key_windowBackgroundWhiteGrayText2, resourcesProvider)); valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); valueTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); valueTextView.setLines(1); @@ -97,13 +108,19 @@ public class TextCheckCell extends FrameLayout { valueTextView.setEllipsize(TextUtils.TruncateAt.END); addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 64 : padding, 36, LocaleController.isRTL ? padding : 64, 0)); - checkBox = new Switch(context); + checkBox = new Switch(context, resourcesProvider); checkBox.setColors(Theme.key_switchTrack, Theme.key_switchTrackChecked, Theme.key_windowBackgroundWhite, Theme.key_windowBackgroundWhite); addView(checkBox, LayoutHelper.createFrame(37, 20, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL, 22, 0, 22, 0)); setClipChildren(false); } + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + checkBox.setEnabled(enabled); + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (isMultiline) { @@ -138,7 +155,7 @@ public class TextCheckCell extends FrameLayout { } public void setColors(String key, String switchKey, String switchKeyChecked, String switchThumb, String switchThumbChecked) { - textView.setTextColor(Theme.getColor(key)); + textView.setTextColor(Theme.getColor(key, resourcesProvider)); checkBox.setColors(switchKey, switchKeyChecked, switchThumb, switchThumbChecked); textView.setTag(key); } @@ -193,10 +210,10 @@ public class TextCheckCell extends FrameLayout { public void setEnabled(boolean value, ArrayList animators) { super.setEnabled(value); if (animators != null) { - animators.add(ObjectAnimator.ofFloat(textView, "alpha", value ? 1.0f : 0.5f)); - animators.add(ObjectAnimator.ofFloat(checkBox, "alpha", value ? 1.0f : 0.5f)); + animators.add(ObjectAnimator.ofFloat(textView, View.ALPHA, value ? 1.0f : 0.5f)); + animators.add(ObjectAnimator.ofFloat(checkBox, View.ALPHA, value ? 1.0f : 0.5f)); if (valueTextView.getVisibility() == VISIBLE) { - animators.add(ObjectAnimator.ofFloat(valueTextView, "alpha", value ? 1.0f : 0.5f)); + animators.add(ObjectAnimator.ofFloat(valueTextView, View.ALPHA, value ? 1.0f : 0.5f)); } } else { textView.setAlpha(value ? 1.0f : 0.5f); @@ -315,6 +332,12 @@ public class TextCheckCell extends FrameLayout { info.setClassName("android.widget.Switch"); info.setCheckable(true); info.setChecked(checkBox.isChecked()); - info.setContentDescription(checkBox.isChecked() ? LocaleController.getString("NotificationsOn", R.string.NotificationsOn) : LocaleController.getString("NotificationsOff", R.string.NotificationsOff)); + StringBuilder sb = new StringBuilder(); + sb.append(textView.getText()); + if (!TextUtils.isEmpty(valueTextView.getText())) { + sb.append('\n'); + sb.append(valueTextView.getText()); + } + info.setContentDescription(sb); } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell2.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell2.java index c9e0ecf9e..bf6e30235 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell2.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell2.java @@ -178,6 +178,5 @@ public class TextCheckCell2 extends FrameLayout { info.setClassName("android.widget.Switch"); info.setCheckable(true); info.setChecked(checkBox.isChecked()); - info.setContentDescription(checkBox.isChecked() ? LocaleController.getString("NotificationsOn", R.string.NotificationsOn) : LocaleController.getString("NotificationsOff", R.string.NotificationsOff)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckbox2Cell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckbox2Cell.java index 7c0c5f9cc..230269127 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckbox2Cell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckbox2Cell.java @@ -295,6 +295,12 @@ public class TextCheckbox2Cell extends FrameLayout { info.setClassName("android.widget.checkbox"); info.setCheckable(true); info.setChecked(checkbox.isChecked()); - info.setContentDescription(checkbox.isChecked() ? LocaleController.getString("NotificationsOn", R.string.NotificationsOn) : LocaleController.getString("NotificationsOff", R.string.NotificationsOff)); + StringBuilder sb = new StringBuilder(); + sb.append(textView.getText()); + if (valueTextView != null) { + sb.append("\n"); + sb.append(valueTextView.getText()); + } + info.setText(sb); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java index 77e0f70f0..d04e1a8c0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java @@ -29,6 +29,7 @@ import java.util.ArrayList; public class TextColorCell extends FrameLayout { + private Theme.ResourcesProvider resourcesProvider; private TextView textView; private boolean needDivider; private int currentColor; @@ -40,14 +41,19 @@ public class TextColorCell extends FrameLayout { public final static int[] colorsToSave = new int[] {0xffff0000, 0xffff8e01, 0xffffff00, 0xff00ff00, 0xff00ffff, 0xff0000ff, 0xffd274f9, 0xffff00ff, 0xffffffff}; public TextColorCell(Context context) { + this(context, null); + } + + public TextColorCell(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; if (colorPaint == null) { colorPaint = new Paint(Paint.ANTI_ALIAS_FLAG); } textView = new TextView(context); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java index f1d63e611..ac2b5240a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java @@ -36,11 +36,18 @@ public class TextDetailCell extends FrameLayout { private boolean needDivider; private boolean contentDescriptionValueFirst; + private Theme.ResourcesProvider resourcesProvider; + public TextDetailCell(Context context) { + this(context, null); + } + + public TextDetailCell(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; textView = new TextView(context); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); textView.setLines(1); @@ -51,7 +58,7 @@ public class TextDetailCell extends FrameLayout { addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 23, 8, 23, 0)); valueTextView = new TextView(context); - valueTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); + valueTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2, resourcesProvider)); valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); valueTextView.setLines(1); valueTextView.setMaxLines(1); @@ -61,6 +68,7 @@ public class TextDetailCell extends FrameLayout { addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 23, 33, 23, 0)); imageView = new ImageView(context); + imageView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); imageView.setScaleType(ImageView.ScaleType.CENTER); addView(imageView, LayoutHelper.createFrameRelatively(48, 48, Gravity.END | Gravity.CENTER_VERTICAL, 0, 0, 12, 0)); } @@ -81,11 +89,19 @@ public class TextDetailCell extends FrameLayout { } public void setImage(Drawable drawable) { + setImage(drawable, null); + } + + public void setImage(Drawable drawable, CharSequence imageContentDescription) { imageView.setImageDrawable(drawable); + imageView.setFocusable(drawable != null); + imageView.setContentDescription(imageContentDescription); if (drawable == null) { imageView.setBackground(null); + imageView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); } else { - imageView.setBackground(Theme.createSimpleSelectorCircleDrawable(AndroidUtilities.dp(48), Color.TRANSPARENT, Theme.getColor(Theme.key_listSelector))); + imageView.setBackground(Theme.createSimpleSelectorCircleDrawable(AndroidUtilities.dp(48), Color.TRANSPARENT, Theme.getColor(Theme.key_listSelector, resourcesProvider))); + imageView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); } int margin = AndroidUtilities.dp(23) + (drawable == null ? 0 : AndroidUtilities.dp(48)); if (LocaleController.isRTL) { @@ -100,7 +116,7 @@ public class TextDetailCell extends FrameLayout { imageView.setOnClickListener(clickListener); } - public void setTextWithEmojiAndValue(String text, CharSequence value, boolean divider) { + public void setTextWithEmojiAndValue(CharSequence text, CharSequence value, boolean divider) { textView.setText(Emoji.replaceEmoji(text, textView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(14), false)); valueTextView.setText(value); needDivider = divider; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java index 583d7c54c..cb222380e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java @@ -18,6 +18,7 @@ import android.text.method.LinkMovementMethod; import android.text.style.AbsoluteSizeSpan; import android.util.TypedValue; import android.view.Gravity; +import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.TextView; @@ -26,12 +27,14 @@ import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.LinkSpanDrawable; import java.util.ArrayList; public class TextInfoPrivacyCell extends FrameLayout { private TextView textView; + private LinkSpanDrawable.LinkCollector links; private String linkTextColorKey = Theme.key_windowBackgroundWhiteLinkText; private int topPadding = 10; private int bottomPadding = 17; @@ -56,7 +59,7 @@ public class TextInfoPrivacyCell extends FrameLayout { super(context); this.resourcesProvider = resourcesProvider; - textView = new TextView(context) { + textView = new LinkSpanDrawable.LinksTextView(context, links = new LinkSpanDrawable.LinkCollector(this), resourcesProvider) { @Override protected void onDraw(Canvas canvas) { onTextDraw(); @@ -74,6 +77,19 @@ public class TextInfoPrivacyCell extends FrameLayout { addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, padding, 0, padding, 0)); } + @Override + protected void onDraw(Canvas canvas) { + if (links != null) { + canvas.save(); + canvas.translate(textView.getLeft(), textView.getTop()); + if (links.draw(canvas)) { + invalidate(); + } + canvas.restore(); + } + super.onDraw(canvas); + } + protected void onTextDraw() { } @@ -149,7 +165,7 @@ public class TextInfoPrivacyCell extends FrameLayout { public void setEnabled(boolean value, ArrayList animators) { if (animators != null) { - animators.add(ObjectAnimator.ofFloat(textView, "alpha", value ? 1.0f : 0.5f)); + animators.add(ObjectAnimator.ofFloat(textView, View.ALPHA, value ? 1.0f : 0.5f)); } else { textView.setAlpha(value ? 1.0f : 0.5f); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextRadioCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextRadioCell.java index 1e0d4f668..90c53c11e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextRadioCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextRadioCell.java @@ -264,9 +264,16 @@ public class TextRadioCell extends FrameLayout { @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); - info.setClassName("android.widget.RadioButton"); info.setCheckable(true); info.setChecked(radioButton.isChecked()); info.setContentDescription(radioButton.isChecked() ? LocaleController.getString("NotificationsOn", R.string.NotificationsOn) : LocaleController.getString("NotificationsOff", R.string.NotificationsOff)); + StringBuilder sb = new StringBuilder(); + sb.append(textView.getText()); + if (!TextUtils.isEmpty(valueTextView.getText())) { + sb.append("\n"); + sb.append(valueTextView.getText()); + } + info.setContentDescription(sb); + info.setClassName("android.widget.RadioButton"); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSelectionHelper.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSelectionHelper.java index da2ad6957..06110f73a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSelectionHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSelectionHelper.java @@ -80,9 +80,10 @@ public abstract class TextSelectionHelper 0 && magnifierYanimated > magnifierY) { - magnifierYanimated = magnifierY; - } else if (magnifierDy < 0 && magnifierYanimated < magnifierY) { - magnifierYanimated = magnifierY; - } - int startLine; int endLine; if (selectedView instanceof ArticleViewer.BlockTableCell) { @@ -406,24 +390,65 @@ public abstract class TextSelectionHelper endLine) { x = endLine; } + + if (magnifierY != newY) { + magnifierY = newY; + magnifierDy = (newY - magnifierYanimated) / 200f; + } + if (magnifierX != x) { + magnifierX = x; + magnifierDx = (x - magnifierXanimated) / 100f; + } + + if (magnifier == null) { + magnifier = new Magnifier(textSelectionOverlay); + magnifierYanimated = magnifierY; + magnifierXanimated = magnifierX; + } + + if (magnifierYanimated != magnifierY) { + magnifierYanimated += magnifierDy * 16; + } + + if (magnifierDy > 0 && magnifierYanimated > magnifierY) { + magnifierYanimated = magnifierY; + } else if (magnifierDy < 0 && magnifierYanimated < magnifierY) { + magnifierYanimated = magnifierY; + } + + if (magnifierXanimated != magnifierX) { + magnifierXanimated += magnifierDx * 16; + } + + if (magnifierDx > 0 && magnifierXanimated > magnifierX) { + magnifierXanimated = magnifierX; + } else if (magnifierDx < 0 && magnifierXanimated < magnifierX) { + magnifierXanimated = magnifierX; + } + magnifier.show( - x, magnifierYanimated + lineHeight * 1.5f + AndroidUtilities.dp(8) + magnifierXanimated, magnifierYanimated + lineHeight * 1.5f + AndroidUtilities.dp(8) ); magnifier.update(); } } + private ValueAnimator handleViewAnimator; + protected void showHandleViews() { if (handleViewProgress == 1f || textSelectionOverlay == null) { return; } - ValueAnimator animator = ValueAnimator.ofFloat(0, 1f); - animator.addUpdateListener(animation -> { + if (handleViewAnimator != null) { + handleViewAnimator.cancel(); + } + handleViewAnimator = ValueAnimator.ofFloat(handleViewProgress, 1f); + handleViewAnimator.addUpdateListener(animation -> { handleViewProgress = (float) animation.getAnimatedValue(); textSelectionOverlay.invalidate(); }); - animator.setDuration(250); - animator.start(); + handleViewAnimator.setDuration((long) (Math.abs(1f - handleViewProgress) * 250)); + handleViewAnimator.start(); } public boolean isSelectionMode() { @@ -474,7 +499,7 @@ public abstract class TextSelectionHelper= Build.VERSION_CODES.O_MR1) { - textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE); + textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); } TextSelectionHelper.this.invalidate(); } else if (Layout.DIR_RIGHT_TO_LEFT == layoutNew.getParagraphDirection(layoutNew.getLineForOffset(newSelection)) || layoutNew.isRtlCharAt(newSelection) || nextWhitespaceLine != currentLine || newSelectionLine != nextWhitespaceLine) { @@ -842,7 +868,7 @@ public abstract class TextSelectionHelper= Build.VERSION_CODES.O_MR1) { - textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE); + textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); } TextSelectionHelper.this.invalidate(); } else { @@ -893,7 +919,7 @@ public abstract class TextSelectionHelper= Build.VERSION_CODES.O_MR1) { - textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE); + textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); } TextSelectionHelper.this.invalidate(); } @@ -931,7 +957,7 @@ public abstract class TextSelectionHelper= Build.VERSION_CODES.O_MR1) { - textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE); + textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); } TextSelectionHelper.this.invalidate(); } else if (Layout.DIR_RIGHT_TO_LEFT == layoutNew.getParagraphDirection(layoutNew.getLineForOffset(newSelection)) || layoutNew.isRtlCharAt(newSelection) || currentLine != nextWhitespaceLine || newSelectionLine != nextWhitespaceLine) { @@ -943,7 +969,7 @@ public abstract class TextSelectionHelper= Build.VERSION_CODES.O_MR1) { - textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE); + textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); } TextSelectionHelper.this.invalidate(); } else { @@ -975,7 +1001,7 @@ public abstract class TextSelectionHelper= Build.VERSION_CODES.O_MR1) { - textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE); + textSelectionOverlay.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); } TextSelectionHelper.this.invalidate(); } @@ -1022,8 +1048,12 @@ public abstract class TextSelectionHelper 0) { end--; CharSequence text = layout.getText(); @@ -1456,63 +1492,100 @@ public abstract class TextSelectionHelper 0 && end < text.length() && !Character.isWhitespace(text.charAt(end - 1))) { - selectionPath.addRect(l, layout.getLineTop(startLine), r, layout.getLineBottom(startLine), Path.Direction.CW); + rect = new Rect(l, layout.getLineTop(startLine), r + halfR, layout.getLineBottom(startLine)); } } - drawLine(layout, startLine, selectionStart, end); - drawLine(layout, endLine, layout.getLineStart(endLine), selectionEnd); + drawLine(layout, startLine, selectionStart, end, !hasStart, true); + if (rect != null) { + AndroidUtilities.rectTmp.set(rect); + selectionPath.addRect(AndroidUtilities.rectTmp, Path.Direction.CW); + } for (int i = startLine + 1; i < endLine; i++) { int s = (int) layout.getLineLeft(i); int e = (int) layout.getLineRight(i); int l = Math.min(s, e); int r = Math.max(s, e); + selectionPath.addRect(l - halfR, layout.getLineTop(i), r + halfR, layout.getLineBottom(i) + 1, Path.Direction.CW); + } + drawLine(layout, endLine, layout.getLineStart(endLine), selectionEnd, true, !hasEnd); + } + boolean restore = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O; + if (restore) { + canvas.save(); + } - selectionPath.addRect(l, layout.getLineTop(i) - 1, r, layout.getLineBottom(i) + 1, Path.Direction.CW); + float startLeft = layout.getPrimaryHorizontal(selectionStart), + endRight = layout.getPrimaryHorizontal(selectionEnd); + float startBottom = layout.getLineBottom(startLine), + endBottom = layout.getLineBottom(endLine); + + if (hasStart && hasEnd && startBottom == endBottom && Math.abs(endRight - startLeft) < R) { + float left = Math.min(startLeft, endRight), right = Math.max(startLeft, endRight); + AndroidUtilities.rectTmp2.set((int) left, (int) (startBottom - R), (int) right, (int) startBottom); + AndroidUtilities.rectTmp.set(AndroidUtilities.rectTmp2); + selectionHandlePath.addRect(AndroidUtilities.rectTmp, Path.Direction.CW); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + canvas.clipOutRect(AndroidUtilities.rectTmp2); + } + } else { + if (hasStart) { + AndroidUtilities.rectTmp2.set((int) startLeft, (int) (startBottom - R), (int) Math.min(startLeft + R, layout.getLineRight(startLine)), (int) startBottom); + AndroidUtilities.rectTmp.set(AndroidUtilities.rectTmp2); + selectionHandlePath.addRect(AndroidUtilities.rectTmp, Path.Direction.CW); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + AndroidUtilities.rectTmp2.set(AndroidUtilities.rectTmp2.left - (int) R, AndroidUtilities.rectTmp2.top, AndroidUtilities.rectTmp2.right, AndroidUtilities.rectTmp2.bottom); + canvas.clipOutRect(AndroidUtilities.rectTmp2); + } + } + + if (hasEnd) { + AndroidUtilities.rectTmp2.set((int) Math.max(endRight - R, layout.getLineLeft(endLine)), (int) (endBottom - R), (int) endRight, (int) endBottom); + AndroidUtilities.rectTmp.set(AndroidUtilities.rectTmp2); + selectionHandlePath.addRect(AndroidUtilities.rectTmp, Path.Direction.CW); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + canvas.clipOutRect(AndroidUtilities.rectTmp2); + } } } + canvas.drawPath(selectionPath, selectionPaint); - - final float R = cornerRadius * 1.9f; - float startLeft = layout.getPrimaryHorizontal(selectionStart), - endLeft = layout.getPrimaryHorizontal(selectionEnd); - float x, b; - if (selectionStart + 1 < layout.getLineEnd(startLine) && (startLine == endLine || startLine + 1 == endLine && startLeft > endLeft)) { - x = startLeft; - b = layout.getLineBottom(startLine); - tempPath.reset(); - tempPath.moveTo(x + R, b); - tempPath.lineTo(x, b); - tempPath.lineTo(x, b - R); - AndroidUtilities.rectTmp.set(x, b - R, x + R, b); - tempPath.arcTo(AndroidUtilities.rectTmp, 180, -90); - canvas.drawPath(tempPath, selectionHandlePaint); - } - - if (layout.getLineStart(endLine) < selectionEnd) { - x = endLeft; - b = layout.getLineBottom(endLine); - tempPath.reset(); - tempPath.moveTo(x - R, b); - tempPath.lineTo(x, b); - tempPath.lineTo(x, b - R); - AndroidUtilities.rectTmp.set(x - R, b - R, x, b); - tempPath.arcTo(AndroidUtilities.rectTmp, 0, 90); - canvas.drawPath(tempPath, selectionHandlePaint); + if (restore) { + canvas.restore(); + canvas.drawPath(selectionHandlePath, selectionHandlePaint); } } private final ScalablePath tempPath2 = new ScalablePath(); - private void drawLine(StaticLayout layout, int line, int start, int end) { + private void drawLine(StaticLayout layout, int line, int start, int end, boolean padAtStart, boolean padAtEnd) { tempPath2.reset(); layout.getSelectionPath(start, end, tempPath2); + + float sy = 1, cy = 0; if (tempPath2.lastBottom < layout.getLineBottom(line)) { int lineTop = layout.getLineTop(line); int lineBottom = layout.getLineBottom(line); float lineH = lineBottom - lineTop; float lineHWithoutSpacing = tempPath2.lastBottom - lineTop; - tempPath2.scaleY(lineH / lineHWithoutSpacing, lineTop, selectionPath); - } else { - tempPath2.scaleY(1f, 0, selectionPath); + sy = lineH / lineHWithoutSpacing; + cy = lineTop; + } + + for (int i = 0; i < tempPath2.rectsCount; ++i) { + RectF rect = tempPath2.rects.get(i); + rect.set( + (int) (rect.left - (padAtStart ? cornerRadius / 2 : 0)), + (int) ((rect.top - cy) * sy + cy), + (int) (rect.right + (padAtEnd ? cornerRadius / 2 : 0)), + (int) ((rect.bottom - cy) * sy + cy) + ); + selectionPath.addRect(rect.left, rect.top, rect.right, rect.bottom, Path.Direction.CW); + } + + if (tempPath2.rectsCount == 0 && !padAtEnd) { + int left = (int) layout.getPrimaryHorizontal(start), + right = (int) layout.getPrimaryHorizontal(end); + int top = layout.getLineTop(line), bottom = layout.getLineBottom(line); + selectionPath.addRect(left - cornerRadius / 2, top, right + cornerRadius / 4, bottom, Path.Direction.CW); } } @@ -1616,6 +1689,11 @@ public abstract class TextSelectionHelper startViewChildPosition && i < endViewChildPosition) { - drawSelection(canvas, layoutBlock.getLayout(), 0, textLen); + drawSelection(canvas, layoutBlock.getLayout(), 0, textLen, false, false); } } else if (position == startViewPosition && startViewChildPosition == i) { - drawSelection(canvas, layoutBlock.getLayout(), startViewOffset, textLen); + drawSelection(canvas, layoutBlock.getLayout(), startViewOffset, textLen, true, false); } else if (position == endViewPosition && endViewChildPosition == i) { - drawSelection(canvas, layoutBlock.getLayout(), 0, endOffset); + drawSelection(canvas, layoutBlock.getLayout(), 0, endOffset, false, true); } else if (position > startViewPosition && position < endViewPosition || (position == startViewPosition && i > startViewChildPosition) || (position == endViewPosition && i < endViewChildPosition)) { - drawSelection(canvas, layoutBlock.getLayout(), 0, textLen); + drawSelection(canvas, layoutBlock.getLayout(), 0, textLen, false, false); } } } @@ -2730,12 +2815,17 @@ public abstract class TextSelectionHelper recycled; private ArrayList rects = new ArrayList<>(1); private int rectsCount = 0; @Override public void reset() { super.reset(); + if (recycled == null) { + recycled = new ArrayList<>(rects.size()); + } + recycled.addAll(rects); rects.clear(); rectsCount = 0; lastBottom = 0; @@ -2743,28 +2833,20 @@ public abstract class TextSelectionHelper 0) { + rectF = recycled.remove(0); + } else { + rectF = new RectF(); + } + rectF.set(left, top, right, bottom); + rects.add(rectF); rectsCount++; super.addRect(left, top, right, bottom, dir); if (bottom > lastBottom) { lastBottom = bottom; } } - - public void scaleY(float sy, float cy, Path copyTo) { - if (copyTo != null) { - for (int i = 0; i < rectsCount; ++i) { - RectF rect = rects.get(i); - copyTo.addRect(rect.left, (rect.top - cy) * sy + cy, rect.right, (rect.bottom - cy) * sy + cy, Path.Direction.CW); - } - } else { - super.reset(); - for (int i = 0; i < rectsCount; ++i) { - RectF rect = rects.get(i); - super.addRect(rect.left, (rect.top - cy) * sy + cy, rect.right, (rect.bottom - cy) * sy + cy, Path.Direction.CW); - } - } - } } public void setKeyboardSize(int keyboardSize) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java index 36803656c..efdb15ac8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java @@ -27,15 +27,20 @@ import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.AnimatedTextView; import org.telegram.ui.Components.BackupImageView; +import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.RLottieImageView; import java.util.ArrayList; public class TextSettingsCell extends FrameLayout { + private Theme.ResourcesProvider resourcesProvider; private TextView textView; - private TextView valueTextView; + private AnimatedTextView valueTextView; + private ImageView imageView; private BackupImageView valueBackupImageView; private ImageView valueImageView; private boolean needDivider; @@ -56,8 +61,17 @@ public class TextSettingsCell extends FrameLayout { this(context, 21); } + public TextSettingsCell(Context context, Theme.ResourcesProvider resourcesProvider) { + this(context, 21, resourcesProvider); + } + public TextSettingsCell(Context context, int padding) { + this(context, padding, null); + } + + public TextSettingsCell(Context context, int padding, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; this.padding = padding; textView = new TextView(context); @@ -67,19 +81,22 @@ public class TextSettingsCell extends FrameLayout { textView.setSingleLine(true); textView.setEllipsize(TextUtils.TruncateAt.END); textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, padding, 0, padding, 0)); - valueTextView = new TextView(context); - valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - valueTextView.setLines(1); - valueTextView.setMaxLines(1); - valueTextView.setSingleLine(true); - valueTextView.setEllipsize(TextUtils.TruncateAt.END); + valueTextView = new AnimatedTextView(context, true, true, !LocaleController.isRTL); + valueTextView.setAnimationProperties(.55f, 0, 320, CubicBezierInterpolator.EASE_OUT_QUINT); + valueTextView.setTextSize(AndroidUtilities.dp(16)); valueTextView.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL); - valueTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteValueText)); + valueTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteValueText, resourcesProvider)); addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, padding, 0, padding, 0)); + imageView = new RLottieImageView(context); + imageView.setScaleType(ImageView.ScaleType.CENTER); + imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon), PorterDuff.Mode.MULTIPLY)); + imageView.setVisibility(GONE); + addView(imageView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL, 21, 0, 21, 0)); + valueImageView = new ImageView(context); valueImageView.setScaleType(ImageView.ScaleType.CENTER); valueImageView.setVisibility(INVISIBLE); @@ -97,6 +114,10 @@ public class TextSettingsCell extends FrameLayout { valueImageView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); } + if (imageView.getVisibility() == VISIBLE) { + imageView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.AT_MOST)); + } + if (valueBackupImageView != null) { valueBackupImageView.measure(MeasureSpec.makeMeasureSpec(valueBackupImageView.getLayoutParams().height, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(valueBackupImageView.getLayoutParams().width, MeasureSpec.EXACTLY)); } @@ -125,7 +146,7 @@ public class TextSettingsCell extends FrameLayout { canDisable = value; } - public TextView getValueTextView() { + public AnimatedTextView getValueTextView() { return valueTextView; } @@ -146,10 +167,14 @@ public class TextSettingsCell extends FrameLayout { } public void setTextAndValue(CharSequence text, CharSequence value, boolean divider) { + setTextAndValue(text, value, false, divider); + } + + public void setTextAndValue(CharSequence text, CharSequence value, boolean animated, boolean divider) { textView.setText(text); valueImageView.setVisibility(INVISIBLE); if (value != null) { - valueTextView.setText(value); + valueTextView.setText(value, animated); valueTextView.setVisibility(VISIBLE); } else { valueTextView.setVisibility(INVISIBLE); @@ -172,6 +197,18 @@ public class TextSettingsCell extends FrameLayout { setWillNotDraw(!divider); } + public void setIcon(int resId) { + MarginLayoutParams params = (MarginLayoutParams) textView.getLayoutParams(); + if (resId == 0) { + imageView.setVisibility(GONE); + params.leftMargin = 0; + } else { + imageView.setImageResource(resId); + imageView.setVisibility(VISIBLE); + params.leftMargin = AndroidUtilities.dp(71); + } + } + public void setEnabled(boolean value, ArrayList animators) { setEnabled(value); if (animators != null) { @@ -210,7 +247,7 @@ public class TextSettingsCell extends FrameLayout { if (drawLoading || drawLoadingProgress != 0) { if (paint == null) { paint = new Paint(Paint.ANTI_ALIAS_FLAG); - paint.setColor(Theme.getColor(Theme.key_dialogSearchBackground)); + paint.setColor(Theme.getColor(Theme.key_dialogSearchBackground, resourcesProvider)); } //LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT; if (incrementLoadingProgress) { @@ -264,6 +301,7 @@ public class TextSettingsCell extends FrameLayout { @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); + info.setText(textView.getText() + (valueTextView != null && valueTextView.getVisibility() == View.VISIBLE ? "\n" + valueTextView.getText() : "")); info.setEnabled(isEnabled()); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ThemePreviewMessagesCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ThemePreviewMessagesCell.java index 35e6e2789..9730f8f99 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ThemePreviewMessagesCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ThemePreviewMessagesCell.java @@ -258,6 +258,9 @@ public class ThemePreviewMessagesCell extends LinearLayout { @Override protected void onDraw(Canvas canvas) { Drawable newDrawable = Theme.getCachedWallpaperNonBlocking(); + if (Theme.wallpaperLoadTask != null) { + invalidate(); + } if (newDrawable != backgroundDrawable && newDrawable != null) { if (Theme.isAnimatingColor()) { oldBackgroundDrawable = backgroundDrawable; @@ -274,11 +277,16 @@ public class ThemePreviewMessagesCell extends LinearLayout { if (drawable == null) { continue; } + int alpha; if (a == 1 && oldBackgroundDrawable != null && parentLayout != null) { - drawable.setAlpha((int) (255 * themeAnimationValue)); + alpha = (int) (255 * themeAnimationValue); } else { - drawable.setAlpha(255); + alpha = 255; } + if (alpha <= 0) { + continue; + } + drawable.setAlpha(alpha); if (drawable instanceof ColorDrawable || drawable instanceof GradientDrawable || drawable instanceof MotionBackgroundDrawable) { drawable.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight()); if (drawable instanceof BackgroundGradientDrawable) { @@ -289,6 +297,7 @@ public class ThemePreviewMessagesCell extends LinearLayout { } } else if (drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; + bitmapDrawable.setFilterBitmap(true); if (bitmapDrawable.getTileModeX() == Shader.TileMode.REPEAT) { canvas.save(); float scale = 2.0f / AndroidUtilities.density; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell.java index febbe584b..5a4f7e32a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell.java @@ -22,24 +22,26 @@ import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DialogObject; -import org.telegram.messenger.ImageLocation; +import org.telegram.messenger.Emoji; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; -import org.telegram.messenger.UserObject; +import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.messenger.UserObject; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; -import org.telegram.messenger.UserConfig; +import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.CheckBox; import org.telegram.ui.Components.CheckBoxSquare; import org.telegram.ui.Components.LayoutHelper; -import org.telegram.ui.ActionBar.SimpleTextView; +import org.telegram.ui.Components.Premium.PremiumGradient; import org.telegram.ui.NotificationsSettingsActivity; -public class UserCell extends FrameLayout { +public class UserCell extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { private BackupImageView avatarImageView; private SimpleTextView nameTextView; @@ -49,6 +51,7 @@ public class UserCell extends FrameLayout { private CheckBoxSquare checkBoxBig; private TextView adminTextView; private TextView addButton; + private Theme.ResourcesProvider resourcesProvider; private AvatarDrawable avatarDrawable; private Object currentObject; @@ -73,20 +76,29 @@ public class UserCell extends FrameLayout { private boolean needDivider; public UserCell(Context context, int padding, int checkbox, boolean admin) { - this(context, padding, checkbox, admin, false); + this(context, padding, checkbox, admin, false, null); + } + + public UserCell(Context context, int padding, int checkbox, boolean admin, Theme.ResourcesProvider resourcesProvider) { + this(context, padding, checkbox, admin, false, resourcesProvider); } public UserCell(Context context, int padding, int checkbox, boolean admin, boolean needAddButton) { + this(context, padding, checkbox, admin, needAddButton, null); + } + + public UserCell(Context context, int padding, int checkbox, boolean admin, boolean needAddButton, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; int additionalPadding; if (needAddButton) { addButton = new TextView(context); addButton.setGravity(Gravity.CENTER); - addButton.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); + addButton.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText, resourcesProvider)); addButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); addButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - addButton.setBackgroundDrawable(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + addButton.setBackgroundDrawable(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); addButton.setText(LocaleController.getString("Add", R.string.Add)); addButton.setPadding(AndroidUtilities.dp(17), 0, AndroidUtilities.dp(17), 0); addView(addButton, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, 28, Gravity.TOP | (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT), LocaleController.isRTL ? 14 : 0, 15, LocaleController.isRTL ? 0 : 14, 0)); @@ -95,8 +107,8 @@ public class UserCell extends FrameLayout { additionalPadding = 0; } - statusColor = Theme.getColor(Theme.key_windowBackgroundWhiteGrayText); - statusOnlineColor = Theme.getColor(Theme.key_windowBackgroundWhiteBlueText); + statusColor = Theme.getColor(Theme.key_windowBackgroundWhiteGrayText, resourcesProvider); + statusOnlineColor = Theme.getColor(Theme.key_windowBackgroundWhiteBlueText, resourcesProvider); avatarDrawable = new AvatarDrawable(); @@ -105,7 +117,7 @@ public class UserCell extends FrameLayout { addView(avatarImageView, LayoutHelper.createFrame(46, 46, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 7 + padding, 6, LocaleController.isRTL ? 7 + padding : 0, 0)); nameTextView = new SimpleTextView(context); - nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); nameTextView.setTextSize(16); nameTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP); @@ -118,7 +130,7 @@ public class UserCell extends FrameLayout { imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.CENTER); - imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon), PorterDuff.Mode.MULTIPLY)); + imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon, resourcesProvider), PorterDuff.Mode.MULTIPLY)); imageView.setVisibility(GONE); addView(imageView, LayoutHelper.createFrame(LayoutParams.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL, LocaleController.isRTL ? 0 : 16, 0, LocaleController.isRTL ? 16 : 0, 0)); @@ -128,14 +140,14 @@ public class UserCell extends FrameLayout { } else if (checkbox == 1) { checkBox = new CheckBox(context, R.drawable.round_check2); checkBox.setVisibility(INVISIBLE); - checkBox.setColor(Theme.getColor(Theme.key_checkbox), Theme.getColor(Theme.key_checkboxCheck)); + checkBox.setColor(Theme.getColor(Theme.key_checkbox, resourcesProvider), Theme.getColor(Theme.key_checkboxCheck, resourcesProvider)); addView(checkBox, LayoutHelper.createFrame(22, 22, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 37 + padding, 40, LocaleController.isRTL ? 37 + padding : 0, 0)); } if (admin) { adminTextView = new TextView(context); adminTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - adminTextView.setTextColor(Theme.getColor(Theme.key_profile_creatorIcon)); + adminTextView.setTextColor(Theme.getColor(Theme.key_profile_creatorIcon, resourcesProvider)); addView(adminTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, LocaleController.isRTL ? 23 : 0, 10, LocaleController.isRTL ? 0 : 23, 0)); } @@ -209,6 +221,11 @@ public class UserCell extends FrameLayout { } encryptedChat = ec; currentStatus = status; + try { + if (name != null && nameTextView != null) { + name = Emoji.replaceEmoji(name, nameTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(18), false); + } + } catch (Exception ignore) {} currentName = name; currentObject = object; currentDrawable = resId; @@ -447,7 +464,20 @@ public class UserCell extends FrameLayout { } else { lastName = ""; } - nameTextView.setText(lastName); + CharSequence name = lastName; + if (name != null) { + try { + name = Emoji.replaceEmoji(lastName, nameTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(18), false); + } catch (Exception ignore) {} + } + nameTextView.setText(name); + } + if (currentUser != null && MessagesController.getInstance(currentAccount).isPremiumUser(currentUser)) { + nameTextView.setRightDrawable(PremiumGradient.getInstance().premiumStarDrawableMini); + nameTextView.setRightDrawableTopPadding(-AndroidUtilities.dp(0.5f)); + } else { + nameTextView.setRightDrawable(null); + nameTextView.setRightDrawableTopPadding(0); } if (currentStatus != null) { statusTextView.setTextColor(statusColor); @@ -485,9 +515,9 @@ public class UserCell extends FrameLayout { avatarImageView.setImageDrawable(avatarDrawable); } - nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); if (adminTextView != null) { - adminTextView.setTextColor(Theme.getColor(Theme.key_profile_creatorIcon)); + adminTextView.setTextColor(Theme.getColor(Theme.key_profile_creatorIcon, resourcesProvider)); } } @@ -520,4 +550,23 @@ public class UserCell extends FrameLayout { info.setClassName("android.widget.CheckBox"); } } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.emojiLoaded) { + nameTextView.invalidate(); + } + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.emojiLoaded); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.emojiLoaded); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell2.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell2.java index f9c1408f3..a8d47b71f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell2.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell2.java @@ -37,6 +37,7 @@ import org.telegram.ui.Components.LayoutHelper; public class UserCell2 extends FrameLayout { + private Theme.ResourcesProvider resourcesProvider; private BackupImageView avatarImageView; private SimpleTextView nameTextView; private SimpleTextView statusTextView; @@ -62,10 +63,15 @@ public class UserCell2 extends FrameLayout { private int statusOnlineColor; public UserCell2(Context context, int padding, int checkbox) { - super(context); + this(context, padding, checkbox, null); + } - statusColor = Theme.getColor(Theme.key_windowBackgroundWhiteGrayText); - statusOnlineColor = Theme.getColor(Theme.key_windowBackgroundWhiteBlueText); + public UserCell2(Context context, int padding, int checkbox, Theme.ResourcesProvider resourcesProvider) { + super(context); + this.resourcesProvider = resourcesProvider; + + statusColor = Theme.getColor(Theme.key_windowBackgroundWhiteGrayText, resourcesProvider); + statusOnlineColor = Theme.getColor(Theme.key_windowBackgroundWhiteBlueText, resourcesProvider); avatarDrawable = new AvatarDrawable(); @@ -74,7 +80,7 @@ public class UserCell2 extends FrameLayout { addView(avatarImageView, LayoutHelper.createFrame(48, 48, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 7 + padding, 11, LocaleController.isRTL ? 7 + padding : 0, 0)); nameTextView = new SimpleTextView(context); - nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); nameTextView.setTextSize(17); nameTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP); addView(nameTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 20, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 28 + (checkbox == 2 ? 18 : 0) : (68 + padding), 14.5f, LocaleController.isRTL ? (68 + padding) : 28 + (checkbox == 2 ? 18 : 0), 0)); @@ -86,17 +92,17 @@ public class UserCell2 extends FrameLayout { imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.CENTER); - imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon), PorterDuff.Mode.MULTIPLY)); + imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon, resourcesProvider), PorterDuff.Mode.MULTIPLY)); imageView.setVisibility(GONE); addView(imageView, LayoutHelper.createFrame(LayoutParams.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL, LocaleController.isRTL ? 0 : 16, 0, LocaleController.isRTL ? 16 : 0, 0)); if (checkbox == 2) { - checkBoxBig = new CheckBoxSquare(context, false); + checkBoxBig = new CheckBoxSquare(context, false, resourcesProvider); addView(checkBoxBig, LayoutHelper.createFrame(18, 18, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL, LocaleController.isRTL ? 19 : 0, 0, LocaleController.isRTL ? 0 : 19, 0)); } else if (checkbox == 1) { checkBox = new CheckBox(context, R.drawable.round_check2); checkBox.setVisibility(INVISIBLE); - checkBox.setColor(Theme.getColor(Theme.key_checkbox), Theme.getColor(Theme.key_checkboxCheck)); + checkBox.setColor(Theme.getColor(Theme.key_checkbox, resourcesProvider), Theme.getColor(Theme.key_checkboxCheck, resourcesProvider)); addView(checkBox, LayoutHelper.createFrame(22, 22, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 37 + padding, 41, LocaleController.isRTL ? 37 + padding : 0, 0)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/WallpaperCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/WallpaperCell.java index 7d9a3419a..8d61e086a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/WallpaperCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/WallpaperCell.java @@ -116,14 +116,16 @@ public class WallpaperCell extends FrameLayout { imageView.getImageReceiver().setBlendMode(null); imageView.getImageReceiver().setGradientBitmap(null); isSelected = object == selectedWallpaper; + int thumbSide = 100, imageSide = 180; + String imageFilter = imageSide + "_" + imageSide, thumbFilter = thumbSide + "_" + thumbSide + "_b"; if (object instanceof TLRPC.TL_wallPaper) { TLRPC.TL_wallPaper wallPaper = (TLRPC.TL_wallPaper) object; - TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(wallPaper.document.thumbs, 100); - TLRPC.PhotoSize image = FileLoader.getClosestPhotoSizeWithSize(wallPaper.document.thumbs, 320); + TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(wallPaper.document.thumbs, AndroidUtilities.dp(thumbSide)); + TLRPC.PhotoSize image = FileLoader.getClosestPhotoSizeWithSize(wallPaper.document.thumbs, AndroidUtilities.dp(imageSide)); if (image == thumb) { image = null; } - int size = image != null ? image.size : wallPaper.document.size; + long size = image != null ? image.size : wallPaper.document.size; if (wallPaper.pattern) { int patternColor; if (wallPaper.settings.third_background_color != 0) { @@ -145,16 +147,16 @@ public class WallpaperCell extends FrameLayout { imageView.getImageReceiver().setColorFilter(new PorterDuffColorFilter(AndroidUtilities.getPatternColor(patternColor), PorterDuff.Mode.SRC_IN)); } if (image != null) { - imageView.setImage(ImageLocation.getForDocument(image, wallPaper.document), "100_100", ImageLocation.getForDocument(thumb, wallPaper.document), null, "jpg", size, 1, wallPaper); + imageView.setImage(ImageLocation.getForDocument(image, wallPaper.document), imageFilter, ImageLocation.getForDocument(thumb, wallPaper.document), null, "jpg", size, 1, wallPaper); } else { - imageView.setImage(ImageLocation.getForDocument(thumb, wallPaper.document), "100_100", null, null, "jpg", size, 1, wallPaper); + imageView.setImage(ImageLocation.getForDocument(thumb, wallPaper.document), imageFilter, null, null, "jpg", size, 1, wallPaper); } imageView.getImageReceiver().setAlpha(Math.abs(wallPaper.settings.intensity) / 100.0f); } else { if (image != null) { - imageView.setImage(ImageLocation.getForDocument(image, wallPaper.document), "100_100", ImageLocation.getForDocument(thumb, wallPaper.document), "100_100_b", "jpg", size, 1, wallPaper); + imageView.setImage(ImageLocation.getForDocument(image, wallPaper.document), imageFilter, ImageLocation.getForDocument(thumb, wallPaper.document), thumbFilter, "jpg", size, 1, wallPaper); } else { - imageView.setImage(ImageLocation.getForDocument(wallPaper.document), "100_100", ImageLocation.getForDocument(thumb, wallPaper.document), "100_100_b", "jpg", size, 1, wallPaper); + imageView.setImage(ImageLocation.getForDocument(wallPaper.document), imageFilter, ImageLocation.getForDocument(thumb, wallPaper.document), thumbFilter, "jpg", size, 1, wallPaper); } } } else if (object instanceof WallpapersListActivity.ColorWallpaper) { @@ -182,11 +184,11 @@ public class WallpaperCell extends FrameLayout { imageView.setImageBitmap(wallPaper.defaultCache); imageView.getImageReceiver().setAlpha(Math.abs(wallPaper.intensity)); } else if (wallPaper.path != null) { - imageView.setImage(wallPaper.path.getAbsolutePath(), "100_100", null); + imageView.setImage(wallPaper.path.getAbsolutePath(), imageFilter, null); } else { TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(wallPaper.pattern.document.thumbs, 100); - int size = thumb != null ? thumb.size : wallPaper.pattern.document.size; - imageView.setImage(ImageLocation.getForDocument(thumb, wallPaper.pattern.document), "100_100", null, null, "jpg", size, 1, wallPaper.pattern); + long size = thumb != null ? thumb.size : wallPaper.pattern.document.size; + imageView.setImage(ImageLocation.getForDocument(thumb, wallPaper.pattern.document), imageFilter, null, null, "jpg", size, 1, wallPaper.pattern); imageView.getImageReceiver().setAlpha(Math.abs(wallPaper.intensity)); if (Build.VERSION.SDK_INT < 29 || wallPaper.gradientColor2 == 0) { imageView.getImageReceiver().setColorFilter(new PorterDuffColorFilter(AndroidUtilities.getPatternColor(patternColor), PorterDuff.Mode.SRC_IN)); @@ -205,9 +207,9 @@ public class WallpaperCell extends FrameLayout { } else if (object instanceof WallpapersListActivity.FileWallpaper) { WallpapersListActivity.FileWallpaper wallPaper = (WallpapersListActivity.FileWallpaper) object; if (wallPaper.originalPath != null) { - imageView.setImage(wallPaper.originalPath.getAbsolutePath(), "100_100", null); + imageView.setImage(wallPaper.originalPath.getAbsolutePath(), imageFilter, null); } else if (wallPaper.path != null) { - imageView.setImage(wallPaper.path.getAbsolutePath(), "100_100", null); + imageView.setImage(wallPaper.path.getAbsolutePath(), imageFilter, null); } else if (Theme.THEME_BACKGROUND_SLUG.equals(wallPaper.slug)) { imageView.setImageDrawable(Theme.getThemedWallpaper(true, imageView)); } else { @@ -216,15 +218,15 @@ public class WallpaperCell extends FrameLayout { } else if (object instanceof MediaController.SearchImage) { MediaController.SearchImage wallPaper = (MediaController.SearchImage) object; if (wallPaper.photo != null) { - TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(wallPaper.photo.sizes, 100); - TLRPC.PhotoSize image = FileLoader.getClosestPhotoSizeWithSize(wallPaper.photo.sizes, 320); + TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(wallPaper.photo.sizes, AndroidUtilities.dp(thumbSide)); + TLRPC.PhotoSize image = FileLoader.getClosestPhotoSizeWithSize(wallPaper.photo.sizes, AndroidUtilities.dp(imageSide)); if (image == thumb) { image = null; } int size = image != null ? image.size : 0; - imageView.setImage(ImageLocation.getForPhoto(image, wallPaper.photo), "100_100", ImageLocation.getForPhoto(thumb, wallPaper.photo), "100_100_b", "jpg", size, 1, wallPaper); + imageView.setImage(ImageLocation.getForPhoto(image, wallPaper.photo), imageFilter, ImageLocation.getForPhoto(thumb, wallPaper.photo), thumbFilter, "jpg", size, 1, wallPaper); } else { - imageView.setImage(wallPaper.thumbUrl, "100_100", null); + imageView.setImage(wallPaper.thumbUrl, imageFilter, null); } } else { isSelected = false; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangeBioActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangeBioActivity.java index acc04b717..8e0384100 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangeBioActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangeBioActivity.java @@ -20,6 +20,7 @@ import android.text.TextWatcher; import android.util.TypedValue; import android.view.Gravity; import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; import android.view.inputmethod.EditorInfo; import android.widget.FrameLayout; import android.widget.LinearLayout; @@ -74,7 +75,7 @@ public class ChangeBioActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56)); doneButton.setContentDescription(LocaleController.getString("Done", R.string.Done)); fragmentView = new LinearLayout(context); @@ -85,7 +86,15 @@ public class ChangeBioActivity extends BaseFragment { FrameLayout fieldContainer = new FrameLayout(context); linearLayout.addView(fieldContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 24, 24, 20, 0)); - firstNameField = new EditTextBoldCursor(context); + firstNameField = new EditTextBoldCursor(context) { + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + Editable s = getEditableText(); + int number = getMessagesController().getAboutLimit() - Character.codePointCount(s, 0, s.length()); + info.setText(getText() + ", " + LocaleController.formatPluralString("PeopleJoinedRemaining", number)); + } + }; firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); firstNameField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); firstNameField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); @@ -98,7 +107,7 @@ public class ChangeBioActivity extends BaseFragment { firstNameField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE); firstNameField.setImeOptions(EditorInfo.IME_ACTION_DONE); InputFilter[] inputFilters = new InputFilter[1]; - inputFilters[0] = new CodepointsLengthInputFilter(70) { + inputFilters[0] = new CodepointsLengthInputFilter(getMessagesController().getAboutLimit()) { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { if (source != null && source.length() > 0 && TextUtils.indexOf(source, '\n') == source.length() - 1) { @@ -142,7 +151,7 @@ public class ChangeBioActivity extends BaseFragment { @Override public void afterTextChanged(Editable s) { - checkTextView.setNumber(70 - Character.codePointCount(s, 0, s.length()), true); + checkTextView.setNumber(getMessagesController().getAboutLimit() - Character.codePointCount(s, 0, s.length()), true); } }); @@ -151,10 +160,10 @@ public class ChangeBioActivity extends BaseFragment { checkTextView = new NumberTextView(context); checkTextView.setCenterAlign(true); checkTextView.setTextSize(15); - checkTextView.setNumber(70, false); + checkTextView.setNumber(getMessagesController().getAboutLimit(), false); checkTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText4)); checkTextView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); - fieldContainer.addView(checkTextView, LayoutHelper.createFrame(20, 20, LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT, 0, 4, 4, 0)); + fieldContainer.addView(checkTextView, LayoutHelper.createFrame(26, 20, LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT, 0, 4, 4, 0)); helpTextView = new TextView(context); helpTextView.setFocusable(true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java index fe77c7fae..4576c44c1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java @@ -43,10 +43,18 @@ public class ChangeNameActivity extends BaseFragment { private View headerLabelView; private View doneButton; + private Theme.ResourcesProvider resourcesProvider; + private final static int done_button = 1; + public ChangeNameActivity(Theme.ResourcesProvider resourcesProvider) { + this.resourcesProvider = resourcesProvider; + } + @Override public View createView(Context context) { + actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_avatar_actionBarSelectorBlue, resourcesProvider), false); + actionBar.setItemsColor(Theme.getColor(Theme.key_actionBarDefaultIcon, resourcesProvider), false); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setAllowOverlayTitle(true); actionBar.setTitle(LocaleController.getString("EditName", R.string.EditName)); @@ -65,7 +73,7 @@ public class ChangeNameActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(UserConfig.getInstance(currentAccount).getClientUserId()); if (user == null) { @@ -78,10 +86,15 @@ public class ChangeNameActivity extends BaseFragment { ((LinearLayout) fragmentView).setOrientation(LinearLayout.VERTICAL); fragmentView.setOnTouchListener((v, event) -> true); - firstNameField = new EditTextBoldCursor(context); + firstNameField = new EditTextBoldCursor(context) { + @Override + protected Theme.ResourcesProvider getResourcesProvider() { + return resourcesProvider; + } + }; firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - firstNameField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - firstNameField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + firstNameField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText, resourcesProvider)); + firstNameField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); firstNameField.setBackgroundDrawable(null); firstNameField.setLineColors(getThemedColor(Theme.key_windowBackgroundWhiteInputField), getThemedColor(Theme.key_windowBackgroundWhiteInputFieldActivated), getThemedColor(Theme.key_windowBackgroundWhiteRedText3)); firstNameField.setMaxLines(1); @@ -91,7 +104,7 @@ public class ChangeNameActivity extends BaseFragment { firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); firstNameField.setImeOptions(EditorInfo.IME_ACTION_NEXT); firstNameField.setHint(LocaleController.getString("FirstName", R.string.FirstName)); - firstNameField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + firstNameField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); firstNameField.setCursorSize(AndroidUtilities.dp(20)); firstNameField.setCursorWidth(1.5f); linearLayout.addView(firstNameField, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36, 24, 24, 24, 0)); @@ -104,10 +117,15 @@ public class ChangeNameActivity extends BaseFragment { return false; }); - lastNameField = new EditTextBoldCursor(context); + lastNameField = new EditTextBoldCursor(context) { + @Override + protected Theme.ResourcesProvider getResourcesProvider() { + return resourcesProvider; + } + }; lastNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - lastNameField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - lastNameField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + lastNameField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText, resourcesProvider)); + lastNameField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); lastNameField.setBackgroundDrawable(null); lastNameField.setLineColors(getThemedColor(Theme.key_windowBackgroundWhiteInputField), getThemedColor(Theme.key_windowBackgroundWhiteInputFieldActivated), getThemedColor(Theme.key_windowBackgroundWhiteRedText3)); lastNameField.setMaxLines(1); @@ -117,7 +135,7 @@ public class ChangeNameActivity extends BaseFragment { lastNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); lastNameField.setImeOptions(EditorInfo.IME_ACTION_DONE); lastNameField.setHint(LocaleController.getString("LastName", R.string.LastName)); - lastNameField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + lastNameField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); lastNameField.setCursorSize(AndroidUtilities.dp(20)); lastNameField.setCursorWidth(1.5f); linearLayout.addView(lastNameField, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36, 24, 16, 24, 0)); @@ -176,6 +194,11 @@ public class ChangeNameActivity extends BaseFragment { }); } + @Override + public Theme.ResourcesProvider getResourceProvider() { + return resourcesProvider; + } + @Override public void onTransitionAnimationEnd(boolean isOpen, boolean backward) { if (isOpen) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangePhoneActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangePhoneActivity.java deleted file mode 100644 index b68a98265..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangePhoneActivity.java +++ /dev/null @@ -1,1674 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 5.x.x. - * It is licensed under GNU GPL v. 2 or later. - * You should have received a copy of the license in this archive (see LICENSE). - * - * Copyright Nikolai Kudashov, 2013-2018. - */ - -package org.telegram.ui; - -import android.Manifest; -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; -import android.annotation.SuppressLint; -import android.app.Activity; -import android.app.Dialog; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.telephony.PhoneNumberUtils; -import android.telephony.TelephonyManager; -import android.text.Editable; -import android.text.InputFilter; -import android.text.InputType; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.util.TypedValue; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.View; -import android.view.animation.AccelerateDecelerateInterpolator; -import android.view.inputmethod.EditorInfo; -import android.widget.AdapterView; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ScrollView; -import android.widget.TextView; - -import org.telegram.PhoneFormat.PhoneFormat; -import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.BuildVars; -import org.telegram.messenger.LocaleController; -import org.telegram.messenger.MessagesController; -import org.telegram.messenger.MessagesStorage; -import org.telegram.messenger.NotificationCenter; -import org.telegram.messenger.ApplicationLoader; -import org.telegram.messenger.FileLog; -import org.telegram.messenger.R; -import org.telegram.tgnet.ConnectionsManager; -import org.telegram.tgnet.TLRPC; -import org.telegram.messenger.UserConfig; -import org.telegram.ui.ActionBar.ActionBar; -import org.telegram.ui.ActionBar.ActionBarMenu; -import org.telegram.ui.ActionBar.AlertDialog; -import org.telegram.ui.ActionBar.BaseFragment; -import org.telegram.ui.ActionBar.Theme; -import org.telegram.ui.ActionBar.ThemeDescription; -import org.telegram.ui.Components.AlertsCreator; -import org.telegram.ui.Components.EditTextBoldCursor; -import org.telegram.ui.Components.HintEditText; -import org.telegram.ui.Components.LayoutHelper; -import org.telegram.ui.Components.RLottieDrawable; -import org.telegram.ui.Components.RLottieImageView; -import org.telegram.ui.Components.SlideView; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Locale; -import java.util.Timer; -import java.util.TimerTask; - -public class ChangePhoneActivity extends BaseFragment { - - private int currentViewNum = 0; - private SlideView[] views = new SlideView[5]; - private AlertDialog progressDialog; - private Dialog permissionsDialog; - private ArrayList permissionsItems = new ArrayList<>(); - private boolean checkPermissions = true; - private View doneButton; - - private int scrollHeight; - - private final static int done_button = 1; - - private static class ProgressView extends View { - - private Paint paint = new Paint(); - private Paint paint2 = new Paint(); - private float progress; - - public ProgressView(Context context) { - super(context); - paint.setColor(Theme.getColor(Theme.key_login_progressInner)); - paint2.setColor(Theme.getColor(Theme.key_login_progressOuter)); - } - - public void setProgress(float value) { - progress = value; - invalidate(); - } - - @Override - protected void onDraw(Canvas canvas) { - int start = (int) (getMeasuredWidth() * progress); - canvas.drawRect(0, 0, start, getMeasuredHeight(), paint2); - canvas.drawRect(start, 0, getMeasuredWidth(), getMeasuredHeight(), paint); - } - } - - @Override - public void onFragmentDestroy() { - super.onFragmentDestroy(); - for (int a = 0; a < views.length; a++) { - if (views[a] != null) { - views[a].onDestroyActivity(); - } - } - if (progressDialog != null) { - try { - progressDialog.dismiss(); - } catch (Exception e) { - FileLog.e(e); - } - progressDialog = null; - } - AndroidUtilities.removeAdjustResize(getParentActivity(), classGuid); - } - - @Override - public View createView(Context context) { - actionBar.setTitle(LocaleController.getString("AppName", R.string.AppName)); - actionBar.setBackButtonImage(R.drawable.ic_ab_back); - actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { - @Override - public void onItemClick(int id) { - if (id == done_button) { - views[currentViewNum].onNextPressed(null); - } else if (id == -1) { - finishFragment(); - } - } - }); - - ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); - - ScrollView scrollView = new ScrollView(context) { - @Override - public boolean requestChildRectangleOnScreen(View child, Rect rectangle, boolean immediate) { - if (currentViewNum == 1 || currentViewNum == 2 || currentViewNum == 4) { - rectangle.bottom += AndroidUtilities.dp(40); - } - return super.requestChildRectangleOnScreen(child, rectangle, immediate); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - scrollHeight = MeasureSpec.getSize(heightMeasureSpec) - AndroidUtilities.dp(30); - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - }; - scrollView.setFillViewport(true); - fragmentView = scrollView; - - FrameLayout frameLayout = new FrameLayout(context); - scrollView.addView(frameLayout, LayoutHelper.createScroll(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT)); - - views[0] = new PhoneView(context); - views[1] = new LoginActivitySmsView(context, 1); - views[2] = new LoginActivitySmsView(context, 2); - views[3] = new LoginActivitySmsView(context, 3); - views[4] = new LoginActivitySmsView(context, 4); - - for (int a = 0; a < views.length; a++) { - views[a].setVisibility(a == 0 ? View.VISIBLE : View.GONE); - frameLayout.addView(views[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, a == 0 ? LayoutHelper.WRAP_CONTENT : LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, AndroidUtilities.isTablet() ? 26 : 18, 30, AndroidUtilities.isTablet() ? 26 : 18, 0)); - } - - actionBar.setTitle(views[0].getHeaderName()); - - return fragmentView; - } - - @Override - public void onResume() { - super.onResume(); - AndroidUtilities.requestAdjustResize(getParentActivity(), classGuid); - } - - @Override - public void onRequestPermissionsResultFragment(int requestCode, String[] permissions, int[] grantResults) { - if (requestCode == 6) { - checkPermissions = false; - if (currentViewNum == 0) { - views[currentViewNum].onNextPressed(null); - } - } - } - - @Override - protected void onDialogDismiss(Dialog dialog) { - if (Build.VERSION.SDK_INT >= 23 && dialog == permissionsDialog && !permissionsItems.isEmpty()) { - getParentActivity().requestPermissions(permissionsItems.toArray(new String[0]), 6); - } - } - - @Override - public boolean onBackPressed() { - if (currentViewNum == 0) { - for (int a = 0; a < views.length; a++) { - if (views[a] != null) { - views[a].onDestroyActivity(); - } - } - return true; - } else { - if (views[currentViewNum].onBackPressed(false)) { - setPage(0, true, null, true); - } - } - return false; - } - - @Override - public void onTransitionAnimationEnd(boolean isOpen, boolean backward) { - if (isOpen) { - views[currentViewNum].onShow(); - } - } - - public void needShowProgress() { - if (getParentActivity() == null || getParentActivity().isFinishing() || progressDialog != null) { - return; - } - progressDialog = new AlertDialog(getParentActivity(), 3); - progressDialog.setCanCancel(false); - progressDialog.show(); - } - - public void needHideProgress() { - if (progressDialog == null) { - return; - } - try { - progressDialog.dismiss(); - } catch (Exception e) { - FileLog.e(e); - } - progressDialog = null; - } - - public void setPage(int page, boolean animated, Bundle params, boolean back) { - if (page == 3) { - doneButton.setVisibility(View.GONE); - } else { - if (page == 0) { - checkPermissions = true; - } - doneButton.setVisibility(View.VISIBLE); - } - final SlideView outView = views[currentViewNum]; - final SlideView newView = views[page]; - currentViewNum = page; - - newView.setParams(params, false); - actionBar.setTitle(newView.getHeaderName()); - newView.onShow(); - newView.setX(back ? -AndroidUtilities.displaySize.x : AndroidUtilities.displaySize.x); - - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.setInterpolator(new AccelerateDecelerateInterpolator()); - animatorSet.setDuration(300); - animatorSet.playTogether( - ObjectAnimator.ofFloat(outView, "translationX", back ? AndroidUtilities.displaySize.x : -AndroidUtilities.displaySize.x), - ObjectAnimator.ofFloat(newView, "translationX", 0)); - animatorSet.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationStart(Animator animation) { - newView.setVisibility(View.VISIBLE); - } - - @Override - public void onAnimationEnd(Animator animation) { - outView.setVisibility(View.GONE); - outView.setX(0); - } - }); - animatorSet.start(); - } - - private void fillNextCodeParams(Bundle params, TLRPC.TL_auth_sentCode res) { - params.putString("phoneHash", res.phone_code_hash); - if (res.next_type instanceof TLRPC.TL_auth_codeTypeCall) { - params.putInt("nextType", 4); - } else if (res.next_type instanceof TLRPC.TL_auth_codeTypeFlashCall) { - params.putInt("nextType", 3); - } else if (res.next_type instanceof TLRPC.TL_auth_codeTypeSms) { - params.putInt("nextType", 2); - } - if (res.type instanceof TLRPC.TL_auth_sentCodeTypeApp) { - params.putInt("type", 1); - params.putInt("length", res.type.length); - setPage(1, true, params, false); - } else { - if (res.timeout == 0) { - res.timeout = 60; - } - params.putInt("timeout", res.timeout * 1000); - if (res.type instanceof TLRPC.TL_auth_sentCodeTypeCall) { - params.putInt("type", 4); - params.putInt("length", res.type.length); - setPage(4, true, params, false); - } else if (res.type instanceof TLRPC.TL_auth_sentCodeTypeFlashCall) { - params.putInt("type", 3); - params.putString("pattern", res.type.pattern); - setPage(3, true, params, false); - } else if (res.type instanceof TLRPC.TL_auth_sentCodeTypeSms) { - params.putInt("type", 2); - params.putInt("length", res.type.length); - setPage(2, true, params, false); - } - } - } - - public class PhoneView extends SlideView implements AdapterView.OnItemSelectedListener { - - private EditTextBoldCursor codeField; - private HintEditText phoneField; - private TextView countryButton; - private View view; - private TextView textView; - private TextView textView2; - - private int countryState = 0; - - private ArrayList countriesArray = new ArrayList<>(); - private HashMap countriesMap = new HashMap<>(); - private HashMap codesMap = new HashMap<>(); - private HashMap phoneFormatMap = new HashMap<>(); - - private boolean ignoreSelection = false; - private boolean ignoreOnTextChange = false; - private boolean ignoreOnPhoneChange = false; - private boolean nextPressed = false; - - public PhoneView(Context context) { - super(context); - - setOrientation(VERTICAL); - - countryButton = new TextView(context); - countryButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - countryButton.setPadding(AndroidUtilities.dp(4), AndroidUtilities.dp(4), AndroidUtilities.dp(4), AndroidUtilities.dp(4)); - countryButton.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - countryButton.setMaxLines(1); - countryButton.setSingleLine(true); - countryButton.setEllipsize(TextUtils.TruncateAt.END); - countryButton.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_HORIZONTAL); - countryButton.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_listSelector), 7)); - addView(countryButton, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36, 0, 0, 0, 14)); - countryButton.setOnClickListener(view -> { - CountrySelectActivity fragment = new CountrySelectActivity(true); - fragment.setCountrySelectActivityDelegate((country) -> { - selectCountry(country.name); - AndroidUtilities.runOnUIThread(() -> AndroidUtilities.showKeyboard(phoneField), 300); - phoneField.requestFocus(); - phoneField.setSelection(phoneField.length()); - }); - presentFragment(fragment); - }); - - view = new View(context); - view.setPadding(AndroidUtilities.dp(12), 0, AndroidUtilities.dp(12), 0); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayLine)); - addView(view, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 1, 4, -17.5f, 4, 0)); - - LinearLayout linearLayout = new LinearLayout(context); - linearLayout.setOrientation(HORIZONTAL); - addView(linearLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 20, 0, 0)); - - textView = new TextView(context); - textView.setText("+"); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); - - codeField = new EditTextBoldCursor(context); - codeField.setInputType(InputType.TYPE_CLASS_PHONE); - codeField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - codeField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - codeField.setCursorSize(AndroidUtilities.dp(20)); - codeField.setCursorWidth(1.5f); - codeField.setBackgroundDrawable(null); - codeField.setLineColors(getThemedColor(Theme.key_windowBackgroundWhiteInputField), getThemedColor(Theme.key_windowBackgroundWhiteInputFieldActivated), getThemedColor(Theme.key_windowBackgroundWhiteRedText3)); - codeField.setPadding(AndroidUtilities.dp(10), 0, 0, 0); - codeField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - codeField.setMaxLines(1); - codeField.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); - codeField.setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI); - InputFilter[] inputFilters = new InputFilter[1]; - inputFilters[0] = new InputFilter.LengthFilter(5); - codeField.setFilters(inputFilters); - linearLayout.addView(codeField, LayoutHelper.createLinear(55, 36, -9, 0, 16, 0)); - codeField.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { - - } - - @Override - public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { - - } - - @Override - public void afterTextChanged(Editable editable) { - if (ignoreOnTextChange) { - return; - } - ignoreOnTextChange = true; - String text = PhoneFormat.stripExceptNumbers(codeField.getText().toString()); - codeField.setText(text); - if (text.length() == 0) { - countryButton.setText(LocaleController.getString("ChooseCountry", R.string.ChooseCountry)); - phoneField.setHintText(null); - countryState = 1; - } else { - String country; - boolean ok = false; - String textToSet = null; - if (text.length() > 4) { - ignoreOnTextChange = true; - for (int a = 4; a >= 1; a--) { - String sub = text.substring(0, a); - country = codesMap.get(sub); - if (country != null) { - ok = true; - textToSet = text.substring(a) + phoneField.getText().toString(); - codeField.setText(text = sub); - break; - } - } - if (!ok) { - ignoreOnTextChange = true; - textToSet = text.substring(1) + phoneField.getText().toString(); - codeField.setText(text = text.substring(0, 1)); - } - } - country = codesMap.get(text); - if (country != null) { - int index = countriesArray.indexOf(country); - if (index != -1) { - ignoreSelection = true; - countryButton.setText(countriesArray.get(index)); - String hint = phoneFormatMap.get(text); - phoneField.setHintText(hint != null ? hint.replace('X', '–') : null); - countryState = 0; - } else { - countryButton.setText(LocaleController.getString("WrongCountry", R.string.WrongCountry)); - phoneField.setHintText(null); - countryState = 2; - } - } else { - countryButton.setText(LocaleController.getString("WrongCountry", R.string.WrongCountry)); - phoneField.setHintText(null); - countryState = 2; - } - if (!ok) { - codeField.setSelection(codeField.getText().length()); - } - if (textToSet != null) { - phoneField.requestFocus(); - phoneField.setText(textToSet); - phoneField.setSelection(phoneField.length()); - } - } - ignoreOnTextChange = false; - } - }); - codeField.setOnEditorActionListener((textView, i, keyEvent) -> { - if (i == EditorInfo.IME_ACTION_NEXT) { - phoneField.requestFocus(); - phoneField.setSelection(phoneField.length()); - return true; - } - return false; - }); - - phoneField = new HintEditText(context); - phoneField.setInputType(InputType.TYPE_CLASS_PHONE); - phoneField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - phoneField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - phoneField.setBackgroundDrawable(null); - phoneField.setLineColors(getThemedColor(Theme.key_windowBackgroundWhiteInputField), getThemedColor(Theme.key_windowBackgroundWhiteInputFieldActivated), getThemedColor(Theme.key_windowBackgroundWhiteRedText3)); - phoneField.setPadding(0, 0, 0, 0); - phoneField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - phoneField.setCursorSize(AndroidUtilities.dp(20)); - phoneField.setCursorWidth(1.5f); - phoneField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - phoneField.setMaxLines(1); - phoneField.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); - phoneField.setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI); - linearLayout.addView(phoneField, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 36)); - phoneField.addTextChangedListener(new TextWatcher() { - - private int characterAction = -1; - private int actionPosition; - - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - if (count == 0 && after == 1) { - characterAction = 1; - } else if (count == 1 && after == 0) { - if (s.charAt(start) == ' ' && start > 0) { - characterAction = 3; - actionPosition = start - 1; - } else { - characterAction = 2; - } - } else { - characterAction = -1; - } - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (ignoreOnPhoneChange) { - return; - } - int start = phoneField.getSelectionStart(); - String phoneChars = "0123456789"; - String str = phoneField.getText().toString(); - if (characterAction == 3) { - str = str.substring(0, actionPosition) + str.substring(actionPosition + 1); - start--; - } - StringBuilder builder = new StringBuilder(str.length()); - for (int a = 0; a < str.length(); a++) { - String ch = str.substring(a, a + 1); - if (phoneChars.contains(ch)) { - builder.append(ch); - } - } - ignoreOnPhoneChange = true; - String hint = phoneField.getHintText(); - if (hint != null) { - for (int a = 0; a < builder.length(); a++) { - if (a < hint.length()) { - if (hint.charAt(a) == ' ') { - builder.insert(a, ' '); - a++; - if (start == a && characterAction != 2 && characterAction != 3) { - start++; - } - } - } else { - builder.insert(a, ' '); - if (start == a + 1 && characterAction != 2 && characterAction != 3) { - start++; - } - break; - } - } - } - phoneField.setText(builder); - if (start >= 0) { - phoneField.setSelection(Math.min(start, phoneField.length())); - } - phoneField.onTextChange(); - ignoreOnPhoneChange = false; - } - }); - phoneField.setOnEditorActionListener((textView, i, keyEvent) -> { - if (i == EditorInfo.IME_ACTION_NEXT) { - onNextPressed(null); - return true; - } - return false; - }); - phoneField.setOnKeyListener((v, keyCode, event) -> { - if (keyCode == KeyEvent.KEYCODE_DEL && phoneField.length() == 0) { - codeField.requestFocus(); - codeField.setSelection(codeField.length()); - codeField.dispatchKeyEvent(event); - return true; - } - return false; - }); - - textView2 = new TextView(context); - textView2.setText(LocaleController.getString("ChangePhoneHelp", R.string.ChangePhoneHelp)); - textView2.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText6)); - textView2.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - textView2.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); - textView2.setLineSpacing(AndroidUtilities.dp(2), 1.0f); - addView(textView2, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 0, 28, 0, 10)); - - HashMap languageMap = new HashMap<>(); - try { - BufferedReader reader = new BufferedReader(new InputStreamReader(getResources().getAssets().open("countries.txt"))); - String line; - while ((line = reader.readLine()) != null) { - String[] args = line.split(";"); - countriesArray.add(0, args[2]); - countriesMap.put(args[2], args[0]); - codesMap.put(args[0], args[2]); - if (args.length > 3) { - phoneFormatMap.put(args[0], args[3]); - } - languageMap.put(args[1], args[2]); - } - reader.close(); - } catch (Exception e) { - FileLog.e(e); - } - - Collections.sort(countriesArray, String::compareTo); - - String country = null; - - try { - TelephonyManager telephonyManager = (TelephonyManager) ApplicationLoader.applicationContext.getSystemService(Context.TELEPHONY_SERVICE); - if (telephonyManager != null) { - country = telephonyManager.getSimCountryIso().toUpperCase(); - } - } catch (Exception e) { - FileLog.e(e); - } - - if (country != null) { - String countryName = languageMap.get(country); - if (countryName != null) { - int index = countriesArray.indexOf(countryName); - if (index != -1) { - codeField.setText(countriesMap.get(countryName)); - countryState = 0; - } - } - } - if (codeField.length() == 0) { - countryButton.setText(LocaleController.getString("ChooseCountry", R.string.ChooseCountry)); - phoneField.setHintText(null); - countryState = 1; - } - - if (codeField.length() != 0) { - AndroidUtilities.showKeyboard(phoneField); - phoneField.requestFocus(); - phoneField.setSelection(phoneField.length()); - } else { - AndroidUtilities.showKeyboard(codeField); - codeField.requestFocus(); - } - } - - public void selectCountry(String name) { - int index = countriesArray.indexOf(name); - if (index != -1) { - ignoreOnTextChange = true; - String code = countriesMap.get(name); - codeField.setText(code); - countryButton.setText(name); - String hint = phoneFormatMap.get(code); - phoneField.setHintText(hint != null ? hint.replace('X', '–') : null); - countryState = 0; - ignoreOnTextChange = false; - } - } - - @Override - public void onItemSelected(AdapterView adapterView, View view, int i, long l) { - if (ignoreSelection) { - ignoreSelection = false; - return; - } - ignoreOnTextChange = true; - String str = countriesArray.get(i); - codeField.setText(countriesMap.get(str)); - ignoreOnTextChange = false; - } - - @Override - public void onCancelPressed() { - nextPressed = false; - } - - @Override - public void onNothingSelected(AdapterView adapterView) { - - } - - @Override - public void onNextPressed(String code) { - if (getParentActivity() == null || nextPressed) { - return; - } - TelephonyManager tm = (TelephonyManager) ApplicationLoader.applicationContext.getSystemService(Context.TELEPHONY_SERVICE); - boolean simcardAvailable = tm.getSimState() != TelephonyManager.SIM_STATE_ABSENT && tm.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE; - boolean allowCall = true; - if (Build.VERSION.SDK_INT >= 23 && simcardAvailable) { - allowCall = getParentActivity().checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED; - if (checkPermissions) { - permissionsItems.clear(); - if (!allowCall) { - permissionsItems.add(Manifest.permission.READ_PHONE_STATE); - } - if (!permissionsItems.isEmpty()) { - SharedPreferences preferences = MessagesController.getGlobalMainSettings(); - if (preferences.getBoolean("firstlogin", true) || getParentActivity().shouldShowRequestPermissionRationale(Manifest.permission.READ_PHONE_STATE)) { - preferences.edit().putBoolean("firstlogin", false).commit(); - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); - builder.setMessage(LocaleController.getString("AllowReadCall", R.string.AllowReadCall)); - permissionsDialog = showDialog(builder.create()); - } else { - getParentActivity().requestPermissions(permissionsItems.toArray(new String[0]), 6); - } - return; - } - } - } - - if (countryState == 1) { - AlertsCreator.showSimpleAlert(ChangePhoneActivity.this, LocaleController.getString("ChooseCountry", R.string.ChooseCountry)); - return; - } - if (codeField.length() == 0) { - AlertsCreator.showSimpleAlert(ChangePhoneActivity.this, LocaleController.getString("InvalidPhoneNumber", R.string.InvalidPhoneNumber)); - return; - } - final TLRPC.TL_account_sendChangePhoneCode req = new TLRPC.TL_account_sendChangePhoneCode(); - String phone = PhoneFormat.stripExceptNumbers("" + codeField.getText() + phoneField.getText()); - req.phone_number = phone; - req.settings = new TLRPC.TL_codeSettings(); - req.settings.allow_flashcall = simcardAvailable && allowCall; - req.settings.allow_app_hash = ApplicationLoader.hasPlayServices; - SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); - if (req.settings.allow_app_hash) { - preferences.edit().putString("sms_hash", BuildVars.SMS_HASH).commit(); - } else { - preferences.edit().remove("sms_hash").commit(); - } - if (req.settings.allow_flashcall) { - try { - @SuppressLint("HardwareIds") String number = tm.getLine1Number(); - if (!TextUtils.isEmpty(number)) { - req.settings.current_number = PhoneNumberUtils.compare(phone, number); - if (!req.settings.current_number) { - req.settings.allow_flashcall = false; - } - } else { - req.settings.current_number = false; - } - } catch (Exception e) { - req.settings.allow_flashcall = false; - FileLog.e(e); - } - } - - final Bundle params = new Bundle(); - params.putString("phone", "+" + codeField.getText() + " " + phoneField.getText()); - try { - params.putString("ephone", "+" + PhoneFormat.stripExceptNumbers(codeField.getText().toString()) + " " + PhoneFormat.stripExceptNumbers(phoneField.getText().toString())); - } catch (Exception e) { - FileLog.e(e); - params.putString("ephone", "+" + phone); - } - params.putString("phoneFormated", phone); - nextPressed = true; - needShowProgress(); - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { - nextPressed = false; - if (error == null) { - fillNextCodeParams(params, (TLRPC.TL_auth_sentCode) response); - } else { - AlertsCreator.processError(currentAccount, error, ChangePhoneActivity.this, req, params.getString("phone")); - } - needHideProgress(); - }), ConnectionsManager.RequestFlagFailOnServerErrors); - } - - @Override - public void onShow() { - super.onShow(); - if (phoneField != null) { - if (codeField.length() != 0) { - AndroidUtilities.showKeyboard(phoneField); - phoneField.requestFocus(); - phoneField.setSelection(phoneField.length()); - } else { - AndroidUtilities.showKeyboard(codeField); - codeField.requestFocus(); - } - } - } - - @Override - public String getHeaderName() { - return LocaleController.getString("ChangePhoneNewNumber", R.string.ChangePhoneNewNumber); - } - } - - public class LoginActivitySmsView extends SlideView implements NotificationCenter.NotificationCenterDelegate { - - private String phone; - private String phoneHash; - private String requestPhone; - private String emailPhone; - private LinearLayout codeFieldContainer; - private EditTextBoldCursor[] codeField; - private TextView confirmTextView; - private TextView titleTextView; - private ImageView blackImageView; - private RLottieImageView blueImageView; - private TextView timeText; - private TextView problemText; - private Bundle currentParams; - private ProgressView progressView; - - RLottieDrawable hintDrawable; - - private Timer timeTimer; - private Timer codeTimer; - private final Object timerSync = new Object(); - private int time = 60000; - private int codeTime = 15000; - private double lastCurrentTime; - private double lastCodeTime; - private boolean ignoreOnTextChange; - private boolean waitingForEvent; - private boolean nextPressed; - private String lastError = ""; - private int currentType; - private int nextType; - private String pattern = "*"; - private int length; - private int timeout; - - public LoginActivitySmsView(Context context, final int type) { - super(context); - - currentType = type; - setOrientation(VERTICAL); - - confirmTextView = new TextView(context); - confirmTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText6)); - confirmTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - confirmTextView.setLineSpacing(AndroidUtilities.dp(2), 1.0f); - - titleTextView = new TextView(context); - titleTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - titleTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); - titleTextView.setLineSpacing(AndroidUtilities.dp(2), 1.0f); - titleTextView.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); - - if (currentType == 3) { - confirmTextView.setGravity(Gravity.TOP | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); - FrameLayout frameLayout = new FrameLayout(context); - addView(frameLayout, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); - - ImageView imageView = new ImageView(context); - imageView.setImageResource(R.drawable.phone_activate); - if (LocaleController.isRTL) { - frameLayout.addView(imageView, LayoutHelper.createFrame(64, 76, Gravity.LEFT | Gravity.CENTER_VERTICAL, 2, 2, 0, 0)); - frameLayout.addView(confirmTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 64 + 18, 0, 0, 0)); - } else { - frameLayout.addView(confirmTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 0, 0, 64 + 18, 0)); - frameLayout.addView(imageView, LayoutHelper.createFrame(64, 76, Gravity.RIGHT | Gravity.CENTER_VERTICAL, 0, 2, 0, 2)); - } - } else { - confirmTextView.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); - - FrameLayout frameLayout = new FrameLayout(context); - addView(frameLayout, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.CENTER_HORIZONTAL)); - - if (currentType == 1) { - blackImageView = new ImageView(context); - blackImageView.setImageResource(R.drawable.sms_devices); - blackImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText), PorterDuff.Mode.MULTIPLY)); - frameLayout.addView(blackImageView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 0, 0, 0, 0)); - - blueImageView = new RLottieImageView(context); - blueImageView.setImageResource(R.drawable.sms_bubble); - blueImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chats_actionBackground), PorterDuff.Mode.MULTIPLY)); - frameLayout.addView(blueImageView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 0, 0, 0, 0)); - - titleTextView.setText(LocaleController.getString("SentAppCodeTitle", R.string.SentAppCodeTitle)); - } else { - blueImageView = new RLottieImageView(context); - hintDrawable = new RLottieDrawable(R.raw.sms_incoming_info, "" + R.raw.sms_incoming_info, AndroidUtilities.dp(64), AndroidUtilities.dp(64), true, null); - hintDrawable.setLayerColor("Bubble.**", Theme.getColor(Theme.key_chats_actionBackground)); - hintDrawable.setLayerColor("Phone.**", Theme.getColor(Theme.key_chats_actionBackground)); - blueImageView.setAnimation(hintDrawable); - - frameLayout.addView(blueImageView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 0, 0, 0, 0)); - - titleTextView.setText(LocaleController.getString("SentSmsCodeTitle", R.string.SentSmsCodeTitle)); - } - addView(titleTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, 18, 0, 0)); - addView(confirmTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, 17, 0, 0)); - } - - codeFieldContainer = new LinearLayout(context); - codeFieldContainer.setOrientation(HORIZONTAL); - addView(codeFieldContainer, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 36, Gravity.CENTER_HORIZONTAL)); - if (currentType == 3) { - codeFieldContainer.setVisibility(GONE); - } - - timeText = new TextView(context) { - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(100), MeasureSpec.AT_MOST)); - } - }; - timeText.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText6)); - timeText.setLineSpacing(AndroidUtilities.dp(2), 1.0f); - if (currentType == 3) { - timeText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - addView(timeText, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); - - progressView = new ProgressView(context); - timeText.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); - addView(progressView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 3, 0, 12, 0, 0)); - } else { - timeText.setPadding(0, AndroidUtilities.dp(2), 0, AndroidUtilities.dp(10)); - timeText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); - timeText.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); - addView(timeText, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.CENTER_HORIZONTAL)); - } - - problemText = new TextView(context) { - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(100), MeasureSpec.AT_MOST)); - } - }; - problemText.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText4)); - problemText.setLineSpacing(AndroidUtilities.dp(2), 1.0f); - problemText.setPadding(0, AndroidUtilities.dp(2), 0, AndroidUtilities.dp(10)); - problemText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); - problemText.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP); - if (currentType == 1) { - problemText.setText(LocaleController.getString("DidNotGetTheCodeSms", R.string.DidNotGetTheCodeSms)); - } else { - problemText.setText(LocaleController.getString("DidNotGetTheCode", R.string.DidNotGetTheCode)); - } - addView(problemText, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP)); - problemText.setOnClickListener(v -> { - if (nextPressed) { - return; - } - boolean email = nextType == 4 && currentType == 2 || nextType == 0; - if (!email) { - resendCode(); - } else { - try { - PackageInfo pInfo = ApplicationLoader.applicationContext.getPackageManager().getPackageInfo(ApplicationLoader.applicationContext.getPackageName(), 0); - String version = String.format(Locale.US, "%s (%d)", pInfo.versionName, pInfo.versionCode); - - Intent mailer = new Intent(Intent.ACTION_SENDTO); - mailer.setData(Uri.parse("mailto:")); - mailer.putExtra(Intent.EXTRA_EMAIL, new String[]{"sms@telegram.org"}); - mailer.putExtra(Intent.EXTRA_SUBJECT, "Android registration/login issue " + version + " " + emailPhone); - mailer.putExtra(Intent.EXTRA_TEXT, "Phone: " + requestPhone + "\nApp version: " + version + "\nOS version: SDK " + Build.VERSION.SDK_INT + "\nDevice Name: " + Build.MANUFACTURER + Build.MODEL + "\nLocale: " + Locale.getDefault() + "\nError: " + lastError); - getContext().startActivity(Intent.createChooser(mailer, "Send email...")); - } catch (Exception e) { - AlertsCreator.showSimpleAlert(ChangePhoneActivity.this, LocaleController.getString("NoMailInstalled", R.string.NoMailInstalled)); - } - } - }); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - if (currentType != 3 && blueImageView != null) { - int innerHeight = blueImageView.getMeasuredHeight() + titleTextView.getMeasuredHeight() + confirmTextView.getMeasuredHeight() + AndroidUtilities.dp(18 + 17); - int requiredHeight = AndroidUtilities.dp(80); - int maxHeight = AndroidUtilities.dp(291); - if (scrollHeight - innerHeight < requiredHeight) { - setMeasuredDimension(getMeasuredWidth(), innerHeight + requiredHeight); - } else { - setMeasuredDimension(getMeasuredWidth(), Math.min(scrollHeight, maxHeight)); - } - } - } - - @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - super.onLayout(changed, l, t, r, b); - if (currentType != 3 && blueImageView != null) { - int bottom = confirmTextView.getBottom(); - int height = getMeasuredHeight() - bottom; - - int h; - if (problemText.getVisibility() == VISIBLE) { - h = problemText.getMeasuredHeight(); - t = bottom + height - h; - problemText.layout(problemText.getLeft(), t, problemText.getRight(), t + h); - } else if (timeText.getVisibility() == VISIBLE) { - h = timeText.getMeasuredHeight(); - t = bottom + height - h; - timeText.layout(timeText.getLeft(), t, timeText.getRight(), t + h); - } else { - t = bottom + height; - } - - height = t - bottom; - h = codeFieldContainer.getMeasuredHeight(); - t = (height - h) / 2 + bottom; - codeFieldContainer.layout(codeFieldContainer.getLeft(), t, codeFieldContainer.getRight(), t + h); - } - } - - private void resendCode() { - final Bundle params = new Bundle(); - params.putString("phone", phone); - params.putString("ephone", emailPhone); - params.putString("phoneFormated", requestPhone); - - nextPressed = true; - needShowProgress(); - - final TLRPC.TL_auth_resendCode req = new TLRPC.TL_auth_resendCode(); - req.phone_number = requestPhone; - req.phone_code_hash = phoneHash; - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { - nextPressed = false; - if (error == null) { - fillNextCodeParams(params, (TLRPC.TL_auth_sentCode) response); - } else { - AlertDialog dialog = (AlertDialog) AlertsCreator.processError(currentAccount, error, ChangePhoneActivity.this, req); - if (dialog != null && error.text.contains("PHONE_CODE_EXPIRED")) { - dialog.setPositiveButtonListener((dialog1, which) -> { - onBackPressed(true); - finishFragment(); - }); - } - } - needHideProgress(); - }), ConnectionsManager.RequestFlagFailOnServerErrors); - } - - @Override - public String getHeaderName() { - if (currentType == 1) { - return phone; - } else { - return LocaleController.getString("YourCode", R.string.YourCode); - } - } - - @Override - public boolean needBackButton() { - return true; - } - - @Override - public void onCancelPressed() { - nextPressed = false; - } - - @Override - public void setParams(Bundle params, boolean restore) { - if (params == null) { - return; - } - waitingForEvent = true; - if (currentType == 2) { - AndroidUtilities.setWaitingForSms(true); - NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.didReceiveSmsCode); - } else if (currentType == 3) { - AndroidUtilities.setWaitingForCall(true); - NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.didReceiveCall); - } - - currentParams = params; - phone = params.getString("phone"); - emailPhone = params.getString("ephone"); - requestPhone = params.getString("phoneFormated"); - phoneHash = params.getString("phoneHash"); - timeout = time = params.getInt("timeout"); - nextType = params.getInt("nextType"); - pattern = params.getString("pattern"); - length = params.getInt("length"); - if (length == 0) { - length = 5; - } - - if (codeField == null || codeField.length != length) { - codeField = new EditTextBoldCursor[length]; - for (int a = 0; a < length; a++) { - final int num = a; - codeField[a] = new EditTextBoldCursor(getContext()); - codeField[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - codeField[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - codeField[a].setCursorSize(AndroidUtilities.dp(20)); - codeField[a].setCursorWidth(1.5f); - - Drawable pressedDrawable = getResources().getDrawable(R.drawable.search_dark_activated).mutate(); - pressedDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteInputFieldActivated), PorterDuff.Mode.MULTIPLY)); - - codeField[a].setBackgroundDrawable(pressedDrawable); - codeField[a].setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI); - codeField[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); - codeField[a].setMaxLines(1); - codeField[a].setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - codeField[a].setPadding(0, 0, 0, 0); - codeField[a].setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP); - if (currentType == 3) { - codeField[a].setEnabled(false); - codeField[a].setInputType(InputType.TYPE_NULL); - codeField[a].setVisibility(GONE); - } else { - codeField[a].setInputType(InputType.TYPE_CLASS_PHONE); - } - codeFieldContainer.addView(codeField[a], LayoutHelper.createLinear(34, 36, Gravity.CENTER_HORIZONTAL, 0, 0, a != length - 1 ? 7 : 0, 0)); - codeField[a].addTextChangedListener(new TextWatcher() { - - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (ignoreOnTextChange) { - return; - } - int len = s.length(); - if (len >= 1) { - if (len > 1) { - String text = s.toString(); - ignoreOnTextChange = true; - for (int a = 0; a < Math.min(length - num, len); a++) { - if (a == 0) { - s.replace(0, len, text.substring(a, a + 1)); - } else { - codeField[num + a].setText(text.substring(a, a + 1)); - } - } - ignoreOnTextChange = false; - } - - if (num != length - 1) { - codeField[num + 1].setSelection(codeField[num + 1].length()); - codeField[num + 1].requestFocus(); - } - if ((num == length - 1 || num == length - 2 && len >= 2) && getCode().length() == length) { - onNextPressed(null); - } - } - } - }); - codeField[a].setOnKeyListener((v, keyCode, event) -> { - if (keyCode == KeyEvent.KEYCODE_DEL && codeField[num].length() == 0 && num > 0) { - codeField[num - 1].setSelection(codeField[num - 1].length()); - codeField[num - 1].requestFocus(); - codeField[num - 1].dispatchKeyEvent(event); - return true; - } - return false; - }); - codeField[a].setOnEditorActionListener((textView, i, keyEvent) -> { - if (i == EditorInfo.IME_ACTION_NEXT) { - onNextPressed(null); - return true; - } - return false; - }); - } - } else { - for (int a = 0; a < codeField.length; a++) { - codeField[a].setText(""); - } - } - - if (progressView != null) { - progressView.setVisibility(nextType != 0 ? VISIBLE : GONE); - } - - if (phone == null) { - return; - } - - String number = PhoneFormat.getInstance().format(phone); - CharSequence str = ""; - if (currentType == 1) { - str = AndroidUtilities.replaceTags(LocaleController.getString("SentAppCode", R.string.SentAppCode)); - } else if (currentType == 2) { - str = AndroidUtilities.replaceTags(LocaleController.formatString("SentSmsCode", R.string.SentSmsCode, LocaleController.addNbsp(number))); - } else if (currentType == 3) { - str = AndroidUtilities.replaceTags(LocaleController.formatString("SentCallCode", R.string.SentCallCode, LocaleController.addNbsp(number))); - } else if (currentType == 4) { - str = AndroidUtilities.replaceTags(LocaleController.formatString("SentCallOnly", R.string.SentCallOnly, LocaleController.addNbsp(number))); - } - confirmTextView.setText(str); - - if (currentType != 3) { - AndroidUtilities.showKeyboard(codeField[0]); - codeField[0].requestFocus(); - } else { - AndroidUtilities.hideKeyboard(codeField[0]); - } - - destroyTimer(); - destroyCodeTimer(); - - lastCurrentTime = System.currentTimeMillis(); - if (currentType == 1) { - problemText.setVisibility(VISIBLE); - timeText.setVisibility(GONE); - } else if (currentType == 3 && (nextType == 4 || nextType == 2)) { - problemText.setVisibility(GONE); - timeText.setVisibility(VISIBLE); - if (nextType == 4) { - timeText.setText(LocaleController.formatString("CallText", R.string.CallText, 1, 0)); - } else if (nextType == 2) { - timeText.setText(LocaleController.formatString("SmsText", R.string.SmsText, 1, 0)); - } - createTimer(); - } else if (currentType == 2 && (nextType == 4 || nextType == 3)) { - timeText.setText(LocaleController.formatString("CallText", R.string.CallText, 2, 0)); - problemText.setVisibility(time < 1000 ? VISIBLE : GONE); - timeText.setVisibility(time < 1000 ? GONE : VISIBLE); - createTimer(); - } else if (currentType == 4 && nextType == 2) { - timeText.setText(LocaleController.formatString("SmsText", R.string.SmsText, 2, 0)); - problemText.setVisibility(time < 1000 ? VISIBLE : GONE); - timeText.setVisibility(time < 1000 ? GONE : VISIBLE); - createTimer(); - } else { - timeText.setVisibility(GONE); - problemText.setVisibility(GONE); - createCodeTimer(); - } - } - - private void createCodeTimer() { - if (codeTimer != null) { - return; - } - codeTime = 15000; - codeTimer = new Timer(); - lastCodeTime = System.currentTimeMillis(); - codeTimer.schedule(new TimerTask() { - @Override - public void run() { - AndroidUtilities.runOnUIThread(() -> { - double currentTime = System.currentTimeMillis(); - double diff = currentTime - lastCodeTime; - lastCodeTime = currentTime; - codeTime -= diff; - if (codeTime <= 1000) { - problemText.setVisibility(VISIBLE); - timeText.setVisibility(GONE); - destroyCodeTimer(); - } - }); - } - }, 0, 1000); - } - - private void destroyCodeTimer() { - try { - synchronized (timerSync) { - if (codeTimer != null) { - codeTimer.cancel(); - codeTimer = null; - } - } - } catch (Exception e) { - FileLog.e(e); - } - } - - private void createTimer() { - if (timeTimer != null) { - return; - } - timeTimer = new Timer(); - timeTimer.schedule(new TimerTask() { - @Override - public void run() { - if (timeTimer == null) { - return; - } - AndroidUtilities.runOnUIThread(() -> { - final double currentTime = System.currentTimeMillis(); - double diff = currentTime - lastCurrentTime; - time -= diff; - lastCurrentTime = currentTime; - if (time >= 1000) { - int minutes = time / 1000 / 60; - int seconds = time / 1000 - minutes * 60; - if (nextType == 4 || nextType == 3) { - timeText.setText(LocaleController.formatString("CallText", R.string.CallText, minutes, seconds)); - } else if (nextType == 2) { - timeText.setText(LocaleController.formatString("SmsText", R.string.SmsText, minutes, seconds)); - } - if (progressView != null) { - progressView.setProgress(1.0f - (float) time / (float) timeout); - } - } else { - if (progressView != null) { - progressView.setProgress(1.0f); - } - destroyTimer(); - if (currentType == 3) { - AndroidUtilities.setWaitingForCall(false); - NotificationCenter.getGlobalInstance().removeObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveCall); - waitingForEvent = false; - destroyCodeTimer(); - resendCode(); - } else if (currentType == 2 || currentType == 4) { - if (nextType == 4 || nextType == 2) { - if (nextType == 4) { - timeText.setText(LocaleController.getString("Calling", R.string.Calling)); - } else { - timeText.setText(LocaleController.getString("SendingSms", R.string.SendingSms)); - } - createCodeTimer(); - TLRPC.TL_auth_resendCode req = new TLRPC.TL_auth_resendCode(); - req.phone_number = requestPhone; - req.phone_code_hash = phoneHash; - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> { - if (error != null && error.text != null) { - AndroidUtilities.runOnUIThread(() -> lastError = error.text); - } - }, ConnectionsManager.RequestFlagFailOnServerErrors); - } else if (nextType == 3) { - AndroidUtilities.setWaitingForSms(false); - NotificationCenter.getGlobalInstance().removeObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveSmsCode); - waitingForEvent = false; - destroyCodeTimer(); - resendCode(); - } - } - } - }); - } - }, 0, 1000); - } - - private void destroyTimer() { - try { - synchronized (timerSync) { - if (timeTimer != null) { - timeTimer.cancel(); - timeTimer = null; - } - } - } catch (Exception e) { - FileLog.e(e); - } - } - - private String getCode() { - if (codeField == null) { - return ""; - } - StringBuilder codeBuilder = new StringBuilder(); - for (int a = 0; a < codeField.length; a++) { - codeBuilder.append(PhoneFormat.stripExceptNumbers(codeField[a].getText().toString())); - } - return codeBuilder.toString(); - } - - @Override - public void onNextPressed(String code) { - if (nextPressed) { - return; - } - code = getCode(); - if (TextUtils.isEmpty(code)) { - AndroidUtilities.shakeView(codeFieldContainer, 2, 0); - return; - } - nextPressed = true; - if (currentType == 2) { - AndroidUtilities.setWaitingForSms(false); - NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.didReceiveSmsCode); - } else if (currentType == 3) { - AndroidUtilities.setWaitingForCall(false); - NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.didReceiveCall); - } - waitingForEvent = false; - final TLRPC.TL_account_changePhone req = new TLRPC.TL_account_changePhone(); - req.phone_number = requestPhone; - req.phone_code = code; - req.phone_code_hash = phoneHash; - destroyTimer(); - needShowProgress(); - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { - needHideProgress(); - nextPressed = false; - if (error == null) { - TLRPC.User user = (TLRPC.User) response; - destroyTimer(); - destroyCodeTimer(); - UserConfig.getInstance(currentAccount).setCurrentUser(user); - UserConfig.getInstance(currentAccount).saveConfig(true); - ArrayList users = new ArrayList<>(); - users.add(user); - MessagesStorage.getInstance(currentAccount).putUsersAndChats(users, null, true, true); - MessagesController.getInstance(currentAccount).putUser(user, false); - finishFragment(); - NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.mainUserInfoChanged); - getMessagesController().removeSuggestion(0, "VALIDATE_PHONE_NUMBER"); - } else { - lastError = error.text; - if (currentType == 3 && (nextType == 4 || nextType == 2) || currentType == 2 && (nextType == 4 || nextType == 3) || currentType == 4 && nextType == 2) { - createTimer(); - } - if (currentType == 2) { - AndroidUtilities.setWaitingForSms(true); - NotificationCenter.getGlobalInstance().addObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveSmsCode); - } else if (currentType == 3) { - AndroidUtilities.setWaitingForCall(true); - NotificationCenter.getGlobalInstance().addObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveCall); - } - waitingForEvent = true; - if (currentType != 3) { - AlertsCreator.processError(currentAccount, error, ChangePhoneActivity.this, req); - } - if (error.text.contains("PHONE_CODE_EMPTY") || error.text.contains("PHONE_CODE_INVALID")) { - for (int a = 0; a < codeField.length; a++) { - codeField[a].setText(""); - } - codeField[0].requestFocus(); - } else if (error.text.contains("PHONE_CODE_EXPIRED")) { - onBackPressed(true); - setPage(0, true, null, true); - } - } - }), ConnectionsManager.RequestFlagFailOnServerErrors); - } - - @Override - public boolean onBackPressed(boolean force) { - if (!force) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setMessage(LocaleController.getString("StopVerification", R.string.StopVerification)); - builder.setPositiveButton(LocaleController.getString("Continue", R.string.Continue), null); - builder.setNegativeButton(LocaleController.getString("Stop", R.string.Stop), (dialogInterface, i) -> { - onBackPressed(true); - setPage(0, true, null, true); - }); - showDialog(builder.create()); - return false; - } - TLRPC.TL_auth_cancelCode req = new TLRPC.TL_auth_cancelCode(); - req.phone_number = requestPhone; - req.phone_code_hash = phoneHash; - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> { - - }, ConnectionsManager.RequestFlagFailOnServerErrors | ConnectionsManager.RequestFlagWithoutLogin); - - destroyTimer(); - destroyCodeTimer(); - currentParams = null; - if (currentType == 2) { - AndroidUtilities.setWaitingForSms(false); - NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.didReceiveSmsCode); - } else if (currentType == 3) { - AndroidUtilities.setWaitingForCall(false); - NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.didReceiveCall); - } - waitingForEvent = false; - return true; - } - - @Override - public void onDestroyActivity() { - super.onDestroyActivity(); - if (currentType == 2) { - AndroidUtilities.setWaitingForSms(false); - NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.didReceiveSmsCode); - } else if (currentType == 3) { - AndroidUtilities.setWaitingForCall(false); - NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.didReceiveCall); - } - waitingForEvent = false; - destroyTimer(); - destroyCodeTimer(); - } - - @Override - public void onShow() { - super.onShow(); - if (currentType == 3) { - return; - } - if (hintDrawable != null) { - hintDrawable.setCurrentFrame(0); - } - AndroidUtilities.runOnUIThread(() -> { - if (codeField != null) { - for (int a = codeField.length - 1; a >= 0; a--) { - if (a == 0 || codeField[a].length() != 0) { - codeField[a].requestFocus(); - codeField[a].setSelection(codeField[a].length()); - AndroidUtilities.showKeyboard(codeField[a]); - break; - } - } - } - if (hintDrawable != null) { - hintDrawable.start(); - } - }, 100); - } - - @Override - public void didReceivedNotification(int id, int account, Object... args) { - if (!waitingForEvent || codeField == null) { - return; - } - if (id == NotificationCenter.didReceiveSmsCode) { - codeField[0].setText("" + args[0]); - onNextPressed(null); - } else if (id == NotificationCenter.didReceiveCall) { - String num = "" + args[0]; - if (!AndroidUtilities.checkPhonePattern(pattern, num)) { - return; - } - ignoreOnTextChange = true; - codeField[0].setText(num); - ignoreOnTextChange = false; - onNextPressed(null); - } - } - } - - @Override - public ArrayList getThemeDescriptions() { - PhoneView phoneView = (PhoneView) views[0]; - LoginActivitySmsView smsView1 = (LoginActivitySmsView) views[1]; - LoginActivitySmsView smsView2 = (LoginActivitySmsView) views[2]; - LoginActivitySmsView smsView3 = (LoginActivitySmsView) views[3]; - LoginActivitySmsView smsView4 = (LoginActivitySmsView) views[4]; - - ArrayList arrayList = new ArrayList<>(); - - ThemeDescription.ThemeDescriptionDelegate descriptionDelegate = () -> { - for (int i = 0; i < views.length; i++) { - if (views[i] instanceof LoginActivity.LoginActivitySmsView) { - LoginActivity.LoginActivitySmsView smsView = (LoginActivity.LoginActivitySmsView) views[i]; - if (smsView.hintDrawable != null) { - smsView.hintDrawable.setLayerColor("Bubble.**", Theme.getColor(Theme.key_chats_actionBackground)); - smsView.hintDrawable.setLayerColor("Phone.**", Theme.getColor(Theme.key_chats_actionBackground)); - } - } - } - }; - - arrayList.add(new ThemeDescription(fragmentView, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_windowBackgroundWhite)); - - arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_actionBarDefault)); - arrayList.add(new ThemeDescription(fragmentView, ThemeDescription.FLAG_LISTGLOWCOLOR, null, null, null, null, Theme.key_actionBarDefault)); - arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_ITEMSCOLOR, null, null, null, null, Theme.key_actionBarDefaultIcon)); - arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_TITLECOLOR, null, null, null, null, Theme.key_actionBarDefaultTitle)); - arrayList.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_SELECTORCOLOR, null, null, null, null, Theme.key_actionBarDefaultSelector)); - - arrayList.add(new ThemeDescription(phoneView.countryButton, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(phoneView.countryButton, ThemeDescription.FLAG_BACKGROUNDFILTER | ThemeDescription.FLAG_DRAWABLESELECTEDSTATE, null, null, null, null, Theme.key_listSelector)); - arrayList.add(new ThemeDescription(phoneView.view, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_windowBackgroundWhiteGrayLine)); - arrayList.add(new ThemeDescription(phoneView.textView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(phoneView.codeField, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(phoneView.codeField, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_windowBackgroundWhiteInputField)); - arrayList.add(new ThemeDescription(phoneView.codeField, ThemeDescription.FLAG_BACKGROUNDFILTER | ThemeDescription.FLAG_DRAWABLESELECTEDSTATE, null, null, null, null, Theme.key_windowBackgroundWhiteInputFieldActivated)); - arrayList.add(new ThemeDescription(phoneView.phoneField, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(phoneView.phoneField, ThemeDescription.FLAG_HINTTEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteHintText)); - arrayList.add(new ThemeDescription(phoneView.phoneField, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_windowBackgroundWhiteInputField)); - arrayList.add(new ThemeDescription(phoneView.phoneField, ThemeDescription.FLAG_BACKGROUNDFILTER | ThemeDescription.FLAG_DRAWABLESELECTEDSTATE, null, null, null, null, Theme.key_windowBackgroundWhiteInputFieldActivated)); - arrayList.add(new ThemeDescription(phoneView.textView2, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText6)); - - arrayList.add(new ThemeDescription(smsView1.confirmTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText6)); - arrayList.add(new ThemeDescription(smsView1.titleTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - if (smsView1.codeField != null) { - for (int a = 0; a < smsView1.codeField.length; a++) { - arrayList.add(new ThemeDescription(smsView1.codeField[a], ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(smsView1.codeField[a], ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_windowBackgroundWhiteInputFieldActivated)); - } - } - arrayList.add(new ThemeDescription(smsView1.timeText, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText6)); - arrayList.add(new ThemeDescription(smsView1.problemText, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlueText4)); - arrayList.add(new ThemeDescription(smsView1.progressView, 0, new Class[]{ProgressView.class}, new String[]{"paint"}, null, null, null, Theme.key_login_progressInner)); - arrayList.add(new ThemeDescription(smsView1.progressView, 0, new Class[]{ProgressView.class}, new String[]{"paint"}, null, null, null, Theme.key_login_progressOuter)); - arrayList.add(new ThemeDescription(smsView1.blackImageView, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(smsView1.blueImageView, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_chats_actionBackground)); - - arrayList.add(new ThemeDescription(smsView2.confirmTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText6)); - arrayList.add(new ThemeDescription(smsView2.titleTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - if (smsView2.codeField != null) { - for (int a = 0; a < smsView2.codeField.length; a++) { - arrayList.add(new ThemeDescription(smsView2.codeField[a], ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(smsView2.codeField[a], ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_windowBackgroundWhiteInputFieldActivated)); - } - } - arrayList.add(new ThemeDescription(smsView2.timeText, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText6)); - arrayList.add(new ThemeDescription(smsView2.problemText, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlueText4)); - arrayList.add(new ThemeDescription(smsView2.progressView, 0, new Class[]{ProgressView.class}, new String[]{"paint"}, null, null, null, Theme.key_login_progressInner)); - arrayList.add(new ThemeDescription(smsView2.progressView, 0, new Class[]{ProgressView.class}, new String[]{"paint"}, null, null, null, Theme.key_login_progressOuter)); - arrayList.add(new ThemeDescription(smsView2.blackImageView, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(smsView2.blueImageView, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_chats_actionBackground)); - - arrayList.add(new ThemeDescription(smsView3.confirmTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText6)); - arrayList.add(new ThemeDescription(smsView3.titleTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - if (smsView3.codeField != null) { - for (int a = 0; a < smsView3.codeField.length; a++) { - arrayList.add(new ThemeDescription(smsView3.codeField[a], ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(smsView3.codeField[a], ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_windowBackgroundWhiteInputFieldActivated)); - } - } - arrayList.add(new ThemeDescription(smsView3.timeText, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText6)); - arrayList.add(new ThemeDescription(smsView3.problemText, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlueText4)); - arrayList.add(new ThemeDescription(smsView3.progressView, 0, new Class[]{ProgressView.class}, new String[]{"paint"}, null, null, null, Theme.key_login_progressInner)); - arrayList.add(new ThemeDescription(smsView3.progressView, 0, new Class[]{ProgressView.class}, new String[]{"paint"}, null, null, null, Theme.key_login_progressOuter)); - arrayList.add(new ThemeDescription(smsView3.blackImageView, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(smsView3.blueImageView, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_chats_actionBackground)); - - arrayList.add(new ThemeDescription(smsView4.confirmTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText6)); - arrayList.add(new ThemeDescription(smsView4.titleTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - if (smsView4.codeField != null) { - for (int a = 0; a < smsView4.codeField.length; a++) { - arrayList.add(new ThemeDescription(smsView4.codeField[a], ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(smsView4.codeField[a], ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_windowBackgroundWhiteInputFieldActivated)); - } - } - arrayList.add(new ThemeDescription(smsView4.timeText, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText6)); - arrayList.add(new ThemeDescription(smsView4.problemText, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlueText4)); - arrayList.add(new ThemeDescription(smsView4.progressView, 0, new Class[]{ProgressView.class}, new String[]{"paint"}, null, null, null, Theme.key_login_progressInner)); - arrayList.add(new ThemeDescription(smsView4.progressView, 0, new Class[]{ProgressView.class}, new String[]{"paint"}, null, null, null, Theme.key_login_progressOuter)); - arrayList.add(new ThemeDescription(smsView4.blackImageView, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - arrayList.add(new ThemeDescription(smsView4.blueImageView, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_chats_actionBackground)); - arrayList.add(new ThemeDescription(smsView4.blueImageView, 0, null, null, null, descriptionDelegate, Theme.key_chats_actionBackground)); - - return arrayList; - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java index 963f22993..40bbcfb9e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java @@ -131,7 +131,7 @@ public class ChangeUsernameActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(UserConfig.getInstance(currentAccount).getClientUserId()); if (user == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChannelAdminLogActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChannelAdminLogActivity.java index 29d691210..002c8e639 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChannelAdminLogActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChannelAdminLogActivity.java @@ -1011,7 +1011,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio bottomOverlayChat.addView(bottomOverlayChatText, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); bottomOverlayImage = new ImageView(context); - bottomOverlayImage.setImageResource(R.drawable.log_info); + bottomOverlayImage.setImageResource(R.drawable.msg_help); bottomOverlayImage.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_fieldOverlayText), PorterDuff.Mode.MULTIPLY)); bottomOverlayImage.setScaleType(ImageView.ScaleType.CENTER); bottomOverlayChat.addView(bottomOverlayImage, LayoutHelper.createFrame(48, 48, Gravity.RIGHT | Gravity.TOP, 3, 0, 0, 0)); @@ -1384,7 +1384,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + path = getFileLoader().getPathToMessage(selectedObject.messageOwner).toString(); } if (selectedObject.type == 3 || selectedObject.type == 1) { if (Build.VERSION.SDK_INT >= 23 && (Build.VERSION.SDK_INT <= 28 || BuildVars.NO_SCOPED_STORAGE) && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { @@ -1405,7 +1405,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio } } if (locFile == null) { - File f = FileLoader.getPathToMessage(selectedObject.messageOwner); + File f = getFileLoader().getPathToMessage(selectedObject.messageOwner); if (f.exists()) { locFile = f; } @@ -1468,7 +1468,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + path = getFileLoader().getPathToMessage(selectedObject.messageOwner).toString(); } Intent intent = new Intent(Intent.ACTION_SEND); intent.setType(selectedObject.getDocument().mime_type); @@ -1494,7 +1494,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + path = getFileLoader().getPathToMessage(selectedObject.messageOwner).toString(); } if (Build.VERSION.SDK_INT >= 23 && (Build.VERSION.SDK_INT <= 28 || BuildVars.NO_SCOPED_STORAGE) && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { getParentActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 4); @@ -1526,7 +1526,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + path = getFileLoader().getPathToMessage(selectedObject.messageOwner).toString(); } MediaController.saveFile(path, getParentActivity(), selectedObject.isMusic() ? 3 : 2, fileName, selectedObject.getDocument() != null ? selectedObject.getDocument().mime_type : ""); break; @@ -1596,7 +1596,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio } } if (!canSave) { - File f = FileLoader.getPathToMessage(messageObject.messageOwner); + File f = getFileLoader().getPathToMessage(messageObject.messageOwner); if (f.exists()) { canSave = true; } @@ -2254,7 +2254,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio f = new File(message.messageOwner.attachPath); } if (f == null || !f.exists()) { - f = FileLoader.getPathToMessage(message.messageOwner); + f = getFileLoader().getPathToMessage(message.messageOwner); } Intent intent = new Intent(Intent.ACTION_VIEW); if (Build.VERSION.SDK_INT >= 24) { @@ -2284,7 +2284,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio } } if (locFile == null) { - File f = FileLoader.getPathToMessage(message.messageOwner); + File f = getFileLoader().getPathToMessage(message.messageOwner); if (f.exists()) { locFile = f; } @@ -2908,10 +2908,6 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][0], Theme.chat_photoStatesDrawables[11][0]}, null, Theme.key_chat_inLoaderPhotoIcon)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][1], Theme.chat_photoStatesDrawables[11][1]}, null, Theme.key_chat_inLoaderPhotoSelected)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][1], Theme.chat_photoStatesDrawables[11][1]}, null, Theme.key_chat_inLoaderPhotoIconSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[9][0]}, null, Theme.key_chat_outFileIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[9][1]}, null, Theme.key_chat_outFileSelectedIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[12][0]}, null, Theme.key_chat_inFileIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[12][1]}, null, Theme.key_chat_inFileSelectedIcon)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[0]}, null, Theme.key_chat_inContactBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[0]}, null, Theme.key_chat_inContactIcon)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[1]}, null, Theme.key_chat_outContactBackground)); @@ -2937,9 +2933,6 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio themeDescriptions.add(new ThemeDescription(progressView2, ThemeDescription.FLAG_SERVICEBACKGROUND, null, null, null, null, Theme.key_chat_serviceBackground)); themeDescriptions.add(new ThemeDescription(emptyView, ThemeDescription.FLAG_SERVICEBACKGROUND, null, null, null, null, Theme.key_chat_serviceBackground)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_SERVICEBACKGROUND, new Class[]{ChatLoadingCell.class}, new String[]{"textView"}, null, null, null, Theme.key_chat_serviceBackground)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_PROGRESSBAR, new Class[]{ChatLoadingCell.class}, new String[]{"textView"}, null, null, null, Theme.key_chat_serviceText)); - themeDescriptions.add(new ThemeDescription(avatarContainer != null ? avatarContainer.getTimeItem() : null, 0, null, null, null, null, Theme.key_chat_secretTimerBackground)); themeDescriptions.add(new ThemeDescription(avatarContainer != null ? avatarContainer.getTimeItem() : null, 0, null, null, null, null, Theme.key_chat_secretTimerText)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChannelCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChannelCreateActivity.java index d44a09ffc..523c508ab 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChannelCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChannelCreateActivity.java @@ -12,11 +12,15 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.graphics.Canvas; import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Vibrator; import android.text.Editable; @@ -34,6 +38,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; +import android.widget.ViewAnimator; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; @@ -59,12 +64,16 @@ import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Cells.TextBlockCell; import org.telegram.ui.Cells.TextInfoPrivacyCell; import org.telegram.ui.Components.AvatarDrawable; +import org.telegram.ui.Components.CircularProgressDrawable; +import org.telegram.ui.Components.CrossfadeDrawable; +import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.EditTextEmoji; import org.telegram.ui.Components.ImageUpdater; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.EditTextBoldCursor; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.LinkActionView; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.RLottieImageView; import org.telegram.ui.Components.RadialProgressView; @@ -75,8 +84,8 @@ import java.util.ArrayList; public class ChannelCreateActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, ImageUpdater.ImageUpdaterDelegate { private View doneButton; + private CrossfadeDrawable doneButtonDrawable; private EditTextEmoji nameTextView; - private AlertDialog progressDialog; private ShadowSectionCell sectionCell; private BackupImageView avatarImage; private View avatarOverlay; @@ -130,6 +139,7 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC private boolean createAfterUpload; private boolean donePressed; + private Integer doneRequestId; private final static int done_button = 1; @@ -173,6 +183,10 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC @Override public void onFragmentDestroy() { super.onFragmentDestroy(); + if (doneRequestId != null) { + ConnectionsManager.getInstance(currentAccount).cancelRequest(doneRequestId, true); + doneRequestId = null; + } NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.chatDidCreated); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.chatDidFailCreate); if (imageUpdater != null) { @@ -236,6 +250,45 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC return true; } + private AlertDialog cancelDialog; + private void showDoneCancelDialog() { + if (cancelDialog != null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setMessage(LocaleController.getString("StopLoading", R.string.StopLoading)); + builder.setPositiveButton(LocaleController.getString("WaitMore", R.string.WaitMore), null); + builder.setNegativeButton(LocaleController.getString("Stop", R.string.Stop), (dialogInterface, i) -> { + donePressed = false; + createAfterUpload = false; + if (doneRequestId != null) { + ConnectionsManager.getInstance(currentAccount).cancelRequest(doneRequestId, true); + doneRequestId = null; + } + updateDoneProgress(false); + dialogInterface.dismiss(); + }); + cancelDialog = builder.show(); + } + + private ValueAnimator doneButtonDrawableAnimator; + private void updateDoneProgress(boolean loading) { + if (doneButtonDrawable != null) { + if (doneButtonDrawableAnimator != null) { + doneButtonDrawableAnimator.cancel(); + } + doneButtonDrawableAnimator = ValueAnimator.ofFloat(doneButtonDrawable.getProgress(), loading ? 1f : 0); + doneButtonDrawableAnimator.addUpdateListener(a -> { + doneButtonDrawable.setProgress((float) a.getAnimatedValue()); + doneButtonDrawable.invalidateSelf(); + }); + doneButtonDrawableAnimator.setDuration((long) (200 * Math.abs(doneButtonDrawable.getProgress() - (loading ? 1f : 0)))); + doneButtonDrawableAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT); + doneButtonDrawableAnimator.start(); + } + } + @Override public View createView(Context context) { if (nameTextView != null) { @@ -249,10 +302,18 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC @Override public void onItemClick(int id) { if (id == -1) { + if (donePressed) { + showDoneCancelDialog(); + return; + } finishFragment(); } else if (id == done_button) { if (currentStep == 0) { - if (donePressed || getParentActivity() == null) { + if (getParentActivity() == null) { + return; + } + if (donePressed) { + showDoneCancelDialog(); return; } if (nameTextView.length() == 0) { @@ -264,24 +325,12 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC return; } donePressed = true; + updateDoneProgress(true); if (imageUpdater.isUploadingImage()) { createAfterUpload = true; - progressDialog = new AlertDialog(getParentActivity(), 3); - progressDialog.setOnCancelListener(dialog -> { - createAfterUpload = false; - progressDialog = null; - donePressed = false; - }); - progressDialog.show(); return; } - final int reqId = MessagesController.getInstance(currentAccount).createChat(nameTextView.getText().toString(), new ArrayList<>(), descriptionTextView.getText().toString(), ChatObject.CHAT_TYPE_CHANNEL, false, null, null, ChannelCreateActivity.this); - progressDialog = new AlertDialog(getParentActivity(), 3); - progressDialog.setOnCancelListener(dialog -> { - ConnectionsManager.getInstance(currentAccount).cancelRequest(reqId, true); - donePressed = false; - }); - progressDialog.show(); + doneRequestId = MessagesController.getInstance(currentAccount).createChat(nameTextView.getText().toString(), new ArrayList<>(), descriptionTextView.getText().toString(), ChatObject.CHAT_TYPE_CHANNEL, false, null, null, ChannelCreateActivity.this); } else if (currentStep == 1) { if (!isPrivate) { if (descriptionTextView.length() == 0) { @@ -315,7 +364,10 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); + Drawable checkmark = context.getResources().getDrawable(R.drawable.ic_ab_done).mutate(); + checkmark.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_actionBarDefaultIcon), PorterDuff.Mode.MULTIPLY)); + doneButtonDrawable = new CrossfadeDrawable(checkmark, new CircularProgressDrawable(Theme.getColor(Theme.key_actionBarDefaultIcon))); + doneButton = menu.addItemWithWidth(done_button, doneButtonDrawable, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); if (currentStep == 0) { actionBar.setTitle(LocaleController.getString("NewChannel", R.string.NewChannel)); @@ -485,6 +537,7 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC } } }; + avatarOverlay.setContentDescription(LocaleController.getString("ChatSetPhotoOrVideo", R.string.ChatSetPhotoOrVideo)); frameLayout.addView(avatarOverlay, LayoutHelper.createFrame(64, 64, Gravity.TOP | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), LocaleController.isRTL ? 0 : 16, 12, LocaleController.isRTL ? 16 : 0, 12)); avatarOverlay.setOnClickListener(view -> { imageUpdater.openMenu(avatar != null, () -> { @@ -637,6 +690,10 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC radioButtonCell1.setTextAndValue(LocaleController.getString("ChannelPublic", R.string.ChannelPublic), LocaleController.getString("ChannelPublicInfo", R.string.ChannelPublicInfo), false, !isPrivate); linearLayout2.addView(radioButtonCell1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); radioButtonCell1.setOnClickListener(v -> { + if (!canCreatePublic) { + showPremiumIncreaseLimitDialog(); + return; + } if (!isPrivate) { return; } @@ -669,7 +726,7 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC publicContainer = new LinearLayout(context); publicContainer.setOrientation(LinearLayout.HORIZONTAL); - linkContainer.addView(publicContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36, 17, 7, 17, 0)); + linkContainer.addView(publicContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36, 21, 7, 21, 0)); editText = new EditTextBoldCursor(context); editText.setText(MessagesController.getInstance(currentAccount).linkPrefix + "/"); @@ -853,14 +910,15 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC inputVideoPath = videoPath; videoTimestamp = videoStartTimestamp; if (createAfterUpload) { - try { - if (progressDialog != null && progressDialog.isShowing()) { - progressDialog.dismiss(); - progressDialog = null; + if (cancelDialog != null) { + try { + cancelDialog.dismiss(); + cancelDialog = null; + } catch (Exception e) { + FileLog.e(e); } - } catch (Exception e) { - FileLog.e(e); } + updateDoneProgress(false); donePressed = false; doneButton.performClick(); } @@ -990,18 +1048,21 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC @Override public void didReceivedNotification(int id, int account, Object... args) { if (id == NotificationCenter.chatDidFailCreate) { - if (progressDialog != null) { + if (cancelDialog != null) { try { - progressDialog.dismiss(); + cancelDialog.dismiss(); + cancelDialog = null; } catch (Exception e) { FileLog.e(e); } } + updateDoneProgress(false); donePressed = false; } else if (id == NotificationCenter.chatDidCreated) { - if (progressDialog != null) { + if (cancelDialog != null) { try { - progressDialog.dismiss(); + cancelDialog.dismiss(); + cancelDialog = null; } catch (Exception e) { FileLog.e(e); } @@ -1066,7 +1127,7 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC }, ConnectionsManager.RequestFlagInvokeAfter); }); showDialog(builder.create()); - }); + }, false, 0); adminedChannelCell.setChannel(res.chats.get(a), a == res.chats.size() - 1); adminedChannelCells.add(adminedChannelCell); adminnedChannelsLayout.addView(adminedChannelCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 72)); @@ -1146,7 +1207,7 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC } else { if (error != null && error.text.equals("CHANNELS_ADMIN_PUBLIC_TOO_MUCH")) { canCreatePublic = false; - loadAdminedChannels(); + showPremiumIncreaseLimitDialog(); } else { checkTextView.setText(LocaleController.getString("LinkInUse", R.string.LinkInUse)); } @@ -1182,6 +1243,19 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC showDialog(builder.create()); } + private void showPremiumIncreaseLimitDialog() { + if (getParentActivity() == null) { + return; + } + LimitReachedBottomSheet limitReachedBottomSheet = new LimitReachedBottomSheet(this, getParentActivity(), LimitReachedBottomSheet.TYPE_PUBLIC_LINKS, currentAccount); + limitReachedBottomSheet.parentIsChannel = true; + limitReachedBottomSheet.onSuccessRunnable = () -> { + canCreatePublic = true; + updatePrivatePublic(); + }; + showDialog(limitReachedBottomSheet); + } + @Override public ArrayList getThemeDescriptions() { ArrayList themeDescriptions = new ArrayList<>(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Charts/view_data/ChartHeaderView.java b/TMessagesProj/src/main/java/org/telegram/ui/Charts/view_data/ChartHeaderView.java index a264c6a6b..f2223e2c6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Charts/view_data/ChartHeaderView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Charts/view_data/ChartHeaderView.java @@ -5,7 +5,6 @@ import android.graphics.PorterDuff; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.text.TextPaint; -import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -18,8 +17,8 @@ import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; import org.telegram.ui.ActionBar.Theme; -import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Charts.BaseChartView; +import org.telegram.ui.Components.LayoutHelper; import java.text.SimpleDateFormat; import java.util.Date; @@ -73,7 +72,7 @@ public class ChartHeaderView extends FrameLayout { back.setVisibility(View.GONE); back.setText(LocaleController.getString("ZoomOut", R.string.ZoomOut)); - zoomIcon = ContextCompat.getDrawable(getContext(), R.drawable.stats_zoom); + zoomIcon = ContextCompat.getDrawable(getContext(), R.drawable.msg_zoomout_stats); back.setCompoundDrawablesWithIntrinsicBounds(zoomIcon, null, null, null); back.setCompoundDrawablePadding(AndroidUtilities.dp(4)); back.setPadding(AndroidUtilities.dp(8), AndroidUtilities.dp(4), AndroidUtilities.dp(8), AndroidUtilities.dp(4)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 2db0ab68f..29afc2233 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -61,6 +61,7 @@ import android.text.TextUtils; import android.text.style.CharacterStyle; import android.text.style.ForegroundColorSpan; import android.text.style.URLSpan; +import android.util.Log; import android.util.Property; import android.util.SparseArray; import android.util.SparseIntArray; @@ -72,6 +73,7 @@ import android.view.Menu; import android.view.MotionEvent; import android.view.TextureView; import android.view.View; +import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewOutlineProvider; import android.view.ViewTreeObserver; @@ -94,7 +96,6 @@ import androidx.core.content.FileProvider; import androidx.core.graphics.ColorUtils; import androidx.exifinterface.media.ExifInterface; import androidx.recyclerview.widget.ChatListItemAnimator; -import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManagerFixed; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearSmoothScrollerCustom; @@ -103,6 +104,7 @@ import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.exoplayer2.ui.AspectRatioFrameLayout; +import com.google.zxing.common.detector.MathUtils; import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.messenger.AccountInstance; @@ -159,7 +161,6 @@ import org.telegram.ui.ActionBar.EmojiThemes; import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; -import org.telegram.ui.Adapters.MentionsAdapter; import org.telegram.ui.Adapters.MessagesSearchAdapter; import org.telegram.ui.Adapters.StickersAdapter; import org.telegram.ui.Cells.BotHelpCell; @@ -198,9 +199,11 @@ import org.telegram.ui.Components.ChatNotificationsPopupWrapper; import org.telegram.ui.Components.ChatScrimPopupContainerLayout; import org.telegram.ui.Components.ChatThemeBottomSheet; import org.telegram.ui.Components.ChecksHintView; +import org.telegram.ui.Components.CircularProgressDrawable; import org.telegram.ui.Components.ClippingImageView; import org.telegram.ui.Components.CombinedDrawable; import org.telegram.ui.Components.CounterView; +import org.telegram.ui.Components.CrossfadeDrawable; import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.EditTextBoldCursor; import org.telegram.ui.Components.EditTextCaption; @@ -218,6 +221,7 @@ import org.telegram.ui.Components.InstantCameraView; import org.telegram.ui.Components.InviteMembersBottomSheet; import org.telegram.ui.Components.JoinGroupAlert; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.MentionsContainerView; import org.telegram.ui.Components.MessageBackgroundDrawable; import org.telegram.ui.Components.MotionBackgroundDrawable; import org.telegram.ui.Components.NumberTextView; @@ -225,6 +229,8 @@ import org.telegram.ui.Components.PhonebookShareAlert; import org.telegram.ui.Components.PinnedLineView; import org.telegram.ui.Components.PipRoundVideoView; import org.telegram.ui.Components.PollVotesAlert; +import org.telegram.ui.Components.PopupSwipeBackLayout; +import org.telegram.ui.Components.Premium.PremiumFeatureBottomSheet; import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.RadialProgressView; import org.telegram.ui.Components.ReactedHeaderView; @@ -239,7 +245,6 @@ import org.telegram.ui.Components.ReportAlert; import org.telegram.ui.Components.SearchCounterView; import org.telegram.ui.Components.ShareAlert; import org.telegram.ui.Components.SharedMediaLayout; -import org.telegram.ui.Components.Size; import org.telegram.ui.Components.SizeNotifierFrameLayout; import org.telegram.ui.Components.StickersAlert; import org.telegram.ui.Components.TextSelectionHint; @@ -279,7 +284,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; @SuppressWarnings("unchecked") -public class ChatActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, DialogsActivity.DialogsActivityDelegate, LocationActivity.LocationActivityDelegate, ChatAttachAlertDocumentLayout.DocumentSelectActivityDelegate { +public class +ChatActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, DialogsActivity.DialogsActivityDelegate, LocationActivity.LocationActivityDelegate, ChatAttachAlertDocumentLayout.DocumentSelectActivityDelegate { protected TLRPC.Chat currentChat; protected TLRPC.User currentUser; @@ -366,11 +372,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private Runnable tapForForwardingOptionsHitRunnable; private ImageView replyIconImageView; private ImageView replyCloseImageView; - private MentionsAdapter mentionsAdapter; - private FrameLayout mentionContainer; - private RecyclerListView mentionListView; - private LinearLayoutManager mentionLayoutManager; - private ExtendedGridLayoutManager mentionGridLayoutManager; + public MentionsContainerView mentionContainer; private AnimatorSet mentionListAnimation; private ChatAttachAlert chatAttachAlert; private BlurredFrameLayout topChatPanelView; @@ -450,9 +452,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private Bulletin pinBulletin; private boolean showPinBulletin; private int pinBullerinTag; - private boolean openKeyboardOnAttachMenuClose; + protected boolean openKeyboardOnAttachMenuClose; private Runnable unregisterFlagSecurePasscode; private Runnable unregisterFlagSecureNoforwards; + private boolean isFullyVisible; private MessageObject hintMessageObject; private int hintMessageType; @@ -508,13 +511,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private int topViewWasVisible; - private boolean mentionListViewIgnoreLayout; - private int mentionListViewScrollOffsetY; - private int mentionListViewLastViewTop; - private int mentionListViewLastViewPosition; - private boolean mentionListViewIsScrolling; - private boolean mentionListViewIsDragging; - private ArrayList pinnedMessageIds = new ArrayList<>(); private HashMap pinnedMessageObjects = new HashMap<>(); private SparseArray loadingPinnedMessages = new SparseArray<>(); @@ -577,6 +573,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private String pendingLinkSearchString; private Runnable pendingWebPageTimeoutRunnable; private Runnable waitingForCharaterEnterRunnable; + private Runnable onChatMessagesLoaded; private TLRPC.ChatInvite chatInvite; private Runnable chatInviteRunnable; @@ -638,6 +635,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private int last_message_id = 0; private long mergeDialogId; + private boolean premiumInvoiceBot; private boolean showScrollToMessageError; private int startLoadFromMessageId; private int startLoadFromDate; @@ -785,10 +783,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private int scrollAnimationIndex; private int scrollCallbackAnimationIndex; + public boolean allowExpandPreviewByClick; private boolean showSearchAsIcon; private boolean showAudioCallAsIcon; public MessageEnterTransitionContainer messageEnterTransitionContainer; - private float pullingDownOffset; + private float pullingDownOffset, pullingBottomOffset; private ChatPullingDownDrawable pullingDownDrawable; private Animator pullingDownBackAnimator; private boolean fromPullingDownTransition; @@ -806,9 +805,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }; + private KeyboardHideHelper keyboardHideHelper = new KeyboardHideHelper(); + private boolean isPauseOnThemePreview; private ChatThemeBottomSheet chatThemeBottomSheet; - private ThemeDelegate themeDelegate; + public ThemeDelegate themeDelegate; private ChatActivityMemberRequestsDelegate pendingRequestsDelegate; private TLRPC.TL_channels_sendAsPeers sendAsPeersObj; @@ -841,6 +842,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private final static int OPTION_UNVOTE = 25; private final static int OPTION_STOP_POLL_OR_QUIZ = 26; private final static int OPTION_VIEW_REPLIES_OR_THREAD = 27; + private final static int OPTION_STATISTICS = 28; + private final static int OPTION_TRANSLATE = 29; + private final static int OPTION_TRANSCRIBE = 30; + private final static int OPTION_HIDE_SPONSORED_MESSAGE = 31; private final static int OPTION_SEND_NOW = 100; private final static int OPTION_EDIT_SCHEDULE_TIME = 102; @@ -850,7 +855,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not NotificationCenter.commentsRead, NotificationCenter.messagesReadEncrypted, NotificationCenter.messagesReadContent, - NotificationCenter.commentsRead, NotificationCenter.didLoadPinnedMessages, NotificationCenter.newDraftReceived, NotificationCenter.updateMentionsCount, @@ -902,6 +906,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not public int blurredViewTopOffset; public int blurredViewBottomOffset; + private ValueAnimator searchExpandAnimator; + private float searchExpandProgress; + public void deleteHistory(int dateSelectedStart, int dateSelectedEnd, boolean forAll) { chatAdapter.frozenMessages.clear(); for (int i = 0; i < messages.size(); i++) { @@ -1137,7 +1144,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override protected void onDraw(Canvas canvas) { Layout layout = textLayout; - int color = getThemedColor(Theme.key_chat_fieldOverlayText); + int color = getThemedColor(isEnabled() ? Theme.key_chat_fieldOverlayText : Theme.key_windowBackgroundWhiteGrayText); if (textColor != color) { layoutPaint.setColor(textColor = color); } @@ -1224,15 +1231,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public PhotoViewer.PlaceProviderObject getPlaceForPhoto(MessageObject messageObject, TLRPC.FileLocation fileLocation, int index, boolean needPreview) { - if (index < 0 || index >= botContextResults.size()) { + if (index < 0 || index >= botContextResults.size() || mentionContainer == null || mentionContainer.getListView() == null) { return null; } - int count = mentionListView.getChildCount(); + int count = mentionContainer.getListView().getChildCount(); Object result = botContextResults.get(index); for (int a = 0; a < count; a++) { ImageReceiver imageReceiver = null; - View view = mentionListView.getChildAt(a); + View view = mentionContainer.getListView().getChildAt(a); if (view instanceof ContextLinkCell) { ContextLinkCell cell = (ContextLinkCell) view; if (cell.getResult() == result) { @@ -1246,7 +1253,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not PhotoViewer.PlaceProviderObject object = new PhotoViewer.PlaceProviderObject(); object.viewX = coords[0]; object.viewY = coords[1] - (Build.VERSION.SDK_INT >= 21 ? 0 : AndroidUtilities.statusBarHeight); - object.parentView = mentionListView; +// object.clipTopAddition = (int) (chatListViewPaddingTop - chatListViewPaddingVisibleOffset - AndroidUtilities.dp(4)); + object.parentView = mentionContainer.getListView(); object.imageReceiver = imageReceiver; object.thumb = imageReceiver.getBitmapSafe(); object.radius = imageReceiver.getRoundRadius(); @@ -1307,6 +1315,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not RecyclerListView.OnItemLongClickListenerExtended onItemLongClickListener = new RecyclerListView.OnItemLongClickListenerExtended() { @Override public boolean onItemClick(View view, int position, float x, float y) { + if (keyboardHideHelper.disableScrolling()) { + return false; + } if (textSelectionHelper.isTryingSelect() || textSelectionHelper.isSelectionMode() || inPreviewMode) { return false; } @@ -1482,7 +1493,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void onDoubleTap(View view, int position, float x, float y) { - if (!(view instanceof ChatMessageCell) || getParentActivity() == null || isSecretChat() || isInScheduleMode()) { + if (!(view instanceof ChatMessageCell) || getParentActivity() == null || isSecretChat() || isInScheduleMode() || isInPreviewMode()) { return; } ChatMessageCell cell = (ChatMessageCell) view; @@ -1548,6 +1559,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not attachMenuBotStartCommand = arguments.getString("attach_bot_start_command", null); inlineReturn = arguments.getLong("inline_return", 0); String inlineQuery = arguments.getString("inline_query"); + premiumInvoiceBot = arguments.getBoolean("premium_bot", false); startLoadFromMessageId = arguments.getInt("message_id", 0); startLoadFromDate = arguments.getInt("start_from_date", 0); startFromVideoTimestamp = arguments.getInt("video_timestamp", -1); @@ -1612,6 +1624,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not botUser = arguments.getString("botUser"); if (inlineQuery != null) { getMessagesController().sendBotStart(currentUser, inlineQuery); + } else if (premiumInvoiceBot && !TextUtils.isEmpty(botUser)) { + getMessagesController().sendBotStart(currentUser, botUser); + + botUser = null; + premiumInvoiceBot = false; } } else if (encId != 0) { currentEncryptedChat = getMessagesController().getEncryptedChat(encId); @@ -1730,6 +1747,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not getNotificationCenter().addObserver(this, NotificationCenter.didCreatedNewDeleteTask); getNotificationCenter().addObserver(this, NotificationCenter.messagePlayingDidStart); getNotificationCenter().addObserver(this, NotificationCenter.updateMessageMedia); + getNotificationCenter().addObserver(this, NotificationCenter.voiceTranscriptionUpdate); getNotificationCenter().addObserver(this, NotificationCenter.replaceMessagesObjects); getNotificationCenter().addObserver(this, NotificationCenter.notificationsSettingsUpdated); getNotificationCenter().addObserver(this, NotificationCenter.replyMessagesDidLoad); @@ -1984,8 +2002,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (avatarContainer != null) { avatarContainer.onDestroy(); } - if (mentionsAdapter != null) { - mentionsAdapter.onDestroy(); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().onDestroy(); } if (chatAttachAlert != null) { chatAttachAlert.dismissInternal(); @@ -2033,6 +2051,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not getNotificationCenter().removeObserver(this, NotificationCenter.messagePlayingDidStart); getNotificationCenter().removeObserver(this, NotificationCenter.messagePlayingGoingToStop); getNotificationCenter().removeObserver(this, NotificationCenter.updateMessageMedia); + getNotificationCenter().removeObserver(this, NotificationCenter.voiceTranscriptionUpdate); getNotificationCenter().removeObserver(this, NotificationCenter.replaceMessagesObjects); getNotificationCenter().removeObserver(this, NotificationCenter.notificationsSettingsUpdated); getNotificationCenter().removeObserver(this, NotificationCenter.replyMessagesDidLoad); @@ -2447,7 +2466,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not }); View backButton = actionBar.getBackButton(); backButton.setOnLongClickListener(e -> { - scrimPopupWindow = BackButtonMenu.show(this, backButton, dialog_id); + scrimPopupWindow = BackButtonMenu.show(this, backButton, dialog_id, themeDelegate); if (scrimPopupWindow != null) { scrimPopupWindow.setOnDismissListener(() -> { scrimPopupWindow = null; @@ -2493,6 +2512,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not avatarContainer.onDestroy(); } avatarContainer = new ChatAvatarContainer(context, this, currentEncryptedChat != null, themeDelegate); + avatarContainer.allowShorterStatus = true; + avatarContainer.premiumIconHiddable = true; AndroidUtilities.updateViewVisibilityAnimated(avatarContainer, true, 1f, false); if (inPreviewMode || inBubbleMode) { avatarContainer.setOccupyStatusBar(false); @@ -2569,6 +2590,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentEncryptedChat == null && chatMode == 0 && reportType < 0) { searchIconItem = menu.addItem(search, R.drawable.ic_ab_search); + searchIconItem.setContentDescription(LocaleController.getString("Search", R.string.Search)); searchItem = menu.addItem(0, R.drawable.ic_ab_search, themeDelegate).setIsSearchField(true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() { boolean searchWas; @@ -2589,11 +2611,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not searchUserButton.setVisibility(View.VISIBLE); } if (searchingForUser) { - mentionsAdapter.searchUsernameOrHashtag(null, 0, null, false, true); + mentionContainer.getAdapter().searchUsernameOrHashtag(null, 0, null, false, true); searchingForUser = false; } - mentionLayoutManager.setReverseLayout(false); - mentionsAdapter.setSearchingMentions(false); + mentionContainer.setReversed(false); + mentionContainer.getAdapter().setSearchingMentions(false); searchingUserMessages = null; searchingChatMessages = null; searchItem.setSearchFieldHint(LocaleController.getString("Search", R.string.Search)); @@ -2691,7 +2713,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not public void onTextChanged(EditText editText) { showMessagesSearchListView(false); if (searchingForUser) { - mentionsAdapter.searchUsernameOrHashtag("@" + editText.getText().toString(), 0, messages, true, true); + mentionContainer.getAdapter().searchUsernameOrHashtag("@" + editText.getText().toString(), 0, messages, true, true); } else if (searchingUserMessages == null && searchingChatMessages == null && searchUserButton != null && TextUtils.equals(editText.getText(), LocaleController.getString("SearchFrom", R.string.SearchFrom))) { searchUserButton.callOnClick(); } @@ -2703,7 +2725,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not searchUserButton.callOnClick(); } else { if (searchingForUser) { - mentionsAdapter.searchUsernameOrHashtag(null, 0, null, false, true); + mentionContainer.getAdapter().searchUsernameOrHashtag(null, 0, null, false, true); searchingForUser = false; searchItem.setSearchFieldText("", true); } @@ -2727,10 +2749,41 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not searchItemVisible = false; } - if (chatMode == 0 && threadMessageId == 0 && !UserObject.isReplyUser(currentUser) && reportType < 0 && !inMenuMode) { + editTextItem = menu.addItem(0, R.drawable.ic_ab_other, themeDelegate); + editTextItem.setContentDescription(LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions)); + editTextItem.setTag(null); + editTextItem.setVisibility(View.GONE); + + editTextItem.addSubItem(text_spoiler, LocaleController.getString("Spoiler", R.string.Spoiler)); + SpannableStringBuilder stringBuilder = new SpannableStringBuilder(LocaleController.getString("Bold", R.string.Bold)); + stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf")), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + editTextItem.addSubItem(text_bold, stringBuilder); + stringBuilder = new SpannableStringBuilder(LocaleController.getString("Italic", R.string.Italic)); + stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/ritalic.ttf")), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + editTextItem.addSubItem(text_italic, stringBuilder); + stringBuilder = new SpannableStringBuilder(LocaleController.getString("Mono", R.string.Mono)); + stringBuilder.setSpan(new TypefaceSpan(Typeface.MONOSPACE), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + editTextItem.addSubItem(text_mono, stringBuilder); + if (currentEncryptedChat == null || AndroidUtilities.getPeerLayerVersion(currentEncryptedChat.layer) >= 101) { + stringBuilder = new SpannableStringBuilder(LocaleController.getString("Strike", R.string.Strike)); + TextStyleSpan.TextStyleRun run = new TextStyleSpan.TextStyleRun(); + run.flags |= TextStyleSpan.FLAG_STYLE_STRIKE; + stringBuilder.setSpan(new TextStyleSpan(run), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + editTextItem.addSubItem(text_strike, stringBuilder); + stringBuilder = new SpannableStringBuilder(LocaleController.getString("Underline", R.string.Underline)); + run = new TextStyleSpan.TextStyleRun(); + run.flags |= TextStyleSpan.FLAG_STYLE_UNDERLINE; + stringBuilder.setSpan(new TextStyleSpan(run), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + editTextItem.addSubItem(text_underline, stringBuilder); + } + editTextItem.addSubItem(text_link, LocaleController.getString("CreateLink", R.string.CreateLink)); + editTextItem.addSubItem(text_regular, LocaleController.getString("Regular", R.string.Regular)); + + if (chatMode == 0 && threadMessageId == 0 && !UserObject.isReplyUser(currentUser) && reportType < 0) { TLRPC.UserFull userFull = null; if (currentUser != null) { audioCallIconItem = menu.addItem(call, R.drawable.ic_call, themeDelegate); + audioCallIconItem.setContentDescription(LocaleController.getString("Call", R.string.Call)); userFull = getMessagesController().getUserFull(currentUser.id); if (userFull != null && userFull.phone_calls_available) { showAudioCallAsIcon = !inPreviewMode; @@ -2786,7 +2839,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } Bundle args = new Bundle(); args.putLong("dialog_id", dialog_id); - presentFragment(new ProfileNotificationsActivity(args)); + presentFragment(new ProfileNotificationsActivity(args, themeDelegate)); } } @@ -2800,6 +2853,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not muteItem.setOnClickListener(view -> { boolean muted = MessagesController.getInstance(currentAccount).isDialogMuted(dialog_id); if (muted) { + updateTitleIcons(true); AndroidUtilities.runOnUIThread(() -> { ChatActivity.this.toggleMute(true); }, 150); @@ -2829,36 +2883,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - editTextItem = menu.addItem(0, R.drawable.ic_ab_other, themeDelegate); - editTextItem.setContentDescription(LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions)); - editTextItem.setTag(null); - editTextItem.setVisibility(View.GONE); - - editTextItem.addSubItem(text_spoiler, LocaleController.getString("Spoiler", R.string.Spoiler)); - SpannableStringBuilder stringBuilder = new SpannableStringBuilder(LocaleController.getString("Bold", R.string.Bold)); - stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf")), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - editTextItem.addSubItem(text_bold, stringBuilder); - stringBuilder = new SpannableStringBuilder(LocaleController.getString("Italic", R.string.Italic)); - stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/ritalic.ttf")), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - editTextItem.addSubItem(text_italic, stringBuilder); - stringBuilder = new SpannableStringBuilder(LocaleController.getString("Mono", R.string.Mono)); - stringBuilder.setSpan(new TypefaceSpan(Typeface.MONOSPACE), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - editTextItem.addSubItem(text_mono, stringBuilder); - if (currentEncryptedChat == null || AndroidUtilities.getPeerLayerVersion(currentEncryptedChat.layer) >= 101) { - stringBuilder = new SpannableStringBuilder(LocaleController.getString("Strike", R.string.Strike)); - TextStyleSpan.TextStyleRun run = new TextStyleSpan.TextStyleRun(); - run.flags |= TextStyleSpan.FLAG_STYLE_STRIKE; - stringBuilder.setSpan(new TextStyleSpan(run), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - editTextItem.addSubItem(text_strike, stringBuilder); - stringBuilder = new SpannableStringBuilder(LocaleController.getString("Underline", R.string.Underline)); - run = new TextStyleSpan.TextStyleRun(); - run.flags |= TextStyleSpan.FLAG_STYLE_UNDERLINE; - stringBuilder.setSpan(new TextStyleSpan(run), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - editTextItem.addSubItem(text_underline, stringBuilder); - } - editTextItem.addSubItem(text_link, LocaleController.getString("CreateLink", R.string.CreateLink)); - editTextItem.addSubItem(text_regular, LocaleController.getString("Regular", R.string.Regular)); - if (searchItem != null) { headerItem.addSubItem(search, R.drawable.msg_search, LocaleController.getString("Search", R.string.Search), themeDelegate); } @@ -2869,7 +2893,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not addContactItem = headerItem.addSubItem(share_contact, R.drawable.msg_addcontact, "", themeDelegate); } if (currentEncryptedChat != null) { - timeItem2 = headerItem.addSubItem(chat_enc_timer, R.drawable.msg_timer, LocaleController.getString("SetTimer", R.string.SetTimer), themeDelegate); + timeItem2 = headerItem.addSubItem(chat_enc_timer, R.drawable.msg_autodelete, LocaleController.getString("SetTimer", R.string.SetTimer), themeDelegate); } clearHistoryItem = headerItem.addSubItem(clear_history, R.drawable.msg_clear, LocaleController.getString("ClearHistory", R.string.ClearHistory), themeDelegate); @@ -2896,11 +2920,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not headerItem.addSubItem(add_shortcut, R.drawable.msg_home, LocaleController.getString("AddShortcut", R.string.AddShortcut), themeDelegate); } if (currentUser != null && currentEncryptedChat == null && currentUser.bot) { - headerItem.addSubItem(bot_settings, R.drawable.menu_settings, LocaleController.getString("BotSettings", R.string.BotSettings), themeDelegate); - headerItem.addSubItem(bot_help, R.drawable.menu_help, LocaleController.getString("BotHelp", R.string.BotHelp), themeDelegate); + headerItem.addSubItem(bot_settings, R.drawable.msg_settings_old, LocaleController.getString("BotSettings", R.string.BotSettings), themeDelegate); + headerItem.addSubItem(bot_help, R.drawable.msg_help, LocaleController.getString("BotHelp", R.string.BotHelp), themeDelegate); updateBotButtons(); } } + menu.setVisibility(inMenuMode ? View.GONE : View.VISIBLE); updateTitle(); avatarContainer.updateOnlineCount(); @@ -2909,7 +2934,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatMode == 0 && !isThreadChat() && reportType < 0) { attachItem = menu.addItem(chat_menu_attach, R.drawable.ic_ab_other, themeDelegate).setOverrideMenuClick(true).setAllowCloseAnimation(false); - attachItem.setContentDescription(LocaleController.getString("AccDescrAttachButton", R.string.AccDescrAttachButton)); + attachItem.setContentDescription(LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions)); attachItem.setVisibility(View.GONE); } @@ -3018,78 +3043,89 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return chatListView.getTranslationY(); } - AdjustPanLayoutHelper adjustPanLayoutHelper = new AdjustPanLayoutHelper(this) { + { + adjustPanLayoutHelper = new AdjustPanLayoutHelper(this) { - @Override - protected void onTransitionStart(boolean keyboardVisible, int contentHeight) { - wasManualScroll = true; - if (chatActivityEnterView != null) { - chatActivityEnterView.onAdjustPanTransitionStart(keyboardVisible, contentHeight); - } - } - - @Override - protected void onTransitionEnd() { - if (chatActivityEnterView != null) { - chatActivityEnterView.onAdjustPanTransitionEnd(); - } - } - - @Override - protected void onPanTranslationUpdate(float y, float progress, boolean keyboardVisible) { - if (getParentLayout() != null && getParentLayout().isPreviewOpenAnimationInProgress()) { - return; - } - contentPanTranslation = y; - if (chatAttachAlert != null && chatAttachAlert.isShowing()) { - setNonNoveTranslation(y); - } else { - actionBar.setTranslationY(y); - emptyViewContainer.setTranslationY(y / 2); - progressView.setTranslationY(y / 2); - contentView.setBackgroundTranslation((int) y); - instantCameraView.onPanTranslationUpdate(y); - if (blurredView != null) { - blurredView.drawable.onPanTranslationUpdate(y); + @Override + protected void onTransitionStart(boolean keyboardVisible, int contentHeight) { + wasManualScroll = true; + if (chatActivityEnterView != null) { + chatActivityEnterView.onAdjustPanTransitionStart(keyboardVisible, contentHeight); + } + if (mentionContainer != null) { + mentionContainer.onPanTransitionStart(); } - setFragmentPanTranslationOffset((int) y); - invalidateChatListViewTopPadding(); - invalidateMessagesVisiblePart(); } - chatListView.invalidate(); - updateBulletinLayout(); - if (chatActivityEnterView != null) { - chatActivityEnterView.onAdjustPanTransitionUpdate(y, progress, keyboardVisible); - } - } - @Override - protected boolean heightAnimationEnabled() { - ActionBarLayout actionBarLayout = getParentLayout(); - if (inPreviewMode || inBubbleMode || AndroidUtilities.isInMultiwindow || actionBarLayout == null || fixedKeyboardHeight > 0) { - return false; + @Override + protected void onTransitionEnd() { + if (chatActivityEnterView != null) { + chatActivityEnterView.onAdjustPanTransitionEnd(); + } + if (mentionContainer != null) { + mentionContainer.onPanTransitionEnd(); + } } - if (System.currentTimeMillis() - activityResumeTime < 250) { - return false; - } - if ((ChatActivity.this == actionBarLayout.getLastFragment() && actionBarLayout.isTransitionAnimationInProgress()) || actionBarLayout.isPreviewOpenAnimationInProgress() || isPaused || !openAnimationEnded || (chatAttachAlert != null && chatAttachAlert.isShowing())) { - return false; - } - if (chatActivityEnterView != null && chatActivityEnterView.getTrendingStickersAlert() != null && chatActivityEnterView.getTrendingStickersAlert().isShowing()) { - return false; - } - return true; - } - @Override - protected int startOffset() { - int keyboardSize = getKeyboardHeight(); - if (keyboardSize <= AndroidUtilities.dp(20) && chatActivityEnterView.isPopupShowing()) { - return chatActivityEnterView.getEmojiPadding(); + @Override + protected void onPanTranslationUpdate(float y, float progress, boolean keyboardVisible) { + if (getParentLayout() != null && getParentLayout().isPreviewOpenAnimationInProgress()) { + return; + } + contentPanTranslation = y; + if (chatAttachAlert != null && chatAttachAlert.isShowing()) { + setNonNoveTranslation(y); + } else { + actionBar.setTranslationY(y); + emptyViewContainer.setTranslationY(y / 2); + progressView.setTranslationY(y / 2); + contentView.setBackgroundTranslation((int) y); + instantCameraView.onPanTranslationUpdate(y); + if (blurredView != null) { + blurredView.drawable.onPanTranslationUpdate(y); + } + setFragmentPanTranslationOffset((int) y); + invalidateChatListViewTopPadding(); + invalidateMessagesVisiblePart(); + } + chatListView.invalidate(); + updateBulletinLayout(); + if (chatActivityEnterView != null) { + chatActivityEnterView.onAdjustPanTransitionUpdate(y, progress, keyboardVisible); + } + if (mentionContainer != null) { + mentionContainer.onPanTransitionUpdate(y); + } } - return 0; - } - }; + + @Override + protected boolean heightAnimationEnabled() { + ActionBarLayout actionBarLayout = getParentLayout(); + if (inPreviewMode || inBubbleMode || AndroidUtilities.isInMultiwindow || actionBarLayout == null || fixedKeyboardHeight > 0) { + return false; + } + if (System.currentTimeMillis() - activityResumeTime < 250) { + return false; + } + if ((ChatActivity.this == actionBarLayout.getLastFragment() && actionBarLayout.isTransitionAnimationInProgress()) || actionBarLayout.isPreviewOpenAnimationInProgress() || isPaused || !openAnimationEnded || (chatAttachAlert != null && chatAttachAlert.isShowing())) { + return false; + } + if (chatActivityEnterView != null && chatActivityEnterView.getTrendingStickersAlert() != null && chatActivityEnterView.getTrendingStickersAlert().isShowing()) { + return false; + } + return true; + } + + @Override + protected int startOffset() { + int keyboardSize = getKeyboardHeight(); + if (keyboardSize <= AndroidUtilities.dp(20) && chatActivityEnterView.isPopupShowing()) { + return chatActivityEnterView.getEmojiPadding(); + } + return 0; + } + }; + } @Override protected void onAttachedToWindow() { @@ -3120,6 +3156,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not }); } + private float x, y; + private long pressTime; + @Override public boolean dispatchTouchEvent(MotionEvent ev) { float expandY; @@ -3131,6 +3170,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (scrimView != null || chatActivityEnterView != null && chatActivityEnterView.isStickersExpanded() && ev.getY() < expandY) { return false; } + + keyboardHideHelper.onTouch(adjustPanLayoutHelper, this, chatListView, chatActivityEnterView, ChatActivity.this, ev); lastTouchY = ev.getY(); TextSelectionHelper.TextSelectionOverlay selectionOverlay = textSelectionHelper.getOverlayView(context); ev.offsetLocation(-selectionOverlay.getX(), -selectionOverlay.getY()); @@ -3163,7 +3204,47 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return true; } - return super.dispatchTouchEvent(ev); + boolean r = false; + if (isInPreviewMode() && allowExpandPreviewByClick) { + if (ev.getAction() == MotionEvent.ACTION_DOWN) { + boolean pressedOnPageDownButtons = false; + int[] off = new int[2]; + getLocationInWindow(off); + int[] pos = new int[2]; + if (pagedownButton != null) { + pagedownButton.getLocationInWindow(pos); + AndroidUtilities.rectTmp2.set(pos[0] - off[0], pos[1] - off[1], pos[0] - off[0] + pagedownButton.getMeasuredWidth(), pos[1] - off[1] + pagedownButton.getMeasuredHeight()); + if (AndroidUtilities.rectTmp2.contains((int) ev.getX(), (int) ev.getY())) { + pressedOnPageDownButtons = true; + } + } + if (!pressedOnPageDownButtons && mentiondownButton != null) { + mentiondownButton.getLocationInWindow(pos); + AndroidUtilities.rectTmp2.set(pos[0] - off[0], pos[1] - off[1], pos[0] - off[0] + mentiondownButton.getMeasuredWidth(), pos[1] - off[1] + mentiondownButton.getMeasuredHeight()); + if (AndroidUtilities.rectTmp2.contains((int) ev.getX(), (int) ev.getY())) { + pressedOnPageDownButtons = true; + } + } + if (!pressedOnPageDownButtons) { + x = ev.getX(); + y = ev.getY(); + pressTime = SystemClock.elapsedRealtime(); + r = true; + } else { + pressTime = -1; + } + } else if (ev.getAction() == MotionEvent.ACTION_UP) { + if (MathUtils.distance(x, y, ev.getX(), ev.getY()) < AndroidUtilities.dp(6) && SystemClock.elapsedRealtime() - pressTime <= ViewConfiguration.getTapTimeout()) { + parentLayout.expandPreviewFragment(); + ev.setAction(MotionEvent.ACTION_CANCEL); + } + pressTime = -1; + } else if (ev.getAction() == MotionEvent.ACTION_CANCEL) { + pressTime = -1; + } + } + + return super.dispatchTouchEvent(ev) || r; } @Override @@ -3249,7 +3330,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (pullingDownAnimateProgress != 0) { transitionOffset = (chatListView.getMeasuredHeight() - pullingDownOffset) * pullingDownAnimateProgress; } - canvas.translate(0, -pullingDownOffset - transitionOffset); + canvas.translate(0, -pullingDownOffset - transitionOffset + pullingBottomOffset); super.drawChild(canvas, videoPlayerContainer, drawingTime); if (drawLaterRoundProgressCell != null) { canvas.save(); @@ -3372,7 +3453,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not canvas.translate(scrimView.getLeft(), scrimView.getTop()); if (scrimView == actionBar.getBackButton()) { int r = Math.max(scrimView.getMeasuredWidth(), scrimView.getMeasuredHeight()) / 2; - canvas.drawCircle(r, r, r * 0.8f, actionBarBackgroundPaint); + canvas.drawCircle(r, r, r * 0.7f, actionBarBackgroundPaint); } scrimView.draw(canvas); canvas.restoreToCount(c); @@ -3440,7 +3521,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } canvas.save(); - canvas.clipRect(0, listTop, getMeasuredWidth(), chatListView.getY() + chatListView.getMeasuredHeight() - blurredViewBottomOffset); + canvas.clipRect(0, listTop + (mentionContainer != null ? mentionContainer.clipTop() : 0), getMeasuredWidth(), chatListView.getY() + chatListView.getMeasuredHeight() - blurredViewBottomOffset - (mentionContainer != null ? mentionContainer.clipBottom() : 0)); canvas.translate(0, chatListView.getY()); scrimGroup.transitionParams.cell.drawBackground(canvas, (int) l, (int) t, (int) r, (int) b, scrimGroup.transitionParams.pinnedTop, scrimGroup.transitionParams.pinnedBotton, selected, contentView.getKeyboardHeight()); canvas.restore(); @@ -3456,6 +3537,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not float viewClipRight = chatListView.getRight(); float viewClipBottom = chatListView.getY() + chatListView.getMeasuredHeight() - blurredViewBottomOffset; + if (mentionContainer != null) { + viewClipTop += mentionContainer.clipTop(); + viewClipBottom -= mentionContainer.clipBottom(); + } + if (cell == null || !cell.getTransitionParams().animateBackgroundBoundsInner) { viewClipLeft = Math.max(viewClipLeft, chatListView.getLeft() + child.getX()); viewClipTop = Math.max(viewClipTop, chatListView.getTop() + child.getY()); @@ -3556,14 +3642,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (scrimView != null || messageEnterTransitionContainer.isRunning()) { - if (pagedownButton != null && pagedownButton.getTag() != null) { - super.drawChild(canvas, pagedownButton, SystemClock.uptimeMillis()); - } - if (mentiondownButton != null && mentiondownButton.getTag() != null) { - super.drawChild(canvas, mentiondownButton, SystemClock.uptimeMillis()); - } - if (reactionsMentiondownButton != null && reactionsMentiondownButton.getTag() != null) { - super.drawChild(canvas, reactionsMentiondownButton, SystemClock.uptimeMillis()); + if (mentionContainer == null || mentionContainer.getVisibility() != View.VISIBLE) { + if (pagedownButton != null && pagedownButton.getTag() != null) { + super.drawChild(canvas, pagedownButton, SystemClock.uptimeMillis()); + } + if (mentiondownButton != null && mentiondownButton.getTag() != null) { + super.drawChild(canvas, mentiondownButton, SystemClock.uptimeMillis()); + } + if (reactionsMentiondownButton != null && reactionsMentiondownButton.getTag() != null) { + super.drawChild(canvas, reactionsMentiondownButton, SystemClock.uptimeMillis()); + } } if (floatingDateView != null && floatingDateView.getTag() != null) { super.drawChild(canvas, floatingDateView, SystemClock.uptimeMillis()); @@ -3601,6 +3689,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not top = bottomOverlayChat.getTop() + AndroidUtilities.dp2(2); bottom = bottomOverlayChat.getBottom(); } + top -= (int) ((pullingDownAnimateToActivity == null ? 0 : pullingDownAnimateToActivity.pullingBottomOffset) * pullingDownAnimateProgress); pullingDownDrawable.drawBottomPanel(canvas, top, bottom, getMeasuredWidth()); } if (pullingDownAnimateToActivity != null) { @@ -3664,7 +3753,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (showAudioCallAsIcon) { headerItem.hideSubItem(call); } else if (userInfo != null && userInfo.phone_calls_available) { - headerItem.showSubItem(call); + headerItem.showSubItem(call, true); } } globalIgnoreLayout = false; @@ -3795,31 +3884,27 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } else if (child == mentionContainer) { FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mentionContainer.getLayoutParams(); - if (mentionsAdapter.isBannedInline()) { + if (mentionContainer.getAdapter().isBannedInline()) { child.measure(MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(heightSize, MeasureSpec.AT_MOST)); } else { int height; - mentionListViewIgnoreLayout = true; - if ((mentionsAdapter.isStickers() || mentionsAdapter.isBotContext()) && mentionsAdapter.isMediaLayout()) { - int size = mentionGridLayoutManager.getRowsCount(widthSize); + mentionContainer.setIgnoreLayout(true); + LinearLayoutManager layoutManager = mentionContainer.getCurrentLayoutManager(); + if (layoutManager instanceof ExtendedGridLayoutManager) { + int size = ((ExtendedGridLayoutManager) layoutManager).getRowsCount(widthSize); int maxHeight = size * 102; - if (mentionsAdapter.isBotContext()) { - if (mentionsAdapter.getBotContextSwitch() != null) { + if (mentionContainer.getAdapter().isBotContext()) { + if (mentionContainer.getAdapter().getBotContextSwitch() != null) { maxHeight += 34; } } height = heightSize - chatActivityEnterView.getMeasuredHeight() + (maxHeight != 0 ? AndroidUtilities.dp(2) : 0); int padding = Math.max(0, height - AndroidUtilities.dp(Math.min(maxHeight, 68 * 1.8f))); - if (mentionLayoutManager.getReverseLayout()) { - mentionListView.setPadding(0, 0, 0, padding); - } else { - mentionListView.setPadding(0, padding, 0, 0); - } } else { - int size = mentionsAdapter.getItemCount(); + int size = mentionContainer.getAdapter().getLastItemCount(); int maxHeight = 0; - if (mentionsAdapter.isBotContext()) { - if (mentionsAdapter.getBotContextSwitch() != null) { + if (mentionContainer.getAdapter().isBotContext()) { + if (mentionContainer.getAdapter().getBotContextSwitch() != null) { maxHeight += 36; size -= 1; } @@ -3828,20 +3913,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not maxHeight += size * 36; } height = heightSize - chatActivityEnterView.getMeasuredHeight() + (maxHeight != 0 ? AndroidUtilities.dp(2) : 0); - int padding = Math.max(0, height - AndroidUtilities.dp(Math.min(maxHeight, 68 * 1.8f))); - if (mentionLayoutManager.getReverseLayout()) { - mentionListView.setPadding(0, 0, 0, padding); - } else { - mentionListView.setPadding(0, padding, 0, 0); - } } layoutParams.height = height; layoutParams.topMargin = 0; - mentionListViewIgnoreLayout = false; + mentionContainer.setIgnoreLayout(false); child.measure(MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(layoutParams.height, MeasureSpec.EXACTLY)); } + mentionContainer.setTranslationY(chatActivityEnterView.getAnimatedTop()); } else if (child == textSelectionHelper.getOverlayView(context)) { int contentWidthSpec = MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY); int h = heightSize + blurredViewTopOffset; @@ -3965,6 +4045,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not childTop = 0; } else if (child == mentionContainer) { childTop -= chatActivityEnterView.getMeasuredHeight() - AndroidUtilities.dp(2); + mentionContainer.setTranslationY(chatActivityEnterView.getAnimatedTop()); } else if (child == pagedownButton || child == mentiondownButton || child == reactionsMentiondownButton) { if (!inPreviewMode) { childTop -= chatActivityEnterView.getMeasuredHeight(); @@ -4152,8 +4233,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { oldMessage = null; } - if (mentionsAdapter != null) { - mentionsAdapter.onDestroy(); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().onDestroy(); } chatListView = new RecyclerListView(context, themeDelegate) { @@ -4263,6 +4344,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public boolean onInterceptTouchEvent(MotionEvent e) { textSelectionHelper.checkSelectionCancel(e); + if (keyboardHideHelper.disableScrolling()) { + return false; + } if (isFastScrollAnimationRunning()) { return false; } @@ -4431,6 +4515,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public boolean onTouchEvent(MotionEvent e) { textSelectionHelper.checkSelectionCancel(e); + if (keyboardHideHelper.disableScrolling()) { + return false; + } if (e.getAction() == MotionEvent.ACTION_DOWN) { scrollByTouch = true; } @@ -4573,11 +4660,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not drawReplyButton(c); } - if (pullingDownOffset != 0) { + if (pullingDownOffset != 0 && !isInPreviewMode()) { c.save(); float transitionOffset = 0; if (pullingDownAnimateProgress != 0) { - transitionOffset = (chatListView.getMeasuredHeight() - pullingDownOffset) * pullingDownAnimateProgress; + transitionOffset = (chatListView.getMeasuredHeight() - pullingDownOffset + (pullingDownAnimateToActivity == null ? 0 : pullingDownAnimateToActivity.pullingBottomOffset)) * pullingDownAnimateProgress; } c.translate(0, getMeasuredHeight() - blurredViewBottomOffset - transitionOffset); if (pullingDownDrawable == null) { @@ -5395,7 +5482,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatListView.setInstantClick(true); chatListView.setDisableHighlightState(true); chatListView.setTag(1); - chatListView.setVerticalScrollBarEnabled(true); + chatListView.setVerticalScrollBarEnabled(!SharedConfig.chatBlurEnabled()); chatListView.setAdapter(chatAdapter = new ChatActivityAdapter(context)); chatListView.setClipToPadding(false); chatListView.setAnimateEmptyView(true, 1); @@ -6040,6 +6127,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not updateMessagesVisiblePart(false); } }); + pinnedMessageView.setEnabled(!isInPreviewMode()); View selector = new View(context); selector.setBackground(Theme.getSelectorDrawable(false)); @@ -6094,7 +6182,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } pinnedListButton = new ImageView(context); - pinnedListButton.setImageResource(R.drawable.menu_pinnedlist); + pinnedListButton.setImageResource(R.drawable.msg_pinnedlist); pinnedListButton.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_chat_topPanelClose), PorterDuff.Mode.MULTIPLY)); pinnedListButton.setScaleType(ImageView.ScaleType.CENTER); pinnedListButton.setContentDescription(LocaleController.getString("AccPinnedMessagesList", R.string.AccPinnedMessagesList)); @@ -6449,59 +6537,63 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return true; }); - mentionContainer = new FrameLayout(context) { - - private Rect padding; - - @Override - public void onDraw(Canvas canvas) { - if (mentionListView.getChildCount() <= 0) { - return; - } - if (mentionLayoutManager.getReverseLayout()) { - float top = mentionListView.getY() + mentionListViewScrollOffsetY + AndroidUtilities.dp(2); - float bottom = top + Theme.chat_composeShadowDrawable.getIntrinsicHeight(); - Theme.chat_composeShadowDrawable.setBounds(0, (int) bottom, getMeasuredWidth(), (int) top); - Theme.chat_composeShadowDrawable.draw(canvas); - canvas.drawRect(0, 0, getMeasuredWidth(), top, getThemedPaint(Theme.key_paint_chatComposeBackground)); - } else { - int top = (int) mentionListView.getY(); - if ((mentionsAdapter.isStickers() || mentionsAdapter.isBotContext()) && mentionsAdapter.isMediaLayout() && mentionsAdapter.getBotContextSwitch() == null) { - top += mentionListViewScrollOffsetY - AndroidUtilities.dp(4); - } else { - top += mentionListViewScrollOffsetY - AndroidUtilities.dp(2); - } - if (mentionsAdapter.isMediaLayout()) { - if (padding == null) { - padding = new Rect(); - Theme.chat_composeShadowRoundDrawable.getPadding(padding); - } - Theme.chat_composeShadowRoundDrawable.setBounds(-padding.left, top - padding.top - AndroidUtilities.dp(8), getMeasuredWidth() + padding.right, (int) (bottomPanelTranslationYReverse + getMeasuredHeight())); - Theme.chat_composeShadowRoundDrawable.draw(canvas); - } else { - int bottom = top + Theme.chat_composeShadowDrawable.getIntrinsicHeight(); - Theme.chat_composeShadowDrawable.setBounds(0, top, getMeasuredWidth(), bottom); - Theme.chat_composeShadowDrawable.draw(canvas); - canvas.drawRect(0, bottom, getMeasuredWidth(), bottomPanelTranslationYReverse + getMeasuredHeight(), getThemedPaint(Theme.key_paint_chatComposeBackground)); - } - } - } - - @Override - public void requestLayout() { - if (mentionListViewIgnoreLayout) { - return; - } - super.requestLayout(); - } - }; - mentionContainer.setVisibility(View.GONE); updateMessageListAccessibilityVisibility(); - mentionContainer.setWillNotDraw(false); reactionsMentiondownButton = new FrameLayout(context); contentView.addView(reactionsMentiondownButton, LayoutHelper.createFrame(46, 61, Gravity.RIGHT | Gravity.BOTTOM, 0, 0, 7, 5)); + mentionContainer = new MentionsContainerView(context, dialog_id, threadMessageId, contentView, themeDelegate) { + + @Override + protected boolean canOpen() { + return bottomOverlay.getVisibility() != View.VISIBLE || searchingForUser; + } + + @Override + protected void onOpen() { + if (allowStickersPanel && (!getAdapter().isBotContext() || (allowContextBotPanel || allowContextBotPanelSecond))) { + if (currentEncryptedChat != null && getAdapter().isBotContext()) { + SharedPreferences preferences = MessagesController.getGlobalMainSettings(); + if (!preferences.getBoolean("secretbot", false)) { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), themeDelegate); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setMessage(LocaleController.getString("SecretChatContextBotAlert", R.string.SecretChatContextBotAlert)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); + showDialog(builder.create()); + preferences.edit().putBoolean("secretbot", true).commit(); + } + } + } + updateMessageListAccessibilityVisibility(); + } + + @Override + protected void onClose() { + updateMessageListAccessibilityVisibility(); + } + + @Override + protected void onContextSearch(boolean searching) { + if (chatActivityEnterView != null) { + chatActivityEnterView.setCaption(getAdapter().getBotCaption()); + chatActivityEnterView.showContextProgress(searching); + } + } + + @Override + protected void onContextClick(TLRPC.BotInlineResult result) { + if (getParentActivity() == null || result.content == null) { + return; + } + if (result.type.equals("video") || result.type.equals("web_player_video")) { + int[] size = MessageObject.getInlineResultWidthAndHeight(result); + EmbedBottomSheet.show(getParentActivity(), null, botContextProvider, result.title != null ? result.title : "", result.description, result.content.url, result.content.url, size[0], size[1], isKeyboardVisible()); + } else { + processExternalUrl(0, result.content.url, false); + } + } + }; + contentView.addView(mentionContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 110, Gravity.LEFT | Gravity.BOTTOM)); final ContentPreviewViewer.ContentPreviewViewerDelegate contentPreviewViewerDelegate = new ContentPreviewViewer.ContentPreviewViewerDelegate() { @@ -6544,368 +6636,25 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return dialog_id; } }; - - mentionListView = new RecyclerListView(context, themeDelegate) { - - private int lastWidth; - private int lastHeight; - - @Override - public boolean onInterceptTouchEvent(MotionEvent event) { - if (mentionLayoutManager.getReverseLayout()) { - if (!mentionListViewIsDragging && mentionListViewScrollOffsetY != 0 && event.getY() > mentionListViewScrollOffsetY) { - return false; - } - } else { - if (!mentionListViewIsDragging && mentionListViewScrollOffsetY != 0 && event.getY() < mentionListViewScrollOffsetY) { - return false; - } - } - boolean result = !mentionListViewIsScrolling && ContentPreviewViewer.getInstance().onInterceptTouchEvent(event, mentionListView, 0, null, themeDelegate); - if (mentionsAdapter.isStickers() && event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) { - mentionsAdapter.doSomeStickersAction(); - } - return super.onInterceptTouchEvent(event) || result; - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - if (mentionLayoutManager.getReverseLayout()) { - if (!mentionListViewIsDragging && mentionListViewScrollOffsetY != 0 && event.getY() > mentionListViewScrollOffsetY) { - return false; - } - } else { - if (!mentionListViewIsDragging && mentionListViewScrollOffsetY != 0 && event.getY() < mentionListViewScrollOffsetY) { - return false; - } - } - //supress warning - return super.onTouchEvent(event); - } - - @Override - public void requestLayout() { - if (mentionListViewIgnoreLayout) { - return; - } - super.requestLayout(); - } - - @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - int width = r - l; - int height = b - t; - - int newPosition = -1; - int newTop = 0; - if (!mentionLayoutManager.getReverseLayout() && mentionListView != null && mentionListViewLastViewPosition >= 0 && width == lastWidth && height - lastHeight != 0) { - newPosition = mentionListViewLastViewPosition; - newTop = mentionListViewLastViewTop + height - lastHeight - getPaddingTop(); - } - - super.onLayout(changed, l, t, r, b); - - if (newPosition != -1) { - mentionListViewIgnoreLayout = true; - if ((mentionsAdapter.isStickers() || mentionsAdapter.isBotContext()) && mentionsAdapter.isMediaLayout()) { - mentionGridLayoutManager.scrollToPositionWithOffset(newPosition, newTop); - } else { - mentionLayoutManager.scrollToPositionWithOffset(newPosition, newTop); - } - super.onLayout(false, l, t, r, b); - mentionListViewIgnoreLayout = false; - } - - lastHeight = height; - lastWidth = width; - mentionListViewUpdateLayout(); - } - - @Override - public void setTranslationY(float translationY) { - super.setTranslationY(translationY); - mentionContainer.invalidate(); - } - }; - mentionListView.setOnTouchListener((v, event) -> ContentPreviewViewer.getInstance().onTouch(event, mentionListView, 0, mentionsOnItemClickListener, mentionsAdapter.isStickers() ? contentPreviewViewerDelegate : null, themeDelegate)); - mentionListView.setTag(2); - mentionLayoutManager = new LinearLayoutManager(context) { - @Override - public boolean supportsPredictiveItemAnimations() { - return false; - } - - @Override - public void setReverseLayout(boolean reverseLayout) { - super.setReverseLayout(reverseLayout); - invalidateChatListViewTopPadding(); - } - }; - mentionLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); - mentionGridLayoutManager = new ExtendedGridLayoutManager(context, 100) { - - private Size size = new Size(); - - @Override - protected Size getSizeForItem(int i) { - if (mentionsAdapter.getBotContextSwitch() != null) { - i++; - } - size.width = 0; - size.height = 0; - Object object = mentionsAdapter.getItem(i); - if (object instanceof TLRPC.BotInlineResult) { - TLRPC.BotInlineResult inlineResult = (TLRPC.BotInlineResult) object; - if (inlineResult.document != null) { - TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(inlineResult.document.thumbs, 90); - size.width = thumb != null ? thumb.w : 100; - size.height = thumb != null ? thumb.h : 100; - for (int b = 0; b < inlineResult.document.attributes.size(); b++) { - TLRPC.DocumentAttribute attribute = inlineResult.document.attributes.get(b); - if (attribute instanceof TLRPC.TL_documentAttributeImageSize || attribute instanceof TLRPC.TL_documentAttributeVideo) { - size.width = attribute.w; - size.height = attribute.h; - break; - } - } - } else if (inlineResult.content != null) { - for (int b = 0; b < inlineResult.content.attributes.size(); b++) { - TLRPC.DocumentAttribute attribute = inlineResult.content.attributes.get(b); - if (attribute instanceof TLRPC.TL_documentAttributeImageSize || attribute instanceof TLRPC.TL_documentAttributeVideo) { - size.width = attribute.w; - size.height = attribute.h; - break; - } - } - } else if (inlineResult.thumb != null) { - for (int b = 0; b < inlineResult.thumb.attributes.size(); b++) { - TLRPC.DocumentAttribute attribute = inlineResult.thumb.attributes.get(b); - if (attribute instanceof TLRPC.TL_documentAttributeImageSize || attribute instanceof TLRPC.TL_documentAttributeVideo) { - size.width = attribute.w; - size.height = attribute.h; - break; - } - } - } else if (inlineResult.photo != null) { - TLRPC.PhotoSize photoSize = FileLoader.getClosestPhotoSizeWithSize(inlineResult.photo.sizes, AndroidUtilities.photoSize); - if (photoSize != null) { - size.width = photoSize.w; - size.height = photoSize.h; - } - } - } - return size; - } - - @Override - protected int getFlowItemCount() { - if (mentionsAdapter.getBotContextSwitch() != null) { - return getItemCount() - 1; - } - return super.getFlowItemCount(); - } - }; - mentionGridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { - @Override - public int getSpanSize(int position) { - Object object = mentionsAdapter.getItem(position); - if (object instanceof TLRPC.TL_inlineBotSwitchPM) { - return 100; - } else if (object instanceof TLRPC.Document) { - return 20; - } else { - if (mentionsAdapter.getBotContextSwitch() != null) { - position--; - } - return mentionGridLayoutManager.getSpanSizeForItem(position); - } - } + mentionContainer.getListView().setOnTouchListener((v, event) -> { + return ContentPreviewViewer.getInstance().onTouch(event, mentionContainer.getListView(), 0, mentionsOnItemClickListener, mentionContainer.getAdapter().isStickers() ? contentPreviewViewerDelegate : null, themeDelegate); }); - mentionListView.addItemDecoration(new RecyclerView.ItemDecoration() { - @Override - public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { - outRect.left = 0; - outRect.right = 0; - outRect.top = 0; - outRect.bottom = 0; - if (parent.getLayoutManager() == mentionGridLayoutManager) { - int position = parent.getChildAdapterPosition(view); - if (mentionsAdapter.isStickers()) { - return; - } else if (mentionsAdapter.getBotContextSwitch() != null) { - if (position == 0) { - return; - } - position--; - if (!mentionGridLayoutManager.isFirstRow(position)) { - outRect.top = AndroidUtilities.dp(2); - } - } else { - outRect.top = AndroidUtilities.dp(2); - } - outRect.right = mentionGridLayoutManager.isLastInRow(position) ? 0 : AndroidUtilities.dp(2); - } - } - }); - mentionListView.setItemAnimator(null); - mentionListView.setLayoutAnimation(null); - mentionListView.setClipToPadding(false); - mentionListView.setLayoutManager(mentionLayoutManager); - mentionListView.setOverScrollMode(RecyclerListView.OVER_SCROLL_NEVER); - mentionContainer.addView(mentionListView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); - - mentionListView.setAdapter(mentionsAdapter = new MentionsAdapter(context, false, dialog_id, threadMessageId, new MentionsAdapter.MentionsAdapterDelegate() { - @Override - public void needChangePanelVisibility(boolean show) { - if ((mentionsAdapter.isStickers() || mentionsAdapter.isBotContext()) && mentionsAdapter.isMediaLayout()) { - mentionListView.setLayoutManager(mentionGridLayoutManager); - } else { - mentionListView.setLayoutManager(mentionLayoutManager); - } - if (show && bottomOverlay.getVisibility() == View.VISIBLE && !searchingForUser) { - show = false; - } -// final int mentionContainerTranslationHidden = AndroidUtilities.dp(8) * (mentionLayoutManager.getReverseLayout() ? -1 : 1); - if (show) { - if (mentionListAnimation != null) { - mentionListAnimation.cancel(); - mentionListAnimation = null; - } - - if (mentionContainer.getVisibility() == View.VISIBLE) { - mentionContainer.setAlpha(1.0f); - return; - } - if ((mentionsAdapter.isStickers() || mentionsAdapter.isBotContext()) && mentionsAdapter.isMediaLayout()) { - mentionGridLayoutManager.scrollToPositionWithOffset(0, 10000); - } else if (!mentionLayoutManager.getReverseLayout()) { - mentionLayoutManager.scrollToPositionWithOffset(0, mentionLayoutManager.getReverseLayout() ? -10000 : 10000); - } - if (allowStickersPanel && (!mentionsAdapter.isBotContext() || (allowContextBotPanel || allowContextBotPanelSecond))) { - if (currentEncryptedChat != null && mentionsAdapter.isBotContext()) { - SharedPreferences preferences = MessagesController.getGlobalMainSettings(); - if (!preferences.getBoolean("secretbot", false)) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), themeDelegate); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setMessage(LocaleController.getString("SecretChatContextBotAlert", R.string.SecretChatContextBotAlert)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); - showDialog(builder.create()); - preferences.edit().putBoolean("secretbot", true).commit(); - } - } - mentionContainer.setVisibility(View.VISIBLE); - updateMessageListAccessibilityVisibility(); - mentionContainer.setTag(null); - mentionListAnimation = new AnimatorSet(); - mentionListAnimation.playTogether( - ObjectAnimator.ofFloat(mentionContainer, View.ALPHA, 0.0f, 1.0f) -// ObjectAnimator.ofFloat(mentionContainer, View.TRANSLATION_Y, mentionContainerTranslationHidden, 0f) - ); - mentionListAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListAnimation = null; - } - } - - @Override - public void onAnimationCancel(Animator animation) { - if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListAnimation = null; - } - } - }); - mentionListAnimation.setDuration(200); - mentionListAnimation.setInterpolator(CubicBezierInterpolator.DEFAULT); - mentionListAnimation.start(); - } else { - mentionContainer.setAlpha(1.0f); -// mentionContainer.setTranslationY(0f); - mentionContainer.setVisibility(View.INVISIBLE); - updateMessageListAccessibilityVisibility(); - } - } else { - if (mentionListAnimation != null) { - mentionListAnimation.cancel(); - mentionListAnimation = null; - } - - if (mentionContainer.getVisibility() == View.GONE) { - return; - } - if (allowStickersPanel) { - mentionListAnimation = new AnimatorSet(); - mentionListAnimation.playTogether( - ObjectAnimator.ofFloat(mentionContainer, View.ALPHA, 0.0f) -// ObjectAnimator.ofFloat(mentionContainer, View.TRANSLATION_Y, 0, mentionContainerTranslationHidden) - ); - mentionListAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionContainer.setVisibility(View.GONE); - mentionContainer.setTag(null); - updateMessageListAccessibilityVisibility(); - mentionListAnimation = null; - } - } - - @Override - public void onAnimationCancel(Animator animation) { - if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListAnimation = null; - } - } - }); - mentionListAnimation.setDuration(200); - mentionListAnimation.setInterpolator(CubicBezierInterpolator.DEFAULT); - mentionListAnimation.start(); - } else { - mentionContainer.setTag(null); -// mentionContainer.setTranslationY(mentionContainerTranslationHidden); - mentionContainer.setVisibility(View.GONE); - updateMessageListAccessibilityVisibility(); - } - } - } - - @Override - public void onContextSearch(boolean searching) { - if (chatActivityEnterView != null) { - chatActivityEnterView.setCaption(mentionsAdapter.getBotCaption()); - chatActivityEnterView.showContextProgress(searching); - } - } - - @Override - public void onContextClick(TLRPC.BotInlineResult result) { - if (getParentActivity() == null || result.content == null) { - return; - } - if (result.type.equals("video") || result.type.equals("web_player_video")) { - int[] size = MessageObject.getInlineResultWidthAndHeight(result); - EmbedBottomSheet.show(getParentActivity(), null, botContextProvider, result.title != null ? result.title : "", result.description, result.content.url, result.content.url, size[0], size[1], isKeyboardVisible()); - } else { - processExternalUrl(0, result.content.url, false); - } - } - }, themeDelegate)); if (!ChatObject.isChannel(currentChat) || currentChat.megagroup) { - mentionsAdapter.setBotInfo(botInfo); + mentionContainer.getAdapter().setBotInfo(botInfo); } - mentionsAdapter.setParentFragment(this); - mentionsAdapter.setChatInfo(chatInfo); - mentionsAdapter.setNeedUsernames(currentChat != null); - mentionsAdapter.setNeedBotContext(true); - mentionsAdapter.setBotsCount(currentChat != null ? botsCount : 1); - mentionListView.setOnItemClickListener(mentionsOnItemClickListener = (view, position) -> { - if (mentionsAdapter.isBannedInline()) { + mentionContainer.getAdapter().setParentFragment(this); + mentionContainer.getAdapter().setChatInfo(chatInfo); + mentionContainer.getAdapter().setNeedUsernames(currentChat != null); + mentionContainer.getAdapter().setNeedBotContext(true); + mentionContainer.getAdapter().setBotsCount(currentChat != null ? botsCount : 1); + mentionContainer.getListView().setOnItemClickListener(mentionsOnItemClickListener = (view, position) -> { + if (position == 0 || mentionContainer.getAdapter().isBannedInline()) { return; } - Object object = mentionsAdapter.getItem(position); - int start = mentionsAdapter.getResultStartPosition(); - int len = mentionsAdapter.getResultLength(); + position--; + Object object = mentionContainer.getAdapter().getItem(position); + int start = mentionContainer.getAdapter().getResultStartPosition(); + int len = mentionContainer.getAdapter().getResultLength(); if (object instanceof TLRPC.TL_document) { if (chatMode == 0 && checkSlowMode(view)) { return; @@ -6915,7 +6664,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not sendAnimationData = ((StickerCell) view).getSendAnimationData(); } TLRPC.TL_document document = (TLRPC.TL_document) object; - Object parent = mentionsAdapter.getItemParent(position); + Object parent = mentionContainer.getAdapter().getItemParent(position); if (chatMode == MODE_SCHEDULED) { String query = stickersAdapter.getQuery(); AlertsCreator.createScheduleDatePickerDialog(getParentActivity(), dialog_id, (notify, scheduleDate) -> SendMessagesHelper.getInstance(currentAccount).sendSticker(document, query, dialog_id, replyingMessageObject, getThreadMessage(), parent, null, notify, scheduleDate), themeDelegate); @@ -6949,7 +6698,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } } else if (object instanceof String) { - if (mentionsAdapter.isBotCommands()) { + if (mentionContainer.getAdapter().isBotCommands()) { if (chatMode == MODE_SCHEDULED) { AlertsCreator.createScheduleDatePickerDialog(getParentActivity(), dialog_id, (notify, scheduleDate) -> { getSendMessagesHelper().sendMessage((String) object, dialog_id, replyingMessageObject, getThreadMessage(), null, false, null, null, null, notify, scheduleDate, null); @@ -6995,9 +6744,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if ((result.type.equals("photo") && (result.photo != null || result.content != null) || result.type.equals("gif") && (result.document != null || result.content != null) || result.type.equals("video") && (result.document != null/* || result.content_url != null*/))) { - ArrayList arrayList = botContextResults = new ArrayList<>(mentionsAdapter.getSearchResultBotContext()); + ArrayList arrayList = botContextResults = new ArrayList<>(mentionContainer.getAdapter().getSearchResultBotContext()); PhotoViewer.getInstance().setParentActivity(getParentActivity(), themeDelegate); - PhotoViewer.getInstance().openPhotoForSelect(arrayList, mentionsAdapter.getItemPosition(position), 3, false, botContextProvider, ChatActivity.this); + PhotoViewer.getInstance().openPhotoForSelect(arrayList, mentionContainer.getAdapter().getItemPosition(position), 3, false, botContextProvider, ChatActivity.this); } else { if (chatMode == MODE_SCHEDULED) { AlertsCreator.createScheduleDatePickerDialog(getParentActivity(), dialog_id, (notify, scheduleDate) -> sendBotInlineResult(result, notify, scheduleDate), themeDelegate); @@ -7011,16 +6760,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not String code = ((MediaDataController.KeywordResult) object).emoji; chatActivityEnterView.addEmojiToRecent(code); chatActivityEnterView.replaceWithText(start, len, code, true); + mentionContainer.updateVisibility(false); } }); - - mentionListView.setOnItemLongClickListener((view, position) -> { - if (getParentActivity() == null || !mentionsAdapter.isLongClickEnabled()) { + mentionContainer.getListView().setOnItemLongClickListener((view, position) -> { + if (getParentActivity() == null || !mentionContainer.getAdapter().isLongClickEnabled()) { return false; } - Object object = mentionsAdapter.getItem(position); + Object object = mentionContainer.getAdapter().getItem(position); if (object instanceof String) { - if (mentionsAdapter.isBotCommands()) { + if (mentionContainer.getAdapter().isBotCommands()) { if (URLSpanBotCommand.enabled) { chatActivityEnterView.setFieldText(""); chatActivityEnterView.setCommand(null, (String) object, true, currentChat != null && currentChat.megagroup); @@ -7031,7 +6780,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), themeDelegate); builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setMessage(LocaleController.getString("ClearSearch", R.string.ClearSearch)); - builder.setPositiveButton(LocaleController.getString("ClearButton", R.string.ClearButton).toUpperCase(), (dialogInterface, i) -> mentionsAdapter.clearRecentHashtags()); + builder.setPositiveButton(LocaleController.getString("ClearButton", R.string.ClearButton).toUpperCase(), (dialogInterface, i) -> mentionContainer.getAdapter().clearRecentHashtags()); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); showDialog(builder.create()); return true; @@ -7040,30 +6789,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return false; }); - mentionListView.setOnScrollListener(new RecyclerView.OnScrollListener() { - - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - mentionListViewIsScrolling = newState != RecyclerView.SCROLL_STATE_IDLE; - mentionListViewIsDragging = newState == RecyclerView.SCROLL_STATE_DRAGGING; - } - - @Override - public void onScrolled(RecyclerView recyclerView, int dx, int dy) { - int lastVisibleItem; - if ((mentionsAdapter.isStickers() || mentionsAdapter.isBotContext()) && mentionsAdapter.isMediaLayout()) { - lastVisibleItem = mentionGridLayoutManager.findLastVisibleItemPosition(); - } else { - lastVisibleItem = mentionLayoutManager.findLastVisibleItemPosition(); - } - int visibleItemCount = lastVisibleItem == RecyclerView.NO_POSITION ? 0 : lastVisibleItem; - if (visibleItemCount > 0 && lastVisibleItem > mentionsAdapter.getItemCount() - 5) { - mentionsAdapter.searchForContextBotForNextOffset(); - } - mentionListViewUpdateLayout(); - } - }); - pagedownButtonImage = new ImageView(context); pagedownButtonImage.setImageResource(R.drawable.pagedown); pagedownButtonImage.setScaleType(ImageView.ScaleType.CENTER); @@ -7206,24 +6931,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not reactionsMentiondownButton.addView(reactionsMentiondownButtonCounter, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 28, Gravity.TOP | Gravity.LEFT)); reactionsMentiondownButton.setContentDescription(LocaleController.getString("AccDescrReactionMentionDown", R.string.AccDescrReactionMentionDown)); - if (!inMenuMode) { - fragmentLocationContextView = new FragmentContextView(context, this, true, themeDelegate); - fragmentContextView = new FragmentContextView(context, this, false, themeDelegate) { - @Override - protected void playbackSpeedChanged(float value) { - if (Math.abs(value - 1.0f) < 0.001f || Math.abs(value - 1.8f) < 0.001f) { - undoView.showWithAction(0, Math.abs(value - 1.0f) > 0.001f ? UndoView.ACTION_PLAYBACK_SPEED_ENABLED : UndoView.ACTION_PLAYBACK_SPEED_DISABLED, value, null, null); - } + fragmentLocationContextView = new FragmentContextView(context, this, true, themeDelegate); + fragmentContextView = new FragmentContextView(context, this, false, themeDelegate) { + @Override + protected void playbackSpeedChanged(float value) { + if (Math.abs(value - 1.0f) < 0.001f || Math.abs(value - 1.8f) < 0.001f) { + undoView.showWithAction(0, Math.abs(value - 1.0f) > 0.001f ? UndoView.ACTION_PLAYBACK_SPEED_ENABLED : UndoView.ACTION_PLAYBACK_SPEED_DISABLED, value, null, null); } + } + }; + contentView.addView(fragmentLocationContextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, Gravity.TOP | Gravity.LEFT, 0, -36, 0, 0)); + contentView.addView(fragmentContextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, Gravity.TOP | Gravity.LEFT, 0, -36, 0, 0)); + fragmentContextView.setAdditionalContextView(fragmentLocationContextView); + fragmentLocationContextView.setAdditionalContextView(fragmentContextView); - }; - contentView.addView(fragmentLocationContextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, Gravity.TOP | Gravity.LEFT, 0, -36, 0, 0)); - contentView.addView(fragmentContextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, Gravity.TOP | Gravity.LEFT, 0, -36, 0, 0)); - - fragmentContextView.setAdditionalContextView(fragmentLocationContextView); - fragmentLocationContextView.setAdditionalContextView(fragmentContextView); - } + fragmentContextView.setEnabled(!inPreviewMode); + fragmentLocationContextView.setEnabled(!inPreviewMode); if (chatMode != 0) { fragmentContextView.setSupportsCalls(false); @@ -7369,21 +7093,24 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not topLineView.setTranslationY(animatedTop); } } + if (mentionContainer != null) { + mentionContainer.setTranslationY(dy); + } - changeBoundAnimator = ValueAnimator.ofFloat(1f, 0); + changeBoundAnimator = ValueAnimator.ofFloat(dy, 0); changeBoundAnimator.addUpdateListener(a -> { - int v = (int) (dy * (float) a.getAnimatedValue()); - animatedTop = v; + float top = (float) a.getAnimatedValue(); + animatedTop = (int) top; if (topView != null && topView.getVisibility() == View.VISIBLE) { - topView.setTranslationY(animatedTop + (1f - topViewEnterProgress) * topView.getLayoutParams().height); + topView.setTranslationY(top + (1f - topViewEnterProgress) * topView.getLayoutParams().height); if (topLineView != null) { - topLineView.setTranslationY(animatedTop); + topLineView.setTranslationY(top); } } else { if (mentionContainer != null) { - mentionContainer.setTranslationY(v); + mentionContainer.setTranslationY(top); } - chatListView.setTranslationY(v); + chatListView.setTranslationY(top); invalidateChatListViewTopPadding(); invalidateMessagesVisiblePart(); } @@ -7400,6 +7127,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } else { chatListView.setTranslationY(0); + if (mentionContainer != null) { + mentionContainer.setTranslationY(0); + } } changeBoundAnimator = null; } @@ -7450,6 +7180,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatActivityEnterView.setDelegate(new ChatActivityEnterView.ChatActivityEnterViewDelegate() { int lastSize; + boolean isEditTextItemVisibilitySuppressed; @Override public int getContentViewHeight() { @@ -7474,8 +7205,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatActivityEnterViewAnimateBeforeSending = true; } } - if (mentionsAdapter != null) { - mentionsAdapter.addHashtagsFromMessage(message); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().addHashtagsFromMessage(message); } if (scheduleDate != 0) { if (scheduledMessagesCount == -1) { @@ -7524,22 +7255,73 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (end - start > 0) { if (editTextItem.getTag() == null) { editTextItem.setTag(1); - editTextItem.setVisibility(View.VISIBLE); - headerItem.setVisibility(View.GONE); - attachItem.setVisibility(View.GONE); + + if (editTextItem.getVisibility() != View.VISIBLE) { + if (chatMode == 0 && threadMessageId == 0 && !UserObject.isReplyUser(currentUser) && reportType < 0) { + editTextItem.setVisibility(View.VISIBLE); + headerItem.setVisibility(View.GONE); + attachItem.setVisibility(View.GONE); + } else { + ValueAnimator valueAnimator = ValueAnimator.ofFloat(AndroidUtilities.dp(48), 0); + valueAnimator.setDuration(220); + valueAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT); + valueAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + actionBar.setMenuOffsetSuppressed(true); + editTextItem.setVisibility(View.VISIBLE); + menu.translateXItems(AndroidUtilities.dp(48)); + } + + @Override + public void onAnimationEnd(Animator animation) { + actionBar.setMenuOffsetSuppressed(false); + } + }); + valueAnimator.addUpdateListener(animation -> menu.translateXItems((float) animation.getAnimatedValue())); + valueAnimator.start(); + } + } } editTextStart = start; editTextEnd = end; } else { if (editTextItem.getTag() != null) { editTextItem.setTag(null); - editTextItem.setVisibility(View.GONE); - if (chatActivityEnterView.hasText() && TextUtils.isEmpty(chatActivityEnterView.getSlowModeTimer())) { - headerItem.setVisibility(View.GONE); - attachItem.setVisibility(View.VISIBLE); - } else { - headerItem.setVisibility(View.VISIBLE); - attachItem.setVisibility(View.GONE); + if (editTextItem.getVisibility() != View.GONE) { + if (chatMode == 0 && threadMessageId == 0 && !UserObject.isReplyUser(currentUser) && reportType < 0) { + editTextItem.setVisibility(View.GONE); + + if (chatActivityEnterView.hasText() && TextUtils.isEmpty(chatActivityEnterView.getSlowModeTimer())) { + headerItem.setVisibility(View.GONE); + attachItem.setVisibility(View.VISIBLE); + } else { + headerItem.setVisibility(View.VISIBLE); + attachItem.setVisibility(View.GONE); + } + } else { + ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, AndroidUtilities.dp(48)); + valueAnimator.setDuration(220); + valueAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT); + valueAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + actionBar.setMenuOffsetSuppressed(true); + isEditTextItemVisibilitySuppressed = true; + } + + @Override + public void onAnimationEnd(Animator animation) { + editTextItem.setVisibility(View.GONE); + menu.translateXItems(0); + + actionBar.setMenuOffsetSuppressed(false); + isEditTextItemVisibilitySuppressed = false; + } + }); + valueAnimator.addUpdateListener(animation -> menu.translateXItems((float) animation.getAnimatedValue())); + valueAnimator.start(); + } } } } @@ -7551,8 +7333,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (stickersAdapter != null && chatActivityEnterView != null && chatActivityEnterView.getVisibility() == View.VISIBLE && (bottomOverlay == null || bottomOverlay.getVisibility() != View.VISIBLE)) { stickersAdapter.searchEmojiByKeyword(text); } - if (mentionsAdapter != null) { - mentionsAdapter.searchUsernameOrHashtag(text.toString(), chatActivityEnterView.getCursorPosition(), messages, false, false); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().searchUsernameOrHashtag(text.toString(), chatActivityEnterView.getCursorPosition(), messages, false, false); } if (waitingForCharaterEnterRunnable != null) { AndroidUtilities.cancelRunOnUIThread(waitingForCharaterEnterRunnable); @@ -7591,7 +7373,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (actionBar.isSearchFieldVisible()) { return; } - if (editTextItem != null) { + if (editTextItem != null && !isEditTextItemVisibilitySuppressed) { editTextItem.setVisibility(View.GONE); } if (TextUtils.isEmpty(chatActivityEnterView.getSlowModeTimer())) { @@ -7612,7 +7394,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (headerItem != null) { headerItem.setVisibility(View.VISIBLE); } - if (editTextItem != null) { + if (editTextItem != null && !isEditTextItemVisibilitySuppressed) { editTextItem.setVisibility(View.GONE); } if (attachItem != null) { @@ -7629,7 +7411,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (!loading) { - mentionsAdapter.setNeedBotContext(true); + if (mentionContainer != null) { + mentionContainer.getAdapter().setNeedBotContext(true); + } if (editingMessageObject != null) { AndroidUtilities.runOnUIThread(() -> hideFieldPanel(true), 30); } @@ -7656,24 +7440,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (stickersPanel.getVisibility() == View.VISIBLE) { stickersPanel.setVisibility(View.INVISIBLE); } - if (mentionContainer != null && mentionContainer.getVisibility() == View.VISIBLE) { - mentionContainer.setVisibility(View.INVISIBLE); - updateMessageListAccessibilityVisibility(); - } } else { allowStickersPanel = true; if (stickersPanel.getVisibility() == View.INVISIBLE) { stickersPanel.setVisibility(View.VISIBLE); } - if (mentionContainer != null && mentionContainer.getVisibility() == View.INVISIBLE && (!mentionsAdapter.isBotContext() || (allowContextBotPanel || allowContextBotPanelSecond))) { - mentionContainer.setVisibility(View.VISIBLE); - mentionContainer.setTag(null); - updateMessageListAccessibilityVisibility(); - } } allowContextBotPanel = !chatActivityEnterView.isPopupShowing(); - checkContextBotPanel(); +// checkContextBotPanel(); int size2 = size + (chatActivityEnterView.isPopupShowing() ? 1 << 16 : 0); if (lastSize != size2) { chatActivityEnterViewAnimateFromTop = 0; @@ -7688,7 +7463,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not emojiButtonRed.setVisibility(View.GONE); } allowContextBotPanelSecond = !opened; - checkContextBotPanel(); +// checkContextBotPanel(); } @Override @@ -7785,9 +7560,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not bottomPanelTranslationY = chatActivityEnterView.panelAnimationInProgress() ? chatActivityEnterView.getEmojiPadding() - translation : 0; bottomPanelTranslationYReverse = chatActivityEnterView.panelAnimationInProgress() ? translation : 0; chatActivityEnterView.setTranslationY(translation); + mentionContainer.setTranslationY(translation); contentView.setEmojiOffset(chatActivityEnterView.panelAnimationInProgress(), bottomPanelTranslationY); translation += chatActivityEnterView.getTopViewTranslation(); + mentionContainer.setTranslationY(translation); chatListView.setTranslationY(translation); invalidateChatListViewTopPadding(); @@ -7849,9 +7626,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (progressView != null) { progressView.setTranslationY(translationY); } - if (mentionContainer != null) { - mentionContainer.setTranslationY(translationY); - } invalidateChatListViewTopPadding(); invalidateMessagesVisiblePart(); if (fragmentView != null) { @@ -7875,9 +7649,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (progressView != null) { progressView.setTranslationY(0); } - if (mentionContainer != null) { - mentionContainer.setTranslationY(0); - } } } }; @@ -8132,8 +7903,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not searchUserButton.setBackgroundDrawable(Theme.createSelectorDrawable(getThemedColor(Theme.key_actionBarActionModeDefaultSelector), 1)); searchContainer.addView(searchUserButton, LayoutHelper.createFrame(48, 48, Gravity.LEFT | Gravity.TOP, 48, 0, 0, 0)); searchUserButton.setOnClickListener(view -> { - mentionLayoutManager.setReverseLayout(true); - mentionsAdapter.setSearchingMentions(true); + if (mentionContainer != null) { + mentionContainer.setReversed(true); + mentionContainer.getAdapter().setSearchingMentions(true); + } searchCalendarButton.setVisibility(View.GONE); searchUserButton.setVisibility(View.GONE); searchingForUser = true; @@ -8223,7 +7996,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } super.dispatchDraw(canvas); } - }; bottomOverlayChat.isTopView = false; bottomOverlayChat.drawBlur = false; @@ -8287,18 +8059,43 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { if (ChatObject.isChannel(currentChat) && !(currentChat instanceof TLRPC.TL_channelForbidden)) { if (ChatObject.isNotInChat(currentChat)) { - if (chatInviteRunnable != null) { - AndroidUtilities.cancelRunOnUIThread(chatInviteRunnable); - chatInviteRunnable = null; - } - showBottomOverlayProgress(true, true); - getMessagesController().addUserToChat(currentChat.id, getUserConfig().getCurrentUser(), 0, null, ChatActivity.this, null); - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.closeSearchByActiveAction); + if (currentChat.join_request) { +// showDialog(new JoinGroupAlert(context, currentChat, null, this)); + showBottomOverlayProgress(true, true); + MessagesController.getInstance(currentAccount).addUserToChat( + currentChat.id, + UserConfig.getInstance(currentAccount).getCurrentUser(), + 0, + null, + null, + true, + () -> { + showBottomOverlayProgress(false, true); + }, + err -> { + SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); + preferences.edit().putLong("dialog_join_requested_time_" + dialog_id, System.currentTimeMillis()).commit(); + if (err != null && "INVITE_REQUEST_SENT".equals(err.text)) { + JoinGroupAlert.showBulletin(context, this, ChatObject.isChannel(currentChat) && !currentChat.megagroup); + } + showBottomOverlayProgress(false, true); + return false; + } + ); + } else { + if (chatInviteRunnable != null) { + AndroidUtilities.cancelRunOnUIThread(chatInviteRunnable); + chatInviteRunnable = null; + } + showBottomOverlayProgress(true, true); + getMessagesController().addUserToChat(currentChat.id, getUserConfig().getCurrentUser(), 0, null, ChatActivity.this, null); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.closeSearchByActiveAction); - if (hasReportSpam() && reportSpamButton.getTag(R.id.object_tag) != null) { - SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - preferences.edit().putInt("dialog_bar_vis3" + dialog_id, 3).commit(); - getNotificationCenter().postNotificationName(NotificationCenter.peerSettingsDidLoad, dialog_id); + if (hasReportSpam() && reportSpamButton.getTag(R.id.object_tag) != null) { + SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); + preferences.edit().putInt("dialog_bar_vis3" + dialog_id, 3).commit(); + getNotificationCenter().postNotificationName(NotificationCenter.peerSettingsDidLoad, dialog_id); + } } } else { toggleMute(true); @@ -8326,7 +8123,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not bottomOverlayImage = new ImageView(context); int color = getThemedColor(Theme.key_chat_fieldOverlayText); - bottomOverlayImage.setImageResource(R.drawable.log_info); + bottomOverlayImage.setImageResource(R.drawable.msg_help); bottomOverlayImage.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.MULTIPLY)); bottomOverlayImage.setScaleType(ImageView.ScaleType.CENTER); if (Build.VERSION.SDK_INT >= 21) { @@ -8578,7 +8375,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not topBottom[1] = chatListView.getBottom() - blurredViewBottomOffset; topBottom[0] = chatListView.getTop() + chatListViewPaddingTop - AndroidUtilities.dp(4); }); - emojiAnimationsOverlay = new EmojiAnimationsOverlay(ChatActivity.this, contentView, chatListView, currentAccount, dialog_id, threadMessageId); + emojiAnimationsOverlay = new EmojiAnimationsOverlay(ChatActivity.this, contentView, chatListView, currentAccount, dialog_id, threadMessageId) { + @Override + public void onAllEffectsEnd() { + updateMessagesVisiblePart(false); + } + }; actionBar.setDrawBlurBackground(contentView); TLRPC.Dialog dialog = getMessagesController().dialogs_dict.get(dialog_id); @@ -8694,7 +8496,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not setMaxLines(1); setEllipsize(TextUtils.TruncateAt.END); setTextColor(getThemedColor(Theme.key_featuredStickers_buttonText)); - setBackground(Theme.getRoundRectSelectorWithBackgroundDrawable(AndroidUtilities.dp(16), getThemedColor(Theme.key_featuredStickers_addButton), 0x60ffffff)); + setBackground(Theme.AdaptiveRipple.filledRect(getThemedColor(Theme.key_featuredStickers_addButton), 16)); setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); setGravity(Gravity.CENTER); @@ -8704,7 +8506,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure( - View.MeasureSpec.makeMeasureSpec(Math.min(View.MeasureSpec.getSize(widthMeasureSpec), (int) (AndroidUtilities.displaySize.x * 0.35f)), View.MeasureSpec.AT_MOST), + View.MeasureSpec.makeMeasureSpec(Math.min(View.MeasureSpec.getSize(widthMeasureSpec), (int) (AndroidUtilities.displaySize.x * 0.45f)), View.MeasureSpec.AT_MOST), heightMeasureSpec ); } @@ -8920,7 +8722,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private void searchUserMessages(TLRPC.User user, TLRPC.Chat chat) { searchingUserMessages = user; searchingChatMessages = chat; - if (searchItem == null || searchingUserMessages == null && searchingChatMessages == null) { + if (searchItem == null || mentionContainer == null || searchingUserMessages == null && searchingChatMessages == null) { return; } String name; @@ -8943,7 +8745,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not Spannable spannable = new SpannableString(from + " " + name); spannable.setSpan(new ForegroundColorSpan(getThemedColor(Theme.key_actionBarDefaultSubtitle)), from.length() + 1, spannable.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); searchItem.setSearchFieldCaption(spannable); - mentionsAdapter.searchUsernameOrHashtag(null, 0, null, false, true); + mentionContainer.getAdapter().searchUsernameOrHashtag(null, 0, null, false, true); searchItem.setSearchFieldHint(null); searchItem.clearSearchText(); getMediaDataController().searchMessagesInChat("", dialog_id, mergeDialogId, classGuid, 0, threadMessageId, searchingUserMessages, searchingChatMessages); @@ -9313,7 +9115,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updateChatListViewTopPadding() { - if (!invalidateChatListViewTopPadding || chatListView == null || fixedKeyboardHeight > 0) { + if (!invalidateChatListViewTopPadding || chatListView == null || (fixedKeyboardHeight > 0 && searchExpandProgress == 0)) { return; } float topPanelViewH = Math.max(0, AndroidUtilities.dp(48) + topChatPanelViewOffset); @@ -9332,7 +9134,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatListViewPaddingTop += blurredViewTopOffset; chatListViewPaddingVisibleOffset = 0; chatListViewPaddingTop += contentPanTranslation + bottomPanelTranslationY; - + float searchExpandOffset = 0; + if (searchExpandProgress != 0 && chatActivityEnterView.getVisibility() == View.VISIBLE) { + chatListViewPaddingTop -= (searchExpandOffset = searchExpandProgress * (chatActivityEnterView.getMeasuredHeight() - searchContainer.getMeasuredHeight())); + } if (bottomPanelTranslationY == 0 && !chatActivityEnterView.panelAnimationInProgress() && (contentView.getLayoutParams().height < 0 || (contentView.getKeyboardHeight() <= AndroidUtilities.dp(20) && chatActivityEnterView.isPopupShowing()))) { chatListViewPaddingTop += contentView.getKeyboardHeight() <= AndroidUtilities.dp(20) && !AndroidUtilities.isInMultiwindow && !inBubbleMode ? chatActivityEnterView.getEmojiPadding() : contentView.getKeyboardHeight(); } @@ -9354,7 +9159,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (floatingDateView != null) { - floatingDateView.setTranslationY(chatListView.getTranslationY() + chatListViewPaddingTop + floatingDateViewOffset - AndroidUtilities.dp(4)); + floatingDateView.setTranslationY(chatListView.getTranslationY() - searchExpandOffset + chatListViewPaddingTop + floatingDateViewOffset - AndroidUtilities.dp(4)); } int p = chatListView.getMeasuredHeight() * 2 / 3; @@ -9460,15 +9265,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (topChatPanelView != null) { topChatPanelView.setTranslationY(contentPanTranslation + contentPaddingTop + topChatPanelViewOffset); } - if (mentionListView != null && mentionLayoutManager != null && mentionsAdapter != null && !mentionsAdapter.isBotCommands() && !mentionsAdapter.isStickers()) { - if (mentionLayoutManager.getReverseLayout()) { - mentionListView.setTranslationY(contentPanTranslation + contentPaddingTop); - } else { - mentionListView.setTranslationY(bottomPanelTranslationYReverse); - } - } else if (mentionListView != null) { - mentionListView.setTranslationY(bottomPanelTranslationYReverse); - } if (alertView != null && alertView.getVisibility() == View.VISIBLE) { alertView.setTranslationY(contentPanTranslation + contentPaddingTop - AndroidUtilities.dp(50) * (1f - alertViewEnterProgress)); } @@ -9724,7 +9520,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ObjectAnimator.ofFloat(bottomOverlayChatText, View.SCALE_X, 1.0f), ObjectAnimator.ofFloat(bottomOverlayChatText, View.SCALE_Y, 1.0f), ObjectAnimator.ofFloat(bottomOverlayChatText, View.ALPHA, 1.0f)); - } bottomOverlayAnimation.addListener(new AnimatorListenerAdapter() { @Override @@ -9760,62 +9555,21 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void sendBotInlineResult(TLRPC.BotInlineResult result, boolean notify, int scheduleDate) { - long uid = mentionsAdapter.getContextBotId(); + if (mentionContainer == null) { + return; + } + long uid = mentionContainer.getAdapter().getContextBotId(); HashMap params = new HashMap<>(); params.put("id", result.id); params.put("query_id", "" + result.query_id); params.put("bot", "" + uid); - params.put("bot_name", mentionsAdapter.getContextBotName()); + params.put("bot_name", mentionContainer.getAdapter().getContextBotName()); SendMessagesHelper.prepareSendingBotContextResult(getAccountInstance(), result, params, dialog_id, replyingMessageObject, getThreadMessage(), notify, scheduleDate); chatActivityEnterView.setFieldText(""); hideFieldPanel(false); getMediaDataController().increaseInlineRaiting(uid); } - private void mentionListViewUpdateLayout() { - if (mentionListView.getChildCount() <= 0) { - mentionListViewLastViewPosition = -1; - return; - } - View child = mentionListView.getChildAt(mentionListView.getChildCount() - 1); - RecyclerListView.Holder holder = (RecyclerListView.Holder) mentionListView.findContainingViewHolder(child); - if (mentionLayoutManager.getReverseLayout()) { - if (holder != null) { - mentionListViewLastViewPosition = holder.getAdapterPosition(); - mentionListViewLastViewTop = child.getBottom(); - } else { - mentionListViewLastViewPosition = -1; - } - - child = mentionListView.getChildAt(0); - holder = (RecyclerListView.Holder) mentionListView.findContainingViewHolder(child); - int newOffset = child.getBottom() < mentionListView.getMeasuredHeight() && holder != null && holder.getAdapterPosition() == 0 ? child.getBottom() : mentionListView.getMeasuredHeight(); - if (mentionListViewScrollOffsetY != newOffset) { - mentionListView.setBottomGlowOffset(mentionListViewScrollOffsetY = newOffset); - mentionListView.setTopGlowOffset(0); - mentionListView.invalidate(); - mentionContainer.invalidate(); - } - } else { - if (holder != null) { - mentionListViewLastViewPosition = holder.getAdapterPosition(); - mentionListViewLastViewTop = child.getTop(); - } else { - mentionListViewLastViewPosition = -1; - } - - child = mentionListView.getChildAt(0); - holder = (RecyclerListView.Holder) mentionListView.findContainingViewHolder(child); - int newOffset = child.getTop() > 0 && holder != null && holder.getAdapterPosition() == 0 ? child.getTop() : 0; - if (mentionListViewScrollOffsetY != newOffset) { - mentionListView.setTopGlowOffset(mentionListViewScrollOffsetY = newOffset); - mentionListView.setBottomGlowOffset(0); - mentionListView.invalidate(); - mentionContainer.invalidate(); - } - } - } - private void checkBotCommands() { URLSpanBotCommand.enabled = false; if (currentUser != null && currentUser.bot) { @@ -9863,7 +9617,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not int scrollDirection = RecyclerAnimationScrollHelper.SCROLL_DIRECTION_UNSET; int end = chatLayoutManager.findLastVisibleItemPosition(); for (int i = chatLayoutManager.findFirstVisibleItemPosition(); i <= end; i++) { - if (i >= chatAdapter.messagesStartRow && i <= chatAdapter.messagesEndRow) { + if (i >= chatAdapter.messagesStartRow && i < chatAdapter.messagesEndRow) { TLRPC.Message message = messages.get(i - chatAdapter.messagesStartRow).messageOwner; if (message != null) { boolean scrollDown = message.date < date; @@ -9896,10 +9650,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } public void processInlineBotContextPM(TLRPC.TL_inlineBotSwitchPM object) { - if (object == null) { + if (object == null || mentionContainer == null) { return; } - TLRPC.User user = mentionsAdapter.getContextBotUser(); + TLRPC.User user = mentionContainer.getAdapter().getContextBotUser(); if (user == null) { return; } @@ -9931,7 +9685,17 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not AndroidUtilities.requestAdjustResize(getParentActivity(), classGuid); } super.dismissInternal(); - onEditTextDialogClose(false); + onEditTextDialogClose(false, true); + } + + @Override + public void onDismissAnimationStart() { + chatAttachAlert.setFocusable(false); + chatActivityEnterView.getEditField().requestFocus(); + if (chatAttachAlert != null && chatAttachAlert.isShowing()) { + AndroidUtilities.requestAdjustResize(getParentActivity(), classGuid); + } + onEditTextDialogClose(false, false); } }; chatAttachAlert.setDelegate(new ChatAttachAlert.ChatAttachViewDelegate() { @@ -9977,7 +9741,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (i == 0) { fillEditingMediaWithCaption(photos.get(0).caption, photos.get(0).entities); } - SendMessagesHelper.prepareSendingMedia(getAccountInstance(), photos, dialog_id, i == 0 ? replyingMessageObject : null, getThreadMessage(), null, button == 4 || forceDocument, arg, editingMessageObject, notify, scheduleDate); + SendMessagesHelper.prepareSendingMedia(getAccountInstance(), photos, dialog_id, replyingMessageObject, getThreadMessage(), null, button == 4 || forceDocument, arg, editingMessageObject, notify, scheduleDate); } afterMessageSend(); chatActivityEnterView.setFieldText(""); @@ -10039,10 +9803,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return keyboardVisible; } - public void onEditTextDialogClose(boolean resetAdjust) { + public void onEditTextDialogClose(boolean resetAdjust, boolean reset) { if (openKeyboardOnAttachMenuClose) { AndroidUtilities.runOnUIThread(() -> chatActivityEnterView.openKeyboard(), 50); - openKeyboardOnAttachMenuClose = false; + if (reset) { + openKeyboardOnAttachMenuClose = false; + } } if (resetAdjust) { AndroidUtilities.requestAdjustResize(getParentActivity(), classGuid); @@ -10732,72 +10498,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not showDialog(chatAttachAlert); } - private void checkContextBotPanel() { - if (allowStickersPanel && mentionsAdapter != null && mentionsAdapter.isBotContext()) { - if (!allowContextBotPanel && !allowContextBotPanelSecond) { - if (mentionContainer.getVisibility() == View.VISIBLE && mentionContainer.getTag() == null) { - if (mentionListAnimation != null) { - mentionListAnimation.cancel(); - } - - mentionContainer.setTag(1); - mentionListAnimation = new AnimatorSet(); - mentionListAnimation.playTogether( - ObjectAnimator.ofFloat(mentionContainer, View.ALPHA, 0.0f) - ); - mentionListAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionContainer.setVisibility(View.INVISIBLE); - mentionListAnimation = null; - updateMessageListAccessibilityVisibility(); - } - } - - @Override - public void onAnimationCancel(Animator animation) { - if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListAnimation = null; - } - } - }); - mentionListAnimation.setDuration(200); - mentionListAnimation.start(); - } - } else { - if (mentionContainer.getVisibility() == View.INVISIBLE || mentionContainer.getTag() != null) { - if (mentionListAnimation != null) { - mentionListAnimation.cancel(); - } - mentionContainer.setTag(null); - mentionContainer.setVisibility(View.VISIBLE); - updateMessageListAccessibilityVisibility(); - mentionListAnimation = new AnimatorSet(); - mentionListAnimation.playTogether( - ObjectAnimator.ofFloat(mentionContainer, View.ALPHA, 0.0f, 1.0f) - ); - mentionListAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListAnimation = null; - } - } - - @Override - public void onAnimationCancel(Animator animation) { - if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListAnimation = null; - } - } - }); - mentionListAnimation.setDuration(200); - mentionListAnimation.start(); - } - } - } - } +// private void checkContextBotPanel() { +// if (allowStickersPanel && mentionContainer != null && mentionContainer.getAdapter() != null && mentionContainer.getAdapter().isBotContext()) { +// mentionContainer.updateVisibility(allowContextBotPanel && allowContextBotPanelSecond); +// } +// } private void checkAutoDownloadMessages(boolean scrollUp) { if (chatListView == null) { @@ -11082,7 +10787,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not Intent videoPickerIntent = new Intent(); videoPickerIntent.setType("video/*"); videoPickerIntent.setAction(Intent.ACTION_GET_CONTENT); - videoPickerIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, FileLoader.MAX_FILE_SIZE); + videoPickerIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, FileLoader.DEFAULT_MAX_FILE_SIZE); Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); @@ -11116,7 +10821,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (Build.VERSION.SDK_INT >= 18) { takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(video)); } - takeVideoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, FileLoader.MAX_FILE_SIZE); + takeVideoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, FileLoader.DEFAULT_MAX_FILE_SIZE); currentPicturePath = video.getAbsolutePath(); } startActivityForResult(takeVideoIntent, 2); @@ -11387,7 +11092,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if ((scheduleDate != 0) == (chatMode == MODE_SCHEDULED)) { waitingForSendingMessageLoad = true; } - AlertsCreator.showSendMediaAlert(getSendMessagesHelper().sendMessage(arrayList, dialog_id, fromMyName, hideCaption, notify, scheduleDate), this, themeDelegate); + int result = getSendMessagesHelper().sendMessage(arrayList, dialog_id, fromMyName, hideCaption, notify, scheduleDate); + AlertsCreator.showSendMediaAlert(result, this, themeDelegate); + if (result != 0) { + AndroidUtilities.runOnUIThread(() -> { + waitingForSendingMessageLoad = false; + hideFieldPanel(true); + }); + } } public boolean shouldShowImport() { @@ -11483,6 +11195,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } chatActivityEnterView.setForceShowSendButton(false, false); final boolean canEditMedia = messageObjectToEdit.canEditMedia(); + replyCloseImageView.setContentDescription(LocaleController.getString("AccDescrCancelEdit", R.string.AccDescrCancelEdit)); if (!mediaEmpty && canEditMedia) { String editButtonText = null; String replaceButtonText; @@ -11511,7 +11224,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { replyIconImageView.setImageResource(R.drawable.group_edit); replyIconImageView.setContentDescription(LocaleController.getString("AccDescrEditing", R.string.AccDescrEditing)); - replyCloseImageView.setContentDescription(LocaleController.getString("AccDescrCancelEdit", R.string.AccDescrCancelEdit)); if (mediaEmpty) { replyNameTextView.setText(LocaleController.getString("EditMessage", R.string.EditMessage)); } else { @@ -11983,7 +11695,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - private void scrollToLastMessage(boolean skipSponsored) { + public void scrollToLastMessage(boolean skipSponsored) { if (chatListView.isFastScrollAnimationRunning()) { return; } @@ -12300,6 +12012,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not updateReactionsMentionButton(true); } getDownloadController().checkUnviewedDownloads(messageCell.getId(), dialog_id); + + if ((chatListItemAnimator == null || !chatListItemAnimator.isRunning()) && (!messageObject.isOutOwner() || messageObject.forcePlayEffect) && messageObject.messageOwner.media != null && !messageObject.messageOwner.media.nopremium && !messageObject.messageOwner.premiumEffectWasPlayed && messageObject.isPremiumSticker() && emojiAnimationsOverlay.isIdle() && emojiAnimationsOverlay.checkPosition(messageCell, chatListViewPaddingTop, chatListView.getMeasuredHeight() - blurredViewBottomOffset)) { + emojiAnimationsOverlay.onTapItem(messageCell, ChatActivity.this); + } } else if (view instanceof ChatActionCell) { ChatActionCell cell = (ChatActionCell) view; messageObject = cell.getMessageObject(); @@ -12716,7 +12432,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { int end = chatLayoutManager.findLastVisibleItemPosition(); for (int i = chatLayoutManager.findFirstVisibleItemPosition(); i <= end; i++) { - if (i >= chatAdapter.messagesStartRow && i <= chatAdapter.messagesEndRow) { + if (i >= chatAdapter.messagesStartRow && i < chatAdapter.messagesEndRow) { MessageObject messageObject = messages.get(i - chatAdapter.messagesStartRow); if (messageObject.getId() == 0) { continue; @@ -13051,19 +12767,25 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentEncryptedChat instanceof TLRPC.TL_encryptedChatRequested) { bottomOverlayText.setText(LocaleController.getString("EncryptionProcessing", R.string.EncryptionProcessing)); bottomOverlay.setVisibility(View.VISIBLE); + chatActivityEnterView.setVisibility(View.INVISIBLE); hideKeyboard = true; } else if (currentEncryptedChat instanceof TLRPC.TL_encryptedChatWaiting) { bottomOverlayText.setText(AndroidUtilities.replaceTags(LocaleController.formatString("AwaitingEncryption", R.string.AwaitingEncryption, "" + currentUser.first_name + ""))); bottomOverlay.setVisibility(View.VISIBLE); + chatActivityEnterView.setVisibility(View.INVISIBLE); hideKeyboard = true; } else if (currentEncryptedChat instanceof TLRPC.TL_encryptedChatDiscarded) { bottomOverlayText.setText(LocaleController.getString("EncryptionRejected", R.string.EncryptionRejected)); bottomOverlay.setVisibility(View.VISIBLE); + chatActivityEnterView.setVisibility(View.INVISIBLE); chatActivityEnterView.setFieldText(""); getMediaDataController().cleanDraft(dialog_id, threadMessageId, false); hideKeyboard = true; } else if (currentEncryptedChat instanceof TLRPC.TL_encryptedChat) { bottomOverlay.setVisibility(View.INVISIBLE); + if (!inPreviewMode) { + chatActivityEnterView.setVisibility(View.VISIBLE); + } } checkRaiseSensors(); checkActionBarMenu(false); @@ -13084,8 +12806,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatActivityEnterView != null) { chatActivityEnterView.onRequestPermissionsResultFragment(requestCode, permissions, grantResults); } - if (mentionsAdapter != null) { - mentionsAdapter.onRequestPermissionsResultFragment(requestCode, permissions, grantResults); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().onRequestPermissionsResultFragment(requestCode, permissions, grantResults); } if (requestCode == BasePermissionsActivity.REQUEST_CODE_EXTERNAL_STORAGE && chatAttachAlert != null) { chatAttachAlert.getPhotoLayout().checkStorage(); @@ -13223,8 +12945,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (!canSave) { - File f = FileLoader.getPathToMessage(messageObject.messageOwner); - if (f.exists()) { + if (messageObject.mediaExists) { canSave = true; } } @@ -13290,7 +13011,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (!canSave) { - File f = FileLoader.getPathToMessage(messageObject.messageOwner); + File f = FileLoader.getInstance(currentAccount).getPathToMessage(messageObject.messageOwner); if (f.exists()) { canSave = true; } @@ -13724,7 +13445,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (chatMode == MODE_PINNED) { avatarContainer.setTitle(LocaleController.formatPluralString("PinnedMessagesCount", getPinnedMessagesCount())); } else if (currentChat != null) { - avatarContainer.setTitle(currentChat.title, currentChat.scam, currentChat.fake); + avatarContainer.setTitle(currentChat.title, currentChat.scam, currentChat.fake, currentChat.verified, false); } else if (currentUser != null) { if (currentUser.self) { avatarContainer.setTitle(LocaleController.getString("SavedMessages", R.string.SavedMessages)); @@ -13732,10 +13453,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (!TextUtils.isEmpty(currentUser.phone)) { avatarContainer.setTitle(PhoneFormat.getInstance().format("+" + currentUser.phone)); } else { - avatarContainer.setTitle(UserObject.getUserName(currentUser), currentUser.scam, currentUser.fake); + avatarContainer.setTitle(UserObject.getUserName(currentUser), currentUser.scam, currentUser.fake, currentUser.verified, getMessagesController().isPremiumUser(currentUser)); } } else { - avatarContainer.setTitle(UserObject.getUserName(currentUser), currentUser.scam, currentUser.fake); + avatarContainer.setTitle(UserObject.getUserName(currentUser), currentUser.scam, currentUser.fake, currentUser.verified, getMessagesController().isPremiumUser(currentUser)); } } setParentActivityTitle(avatarContainer.getTitleTextView().getText()); @@ -13780,13 +13501,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updateTitleIcons() { + updateTitleIcons(false); + } + + private void updateTitleIcons(boolean forceToggleMuted) { if (avatarContainer == null || chatMode != 0) { return; } boolean isMuted = getMessagesController().isDialogMuted(dialog_id); - Drawable rightIcon = isMuted ? getThemedDrawable(Theme.key_drawable_muteIconDrawable) : null; - avatarContainer.setTitleIcons(currentEncryptedChat != null ? getThemedDrawable(Theme.key_drawable_lockIconDrawable) : null, !UserObject.isReplyUser(currentUser) && !isThreadChat() ? rightIcon : null); - if (muteItem != null) { + if (forceToggleMuted) { + isMuted = !isMuted; + } + Drawable rightIcon = null; + if (!UserObject.isReplyUser(currentUser) && !isThreadChat() && isMuted) { + rightIcon = getThemedDrawable(Theme.key_drawable_muteIconDrawable); + } + avatarContainer.setTitleIcons(currentEncryptedChat != null ? getThemedDrawable(Theme.key_drawable_lockIconDrawable) : null, rightIcon); + if (!forceToggleMuted && muteItem != null) { if (isMuted) { muteItem.getRightIcon().setVisibility(View.GONE); muteItem.setTextAndIcon(LocaleController.getString("Unmute", R.string.Unmute), R.drawable.msg_mute); @@ -14005,7 +13736,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (file == null) { - file = FileLoader.getPathToMessage(object.messageOwner); + file = FileLoader.getInstance(currentAccount).getPathToMessage(object.messageOwner); } if (!file.exists()) { return; @@ -14169,16 +13900,24 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } String tempPath = AndroidUtilities.getPath(uri); String originalPath = tempPath; - if (tempPath == null || !BuildVars.NO_SCOPED_STORAGE) { + boolean sendAsUri = false; + if (!BuildVars.NO_SCOPED_STORAGE) { + sendAsUri = true; + } else if (tempPath == null) { originalPath = uri.toString(); tempPath = MediaController.copyFileToCache(uri, "file"); - } - if (tempPath == null) { - showAttachmentError(); - return; + + if (tempPath == null) { + showAttachmentError(); + return; + } } fillEditingMediaWithCaption(null, null); - SendMessagesHelper.prepareSendingDocument(getAccountInstance(), tempPath, originalPath, null, null, null, dialog_id, replyingMessageObject, getThreadMessage(), null, editingMessageObject, true, 0); + if (sendAsUri) { + SendMessagesHelper.prepareSendingDocument(getAccountInstance(), null, null, uri, null, null, dialog_id, replyingMessageObject, getThreadMessage(), null, editingMessageObject, true, 0); + } else { + SendMessagesHelper.prepareSendingDocument(getAccountInstance(), tempPath, originalPath, null, null, null, dialog_id, replyingMessageObject, getThreadMessage(), null, editingMessageObject, true, 0); + } hideFieldPanel(false); } @@ -15012,6 +14751,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } loading = false; + if (onChatMessagesLoaded != null) { + onChatMessagesLoaded.run(); + onChatMessagesLoaded = null; + } + loadSendAsPeers(false); if (chatListView != null && chatScrollHelper != null) { if (first || scrollToTopOnResume || forceScrollToTop) { @@ -15297,8 +15041,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not pinnedMessageTextView[a].invalidate(); } } - if (mentionListView != null) { - mentionListView.invalidateViews(); + if (mentionContainer != null) { + mentionContainer.getListView().invalidateViews(); } if (stickersListView != null) { stickersListView.invalidateViews(); @@ -15315,6 +15059,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not editText.setTextColor(0xffffffff); editText.setTextColor(color); } + if (pinnedMessageButton[0] != null) { + pinnedMessageButton[0].invalidate(); + } + if (pinnedMessageButton[1] != null) { + pinnedMessageButton[1].invalidate(); + } } else if (id == NotificationCenter.didUpdateConnectionState) { int state = ConnectionsManager.getInstance(account).getConnectionState(); if (state == ConnectionsManager.ConnectionStateConnected) { @@ -15333,7 +15083,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (id == NotificationCenter.updateDefaultSendAsPeer) { long chatId = (long) args[0]; if (chatId == dialog_id) { - chatActivityEnterView.updateSendAsButton(); + chatActivityEnterView.updateSendAsButton(true); } } else if (id == NotificationCenter.updateInterfaces) { int updateMask = (Integer) args[0]; @@ -15422,7 +15172,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not checkWaitingForReplies(); } } else if (id == NotificationCenter.didLoadSendAsPeers) { - loadSendAsPeers(); + loadSendAsPeers(true); } else if (id == NotificationCenter.didLoadSponsoredMessages) { addSponsoredMessages(true); } else if (id == NotificationCenter.closeChats) { @@ -15777,7 +15527,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not moveScrollToLastMessage(false); } } - getNotificationsController().playOutChatSound(); + if (obj == null || obj.messageOwner == null || !obj.messageOwner.silent) { + getNotificationsController().playOutChatSound(); + } } } else if (id == NotificationCenter.messageReceivedByAck) { Integer msgId = (Integer) args[0]; @@ -15839,9 +15591,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (ChatObject.isChannel(currentChat) && currentChat.megagroup && fragmentContextView != null) { fragmentContextView.checkCall(openAnimationStartTime == 0 || SystemClock.elapsedRealtime() < openAnimationStartTime + 150); } - loadSendAsPeers(); + loadSendAsPeers(false); if (chatActivityEnterView != null) { - chatActivityEnterView.updateSendAsButton(); + chatActivityEnterView.updateSendAsButton(false); chatActivityEnterView.updateFieldHint(false); } if (chatAdapter != null) { @@ -15868,8 +15620,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatActivityEnterView != null) { chatActivityEnterView.setChatInfo(chatInfo); } - if (mentionsAdapter != null) { - mentionsAdapter.setChatInfo(chatInfo); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().setChatInfo(chatInfo); } if (!isThreadChat()) { if (avatarContainer != null) { @@ -15918,8 +15670,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatListView.invalidateViews(); } if (!ChatObject.isChannel(currentChat) || currentChat != null && currentChat.megagroup) { - if (mentionsAdapter != null) { - mentionsAdapter.setBotInfo(botInfo); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().setBotInfo(botInfo); } if (chatActivityEnterView != null) { chatActivityEnterView.setBotInfo(botInfo); @@ -15929,8 +15681,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatActivityEnterView != null) { chatActivityEnterView.setBotsCount(botsCount, hasBotsCommands, true); } - if (mentionsAdapter != null) { - mentionsAdapter.setBotsCount(botsCount); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().setBotsCount(botsCount); } if (chatMode == 0 && ChatObject.isChannel(currentChat) && mergeDialogId == 0 && chatInfo.migrated_from_chat_id != 0 && !isThreadChat()) { mergeDialogId = -chatInfo.migrated_from_chat_id; @@ -15958,16 +15710,18 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), themeDelegate); builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); if (reason == 0) { - if (currentChat.has_link) { - builder.setMessage(LocaleController.getString("ChannelCantOpenPrivate", R.string.ChannelCantOpenPrivate)); - } else { + if (currentChat instanceof TLRPC.TL_channelForbidden) { builder.setMessage(LocaleController.getString("ChannelCantOpenBannedByAdmin", R.string.ChannelCantOpenBannedByAdmin)); + } else { + builder.setTitle(LocaleController.getString("ChannelPrivate", R.string.ChannelPrivate)); + builder.setMessage(LocaleController.getString("ChannelCantOpenPrivate2", R.string.ChannelCantOpenPrivate2)); } } else if (reason == 1) { builder.setMessage(LocaleController.getString("ChannelCantOpenNa", R.string.ChannelCantOpenNa)); } else if (reason == 2) { builder.setMessage(LocaleController.getString("ChannelCantOpenBanned", R.string.ChannelCantOpenBanned)); } else if (reason == 3) { + builder.setTitle(LocaleController.getString("ChannelPrivate", R.string.ChannelPrivate)); builder.setMessage(LocaleController.getString("JoinByPeekChannelText", R.string.JoinByPeekChannelText)); } builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); @@ -15997,8 +15751,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatActivityEnterView.setAllowStickersAndGifs(true, true); chatActivityEnterView.checkRoundVideo(); } - if (mentionsAdapter != null) { - mentionsAdapter.setNeedBotContext(!chatActivityEnterView.isEditingMessage()); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().setNeedBotContext(!chatActivityEnterView.isEditingMessage()); } } } else if (id == NotificationCenter.messagesReadEncrypted) { @@ -16130,14 +15884,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } } - count = mentionListView.getChildCount(); - for (int a = 0; a < count; a++) { - View view = mentionListView.getChildAt(a); - if (view instanceof ContextLinkCell) { - ContextLinkCell cell = (ContextLinkCell) view; - MessageObject messageObject1 = cell.getMessageObject(); - if (messageObject1 != null && (messageObject1.isVoice() || messageObject1.isMusic())) { - cell.updateButtonState(false, true); + if (mentionContainer != null && mentionContainer.getListView() != null) { + count = mentionContainer.getListView().getChildCount(); + for (int a = 0; a < count; a++) { + View view = mentionContainer.getListView().getChildAt(a); + if (view instanceof ContextLinkCell) { + ContextLinkCell cell = (ContextLinkCell) view; + MessageObject messageObject1 = cell.getMessageObject(); + if (messageObject1 != null && (messageObject1.isVoice() || messageObject1.isMusic())) { + cell.updateButtonState(false, true); + } } } } @@ -16223,14 +15979,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } } - count = mentionListView.getChildCount(); - for (int a = 0; a < count; a++) { - View view = mentionListView.getChildAt(a); - if (view instanceof ContextLinkCell) { - ContextLinkCell cell = (ContextLinkCell) view; - MessageObject messageObject = cell.getMessageObject(); - if (messageObject != null && (messageObject.isVoice() || messageObject.isMusic())) { - cell.updateButtonState(false, true); + if (mentionContainer != null && mentionContainer.getListView() != null) { + count = mentionContainer.getListView().getChildCount(); + for (int a = 0; a < count; a++) { + View view = mentionContainer.getListView().getChildAt(a); + if (view instanceof ContextLinkCell) { + ContextLinkCell cell = (ContextLinkCell) view; + MessageObject messageObject = cell.getMessageObject(); + if (messageObject != null && (messageObject.isVoice() || messageObject.isMusic())) { + cell.updateButtonState(false, true); + } } } } @@ -16386,6 +16144,54 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not updateVisibleRows(); } } + } else if (id == NotificationCenter.voiceTranscriptionUpdate) { + if (chatAdapter != null) { + MessageObject messageObject = (MessageObject) args[0]; + long transcriptionId = 0; + String transcriptionText = null; + if (args[1] != null) { + transcriptionId = (Long) args[1]; + transcriptionText = (String) args[2]; + } + ArrayList messages = chatAdapter.isFrozen ? chatAdapter.frozenMessages : ChatActivity.this.messages; + if (messages != null && !messages.contains(messageObject) && args[1] != null) { + for (int a = 0; a < messages.size(); ++a) { + if (messages.get(a) != null && messages.get(a).messageOwner != null && (messages.get(a).messageOwner.voiceTranscriptionId == transcriptionId || messageObject != null && messageObject.getId() == messages.get(a).getId() && messageObject.getDialogId() == messages.get(a).getDialogId())) { + messageObject = messages.get(a); + break; + } + } + } + if (messageObject != null) { + if (transcriptionText != null && messageObject.messageOwner != null) { + messageObject.messageOwner.voiceTranscription = transcriptionText; + } + boolean wasOpen = messageObject.isVoiceTranscriptionOpen(); + if (args.length > 3 && args[3] != null) { + messageObject.messageOwner.voiceTranscriptionOpen = (Boolean) args[3]; + } + if (args.length > 4 && args[4] != null) { + messageObject.messageOwner.voiceTranscriptionFinal = (Boolean) args[4]; + } + + int index = messages.indexOf(messageObject); + if (index >= 0 && index < messages.size()) { + int position = index + chatAdapter.messagesStartRow; + chatAdapter.updateRowAtPosition(position); + for (int i = 0; i < chatListView.getChildCount(); ++i) { + View child = chatListView.getChildAt(i); + if (child instanceof ChatMessageCell && ((ChatMessageCell) child).getMessageObject() == messageObject) { + int top = child.getTop() - (int) chatListViewPaddingTop; + int halfHeight = (int) ((chatListView.getMeasuredHeight() - chatListViewPaddingTop) / 2); + if (messageObject.measureVoiceTranscriptionHeight() > halfHeight * .4f) { + chatLayoutManager.scrollToPositionWithOffset(position, (top > halfHeight * .6f && messageObject.isVoiceTranscriptionOpen() ? (int) (halfHeight * .6f) : top), false); + } + break; + } + } + } + } + } } else if (id == NotificationCenter.replaceMessagesObjects) { long did = (long) args[0]; if (did != dialog_id && did != mergeDialogId) { @@ -16617,6 +16423,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (!info.commands.isEmpty() && !ChatObject.isChannel(currentChat) && !isThreadChat()) { hasBotsCommands = true; } + if (info.user_id == 0 && currentUser != null) { + info.user_id = currentUser.id; + } botInfo.put(info.user_id, info); if (chatAdapter != null) { int prevRow = chatAdapter.botInfoRow; @@ -16630,8 +16439,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (!ChatObject.isChannel(currentChat) || currentChat != null && currentChat.megagroup) { - if (mentionsAdapter != null) { - mentionsAdapter.setBotInfo(botInfo); + if (mentionContainer != null && mentionContainer.getAdapter() != null) { + mentionContainer.getAdapter().setBotInfo(botInfo); } if (chatActivityEnterView != null) { @@ -16879,15 +16688,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (audioCallIconItem != null) { if (openAnimationStartTime != 0 && audioCallIconItem.getVisibility() != View.VISIBLE) { audioCallIconItem.setAlpha(0f); - audioCallIconItem.animate().alpha(1f).setDuration(150).start(); + audioCallIconItem.animate().alpha(1f).setDuration(160).setInterpolator(CubicBezierInterpolator.EASE_IN).setStartDelay(50).start(); } audioCallIconItem.setVisibility(View.VISIBLE); } } else { - headerItem.showSubItem(call); + headerItem.showSubItem(call, true); } if (userInfo.video_calls_available) { - headerItem.showSubItem(video_call); + headerItem.showSubItem(video_call, true); } else { headerItem.hideSubItem(video_call); } @@ -17104,19 +16913,19 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not }, true, themeDelegate); } - private void loadSendAsPeers() { + private void loadSendAsPeers(boolean animatedUpdate) { if (sendAsPeersObj != null || currentChat == null || !ChatObject.canSendAsPeers(currentChat) || chatActivityEnterView == null) { return; } sendAsPeersObj = getMessagesController().getSendAsPeers(dialog_id); if (sendAsPeersObj != null) { - chatActivityEnterView.updateSendAsButton(); + chatActivityEnterView.updateSendAsButton(animatedUpdate); } } private boolean sponsoredMessagesAdded; private void addSponsoredMessages(boolean animated) { - if (sponsoredMessagesAdded || chatMode != 0 || !ChatObject.isChannel(currentChat) || !forwardEndReached[0]) { + if (sponsoredMessagesAdded || chatMode != 0 || !ChatObject.isChannel(currentChat) || !forwardEndReached[0] || getUserConfig().isPremium()) { return; } ArrayList arrayList = getMessagesController().getSponsoredMessages(dialog_id); @@ -17509,6 +17318,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } } + if (messageObject.wasJustSent && getUserConfig().isPremium()) { + messageObject.forcePlayEffect = true; + } } if (currentChat != null) { if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionChatDeleteUser && messageObject.messageOwner.action.user_id == currentUserId || @@ -18405,6 +18217,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (messageObject.type >= 0) { messageObject.stableId = old.stableId; + messageObject.messageOwner.premiumEffectWasPlayed = old.messageOwner.premiumEffectWasPlayed; + messageObject.forcePlayEffect = old.forcePlayEffect; messages.set(index, messageObject); if (chatAdapter != null) { chatAdapter.updateRowAtPosition(chatAdapter.messagesStartRow + index); @@ -18598,15 +18412,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override protected void onBecomeFullyVisible() { + isFullyVisible = true; super.onBecomeFullyVisible(); if (showCloseChatDialogLater) { showDialog(closeChatDialog); } + if (parentLayout != null && parentLayout.getDrawerLayoutContainer() != null) { + parentLayout.getDrawerLayoutContainer().setBehindKeyboardColor(getThemedColor(Theme.key_windowBackgroundWhite)); + } } @Override protected void onBecomeFullyHidden() { + isFullyVisible = false; hideUndoViews(); + if (parentLayout != null && parentLayout.getDrawerLayoutContainer() != null) { + parentLayout.getDrawerLayoutContainer().setBehindKeyboardColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + } } public void saveKeyboardPositionBeforeTransition() { @@ -18791,57 +18613,68 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not contentView.invalidate(); if (!TextUtils.isEmpty(attachMenuBotToOpen)) { - if (getCurrentUser() != null) { - TLRPC.TL_contacts_resolveUsername req = new TLRPC.TL_contacts_resolveUsername(); - req.username = attachMenuBotToOpen; - getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(()->{ - if (response != null) { - TLRPC.TL_contacts_resolvedPeer resolvedPeer = (TLRPC.TL_contacts_resolvedPeer) response; - if (!resolvedPeer.users.isEmpty()) { - TLRPC.User user = resolvedPeer.users.get(0); - if (user.bot && user.bot_attach_menu) { - TLRPC.TL_messages_getAttachMenuBot getAttachMenuBot = new TLRPC.TL_messages_getAttachMenuBot(); - getAttachMenuBot.bot = MessagesController.getInstance(currentAccount).getInputUser(user.id); - ConnectionsManager.getInstance(currentAccount).sendRequest(getAttachMenuBot, (response1, error1) -> AndroidUtilities.runOnUIThread(()-> { - if (response1 instanceof TLRPC.TL_attachMenuBotsBot) { - TLRPC.TL_attachMenuBotsBot attachMenuBotsBot = (TLRPC.TL_attachMenuBotsBot) response1; - MessagesController.getInstance(currentAccount).putUsers(attachMenuBotsBot.users, false); - TLRPC.TL_attachMenuBot attachMenuBot = attachMenuBotsBot.bot; + TLRPC.TL_contacts_resolveUsername req = new TLRPC.TL_contacts_resolveUsername(); + req.username = attachMenuBotToOpen; + getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(()->{ + if (response != null) { + TLRPC.TL_contacts_resolvedPeer resolvedPeer = (TLRPC.TL_contacts_resolvedPeer) response; + if (!resolvedPeer.users.isEmpty()) { + TLRPC.User user = resolvedPeer.users.get(0); + if (user.bot && user.bot_attach_menu) { + TLRPC.TL_messages_getAttachMenuBot getAttachMenuBot = new TLRPC.TL_messages_getAttachMenuBot(); + getAttachMenuBot.bot = MessagesController.getInstance(currentAccount).getInputUser(user.id); + ConnectionsManager.getInstance(currentAccount).sendRequest(getAttachMenuBot, (response1, error1) -> AndroidUtilities.runOnUIThread(()-> { + if (response1 instanceof TLRPC.TL_attachMenuBotsBot) { + TLRPC.TL_attachMenuBotsBot attachMenuBotsBot = (TLRPC.TL_attachMenuBotsBot) response1; + MessagesController.getInstance(currentAccount).putUsers(attachMenuBotsBot.users, false); + TLRPC.TL_attachMenuBot attachMenuBot = attachMenuBotsBot.bot; - if (!attachMenuBot.inactive) { - openAttachBotLayout(user.id, attachMenuBotStartCommand); - } else { - AttachBotIntroTopView introTopView = new AttachBotIntroTopView(getParentActivity()); - introTopView.setColor(Theme.getColor(Theme.key_chat_attachContactIcon)); - introTopView.setBackgroundColor(Theme.getColor(Theme.key_dialogTopBackground)); - introTopView.setAttachBot(attachMenuBot); - new AlertDialog.Builder(getParentActivity()) - .setTopView(introTopView) - .setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("BotRequestAttachPermission", R.string.BotRequestAttachPermission, UserObject.getUserName(user)))) - .setPositiveButton(LocaleController.getString(R.string.BotAddToMenu), (dialog, which) -> { - TLRPC.TL_messages_toggleBotInAttachMenu botRequest = new TLRPC.TL_messages_toggleBotInAttachMenu(); - botRequest.bot = MessagesController.getInstance(currentAccount).getInputUser(user.id); - botRequest.enabled = true; - ConnectionsManager.getInstance(currentAccount).sendRequest(botRequest, (response2, error2) -> AndroidUtilities.runOnUIThread(() -> { - if (error2 == null) { - MediaDataController.getInstance(currentAccount).loadAttachMenuBots(false, true); - - openAttachBotLayout(user.id, attachMenuBotStartCommand); - } - }), ConnectionsManager.RequestFlagInvokeAfter | ConnectionsManager.RequestFlagFailOnServerErrors); - }) - .setNegativeButton(LocaleController.getString(R.string.Cancel), null) - .show(); + if (!MediaDataController.canShowAttachMenuBot(attachMenuBot, getCurrentUser() != null ? getCurrentUser() : getCurrentChat())) { + if (currentUser != null && currentUser.bot && user.id == attachMenuBot.bot_id) { + BulletinFactory.of(this).createErrorBulletin(LocaleController.getString(R.string.BotCantOpenAttachMenuSameBot)).show(); + } else if (currentUser != null && currentUser.bot && user.id != attachMenuBot.bot_id) { + BulletinFactory.of(this).createErrorBulletin(LocaleController.getString(R.string.BotCantOpenAttachMenuBot)).show(); + } else if (currentUser != null && !currentUser.bot) { + BulletinFactory.of(this).createErrorBulletin(LocaleController.getString(R.string.BotCantOpenAttachMenuUser)).show(); + } else if (currentChat != null && !ChatObject.isChannelAndNotMegaGroup(currentChat)) { + BulletinFactory.of(this).createErrorBulletin(LocaleController.getString(R.string.BotCantOpenAttachMenuGroup)).show(); + } else if (currentChat != null && ChatObject.isChannelAndNotMegaGroup(currentChat)) { + BulletinFactory.of(this).createErrorBulletin(LocaleController.getString(R.string.BotCantOpenAttachMenuChannel)).show(); } + return; } - })); - } + + if (!attachMenuBot.inactive) { + openAttachBotLayout(user.id, attachMenuBotStartCommand); + } else { + AttachBotIntroTopView introTopView = new AttachBotIntroTopView(getParentActivity()); + introTopView.setColor(Theme.getColor(Theme.key_chat_attachContactIcon)); + introTopView.setBackgroundColor(Theme.getColor(Theme.key_dialogTopBackground)); + introTopView.setAttachBot(attachMenuBot); + new AlertDialog.Builder(getParentActivity()) + .setTopView(introTopView) + .setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("BotRequestAttachPermission", R.string.BotRequestAttachPermission, UserObject.getUserName(user)))) + .setPositiveButton(LocaleController.getString(R.string.BotAddToMenu), (dialog, which) -> { + TLRPC.TL_messages_toggleBotInAttachMenu botRequest = new TLRPC.TL_messages_toggleBotInAttachMenu(); + botRequest.bot = MessagesController.getInstance(currentAccount).getInputUser(user.id); + botRequest.enabled = true; + ConnectionsManager.getInstance(currentAccount).sendRequest(botRequest, (response2, error2) -> AndroidUtilities.runOnUIThread(() -> { + if (error2 == null) { + MediaDataController.getInstance(currentAccount).loadAttachMenuBots(false, true); + + openAttachBotLayout(user.id, attachMenuBotStartCommand); + } + }), ConnectionsManager.RequestFlagInvokeAfter | ConnectionsManager.RequestFlagFailOnServerErrors); + }) + .setNegativeButton(LocaleController.getString(R.string.Cancel), null) + .show(); + } + } + })); } } - })); - } else { - BulletinFactory.of(this).createErrorBulletin(LocaleController.getString(ChatObject.isChannelAndNotMegaGroup(currentChat) ? R.string.BotCantOpenAttachMenuChannel : R.string.BotCantOpenAttachMenuGroup)).show(); - } + } + })); attachMenuBotToOpen = null; } } @@ -18947,29 +18780,47 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } showBottomOverlayProgress(false, false); } else if (currentChat != null) { - if (!isThreadChat()) { - if (ChatObject.isChannel(currentChat) && !(currentChat instanceof TLRPC.TL_channelForbidden)) { - if (ChatObject.isNotInChat(currentChat)) { - if (getMessagesController().isJoiningChannel(currentChat.id)) { - showBottomOverlayProgress(true, false); + long requestedTime = MessagesController.getNotificationsSettings(currentAccount).getLong("dialog_join_requested_time_" + dialog_id, -1); + boolean shouldApply = false; + if (ChatObject.isChannel(currentChat) && !(currentChat instanceof TLRPC.TL_channelForbidden)) { + if (ChatObject.isNotInChat(currentChat) && (!isThreadChat() || currentChat.join_to_send)) { + if (getMessagesController().isJoiningChannel(currentChat.id)) { + showBottomOverlayProgress(true, false); + } else { + if (currentChat.join_request) { + shouldApply = true; + if (requestedTime > 0 && System.currentTimeMillis() - requestedTime < 1000 * 60 * 2) { + bottomOverlayChatText.setText(LocaleController.getString("ChannelJoinRequestSent", R.string.ChannelJoinRequestSent), true); + bottomOverlayChatText.setEnabled(false); + } else { + bottomOverlayChatText.setText(LocaleController.getString("ChannelJoinRequest", R.string.ChannelJoinRequest)); + bottomOverlayChatText.setEnabled(true); + } } else { bottomOverlayChatText.setText(LocaleController.getString("ChannelJoin", R.string.ChannelJoin)); - showBottomOverlayProgress(false, false); + bottomOverlayChatText.setEnabled(true); } - } else { - if (!getMessagesController().isDialogMuted(dialog_id)) { - bottomOverlayChatText.setText(LocaleController.getString("ChannelMute", R.string.ChannelMute), false); - } else { - bottomOverlayChatText.setText(LocaleController.getString("ChannelUnmute", R.string.ChannelUnmute), true); - } - showBottomOverlayProgress(false, bottomOverlayProgress.getTag() != null); + showBottomOverlayProgress(false, false); } - } else { - bottomOverlayChatText.setText(LocaleController.getString("DeleteThisGroup", R.string.DeleteThisGroup)); + } else if (!isThreadChat()) { + if (!getMessagesController().isDialogMuted(dialog_id)) { + bottomOverlayChatText.setText(LocaleController.getString("ChannelMute", R.string.ChannelMute), false); + bottomOverlayChatText.setEnabled(true); + } else { + bottomOverlayChatText.setText(LocaleController.getString("ChannelUnmute", R.string.ChannelUnmute), true); + bottomOverlayChatText.setEnabled(true); + } + showBottomOverlayProgress(false, bottomOverlayProgress.getTag() != null); } + } else if (!isThreadChat()) { + bottomOverlayChatText.setText(LocaleController.getString("DeleteThisGroup", R.string.DeleteThisGroup)); + bottomOverlayChatText.setEnabled(true); + } + if (!shouldApply && requestedTime > 0) { + MessagesController.getNotificationsSettings(currentAccount).edit().putLong("dialog_join_requested_time_" + dialog_id, -1).commit(); } } else { - showBottomOverlayProgress(false, false); + showBottomOverlayProgress(false, true); if (userBlocked) { if (currentUser.bot) { bottomOverlayChatText.setText(LocaleController.getString("BotUnblock", R.string.BotUnblock)); @@ -18992,7 +18843,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { bottomOverlayChatText.setText(LocaleController.getString("ChannelUnmute", R.string.ChannelUnmute), true); } - showBottomOverlayProgress(false, bottomOverlayProgress.getTag() != null); + showBottomOverlayProgress(false, true); } else if (botUser != null && currentUser.bot) { bottomOverlayChatText.setText(LocaleController.getString("BotStart", R.string.BotStart)); chatActivityEnterView.hidePopup(false); @@ -19024,11 +18875,34 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); - chatActivityEnterView.setVisibility(View.INVISIBLE); - bottomOverlayChat.setVisibility(View.INVISIBLE); + } }).start(); + if (searchExpandAnimator != null) { + searchExpandAnimator.removeAllListeners(); + searchExpandAnimator.cancel(); + } + + searchExpandAnimator = ValueAnimator.ofFloat(searchExpandProgress, 1f); + searchExpandAnimator.addUpdateListener(animation -> { + searchExpandProgress = (float) animation.getAnimatedValue(); + chatListView.setTranslationY(searchExpandProgress * (chatActivityEnterView.getMeasuredHeight() - searchContainer.getMeasuredHeight())); + chatActivityEnterView.setChatSearchExpandOffset(searchExpandProgress * (chatActivityEnterView.getMeasuredHeight() - searchContainer.getMeasuredHeight())); + invalidateChatListViewTopPadding(); + }); + searchExpandAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + chatActivityEnterView.setVisibility(View.INVISIBLE); + bottomOverlayChat.setVisibility(View.INVISIBLE); + invalidateChatListViewTopPadding(); + } + }); + searchExpandAnimator.setDuration(250); + searchExpandAnimator.setInterpolator(ChatListItemAnimator.DEFAULT_INTERPOLATOR); + searchExpandAnimator.start(); + chatActivityEnterView.setFieldFocused(false); if (chatActivityEnterView.isTopViewVisible()) { @@ -19050,6 +18924,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } chatActivityEnterView.setVisibility(View.VISIBLE); + + if (searchExpandAnimator != null) { + searchExpandAnimator.removeAllListeners(); + searchExpandAnimator.cancel(); + } + + searchExpandAnimator = ValueAnimator.ofFloat(searchExpandProgress, 0f); + invalidateChatListViewTopPadding(); + searchExpandAnimator.addUpdateListener(animation -> { + searchExpandProgress = (float) animation.getAnimatedValue(); + chatListView.setTranslationY(searchExpandProgress * (chatActivityEnterView.getMeasuredHeight() - searchContainer.getMeasuredHeight())); + chatActivityEnterView.setChatSearchExpandOffset(searchExpandProgress * (chatActivityEnterView.getMeasuredHeight() - searchContainer.getMeasuredHeight())); + invalidateChatListViewTopPadding(); + }); + searchExpandAnimator.setDuration(250); + searchExpandAnimator.setInterpolator(ChatListItemAnimator.DEFAULT_INTERPOLATOR); + searchExpandAnimator.start(); if (muteItem != null) { if (currentChat != null && ChatObject.isNotInChat(currentChat)) { muteItem.setVisibility(View.GONE); @@ -19063,7 +18954,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not bottomOverlayChat.setVisibility(View.VISIBLE); chatActivityEnterView.setVisibility(View.INVISIBLE); } else if (chatMode == MODE_PINNED || - currentChat != null && !isThreadChat() && (ChatObject.isNotInChat(currentChat) || !ChatObject.canWriteToChat(currentChat)) || + currentChat != null && (ChatObject.isNotInChat(currentChat) || !ChatObject.canWriteToChat(currentChat)) && (currentChat.join_to_send || !isThreadChat()) || currentUser != null && (UserObject.isDeleted(currentUser) || userBlocked || UserObject.isReplyUser(currentUser))) { if (chatActivityEnterView.isEditingMessage()) { chatActivityEnterView.setVisibility(View.VISIBLE); @@ -19286,7 +19177,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updatePinnedListButton(boolean animated) { - if (isThreadChat() || pinnedListButton == null || inMenuMode) { + if (isThreadChat() || pinnedListButton == null) { return; } boolean show = pinnedMessageIds.size() > 1 && !pinnedMessageButtonShown; @@ -19330,7 +19221,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ObjectAnimator.ofFloat(pinnedProgress, View.SCALE_Y, !showProgress ? 0.4f : 1.0f) ); - pinnedListAnimator.setDuration(180); + pinnedListAnimator.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + pinnedListAnimator.setDuration(180 * 2); pinnedListAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { @@ -19381,7 +19273,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updatePinnedMessageView(boolean animated, int animateToNext) { - if (pinnedMessageView == null || chatMode != 0 || inMenuMode) { + if (pinnedMessageView == null || chatMode != 0) { return; } int pinned_msg_id; @@ -19472,6 +19364,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not buttonTextView.setVisibility(botButton != null ? View.VISIBLE : View.GONE); pinnedMessageButton[animateToNext != 0 ? 0 : 1].setOnClickListener(null); + pinnedMessageButton[animateToNext != 0 ? 0 : 1].setOnLongClickListener(null); if (botButton == null) { buttonTextView.setText(null); buttonTextView.setOnClickListener(null); @@ -19490,6 +19383,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } chatActivityEnterView.didPressedBotButton(botButton, buttonMessage, buttonMessage); }); + buttonTextView.setOnLongClickListener(e -> { + if (getParentActivity() == null || bottomOverlayChat.getVisibility() == View.VISIBLE && + !(botButton instanceof TLRPC.TL_keyboardButtonSwitchInline) && !(botButton instanceof TLRPC.TL_keyboardButtonCallback) && + !(botButton instanceof TLRPC.TL_keyboardButtonGame) && !(botButton instanceof TLRPC.TL_keyboardButtonUrl) && + !(botButton instanceof TLRPC.TL_keyboardButtonBuy) && !(botButton instanceof TLRPC.TL_keyboardButtonUrlAuth) && + !(botButton instanceof TLRPC.TL_keyboardButtonUserProfile)) { + return false; + } + if (botButton instanceof TLRPC.TL_keyboardButtonUrl) { + openClickableLink(null, botButton.url, true, null, buttonMessage); + try { + buttonTextView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } catch (Exception ignore) {} + return true; + } + return false; + }); } buttonTextView.measure(View.MeasureSpec.makeMeasureSpec(999999, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(28), View.MeasureSpec.EXACTLY)); if (messageTextView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { @@ -19566,7 +19476,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not boolean showCounter = false; boolean shouldAnimateName = loadedPinnedMessagesCount == 2 || !pinnedNameTextView[animateToNext != 0 ? 0 : 1].getTrackWidth(); + pinnedNameTextView[animateToNext != 0 ? 0 : 1].setTrackWidth(false); nameTextView.setTrackWidth(true); + nameTextView.setVisibility(View.VISIBLE); if (threadMessageId != 0) { MessagesController messagesController = getMessagesController(); TLRPC.MessageFwdHeader fwd_from = threadMessageObject.messageOwner.fwd_from; @@ -19620,9 +19532,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not showCounter = false; } else { if (currentPinnedMessageIndex[0] == 0 || loadedPinnedMessagesCount != 2) { - nameTextView.setText(LocaleController.getString("PinnedMessage", R.string.PinnedMessage)); + nameTextView.setText(LocaleController.getString("PinnedMessage", R.string.PinnedMessage), true); } else { - nameTextView.setText(LocaleController.getString("PreviousPinnedMessage", R.string.PreviousPinnedMessage)); + nameTextView.setText(LocaleController.getString("PreviousPinnedMessage", R.string.PreviousPinnedMessage), true); } if (currentPinnedMessageIndex[0] != 0) { int total = getPinnedMessagesCount(); @@ -19766,8 +19678,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not animators.add(ObjectAnimator.ofFloat(pinnedMessageTextView[1], View.TRANSLATION_X, diff, 0.0f)); animators.add(ObjectAnimator.ofFloat(pinnedNameTextView[0], View.TRANSLATION_X, diff, 0.0f)); animators.add(ObjectAnimator.ofFloat(pinnedNameTextView[1], View.TRANSLATION_X, diff, 0.0f)); - animators.add(ObjectAnimator.ofFloat(pinnedMessageButton[0], View.TRANSLATION_X, diff, 0.0f)); - animators.add(ObjectAnimator.ofFloat(pinnedMessageButton[1], View.TRANSLATION_X, diff, 0.0f)); +// animators.add(ObjectAnimator.ofFloat(pinnedMessageButton[0], View.TRANSLATION_X, diff, 0.0f)); +// animators.add(ObjectAnimator.ofFloat(pinnedMessageButton[1], View.TRANSLATION_X, diff, 0.0f)); animators.add(ObjectAnimator.ofFloat(pinnedCounterTextView, View.TRANSLATION_X, pinnedCounterTextViewX + diff, pinnedCounterTextViewX)); if (diff > 0) { pinnedMessageImageView[0].setAlpha(1f); @@ -19818,8 +19730,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (animation.equals(pinnedNextAnimation[1])) { if (animateName || animateText || animateImage != null) { pinnedNextAnimation[1] = new AnimatorSet(); - pinnedNextAnimation[1].setInterpolator(CubicBezierInterpolator.EASE_OUT); - pinnedNextAnimation[1].setDuration(180); + pinnedNextAnimation[1].setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + pinnedNextAnimation[1].setDuration(180 * 2); ArrayList animators1 = new ArrayList<>(); if (animateName) { animators1.add(ObjectAnimator.ofFloat(nameTextView, View.TRANSLATION_Y, 0.0f)); @@ -19860,10 +19772,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }); - pinnedNextAnimation[1].setDuration(180); - if (forceScrollToFirst && loadedPinnedMessagesCount > 5) { - pinnedNextAnimation[1].setInterpolator(CubicBezierInterpolator.EASE_OUT); - } + pinnedNextAnimation[1].setDuration(180 * 2); +// if (forceScrollToFirst && loadedPinnedMessagesCount > 5) { + pinnedNextAnimation[1].setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); +// } pinnedNextAnimation[1].playTogether(animators2); pinnedNextAnimation[0].playTogether(animators); @@ -19926,7 +19838,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not setPinnedTextTranslationX = false; } }); - pinnedNextAnimation[0].setDuration(180); + pinnedNextAnimation[0].setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + pinnedNextAnimation[0].setDuration(180 * 2); if (!setPinnedTextTranslationX) { pinnedNextAnimation[0].start(); pinnedNextAnimation[1].start(); @@ -20021,10 +19934,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override protected boolean createLayout(int width) { boolean result = super.createLayout(width); - if (trackWidth && getVisibility() == View.VISIBLE && pinnedCounterTextView != null) { - int newX = getTextWidth() + AndroidUtilities.dp(4); - if (newX != pinnedCounterTextViewX) { - pinnedCounterTextView.setTranslationX(pinnedCounterTextViewX = newX); + if (trackWidth && getVisibility() == View.VISIBLE) { + pinnedCounterTextViewX = getTextWidth() + AndroidUtilities.dp(4); + if (pinnedCounterTextView != null) { + pinnedCounterTextView.setTranslationX(pinnedCounterTextViewX); } } return result; @@ -20032,7 +19945,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updateTopPanel(boolean animated) { - if (topChatPanelView == null || chatMode != 0 || inMenuMode) { + if (topChatPanelView == null || chatMode != 0) { return; } @@ -20328,6 +20241,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override protected void setInPreviewMode(boolean value) { super.setInPreviewMode(value); + if (currentUser != null && audioCallIconItem != null) { + TLRPC.UserFull userFull = getMessagesController().getUserFull(currentUser.id); + if (userFull != null && userFull.phone_calls_available) { + showAudioCallAsIcon = !inPreviewMode; + audioCallIconItem.setVisibility(View.VISIBLE); + } else { + showAudioCallAsIcon = false; + audioCallIconItem.setVisibility(View.GONE); + } + } if (avatarContainer != null) { avatarContainer.setOccupyStatusBar(!value); avatarContainer.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, !value ? 56 : (chatMode == MODE_PINNED ? 10 : 0), 0, 40, 0)); @@ -20378,6 +20301,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } updateBottomOverlay(); updateSecretStatus(); + + if (fragmentContextView != null) { + fragmentContextView.setEnabled(!value); + } + if (fragmentLocationContextView != null) { + fragmentLocationContextView.setEnabled(!value); + } + if (pinnedMessageView != null) { + pinnedMessageView.setEnabled(!isInPreviewMode()); + } } Bulletin.Delegate bulletinDelegate; @@ -20847,11 +20780,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not AnimatedFileDrawable visibleAnimation = null; if (noSoundHintView != null && noSoundHintView.getTag() != null) { ChatMessageCell cell = noSoundHintView.getMessageCell(); - ImageReceiver imageReceiver = cell.getPhotoImage(); - visibleAnimation = imageReceiver.getAnimation(); - if (visibleAnimation != null) { - visibleMessage = cell.getMessageObject(); - scrollToVideo = cell.getTop() + imageReceiver.getImageY2() > chatListView.getMeasuredHeight(); + if (cell != null) { + ImageReceiver imageReceiver = cell.getPhotoImage(); + visibleAnimation = imageReceiver.getAnimation(); + if (visibleAnimation != null) { + visibleMessage = cell.getMessageObject(); + scrollToVideo = cell.getTop() + imageReceiver.getImageY2() > chatListView.getMeasuredHeight(); + } } } if (visibleMessage == null) { @@ -21023,19 +20958,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return caption; } - private static boolean isEmoji(String message){ - return message.matches("(?:[\uD83C\uDF00-\uD83D\uDDFF]|[\uD83E\uDD00-\uD83E\uDDFF]|" + - "[\uD83D\uDE00-\uD83D\uDE4F]|[\uD83D\uDE80-\uD83D\uDEFF]|" + - "[\u2600-\u26FF]\uFE0F?|[\u2700-\u27BF]\uFE0F?|\u24C2\uFE0F?|" + - "[\uD83C\uDDE6-\uD83C\uDDFF]{1,2}|" + - "[\uD83C\uDD70\uD83C\uDD71\uD83C\uDD7E\uD83C\uDD7F\uD83C\uDD8E\uD83C\uDD91-\uD83C\uDD9A]\uFE0F?|" + - "[\u0023\u002A\u0030-\u0039]\uFE0F?\u20E3|[\u2194-\u2199\u21A9-\u21AA]\uFE0F?|[\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55]\uFE0F?|" + - "[\u2934\u2935]\uFE0F?|[\u3030\u303D]\uFE0F?|[\u3297\u3299]\uFE0F?|" + - "[\uD83C\uDE01\uD83C\uDE02\uD83C\uDE1A\uD83C\uDE2F\uD83C\uDE32-\uD83C\uDE3A\uD83C\uDE50\uD83C\uDE51]\uFE0F?|" + - "[\u203C\u2049]\uFE0F?|[\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE]\uFE0F?|" + - "[\u00A9\u00AE]\uFE0F?|[\u2122\u2139]\uFE0F?|\uD83C\uDC04\uFE0F?|\uD83C\uDCCF\uFE0F?|" + - "[\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA]\uFE0F?)+"); - } @SuppressLint("ClickableViewAccessibility") private boolean createMenu(View v, boolean single, boolean listView, float x, float y, boolean searchGroup) { if (actionBar.isActionModeShowed() || reportType >= 0) { @@ -21191,7 +21113,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not final ArrayList options = new ArrayList<>(); View optionsView = null; - CharSequence messageText = null; + CharSequence messageTextToTranslate = null; if (message.messageOwner.action instanceof TLRPC.TL_messageActionSetMessagesTTL && single && (dialog_id >= 0 || (currentChat != null && ChatObject.canUserDoAdminAction(currentChat, ChatObject.ACTION_DELETE_MESSAGES)))) { AutoDeletePopupWrapper autoDeletePopupWrapper = new AutoDeletePopupWrapper(contentView.getContext(), null, new AutoDeletePopupWrapper.Callback() { @Override @@ -21214,25 +21136,29 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (type >= 0 || type == -1 && single && (message.isSending() || message.isEditing()) && currentEncryptedChat == null) { selectedObject = message; selectedObjectGroup = groupedMessages; - messageText = getMessageCaption(selectedObject, selectedObjectGroup); // used only in translations - if (messageText == null && selectedObject.isPoll()) { + messageTextToTranslate = getMessageCaption(selectedObject, selectedObjectGroup); + if (messageTextToTranslate == null && selectedObject.isPoll()) { try { TLRPC.Poll poll = ((TLRPC.TL_messageMediaPoll) selectedObject.messageOwner.media).poll; StringBuilder pollText = new StringBuilder(); pollText = new StringBuilder(poll.question).append("\n"); for (TLRPC.TL_pollAnswer answer : poll.answers) pollText.append("\n\uD83D\uDD18 ").append(answer.text); - messageText = pollText.toString(); + messageTextToTranslate = pollText.toString(); } catch (Exception e) {} } - if (messageText == null) - messageText = getMessageContent(selectedObject, 0, false); - if (messageText != null) { - if (isEmoji(messageText.toString())) { - messageText = null; // message fully consists of emojis, do not translate - } + if (messageTextToTranslate == null) { + messageTextToTranslate = getMessageContent(selectedObject, 0, false); + } + if (messageTextToTranslate != null && Emoji.fullyConsistsOfEmojis(messageTextToTranslate)) { + messageTextToTranslate = null; // message fully consists of emojis, do not translate } + if (message.isSponsored() && !getMessagesController().premiumLocked) { + items.add(LocaleController.getString("HideAd", R.string.HideAd)); + options.add(OPTION_HIDE_SPONSORED_MESSAGE); + icons.add(R.drawable.msg_block2); + } if (type == -1) { if ((selectedObject.type == 0 || selectedObject.isAnimatedEmoji() || getMessageCaption(selectedObject, selectedObjectGroup) != null) && !noforwards) { items.add(LocaleController.getString("Copy", R.string.Copy)); @@ -21270,9 +21196,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not options.add(OPTION_PIN); icons.add(R.drawable.msg_pin); } - if (selectedObject != null && selectedObject.contentType == 0 && (messageText != null && messageText.length() > 0 && !selectedObject.isAnimatedEmoji() && !selectedObject.isDice())) { + if (selectedObject != null && selectedObject.contentType == 0 && (messageTextToTranslate != null && messageTextToTranslate.length() > 0 && !selectedObject.isAnimatedEmoji() && !selectedObject.isDice())) { items.add(LocaleController.getString("TranslateMessage", R.string.TranslateMessage)); - options.add(29); + options.add(OPTION_TRANSLATE); icons.add(R.drawable.msg_translate); } if (message.canEditMessage(currentChat)) { @@ -21314,7 +21240,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatMode == MODE_SCHEDULED) { items.add(LocaleController.getString("MessageScheduleSend", R.string.MessageScheduleSend)); options.add(OPTION_SEND_NOW); - icons.add(R.drawable.outline_send); + icons.add(R.drawable.msg_send); } if (selectedObject.messageOwner.action instanceof TLRPC.TL_messageActionPhoneCall) { TLRPC.TL_messageActionPhoneCall call = (TLRPC.TL_messageActionPhoneCall) message.messageOwner.action; @@ -21329,12 +21255,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (allowChatActions) { items.add(LocaleController.getString("Reply", R.string.Reply)); - options.add(8); + options.add(OPTION_REPLY); icons.add(R.drawable.msg_reply); } if ((selectedObject.type == 0 || selectedObject.isDice() || selectedObject.isAnimatedEmoji() || getMessageCaption(selectedObject, selectedObjectGroup) != null) && !noforwards) { items.add(LocaleController.getString("Copy", R.string.Copy)); - options.add(3); + options.add(OPTION_COPY); icons.add(R.drawable.msg_copy); } if (!isThreadChat() && chatMode != MODE_SCHEDULED && currentChat != null && (currentChat.has_link || message.hasReplies()) && currentChat.megagroup && message.canViewThread()) { @@ -21343,12 +21269,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { items.add(LocaleController.getString("ViewThread", R.string.ViewThread)); } - options.add(27); + options.add(OPTION_VIEW_REPLIES_OR_THREAD); icons.add(R.drawable.msg_viewreplies); } if (!selectedObject.isSponsored() && chatMode != MODE_SCHEDULED && ChatObject.isChannel(currentChat) && selectedObject.getDialogId() != mergeDialogId) { items.add(LocaleController.getString("CopyLink", R.string.CopyLink)); - options.add(22); + options.add(OPTION_COPY_LINK); icons.add(R.drawable.msg_link); } if (type == 2) { @@ -21356,7 +21282,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (selectedObject.type == MessageObject.TYPE_POLL && !message.isPollClosed()) { if (message.canUnvote()) { items.add(LocaleController.getString("Unvote", R.string.Unvote)); - options.add(25); + options.add(OPTION_UNVOTE); icons.add(R.drawable.msg_unvote); } if (!message.isForwarded() && ( @@ -21367,7 +21293,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { items.add(LocaleController.getString("StopPoll", R.string.StopPoll)); } - options.add(26); + options.add(OPTION_STOP_POLL_OR_QUIZ); icons.add(R.drawable.msg_pollstop); } } else if (selectedObject.isMusic() && !noforwards) { @@ -21383,7 +21309,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (type == 3 && !noforwards) { if (selectedObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage && MessageObject.isNewGifDocument(selectedObject.messageOwner.media.webpage.document)) { items.add(LocaleController.getString("SaveToGIFs", R.string.SaveToGIFs)); - options.add(11); + options.add(OPTION_ADD_TO_GIFS); icons.add(R.drawable.msg_gif); } } else if (type == 4) { @@ -21391,10 +21317,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (selectedObject.isVideo()) { if (!selectedObject.needDrawBluredPreview()) { items.add(LocaleController.getString("SaveToGallery", R.string.SaveToGallery)); - options.add(4); + options.add(OPTION_SAVE_TO_GALLERY); icons.add(R.drawable.msg_gallery); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); - options.add(6); + options.add(OPTION_SHARE); icons.add(R.drawable.msg_shareout); } } else if (selectedObject.isMusic()) { @@ -21402,81 +21328,81 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not options.add(OPTION_SAVE_TO_DOWNLOADS_OR_MUSIC); icons.add(R.drawable.msg_download); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); - options.add(6); + options.add(OPTION_SHARE); icons.add(R.drawable.msg_shareout); } else if (selectedObject.getDocument() != null) { if (MessageObject.isNewGifDocument(selectedObject.getDocument())) { items.add(LocaleController.getString("SaveToGIFs", R.string.SaveToGIFs)); - options.add(11); + options.add(OPTION_ADD_TO_GIFS); icons.add(R.drawable.msg_gif); } items.add(LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); options.add(OPTION_SAVE_TO_DOWNLOADS_OR_MUSIC); icons.add(R.drawable.msg_download); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); - options.add(6); + options.add(OPTION_SHARE); icons.add(R.drawable.msg_shareout); } else { if (!selectedObject.needDrawBluredPreview()) { items.add(LocaleController.getString("SaveToGallery", R.string.SaveToGallery)); - options.add(4); + options.add(OPTION_SAVE_TO_GALLERY); icons.add(R.drawable.msg_gallery); } } } } else if (type == 5) { items.add(LocaleController.getString("ApplyLocalizationFile", R.string.ApplyLocalizationFile)); - options.add(5); + options.add(OPTION_APPLY_LOCALIZATION_OR_THEME); icons.add(R.drawable.msg_language); if (!noforwards) { items.add(LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); options.add(OPTION_SAVE_TO_DOWNLOADS_OR_MUSIC); icons.add(R.drawable.msg_download); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); - options.add(6); + options.add(OPTION_SHARE); icons.add(R.drawable.msg_shareout); } } else if (type == 10) { items.add(LocaleController.getString("ApplyThemeFile", R.string.ApplyThemeFile)); - options.add(5); + options.add(OPTION_APPLY_LOCALIZATION_OR_THEME); icons.add(R.drawable.msg_theme); if (!noforwards) { items.add(LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); options.add(OPTION_SAVE_TO_DOWNLOADS_OR_MUSIC); icons.add(R.drawable.msg_download); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); - options.add(6); + options.add(OPTION_SHARE); icons.add(R.drawable.msg_shareout); } } else if (type == 6 && !noforwards) { items.add(LocaleController.getString("SaveToGallery", R.string.SaveToGallery)); - options.add(7); + options.add(OPTION_SAVE_TO_GALLERY2); icons.add(R.drawable.msg_gallery); items.add(LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); options.add(OPTION_SAVE_TO_DOWNLOADS_OR_MUSIC); icons.add(R.drawable.msg_download); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); - options.add(6); + options.add(OPTION_SHARE); icons.add(R.drawable.msg_shareout); } else if (type == 7) { if (selectedObject.isMask()) { items.add(LocaleController.getString("AddToMasks", R.string.AddToMasks)); - options.add(9); + options.add(OPTION_ADD_TO_STICKERS_OR_MASKS); icons.add(R.drawable.msg_sticker); } else { items.add(LocaleController.getString("AddToStickers", R.string.AddToStickers)); - options.add(9); + options.add(OPTION_ADD_TO_STICKERS_OR_MASKS); icons.add(R.drawable.msg_sticker); TLRPC.Document document = selectedObject.getDocument(); if (!getMediaDataController().isStickerInFavorites(document)) { if (getMediaDataController().canAddStickerToFavorites() && MessageObject.isStickerHasSet(document)) { items.add(LocaleController.getString("AddToFavorites", R.string.AddToFavorites)); - options.add(20); + options.add(OPTION_ADD_STICKER_TO_FAVORITES); icons.add(R.drawable.msg_fave); } } else { items.add(LocaleController.getString("DeleteFromFavorites", R.string.DeleteFromFavorites)); - options.add(21); + options.add(OPTION_DELETE_STICKER_FROM_FAVORITES); icons.add(R.drawable.msg_unfave); } } @@ -21488,17 +21414,17 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (user != null && user.id != getUserConfig().getClientUserId() && getContactsController().contactsDict.get(user.id) == null) { items.add(LocaleController.getString("AddContactTitle", R.string.AddContactTitle)); - options.add(15); + options.add(OPTION_ADD_CONTACT); icons.add(R.drawable.msg_addcontact); } if (!TextUtils.isEmpty(selectedObject.messageOwner.media.phone_number)) { if (!noforwards) { items.add(LocaleController.getString("Copy", R.string.Copy)); - options.add(16); + options.add(OPTION_COPY_PHONE_NUMBER); icons.add(R.drawable.msg_copy); } items.add(LocaleController.getString("Call", R.string.Call)); - options.add(17); + options.add(OPTION_CALL); icons.add(R.drawable.msg_callback); } } else if (type == 9) { @@ -21506,69 +21432,69 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (!getMediaDataController().isStickerInFavorites(document)) { if (MessageObject.isStickerHasSet(document)) { items.add(LocaleController.getString("AddToFavorites", R.string.AddToFavorites)); - options.add(20); + options.add(OPTION_ADD_STICKER_TO_FAVORITES); icons.add(R.drawable.msg_fave); } } else { items.add(LocaleController.getString("DeleteFromFavorites", R.string.DeleteFromFavorites)); - options.add(21); + options.add(OPTION_DELETE_STICKER_FROM_FAVORITES); icons.add(R.drawable.msg_unfave); } } if (!selectedObject.isSponsored() && chatMode != MODE_SCHEDULED && !selectedObject.needDrawBluredPreview() && !selectedObject.isLiveLocation() && selectedObject.type != 16 && !noforwards) { items.add(LocaleController.getString("Forward", R.string.Forward)); - options.add(2); + options.add(OPTION_FORWARD); icons.add(R.drawable.msg_forward); } if (allowUnpin) { items.add(LocaleController.getString("UnpinMessage", R.string.UnpinMessage)); - options.add(14); + options.add(OPTION_UNPIN); icons.add(R.drawable.msg_unpin); } else if (allowPin) { items.add(LocaleController.getString("PinMessage", R.string.PinMessage)); - options.add(13); + options.add(OPTION_PIN); icons.add(R.drawable.msg_pin); } - if (selectedObject != null && selectedObject.contentType == 0 && (messageText != null && messageText.length() > 0 && !selectedObject.isAnimatedEmoji() && !selectedObject.isDice())) { + if (selectedObject != null && selectedObject.contentType == 0 && (messageTextToTranslate != null && messageTextToTranslate.length() > 0 && !selectedObject.isAnimatedEmoji() && !selectedObject.isDice())) { items.add(LocaleController.getString("TranslateMessage", R.string.TranslateMessage)); - options.add(29); + options.add(OPTION_TRANSLATE); icons.add(R.drawable.msg_translate); } if (allowEdit) { items.add(LocaleController.getString("Edit", R.string.Edit)); - options.add(12); + options.add(OPTION_EDIT); icons.add(R.drawable.msg_edit); } if (chatMode == MODE_SCHEDULED && selectedObject.canEditMessageScheduleTime(currentChat)) { items.add(LocaleController.getString("MessageScheduleEditTime", R.string.MessageScheduleEditTime)); - options.add(102); - icons.add(R.drawable.msg_schedule); + options.add(OPTION_EDIT_SCHEDULE_TIME); + icons.add(R.drawable.msg_calendar2); } if (chatMode != MODE_SCHEDULED && selectedObject.contentType == 0 && selectedObject.getId() > 0 && !selectedObject.isOut() && (currentChat != null || currentUser != null && currentUser.bot)) { if (UserObject.isReplyUser(currentUser)) { items.add(LocaleController.getString("BlockContact", R.string.BlockContact)); - options.add(23); + options.add(OPTION_REPORT_CHAT); icons.add(R.drawable.msg_block2); } else { items.add(LocaleController.getString("ReportChat", R.string.ReportChat)); - options.add(23); + options.add(OPTION_REPORT_CHAT); icons.add(R.drawable.msg_report); } } if (message.canDeleteMessage(chatMode == MODE_SCHEDULED, currentChat) && (threadMessageObjects == null || !threadMessageObjects.contains(message))) { items.add(LocaleController.getString("Delete", R.string.Delete)); - options.add(1); + options.add(OPTION_DELETE); icons.add(selectedObject.messageOwner.ttl_period != 0 ? R.drawable.msg_delete_auto : R.drawable.msg_delete); } } else { if (allowChatActions) { items.add(LocaleController.getString("Reply", R.string.Reply)); - options.add(8); + options.add(OPTION_REPLY); icons.add(R.drawable.msg_reply); } if ((selectedObject.type == 0 || selectedObject.isAnimatedEmoji() || getMessageCaption(selectedObject, selectedObjectGroup) != null) && !noforwards) { items.add(LocaleController.getString("Copy", R.string.Copy)); - options.add(3); + options.add(OPTION_COPY); icons.add(R.drawable.msg_copy); } if (!isThreadChat() && chatMode != MODE_SCHEDULED && currentChat != null && (currentChat.has_link || message.hasReplies()) && currentChat.megagroup && message.canViewThread()) { @@ -21577,47 +21503,47 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { items.add(LocaleController.getString("ViewThread", R.string.ViewThread)); } - options.add(27); + options.add(OPTION_VIEW_REPLIES_OR_THREAD); icons.add(R.drawable.msg_viewreplies); } if (type == 4 && !noforwards) { if (selectedObject.isVideo()) { items.add(LocaleController.getString("SaveToGallery", R.string.SaveToGallery)); - options.add(4); + options.add(OPTION_SAVE_TO_GALLERY); icons.add(R.drawable.msg_gallery); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); - options.add(6); + options.add(OPTION_SHARE); icons.add(R.drawable.msg_shareout); } else if (selectedObject.isMusic()) { items.add(LocaleController.getString("SaveToMusic", R.string.SaveToMusic)); options.add(OPTION_SAVE_TO_DOWNLOADS_OR_MUSIC); icons.add(R.drawable.msg_download); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); - options.add(6); + options.add(OPTION_SHARE); icons.add(R.drawable.msg_shareout); } else if (!selectedObject.isVideo() && selectedObject.getDocument() != null) { items.add(LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); options.add(OPTION_SAVE_TO_DOWNLOADS_OR_MUSIC); icons.add(R.drawable.msg_download); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); - options.add(6); + options.add(OPTION_SHARE); icons.add(R.drawable.msg_shareout); } else { items.add(LocaleController.getString("SaveToGallery", R.string.SaveToGallery)); - options.add(4); + options.add(OPTION_SAVE_TO_GALLERY); icons.add(R.drawable.msg_gallery); } } else if (type == 5) { items.add(LocaleController.getString("ApplyLocalizationFile", R.string.ApplyLocalizationFile)); - options.add(5); + options.add(OPTION_APPLY_LOCALIZATION_OR_THEME); icons.add(R.drawable.msg_language); } else if (type == 10) { items.add(LocaleController.getString("ApplyThemeFile", R.string.ApplyThemeFile)); - options.add(5); + options.add(OPTION_APPLY_LOCALIZATION_OR_THEME); icons.add(R.drawable.msg_theme); } else if (type == 7) { items.add(LocaleController.getString("AddToStickers", R.string.AddToStickers)); - options.add(9); + options.add(OPTION_ADD_TO_STICKERS_OR_MASKS); icons.add(R.drawable.msg_sticker); } else if (type == 8) { long uid = selectedObject.messageOwner.media.user_id; @@ -21627,22 +21553,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (user != null && user.id != getUserConfig().getClientUserId() && getContactsController().contactsDict.get(user.id) == null) { items.add(LocaleController.getString("AddContactTitle", R.string.AddContactTitle)); - options.add(15); + options.add(OPTION_ADD_CONTACT); icons.add(R.drawable.msg_addcontact); } if (!TextUtils.isEmpty(selectedObject.messageOwner.media.phone_number)) { if (!noforwards) { items.add(LocaleController.getString("Copy", R.string.Copy)); - options.add(16); + options.add(OPTION_COPY_PHONE_NUMBER); icons.add(R.drawable.msg_copy); } items.add(LocaleController.getString("Call", R.string.Call)); - options.add(17); + options.add(OPTION_CALL); icons.add(R.drawable.msg_callback); } } items.add(LocaleController.getString("Delete", R.string.Delete)); - options.add(1); + options.add(OPTION_DELETE); icons.add(selectedObject.messageOwner.ttl_period != 0 ? R.drawable.msg_delete_auto : R.drawable.msg_delete); } } @@ -21705,19 +21631,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } boolean hasHeader = count > 10 && message.messageOwner.reactions.results.size() > 1; - LinearLayout linearLayout = new LinearLayout(contentView.getContext()) { - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int size = MeasureSpec.getSize(widthMeasureSpec); - if (size < AndroidUtilities.dp(240)) { - size = AndroidUtilities.dp(240); - } - if (size < 0) { - size = 0; - } - super.onMeasure(MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY), heightMeasureSpec); - } - }; + ReactedUsersListView.ContainerLinerLayout linearLayout = new ReactedUsersListView.ContainerLinerLayout(contentView.getContext()); + linearLayout.hasHeader = hasHeader; linearLayout.setOrientation(LinearLayout.VERTICAL); linearLayout.setLayoutParams(new FrameLayout.LayoutParams(AndroidUtilities.dp(200), AndroidUtilities.dp(6 * 48 + (hasHeader ? 44 * 2 + 8 : 44)) + (!hasHeader ? 1 : 0))); ActionBarMenuSubItem backCell = new ActionBarMenuSubItem(getParentActivity(), true, false, themeDelegate); @@ -21728,7 +21643,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not linearLayout.addView(backCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); int[] foregroundIndex = new int[1]; - + ReactedUsersListView reactedUsersListView = null; if (hasHeader) { List counters = message.messageOwner.reactions.results; LinearLayout tabsView = new LinearLayout(contentView.getContext()); @@ -21776,7 +21691,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not linearLayout.addView(tabsScrollView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 44)); View divider = new FrameLayout(contentView.getContext()); - divider.setBackgroundColor(Theme.getColor(Theme.key_graySection)); + divider.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuSeparator)); linearLayout.addView(divider, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) Theme.dividerPaint.getStrokeWidth())); int head = AndroidUtilities.dp(44 * 2) + 1; @@ -21785,6 +21700,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not for (int i = 0; i < counters.size() + 1; i++) { cachedHeights.put(i, head + AndroidUtilities.dp(ReactedUsersListView.ITEM_HEIGHT_DP * ReactedUsersListView.VISIBLE_ITEMS)); } + int finalCount = count; pager.setAdapter(new PagerAdapter() { @Override public int getCount() { @@ -21822,9 +21738,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not }).setOnHeightChangedListener((view, newHeight) -> { cachedHeights.put(position, head + newHeight); if (pager.getCurrentItem() == position) - popupLayout.getSwipeBack().setNewForegroundHeight(foregroundIndex[0], head + newHeight); + popupLayout.getSwipeBack().setNewForegroundHeight(foregroundIndex[0], head + newHeight, true); }); if (index < 0) { + v.setPredictiveCount(finalCount); reactedView.setSeenCallback(v::setSeenUsers); } @@ -21854,15 +21771,19 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - if (fX != -1 && tX != -1) + if (fX != -1 && tX != -1) { tabsScrollView.setScrollX((int) (fX + (tX - fX) * positionOffset)); + } + int fromHeight = cachedHeights.get(position, 0); + int toHeight = cachedHeights.get(position + 1, 0); + popupLayout.getSwipeBack().setNewForegroundHeight(foregroundIndex[0], (int) (fromHeight * (1f - positionOffset) + toHeight * positionOffset), false); } } @Override public void onPageSelected(int position) { int h = cachedHeights.get(position); - popupLayout.getSwipeBack().setNewForegroundHeight(foregroundIndex[0], h); + popupLayout.getSwipeBack().setNewForegroundHeight(foregroundIndex[0], h, true); } @Override @@ -21875,10 +21796,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not linearLayout.addView(pager, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 0, 1f)); } else { View gap = new FrameLayout(contentView.getContext()); - gap.setBackgroundColor(Theme.getColor(Theme.key_graySection)); + gap.setBackgroundColor(getThemedColor(Theme.key_actionBarDefaultSubmenuSeparator)); linearLayout.addView(gap, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); - ReactedUsersListView lv = new ReactedUsersListView(contentView.getContext(), themeDelegate, currentAccount, message, null, true) + reactedUsersListView = new ReactedUsersListView(contentView.getContext(), themeDelegate, currentAccount, message, null, true) .setSeenUsers(reactedView.getSeenUsers()) .setOnProfileSelectedListener((view, userId) -> { Bundle args = new Bundle(); @@ -21886,15 +21807,18 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ProfileActivity fragment = new ProfileActivity(args); presentFragment(fragment); closeMenu(); - }).setOnHeightChangedListener((view, newHeight) -> popupLayout.getSwipeBack().setNewForegroundHeight(foregroundIndex[0], AndroidUtilities.dp(44 + 8) + newHeight)); - reactedView.setSeenCallback(lv::setSeenUsers); - linearLayout.addView(lv, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 0, 1f)); + }).setOnHeightChangedListener((view, newHeight) -> popupLayout.getSwipeBack().setNewForegroundHeight(foregroundIndex[0], AndroidUtilities.dp(44 + 8) + newHeight, true)); + reactedView.setSeenCallback(reactedUsersListView::setSeenUsers); + linearLayout.addView(reactedUsersListView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 0, 1f)); } foregroundIndex[0] = popupLayout.addViewToSwipeBack(linearLayout); + ReactedUsersListView finalReactedUsersListView = reactedUsersListView; reactedView.setOnClickListener(v1 -> { - popupLayout.getSwipeBack().openForeground(foregroundIndex[0]); + if (finalReactedUsersListView == null || finalReactedUsersListView.isLoaded) { + popupLayout.getSwipeBack().openForeground(foregroundIndex[0]); + } }); popupLayout.addView(reactedView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48)); addGap = true; @@ -21906,7 +21830,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not messageSeenLayout.addView(messageSeenView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); MessageSeenView finalMessageSeenView = messageSeenView; - ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getParentActivity(), true, true, themeDelegate); + ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getParentActivity(), true, false, themeDelegate); cell.setItemHeight(44); cell.setTextAndIcon(LocaleController.getString("Back", R.string.Back), R.drawable.msg_arrow_back); cell.getTextView().setPadding(LocaleController.isRTL ? 0 : AndroidUtilities.dp(40), 0, LocaleController.isRTL ? AndroidUtilities.dp(40) : 0, 0); @@ -21960,25 +21884,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not availableHeight -= contentView.getKeyboardHeight() / 3f; } - int listViewTotalHeight = AndroidUtilities.dp(8) + AndroidUtilities.dp(44) * listView2.getAdapter().getItemCount(); - - if (listViewTotalHeight > availableHeight) { - if (availableHeight > AndroidUtilities.dp(620)) { - listView2.getLayoutParams().height = AndroidUtilities.dp(620); - } else { - listView2.getLayoutParams().height = availableHeight; - } - } else { - listView2.getLayoutParams().height = listViewTotalHeight; - } - linearLayout.getLayoutParams().height = AndroidUtilities.dp(44) + listView2.getLayoutParams().height; listView2.requestLayout(); linearLayout.requestLayout(); listView2.getAdapter().notifyDataSetChanged(); popupLayout.getSwipeBack().openForeground(foregroundIndex[0]); } }); - linearLayout.addView(listView2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 320)); + linearLayout.addView(listView2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); listView2.setOnItemClickListener((view1, position) -> { TLRPC.User user = finalMessageSeenView.users.get(position); @@ -21996,8 +21908,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not popupLayout.addView(messageSeenLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 44)); addGap = true; } + boolean showRateTranscription = selectedObject != null && selectedObject.isVoice() && selectedObject.messageOwner != null && getUserConfig().isPremium() && !TextUtils.isEmpty(selectedObject.messageOwner.voiceTranscription) && selectedObject.messageOwner != null && !selectedObject.messageOwner.voiceTranscriptionRated && selectedObject.messageOwner.voiceTranscriptionId != 0 && selectedObject.messageOwner.voiceTranscriptionOpen; - if (message.probablyRingtone() && currentEncryptedChat == null) { + if (!showRateTranscription && message.probablyRingtone() && currentEncryptedChat == null) { ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getParentActivity(), true, false, themeDelegate); cell.setMinimumWidth(AndroidUtilities.dp(200)); cell.setTextAndIcon(LocaleController.getString("SaveForNotifications", R.string.SaveForNotifications), R.drawable.msg_tone_add); @@ -22024,7 +21937,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (addGap) { View gap = new FrameLayout(contentView.getContext()); - gap.setBackgroundColor(Theme.getColor(Theme.key_graySection)); + gap.setBackgroundColor(getThemedColor(Theme.key_actionBarDefaultSubmenuSeparator)); popupLayout.addView(gap, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); } @@ -22032,12 +21945,100 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not popupLayout.getSwipeBack().setOnClickListener(e -> closeMenu()); } + if (showRateTranscription) { + final LinearLayout rateTranscriptionLayout = new LinearLayout(contentView.getContext()); + rateTranscriptionLayout.setOrientation(LinearLayout.VERTICAL); + LinearLayout.LayoutParams rateTranscriptionLayoutParams = LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 89); + + final FrameLayout rateTranscription = new FrameLayout(contentView.getContext()); + + final View gap = new FrameLayout(contentView.getContext()); + gap.setBackgroundColor(getThemedColor(Theme.key_actionBarDefaultSubmenuSeparator)); + + TextView textView = new TextView(contentView.getContext()); + textView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText)); + textView.setGravity(Gravity.CENTER_HORIZONTAL); + textView.setText(LocaleController.getString("RateTranscription", R.string.RateTranscription)); + rateTranscription.addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP, 0, 12, 0, 0)); + + + boolean[] ratePositively = new boolean[1]; + boolean[] loading = new boolean[1]; + + Drawable drawable; + ImageView rateUp = new ImageView(contentView.getContext()); + rateUp.setBackground(Theme.createCircleSelectorDrawable(getThemedColor(Theme.key_dialogButtonSelector), 0, 0)); + drawable = contentView.getContext().getResources().getDrawable(R.drawable.msg_rate_up).mutate(); + drawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_actionBarDefaultSubmenuItemIcon), PorterDuff.Mode.SRC_IN)); + drawable = new CrossfadeDrawable(drawable, new CircularProgressDrawable(AndroidUtilities.dp(12f), AndroidUtilities.dp(1.5f), getThemedColor(Theme.key_actionBarDefaultSubmenuItemIcon))); + rateUp.setImageDrawable(drawable); + rateTranscription.addView(rateUp, LayoutHelper.createFrame(33, 33, Gravity.CENTER_HORIZONTAL | Gravity.TOP, -42, 39, 0, 0)); + + ImageView rateDown = new ImageView(contentView.getContext()); + rateDown.setBackground(Theme.createCircleSelectorDrawable(getThemedColor(Theme.key_dialogButtonSelector), 0, 0)); + drawable = contentView.getContext().getResources().getDrawable(R.drawable.msg_rate_down).mutate(); + drawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_actionBarDefaultSubmenuItemIcon), PorterDuff.Mode.SRC_IN)); + drawable = new CrossfadeDrawable(drawable, new CircularProgressDrawable(AndroidUtilities.dp(12f), AndroidUtilities.dp(1.5f), getThemedColor(Theme.key_actionBarDefaultSubmenuItemIcon))); + rateDown.setImageDrawable(drawable); + rateTranscription.addView(rateDown, LayoutHelper.createFrame(33, 33, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 42, 39, 0, 0)); + + Runnable rate = () -> { + if (loading[0]) { + return; + } + loading[0] = true; + long[] progressShown = new long[1]; + progressShown[0] = -1; + Runnable showProgress = () -> { + progressShown[0] = SystemClock.elapsedRealtime(); + CrossfadeDrawable ldrawable = ((CrossfadeDrawable) (ratePositively[0] ? rateUp : rateDown).getDrawable()); + ValueAnimator lva = ValueAnimator.ofFloat(0f, 1f); + lva.addUpdateListener(a -> { + ldrawable.setProgress((float) a.getAnimatedValue()); + }); + lva.setDuration(150); + lva.setInterpolator(CubicBezierInterpolator.DEFAULT); + lva.start(); + }; + + TLRPC.TL_messages_rateTranscribedAudio req = new TLRPC.TL_messages_rateTranscribedAudio(); + req.msg_id = selectedObject.getId(); + req.peer = getMessagesController().getInputPeer(selectedObject.messageOwner.peer_id); + req.transcription_id = selectedObject.messageOwner.voiceTranscriptionId; + req.good = ratePositively[0]; + getConnectionsManager().sendRequest(req, (res, err) -> { + AndroidUtilities.cancelRunOnUIThread(showProgress); + selectedObject.messageOwner.voiceTranscriptionRated = true; + getMessagesStorage().updateMessageVoiceTranscriptionOpen(selectedObject.getDialogId(), selectedObject.getId(), selectedObject.messageOwner); + AndroidUtilities.runOnUIThread(() -> { + closeMenu(); + BulletinFactory.of(ChatActivity.this).createSimpleBulletin(R.raw.chats_infotip, LocaleController.getString("TranscriptionReportSent", R.string.TranscriptionReportSent)).show(); + }, progressShown[0] > 0 ? Math.max(0, 300 - (SystemClock.elapsedRealtime() - progressShown[0])) : 0); + }); + AndroidUtilities.runOnUIThread(showProgress, 150); + }; + + rateUp.setOnClickListener(e -> { + ratePositively[0] = true; + rate.run(); + }); + rateDown.setOnClickListener(e -> { + ratePositively[0] = false; + rate.run(); + }); + + rateTranscriptionLayout.addView(rateTranscription, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 81)); + rateTranscriptionLayout.addView(gap, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); + + popupLayout.addView(rateTranscriptionLayout, rateTranscriptionLayoutParams); + } + final boolean translateButtonEnabled = MessagesController.getGlobalMainSettings().getBoolean("translate_button", false); scrimPopupWindowItems = new ActionBarMenuSubItem[items.size() + (selectedObject.isSponsored() ? 1 : 0)]; for (int a = 0, N = items.size(); a < N; a++) { if (a == 0 && selectedObject.isSponsored()) { ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getParentActivity(), true, true, themeDelegate); - cell.setTextAndIcon(LocaleController.getString("SponsoredMessageInfo", R.string.SponsoredMessageInfo), R.drawable.menu_info); + cell.setTextAndIcon(LocaleController.getString("SponsoredMessageInfo", R.string.SponsoredMessageInfo), R.drawable.msg_info); cell.setItemHeight(56); cell.setTag(R.id.width_tag, 240); cell.setMultiline(); @@ -22083,11 +22084,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } processSelectedOption(options.get(i)); }); - if (option == 29) { // "Translate" button + if (option == OPTION_TRANSLATE) { String toLang = LocaleController.getInstance().getCurrentLocale().getLanguage(); - final CharSequence finalMessageText = messageText; + final CharSequence finalMessageText = messageTextToTranslate; TranslateAlert.OnLinkPress onLinkPress = (link) -> { didPressMessageUrl(link, false, selectedObject, v instanceof ChatMessageCell ? (ChatMessageCell) v : null); + return true; }; TLRPC.InputPeer inputPeer = getMessagesController().getInputPeer(dialog_id); int messageId = selectedObject.messageOwner.id; @@ -22193,15 +22195,25 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (optionsView != null) { scrimPopupContainerLayout.addView(optionsView); } else { - reactionsLayout = new ReactionsContainerLayout(contentView.getContext(), currentAccount, getResourceProvider()); + reactionsLayout = new ReactionsContainerLayout(ChatActivity.this, contentView.getContext(), currentAccount, getResourceProvider()); if (isReactionsAvailable) { int pad = 22; int sPad = 24; reactionsLayout.setPadding(AndroidUtilities.dp(4) + (LocaleController.isRTL ? 0 : sPad), AndroidUtilities.dp(4), AndroidUtilities.dp(4) + (LocaleController.isRTL ? sPad : 0), AndroidUtilities.dp(pad)); ReactionsContainerLayout finalReactionsLayout = reactionsLayout; - reactionsLayout.setDelegate((rView, reaction, longress) -> { - selectReaction(primaryMessage, finalReactionsLayout, 0, 0, reaction, false, longress); + reactionsLayout.setDelegate(new ReactionsContainerLayout.ReactionsContainerDelegate() { + @Override + public void onReactionClicked(View v, TLRPC.TL_availableReaction reaction, boolean longpress) { + selectReaction(primaryMessage, finalReactionsLayout, 0, 0, reaction, false, longpress); + } + + @Override + public void hideMenu() { + if (scrimPopupWindow != null) { + scrimPopupWindow.dismiss(false); + } + } }); LinearLayout.LayoutParams params = LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 52 + pad, Gravity.RIGHT, 0, 50, 0, -20); @@ -22212,11 +22224,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not reactionsLayout.setTransitionProgress(0); if (popupLayout.getSwipeBack() != null) { - popupLayout.getSwipeBack().addOnSwipeBackProgressListener((layout, toProgress, progress) -> { - if (toProgress == 0) { - finalReactionsLayout.startEnterAnimation(); - } else if (toProgress == 1) - finalReactionsLayout.setAlpha(1f - progress); + popupLayout.getSwipeBack().addOnSwipeBackProgressListener(new PopupSwipeBackLayout.OnSwipeBackProgressListener() { + + boolean isEnter = true; + + @Override + public void onSwipeBackProgress(PopupSwipeBackLayout layout, float toProgress, float progress) { + if (toProgress == 0 && !isEnter) { + finalReactionsLayout.startEnterAnimation(); + isEnter = true; + } else if (toProgress == 1 && isEnter) { + finalReactionsLayout.setAlpha(1f - progress); + if (progress == 1f) { + isEnter = false; + } + } + } }); } } @@ -22229,7 +22252,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not boolean isChannel = ChatObject.isChannel(currentChat) && !currentChat.megagroup; TextView tv = new TextView(contentView.getContext()); tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - tv.setTextColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem)); + tv.setTextColor(getThemedColor(Theme.key_actionBarDefaultSubmenuItem)); if (getMessagesController().isChatNoForwards(currentChat)) { tv.setText(isChannel ? LocaleController.getString("ForwardsRestrictedInfoChannel", R.string.ForwardsRestrictedInfoChannel) : LocaleController.getString("ForwardsRestrictedInfoGroup", R.string.ForwardsRestrictedInfoGroup)); @@ -22239,7 +22262,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not tv.setMaxWidth(popupLayout.getMeasuredWidth() - AndroidUtilities.dp(38)); Drawable shadowDrawable2 = ContextCompat.getDrawable(contentView.getContext(), R.drawable.popup_fixed_alert).mutate(); - shadowDrawable2.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground), PorterDuff.Mode.MULTIPLY)); + shadowDrawable2.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_actionBarDefaultSubmenuBackground), PorterDuff.Mode.MULTIPLY)); FrameLayout fl = new FrameLayout(contentView.getContext()); fl.setBackground(shadowDrawable2); @@ -22315,15 +22338,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } final int finalPopupX = scrimPopupX = popupX; final int finalPopupY = scrimPopupY = popupY; + scrimPopupContainerLayout.setMaxHeight(totalHeight - popupY); ReactionsContainerLayout finalReactionsLayout = reactionsLayout; Runnable showMenu = () -> { - if (scrimPopupWindow == null || fragmentView == null) { + if (scrimPopupWindow == null || fragmentView == null || scrimPopupWindow.isShowing()) { return; } scrimPopupWindow.showAtLocation(chatListView, Gravity.LEFT | Gravity.TOP, finalPopupX, finalPopupY); if (isReactionsAvailable && finalReactionsLayout != null) { finalReactionsLayout.startEnterAnimation(); } + AndroidUtilities.runOnUIThread(() -> { + if (scrimPopupWindowItems != null && scrimPopupWindowItems.length > 0 && scrimPopupWindowItems[0] != null) { + scrimPopupWindowItems[0].requestFocus(); + scrimPopupWindowItems[0].performAccessibilityAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null); + scrimPopupWindowItems[0].sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); + } + }, 420); }; if (waitForLangDetection.get()) { onLangDetectionDone.set(showMenu); @@ -22406,7 +22437,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } return false; } - private void closeMenu() { + + public void closeMenu() { closeMenu(true); } @@ -22458,6 +22490,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ChatMessageCell cell = findMessageCell(finalMessageIdForCell, true); ReactionsEffectOverlay.show(ChatActivity.this, reactionsLayout, cell, x, y, reaction.reaction, currentAccount, reactionsLayout != null ? (bigEmoji ? ReactionsEffectOverlay.LONG_ANIMATION : ReactionsEffectOverlay.ONLY_MOVE_ANIMATION) : ReactionsEffectOverlay.SHORT_ANIMATION); } + if (added) { + AndroidUtilities.makeAccessibilityAnnouncement(LocaleController.formatString("AccDescrYouReactedWith", R.string.AccDescrYouReactedWith, reaction.reaction)); + } getSendMessagesHelper().sendReaction(primaryMessage, added ? reaction.reaction : null, bigEmoji, ChatActivity.this, updateReactionRunnable = new Runnable() { @Override public void run() { @@ -22521,6 +22556,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } public ChatMessageCell findMessageCell(int id, boolean visibleForUser) { + if (chatListView == null) { + return null; + } for (int i = 0, n = chatListView.getChildCount(); i < n; i++) { View child = chatListView.getChildAt(i); if (chatListView.getChildAt(i) instanceof ChatMessageCell && ((ChatMessageCell) chatListView.getChildAt(i)).getMessageObject().getId() == id) { @@ -22545,7 +22583,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatActivityEnterView.setFieldFocused(); } - mentionsAdapter.setNeedBotContext(false); + mentionContainer.getAdapter().setNeedBotContext(false); chatActivityEnterView.setVisibility(View.VISIBLE); showFieldPanelForEdit(true, messageObject); updateBottomOverlay(); @@ -22706,7 +22744,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (TextUtils.isEmpty(path)) { - path = FileLoader.getPathToMessage(messageObject.messageOwner).toString(); + path = FileLoader.getInstance(currentAccount).getPathToMessage(messageObject.messageOwner).toString(); } MediaController.saveFile(path, getParentActivity(), messageObject.isVideo() ? 1 : 0, null, null); } @@ -22717,7 +22755,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } boolean preserveDim = false; switch (option) { - case 0: { + case OPTION_RETRY: { if (selectedObjectGroup != null) { boolean success = true; for (int a = 0; a < selectedObjectGroup.messages.size(); a++) { @@ -22749,7 +22787,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not createDeleteMessagesAlert(selectedObject, selectedObjectGroup, 1,true); break; } - case 2: { + case OPTION_FORWARD: { forwardingMessage = selectedObject; forwardingMessageGroup = selectedObjectGroup; Bundle args = new Bundle(); @@ -22763,7 +22801,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not presentFragment(fragment); break; } - case 3: { + case OPTION_COPY: { if (selectedObject.isDice()) { AndroidUtilities.addToClipboard(selectedObject.getDiceEmoji()); } else { @@ -22777,7 +22815,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not undoView.showWithAction(0, UndoView.ACTION_MESSAGE_COPIED, null); break; } - case 4: { + case OPTION_SAVE_TO_GALLERY: { if (Build.VERSION.SDK_INT >= 23 && (Build.VERSION.SDK_INT <= 28 || BuildVars.NO_SCOPED_STORAGE) && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { getParentActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 4); selectedObject = null; @@ -22811,7 +22849,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } break; } - case 5: { + case OPTION_APPLY_LOCALIZATION_OR_THEME: { File locFile = null; if (!TextUtils.isEmpty(selectedObject.messageOwner.attachPath)) { File f = new File(selectedObject.messageOwner.attachPath); @@ -22820,7 +22858,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (locFile == null) { - File f = FileLoader.getPathToMessage(selectedObject.messageOwner); + File f = getFileLoader().getPathToMessage(selectedObject.messageOwner); if (f.exists()) { locFile = f; } @@ -22870,7 +22908,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } break; } - case 6: { + case OPTION_SHARE: { String path = selectedObject.messageOwner.attachPath; if (path != null && path.length() > 0) { File temp = new File(path); @@ -22879,7 +22917,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + path = getFileLoader().getPathToMessage(selectedObject.messageOwner).toString(); } Intent intent = new Intent(Intent.ACTION_SEND); intent.setType(selectedObject.getDocument().mime_type); @@ -22901,7 +22939,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } break; } - case 7: { + case OPTION_SAVE_TO_GALLERY2: { String path = selectedObject.messageOwner.attachPath; if (path != null && path.length() > 0) { File temp = new File(path); @@ -22910,7 +22948,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + path = getFileLoader().getPathToMessage(selectedObject.messageOwner).toString(); } if (Build.VERSION.SDK_INT >= 23 && (Build.VERSION.SDK_INT <= 28 || BuildVars.NO_SCOPED_STORAGE) && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { getParentActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 4); @@ -22923,11 +22961,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not BulletinFactory.createSaveToGalleryBulletin(this, selectedObject.isVideo(), themeDelegate).show(); break; } - case 8: { + case OPTION_REPLY: { showFieldPanelForReply(selectedObject); break; } - case 9: { + case OPTION_ADD_TO_STICKERS_OR_MASKS: { StickersAlert alert = new StickersAlert(getParentActivity(), this, selectedObject.getInputStickerSet(), null, bottomOverlayChat.getVisibility() != View.VISIBLE && (currentChat == null || ChatObject.canSendStickers(currentChat)) ? chatActivityEnterView : null, themeDelegate); alert.setCalcMandatoryInsets(isKeyboardVisible()); preserveDim = true; @@ -22937,7 +22975,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not break; } case OPTION_SAVE_TO_DOWNLOADS_OR_MUSIC: { - //TODO scopped storage if (Build.VERSION.SDK_INT >= 23 && (Build.VERSION.SDK_INT <= 28 || BuildVars.NO_SCOPED_STORAGE) && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { getParentActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 4); selectedObject = null; @@ -22979,7 +23016,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + path = getFileLoader().getPathToMessage(selectedObject.messageOwner).toString(); } MediaController.saveFile(path, getParentActivity(), 2, fileName, selectedObject.getDocument() != null ? selectedObject.getDocument().mime_type : "", () -> { if (getParentActivity() == null) { @@ -23000,7 +23037,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } break; } - case 11: { + case OPTION_ADD_TO_GIFS: { TLRPC.Document document = selectedObject.getDocument(); getMessagesController().saveGif(selectedObject, document); if (!showGifHint() && getParentActivity() != null) { @@ -23009,7 +23046,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatActivityEnterView.addRecentGif(document); break; } - case 12: { + case OPTION_EDIT: { if (selectedObjectToEditCaption != null) { startEditingMessageObject(selectedObjectToEditCaption); } else { @@ -23020,7 +23057,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not selectedObjectToEditCaption = null; break; } - case 13: { + case OPTION_PIN: { final int mid; if (selectedObjectGroup != null && !selectedObjectGroup.messages.isEmpty()) { mid = selectedObjectGroup.messages.get(0).getId(); @@ -23096,7 +23133,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not showDialog(builder.create()); break; } - case 14: { + case OPTION_UNPIN: { MessageObject messageObject; if (pinnedMessageObjects.containsKey(selectedObject.getId())) { messageObject = selectedObject; @@ -23113,7 +23150,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } break; } - case 15: { + case OPTION_ADD_CONTACT: { Bundle args = new Bundle(); args.putLong("user_id", selectedObject.messageOwner.media.user_id); args.putString("phone", selectedObject.messageOwner.media.phone_number); @@ -23121,11 +23158,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not presentFragment(new ContactAddActivity(args)); break; } - case 16: { + case OPTION_COPY_PHONE_NUMBER: { AndroidUtilities.addToClipboard(selectedObject.messageOwner.media.phone_number); break; } - case 17: { + case OPTION_CALL: { try { Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + selectedObject.messageOwner.media.phone_number)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -23135,25 +23172,25 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } break; } - case 18: { + case OPTION_CALL_AGAIN: { if (currentUser != null) { VoIPHelper.startCall(currentUser, selectedObject.isVideoCall(), userInfo != null && userInfo.video_calls_available, getParentActivity(), getMessagesController().getUserFull(currentUser.id), getAccountInstance()); } break; } - case 19: { + case OPTION_RATE_CALL: { VoIPHelper.showRateAlert(getParentActivity(), (TLRPC.TL_messageActionPhoneCall) selectedObject.messageOwner.action); break; } - case 20: { + case OPTION_ADD_STICKER_TO_FAVORITES: { getMediaDataController().addRecentSticker(MediaDataController.TYPE_FAVE, selectedObject, selectedObject.getDocument(), (int) (System.currentTimeMillis() / 1000), false); break; } - case 21: { + case OPTION_DELETE_STICKER_FROM_FAVORITES: { getMediaDataController().addRecentSticker(MediaDataController.TYPE_FAVE, selectedObject, selectedObject.getDocument(), (int) (System.currentTimeMillis() / 1000), true); break; } - case 22: { + case OPTION_COPY_LINK: { TLRPC.TL_channels_exportMessageLink req = new TLRPC.TL_channels_exportMessageLink(); if (selectedObject == replyingMessageObject && isComments) { req.id = replyOriginalMessageId; @@ -23193,7 +23230,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } break; } - case 24: { + case OPTION_CANCEL_SENDING: { if (selectedObject.isEditing() || selectedObject.isSending() && selectedObjectGroup == null) { getSendMessagesHelper().cancelSendingMessage(selectedObject); } else if (selectedObject.isSending() && selectedObjectGroup != null) { @@ -23203,7 +23240,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } break; } - case 25: { + case OPTION_UNVOTE: { final AlertDialog[] progressDialog = new AlertDialog[]{new AlertDialog(getParentActivity(), 3, themeDelegate)}; int requestId = getSendMessagesHelper().sendVote(selectedObject, null, () -> { try { @@ -23224,7 +23261,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } break; } - case 26: { + case OPTION_STOP_POLL_OR_QUIZ: { MessageObject object = selectedObject; AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), themeDelegate); preserveDim = true; @@ -23278,11 +23315,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not showDialog(builder.create()); break; } - case 27: { + case OPTION_VIEW_REPLIES_OR_THREAD: { openDiscussionMessageChat(currentChat.id, null, selectedObject.getId(), 0, -1, 0, null); break; } - case 28: { + case OPTION_STATISTICS: { presentFragment(new MessageStatisticActivity(selectedObject)); break; } @@ -23320,7 +23357,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not break; } } - case 102: { + case OPTION_EDIT_SCHEDULE_TIME: { MessageObject message = selectedObject; MessageObject.GroupedMessages group = selectedObjectGroup; AlertsCreator.createScheduleDatePickerDialog(getParentActivity(), dialog_id, message.messageOwner.date, (notify, scheduleDate) -> { @@ -23335,6 +23372,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not preserveDim = true; break; } + case OPTION_HIDE_SPONSORED_MESSAGE: { + MessageObject message = selectedObject; + showDialog(new PremiumFeatureBottomSheet(ChatActivity.this, PremiumPreviewFragment.PREMIUM_FEATURE_ADS, true)); + break; + } } selectedObject = null; selectedObjectGroup = null; @@ -23463,7 +23505,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public boolean onBackPressed() { - if (forwardingPreviewView != null && forwardingPreviewView.isShowing()) { + if (ContentPreviewViewer.getInstance().isVisible()) { + ContentPreviewViewer.getInstance().closeWithMenu(); + return false; + } else if (forwardingPreviewView != null && forwardingPreviewView.isShowing()) { forwardingPreviewView.dismiss(true); return false; } else if (messagesSearchListView.getTag() != null) { @@ -23481,8 +23526,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not clearSelectionMode(); return false; } else if (chatActivityEnterView != null && chatActivityEnterView.isPopupShowing()) { - chatActivityEnterView.hidePopup(true); - return false; + return !chatActivityEnterView.hidePopup(true); } else if (chatActivityEnterView != null && chatActivityEnterView.hasBotWebView() && chatActivityEnterView.botCommandsMenuIsShowing() && chatActivityEnterView.onBotWebViewBackPressed()) { return false; } else if (chatActivityEnterView != null && chatActivityEnterView.botCommandsMenuIsShowing()) { @@ -23868,15 +23912,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private boolean savedNoHistory; private boolean savedNoDiscussion; - private void processLoadedDiscussionMessage(boolean noDiscussion, TLRPC.TL_messages_discussionMessage discussionMessage, boolean noHistory, TLRPC.messages_Messages history, int maxReadId, MessageObject fallbackMessage, Runnable progressRunnable, TLRPC.TL_messages_getDiscussionMessage req, TLRPC.Chat originalChat, int highlightMsgId, MessageObject originalMessage) { - if (!noDiscussion && discussionMessage == null || noDiscussion || !noHistory && history == null) { - commentLoadingMessageId = 0; - chatListView.invalidateViews(); - return; - } - + private void processLoadedDiscussionMessage(boolean noDiscussion, TLRPC.TL_messages_discussionMessage discussionMessage, boolean noHistory, TLRPC.messages_Messages history, int maxReadId, MessageObject fallbackMessage, TLRPC.TL_messages_getDiscussionMessage req, TLRPC.Chat originalChat, int highlightMsgId, MessageObject originalMessage) { + final int thisCommentLoadingMessageId = commentLoadingMessageId; if (history != null) { - if (maxReadId != 1 && maxReadId != 0 && maxReadId != discussionMessage.read_inbox_max_id) { + if (maxReadId != 1 && maxReadId != 0 && maxReadId != discussionMessage.read_inbox_max_id && highlightMsgId <= 0) { history = null; } else if (!history.messages.isEmpty() && discussionMessage != null && !discussionMessage.messages.isEmpty()) { TLRPC.Message message = history.messages.get(0); @@ -23890,16 +23929,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - boolean chatOpened = false; - ArrayList arrayList = new ArrayList<>(); - for (int a = 0, N = discussionMessage.messages.size(); a < N; a++) { - TLRPC.Message message = discussionMessage.messages.get(a); - if (message instanceof TLRPC.TL_messageEmpty) { - continue; + if (discussionMessage != null && discussionMessage.messages != null) { + for (int a = 0, N = discussionMessage.messages.size(); a < N; a++) { + TLRPC.Message message = discussionMessage.messages.get(a); + if (message instanceof TLRPC.TL_messageEmpty) { + continue; + } + message.isThreadMessage = true; + arrayList.add(new MessageObject(UserConfig.selectedAccount, message, true, true)); } - message.isThreadMessage = true; - arrayList.add(new MessageObject(UserConfig.selectedAccount, message, true, true)); } if (!arrayList.isEmpty()) { Bundle args = new Bundle(); @@ -23919,11 +23958,21 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (originalMessage != null && originalMessage.messageOwner.reactions != null) { chatActivity.threadMessageObject.messageOwner.reactions = originalMessage.messageOwner.reactions; } - presentFragment(chatActivity); - if (isKeyboardVisible() && !chatActivity.hideKeyboardOnShow()) { - chatActivity.chatActivityEnterView.getEditField().requestFocus(); - } - chatOpened = true; + final boolean[] chatOpened = new boolean[] { false }; + Runnable openCommentsChat = () -> { + if (chatOpened[0] || thisCommentLoadingMessageId != commentLoadingMessageId || !isFullyVisible || isFinishing()) { + return; + } + chatOpened[0] = true; + AndroidUtilities.runOnUIThread(() -> { + commentLoadingMessageId = 0; + chatListView.invalidateViews(); + }, 200); + presentFragment(chatActivity); + if (isKeyboardVisible() && !chatActivity.hideKeyboardOnShow()) { + chatActivity.chatActivityEnterView.getEditField().requestFocus(); + } + }; if (history != null) { int fnid = 0; if (!history.messages.isEmpty()) { @@ -23935,16 +23984,32 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } } + TLRPC.messages_Messages historyFinal = history; int fnidFinal = fnid; - Utilities.stageQueue.postRunnable(() -> getMessagesController().processLoadedMessages(historyFinal, historyFinal.messages.size(), dialogId, 0, 30, maxReadId, 0, false, chatActivity.getClassGuid(), fnidFinal, 0, 0, 0, 2, true, 0, arrayList.get(arrayList.size() - 1).getId(), 1, false, 0, true)); + final int commentsClassGuid = chatActivity.getClassGuid(); + final NotificationCenter.NotificationCenterDelegate observer = new NotificationCenter.NotificationCenterDelegate() { + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.messagesDidLoad && (Integer) args[10] == commentsClassGuid) { + openCommentsChat.run(); + AndroidUtilities.runOnUIThread(() -> { + chatActivity.didReceivedNotification(id, account, args); + }, 50); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.messagesDidLoad); + } + } + }; + NotificationCenter.getInstance(currentAccount).addObserver(observer, NotificationCenter.messagesDidLoad); + Utilities.stageQueue.postRunnable(() -> { + getMessagesController().processLoadedMessages(historyFinal, historyFinal.messages.size(), dialogId, 0, 30, (highlightMsgId > 0 ? highlightMsgId : maxReadId), 0, false, commentsClassGuid, fnidFinal, 0, 0, 0, (highlightMsgId > 0 ? 3 : 2), true, 0, arrayList.get(arrayList.size() - 1).getId(), 1, false, 0, true); + }); + } else { + openCommentsChat.run(); } - } - - AndroidUtilities.cancelRunOnUIThread(progressRunnable); - commentLoadingMessageId = 0; - chatListView.invalidateViews(); - if (!chatOpened) { + } else { + commentLoadingMessageId = 0; + chatListView.invalidateViews(); if (fallbackMessage != null) { openOriginalReplyChat(fallbackMessage); } else { @@ -23982,71 +24047,18 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not getConnectionsManager().cancelRequest(commentRequestId, false); } - Runnable progressRunnable = () -> { - commentLoadingMessageId = fallbackMessage != null ? fallbackMessage.getId() : messageId; - if (chatListView != null) { - chatListView.invalidateViews(); - } - }; - if (maxReadId >= 0 && linkedChatId != 0) { - TLRPC.Chat linkedChat = getMessagesController().getChat(linkedChatId); - if (linkedChat != null) { - int count = 30; - if (BuildVars.LOGS_ENABLED) { - FileLog.d("load replies for " + linkedChat.id + " msg_id = " + maxReadId); - } - TLRPC.TL_messages_getReplies getReplies = new TLRPC.TL_messages_getReplies(); - getReplies.peer = MessagesController.getInputPeer(linkedChat); - getReplies.msg_id = maxReadId; - getReplies.offset_date = 0; - getReplies.add_offset = -count + 10; - getReplies.limit = count; - getReplies.offset_id = maxReadId; - int guid = ++commentMessagesLoadingGuid; - commentMessagesRequestId = getConnectionsManager().sendRequest(getReplies, (response, error) -> { - Runnable runnable = () -> { - if (guid != commentMessagesLoadingGuid) { - return; - } - commentMessagesRequestId = -1; - if (response != null) { - savedHistory = (TLRPC.messages_Messages) response; - if (savedHistory.messages.size() > count) { - savedHistory.messages.remove(0); - } - } else { - if ("CHANNEL_PRIVATE".equals(error.text)) { - if (getParentActivity() != null) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), themeDelegate); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setMessage(LocaleController.getString("JoinByPeekChannelText", R.string.JoinByPeekChannelText)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); - showDialog(builder.create()); - } - AndroidUtilities.cancelRunOnUIThread(progressRunnable); - commentLoadingMessageId = 0; - chatListView.invalidateViews(); - return; - } - savedNoHistory = true; - } - processLoadedDiscussionMessage(savedNoDiscussion, savedDiscussionMessage, savedNoHistory, savedHistory, maxReadId, fallbackMessage, progressRunnable, req, chat, highlightMsgId, originalMessage); - }; - AndroidUtilities.runOnUIThread(() -> doOnIdle(runnable)); - }); - getConnectionsManager().bindRequestToGuid(commentMessagesRequestId, classGuid); - } else { - savedNoHistory = true; - } - } else { - savedNoHistory = true; + commentLoadingMessageId = fallbackMessage != null ? fallbackMessage.getId() : messageId; + if (chatListView != null) { + chatListView.invalidateViews(); } - int guid = ++commentLoadingGuid; + final int guid1 = ++commentLoadingGuid; commentRequestId = getConnectionsManager().sendRequest(req, (response, error) -> { Runnable runnable = () -> { - if (guid != commentLoadingGuid) { + if (guid1 != commentLoadingGuid) { return; } + int maxReadId1 = maxReadId; + long linkedChatId1 = linkedChatId; commentRequestId = -1; if (response instanceof TLRPC.TL_messages_discussionMessage) { savedDiscussionMessage = (TLRPC.TL_messages_discussionMessage) response; @@ -24055,12 +24067,66 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { savedNoDiscussion = true; } - processLoadedDiscussionMessage(savedNoDiscussion, savedDiscussionMessage, savedNoHistory, savedHistory, maxReadId, fallbackMessage, progressRunnable, req, chat, highlightMsgId, originalMessage); + + ArrayList msgs = new ArrayList<>(); + if (savedDiscussionMessage != null && savedDiscussionMessage.messages != null) { + for (int i = 0; i < savedDiscussionMessage.messages.size(); ++i) { + TLRPC.Message message = savedDiscussionMessage.messages.get(i); + if (message instanceof TLRPC.TL_messageEmpty) { + continue; + } + msgs.add(message); + } + } + if (msgs.size() > 0) { + TLRPC.Message message = msgs.get(0); + TLRPC.TL_messages_getReplies getReplies = new TLRPC.TL_messages_getReplies(); + getReplies.peer = getMessagesController().getInputPeer(message.peer_id); + getReplies.msg_id = message.id; + getReplies.offset_date = 0; + getReplies.limit = 30; + if (highlightMsgId > 0) { + getReplies.offset_id = highlightMsgId; + getReplies.add_offset = -getReplies.limit / 2; + } else { + getReplies.offset_id = maxReadId1 == 0 ? 1 : maxReadId1; + getReplies.add_offset = -getReplies.limit + 10; + } + final int guid2 = ++commentMessagesLoadingGuid; + commentMessagesRequestId = getConnectionsManager().sendRequest(getReplies, (response2, error2) -> { + AndroidUtilities.runOnUIThread(() -> doOnIdle(() -> { + if (guid2 != commentMessagesLoadingGuid) { + return; + } + commentMessagesRequestId = -1; + if (response2 != null) { + savedHistory = (TLRPC.messages_Messages) response2; + } else { + if ("CHANNEL_PRIVATE".equals(error2.text)) { + if (getParentActivity() != null) { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), themeDelegate); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setMessage(LocaleController.getString("JoinByPeekChannelText", R.string.JoinByPeekChannelText)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); + showDialog(builder.create()); + } + commentLoadingMessageId = 0; + chatListView.invalidateViews(); + return; + } + savedNoHistory = true; + } + processLoadedDiscussionMessage(savedNoDiscussion, savedDiscussionMessage, savedNoHistory, savedHistory, maxReadId1, fallbackMessage, req, chat, highlightMsgId, originalMessage); + })); + }); + } else { + savedNoHistory = true; + processLoadedDiscussionMessage(savedNoDiscussion, savedDiscussionMessage, savedNoHistory, savedHistory, maxReadId1, fallbackMessage, req, chat, highlightMsgId, originalMessage); + } }; AndroidUtilities.runOnUIThread(() -> doOnIdle(runnable)); }); getConnectionsManager().bindRequestToGuid(commentRequestId, classGuid); - AndroidUtilities.runOnUIThread(progressRunnable, 500); } private void openOriginalReplyChat(MessageObject messageObject) { @@ -24228,43 +24294,125 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not messageCell.setChecked(true, groupedMessages == null, animated); } - private void openClickableLink(String str) { - if (str.startsWith("@")) { - String username = str.substring(1).toLowerCase(); - if (currentChat != null && !TextUtils.isEmpty(currentChat.username) && username.equals(currentChat.username.toLowerCase()) || - currentUser != null && !TextUtils.isEmpty(currentUser.username) && username.equals(currentUser.username.toLowerCase())) { - Bundle args = new Bundle(); - if (currentChat != null) { - args.putLong("chat_id", currentChat.id); - } else if (currentUser != null) { - args.putLong("user_id", currentUser.id); - if (currentEncryptedChat != null) { - args.putLong("dialog_id", dialog_id); + private void openClickableLink(CharacterStyle url, String str, boolean longPress, final ChatMessageCell cell, final MessageObject messageObject) { + if (longPress) { + BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity(), false, themeDelegate); + int timestamp = -1; + if (str.startsWith("video?")) { + timestamp = Utilities.parseInt(str); + } + if (timestamp >= 0) { + builder.setTitle(AndroidUtilities.formatDuration(timestamp, false)); + } else { + String formattedUrl = str; + try { + formattedUrl = URLDecoder.decode(str.replaceAll("\\+", "%2b"), "UTF-8"); + } catch (Exception ignore) {} + builder.setTitle(formattedUrl); + builder.setTitleMultipleLines(true); + } + final int finalTimestamp = timestamp; + boolean noforwards = getMessagesController().isChatNoForwards(currentChat) || (messageObject != null && messageObject.messageOwner != null && messageObject.messageOwner.noforwards); + builder.setItems(noforwards ? new CharSequence[] {LocaleController.getString("Open", R.string.Open)} : new CharSequence[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy)}, (dialog, which) -> { + if (which == 0) { + if (str.startsWith("video?")) { + didPressMessageUrl(url, false, messageObject, cell); + } else { + openClickableLink(url, str, false, cell, messageObject); } + } else if (which == 1) { + if (str.startsWith("video?") && messageObject != null && !messageObject.scheduled) { + MessageObject messageObject1 = messageObject; + boolean isMedia = messageObject.isVideo() || messageObject.isRoundVideo() || messageObject.isVoice() || messageObject.isMusic(); + if (!isMedia && messageObject.replyMessageObject != null) { + messageObject1 = messageObject.replyMessageObject; + } + long dialogId = messageObject1.getDialogId(); + int messageId = messageObject1.getId(); + String link = null; + + if (messageObject1.messageOwner.fwd_from != null) { + if (messageObject1.messageOwner.fwd_from.saved_from_peer != null) { + dialogId = MessageObject.getPeerId(messageObject1.messageOwner.fwd_from.saved_from_peer); + messageId = messageObject1.messageOwner.fwd_from.saved_from_msg_id; + } else if (messageObject1.messageOwner.fwd_from.from_id != null) { + dialogId = MessageObject.getPeerId(messageObject1.messageOwner.fwd_from.from_id); + messageId = messageObject1.messageOwner.fwd_from.channel_post; + } + } + + if (DialogObject.isChatDialog(dialogId)) { + TLRPC.Chat currentChat = MessagesController.getInstance(currentAccount).getChat(-dialogId); + if (currentChat != null && currentChat.username != null) { + link = "https://t.me/" + currentChat.username + "/" + messageId + "?t=" + finalTimestamp; + } + } else { + TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(dialogId); + if (user != null && user.username != null) { + link = "https://t.me/" + user.username + "/" + messageId + "?t=" + finalTimestamp; + } + } + if (link == null) { + return; + } + AndroidUtilities.addToClipboard(link); + } else { + AndroidUtilities.addToClipboard(str); + } + if (str.startsWith("@")) { + undoView.showWithAction(0, UndoView.ACTION_USERNAME_COPIED, null); + } else if (str.startsWith("#") || str.startsWith("$")) { + undoView.showWithAction(0, UndoView.ACTION_HASHTAG_COPIED, null); + } else { + undoView.showWithAction(0, UndoView.ACTION_LINK_COPIED, null); + } + } - ProfileActivity fragment = new ProfileActivity(args, avatarContainer.getSharedMediaPreloader()); - fragment.setPlayProfileAnimation(1); - fragment.setChatInfo(chatInfo); - fragment.setUserInfo(userInfo); - presentFragment(fragment); - } else { - getMessagesController().openByUserName(username, ChatActivity.this, 0); - } - } else if (str.startsWith("#") || str.startsWith("$")) { - if (ChatObject.isChannel(currentChat)) { - if (chatMode == MODE_SCHEDULED || chatMode == MODE_PINNED) { - chatActivityDelegate.openSearch(str); - finishFragment(); - } else { - openSearchWithText(str); + }); + builder.setOnPreDismissListener(di -> { + if (cell != null) { + cell.resetPressedLink(-1); } - } else { - DialogsActivity fragment = new DialogsActivity(null); - fragment.setSearchString(str); - presentFragment(fragment); - } + }); + showDialog(builder.create()); } else { - processExternalUrl(0, str, false); + if (str.startsWith("@")) { + String username = str.substring(1).toLowerCase(); + if (currentChat != null && !TextUtils.isEmpty(currentChat.username) && username.equals(currentChat.username.toLowerCase()) || + currentUser != null && !TextUtils.isEmpty(currentUser.username) && username.equals(currentUser.username.toLowerCase())) { + Bundle args = new Bundle(); + if (currentChat != null) { + args.putLong("chat_id", currentChat.id); + } else if (currentUser != null) { + args.putLong("user_id", currentUser.id); + if (currentEncryptedChat != null) { + args.putLong("dialog_id", dialog_id); + } + } + ProfileActivity fragment = new ProfileActivity(args, avatarContainer.getSharedMediaPreloader()); + fragment.setPlayProfileAnimation(1); + fragment.setChatInfo(chatInfo); + fragment.setUserInfo(userInfo); + presentFragment(fragment); + } else { + getMessagesController().openByUserName(username, ChatActivity.this, 0); + } + } else if (str.startsWith("#") || str.startsWith("$")) { + if (ChatObject.isChannel(currentChat)) { + if (chatMode == MODE_SCHEDULED || chatMode == MODE_PINNED) { + chatActivityDelegate.openSearch(str); + finishFragment(); + } else { + openSearchWithText(str); + } + } else { + DialogsActivity fragment = new DialogsActivity(null); + fragment.setSearchString(str); + presentFragment(fragment); + } + } else { + processExternalUrl(0, str, false); + } } } @@ -24306,7 +24454,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ((URLSpanMono) url).copyToClipboard(); getUndoView().showWithAction(0, UndoView.ACTION_TEXT_COPIED, null); } - if (longPress) { + if (longPress && cell != null) { cell.resetPressedLink(-1); } } else if (url instanceof URLSpanUserMention) { @@ -24314,7 +24462,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (user != null) { MessagesController.openChatOrProfileWith(user, null, ChatActivity.this, 0, false); } - if (longPress) { + if (longPress && cell != null) { cell.resetPressedLink(-1); } } else if (url instanceof URLSpanNoUnderline) { @@ -24326,7 +24474,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not hideFieldPanel(false); } } - if (longPress) { + if (longPress && cell != null) { cell.resetPressedLink(-1); } } else if (messageObject != null && str.startsWith("video") && !longPress) { @@ -24372,7 +24520,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not messageObject.forceSeekTo = seekTime / (float) messageObject.getDuration(); mediaController.playMessage(messageObject); } - if (longPress) { + if (longPress && cell != null) { cell.resetPressedLink(-1); } } else if (str.startsWith("card:")) { @@ -24408,10 +24556,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not Toast.makeText(ApplicationLoader.applicationContext, LocaleController.getString("CardNumberCopied", R.string.CardNumberCopied), Toast.LENGTH_SHORT).show(); } }); - builder.setOnPreDismissListener(di -> finalCell.resetPressedLink(-1)); - builder.fixNavigationBar(); + builder.setOnPreDismissListener(di -> { + if (finalCell != null) { + finalCell.resetPressedLink(-1); + } + }); showDialog(builder.create()); - } else { + } else if (finalCell != null) { finalCell.resetPressedLink(-1); } }), null, null, 0, getMessagesController().webFileDatacenterId, ConnectionsManager.ConnectionTypeGeneric, true); @@ -24426,94 +24577,19 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not showDialog(progressDialog[0]); }, 500); } else { - if (longPress) { - BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity(), false, themeDelegate); - int timestamp = -1; - if (str.startsWith("video?")) { - timestamp = Utilities.parseInt(str); - } - if (timestamp >= 0) { - builder.setTitle(AndroidUtilities.formatDuration(timestamp, false)); - } else { - builder.setTitle(str); - } - final int finalTimestamp = timestamp; - ChatMessageCell finalCell = cell; - MessageObject finalMessageObject = messageObject; - builder.setItems(noforwards ? new CharSequence[] {LocaleController.getString("Open", R.string.Open)} : new CharSequence[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy)}, (dialog, which) -> { - if (which == 0) { - if (str.startsWith("video?")) { - didPressMessageUrl(url, false, finalMessageObject, finalCell); - } else { - openClickableLink(str); - } - } else if (which == 1) { - if (str.startsWith("video?") && finalMessageObject != null && !finalMessageObject.scheduled) { - MessageObject messageObject1 = finalMessageObject; - boolean isMedia = finalMessageObject.isVideo() || finalMessageObject.isRoundVideo() || finalMessageObject.isVoice() || finalMessageObject.isMusic(); - if (!isMedia && finalMessageObject.replyMessageObject != null) { - messageObject1 = finalMessageObject.replyMessageObject; - } - long dialogId = messageObject1.getDialogId(); - int messageId = messageObject1.getId(); - String link = null; - - if (messageObject1.messageOwner.fwd_from != null) { - if (messageObject1.messageOwner.fwd_from.saved_from_peer != null) { - dialogId = MessageObject.getPeerId(messageObject1.messageOwner.fwd_from.saved_from_peer); - messageId = messageObject1.messageOwner.fwd_from.saved_from_msg_id; - } else if (messageObject1.messageOwner.fwd_from.from_id != null) { - dialogId = MessageObject.getPeerId(messageObject1.messageOwner.fwd_from.from_id); - messageId = messageObject1.messageOwner.fwd_from.channel_post; - } - } - - if (DialogObject.isChatDialog(dialogId)) { - TLRPC.Chat currentChat = MessagesController.getInstance(currentAccount).getChat(-dialogId); - if (currentChat != null && currentChat.username != null) { - link = "https://t.me/" + currentChat.username + "/" + messageId + "?t=" + finalTimestamp; - } - } else { - TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(dialogId); - if (user != null && user.username != null) { - link = "https://t.me/" + user.username + "/" + messageId + "?t=" + finalTimestamp; - } - } - if (link == null) { - return; - } - AndroidUtilities.addToClipboard(link); - } else { - AndroidUtilities.addToClipboard(str); - } - if (str.startsWith("@")) { - undoView.showWithAction(0, UndoView.ACTION_USERNAME_COPIED, null); - } else if (str.startsWith("#") || str.startsWith("$")) { - undoView.showWithAction(0, UndoView.ACTION_HASHTAG_COPIED, null); - } else { - undoView.showWithAction(0, UndoView.ACTION_LINK_COPIED, null); - } - - } - }); - builder.setOnPreDismissListener(di -> { - finalCell.resetPressedLink(-1); - }); - builder.fixNavigationBar(); - showDialog(builder.create()); - } else { - openClickableLink(str); - if (longPress) { - cell.resetPressedLink(-1); - } - } + openClickableLink(url, str, longPress, cell, messageObject); } } else { final String urlFinal = ((URLSpan) url).getURL(); if (longPress) { final ChatMessageCell finalCell = cell; BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity(), false, themeDelegate); - builder.setTitle(urlFinal); + String formattedUrl = urlFinal; + try { + formattedUrl = URLDecoder.decode(urlFinal.replaceAll("\\+", "%2b"), "UTF-8"); + } catch (Exception ignore) {} + builder.setTitle(formattedUrl); + builder.setTitleMultipleLines(true); builder.setItems(noforwards ? new CharSequence[] {LocaleController.getString("Open", R.string.Open)} : new CharSequence[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy)}, (dialog, which) -> { if (which == 0) { processExternalUrl(1, urlFinal, false); @@ -24539,9 +24615,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }); builder.setOnPreDismissListener(di -> { - finalCell.resetPressedLink(-1); + if (finalCell != null) { + finalCell.resetPressedLink(-1); + } }); - builder.fixNavigationBar(); showDialog(builder.create()); } else { boolean forceAlert = url instanceof URLSpanReplacement; @@ -24633,7 +24710,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - chatListView.setImportantForAccessibility(mentionContainer.getVisibility() == View.VISIBLE || (scrimPopupWindow != null && scrimPopupWindow.isShowing()) ? View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS : View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); + chatListView.setImportantForAccessibility(mentionContainer != null && mentionContainer.isOpen() || (scrimPopupWindow != null && scrimPopupWindow.isShowing()) ? View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS : View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); } } @@ -24710,7 +24787,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not rowCount += messages.size(); messagesEndRow = rowCount; - if (currentUser != null && currentUser.bot && chatMode == 0 && (botInfo.size() > 0 && botInfo.get(currentUser.id).description != null || UserObject.isReplyUser(currentUser)) && endReached[0]) { + if ((UserObject.isReplyUser(currentUser) || currentUser != null && currentUser.bot && !MessagesController.isSupportUser(currentUser) && chatMode == 0) && endReached[0]) { botInfoRow = rowCount++; } else { botInfoRow = -5; @@ -24739,7 +24816,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not public int getItemCount() { botInfoEmptyRow = -5; if (clearingHistory) { - if (currentUser != null && currentUser.bot && chatMode == 0 && (botInfo.size() > 0 && botInfo.get(currentUser.id).description != null || UserObject.isReplyUser(currentUser))) { + if (currentUser != null && currentUser.bot && chatMode == 0 && (botInfo.size() > 0 && (botInfo.get(currentUser.id).description != null || botInfo.get(currentUser.id).description_photo != null || botInfo.get(currentUser.id).description_document != null) || UserObject.isReplyUser(currentUser))) { botInfoEmptyRow = 0; return 1; } @@ -25109,15 +25186,37 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void didPressBotButton(ChatMessageCell cell, TLRPC.KeyboardButton button) { if (getParentActivity() == null || bottomOverlayChat.getVisibility() == View.VISIBLE && - !(button instanceof TLRPC.TL_keyboardButtonSwitchInline) && !(button instanceof TLRPC.TL_keyboardButtonCallback) && - !(button instanceof TLRPC.TL_keyboardButtonGame) && !(button instanceof TLRPC.TL_keyboardButtonUrl) && - !(button instanceof TLRPC.TL_keyboardButtonBuy) && !(button instanceof TLRPC.TL_keyboardButtonUrlAuth) && - !(button instanceof TLRPC.TL_keyboardButtonUserProfile)) { + !(button instanceof TLRPC.TL_keyboardButtonSwitchInline) && !(button instanceof TLRPC.TL_keyboardButtonCallback) && + !(button instanceof TLRPC.TL_keyboardButtonGame) && !(button instanceof TLRPC.TL_keyboardButtonUrl) && + !(button instanceof TLRPC.TL_keyboardButtonBuy) && !(button instanceof TLRPC.TL_keyboardButtonUrlAuth) && + !(button instanceof TLRPC.TL_keyboardButtonUserProfile)) { return; } chatActivityEnterView.didPressedBotButton(button, cell.getMessageObject(), cell.getMessageObject()); } + @Override + public void needShowPremiumFeatures(String source) { + presentFragment(new PremiumPreviewFragment(source)); + } + + @Override + public void didLongPressBotButton(ChatMessageCell cell, TLRPC.KeyboardButton button) { + if (getParentActivity() == null || bottomOverlayChat.getVisibility() == View.VISIBLE && + !(button instanceof TLRPC.TL_keyboardButtonSwitchInline) && !(button instanceof TLRPC.TL_keyboardButtonCallback) && + !(button instanceof TLRPC.TL_keyboardButtonGame) && !(button instanceof TLRPC.TL_keyboardButtonUrl) && + !(button instanceof TLRPC.TL_keyboardButtonBuy) && !(button instanceof TLRPC.TL_keyboardButtonUrlAuth) && + !(button instanceof TLRPC.TL_keyboardButtonUserProfile)) { + return; + } + if (button instanceof TLRPC.TL_keyboardButtonUrl) { + openClickableLink(null, button.url, true, cell, cell.getMessageObject()); + try { + cell.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } catch (Exception ignore) {} + } + } + @Override public void didPressReaction(ChatMessageCell cell, TLRPC.TL_reactionCount reaction, boolean longpress) { if (getParentActivity() == null) { @@ -25148,7 +25247,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not Rect backgroundPaddings = new Rect(); Drawable shadowDrawable2 = ContextCompat.getDrawable(getParentActivity(), R.drawable.popup_fixed_alert).mutate(); - shadowDrawable2.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground), PorterDuff.Mode.MULTIPLY)); + shadowDrawable2.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_actionBarDefaultSubmenuBackground), PorterDuff.Mode.MULTIPLY)); shadowDrawable2.getPadding(backgroundPaddings); scrimPopupContainerLayout.setBackground(shadowDrawable2); @@ -25307,7 +25406,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public boolean canPerformActions() { - return actionBar != null && !actionBar.isActionModeShowed() && reportType < 0 || inPreviewMode; + return actionBar != null && !actionBar.isActionModeShowed() && reportType < 0 && !inPreviewMode; } @Override @@ -25383,7 +25482,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (message.isDice()) { undoView.showWithAction(0, chatActivityEnterView.getVisibility() == View.VISIBLE && bottomOverlay.getVisibility() != View.VISIBLE ? UndoView.ACTION_DICE_INFO : UndoView.ACTION_DICE_NO_SEND_INFO, message.getDiceEmoji(), null, () -> getSendMessagesHelper().sendMessage(message.getDiceEmoji(), dialog_id, replyingMessageObject, getThreadMessage(), null, false, null, null, null, true, 0, null)); - } else if (message.isAnimatedEmoji()) { + } else if (message.isAnimatedEmoji() || message.isPremiumSticker()) { restartSticker(cell); emojiAnimationsOverlay.onTapItem(cell, ChatActivity.this); chatListView.cancelClickRunnables(false); @@ -25406,7 +25505,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not f = new File(message.messageOwner.attachPath); } if (f == null || !f.exists()) { - f = FileLoader.getPathToMessage(message.messageOwner); + f = getFileLoader().getPathToMessage(message.messageOwner); } Intent intent = new Intent(Intent.ACTION_VIEW); if (Build.VERSION.SDK_INT >= 24) { @@ -25445,7 +25544,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (locFile == null) { - File f = FileLoader.getPathToMessage(message.messageOwner); + File f = getFileLoader().getPathToMessage(message.messageOwner); if (f.exists()) { locFile = f; } @@ -25496,7 +25595,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (messageObject.isSponsored()) { Bundle args = new Bundle(); if (messageObject.sponsoredChatInvite != null) { - showDialog(new JoinGroupAlert(mContext, messageObject.sponsoredChatInvite, messageObject.sponsoredChatInviteHash, ChatActivity.this)); + showDialog(new JoinGroupAlert(mContext, messageObject.sponsoredChatInvite, messageObject.sponsoredChatInviteHash, ChatActivity.this, themeDelegate)); } else { long peerId = MessageObject.getPeerId(messageObject.messageOwner.from_id); if (peerId < 0) { @@ -25603,6 +25702,20 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not public boolean canDrawOutboundsContent() { return false; } + + @Override + public boolean onAccessibilityAction(int action, Bundle arguments) { + if (action == AccessibilityNodeInfo.ACTION_CLICK || action == R.id.acc_action_small_button || action == R.id.acc_action_msg_options) { + if (inPreviewMode && allowExpandPreviewByClick) { + if (parentLayout != null) { + parentLayout.expandPreviewFragment(); + } + return true; + } + return !canPerformActions(); + } + return false; + } }); if (currentEncryptedChat == null) { chatMessageCell.setAllowAssistant(true); @@ -25709,7 +25822,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (UserObject.isReplyUser(currentUser)) { helpView.setText(false, LocaleController.getString("RepliesChatInfo", R.string.RepliesChatInfo)); } else { - helpView.setText(true, botInfo.size() != 0 ? botInfo.get(currentUser.id).description : null); + TLRPC.BotInfo mBotInfo = botInfo.size() != 0 ? botInfo.get(currentUser.id) : null; + helpView.setText(true, mBotInfo != null ? mBotInfo.description : null, mBotInfo != null ? mBotInfo.description_document != null ? mBotInfo.description_document : mBotInfo.description_photo : null, mBotInfo); } } else if (position == loadingDownRow || position == loadingUpRow) { ChatLoadingCell loadingCell = (ChatLoadingCell) holder.itemView; @@ -26580,6 +26694,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return false; } + @Override + protected void setInMenuMode(boolean value) { + super.setInMenuMode(value); + if (actionBar != null) { + actionBar.createMenu().setVisibility(inMenuMode ? View.GONE : View.VISIBLE); + } + } + public void setPreloadedSticker(TLRPC.Document preloadedSticker, boolean historyEmpty) { preloadedGreetingsSticker = preloadedSticker; forceHistoryEmpty = historyEmpty; @@ -26717,6 +26839,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (contentView != null) { contentView.invalidateBlurredViews(); } + if (parentLayout != null && parentLayout.getDrawerLayoutContainer() != null) { + parentLayout.getDrawerLayoutContainer().setBehindKeyboardColor(getThemedColor(Theme.key_windowBackgroundWhite)); + } }; ArrayList themeDescriptions = new ArrayList<>(); @@ -26971,8 +27096,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][0], Theme.chat_photoStatesDrawables[11][0]}, null, Theme.key_chat_inLoaderPhotoIcon)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][1], Theme.chat_photoStatesDrawables[11][1]}, null, Theme.key_chat_inLoaderPhotoSelected)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][1], Theme.chat_photoStatesDrawables[11][1]}, null, Theme.key_chat_inLoaderPhotoIconSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[9][0]}, null, Theme.key_chat_outFileIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[9][1]}, null, Theme.key_chat_outFileSelectedIcon)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[12][0]}, null, Theme.key_chat_inFileIcon)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[12][1]}, null, Theme.key_chat_inFileSelectedIcon)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[0]}, null, Theme.key_chat_inContactBackground)); @@ -26998,7 +27121,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not themeDescriptions.add(new ThemeDescription(messagesSearchListView, 0, new Class[]{DialogCell.class}, null, new Paint[]{Theme.dialogs_namePaint[0], Theme.dialogs_namePaint[1], Theme.dialogs_searchNamePaint}, null, null, Theme.key_chats_name)); themeDescriptions.add(new ThemeDescription(messagesSearchListView, 0, new Class[]{DialogCell.class}, null, new Paint[]{Theme.dialogs_nameEncryptedPaint[0], Theme.dialogs_nameEncryptedPaint[1], Theme.dialogs_searchNameEncryptedPaint}, null, null, Theme.key_chats_secretName)); themeDescriptions.add(new ThemeDescription(messagesSearchListView, 0, new Class[]{DialogCell.class}, null, new Drawable[]{Theme.dialogs_lockDrawable}, null, Theme.key_chats_secretIcon)); - themeDescriptions.add(new ThemeDescription(messagesSearchListView, 0, new Class[]{DialogCell.class}, null, new Drawable[]{Theme.dialogs_groupDrawable, Theme.dialogs_broadcastDrawable, Theme.dialogs_botDrawable}, null, Theme.key_chats_nameIcon)); themeDescriptions.add(new ThemeDescription(messagesSearchListView, 0, new Class[]{DialogCell.class}, null, new Drawable[]{Theme.dialogs_scamDrawable, Theme.dialogs_fakeDrawable}, null, Theme.key_chats_draft)); themeDescriptions.add(new ThemeDescription(messagesSearchListView, 0, new Class[]{DialogCell.class}, Theme.dialogs_messagePaint[1], null, null, Theme.key_chats_message_threeLines)); themeDescriptions.add(new ThemeDescription(messagesSearchListView, 0, new Class[]{DialogCell.class}, Theme.dialogs_messageNamePaint, null, null, Theme.key_chats_nameMessage_threeLines)); @@ -27186,18 +27308,18 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_SERVICEBACKGROUND, new Class[]{ChatLoadingCell.class}, new String[]{"textView"}, null, null, null, Theme.key_chat_serviceBackground)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_PROGRESSBAR, new Class[]{ChatLoadingCell.class}, new String[]{"textView"}, null, null, null, Theme.key_chat_serviceText)); - themeDescriptions.add(new ThemeDescription(mentionListView, ThemeDescription.FLAG_TEXTCOLOR, new Class[]{BotSwitchCell.class}, new String[]{"textView"}, null, null, null, Theme.key_chat_botSwitchToInlineText)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), ThemeDescription.FLAG_TEXTCOLOR, new Class[]{BotSwitchCell.class}, new String[]{"textView"}, null, null, null, Theme.key_chat_botSwitchToInlineText)); - themeDescriptions.add(new ThemeDescription(mentionListView, ThemeDescription.FLAG_TEXTCOLOR, new Class[]{MentionCell.class}, new String[]{"nameTextView"}, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - themeDescriptions.add(new ThemeDescription(mentionListView, ThemeDescription.FLAG_TEXTCOLOR, new Class[]{MentionCell.class}, new String[]{"usernameTextView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText3)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), ThemeDescription.FLAG_TEXTCOLOR, new Class[]{MentionCell.class}, new String[]{"nameTextView"}, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), ThemeDescription.FLAG_TEXTCOLOR, new Class[]{MentionCell.class}, new String[]{"usernameTextView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText3)); - themeDescriptions.add(new ThemeDescription(mentionListView, 0, new Class[]{ContextLinkCell.class}, null, new Drawable[]{Theme.chat_inlineResultFile, Theme.chat_inlineResultAudio, Theme.chat_inlineResultLocation}, null, Theme.key_chat_inlineResultIcon)); - themeDescriptions.add(new ThemeDescription(mentionListView, 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_windowBackgroundWhiteGrayText2)); - themeDescriptions.add(new ThemeDescription(mentionListView, 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_windowBackgroundWhiteLinkText)); - themeDescriptions.add(new ThemeDescription(mentionListView, 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - themeDescriptions.add(new ThemeDescription(mentionListView, 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_chat_inAudioProgress)); - themeDescriptions.add(new ThemeDescription(mentionListView, 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_chat_inAudioSelectedProgress)); - themeDescriptions.add(new ThemeDescription(mentionListView, 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_divider)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), 0, new Class[]{ContextLinkCell.class}, null, new Drawable[]{Theme.chat_inlineResultFile, Theme.chat_inlineResultAudio, Theme.chat_inlineResultLocation}, null, Theme.key_chat_inlineResultIcon)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_windowBackgroundWhiteGrayText2)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_windowBackgroundWhiteLinkText)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_chat_inAudioProgress)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_chat_inAudioSelectedProgress)); + themeDescriptions.add(new ThemeDescription(mentionContainer.getListView(), 0, new Class[]{ContextLinkCell.class}, null, null, null, Theme.key_divider)); themeDescriptions.add(new ThemeDescription(gifHintTextView, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_chat_gifSaveHintBackground)); themeDescriptions.add(new ThemeDescription(gifHintTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_chat_gifSaveHintText)); @@ -27330,6 +27452,17 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not toPullingDownTransition = true; ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1f); + if (chatActivityEnterView != null) { + chatActivityEnterView.measure(View.MeasureSpec.makeMeasureSpec(AndroidUtilities.displaySize.x, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(999999, View.MeasureSpec.AT_MOST)); + } + if (bottomOverlay != null) { + bottomOverlay.measure(View.MeasureSpec.makeMeasureSpec(AndroidUtilities.displaySize.x, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(999999, View.MeasureSpec.AT_MOST)); + } + int currentBottom = Math.max(chatActivityEnterView == null ? 0 : chatActivityEnterView.getMeasuredHeight(), bottomOverlay == null ? 0 : bottomOverlay.getMeasuredHeight()); + int prevBottom = Math.max(previousChat.chatActivityEnterView == null ? 0 : previousChat.chatActivityEnterView.getMeasuredHeight(), bottomOverlay == null ? 0 : bottomOverlay.getMeasuredHeight()); + + pullingBottomOffset = -(prevBottom - currentBottom); + boolean useAlphaForContextView = previousChat.fragmentContextView.getMeasuredHeight() != fragmentContextView.getMeasuredHeight(); valueAnimator.addUpdateListener(valueAnimator1 -> { float progress = (float) valueAnimator1.getAnimatedValue(); @@ -27346,6 +27479,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not previousChat.avatarContainer.getAvatarImageView().setScaleX(0.8f + 0.2f * (1f - progress)); previousChat.avatarContainer.getAvatarImageView().setScaleY(0.8f + 0.2f * (1f - progress)); previousChat.avatarContainer.getAvatarImageView().setAlpha(1f - progress); + if (previousChat.chatActivityEnterView != null) { + previousChat.chatActivityEnterView.setTranslationY(-pullingBottomOffset * progress); + } + if (previousChat.bottomOverlay != null) { + previousChat.bottomOverlay.setTranslationY(-pullingBottomOffset * progress); + } if (useAlphaForContextView) { previousChat.fragmentContextView.setAlpha(1f - progress); @@ -27500,6 +27639,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return themeDelegate; } + public Runnable onThemeChange; + public class ThemeDelegate implements Theme.ResourcesProvider, ChatActionCell.ThemeDelegate, ForwardingPreviewView.ResourcesDelegate { private final HashMap currentDrawables = new HashMap<>(); @@ -27539,7 +27680,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (!setup && ThemeEditorView.getInstance() == null) { Theme.refreshThemeColors(true, true); } else { - AndroidUtilities.runOnUIThread(() -> NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.didSetNewTheme, false, true)); + AndroidUtilities.runOnUIThread(() -> NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.didSetNewTheme, false, true, parentLayout != null && !parentLayout.isTransitionAnimationInProgress())); } } @@ -27746,6 +27887,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not animationSettings.resourcesProvider = this; animationSettings.duration = 250; parentLayout.animateThemedValues(animationSettings); + if (onThemeChange != null) { + onThemeChange.run(); + } } private void setupChatTheme(EmojiThemes chatTheme, boolean withAnimation, boolean createNewResources) { @@ -28171,4 +28315,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } return super.isLightStatusBar(); } + + public MessageObject.GroupedMessages getGroup(long id) { + return groupedMessagesMap.get(id); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatEditActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatEditActivity.java index fe178c691..5f2e3b177 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatEditActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatEditActivity.java @@ -109,8 +109,8 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image private TextCheckCell signCell; private FrameLayout stickersContainer; - private TextSettingsCell stickersCell; - private TextInfoPrivacyCell stickersInfoCell3; + private TextCell stickersCell; + private TextInfoPrivacyCell stickersInfoCell; private LinearLayout infoContainer; private TextCell membersCell; @@ -782,7 +782,7 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image ActionBarMenu menu = actionBar.createMenu(); if (ChatObject.canChangeChatInfo(currentChat) || signCell != null || historyCell != null) { - doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56)); doneButton.setContentDescription(LocaleController.getString("Done", R.string.Done)); } @@ -859,8 +859,8 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image if (ChatObject.isChannel(currentChat) || currentChat.gigagroup) { logCell = new TextCell(context); - logCell.setTextAndIcon(LocaleController.getString("EventLog", R.string.EventLog), R.drawable.group_log, false); - logCell.setBackgroundDrawable(Theme.getSelectorDrawable(false)); + logCell.setTextAndIcon(LocaleController.getString("EventLog", R.string.EventLog), R.drawable.msg_log, false); + logCell.setBackground(Theme.getSelectorDrawable(false)); logCell.setOnClickListener(v -> presentFragment(new ChannelAdminLogActivity(currentChat))); } @@ -883,36 +883,39 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image if (isChannel || currentChat.gigagroup) { infoContainer.addView(blockCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } - if (logCell != null) { - infoContainer.addView(logCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - } - - infoSectionCell = new ShadowSectionCell(context); - linearLayout1.addView(infoSectionCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - - if (!ChatObject.hasAdminRights(currentChat)) { - infoContainer.setVisibility(View.GONE); - settingsTopSectionCell.setVisibility(View.GONE); - } - if (!isChannel && info != null && info.can_set_stickers) { stickersContainer = new FrameLayout(context); stickersContainer.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); linearLayout1.addView(stickersContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - stickersCell = new TextSettingsCell(context); - stickersCell.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - stickersCell.setBackgroundDrawable(Theme.getSelectorDrawable(false)); + stickersCell = new TextCell(context); + stickersCell.setBackground(Theme.getSelectorDrawable(false)); + stickersCell.setOnClickListener(v -> presentFragment(new ChannelAdminLogActivity(currentChat))); + stickersCell.setPrioritizeTitleOverValue(true); stickersContainer.addView(stickersCell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); stickersCell.setOnClickListener(v -> { GroupStickersActivity groupStickersActivity = new GroupStickersActivity(currentChat.id); groupStickersActivity.setInfo(info); presentFragment(groupStickersActivity); }); + } else if (logCell != null) { + infoContainer.addView(logCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + } - stickersInfoCell3 = new TextInfoPrivacyCell(context); - stickersInfoCell3.setText(LocaleController.getString("GroupStickersInfo", R.string.GroupStickersInfo)); - linearLayout1.addView(stickersInfoCell3, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + if (!ChatObject.hasAdminRights(currentChat)) { + infoContainer.setVisibility(View.GONE); + settingsTopSectionCell.setVisibility(View.GONE); + } + + if (stickersCell == null) { + infoSectionCell = new ShadowSectionCell(context); + linearLayout1.addView(infoSectionCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + } + + if (!isChannel && info != null && info.can_set_stickers) { + stickersInfoCell = new TextInfoPrivacyCell(context); + stickersInfoCell.setText(LocaleController.getString(R.string.GroupStickersInfo)); + linearLayout1.addView(stickersInfoCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } if (currentChat.creator) { @@ -940,21 +943,15 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image }, null)); deleteInfoCell = new ShadowSectionCell(context); - deleteInfoCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + deleteInfoCell.setBackground(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); linearLayout1.addView(deleteInfoCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - } else { - if (!isChannel) { - if (stickersInfoCell3 == null) { - infoSectionCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); - } - } } - if (stickersInfoCell3 != null) { + if (stickersInfoCell != null) { if (deleteInfoCell == null) { - stickersInfoCell3.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + stickersInfoCell.setBackground(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); } else { - stickersInfoCell3.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); + stickersInfoCell.setBackground(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); } } @@ -995,9 +992,9 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image } if (setAvatarCell != null) { if (hasPhoto || imageUpdater.isUploadingImage()) { - setAvatarCell.setTextAndIcon(LocaleController.getString("ChatSetNewPhoto", R.string.ChatSetNewPhoto), R.drawable.menu_camera2, true); + setAvatarCell.setTextAndIcon(LocaleController.getString("ChatSetNewPhoto", R.string.ChatSetNewPhoto), R.drawable.msg_addphoto, true); } else { - setAvatarCell.setTextAndIcon(LocaleController.getString("ChatSetPhotoOrVideo", R.string.ChatSetPhotoOrVideo), R.drawable.menu_camera2, true); + setAvatarCell.setTextAndIcon(LocaleController.getString("ChatSetPhotoOrVideo", R.string.ChatSetPhotoOrVideo), R.drawable.msg_addphoto, true); } if (cameraDrawable == null) { cameraDrawable = new RLottieDrawable(R.raw.camera_outline, "" + R.raw.camera_outline, AndroidUtilities.dp(50), AndroidUtilities.dp(50), false, null); @@ -1081,7 +1078,7 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image showAvatarProgress(false, true); } else { avatarImage.setImage(ImageLocation.getForLocal(avatar), "50_50", avatarDrawable, currentChat); - setAvatarCell.setTextAndIcon(LocaleController.getString("ChatSetNewPhoto", R.string.ChatSetNewPhoto), R.drawable.menu_camera2, true); + setAvatarCell.setTextAndIcon(LocaleController.getString("ChatSetNewPhoto", R.string.ChatSetNewPhoto), R.drawable.msg_addphoto, true); if (cameraDrawable == null) { cameraDrawable = new RLottieDrawable(R.raw.camera_outline, "" + R.raw.camera_outline, AndroidUtilities.dp(50), AndroidUtilities.dp(50), false, null); } @@ -1171,7 +1168,7 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image if (info != null) { if (ChatObject.isChannel(currentChat) && info.hidden_prehistory != historyHidden) { info.hidden_prehistory = historyHidden; - getMessagesController().toogleChannelInvitesHistory(chatId, historyHidden); + getMessagesController().toggleChannelInvitesHistory(chatId, historyHidden); } } @@ -1196,7 +1193,7 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image } if (signMessages != currentChat.signatures) { currentChat.signatures = true; - getMessagesController().toogleChannelSignatures(chatId, signMessages); + getMessagesController().toggleChannelSignatures(chatId, signMessages); } finishFragment(); } @@ -1390,14 +1387,6 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image historyCell.setTextAndValue(LocaleController.getString("ChatHistory", R.string.ChatHistory), type, false); } - if (stickersCell != null) { - if (info != null && info.stickerset != null) { - stickersCell.setTextAndValue(LocaleController.getString("GroupStickers", R.string.GroupStickers), info.stickerset.title, false); - } else { - stickersCell.setText(LocaleController.getString("GroupStickers", R.string.GroupStickers), false); - } - } - if (membersCell != null) { if (info != null) { if (memberRequestsCell != null) { @@ -1408,16 +1397,16 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image memberRequestsCell.setVisibility(info.requests_pending > 0 ? View.VISIBLE : View.GONE); } if (isChannel) { - membersCell.setTextAndValueAndIcon(LocaleController.getString("ChannelSubscribers", R.string.ChannelSubscribers), String.format("%d", info.participants_count), R.drawable.actions_viewmembers, true); - blockCell.setTextAndValueAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), String.format("%d", Math.max(info.banned_count, info.kicked_count)), R.drawable.actions_removed, logCell != null && logCell.getVisibility() == View.VISIBLE); + membersCell.setTextAndValueAndIcon(LocaleController.getString("ChannelSubscribers", R.string.ChannelSubscribers), String.format("%d", info.participants_count), R.drawable.msg_groups, true); + blockCell.setTextAndValueAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), String.format("%d", Math.max(info.banned_count, info.kicked_count)), R.drawable.msg_user_remove, logCell != null && logCell.getVisibility() == View.VISIBLE); } else { if (ChatObject.isChannel(currentChat)) { - membersCell.setTextAndValueAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), String.format("%d", info.participants_count), R.drawable.actions_viewmembers, true); + membersCell.setTextAndValueAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), String.format("%d", info.participants_count), R.drawable.msg_groups, true); } else { - membersCell.setTextAndValueAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), String.format("%d", info.participants.participants.size()), R.drawable.actions_viewmembers, memberRequestsCell.getVisibility() == View.VISIBLE); + membersCell.setTextAndValueAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), String.format("%d", info.participants.participants.size()), R.drawable.msg_groups, memberRequestsCell.getVisibility() == View.VISIBLE); } if (currentChat.gigagroup) { - blockCell.setTextAndValueAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), String.format("%d", Math.max(info.banned_count, info.kicked_count)), R.drawable.actions_removed, logCell != null && logCell.getVisibility() == View.VISIBLE); + blockCell.setTextAndValueAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), String.format("%d", Math.max(info.banned_count, info.kicked_count)), R.drawable.msg_user_remove, logCell != null && logCell.getVisibility() == View.VISIBLE); } else { int count = 0; if (currentChat.default_banned_rights != null) { @@ -1448,26 +1437,26 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image } else { count = 8; } - blockCell.setTextAndValueAndIcon(LocaleController.getString("ChannelPermissions", R.string.ChannelPermissions), String.format("%d/%d", count, 8), R.drawable.actions_permissions, true); + blockCell.setTextAndValueAndIcon(LocaleController.getString("ChannelPermissions", R.string.ChannelPermissions), String.format("%d/%d", count, 8), R.drawable.msg_permissions, true); } if (memberRequestsCell != null) { - memberRequestsCell.setTextAndValueAndIcon(LocaleController.getString("MemberRequests", R.string.MemberRequests), String.format("%d", info.requests_pending), R.drawable.actions_requests, logCell != null && logCell.getVisibility() == View.VISIBLE); + memberRequestsCell.setTextAndValueAndIcon(LocaleController.getString("MemberRequests", R.string.MemberRequests), String.format("%d", info.requests_pending), R.drawable.msg_requests, logCell != null && logCell.getVisibility() == View.VISIBLE); } } - adminCell.setTextAndValueAndIcon(LocaleController.getString("ChannelAdministrators", R.string.ChannelAdministrators), String.format("%d", ChatObject.isChannel(currentChat) ? info.admins_count : getAdminCount()), R.drawable.actions_addadmin, true); + adminCell.setTextAndValueAndIcon(LocaleController.getString("ChannelAdministrators", R.string.ChannelAdministrators), String.format("%d", ChatObject.isChannel(currentChat) ? info.admins_count : getAdminCount()), R.drawable.msg_admins, true); } else { if (isChannel) { - membersCell.setTextAndIcon(LocaleController.getString("ChannelSubscribers", R.string.ChannelSubscribers), R.drawable.actions_viewmembers, true); - blockCell.setTextAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), R.drawable.actions_removed, logCell != null && logCell.getVisibility() == View.VISIBLE); + membersCell.setTextAndIcon(LocaleController.getString("ChannelSubscribers", R.string.ChannelSubscribers), R.drawable.msg_groups, true); + blockCell.setTextAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), R.drawable.msg_chats_remove, logCell != null && logCell.getVisibility() == View.VISIBLE); } else { - membersCell.setTextAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), R.drawable.actions_viewmembers, logCell != null && logCell.getVisibility() == View.VISIBLE); + membersCell.setTextAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), R.drawable.msg_groups, logCell != null && logCell.getVisibility() == View.VISIBLE); if (currentChat.gigagroup) { - blockCell.setTextAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), R.drawable.actions_removed, logCell != null && logCell.getVisibility() == View.VISIBLE); + blockCell.setTextAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), R.drawable.msg_chats_remove, logCell != null && logCell.getVisibility() == View.VISIBLE); } else { - blockCell.setTextAndIcon(LocaleController.getString("ChannelPermissions", R.string.ChannelPermissions), R.drawable.actions_permissions, true); + blockCell.setTextAndIcon(LocaleController.getString("ChannelPermissions", R.string.ChannelPermissions), R.drawable.msg_permissions, true); } } - adminCell.setTextAndIcon(LocaleController.getString("ChannelAdministrators", R.string.ChannelAdministrators), R.drawable.actions_addadmin, true); + adminCell.setTextAndIcon(LocaleController.getString("ChannelAdministrators", R.string.ChannelAdministrators), R.drawable.msg_admins, true); } reactionsCell.setVisibility(ChatObject.canChangeChatInfo(currentChat) ? View.VISIBLE : View.GONE); updateReactionsCell(); @@ -1475,19 +1464,15 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image inviteLinksCell.setVisibility(View.GONE); } else { if (info.invitesCount > 0) { - inviteLinksCell.setTextAndValueAndIcon(LocaleController.getString("InviteLinks", R.string.InviteLinks), Integer.toString(info.invitesCount), R.drawable.actions_link, true); + inviteLinksCell.setTextAndValueAndIcon(LocaleController.getString("InviteLinks", R.string.InviteLinks), Integer.toString(info.invitesCount), R.drawable.msg_link2, true); } else { - inviteLinksCell.setTextAndValueAndIcon(LocaleController.getString("InviteLinks", R.string.InviteLinks), "1", R.drawable.actions_link, true); + inviteLinksCell.setTextAndValueAndIcon(LocaleController.getString("InviteLinks", R.string.InviteLinks), "1", R.drawable.msg_link2, true); } } } if (stickersCell != null && info != null) { - if (info.stickerset != null) { - stickersCell.setTextAndValue(LocaleController.getString("GroupStickers", R.string.GroupStickers), info.stickerset.title, false); - } else { - stickersCell.setText(LocaleController.getString("GroupStickers", R.string.GroupStickers), false); - } + stickersCell.setTextAndValueAndIcon(LocaleController.getString(R.string.GroupStickers), info.stickerset != null ? info.stickerset.title : LocaleController.getString(R.string.Add), R.drawable.msg_sticker, false); } } @@ -1501,7 +1486,7 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image } int reacts = Math.min(getMediaDataController().getEnabledReactionsList().size(), count); reactionsCell.setTextAndValueAndIcon(LocaleController.getString("Reactions", R.string.Reactions), reacts == 0 ? LocaleController.getString("ReactionsOff", R.string.ReactionsOff) : - LocaleController.formatString("ReactionsCount", R.string.ReactionsCount, reacts, getMediaDataController().getEnabledReactionsList().size()), R.drawable.actions_reactions, true); + LocaleController.formatString("ReactionsCount", R.string.ReactionsCount, reacts, getMediaDataController().getEnabledReactionsList().size()), R.drawable.msg_reactions2, true); } @Override @@ -1573,7 +1558,6 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image themeDescriptions.add(new ThemeDescription(settingsTopSectionCell, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ShadowSectionCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow)); themeDescriptions.add(new ThemeDescription(settingsSectionCell, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ShadowSectionCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow)); themeDescriptions.add(new ThemeDescription(deleteInfoCell, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ShadowSectionCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow)); - themeDescriptions.add(new ThemeDescription(infoSectionCell, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ShadowSectionCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow)); themeDescriptions.add(new ThemeDescription(signCell, ThemeDescription.FLAG_SELECTOR, null, null, null, null, Theme.key_listSelector)); themeDescriptions.add(new ThemeDescription(signCell, 0, new Class[]{TextCheckCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); @@ -1585,8 +1569,8 @@ public class ChatEditActivity extends BaseFragment implements ImageUpdater.Image themeDescriptions.add(new ThemeDescription(stickersCell, ThemeDescription.FLAG_SELECTOR, null, null, null, null, Theme.key_listSelector)); themeDescriptions.add(new ThemeDescription(stickersCell, ThemeDescription.FLAG_TEXTCOLOR, new Class[]{TextSettingsCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - themeDescriptions.add(new ThemeDescription(stickersInfoCell3, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{TextInfoPrivacyCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow)); - themeDescriptions.add(new ThemeDescription(stickersInfoCell3, 0, new Class[]{TextInfoPrivacyCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText4)); + themeDescriptions.add(new ThemeDescription(stickersInfoCell, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{TextInfoPrivacyCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow)); + themeDescriptions.add(new ThemeDescription(stickersInfoCell, 0, new Class[]{TextInfoPrivacyCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText4)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, Theme.avatarDrawables, cellDelegate, Theme.key_avatar_text)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, cellDelegate, Theme.key_avatar_backgroundRed)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatEditTypeActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatEditTypeActivity.java index 91f3afe1d..094a57c36 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatEditTypeActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatEditTypeActivity.java @@ -18,10 +18,10 @@ import android.text.TextWatcher; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.view.inputmethod.EditorInfo; import android.widget.LinearLayout; import android.widget.ScrollView; -import android.widget.Toast; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; @@ -49,8 +49,10 @@ import org.telegram.ui.Cells.TextInfoPrivacyCell; import org.telegram.ui.Cells.TextSettingsCell; import org.telegram.ui.Components.EditTextBoldCursor; import org.telegram.ui.Components.InviteLinkBottomSheet; +import org.telegram.ui.Components.JoinToSendSettingsView; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.LinkActionView; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import java.util.ArrayList; import java.util.HashMap; @@ -89,6 +91,8 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe private TextCheckCell saveRestrictCell; private TextInfoPrivacyCell saveRestrictInfoCell; + private JoinToSendSettingsView joinContainer; + private boolean isPrivate; private TLRPC.Chat currentChat; @@ -149,7 +153,7 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe req.channel = new TLRPC.TL_inputChannelEmpty(); getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { canCreatePublic = error == null || !error.text.equals("CHANNELS_ADMIN_PUBLIC_TOO_MUCH"); - if (!canCreatePublic) { + if (!canCreatePublic && getUserConfig().isPremium()) { loadAdminedChannels(); } })); @@ -212,7 +216,7 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); fragmentView = new ScrollView(context) { @Override @@ -279,6 +283,10 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe if (!isPrivate) { return; } + if (!canCreatePublic) { + showPremiumIncreaseLimitDialog(); + return; + } isPrivate = false; updatePrivatePublic(); }); @@ -320,7 +328,19 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe editText.setImeOptions(EditorInfo.IME_ACTION_DONE); publicContainer.addView(editText, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 36)); - usernameTextView = new EditTextBoldCursor(context); + usernameTextView = new EditTextBoldCursor(context) { + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + StringBuilder sb = new StringBuilder(); + sb.append(getText()); + if (checkTextView != null && checkTextView.getTextView() != null && !TextUtils.isEmpty(checkTextView.getTextView().getText())) { + sb.append("\n"); + sb.append(checkTextView.getTextView().getText()); + } + info.setText(sb); + } + }; usernameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); usernameTextView.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); usernameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); @@ -382,6 +402,7 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe linearLayout.addView(checkTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); typeInfoCell = new TextInfoPrivacyCell(context); + typeInfoCell.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); linearLayout.addView(typeInfoCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); loadingAdminedCell = new LoadingCell(context); @@ -398,7 +419,7 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe manageLinksTextView = new TextCell(context); manageLinksTextView.setBackgroundDrawable(Theme.getSelectorDrawable(true)); - manageLinksTextView.setTextAndIcon(LocaleController.getString("ManageInviteLinks", R.string.ManageInviteLinks), R.drawable.actions_link, false); + manageLinksTextView.setTextAndIcon(LocaleController.getString("ManageInviteLinks", R.string.ManageInviteLinks), R.drawable.msg_link2, false); manageLinksTextView.setOnClickListener(v -> { ManageLinksActivity fragment = new ManageLinksActivity(chatId, 0, 0); fragment.setInfo(info, invite); @@ -409,6 +430,9 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe manageLinksInfoCell = new TextInfoPrivacyCell(context); linearLayout.addView(manageLinksInfoCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + joinContainer = new JoinToSendSettingsView(context, currentChat); + linearLayout.addView(joinContainer); + saveContainer = new LinearLayout(context); saveContainer.setOrientation(LinearLayout.VERTICAL); linearLayout.addView(saveContainer); @@ -446,6 +470,19 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe return fragmentView; } + private void showPremiumIncreaseLimitDialog() { + if (getParentActivity() == null) { + return; + } + LimitReachedBottomSheet limitReachedBottomSheet = new LimitReachedBottomSheet(this, getParentActivity(), LimitReachedBottomSheet.TYPE_PUBLIC_LINKS, currentAccount); + limitReachedBottomSheet.parentIsChannel = isChannel; + limitReachedBottomSheet.onSuccessRunnable = () -> { + canCreatePublic = true; + updatePrivatePublic(); + }; + showDialog(limitReachedBottomSheet); + } + @Override public void didReceivedNotification(int id, int account, Object... args) { if (id == NotificationCenter.chatInfoDidLoad) { @@ -473,11 +510,39 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe if (currentChat.noforwards != isSaveRestricted) { getMessagesController().toggleChatNoForwards(chatId, currentChat.noforwards = isSaveRestricted); } - if (trySetUsername()) { + if (trySetUsername() && tryUpdateJoinSettings()) { finishFragment(); } } + private boolean tryUpdateJoinSettings() { + if (isChannel || joinContainer == null) { + return true; + } + if (getParentActivity() == null) { + return false; + } + boolean needToMigrate = !ChatObject.isChannel(currentChat) && (joinContainer.isJoinToSend || joinContainer.isJoinRequest); + if (needToMigrate) { + getMessagesController().convertToMegaGroup(getParentActivity(), chatId, this, param -> { + if (param != 0) { + chatId = param; + currentChat = getMessagesController().getChat(param); + processDone(); + } + }); + return false; + } else { + if (currentChat.join_to_send != joinContainer.isJoinToSend) { + getMessagesController().toggleChatJoinToSend(chatId, currentChat.join_to_send = joinContainer.isJoinToSend, null, null); + } + if (currentChat.join_request != joinContainer.isJoinRequest) { + getMessagesController().toggleChatJoinRequest(chatId, currentChat.join_request = joinContainer.isJoinRequest, null, null); + } + return true; + } + } + private boolean trySetUsername() { if (getParentActivity() == null) { return false; @@ -561,7 +626,7 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe }, ConnectionsManager.RequestFlagInvokeAfter); }); showDialog(builder.create()); - }); + }, false, 0); adminedChannelCell.setChannel(res.chats.get(a), a == res.chats.size() - 1); adminedChannelCells.add(adminedChannelCell); adminnedChannelsLayout.addView(adminedChannelCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 72)); @@ -575,7 +640,7 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe if (sectionCell2 == null) { return; } - if (!isPrivate && !canCreatePublic) { + if (!isPrivate && !canCreatePublic && getUserConfig().isPremium()) { typeInfoCell.setText(LocaleController.getString("ChangePublicLimitReached", R.string.ChangePublicLimitReached)); typeInfoCell.setTag(Theme.key_windowBackgroundWhiteRedText4); typeInfoCell.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText4)); @@ -623,10 +688,10 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe permanentLinkView.setLink(invite != null ? invite.link : null); permanentLinkView.loadUsers(invite, chatId); checkTextView.setVisibility(!isPrivate && checkTextView.length() != 0 ? View.VISIBLE : View.GONE); + manageLinksInfoCell.setText(LocaleController.getString("ManageLinksInfoHelp", R.string.ManageLinksInfoHelp)); if (isPrivate) { typeInfoCell.setBackgroundDrawable(Theme.getThemedDrawable(typeInfoCell.getContext(), R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); manageLinksInfoCell.setBackground(Theme.getThemedDrawable(typeInfoCell.getContext(), R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); - manageLinksInfoCell.setText(LocaleController.getString("ManageLinksInfoHelp", R.string.ManageLinksInfoHelp)); } else { typeInfoCell.setBackgroundDrawable(checkTextView.getVisibility() == View.VISIBLE ? null : Theme.getThemedDrawable(typeInfoCell.getContext(), R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); } @@ -634,6 +699,9 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe radioButtonCell1.setChecked(!isPrivate, true); radioButtonCell2.setChecked(isPrivate, true); usernameTextView.clearFocus(); + if (joinContainer != null) { + joinContainer.setVisibility(!isChannel && !isPrivate ? View.VISIBLE : View.GONE); + } checkDoneButton(); } @@ -719,7 +787,7 @@ public class ChatEditTypeActivity extends BaseFragment implements NotificationCe } else { if (error != null && error.text.equals("CHANNELS_ADMIN_PUBLIC_TOO_MUCH")) { canCreatePublic = false; - loadAdminedChannels(); + showPremiumIncreaseLimitDialog(); } else { checkTextView.setText(LocaleController.getString("LinkInUse", R.string.LinkInUse)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatLinkActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatLinkActivity.java index f3a2162a5..0437e2ddd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatLinkActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatLinkActivity.java @@ -21,6 +21,9 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.ImageLocation; @@ -46,15 +49,13 @@ import org.telegram.ui.Cells.TextInfoPrivacyCell; import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.EmptyTextProgressView; +import org.telegram.ui.Components.JoinToSendSettingsView; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.LoadingStickerDrawable; import org.telegram.ui.Components.RecyclerListView; import java.util.ArrayList; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class ChatLinkActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { private ListAdapter listViewAdapter; @@ -74,6 +75,8 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter private boolean waitingForChatCreate; private boolean chatsLoaded; + private JoinToSendSettingsView joinToSendSettings; + private long currentChatId; private int helpRow; @@ -82,6 +85,7 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter private int chatEndRow; private int removeChatRow; private int detailRow; + private int joinToSendRow; private int rowCount; private boolean searchWas; @@ -179,6 +183,7 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter chatEndRow = -1; removeChatRow = -1; detailRow = -1; + joinToSendRow = -1; helpRow = rowCount++; if (isChannel) { @@ -198,6 +203,12 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter createChatRow = rowCount++; } detailRow = rowCount++; + if (!isChannel || chats.size() > 0 && info.linked_chat_id != 0) { + TLRPC.Chat chat = isChannel ? chats.get(0) : currentChat; + if (chat != null && (TextUtils.isEmpty(chat.username) || isChannel) && (chat.creator || chat.admin_rights != null && chat.admin_rights.ban_users)) { + joinToSendRow = rowCount++; + } + } if (listViewAdapter != null) { listViewAdapter.notifyDataSetChanged(); @@ -211,6 +222,7 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter public boolean onFragmentCreate() { super.onFragmentCreate(); getNotificationCenter().addObserver(this, NotificationCenter.chatInfoDidLoad); + getNotificationCenter().addObserver(this, NotificationCenter.updateInterfaces); loadChats(); return true; } @@ -219,8 +231,12 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter public void onFragmentDestroy() { super.onFragmentDestroy(); getNotificationCenter().removeObserver(this, NotificationCenter.chatInfoDidLoad); + getNotificationCenter().removeObserver(this, NotificationCenter.updateInterfaces); } + private boolean joinToSendProgress = false; + private boolean joinRequestProgress = false; + @Override public void didReceivedNotification(int id, int account, Object... args) { if (id == NotificationCenter.chatInfoDidLoad) { @@ -239,6 +255,29 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter showLinkAlert(waitingForFullChat, false); waitingForFullChat = null; } + } else if (id == NotificationCenter.updateInterfaces) { + int updateMask = (Integer) args[0]; + if ((updateMask & MessagesController.UPDATE_MASK_CHAT) != 0 && currentChat != null) { + TLRPC.Chat newCurrentChat = getMessagesController().getChat(currentChat.id); + if (newCurrentChat != null) { + currentChat = newCurrentChat; + } + if (chats.size() > 0) { + TLRPC.Chat linkedChat = getMessagesController().getChat(chats.get(0).id); + if (linkedChat != null) { + chats.set(0, linkedChat); + } + } + final TLRPC.Chat chat = isChannel ? (chats.size() > 0 ? chats.get(0) : null) : currentChat; + if (chat != null && joinToSendSettings != null) { + if (!joinRequestProgress) { + joinToSendSettings.setJoinRequest(chat.join_request); + } + if (!joinToSendProgress) { + joinToSendSettings.setJoinToSend(chat.join_to_send); + } + } + } } } @@ -501,7 +540,7 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter imageView.setForUserOrChat(chat, avatarDrawable); builder.setPositiveButton(LocaleController.getString("DiscussionLinkGroup", R.string.DiscussionLinkGroup), (dialogInterface, i) -> { if (chatFull.hidden_prehistory) { - getMessagesController().toogleChannelInvitesHistory(chat.id, false); + getMessagesController().toggleChannelInvitesHistory(chat.id, false); } linkChat(chat, null); }); @@ -516,7 +555,7 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter if (!ChatObject.isChannel(chat)) { getMessagesController().convertToMegaGroup(getParentActivity(), chat.id, this, param -> { if (param != 0) { - getMessagesController().toogleChannelInvitesHistory(param, false); + getMessagesController().toggleChannelInvitesHistory(param, false); linkChat(getMessagesController().getChat(param), createFragment); } }); @@ -827,6 +866,83 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter view = new ManageChatTextCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; + case 4: + final TLRPC.Chat chat = isChannel ? chats.get(0) : currentChat; + view = joinToSendSettings = new JoinToSendSettingsView(mContext, chat) { + private void migrateIfNeeded(Runnable onError, Runnable onSuccess) { + if (!ChatObject.isChannel(currentChat)) { + getMessagesController().convertToMegaGroup(getParentActivity(), chat.id, ChatLinkActivity.this, param -> { + if (param != 0) { + if (isChannel) { + chats.set(0, getMessagesController().getChat(param)); + } else { + currentChatId = param; + currentChat = getMessagesController().getChat(param); + } + onSuccess.run(); + } + }, onError); + } else { + onSuccess.run(); + } + } + + @Override + public boolean onJoinRequestToggle(boolean newValue, Runnable cancel) { + if (joinRequestProgress) { + return false; + } + joinRequestProgress = true; + migrateIfNeeded(overrideCancel(cancel), () -> { + chat.join_request = newValue; + getMessagesController().toggleChatJoinRequest(chat.id, newValue, () -> { + joinRequestProgress = false; + }, () -> { + joinRequestProgress = false; + cancel.run(); + }); + }); + return true; + } + + private Runnable overrideCancel(Runnable cancel) { + return () -> { + joinToSendProgress = false; + joinRequestProgress = false; + cancel.run(); + }; + } + + @Override + public boolean onJoinToSendToggle(boolean newValue, Runnable cancel) { + if (joinToSendProgress) { + return false; + } + joinToSendProgress = true; + migrateIfNeeded(overrideCancel(cancel), () -> { + chat.join_to_send = newValue; + getMessagesController().toggleChatJoinToSend(chat.id, newValue, () -> { + joinToSendProgress = false; + if (!newValue && chat.join_request) { + chat.join_request = false; + joinRequestProgress = true; + getMessagesController().toggleChatJoinRequest(chat.id, false, () -> { + joinRequestProgress = false; + }, () -> { + chat.join_request = true; + isJoinRequest = true; + joinRequestCell.setChecked(true); + }); + } + }, () -> { + joinToSendProgress = false; + cancel.run(); + }); + }); + return true; + } + }; + break; case 3: default: view = new HintInnerCell(mContext); @@ -859,14 +975,14 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter if (isChannel) { if (info.linked_chat_id != 0) { actionCell.setColors(Theme.key_windowBackgroundWhiteRedText5, Theme.key_windowBackgroundWhiteRedText5); - actionCell.setText(LocaleController.getString("DiscussionUnlinkGroup", R.string.DiscussionUnlinkGroup), null, R.drawable.actions_remove_user, false); + actionCell.setText(LocaleController.getString("DiscussionUnlinkGroup", R.string.DiscussionUnlinkGroup), null, R.drawable.msg_remove, false); } else { actionCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); - actionCell.setText(LocaleController.getString("DiscussionCreateGroup", R.string.DiscussionCreateGroup), null, R.drawable.menu_groups, true); + actionCell.setText(LocaleController.getString("DiscussionCreateGroup", R.string.DiscussionCreateGroup), null, R.drawable.msg_groups, true); } } else { actionCell.setColors(Theme.key_windowBackgroundWhiteRedText5, Theme.key_windowBackgroundWhiteRedText5); - actionCell.setText(LocaleController.getString("DiscussionUnlinkChannel", R.string.DiscussionUnlinkChannel), null, R.drawable.actions_remove_user, false); + actionCell.setText(LocaleController.getString("DiscussionUnlinkChannel", R.string.DiscussionUnlinkChannel), null, R.drawable.msg_remove, false); } break; } @@ -887,6 +1003,8 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter return 2; } else if (position >= chatStartRow && position < chatEndRow) { return 0; + } else if (position == joinToSendRow) { + return 4; } return 1; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatPullingDownDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatPullingDownDrawable.java index e0bc6df4c..a8f587ba5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatPullingDownDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatPullingDownDrawable.java @@ -5,6 +5,7 @@ import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ValueAnimator; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PorterDuff; @@ -13,10 +14,13 @@ import android.graphics.RectF; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; +import android.util.Log; import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.View; +import androidx.core.graphics.ColorUtils; + import org.telegram.messenger.AccountInstance; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DialogObject; @@ -70,7 +74,7 @@ public class ChatPullingDownDrawable implements NotificationCenter.NotificationC long lastHapticTime; float lastProgress; boolean emptyStub; - float progressToBottomPannel; + float progressToBottomPanel; private final View fragmentView; public long lastShowingReleaseTime; @@ -162,12 +166,12 @@ public class ChatPullingDownDrawable implements NotificationCenter.NotificationC } layout1Width = (int) textPaint2.measureText(str1); layout1Width = Math.min(layout1Width, lastWidth - AndroidUtilities.dp(60)); - layout1 = new StaticLayout(str1, textPaint2, layout1Width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + layout1 = new StaticLayout(str1, textPaint2, layout1Width, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false); layout2Width = (int) textPaint2.measureText(str2); layout2Width = Math.min(layout2Width, lastWidth - AndroidUtilities.dp(60)); - layout2 = new StaticLayout(str2, textPaint2, layout2Width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + layout2 = new StaticLayout(str2, textPaint2, layout2Width, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false); float cx = lastWidth / 2f; @@ -573,32 +577,33 @@ public class ChatPullingDownDrawable implements NotificationCenter.NotificationC } public void drawBottomPanel(Canvas canvas, int top, int bottom, int width) { - if (showBottomPanel && progressToBottomPannel != 1f) { - progressToBottomPannel += 16f / 150f; - if (progressToBottomPannel > 1f) { - progressToBottomPannel = 1f; + if (showBottomPanel && progressToBottomPanel != 1f) { + progressToBottomPanel += 16f / 150f; + if (progressToBottomPanel > 1f) { + progressToBottomPanel = 1f; } else { fragmentView.invalidate(); } - } else if (!showBottomPanel && progressToBottomPannel != 0) { - progressToBottomPannel -= 16f / 150f; - if (progressToBottomPannel < 0) { - progressToBottomPannel = 0; + } else if (!showBottomPanel && progressToBottomPanel != 0) { + progressToBottomPanel -= 16f / 150f; + if (progressToBottomPanel < 0) { + progressToBottomPanel = 0; } else { fragmentView.invalidate(); } } + + textPaint2.setColor(getThemedColor(Theme.key_chat_messagePanelHint)); Paint composeBackgroundPaint = getThemedPaint(Theme.key_paint_chatComposeBackground); int oldAlpha = composeBackgroundPaint.getAlpha(); int oldAlphaText = textPaint2.getAlpha(); - composeBackgroundPaint.setAlpha((int) (oldAlpha * progressToBottomPannel)); + composeBackgroundPaint.setAlpha((int) (oldAlpha * progressToBottomPanel)); canvas.drawRect(0, top, width, bottom, composeBackgroundPaint); - if (layout1 != null && swipeToReleaseProgress < 1f) { - textPaint2.setAlpha((int) (oldAlphaText * (1f - swipeToReleaseProgress) * progressToBottomPannel)); - float y = top + AndroidUtilities.dp(18) - AndroidUtilities.dp(10) * swipeToReleaseProgress; + textPaint2.setAlpha((int) (oldAlphaText * (1f - swipeToReleaseProgress) * progressToBottomPanel)); + float y = top + (bottom - top - layout1.getHeight()) / 2f - AndroidUtilities.dp(10) * swipeToReleaseProgress; canvas.save(); canvas.translate((lastWidth - layout1Width) / 2f, y); layout1.draw(canvas); @@ -606,8 +611,8 @@ public class ChatPullingDownDrawable implements NotificationCenter.NotificationC } if (layout2 != null && swipeToReleaseProgress > 0) { - textPaint2.setAlpha((int) (oldAlphaText * swipeToReleaseProgress * progressToBottomPannel)); - float y = top + AndroidUtilities.dp(18) + AndroidUtilities.dp(10) * (1f - swipeToReleaseProgress); + textPaint2.setAlpha((int) (oldAlphaText * swipeToReleaseProgress * progressToBottomPanel)); + float y = top + (bottom - top - layout2.getHeight()) / 2f + AndroidUtilities.dp(10) * (1f - swipeToReleaseProgress); canvas.save(); canvas.translate((lastWidth - layout2Width) / 2f, y); layout2.draw(canvas); @@ -626,7 +631,7 @@ public class ChatPullingDownDrawable implements NotificationCenter.NotificationC } public boolean needDrawBottomPanel() { - return (showBottomPanel || progressToBottomPannel > 0) && !emptyStub; + return (showBottomPanel || progressToBottomPanel > 0) && !emptyStub; } public boolean animationIsRunning() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatRightsEditActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatRightsEditActivity.java index a6942dceb..6eb1e6294 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatRightsEditActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatRightsEditActivity.java @@ -13,8 +13,6 @@ import android.app.DatePickerDialog; import android.app.TimePickerDialog; import android.content.Context; import android.content.DialogInterface; -import android.graphics.Canvas; -import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; @@ -22,9 +20,6 @@ import android.os.Build; import android.os.Bundle; import android.os.Vibrator; import android.text.Editable; -import android.text.Layout; -import android.text.StaticLayout; -import android.text.TextPaint; import android.text.TextWatcher; import android.util.TypedValue; import android.view.Gravity; @@ -37,8 +32,12 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; -import android.widget.Toast; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.messenger.AccountInstance; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.FileLog; @@ -66,20 +65,17 @@ import org.telegram.ui.Cells.TextInfoPrivacyCell; import org.telegram.ui.Cells.TextSettingsCell; import org.telegram.ui.Cells.UserCell2; import org.telegram.ui.Components.AlertsCreator; +import org.telegram.ui.Components.AnimatedTextView; import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.CircularProgressDrawable; import org.telegram.ui.Components.CrossfadeDrawable; -import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.Components.RecyclerListView; import java.util.ArrayList; import java.util.Calendar; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class ChatRightsEditActivity extends BaseFragment { private ListAdapter listViewAdapter; @@ -88,6 +84,7 @@ public class ChatRightsEditActivity extends BaseFragment { private FrameLayout addBotButtonContainer; private FrameLayout addBotButton; + private AnimatedTextView addBotButtonText; private PollEditTextCell rankEditTextCell; private CrossfadeDrawable doneDrawable; @@ -184,6 +181,28 @@ public class ChatRightsEditActivity extends BaseFragment { myAdminRights = emptyAdminRights(currentType != TYPE_ADD_BOT || (currentChat != null && currentChat.creator)); } if (type == TYPE_ADMIN || type == TYPE_ADD_BOT) { + if (type == TYPE_ADD_BOT) { + TLRPC.UserFull userFull = getMessagesController().getUserFull(userId); + if (userFull != null) { + TLRPC.TL_chatAdminRights botDefaultRights = isChannel ? userFull.bot_broadcast_admin_rights : userFull.bot_group_admin_rights; + if (botDefaultRights != null) { + if (rightsAdmin == null) { + rightsAdmin = botDefaultRights; + } else { + rightsAdmin.ban_users = rightsAdmin.ban_users || botDefaultRights.ban_users; + rightsAdmin.add_admins = rightsAdmin.add_admins || botDefaultRights.add_admins; + rightsAdmin.post_messages = rightsAdmin.post_messages || botDefaultRights.post_messages; + rightsAdmin.pin_messages = rightsAdmin.pin_messages || botDefaultRights.pin_messages; + rightsAdmin.delete_messages = rightsAdmin.delete_messages || botDefaultRights.delete_messages; + rightsAdmin.change_info = rightsAdmin.change_info || botDefaultRights.change_info; + rightsAdmin.anonymous = rightsAdmin.anonymous || botDefaultRights.anonymous; + rightsAdmin.edit_messages = rightsAdmin.edit_messages || botDefaultRights.edit_messages; + rightsAdmin.manage_call = rightsAdmin.manage_call || botDefaultRights.manage_call; + rightsAdmin.other = rightsAdmin.other || botDefaultRights.other; + } + } + } + } if (rightsAdmin == null) { initialAsAdmin = false; if (type == TYPE_ADD_BOT) { @@ -359,7 +378,9 @@ public class ChatRightsEditActivity extends BaseFragment { if (canEdit || !isChannel && currentChat.creator && UserObject.isUserSelf(currentUser)) { ActionBarMenu menu = actionBar.createMenu(); - doneDrawable = new CrossfadeDrawable(context.getResources().getDrawable(R.drawable.ic_done), new CircularProgressDrawable(Theme.getColor(Theme.key_actionBarDefaultIcon))); + Drawable checkmark = context.getResources().getDrawable(R.drawable.ic_ab_done).mutate(); + checkmark.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_actionBarDefaultIcon), PorterDuff.Mode.MULTIPLY)); + doneDrawable = new CrossfadeDrawable(checkmark, new CircularProgressDrawable(Theme.getColor(Theme.key_actionBarDefaultIcon))); menu.addItemWithWidth(done_button, 0, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); menu.getItem(done_button).setIcon(doneDrawable); } @@ -893,7 +914,11 @@ public class ChatRightsEditActivity extends BaseFragment { } }), ConnectionsManager.RequestFlagWithoutLogin); } else if (error.text.equals("CHANNELS_TOO_MUCH")) { - presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_EDIT)); + if (getParentActivity() != null && !AccountInstance.getInstance(currentAccount).getUserConfig().isPremium()) { + showDialog(new LimitReachedBottomSheet(this, getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); + } else { + presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_EDIT)); + } } else { if (passwordFragment != null) { passwordFragment.needHideProgress(); @@ -1090,8 +1115,9 @@ public class ChatRightsEditActivity extends BaseFragment { adminRights.other ? 1 : 0, adminRights, bannedRights, currentRank); finishFragment(); } - }, () -> { + }, err -> { setLoading(false); + return true; }); } else if (currentType == TYPE_BANNED) { MessagesController.getInstance(currentAccount).setParticipantBannedRole(chatId, currentUser, null, bannedRights, isChannel, getFragmentForAlert(1)); @@ -1148,9 +1174,15 @@ public class ChatRightsEditActivity extends BaseFragment { } }; if (asAdmin || initialAsAdmin) { - getMessagesController().setUserAdminRole(currentChat.id, currentUser, asAdmin ? adminRights : emptyAdminRights(false), currentRank, false, this, isAddingNew, asAdmin, botHash, onFinish, () -> setLoading(false)); + getMessagesController().setUserAdminRole(currentChat.id, currentUser, asAdmin ? adminRights : emptyAdminRights(false), currentRank, false, this, isAddingNew, asAdmin, botHash, onFinish, err -> { + setLoading(false); + return true; + }); } else { - getMessagesController().addUserToChat(currentChat.id, currentUser, 0, botHash, this, true, onFinish, () -> setLoading(false)); + getMessagesController().addUserToChat(currentChat.id, currentUser, 0, botHash, this, true, onFinish, err -> { + setLoading(false); + return true; + }); } }); showDialog(builder.create()); @@ -1373,69 +1405,15 @@ public class ChatRightsEditActivity extends BaseFragment { case VIEW_TYPE_ADD_BOT_CELL: addBotButtonContainer = new FrameLayout(mContext); addBotButtonContainer.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); - addBotButton = new FrameLayout(mContext) { - - private TextPaint textPaint; - private StaticLayout mainText; - private StaticLayout asMemberText; - private StaticLayout asAdminText; { - textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - textPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - textPaint.setTextSize(AndroidUtilities.dp(14)); - textPaint.setColor(0xffffffff); - mainText = new StaticLayout(LocaleController.getString("AddBotButton", R.string.AddBotButton) + " ", textPaint, 9999, Layout.Alignment.ALIGN_NORMAL, 1f, 0f, false); - asMemberText = new StaticLayout(LocaleController.getString("AddBotButtonAsMember", R.string.AddBotButtonAsMember), textPaint, 9999, Layout.Alignment.ALIGN_NORMAL, 1f, 0f, false); - asAdminText = new StaticLayout(LocaleController.getString("AddBotButtonAsAdmin", R.string.AddBotButtonAsAdmin), textPaint, 9999, Layout.Alignment.ALIGN_NORMAL, 1f, 0f, false); - } - - private long lastFrame; - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - - float t = CubicBezierInterpolator.EASE_BOTH.getInterpolation(asAdminT); - - float mainWidth = mainText.getLineWidth(0); - float asWidth; - if (asAdminT <= 0) { - asWidth = asMemberText.getLineWidth(0); - } else if (asAdminT >= 1) { - asWidth = asAdminText.getLineWidth(0); - } else { - asWidth = AndroidUtilities.lerp(asMemberText.getLineWidth(0), asAdminText.getLineWidth(0), t); - } - float width = mainWidth + asWidth; - - canvas.save(); - canvas.translate((getWidth() - width) / 2, (getHeight() - mainText.getHeight()) / 2); - textPaint.setAlpha(255); - mainText.draw(canvas); - canvas.translate(mainWidth, 0); - if (t <= 0) { - asMemberText.draw(canvas); - } else { - canvas.save(); - canvas.translate(0, AndroidUtilities.dp(8) * t); - canvas.scale(1, 1 - 0.2f * t); - textPaint.setAlpha((int) (255 * (1f - t))); - asMemberText.draw(canvas); - canvas.restore(); - } - if (t >= 1) { - textPaint.setAlpha(255); - asAdminText.draw(canvas); - } else { - canvas.save(); - canvas.translate(0, -AndroidUtilities.dp(8) * (1f - t)); - canvas.scale(1, 1 - 0.2f * (1f - t)); - textPaint.setAlpha((int) (255 * t)); - asAdminText.draw(canvas); - canvas.restore(); - } - canvas.restore(); - } - }; - addBotButton.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), 0x40ffffff)); + addBotButton = new FrameLayout(mContext); + addBotButtonText = new AnimatedTextView(mContext, true, false, false); + addBotButtonText.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + addBotButtonText.setTextColor(0xffffffff); + addBotButtonText.setTextSize(AndroidUtilities.dp(14)); + addBotButtonText.setGravity(Gravity.CENTER); + addBotButtonText.setText(LocaleController.getString("AddBotButton", R.string.AddBotButton) + " " + (asAdmin ? LocaleController.getString("AddBotButtonAsAdmin", R.string.AddBotButtonAsAdmin) : LocaleController.getString("AddBotButtonAsMember", R.string.AddBotButtonAsMember))); + addBotButton.addView(addBotButtonText, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); + addBotButton.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); addBotButton.setOnClickListener(e -> onDonePressed()); addBotButtonContainer.addView(addBotButton, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.FILL, 14, 28, 14, 14)); addBotButtonContainer.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); @@ -1806,6 +1784,9 @@ public class ChatRightsEditActivity extends BaseFragment { // } listViewAdapter.notifyDataSetChanged(); + if (addBotButtonText != null) { + addBotButtonText.setText(LocaleController.getString("AddBotButton", R.string.AddBotButton) + " " + (asAdmin ? LocaleController.getString("AddBotButtonAsAdmin", R.string.AddBotButtonAsAdmin) : LocaleController.getString("AddBotButtonAsMember", R.string.AddBotButtonAsMember)), animated, asAdmin); + } if (asAdminAnimator != null) { asAdminAnimator.cancel(); asAdminAnimator = null; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java index a5b57b345..78bed224e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java @@ -15,8 +15,6 @@ import android.animation.ObjectAnimator; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; import android.os.Bundle; import android.text.SpannableStringBuilder; import android.text.Spanned; @@ -24,7 +22,6 @@ import android.text.TextPaint; import android.text.TextUtils; import android.text.style.ForegroundColorSpan; import android.util.SparseIntArray; -import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; @@ -33,9 +30,6 @@ import android.view.ViewTreeObserver; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.EditText; import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; import androidx.collection.LongSparseArray; import androidx.recyclerview.widget.DefaultItemAnimator; @@ -570,7 +564,7 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente loadingUserCellRow = rowCount++; } } else if (type == TYPE_ADMIN) { - if (ChatObject.isChannel(currentChat) && currentChat.megagroup && !currentChat.gigagroup && (info == null || info.participants_count <= 200)) { + if (ChatObject.isChannel(currentChat) && currentChat.megagroup && !currentChat.gigagroup && (info == null || info.participants_count <= 200 || !isChannel && info.can_set_stickers)) { recentActionsRow = rowCount++; addNewSectionRow = rowCount++; } @@ -731,6 +725,9 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente flickerLoadingView.setVisibility(View.VISIBLE); } }); + if (type == TYPE_BANNED && !firstLoaded) { + searchItem.setVisibility(View.GONE); + } if (type == TYPE_KICKED) { searchItem.setSearchFieldHint(LocaleController.getString("ChannelSearchException", R.string.ChannelSearchException)); } else { @@ -741,7 +738,7 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente } if (type == TYPE_KICKED) { - doneItem = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); + doneItem = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); } } @@ -958,40 +955,79 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente fragment.setDelegate(new GroupCreateActivity.ContactsAddActivityDelegate() { @Override public void didSelectUsers(ArrayList users, int fwdCount) { - DiffCallback savedState = saveState(); - ArrayList array = contactsMap != null && contactsMap.size() != 0 ? contacts : participants; - LongSparseArray map = contactsMap != null && contactsMap.size() != 0 ? contactsMap : participantsMap; - int k = 0; - for (int a = 0, N = users.size(); a < N; a++) { - TLRPC.User user = users.get(a); - getMessagesController().addUserToChat(chatId, user, fwdCount, null, ChatUsersActivity.this, null); - getMessagesController().putUser(user, false); - - if (map.get(user.id) == null) { - if (ChatObject.isChannel(currentChat)) { - TLRPC.TL_channelParticipant channelParticipant1 = new TLRPC.TL_channelParticipant(); - channelParticipant1.inviter_id = getUserConfig().getClientUserId(); - channelParticipant1.peer = new TLRPC.TL_peerUser(); - channelParticipant1.peer.user_id = user.id; - channelParticipant1.date = getConnectionsManager().getCurrentTime(); - array.add(k, channelParticipant1); - k++; - map.put(user.id, channelParticipant1); + final int count = users.size(); + final int[] processed = new int[1]; + final ArrayList userRestrictedPrivacy = new ArrayList<>(); + processed[0] = 0; + final Runnable showUserRestrictedPrivacyAlert = () -> { + CharSequence title, description; + if (userRestrictedPrivacy.size() == 1) { + if (count > 1) { + title = LocaleController.getString("InviteToGroupErrorTitleAUser", R.string.InviteToGroupErrorTitleAUser); } else { - TLRPC.ChatParticipant participant = new TLRPC.TL_chatParticipant(); - participant.user_id = user.id; - participant.inviter_id = getUserConfig().getClientUserId(); - array.add(k, participant); - k++; - map.put(user.id, participant); + title = LocaleController.getString("InviteToGroupErrorTitleThisUser", R.string.InviteToGroupErrorTitleThisUser); } - + description = AndroidUtilities.replaceTags(LocaleController.formatString("InviteToGroupErrorMessageSingle", R.string.InviteToGroupErrorMessageSingle, UserObject.getFirstName(userRestrictedPrivacy.get(0)))); + } else if (userRestrictedPrivacy.size() == 2) { + title = LocaleController.getString("InviteToGroupErrorTitleSomeUsers", R.string.InviteToGroupErrorTitleSomeUsers); + description = AndroidUtilities.replaceTags(LocaleController.formatString("InviteToGroupErrorMessageDouble", R.string.InviteToGroupErrorMessageDouble, UserObject.getFirstName(userRestrictedPrivacy.get(0)), UserObject.getFirstName(userRestrictedPrivacy.get(1)))); + } else if (userRestrictedPrivacy.size() == count) { + title = LocaleController.getString("InviteToGroupErrorTitleTheseUsers", R.string.InviteToGroupErrorTitleTheseUsers); + description = LocaleController.getString("InviteToGroupErrorMessageMultipleAll", R.string.InviteToGroupErrorMessageMultipleAll); + } else { + title = LocaleController.getString("InviteToGroupErrorTitleSomeUsers", R.string.InviteToGroupErrorTitleSomeUsers); + description = LocaleController.getString("InviteToGroupErrorMessageMultipleSome", R.string.InviteToGroupErrorMessageMultipleSome); } + new AlertDialog.Builder(context) + .setTitle(title) + .setMessage(description) + .setPositiveButton(LocaleController.getString("OK", R.string.OK), null) + .show(); + }; + for (int a = 0; a < count; a++) { + final TLRPC.User user = users.get(a); + getMessagesController().addUserToChat(chatId, user, fwdCount, null, ChatUsersActivity.this, false, () -> { + processed[0]++; + if (processed[0] >= count && userRestrictedPrivacy.size() > 0) { + showUserRestrictedPrivacyAlert.run(); + } + DiffCallback savedState = saveState(); + ArrayList array = contactsMap != null && contactsMap.size() != 0 ? contacts : participants; + LongSparseArray map = contactsMap != null && contactsMap.size() != 0 ? contactsMap : participantsMap; + if (map.get(user.id) == null) { + if (ChatObject.isChannel(currentChat)) { + TLRPC.TL_channelParticipant channelParticipant1 = new TLRPC.TL_channelParticipant(); + channelParticipant1.inviter_id = getUserConfig().getClientUserId(); + channelParticipant1.peer = new TLRPC.TL_peerUser(); + channelParticipant1.peer.user_id = user.id; + channelParticipant1.date = getConnectionsManager().getCurrentTime(); + array.add(0, channelParticipant1); + map.put(user.id, channelParticipant1); + } else { + TLRPC.ChatParticipant participant = new TLRPC.TL_chatParticipant(); + participant.user_id = user.id; + participant.inviter_id = getUserConfig().getClientUserId(); + array.add(0, participant); + map.put(user.id, participant); + } + } + if (array == participants) { + sortAdmins(participants); + } + updateListAnimated(savedState); + }, err -> { + processed[0]++; + boolean privacyRestricted; + if (privacyRestricted = err != null && "USER_PRIVACY_RESTRICTED".equals(err.text)) { + userRestrictedPrivacy.add(user); + } + if (processed[0] >= count && userRestrictedPrivacy.size() > 0) { + showUserRestrictedPrivacyAlert.run(); + } + return !privacyRestricted; + }); + getMessagesController().putUser(user, false); } - if (array == participants) { - sortAdmins(participants); - } - updateListAnimated(savedState); } @Override @@ -1767,7 +1803,7 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente return true; } items.add(editingAdmin ? LocaleController.getString("EditAdminRights", R.string.EditAdminRights) : LocaleController.getString("SetAsAdmin", R.string.SetAsAdmin)); - icons.add(R.drawable.actions_addadmin); + icons.add(R.drawable.msg_admins); actions.add(0); } boolean hasRemove = false; @@ -1778,14 +1814,14 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente if (!isChannel) { if (ChatObject.isChannel(currentChat) && !currentChat.gigagroup) { items.add(LocaleController.getString("ChangePermissions", R.string.ChangePermissions)); - icons.add(R.drawable.actions_permissions); + icons.add(R.drawable.msg_permissions); actions.add(1); } items.add(LocaleController.getString("KickFromGroup", R.string.KickFromGroup)); } else { items.add(LocaleController.getString("ChannelRemoveUser", R.string.ChannelRemoveUser)); } - icons.add(R.drawable.actions_remove_user); + icons.add(R.drawable.msg_remove); actions.add(2); hasRemove = true; } @@ -1830,8 +1866,8 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente LocaleController.getString("ChannelEditPermissions", R.string.ChannelEditPermissions), LocaleController.getString("ChannelDeleteFromList", R.string.ChannelDeleteFromList)}; icons = new int[]{ - R.drawable.actions_permissions, - R.drawable.chats_delete}; + R.drawable.msg_permissions, + R.drawable.msg_delete}; } else if (type == TYPE_BANNED && ChatObject.canBlockUsers(currentChat)) { if (resultOnly) { return true; @@ -1840,8 +1876,8 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente ChatObject.canAddUsers(currentChat) && peerId > 0 ? (isChannel ? LocaleController.getString("ChannelAddToChannel", R.string.ChannelAddToChannel) : LocaleController.getString("ChannelAddToGroup", R.string.ChannelAddToGroup)) : null, LocaleController.getString("ChannelDeleteFromList", R.string.ChannelDeleteFromList)}; icons = new int[]{ - R.drawable.actions_addmember2, - R.drawable.chats_delete}; + R.drawable.msg_contact_add, + R.drawable.msg_delete}; } else if (type == TYPE_ADMIN && ChatObject.canAddAdmins(currentChat) && canEdit) { if (resultOnly) { return true; @@ -1851,13 +1887,13 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente LocaleController.getString("EditAdminRights", R.string.EditAdminRights), LocaleController.getString("ChannelRemoveUserAdmin", R.string.ChannelRemoveUserAdmin)}; icons = new int[]{ - R.drawable.actions_addadmin, - R.drawable.actions_remove_user}; + R.drawable.msg_admins, + R.drawable.msg_remove}; } else { items = new CharSequence[]{ LocaleController.getString("ChannelRemoveUserAdmin", R.string.ChannelRemoveUserAdmin)}; icons = new int[]{ - R.drawable.actions_remove_user}; + R.drawable.msg_remove}; } } else { items = null; @@ -2303,6 +2339,7 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente final ArrayList requests = loadChatParticipantsRequests(offset, count, reset); final ArrayList responses = new ArrayList<>(); final Runnable onRequestsEnd = () -> { + int objectsCount = 0; for (int i = 0; i < requests.size(); ++i) { TLRPC.TL_channels_getParticipants req = requests.get(i); TLRPC.TL_channels_channelParticipants res = responses.get(i); @@ -2351,6 +2388,7 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente map.put(MessageObject.getPeerId(participant.peer), participant); } } + objectsCount += objects.size(); if (type == TYPE_USERS) { for (int a = 0, N = participants.size(); a < N; a++) { TLObject object = participants.get(a); @@ -2392,6 +2430,9 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente showItemsAnimated(listViewAdapter != null ? listViewAdapter.getItemCount() : 0); loadingUsers = false; firstLoaded = true; + if (searchItem != null) { + searchItem.setVisibility(type != TYPE_BANNED || firstLoaded && objectsCount > 5 ? View.VISIBLE : View.GONE); + } } updateRows(); if (listViewAdapter != null) { @@ -2524,6 +2565,7 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente if (isOpen && !backward && needOpenSearch) { searchItem.getSearchField().requestFocus(); AndroidUtilities.showKeyboard(searchItem.getSearchField()); + searchItem.setVisibility(View.GONE); } } @@ -3060,46 +3102,14 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente view = new ShadowSectionCell(mContext); break; case 4: - view = new FrameLayout(mContext) { - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec) - AndroidUtilities.dp(56), MeasureSpec.EXACTLY)); - } - }; - FrameLayout frameLayout = (FrameLayout) view; - frameLayout.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); - - LinearLayout linearLayout = new LinearLayout(mContext); - linearLayout.setOrientation(LinearLayout.VERTICAL); - frameLayout.addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER, 20, 0, 20, 0)); - - ImageView imageView = new ImageView(mContext); - imageView.setImageResource(R.drawable.group_ban_empty); - imageView.setScaleType(ImageView.ScaleType.CENTER); - imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_emptyListPlaceholder), PorterDuff.Mode.MULTIPLY)); - linearLayout.addView(imageView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL)); - - TextView textView = new TextView(mContext); - textView.setText(LocaleController.getString("NoBlockedUsers", R.string.NoBlockedUsers)); - textView.setTextColor(Theme.getColor(Theme.key_emptyListPlaceholder)); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - textView.setGravity(Gravity.CENTER_HORIZONTAL); - textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 0, 10, 0, 0)); - - textView = new TextView(mContext); + view = new TextInfoPrivacyCell(mContext); + TextInfoPrivacyCell privacyCell = (TextInfoPrivacyCell) view; if (isChannel) { - textView.setText(LocaleController.getString("NoBlockedChannel2", R.string.NoBlockedChannel2)); + privacyCell.setText(LocaleController.getString(R.string.NoBlockedChannel2)); } else { - textView.setText(LocaleController.getString("NoBlockedGroup2", R.string.NoBlockedGroup2)); + privacyCell.setText(LocaleController.getString(R.string.NoBlockedGroup2)); } - textView.setTextColor(Theme.getColor(Theme.key_emptyListPlaceholder)); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); - textView.setGravity(Gravity.CENTER_HORIZONTAL); - linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 0, 10, 0, 0)); - - view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + privacyCell.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); break; case 5: HeaderCell headerCell = new HeaderCell(mContext, Theme.key_windowBackgroundWhiteBlueHeader, 21, 11, false); @@ -3283,28 +3293,28 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente if (position == addNewRow) { if (type == TYPE_KICKED) { actionCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); - actionCell.setText(LocaleController.getString("ChannelAddException", R.string.ChannelAddException), null, R.drawable.actions_addmember2, participantsStartRow != -1); + actionCell.setText(LocaleController.getString("ChannelAddException", R.string.ChannelAddException), null, R.drawable.msg_contact_add, participantsStartRow != -1); } else if (type == TYPE_BANNED) { - actionCell.setText(LocaleController.getString("ChannelBlockUser", R.string.ChannelBlockUser), null, R.drawable.actions_removed, false); + actionCell.setText(LocaleController.getString("ChannelBlockUser", R.string.ChannelBlockUser), null, R.drawable.msg_user_remove, false); } else if (type == TYPE_ADMIN) { actionCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); boolean showDivider = !(loadingUsers && !firstLoaded); - actionCell.setText(LocaleController.getString("ChannelAddAdmin", R.string.ChannelAddAdmin), null, R.drawable.add_admin, showDivider); + actionCell.setText(LocaleController.getString("ChannelAddAdmin", R.string.ChannelAddAdmin), null, R.drawable.msg_admin_add, showDivider); } else if (type == TYPE_USERS) { actionCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); boolean showDivider = addNew2Row != -1 || (!(loadingUsers && !firstLoaded) && membersHeaderRow == -1 && !participants.isEmpty()); if (isChannel) { - actionCell.setText(LocaleController.getString("AddSubscriber", R.string.AddSubscriber), null, R.drawable.actions_addmember2, showDivider); + actionCell.setText(LocaleController.getString("AddSubscriber", R.string.AddSubscriber), null, R.drawable.msg_contact_add, showDivider); } else { - actionCell.setText(LocaleController.getString("AddMember", R.string.AddMember), null, R.drawable.actions_addmember2, showDivider); + actionCell.setText(LocaleController.getString("AddMember", R.string.AddMember), null, R.drawable.msg_contact_add, showDivider); } } } else if (position == recentActionsRow) { - actionCell.setText(LocaleController.getString("EventLog", R.string.EventLog), null, R.drawable.group_log, false); + actionCell.setText(LocaleController.getString("EventLog", R.string.EventLog), null, R.drawable.msg_log, false); } else if (position == addNew2Row) { actionCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); boolean showDivider = !(loadingUsers && !firstLoaded) && membersHeaderRow == -1 && !participants.isEmpty(); - actionCell.setText(LocaleController.getString("ChannelInviteViaLink", R.string.ChannelInviteViaLink), null, R.drawable.actions_link, showDivider); + actionCell.setText(LocaleController.getString("ChannelInviteViaLink", R.string.ChannelInviteViaLink), null, R.drawable.msg_link2, showDivider); } else if (position == gigaConvertRow) { actionCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); actionCell.setText(LocaleController.getString("BroadcastGroupConvert", R.string.BroadcastGroupConvert), null, R.drawable.msg_channel, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChooseSpeedLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/ChooseSpeedLayout.java index 70473d6a8..a58e10b54 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChooseSpeedLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChooseSpeedLayout.java @@ -14,7 +14,7 @@ public class ChooseSpeedLayout { ActionBarPopupWindow.ActionBarPopupWindowLayout speedSwipeBackLayout; ActionBarMenuSubItem[] speedItems = new ActionBarMenuSubItem[5]; - public ChooseSpeedLayout(Context context, PopupSwipeBackLayout swipeBackLayout, Callback callback) { + public ChooseSpeedLayout(Context context, PopupSwipeBackLayout swipeBackLayout, Callback callback) { speedSwipeBackLayout = new ActionBarPopupWindow.ActionBarPopupWindowLayout(context, 0, null); speedSwipeBackLayout.setFitItems(true); @@ -23,12 +23,14 @@ public class ChooseSpeedLayout { swipeBackLayout.closeForeground(); }); backItem.setColors(0xfffafafa, 0xfffafafa); + backItem.setSelectorColor(0x0fffffff); ActionBarMenuSubItem item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_0_2, LocaleController.getString("SpeedVerySlow", R.string.SpeedVerySlow), false, null); item.setColors(0xfffafafa, 0xfffafafa); item.setOnClickListener((view) -> { callback.onSpeedSelected(0.25f); }); + item.setSelectorColor(0x0fffffff); speedItems[0] = item; item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_0_5, LocaleController.getString("SpeedSlow", R.string.SpeedSlow), false, null); @@ -36,6 +38,7 @@ public class ChooseSpeedLayout { item.setOnClickListener((view) -> { callback.onSpeedSelected(0.5f); }); + item.setSelectorColor(0x0fffffff); speedItems[1] = item; item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_1, LocaleController.getString("SpeedNormal", R.string.SpeedNormal), false, null); @@ -43,6 +46,7 @@ public class ChooseSpeedLayout { item.setOnClickListener((view) -> { callback.onSpeedSelected(1f); }); + item.setSelectorColor(0x0fffffff); speedItems[2] = item; item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_1_5, LocaleController.getString("SpeedFast", R.string.SpeedFast), false, null); @@ -50,6 +54,7 @@ public class ChooseSpeedLayout { item.setOnClickListener((view) -> { callback.onSpeedSelected(1.5f); }); + item.setSelectorColor(0x0fffffff); speedItems[3] = item; item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_2, LocaleController.getString("SpeedVeryFast", R.string.SpeedVeryFast), false, null); @@ -57,6 +62,7 @@ public class ChooseSpeedLayout { item.setOnClickListener((view) -> { callback.onSpeedSelected(2f); }); + item.setSelectorColor(0x0fffffff); speedItems[4] = item; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java index 2783a2590..44c9a7893 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java @@ -102,6 +102,7 @@ import org.telegram.ui.Cells.CheckBoxCell; import org.telegram.ui.Cells.RadioColorCell; import org.telegram.ui.Cells.TextColorCell; import org.telegram.ui.ChatActivity; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.Components.voip.VoIPHelper; import org.telegram.ui.LanguageSelectActivity; import org.telegram.ui.LaunchActivity; @@ -287,10 +288,14 @@ public class AlertsCreator { request instanceof TLRPC.TL_messages_migrateChat || request instanceof TLRPC.TL_phone_inviteToGroupCall) { if (fragment != null && error.text.equals("CHANNELS_TOO_MUCH")) { - if (request instanceof TLRPC.TL_channels_joinChannel || request instanceof TLRPC.TL_channels_inviteToChannel) { - fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_JOIN)); + if (fragment.getParentActivity() != null) { + fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); } else { - fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_EDIT)); + if (request instanceof TLRPC.TL_channels_joinChannel || request instanceof TLRPC.TL_channels_inviteToChannel) { + fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_JOIN)); + } else { + fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_EDIT)); + } } return null; } else if (fragment != null) { @@ -302,7 +307,11 @@ public class AlertsCreator { } } else if (request instanceof TLRPC.TL_messages_createChat) { if (error.text.equals("CHANNELS_TOO_MUCH")) { - fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_CREATE)); + if (fragment.getParentActivity() != null) { + fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); + } else { + fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_CREATE)); + } return null; } else if (error.text.startsWith("FLOOD_WAIT")) { showFloodWaitAlert(error.text, fragment); @@ -311,7 +320,11 @@ public class AlertsCreator { } } else if (request instanceof TLRPC.TL_channels_createChannel) { if (error.text.equals("CHANNELS_TOO_MUCH")) { - fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_CREATE)); + if (fragment.getParentActivity() != null) { + fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); + } else { + fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_CREATE)); + } return null; } else if (error.text.startsWith("FLOOD_WAIT")) { showFloodWaitAlert(error.text, fragment); @@ -349,7 +362,11 @@ public class AlertsCreator { } else if (error.text.equals("USERS_TOO_MUCH")) { showSimpleAlert(fragment, LocaleController.getString("JoinToGroupErrorFull", R.string.JoinToGroupErrorFull)); } else if (error.text.equals("CHANNELS_TOO_MUCH")) { - fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_JOIN)); + if (fragment.getParentActivity() != null) { + fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); + } else { + fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_JOIN)); + } } else if (error.text.equals("INVITE_HASH_EXPIRED")) { showSimpleAlert(fragment, LocaleController.getString("ExpiredLink", R.string.ExpiredLink), LocaleController.getString("InviteExpired", R.string.InviteExpired)); } else { @@ -400,6 +417,8 @@ public class AlertsCreator { showSimpleAlert(fragment, LocaleController.getString("CodeExpired", R.string.CodeExpired)); } else if (error.text.startsWith("FLOOD_WAIT")) { showSimpleAlert(fragment, LocaleController.getString("FloodWait", R.string.FloodWait)); + } else if (error.text.contains("FRESH_CHANGE_PHONE_FORBIDDEN")) { + showSimpleAlert(fragment, LocaleController.getString("FreshChangePhoneForbidden", R.string.FreshChangePhoneForbidden)); } else { showSimpleAlert(fragment, error.text); } @@ -1097,7 +1116,7 @@ public class AlertsCreator { } } - public static AlertDialog createSupportAlert(BaseFragment fragment) { + public static AlertDialog createSupportAlert(BaseFragment fragment, Theme.ResourcesProvider resourcesProvider) { if (fragment == null || fragment.getParentActivity() == null) { return null; } @@ -1120,13 +1139,13 @@ public class AlertsCreator { } message.setText(spanned); message.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - message.setLinkTextColor(Theme.getColor(Theme.key_dialogTextLink)); - message.setHighlightColor(Theme.getColor(Theme.key_dialogLinkSelection)); + message.setLinkTextColor(Theme.getColor(Theme.key_dialogTextLink, resourcesProvider)); + message.setHighlightColor(Theme.getColor(Theme.key_dialogLinkSelection, resourcesProvider)); message.setPadding(AndroidUtilities.dp(23), 0, AndroidUtilities.dp(23), 0); message.setMovementMethod(new AndroidUtilities.LinkMovementMethodMy()); - message.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); + message.setTextColor(Theme.getColor(Theme.key_dialogTextBlack, resourcesProvider)); - AlertDialog.Builder builder1 = new AlertDialog.Builder(fragment.getParentActivity()); + AlertDialog.Builder builder1 = new AlertDialog.Builder(fragment.getParentActivity(), resourcesProvider); builder1.setView(message); builder1.setTitle(LocaleController.getString("AskAQuestion", R.string.AskAQuestion)); builder1.setPositiveButton(LocaleController.getString("AskButton", R.string.AskButton), (dialogInterface, i) -> performAskAQuestion(fragment)); @@ -1396,7 +1415,13 @@ public class AlertsCreator { final boolean[] deleteForAll = new boolean[1]; boolean deleteChatForAll = false; - if (!second && (secret && !clear || canDeleteInbox) && !UserObject.isDeleted(user) || (deleteChatForAll = checkDeleteForAll && !clear && chat != null && chat.creator)) { + boolean lastMessageIsJoined = false; + MessageObject dialogMessage = user != null ? MessagesController.getInstance(account).dialogMessage.get(user.id) : null; + if (dialogMessage != null && dialogMessage.messageOwner != null && (dialogMessage.messageOwner.action instanceof TLRPC.TL_messageActionUserJoined || dialogMessage.messageOwner.action instanceof TLRPC.TL_messageActionContactSignUp)) { + lastMessageIsJoined = true; + } + + if (!second && (secret && !clear || canDeleteInbox) && !UserObject.isDeleted(user) && !lastMessageIsJoined || (deleteChatForAll = checkDeleteForAll && !clear && chat != null && chat.creator)) { cell[0] = new CheckBoxCell(context, 1, resourcesProvider); cell[0].setBackgroundDrawable(Theme.getSelectorDrawable(false)); if (deleteChatForAll) { @@ -2045,7 +2070,7 @@ public class AlertsCreator { buttonTextView.setText(LocaleController.getString("IUnderstand", R.string.IUnderstand)); buttonTextView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); - buttonTextView.setBackgroundDrawable(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(6), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + buttonTextView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(6), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); linearLayout.addView(buttonTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, 0, 24, 15, 16, 24)); @@ -2560,7 +2585,7 @@ public class AlertsCreator { buttonTextView.setTextColor(datePickerColors.buttonTextColor); buttonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); buttonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - buttonTextView.setBackgroundDrawable(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), datePickerColors.buttonBackgroundColor, datePickerColors.buttonBackgroundPressedColor)); + buttonTextView.setBackground(Theme.AdaptiveRipple.filledRect(datePickerColors.buttonBackgroundColor, 4)); container.addView(buttonTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.BOTTOM, 16, 15, 16, 16)); buttonTextView.setOnClickListener(v -> { canceled[0] = false; @@ -2583,6 +2608,7 @@ public class AlertsCreator { } }); bottomSheet.setBackgroundColor(datePickerColors.backgroundColor); + bottomSheet.fixNavigationBar(datePickerColors.backgroundColor); return builder; } @@ -2763,16 +2789,17 @@ public class AlertsCreator { builder.setCustomView(container); BottomSheet bottomSheet = builder.show(); bottomSheet.setBackgroundColor(datePickerColors.backgroundColor); + bottomSheet.fixNavigationBar(datePickerColors.backgroundColor); return builder; } - public static BottomSheet.Builder createAutoDeleteDatePickerDialog(Context context, final ScheduleDatePickerDelegate datePickerDelegate) { + public static BottomSheet.Builder createAutoDeleteDatePickerDialog(Context context, Theme.ResourcesProvider resourcesProvider, final ScheduleDatePickerDelegate datePickerDelegate) { if (context == null) { return null; } - ScheduleDatePickerColors datePickerColors = new ScheduleDatePickerColors(); - BottomSheet.Builder builder = new BottomSheet.Builder(context, false); + ScheduleDatePickerColors datePickerColors = new ScheduleDatePickerColors(resourcesProvider); + BottomSheet.Builder builder = new BottomSheet.Builder(context, false, resourcesProvider); builder.setApplyBottomPadding(false); int[] values = new int[]{ @@ -2795,7 +2822,7 @@ public class AlertsCreator { 365 * 60 * 24 }; - final NumberPicker numberPicker = new NumberPicker(context) { + final NumberPicker numberPicker = new NumberPicker(context, resourcesProvider) { @Override protected CharSequence getContentDescription(int index) { if (values[index] == 0) { @@ -2804,7 +2831,7 @@ public class AlertsCreator { return LocaleController.formatPluralString("Days", values[index] / (60 * 24)); } else if (values[index] < 31 * 60 * 24) { return LocaleController.formatPluralString("Weeks", values[index] / (60 * 24)); - } else if (values[index] < 365 * 60 * 24) { + } else if (values[index] < 365 * 60 * 24) { return LocaleController.formatPluralString("Months", values[index] / (7 * 60 * 24)); } else { return LocaleController.formatPluralString("Years", values[index] * 5 / 31 * 60 * 24); @@ -2822,7 +2849,7 @@ public class AlertsCreator { return LocaleController.formatPluralString("Days", values[index] / (60 * 24)); } else if (values[index] < 31 * 60 * 24) { return LocaleController.formatPluralString("Weeks", values[index] / (7 * 60 * 24)); - } else if (values[index] < 365 * 60 * 24) { + } else if (values[index] < 365 * 60 * 24) { return LocaleController.formatPluralString("Months", values[index] / (31 * 60 * 24)); } else { return LocaleController.formatPluralString("Years", values[index] / (365 * 60 * 24)); @@ -2911,19 +2938,24 @@ public class AlertsCreator { builder.setCustomView(container); BottomSheet bottomSheet = builder.show(); bottomSheet.setBackgroundColor(datePickerColors.backgroundColor); + bottomSheet.fixNavigationBar(datePickerColors.backgroundColor); return builder; } public static BottomSheet.Builder createSoundFrequencyPickerDialog(Context context, int notifyMaxCount, int notifyDelay, final SoundFrequencyDelegate delegate) { + return createSoundFrequencyPickerDialog(context, notifyMaxCount, notifyDelay, delegate, null); + } + + public static BottomSheet.Builder createSoundFrequencyPickerDialog(Context context, int notifyMaxCount, int notifyDelay, final SoundFrequencyDelegate delegate, Theme.ResourcesProvider resourcesProvider) { if (context == null) { return null; } - ScheduleDatePickerColors datePickerColors = new ScheduleDatePickerColors(); - BottomSheet.Builder builder = new BottomSheet.Builder(context, false); + ScheduleDatePickerColors datePickerColors = new ScheduleDatePickerColors(resourcesProvider); + BottomSheet.Builder builder = new BottomSheet.Builder(context, false, resourcesProvider); builder.setApplyBottomPadding(false); - final NumberPicker times = new NumberPicker(context) { + final NumberPicker times = new NumberPicker(context, resourcesProvider) { @Override protected CharSequence getContentDescription(int index) { return LocaleController.formatPluralString("Times", index + 1); @@ -2936,7 +2968,7 @@ public class AlertsCreator { times.setWrapSelectorWheel(false); times.setFormatter(index -> LocaleController.formatPluralString("Times", index + 1)); - final NumberPicker minutes = new NumberPicker(context) { + final NumberPicker minutes = new NumberPicker(context, resourcesProvider) { @Override protected CharSequence getContentDescription(int index) { return LocaleController.formatPluralString("Times", index + 1); @@ -2949,7 +2981,7 @@ public class AlertsCreator { minutes.setWrapSelectorWheel(false); minutes.setFormatter(index -> LocaleController.formatPluralString("Minutes", index + 1)); - NumberPicker divider = new NumberPicker(context); + NumberPicker divider = new NumberPicker(context, resourcesProvider); divider.setMinValue(0); divider.setMaxValue(0); divider.setTextColor(datePickerColors.textColor); @@ -3047,20 +3079,20 @@ public class AlertsCreator { builder.setCustomView(container); BottomSheet bottomSheet = builder.show(); bottomSheet.setBackgroundColor(datePickerColors.backgroundColor); + bottomSheet.fixNavigationBar(datePickerColors.backgroundColor); return builder; } - public static BottomSheet.Builder createMuteForPickerDialog(Context context, final ScheduleDatePickerDelegate datePickerDelegate) { + public static BottomSheet.Builder createMuteForPickerDialog(Context context, Theme.ResourcesProvider resourcesProvider, final ScheduleDatePickerDelegate datePickerDelegate) { if (context == null) { return null; } - ScheduleDatePickerColors datePickerColors = new ScheduleDatePickerColors(); - BottomSheet.Builder builder = new BottomSheet.Builder(context, false); + ScheduleDatePickerColors datePickerColors = new ScheduleDatePickerColors(resourcesProvider); + BottomSheet.Builder builder = new BottomSheet.Builder(context, false, resourcesProvider); builder.setApplyBottomPadding(false); int[] values = new int[]{ - 0, 30, 60, 60 * 2, @@ -3084,7 +3116,7 @@ public class AlertsCreator { 365 * 60 * 24 }; - final NumberPicker numberPicker = new NumberPicker(context) { + final NumberPicker numberPicker = new NumberPicker(context, resourcesProvider) { @Override protected CharSequence getContentDescription(int index) { if (values[index] == 0) { @@ -3097,7 +3129,7 @@ public class AlertsCreator { return LocaleController.formatPluralString("Days", values[index] / (60 * 24)); } else if (values[index] < 31 * 60 * 24) { return LocaleController.formatPluralString("Weeks", values[index] / (7 * 60 * 24)); - } else if (values[index] < 365 * 60 * 24) { + } else if (values[index] < 365 * 60 * 24) { return LocaleController.formatPluralString("Months", values[index] / (31 * 60 * 24)); } else { return LocaleController.formatPluralString("Years", values[index] / (365 * 60 * 24)); @@ -3119,7 +3151,7 @@ public class AlertsCreator { return LocaleController.formatPluralString("Days", values[index] / (60 * 24)); } else if (values[index] < 31 * 60 * 24) { return LocaleController.formatPluralString("Weeks", values[index] / (7 * 60 * 24)); - } else if (values[index] < 365 * 60 * 24) { + } else if (values[index] < 365 * 60 * 24) { return LocaleController.formatPluralString("Months", values[index] / (31 * 60 * 24)); } else { return LocaleController.formatPluralString("Years", values[index] / (365 * 60 * 24)); @@ -3205,6 +3237,7 @@ public class AlertsCreator { builder.setCustomView(container); BottomSheet bottomSheet = builder.show(); bottomSheet.setBackgroundColor(datePickerColors.backgroundColor); + bottomSheet.fixNavigationBar(datePickerColors.backgroundColor); return builder; } @@ -3579,15 +3612,15 @@ public class AlertsCreator { LocaleController.getString("ReportChatOther", R.string.ReportChatOther) }; icons = new int[]{ - R.drawable.msg_report_spam, + R.drawable.msg_clearcache, R.drawable.msg_report_violence, - R.drawable.msg_report_abuse, + R.drawable.msg_block2, R.drawable.msg_report_drugs, R.drawable.msg_report_personal, R.drawable.msg_report_xxx, R.drawable.msg_report_other }; - types = new int[] { + types = new int[]{ REPORT_TYPE_SPAM, REPORT_TYPE_VIOLENCE, REPORT_TYPE_CHILD_ABUSE, @@ -3608,16 +3641,16 @@ public class AlertsCreator { LocaleController.getString("ReportChatOther", R.string.ReportChatOther) }; icons = new int[]{ - R.drawable.msg_report_spam, + R.drawable.msg_clearcache, R.drawable.msg_report_fake, R.drawable.msg_report_violence, - R.drawable.msg_report_abuse, + R.drawable.msg_block2, R.drawable.msg_report_drugs, R.drawable.msg_report_personal, R.drawable.msg_report_xxx, R.drawable.msg_report_other }; - types = new int[] { + types = new int[]{ REPORT_TYPE_SPAM, REPORT_TYPE_FAKE_ACCOUNT, REPORT_TYPE_VIOLENCE, @@ -3880,6 +3913,10 @@ public class AlertsCreator { } public static Dialog createColorSelectDialog(Activity parentActivity, final long dialog_id, final int globalType, final Runnable onSelect) { + return createColorSelectDialog(parentActivity, dialog_id, globalType, onSelect, null); + } + + public static Dialog createColorSelectDialog(Activity parentActivity, final long dialog_id, final int globalType, final Runnable onSelect, Theme.ResourcesProvider resourcesProvider) { int currentColor; SharedPreferences preferences = MessagesController.getNotificationsSettings(UserConfig.selectedAccount); if (dialog_id != 0) { @@ -3912,7 +3949,7 @@ public class AlertsCreator { LocaleController.getString("ColorWhite", R.string.ColorWhite)}; final int[] selectedColor = new int[]{currentColor}; for (int a = 0; a < 9; a++) { - RadioColorCell cell = new RadioColorCell(parentActivity); + RadioColorCell cell = new RadioColorCell(parentActivity, resourcesProvider); cell.setPadding(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0); cell.setTag(a); cell.setCheckColor(TextColorCell.colors[a], TextColorCell.colors[a]); @@ -3927,7 +3964,7 @@ public class AlertsCreator { selectedColor[0] = TextColorCell.colorsToSave[(Integer) v.getTag()]; }); } - AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity); + AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity, resourcesProvider); builder.setTitle(LocaleController.getString("LedColor", R.string.LedColor)); builder.setView(linearLayout); builder.setPositiveButton(LocaleController.getString("Set", R.string.Set), (dialogInterface, which) -> { @@ -3983,16 +4020,24 @@ public class AlertsCreator { } public static Dialog createVibrationSelectDialog(Activity parentActivity, final long dialogId, final boolean globalGroup, final boolean globalAll, final Runnable onSelect) { + return createVibrationSelectDialog(parentActivity, dialogId, globalGroup, globalAll, onSelect, null); + } + + public static Dialog createVibrationSelectDialog(Activity parentActivity, final long dialogId, final boolean globalGroup, final boolean globalAll, final Runnable onSelect, Theme.ResourcesProvider resourcesProvider) { String prefix; if (dialogId != 0) { prefix = "vibrate_" + dialogId; } else { prefix = globalGroup ? "vibrate_group" : "vibrate_messages"; } - return createVibrationSelectDialog(parentActivity, dialogId, prefix, onSelect); + return createVibrationSelectDialog(parentActivity, dialogId, prefix, onSelect, resourcesProvider); } public static Dialog createVibrationSelectDialog(Activity parentActivity, final long dialogId, final String prefKeyPrefix, final Runnable onSelect) { + return createVibrationSelectDialog(parentActivity, dialogId, prefKeyPrefix, onSelect, null); + } + + public static Dialog createVibrationSelectDialog(Activity parentActivity, final long dialogId, final String prefKeyPrefix, final Runnable onSelect, Theme.ResourcesProvider resourcesProvider) { SharedPreferences preferences = MessagesController.getNotificationsSettings(UserConfig.selectedAccount); final int[] selected = new int[1]; String[] descriptions; @@ -4029,13 +4074,13 @@ public class AlertsCreator { final LinearLayout linearLayout = new LinearLayout(parentActivity); linearLayout.setOrientation(LinearLayout.VERTICAL); - AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity); + AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity, resourcesProvider); for (int a = 0; a < descriptions.length; a++) { - RadioColorCell cell = new RadioColorCell(parentActivity); + RadioColorCell cell = new RadioColorCell(parentActivity, resourcesProvider); cell.setPadding(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0); cell.setTag(a); - cell.setCheckColor(Theme.getColor(Theme.key_radioBackground), Theme.getColor(Theme.key_dialogRadioBackgroundChecked)); + cell.setCheckColor(Theme.getColor(Theme.key_radioBackground, resourcesProvider), Theme.getColor(Theme.key_dialogRadioBackgroundChecked, resourcesProvider)); cell.setTextAndValue(descriptions[a], selected[0] == a); linearLayout.addView(cell); cell.setOnClickListener(v -> { @@ -4396,6 +4441,10 @@ public class AlertsCreator { } public static Dialog createPrioritySelectDialog(Activity parentActivity, final long dialog_id, final int globalType, final Runnable onSelect) { + return createPrioritySelectDialog(parentActivity, dialog_id, globalType, onSelect, null); + } + + public static Dialog createPrioritySelectDialog(Activity parentActivity, final long dialog_id, final int globalType, final Runnable onSelect, Theme.ResourcesProvider resourcesProvider) { SharedPreferences preferences = MessagesController.getNotificationsSettings(UserConfig.selectedAccount); final int[] selected = new int[1]; String[] descriptions; @@ -4446,13 +4495,13 @@ public class AlertsCreator { final LinearLayout linearLayout = new LinearLayout(parentActivity); linearLayout.setOrientation(LinearLayout.VERTICAL); - AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity); + AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity, resourcesProvider); for (int a = 0; a < descriptions.length; a++) { - RadioColorCell cell = new RadioColorCell(parentActivity); + RadioColorCell cell = new RadioColorCell(parentActivity, resourcesProvider); cell.setPadding(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0); cell.setTag(a); - cell.setCheckColor(Theme.getColor(Theme.key_radioBackground), Theme.getColor(Theme.key_dialogRadioBackgroundChecked)); + cell.setCheckColor(Theme.getColor(Theme.key_radioBackground, resourcesProvider), Theme.getColor(Theme.key_dialogRadioBackgroundChecked, resourcesProvider)); cell.setTextAndValue(descriptions[a], selected[0] == a); linearLayout.addView(cell); cell.setOnClickListener(v -> { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFileDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFileDrawable.java index 47cf91eab..80bbbfd88 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFileDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFileDrawable.java @@ -31,7 +31,7 @@ import org.telegram.messenger.DispatchQueue; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLocation; -import org.telegram.messenger.MessageObject; +import org.telegram.messenger.ImageReceiver; import org.telegram.tgnet.TLRPC; import java.io.File; @@ -43,12 +43,19 @@ import java.util.concurrent.TimeUnit; public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { private static native long createDecoder(String src, int[] params, int account, long streamFileSize, Object readCallback, boolean preview); + private static native void destroyDecoder(long ptr); + private static native void stopDecoder(long ptr); + private static native int getVideoFrame(long ptr, Bitmap bitmap, int[] params, int stride, boolean preview, float startTimeSeconds, float endTimeSeconds); + private static native void seekToMs(long ptr, long ms, boolean precise); + private static native int getFrameAtTime(long ptr, long ms, Bitmap bitmap, int[] data, int stride); + private static native void prepareToSeek(long ptr); + private static native void getVideoInfo(int sdkVersion, String src, int[] params); public final static int PARAM_NUM_SUPPORTED_VIDEO_CODEC = 0; @@ -88,6 +95,7 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { private volatile long pendingSeekToUI = -1; private boolean pendingRemoveLoading; private int pendingRemoveLoadingFramesReset; + private boolean isRestarted; private final Object sync = new Object(); private boolean invalidateParentViewWithSecond; @@ -120,19 +128,22 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { private int renderingHeight; private int renderingWidth; private float scaleFactor = 1f; - public final boolean isWebmSticker; + public boolean isWebmSticker; private final TLRPC.Document document; private View parentView; private ArrayList secondParentViews = new ArrayList<>(); - private ArrayList parents = new ArrayList<>(); + private ArrayList parents = new ArrayList<>(); private AnimatedFileDrawableStream stream; private boolean useSharedQueue; private boolean invalidatePath = true; private boolean invalidateTaskIsRunning; + private boolean limitFps; + + public int repeatCount; private static ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(8, new ThreadPoolExecutor.DiscardPolicy()); @@ -160,12 +171,18 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { } loadFrameTask = null; scheduleNextGetFrame(); - for (int i = 0; i < parents.size(); i++) { - parents.get(i).invalidate(); - } + invalidateInternal(); } }; + private void invalidateInternal() { + for (int i = 0; i < parents.size(); i++) { + if (parents.get(i).getParentView() != null) { + parents.get(i).getParentView().invalidate(); + } + } + } + private Runnable uiRunnable = new Runnable() { @Override public void run() { @@ -205,11 +222,20 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { nextRenderingBitmap = backgroundBitmap; nextRenderingBitmapTime = backgroundBitmapTime; nextRenderingShader = backgroundShader; + if (isRestarted) { + isRestarted = false; + repeatCount++; + checkRepeat(); + } + if (metaData[3] < lastTimeStamp) { lastTimeStamp = startTime > 0 ? (int) (startTime * 1000) : 0; } if (metaData[3] - lastTimeStamp != 0) { invalidateAfter = metaData[3] - lastTimeStamp; + if (limitFps && invalidateAfter < 32) { + invalidateAfter = 32; + } } if (pendingSeekToUI >= 0 && pendingSeekTo == -1) { pendingSeekToUI = -1; @@ -221,13 +247,30 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { secondParentViews.get(a).invalidate(); } } - for (int i = 0; i < parents.size(); i++) { - parents.get(i).invalidate(); - } + invalidateInternal(); scheduleNextGetFrame(); } }; + public void checkRepeat() { + int count = 0; + for (int j = 0; j < parents.size(); j++) { + ImageReceiver parent = parents.get(j); + if (!parent.isAttachedToWindow()) { + parents.remove(j); + j--; + } + if (parent.animatedFileDrawableRepeatMaxCount > 0 && repeatCount >= parent.animatedFileDrawableRepeatMaxCount) { + count++; + } + } + if (parents.size() == count) { + stop(); + } else { + start(); + } + } + private Runnable loadFrameRunnable = new Runnable() { @Override public void run() { @@ -257,7 +300,7 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { if (pendingSeekTo >= 0) { metaData[3] = (int) pendingSeekTo; long seekTo = pendingSeekTo; - synchronized(sync) { + synchronized (sync) { pendingSeekTo = -1; } seekWas = true; @@ -273,10 +316,13 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { AndroidUtilities.runOnUIThread(uiRunnableNoFrame); return; } - + if (lastTimeStamp != 0 && metaData[3] == 0) { + isRestarted = true; + } if (seekWas) { lastTimeStamp = metaData[3]; } + backgroundBitmapTime = metaData[3]; } } else { @@ -314,7 +360,7 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { }; public AnimatedFileDrawable(File file, boolean createDecoder, long streamSize, TLRPC.Document document, ImageLocation location, Object parentObject, long seekTo, int account, boolean preview) { - this(file, createDecoder, streamSize, document, location, parentObject, seekTo ,account, preview, 0, 0); + this(file, createDecoder, streamSize, document, location, parentObject, seekTo, account, preview, 0, 0); } public AnimatedFileDrawable(File file, boolean createDecoder, long streamSize, TLRPC.Document document, ImageLocation location, Object parentObject, long seekTo, int account, boolean preview, int w, int h) { @@ -324,10 +370,6 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { renderingHeight = h; renderingWidth = w; this.document = document; - isWebmSticker = MessageObject.isWebM(document) || MessageObject.isVideoSticker(document); - if (isWebmSticker) { - useSharedQueue = true; - } getPaint().setFlags(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); if (streamSize != 0 && (document != null || location != null)) { stream = new AnimatedFileDrawableStream(document, location, parentObject, account, preview); @@ -346,6 +388,13 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { } } + public void setIsWebmSticker(boolean b) { + isWebmSticker = b; + if (isWebmSticker) { + useSharedQueue = true; + } + } + public Bitmap getFrameAtTime(long ms) { return getFrameAtTime(ms, false); } @@ -380,17 +429,20 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { parentView = view; } - public void addParent(View view) { - if (view != null && !parents.contains(view)) { - parents.add(view); + public void addParent(ImageReceiver imageReceiver) { + if (imageReceiver != null && !parents.contains(imageReceiver)) { + parents.add(imageReceiver); if (isRunning) { scheduleNextGetFrame(); } } } - public void removeParent(View view) { - parents.remove(view); + public void removeParent(ImageReceiver imageReceiver) { + parents.remove(imageReceiver); + if (parents.size() == 0) { + repeatCount = 0; + } } public void setInvalidateParentViewWithSecond(boolean value) { @@ -463,12 +515,15 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { destroyDecoder(nativePtr); nativePtr = 0; } + + ArrayList bitmapToRecycle = new ArrayList<>(); + bitmapToRecycle.add(renderingBitmap); + bitmapToRecycle.add(nextRenderingBitmap); + if (renderingBitmap != null) { - renderingBitmap.recycle(); renderingBitmap = null; } if (nextRenderingBitmap != null) { - nextRenderingBitmap.recycle(); nextRenderingBitmap = null; } if (decodeQueue != null) { @@ -476,12 +531,14 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { decodeQueue = null; } getPaint().setShader(null); + AndroidUtilities.recycleBitmaps(bitmapToRecycle); } else { destroyWhenDone = true; } if (stream != null) { stream.cancel(true); } + invalidateInternal(); } public void resetStream(boolean stop) { @@ -709,6 +766,10 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { } } + public long getLastFrameTimestamp() { + return lastTimeStamp; + } + @Override public int getMinimumHeight() { int height = decoderCreated ? (metaData[2] == 90 || metaData[2] == 270 ? metaData[0] : metaData[1]) : 0; @@ -802,7 +863,7 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { } public static void getVideoInfo(String src, int[] params) { - getVideoInfo(Build.VERSION.SDK_INT, src, params); + getVideoInfo(Build.VERSION.SDK_INT, src, params); } public void setStartEndTime(long startTime, long endTime) { @@ -825,7 +886,19 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { if (backgroundBitmap == null) { backgroundBitmap = Bitmap.createBitmap((int) (metaData[0] * scaleFactor), (int) (metaData[1] * scaleFactor), Bitmap.Config.ARGB_8888); } - getVideoFrame(nativePtr, backgroundBitmap, metaData, backgroundBitmap.getRowBytes(), false, startTime, endTime) ; + getVideoFrame(nativePtr, backgroundBitmap, metaData, backgroundBitmap.getRowBytes(), false, startTime, endTime); return backgroundBitmap; } + + public void setLimitFps(boolean limitFps) { + this.limitFps = limitFps; + } + + public ArrayList getParents() { + return parents; + } + + public File getFilePath() { + return path; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFloat.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFloat.java new file mode 100644 index 000000000..0ae45c1bb --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFloat.java @@ -0,0 +1,110 @@ +package org.telegram.ui.Components; + + +import android.animation.TimeInterpolator; +import android.os.SystemClock; +import android.view.View; + +import androidx.core.math.MathUtils; + +import org.telegram.messenger.AndroidUtilities; + +public class AnimatedFloat { + + private View parent; + private float value; + private float targetValue; + private boolean firstSet; + + private long transitionDelay = 0; + private long transitionDuration = 200; + private TimeInterpolator transitionInterpolator = CubicBezierInterpolator.DEFAULT; + private boolean transition; + private long transitionStart; + private float startValue; + + public AnimatedFloat() { + this.parent = null; + this.firstSet = true; + } + + public AnimatedFloat(long transitionDuration, TimeInterpolator transitionInterpolator) { + this.parent = null; + this.transitionDuration = transitionDuration; + this.transitionInterpolator = transitionInterpolator; + this.firstSet = true; + } + + public AnimatedFloat(long transitionDelay, long transitionDuration, TimeInterpolator transitionInterpolator) { + this.parent = null; + this.transitionDelay = transitionDelay; + this.transitionDuration = transitionDuration; + this.transitionInterpolator = transitionInterpolator; + this.firstSet = true; + } + + public AnimatedFloat(View parentToInvalidate) { + this.parent = parentToInvalidate; + this.firstSet = true; + } + + public AnimatedFloat(View parentToInvalidate, long transitionDuration, TimeInterpolator transitionInterpolator) { + this.parent = parentToInvalidate; + this.transitionDuration = transitionDuration; + this.transitionInterpolator = transitionInterpolator; + this.firstSet = true; + } + + public AnimatedFloat(float initialValue, View parentToInvalidate) { + this.parent = parentToInvalidate; + this.value = targetValue = initialValue; + this.firstSet = false; + } + + public AnimatedFloat(float initialValue, View parentToInvalidate, long transitionDelay, long transitionDuration, TimeInterpolator transitionInterpolator) { + this.parent = parentToInvalidate; + this.value = targetValue = initialValue; + this.transitionDelay = transitionDelay; + this.transitionDuration = transitionDuration; + this.transitionInterpolator = transitionInterpolator; + this.firstSet = false; + } + + public float get() { + return value; + } + + public float set(float mustBe) { + return this.set(mustBe, false); + } + + public float set(float mustBe, boolean force) { + final long now = SystemClock.elapsedRealtime(); + if (force || firstSet) { + value = targetValue = mustBe; + transition = false; + firstSet = false; + } else if (Math.abs(targetValue - mustBe) > 0.0001f) { + transition = true; + targetValue = mustBe; + startValue = value; + transitionStart = now; + } + if (transition) { + final float t = MathUtils.clamp((now - transitionStart - transitionDelay) / (float) transitionDuration, 0, 1); + if (now - transitionStart >= transitionDelay) { + value = AndroidUtilities.lerp(startValue, targetValue, transitionInterpolator.getInterpolation(t)); + } + if (t >= 1f) { + transition = false; + } else if (parent != null) { + parent.invalidate(); + } + } + return value; + } + + public void setParent(View parent) { + this.parent = parent; + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedTextView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedTextView.java new file mode 100644 index 000000000..12ea45e1c --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedTextView.java @@ -0,0 +1,791 @@ +package org.telegram.ui.Components; + + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.TimeInterpolator; +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.PixelFormat; +import android.graphics.Rect; +import android.graphics.Typeface; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.text.Layout; +import android.text.StaticLayout; +import android.text.TextPaint; +import android.text.TextUtils; +import android.util.Log; +import android.view.Gravity; +import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import org.telegram.messenger.AndroidUtilities; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.stream.IntStream; + +public class AnimatedTextView extends View { + + public static class AnimatedTextDrawable extends Drawable { + + private TextPaint textPaint = new TextPaint(); + private int gravity = 0; + + private boolean isRTL = false; + + private int currentWidth, currentHeight; + private Integer[] currentLayoutOffsets; + private Integer[] currentLayoutToOldIndex; + private StaticLayout[] currentLayout; + private CharSequence currentText; + + private int oldWidth, oldHeight; + private Integer[] oldLayoutOffsets; + private Integer[] oldLayoutToCurrentIndex; + private StaticLayout[] oldLayout; + private CharSequence oldText; + + private float t = 0; + private boolean moveDown = true; + private ValueAnimator animator; + private CharSequence toSetText; + private boolean toSetTextMoveDown; + + private long animateDelay = 0; + private long animateDuration = 450; + private TimeInterpolator animateInterpolator = CubicBezierInterpolator.EASE_OUT_QUINT; + private float moveAmplitude = 1f; + + private int alpha = 255; + private Rect bounds = new Rect(); + + private boolean splitByWords; + private boolean preserveIndex; + private boolean startFromEnd; + + private Runnable onAnimationFinishListener; + + public AnimatedTextDrawable() { + this(false, false, false); + } + + public AnimatedTextDrawable(boolean splitByWords, boolean preserveIndex, boolean startFromEnd) { + this.splitByWords = splitByWords; + this.preserveIndex = preserveIndex; + this.startFromEnd = startFromEnd; + } + + public void setOnAnimationFinishListener(Runnable listener) { + onAnimationFinishListener = listener; + } + + @Override + public void draw(@NonNull Canvas canvas) { + canvas.save(); + canvas.translate(bounds.left, bounds.top); + int fullWidth = bounds.width(); + int fullHeight = bounds.height(); + if (currentLayout != null && oldLayout != null) { + int width = AndroidUtilities.lerp(oldWidth, currentWidth, t); + int height = AndroidUtilities.lerp(oldHeight, currentHeight, t); + canvas.translate(0, (fullHeight - height) / 2f); + for (int i = 0; i < currentLayout.length; ++i) { + int j = currentLayoutToOldIndex[i]; + float x = currentLayoutOffsets[i], y = 0; + if (j >= 0) { + float oldX = oldLayoutOffsets[j]; + x = AndroidUtilities.lerp(oldX, x, t); + textPaint.setAlpha(alpha); + } else { + y = -textPaint.getTextSize() * moveAmplitude * (1f - t) * (moveDown ? 1f : -1f); + textPaint.setAlpha((int) (alpha * t)); + } + canvas.save(); + int lwidth = j >= 0 ? width : currentWidth; + if (isRTL) { + x = lwidth - x - currentLayout[i].getWidth(); + x -= fullWidth - lwidth; + } + if ((gravity & Gravity.RIGHT) > 0) { + x += fullWidth - lwidth; + } else if ((gravity & Gravity.CENTER_HORIZONTAL) > 0) { + x += (fullWidth - lwidth) / 2f; + } + canvas.translate(x, y); + currentLayout[i].draw(canvas); + canvas.restore(); + } + for (int i = 0; i < oldLayout.length; ++i) { + int j = oldLayoutToCurrentIndex[i]; + if (j >= 0) { + continue; + } + float x = oldLayoutOffsets[i]; + float y = textPaint.getTextSize() * moveAmplitude * t * (moveDown ? 1f : -1f); + textPaint.setAlpha((int) (alpha * (1f - t))); + canvas.save(); + if (isRTL) { + x = oldWidth - x - oldLayout[i].getWidth(); + x -= fullWidth - oldWidth; + } + if ((gravity & Gravity.RIGHT) > 0) { + x += fullWidth - oldWidth; + } else if ((gravity & Gravity.CENTER_HORIZONTAL) > 0) { + x += (fullWidth - oldWidth) / 2f; + } + canvas.translate(x, y); + oldLayout[i].draw(canvas); + canvas.restore(); + } + } else { + canvas.translate(0, (fullHeight - currentHeight) / 2f); + if (currentLayout != null) { + for (int i = 0; i < currentLayout.length; ++i) { + textPaint.setAlpha(alpha); + canvas.save(); + float x = currentLayoutOffsets[i]; + if (isRTL) { + x = currentWidth - x - currentLayout[i].getWidth(); + x -= fullWidth - currentWidth; + } + if ((gravity & Gravity.RIGHT) > 0) { + x += fullWidth - currentWidth; + } else if ((gravity & Gravity.CENTER_HORIZONTAL) > 0) { + x += (fullWidth - currentWidth) / 2f; + } + canvas.translate(x, 0); + currentLayout[i].draw(canvas); + canvas.restore(); + } + } + } + canvas.restore(); + } + + public boolean isAnimating() { + return animator != null && animator.isRunning(); + } + + public void setText(CharSequence text) { + setText(text, true); + } + + public void setText(CharSequence text, boolean animated) { + setText(text, animated, true); + } + + public void setText(CharSequence text, boolean animated, boolean moveDown) { + if (this.currentText == null || text == null) { + animated = false; + } + if (text == null) { + text = ""; + } + if (animated) { + if (isAnimating()) { + toSetText = text; + toSetTextMoveDown = moveDown; + return; + } + + if (text.equals(currentText)) { + return; + } + + oldText = currentText; + currentText = text; + currentLayout = null; + oldLayout = null; + + ArrayList currentLayoutOffsets = new ArrayList<>(); + ArrayList currentLayoutToOldIndex = new ArrayList<>(); + ArrayList currentLayoutList = new ArrayList<>(); + ArrayList oldLayoutOffsets = new ArrayList<>(); + ArrayList oldLayoutToCurrentIndex = new ArrayList<>(); + ArrayList oldLayoutList = new ArrayList<>(); + + currentWidth = currentHeight = 0; + oldWidth = oldHeight = 0; + + // order execution matters + RegionCallback onEqualRegion = (part, from, to) -> { + StaticLayout layout = makeLayout(part, bounds.width() - Math.min(currentWidth, oldWidth)); + oldLayoutToCurrentIndex.add(currentLayoutList.size()); + currentLayoutToOldIndex.add(oldLayoutList.size()); + currentLayoutOffsets.add(currentWidth); + currentLayoutList.add(layout); + oldLayoutOffsets.add(oldWidth); + oldLayoutList.add(layout); + float partWidth = layout.getLineWidth(0); + currentWidth += partWidth; + oldWidth += partWidth; + currentHeight = Math.max(currentHeight, layout.getHeight()); + oldHeight = Math.max(oldHeight, layout.getHeight()); + }; + RegionCallback onNewPart = (part, from, to) -> { + StaticLayout layout = makeLayout(part, bounds.width() - currentWidth); + currentLayoutOffsets.add(currentWidth); + currentLayoutList.add(layout); + currentLayoutToOldIndex.add(-1); + currentWidth += layout.getLineWidth(0); + currentHeight = Math.max(currentHeight, layout.getHeight()); + }; + RegionCallback onOldPart = (part, from, to) -> { + StaticLayout layout = makeLayout(part, bounds.width() - oldWidth); + oldLayoutOffsets.add(oldWidth); + oldLayoutList.add(layout); + oldLayoutToCurrentIndex.add(-1); + oldWidth += layout.getLineWidth(0); + oldHeight = Math.max(oldHeight, layout.getHeight()); + }; + + CharSequence from = splitByWords ? new WordSequence(oldText) : oldText; + CharSequence to = splitByWords ? new WordSequence(currentText) : currentText; + + diff(from, to, onEqualRegion, onNewPart, onOldPart); + + if (this.currentLayout == null || this.currentLayout.length != currentLayoutList.size()) { + this.currentLayout = new StaticLayout[currentLayoutList.size()]; + } + currentLayoutList.toArray(currentLayout); + if (this.currentLayoutOffsets == null || this.currentLayoutOffsets.length != currentLayoutOffsets.size()) { + this.currentLayoutOffsets = new Integer[currentLayoutOffsets.size()]; + } + currentLayoutOffsets.toArray(this.currentLayoutOffsets); + if (this.currentLayoutToOldIndex == null || this.currentLayoutToOldIndex.length != currentLayoutToOldIndex.size()) { + this.currentLayoutToOldIndex = new Integer[currentLayoutToOldIndex.size()]; + } + currentLayoutToOldIndex.toArray(this.currentLayoutToOldIndex); + + if (this.oldLayout == null || this.oldLayout.length != oldLayoutList.size()) { + this.oldLayout = new StaticLayout[oldLayoutList.size()]; + } + oldLayoutList.toArray(oldLayout); + if (this.oldLayoutOffsets == null || this.oldLayoutOffsets.length != oldLayoutOffsets.size()) { + this.oldLayoutOffsets = new Integer[oldLayoutOffsets.size()]; + } + oldLayoutOffsets.toArray(this.oldLayoutOffsets); + if (this.oldLayoutToCurrentIndex == null || this.oldLayoutToCurrentIndex.length != oldLayoutToCurrentIndex.size()) { + this.oldLayoutToCurrentIndex = new Integer[oldLayoutToCurrentIndex.size()]; + } + oldLayoutToCurrentIndex.toArray(this.oldLayoutToCurrentIndex); + + if (this.currentLayout.length > 0) { + isRTL = this.currentLayout[0].isRtlCharAt(0); + } else if (this.oldLayout.length > 0) { + isRTL = this.oldLayout[0].isRtlCharAt(0); + } + + this.moveDown = moveDown; + animator = ValueAnimator.ofFloat(t = 0f, 1f); + animator.addUpdateListener(anm -> { + t = (float) anm.getAnimatedValue(); + invalidateSelf(); + }); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + oldLayout = null; + AnimatedTextDrawable.this.oldLayoutOffsets = null; + AnimatedTextDrawable.this.oldLayoutToCurrentIndex = null; + oldText = null; + oldWidth = 0; + t = 0; + invalidateSelf(); + animator = null; + + if (toSetText != null) { + setText(toSetText, true, toSetTextMoveDown); + toSetText = null; + toSetTextMoveDown = false; + } else if (onAnimationFinishListener != null) { + onAnimationFinishListener.run(); + } + } + }); + animator.setStartDelay(animateDelay); + animator.setDuration(animateDuration); + animator.setInterpolator(animateInterpolator); + animator.start(); + } else { + if (animator != null) { + animator.cancel(); + } + animator = null; + toSetText = null; + toSetTextMoveDown = false; + t = 0; + + currentLayout = new StaticLayout[1]; + currentLayout[0] = makeLayout(currentText = text, bounds.width()); + currentWidth = (int) currentLayout[0].getLineWidth(0); + currentHeight = currentLayout[0].getHeight(); + currentLayoutOffsets = new Integer[1]; + currentLayoutOffsets[0] = 0; + currentLayoutToOldIndex = new Integer[1]; + currentLayoutToOldIndex[0] = -1; + + if (this.currentLayout.length > 0) { + isRTL = this.currentLayout[0].isRtlCharAt(0); + } + + oldLayout = null; + oldLayoutOffsets = null; + oldLayoutToCurrentIndex = null; + oldText = null; + oldWidth = 0; + oldHeight = 0; + + invalidateSelf(); + } + } + + public CharSequence getText() { + return currentText; + } + + public int getWidth() { + return Math.max(currentWidth, oldWidth); + } + + public int getCurrentWidth() { + if (currentLayout != null && oldLayout != null) { + return AndroidUtilities.lerp(oldWidth, currentWidth, t); + } + return currentWidth; + } + + private StaticLayout makeLayout(CharSequence textPart, int width) { + if (width <= 0) { + width = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + return StaticLayout.Builder.obtain(textPart, 0, textPart.length(), textPaint, width) + .setMaxLines(1) + .setLineSpacing(0, 1) + .setAlignment(Layout.Alignment.ALIGN_NORMAL) + .setEllipsize(TextUtils.TruncateAt.END) + .setEllipsizedWidth(width) + .build(); + } + return new StaticLayout( + textPart, + 0, textPart.length(), + textPaint, + width, + Layout.Alignment.ALIGN_NORMAL, + 1, + 0, + false, + TextUtils.TruncateAt.END, + width + ); + } + + private static class WordSequence implements CharSequence { + private static final char SPACE = ' '; + + private CharSequence words[]; + private final int length; + + public WordSequence(CharSequence text) { + if (text == null) { + words = new CharSequence[0]; + length = 0; + return; + } + length = text.length(); + int spacesCount = 0; + for (int i = 0; i < length; ++i) { + if (text.charAt(i) == SPACE) { + spacesCount++; + } + } + int j = 0; + words = new CharSequence[spacesCount + 1]; + int start = 0; + for (int i = 0; i <= length; ++i) { + if (i == length || text.charAt(i) == SPACE) { + words[j++] = text.subSequence(start, i + (i < length ? 1 : 0)); + start = i + 1; + } + } + } + + public WordSequence(CharSequence[] words) { + if (words == null) { + this.words = new CharSequence[0]; + length = 0; + return; + } + this.words = words; + int length = 0; + for (int i = 0; i < this.words.length; ++i) { + if (this.words[i] != null) { + length += this.words[i].length(); + } + } + this.length = length; + } + + public CharSequence wordAt(int i) { + if (i < 0 || i >= words.length) { + return null; + } + return words[i]; + } + + @Override + public int length() { + return words.length; + } + + @Override + public char charAt(int i) { + for (int j = 0; j < words.length; ++j) { + if (i < words[j].length()) + return words[j].charAt(i); + i -= words[j].length(); + } + return 0; + } + + @NonNull + @Override + public CharSequence subSequence(int from, int to) { + return TextUtils.concat(Arrays.copyOfRange(words, from, to)); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < words.length; ++i) { + sb.append(words[i]); + } + return sb.toString(); + } + + public CharSequence toCharSequence() { + return TextUtils.concat(words); + } + + @Override + public IntStream chars() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + return toCharSequence().chars(); + } + return null; + } + + @Override + public IntStream codePoints() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + return toCharSequence().codePoints(); + } + return null; + } + } + + public static boolean partEquals(CharSequence a, CharSequence b, int aIndex, int bIndex) { + if (a instanceof WordSequence && b instanceof WordSequence) { + CharSequence wordA = ((WordSequence) a).wordAt(aIndex); + CharSequence wordB = ((WordSequence) b).wordAt(bIndex); + return wordA == null && wordB == null || wordA != null && wordA.equals(wordB); + } + return (a == null && b == null || a != null && b != null && a.charAt(aIndex) == b.charAt(bIndex)); + } + + private void diff(final CharSequence oldText, final CharSequence newText, RegionCallback onEqualPart, RegionCallback onNewPart, RegionCallback onOldPart) { + if (preserveIndex) { + boolean equal = true; + int start = 0; + int minLength = Math.min(newText.length(), oldText.length()); + if (startFromEnd) { + ArrayList indexes = new ArrayList<>(); + boolean eq = true; + for (int i = 0; i <= minLength; ++i) { + int a = newText.length() - i - 1; + int b = oldText.length() - i - 1; + boolean thisEqual = a >= 0 && b >= 0 && partEquals(newText, oldText, a, b); + if (equal != thisEqual || i == minLength) { + if (i - start > 0) { + if (indexes.size() == 0) { + eq = equal; + } + indexes.add(i - start); + } + equal = thisEqual; + start = i; + } + } + int a = newText.length() - minLength; + int b = oldText.length() - minLength; + if (a > 0) { + onNewPart.run(newText.subSequence(0, a), 0, a); + } + if (b > 0) { + onOldPart.run(oldText.subSequence(0, b), 0, b); + } + for (int i = indexes.size() - 1; i >= 0; --i) { + int count = indexes.get(i); + if (i % 2 == 0 ? eq : !eq) { + if (newText.length() > oldText.length()) { + onEqualPart.run(newText.subSequence(a, a + count), a, a + count); + } else { + onEqualPart.run(oldText.subSequence(b, b + count), b, b + count); + } + } else { + onNewPart.run(newText.subSequence(a, a + count), a, a + count); + onOldPart.run(oldText.subSequence(b, b + count), b, b + count); + } + a += count; + b += count; + } + } else { + for (int i = 0; i <= minLength; ++i) { + boolean thisEqual = i < minLength && partEquals(newText, oldText, i, i); + if (equal != thisEqual || i == minLength) { + if (i - start > 0) { + if (equal) { + onEqualPart.run(newText.subSequence(start, i), start, i); + } else { + onNewPart.run(newText.subSequence(start, i), start, i); + onOldPart.run(oldText.subSequence(start, i), start, i); + } + } + equal = thisEqual; + start = i; + } + } + if (newText.length() - minLength > 0) { + onNewPart.run(newText.subSequence(minLength, newText.length()), minLength, newText.length()); + } + if (oldText.length() - minLength > 0) { + onOldPart.run(oldText.subSequence(minLength, oldText.length()), minLength, oldText.length()); + } + } + } else { + int astart = 0, bstart = 0; + boolean equal = true; + int a = 0, b = 0; + int minLength = Math.min(newText.length(), oldText.length()); + for (; a <= minLength; ++a) { + boolean thisEqual = a < minLength && partEquals(newText, oldText, a, b); + if (equal != thisEqual || a == minLength) { + if (a == minLength) { + a = newText.length(); + b = oldText.length(); + } + int alen = a - astart, blen = b - bstart; + if (alen > 0 || blen > 0) { + if (alen == blen && equal) { + // equal part on [astart, a) + onEqualPart.run(newText.subSequence(astart, a), astart, a); + } else if (!equal) { + if (alen > 0) { + // new part on [astart, a) + onNewPart.run(newText.subSequence(astart, a), astart, a); + } + if (blen > 0) { + // old part on [bstart, b) + onOldPart.run(oldText.subSequence(bstart, b), bstart, b); + } + } + } + equal = thisEqual; + astart = a; + bstart = b; + } + if (thisEqual) { + b++; + } + } + } + } + + public void setTextSize(float textSizePx) { + textPaint.setTextSize(textSizePx); + } + + public void setTextColor(int color) { + textPaint.setColor(color); + } + + public void setTypeface(Typeface typeface) { + textPaint.setTypeface(typeface); + } + + public void setGravity(int gravity) { + this.gravity = gravity; + } + + public void setAnimationProperties(float moveAmplitude, long startDelay, long duration, TimeInterpolator interpolator) { + this.moveAmplitude = moveAmplitude; + animateDelay = startDelay; + animateDuration = duration; + animateInterpolator = interpolator; + } + + public void copyStylesFrom(TextPaint paint) { + setTextColor(paint.getColor()); + setTextSize(paint.getTextSize()); + setTypeface(paint.getTypeface()); + } + + public TextPaint getPaint() { + return textPaint; + } + + private interface RegionCallback { + public void run(CharSequence part, int start, int end); + } + + @Override + public void setAlpha(int alpha) { + this.alpha = alpha; + } + + @Override + public void setColorFilter(@Nullable ColorFilter colorFilter) { + textPaint.setColorFilter(colorFilter); + } + + @Deprecated @Override + public int getOpacity() { + return PixelFormat.TRANSPARENT; + } + + @Override + public void setBounds(@NonNull Rect bounds) { + super.setBounds(bounds); + this.bounds.set(bounds); + } + + @Override + public void setBounds(int left, int top, int right, int bottom) { + super.setBounds(left, top, right, bottom); + this.bounds.set(left, top, right, bottom); + } + } + + private AnimatedTextDrawable drawable; + private int lastMaxWidth; + + private CharSequence toSetText; + private boolean toSetMoveDown; + + public AnimatedTextView(Context context) { + super(context); + drawable = new AnimatedTextDrawable(); + drawable.setCallback(this); + } + + public AnimatedTextView(Context context, boolean splitByWords, boolean preserveIndex, boolean startFromEnd) { + super(context); + drawable = new AnimatedTextDrawable(splitByWords, preserveIndex, startFromEnd); + drawable.setCallback(this); + drawable.setOnAnimationFinishListener(() -> { + if (toSetText != null) { + // wrapped toSetText here to do requestLayout() + AnimatedTextView.this.setText(toSetText, toSetMoveDown, true); + toSetText = null; + toSetMoveDown = false; + } + }); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int width = MeasureSpec.getSize(widthMeasureSpec); + int height = MeasureSpec.getSize(heightMeasureSpec); + if (lastMaxWidth != width) { + drawable.setBounds(getPaddingLeft(), getPaddingTop(), width - getPaddingRight(), height - getPaddingBottom()); + setText(drawable.getText(), false); + } + lastMaxWidth = width; + if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.AT_MOST) { + width = getPaddingLeft() + drawable.getWidth() + getPaddingRight(); + } + setMeasuredDimension(width, height); + } + + @Override + protected void onDraw(Canvas canvas) { + drawable.setBounds(getPaddingLeft(), getPaddingTop(), getMeasuredWidth() - getPaddingRight(), getMeasuredHeight() - getPaddingBottom()); + drawable.draw(canvas); + } + + public void setText(CharSequence text) { + setText(text, true, true); + } + + public void setText(CharSequence text, boolean animated) { + setText(text, animated, true); + } + + private boolean first = true; + public void setText(CharSequence text, boolean animated, boolean moveDown) { + animated = !first && animated; + first = false; + if (animated && drawable.isAnimating()) { + toSetText = text; + toSetMoveDown = moveDown; + return; + } + int wasWidth = drawable.getWidth(); + drawable.setBounds(getPaddingLeft(), getPaddingTop(), lastMaxWidth - getPaddingRight(), getMeasuredHeight() - getPaddingBottom()); + drawable.setText(text, animated, moveDown); + if (wasWidth < drawable.getWidth()) { + requestLayout(); + } + } + + public CharSequence getText() { + return drawable.getText(); + } + + public void setTextSize(float textSizePx) { + drawable.setTextSize(textSizePx); + } + + public void setTextColor(int color) { + drawable.setTextColor(color); + } + + public void setTypeface(Typeface typeface) { + drawable.setTypeface(typeface); + } + + public void setGravity(int gravity) { + drawable.setGravity(gravity); + } + + public void setAnimationProperties(float moveAmplitude, long startDelay, long duration, TimeInterpolator interpolator) { + drawable.setAnimationProperties(moveAmplitude, startDelay, duration, interpolator); + } + + public TextPaint getPaint() { + return drawable.getPaint(); + } + + @Override + public void invalidateDrawable(@NonNull Drawable drawable) { + super.invalidateDrawable(drawable); + invalidate(); + } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName("android.widget.TextView"); + info.setText(getText()); + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AppIconBulletinLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AppIconBulletinLayout.java new file mode 100644 index 000000000..7c03890e4 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AppIconBulletinLayout.java @@ -0,0 +1,43 @@ +package org.telegram.ui.Components; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Typeface; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Cells.AppIconsSelectorCell; +import org.telegram.ui.LauncherIconController; + +@SuppressLint("ViewConstructor") +public class AppIconBulletinLayout extends Bulletin.ButtonLayout { + + public final AppIconsSelectorCell.AdaptiveIconImageView imageView = new AppIconsSelectorCell.AdaptiveIconImageView(getContext()); + public final TextView textView = new TextView(getContext()); + + public AppIconBulletinLayout(@NonNull Context context, LauncherIconController.LauncherIcon icon, Theme.ResourcesProvider resourcesProvider) { + super(context, resourcesProvider); + addView(imageView, LayoutHelper.createFrameRelatively(30, 30, Gravity.START | Gravity.CENTER_VERTICAL, 12, 8, 12, 8)); + + textView.setGravity(Gravity.START); + textView.setPadding(0, AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8)); + textView.setTextColor(getThemedColor(Theme.key_undo_infoColor)); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + textView.setTypeface(Typeface.SANS_SERIF); + addView(textView, LayoutHelper.createFrameRelatively(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 56, 0, 16, 0)); + + imageView.setImageDrawable(ContextCompat.getDrawable(context, icon.background)); + imageView.setOuterPadding(AndroidUtilities.dp(8)); + imageView.setBackgroundOuterPadding(AndroidUtilities.dp(24)); + imageView.setForeground(icon.foreground); + textView.setText(AndroidUtilities.replaceTags(LocaleController.formatString(R.string.AppIconChangedTo, LocaleController.getString(icon.title)))); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AudioPlayerAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AudioPlayerAlert.java index 00bfb5a84..599f26973 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AudioPlayerAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AudioPlayerAlert.java @@ -229,6 +229,7 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. public AudioPlayerAlert(final Context context, Theme.ResourcesProvider resourcesProvider) { super(context, true, resourcesProvider); + fixNavigationBar(); MessageObject messageObject = MediaController.getInstance().getPlayingMessageObject(); if (messageObject != null) { @@ -1217,6 +1218,36 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. updateEmptyView(); } + @Override + public int getContainerViewHeight() { + if (playerLayout == null) { + return 0; + } + if (playlist.size() <= 1) { + return playerLayout.getMeasuredHeight() + backgroundPaddingTop; + } else { + int offset = AndroidUtilities.dp(13); + int top = scrollOffsetY - backgroundPaddingTop - offset; + if (currentSheetAnimationType == 1) { + top += listView.getTranslationY(); + } + if (top + backgroundPaddingTop < ActionBar.getCurrentActionBarHeight()) { + float toMove = offset + AndroidUtilities.dp(11 - 7); + float moveProgress = Math.min(1.0f, (ActionBar.getCurrentActionBarHeight() - top - backgroundPaddingTop) / toMove); + float availableToMove = ActionBar.getCurrentActionBarHeight() - toMove; + + int diff = (int) (availableToMove * moveProgress); + top -= diff; + } + + if (Build.VERSION.SDK_INT >= 21) { + top += AndroidUtilities.statusBarHeight; + } + + return container.getMeasuredHeight() - top; + } + } + private void startForwardRewindingSeek() { if (rewindingState == 1) { lastRewindingTime = System.currentTimeMillis(); @@ -1403,7 +1434,7 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. } } if (f == null) { - f = FileLoader.getPathToMessage(messageObject.messageOwner); + f = FileLoader.getInstance(currentAccount).getPathToMessage(messageObject.messageOwner); } if (f.exists()) { @@ -1471,7 +1502,7 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. } } if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(messageObject.messageOwner).toString(); + path = FileLoader.getInstance(currentAccount).getPathToMessage(messageObject.messageOwner).toString(); } MediaController.saveFile(path, parentActivity, 3, fileName, messageObject.getDocument() != null ? messageObject.getDocument().mime_type : "", () -> BulletinFactory.of((FrameLayout) containerView, resourcesProvider).createDownloadBulletin(BulletinFactory.FileType.AUDIO).show()); } @@ -1836,7 +1867,7 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. } } if (cacheFile == null) { - cacheFile = FileLoader.getPathToMessage(messageObject.messageOwner); + cacheFile = FileLoader.getInstance(currentAccount).getPathToMessage(messageObject.messageOwner); } boolean canStream = SharedConfig.streamMedia && (int) messageObject.getDialogId() != 0 && messageObject.isMusic(); if (!cacheFile.exists() && !canStream) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AutoDeletePopupWrapper.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AutoDeletePopupWrapper.java index b526a38b4..2704d6bdf 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AutoDeletePopupWrapper.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AutoDeletePopupWrapper.java @@ -52,7 +52,7 @@ public class AutoDeletePopupWrapper { item = ActionBarMenuItem.addItem(windowLayout, R.drawable.msg_customize, LocaleController.getString("AutoDeleteCustom", R.string.AutoDeleteCustom), false, resourcesProvider); item.setOnClickListener(view -> { dismiss(); - AlertsCreator.createAutoDeleteDatePickerDialog(context, (notify, timeInMinutes) -> { + AlertsCreator.createAutoDeleteDatePickerDialog(context, resourcesProvider, (notify, timeInMinutes) -> { callback.setAutoDeleteHistory(timeInMinutes * 60, timeInMinutes == 0 ? UndoView.ACTION_AUTO_DELETE_OFF : UndoView.ACTION_AUTO_DELETE_ON); }); }); @@ -63,9 +63,8 @@ public class AutoDeletePopupWrapper { }); disableItem.setColors(Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogTextRed2)); - View gap = new FrameLayout(context); - gap.setBackgroundColor(Theme.getColor(Theme.key_graySection)); + gap.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuSeparator, resourcesProvider)); gap.setTag(R.id.fit_width_tag, 1); windowLayout.addView(gap, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AvatarDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AvatarDrawable.java index 7efc2af4d..0a98108f8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AvatarDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AvatarDrawable.java @@ -120,24 +120,24 @@ public class AvatarDrawable extends Drawable { return Theme.getColor(Theme.keys_avatar_background[getColorIndex(id)]); } - public static int getButtonColorForId(long id) { - return Theme.getColor(Theme.key_avatar_actionBarSelectorBlue); + public static int getButtonColorForId(long id, Theme.ResourcesProvider resourcesProvider) { + return Theme.getColor(Theme.key_avatar_actionBarSelectorBlue, resourcesProvider); } - public static int getIconColorForId(long id) { - return Theme.getColor(Theme.key_avatar_actionBarIconBlue); + public static int getIconColorForId(long id, Theme.ResourcesProvider resourcesProvider) { + return Theme.getColor(Theme.key_avatar_actionBarIconBlue, resourcesProvider); } - public static int getProfileColorForId(long id) { - return Theme.getColor(Theme.keys_avatar_background[getColorIndex(id)]); + public static int getProfileColorForId(long id, Theme.ResourcesProvider resourcesProvider) { + return Theme.getColor(Theme.keys_avatar_background[getColorIndex(id)], resourcesProvider); } - public static int getProfileTextColorForId(long id) { - return Theme.getColor(Theme.key_avatar_subtitleInProfileBlue); + public static int getProfileTextColorForId(long id, Theme.ResourcesProvider resourcesProvider) { + return Theme.getColor(Theme.key_avatar_subtitleInProfileBlue, resourcesProvider); } - public static int getProfileBackColorForId(long id) { - return Theme.getColor(Theme.key_avatar_backgroundActionBarBlue); + public static int getProfileBackColorForId(long id, Theme.ResourcesProvider resourcesProvider) { + return Theme.getColor(Theme.key_avatar_backgroundActionBarBlue, resourcesProvider); } public static String getNameColorNameForId(long id) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BackButtonMenu.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BackButtonMenu.java index e89baa748..132777900 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BackButtonMenu.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BackButtonMenu.java @@ -42,7 +42,7 @@ public class BackButtonMenu { int filterId; } - public static ActionBarPopupWindow show(BaseFragment thisFragment, View backButton, long currentDialogId) { + public static ActionBarPopupWindow show(BaseFragment thisFragment, View backButton, long currentDialogId, Theme.ResourcesProvider resourcesProvider) { if (thisFragment == null) { return null; } @@ -57,11 +57,11 @@ public class BackButtonMenu { return null; } - ActionBarPopupWindow.ActionBarPopupWindowLayout layout = new ActionBarPopupWindow.ActionBarPopupWindowLayout(context); + ActionBarPopupWindow.ActionBarPopupWindowLayout layout = new ActionBarPopupWindow.ActionBarPopupWindowLayout(context, resourcesProvider); android.graphics.Rect backgroundPaddings = new Rect(); Drawable shadowDrawable = thisFragment.getParentActivity().getResources().getDrawable(R.drawable.popup_fixed_alert).mutate(); shadowDrawable.getPadding(backgroundPaddings); - layout.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground)); + layout.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground, resourcesProvider)); AtomicReference scrimPopupWindowRef = new AtomicReference<>(); @@ -79,18 +79,25 @@ public class BackButtonMenu { TextView titleView = new TextView(context); titleView.setLines(1); titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - titleView.setTextColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem)); + titleView.setTextColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem, resourcesProvider)); titleView.setEllipsize(TextUtils.TruncateAt.END); cell.addView(titleView, LayoutHelper.createFrameRelatively(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 59, 0, 12, 0)); AvatarDrawable avatarDrawable = new AvatarDrawable(); avatarDrawable.setSmallSize(true); + Drawable thumb = avatarDrawable; if (chat != null) { avatarDrawable.setInfo(chat); - imageView.setImage(ImageLocation.getForChat(chat, ImageLocation.TYPE_SMALL), "50_50", avatarDrawable, chat); + if (chat.photo != null && chat.photo.strippedBitmap != null) { + thumb = chat.photo.strippedBitmap; + } + imageView.setImage(ImageLocation.getForChat(chat, ImageLocation.TYPE_SMALL), "50_50", thumb, chat); titleView.setText(chat.title); } else if (user != null) { String name; + if (user.photo != null && user.photo.strippedBitmap != null) { + thumb = user.photo.strippedBitmap; + } if (pDialog.activity == ChatActivity.class && UserObject.isUserSelf(user)) { name = LocaleController.getString("SavedMessages", R.string.SavedMessages); avatarDrawable.setAvatarType(AvatarDrawable.AVATAR_TYPE_SAVED); @@ -106,12 +113,12 @@ public class BackButtonMenu { } else { name = UserObject.getUserName(user); avatarDrawable.setInfo(user); - imageView.setImage(ImageLocation.getForUser(user, ImageLocation.TYPE_SMALL), "50_50", avatarDrawable, user); + imageView.setImage(ImageLocation.getForUser(user, ImageLocation.TYPE_SMALL), "50_50", thumb, user); } titleView.setText(name); } - cell.setBackground(Theme.getSelectorDrawable(Theme.getColor(Theme.key_listSelector), false)); + cell.setBackground(Theme.getSelectorDrawable(Theme.getColor(Theme.key_listSelector, resourcesProvider), false)); cell.setOnClickListener(e2 -> { if (scrimPopupWindowRef.get() != null) { scrimPopupWindowRef.getAndSet(null).dismiss(); @@ -175,9 +182,9 @@ public class BackButtonMenu { int popupY = (int) (backButton.getBottom() - backgroundPaddings.top - AndroidUtilities.dp(8)); scrimPopupWindow.showAtLocation(fragmentView, Gravity.LEFT | Gravity.TOP, popupX, popupY); - try { - fragmentView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); - } catch (Exception ignore) {} +// try { +// fragmentView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); +// } catch (Exception ignore) {} return scrimPopupWindow; } @@ -270,7 +277,9 @@ public class BackButtonMenu { } } if (pulledDialogs != null) { - for (PulledDialog pulledDialog : pulledDialogs) { + int count = pulledDialogs.size(); + for (int i = count - 1; i >= 0; --i) { + PulledDialog pulledDialog = pulledDialogs.get(i); if (pulledDialog.dialogId == ignoreDialogId) { continue; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BackupImageView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BackupImageView.java index 00d5713c5..43df9789c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BackupImageView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BackupImageView.java @@ -105,7 +105,7 @@ public class BackupImageView extends View { imageReceiver.setImage(imageLocation, imageFilter, thumbLocation, thumbFilter, thumb, size, ext, parentObject, 0); } - public void setImage(ImageLocation imageLocation, String imageFilter, ImageLocation thumbLocation, String thumbFilter, String ext, int size, int cacheType, Object parentObject) { + public void setImage(ImageLocation imageLocation, String imageFilter, ImageLocation thumbLocation, String thumbFilter, String ext, long size, int cacheType, Object parentObject) { imageReceiver.setImage(imageLocation, imageFilter, thumbLocation, thumbFilter, null, size, ext, parentObject, cacheType); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BlockingUpdateView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BlockingUpdateView.java index 022aaab51..b796034eb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BlockingUpdateView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BlockingUpdateView.java @@ -13,8 +13,6 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.net.Uri; import android.os.Build; -import android.provider.Settings; -import androidx.core.content.FileProvider; import android.text.SpannableStringBuilder; import android.util.TypedValue; import android.view.Gravity; @@ -25,7 +23,7 @@ import android.widget.ImageView; import android.widget.ScrollView; import android.widget.TextView; -import com.google.android.exoplayer2.util.Log; +import androidx.core.content.FileProvider; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; @@ -37,10 +35,10 @@ import org.telegram.messenger.MessageObject; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; +import org.telegram.messenger.UserConfig; import org.telegram.messenger.browser.Browser; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; -import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.voip.CellFlickerDrawable; @@ -129,7 +127,7 @@ public class BlockingUpdateView extends FrameLayout implements NotificationCente } cellFlickerDrawable.setParentWidth(getMeasuredWidth()); AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); - cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(4)); + cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(4), null); invalidate(); } @@ -144,7 +142,7 @@ public class BlockingUpdateView extends FrameLayout implements NotificationCente } }; acceptButton.setPadding(AndroidUtilities.dp(34), 0, AndroidUtilities.dp(34), 0); - acceptButton.setBackgroundDrawable(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + acceptButton.setBackgroundDrawable(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); acceptButton.setPadding(AndroidUtilities.dp(34), 0, AndroidUtilities.dp(34), 0); addView(acceptButton, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, 46, Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM, 0, 0, 0, 45)); acceptButton.setOnClickListener(view1 -> { @@ -242,7 +240,7 @@ public class BlockingUpdateView extends FrameLayout implements NotificationCente boolean exists = false; try { String fileName = FileLoader.getAttachFileName(document); - File f = FileLoader.getPathToAttach(document, true); + File f = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true); if (exists = f.exists()) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotCommandsMenuView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotCommandsMenuView.java index 1ca563deb..b3636f36a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotCommandsMenuView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotCommandsMenuView.java @@ -79,6 +79,7 @@ public class BotCommandsMenuView extends View { backDrawable.setRoundCap(); backgroundDrawable = Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(16), Color.TRANSPARENT, Theme.getColor(Theme.key_featuredStickers_addButtonPressed)); backgroundDrawable.setCallback(this); + setContentDescription(LocaleController.getString("AccDescrBotMenu", R.string.AccDescrBotMenu)); } public void setDrawBackgroundDrawable(boolean drawBackgroundDrawable) { @@ -205,13 +206,15 @@ public class BotCommandsMenuView extends View { } - public void setMenuText(String menuText) { + public boolean setMenuText(String menuText) { if (menuText == null) { menuText = LocaleController.getString(R.string.BotsMenuTitle); } + boolean changed = this.menuText == null || !this.menuText.equals(menuText); this.menuText = menuText; menuTextLayout = null; requestLayout(); + return changed; } public void setExpanded(boolean expanded, boolean animated) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewContainer.java index 430eb4781..2a84f4436 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewContainer.java @@ -22,6 +22,7 @@ import android.os.Build; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; +import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.webkit.GeolocationPermissions; @@ -45,6 +46,7 @@ import org.json.JSONException; import org.json.JSONObject; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.BotWebViewVibrationEffect; import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; @@ -57,8 +59,10 @@ import org.telegram.messenger.SvgHelper; import org.telegram.messenger.UserObject; import org.telegram.messenger.browser.Browser; import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.ActionBarMenuSubItem; import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.voip.CellFlickerDrawable; @@ -71,7 +75,6 @@ import java.util.List; import java.util.Objects; public class BotWebViewContainer extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { - private final static boolean WEB_VIEW_CAN_GO_BACK = false; private final static String DURGER_KING_USERNAME = "DurgerKingBot"; private final static int REQUEST_CODE_WEB_VIEW_FILE = 3000, REQUEST_CODE_WEB_PERMISSION = 4000; @@ -99,8 +102,13 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent private String lastButtonText = ""; private String buttonData; + private int currentAccount; private boolean isPageLoaded; private boolean lastExpanded; + private boolean isRequestingPageOpen; + private long lastClickMs; + + private boolean isBackButtonVisible; private boolean hasUserPermissions; private TLRPC.User botUser; @@ -110,6 +118,8 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent private boolean isViewPortByMeasureSuppressed; + private String currentPaymentSlug; + public BotWebViewContainer(@NonNull Context context, Theme.ResourcesProvider resourcesProvider, int backgroundColor) { super(context); this.resourcesProvider = resourcesProvider; @@ -230,6 +240,15 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY)); } + + @SuppressLint("ClickableViewAccessibility") + @Override + public boolean onTouchEvent(MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + lastClickMs = System.currentTimeMillis(); + } + return super.onTouchEvent(event); + } }; webView.setBackgroundColor(getColor(Theme.key_windowBackgroundWhite)); WebSettings settings = webView.getSettings(); @@ -256,31 +275,7 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent override = true; if (WHITELISTED_SCHEMES.contains(uriNew.getScheme())) { - boolean[] forceBrowser = {false}; - boolean internal = Browser.isInternalUri(uriNew, forceBrowser); - - if (internal) { - if (delegate != null) { - setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS); - BotWebViewContainer.this.setFocusable(false); - webView.setFocusable(false); - webView.setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS); - webView.clearFocus(); - InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); - - delegate.onCloseRequested(()-> Browser.openUrl(getContext(), uriNew, true, false)); - } else { - Browser.openUrl(getContext(), uriNew, true, false); - } - } else { - new AlertDialog.Builder(getContext(), resourcesProvider) - .setTitle(LocaleController.getString(R.string.OpenUrlTitle)) - .setMessage(LocaleController.formatString(R.string.OpenUrlAlert2, uriNew.toString())) - .setPositiveButton(LocaleController.getString(R.string.Open), (dialog, which) -> Browser.openUrl(getContext(), uriNew, true, false)) - .setNegativeButton(LocaleController.getString(R.string.Cancel), null) - .show(); - } + onOpenUri(uriNew); } } else { override = false; @@ -446,6 +441,47 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent } } + private void onOpenUri(Uri uri) { + onOpenUri(uri, false); + } + + private void onOpenUri(Uri uri, boolean suppressPopup) { + if (isRequestingPageOpen || System.currentTimeMillis() - lastClickMs > 10000 && suppressPopup) { + return; + } + + lastClickMs = 0; + boolean[] forceBrowser = {false}; + boolean internal = Browser.isInternalUri(uri, forceBrowser); + + if (internal && !forceBrowser[0]) { + if (delegate != null) { + setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS); + BotWebViewContainer.this.setFocusable(false); + webView.setFocusable(false); + webView.setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS); + webView.clearFocus(); + InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); + + delegate.onCloseRequested(() -> Browser.openUrl(getContext(), uri, true, false)); + } else { + Browser.openUrl(getContext(), uri, true, false); + } + } else if (suppressPopup) { + Browser.openUrl(getContext(), uri, true, false); + } else { + isRequestingPageOpen = true; + new AlertDialog.Builder(getContext(), resourcesProvider) + .setTitle(LocaleController.getString(R.string.OpenUrlTitle)) + .setMessage(LocaleController.formatString(R.string.OpenUrlAlert2, uri.toString())) + .setPositiveButton(LocaleController.getString(R.string.Open), (dialog, which) -> Browser.openUrl(getContext(), uri, true, false)) + .setNegativeButton(LocaleController.getString(R.string.Cancel), null) + .setOnDismissListener(dialog -> isRequestingPageOpen = false) + .show(); + } + } + public static int getMainButtonRippleColor(int buttonColor) { return ColorUtils.calculateLuminance(buttonColor) >= 0.3f ? 0x12000000 : 0x16FFFFFF; } @@ -462,15 +498,11 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent * @return If this press was consumed */ public boolean onBackPressed() { - if (!WEB_VIEW_CAN_GO_BACK) { - return false; - } - if (webView == null) { return false; } - if (webView.canGoBack()) { - webView.goBack(); + if (isBackButtonVisible) { + notifyEvent("back_button_pressed", null); return true; } return false; @@ -546,8 +578,33 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent } } + public void onInvoiceStatusUpdate(String slug, String status) { + onInvoiceStatusUpdate(slug, status, false); + } + + public void onInvoiceStatusUpdate(String slug, String status, boolean ignoreCurrentCheck) { + try { + JSONObject data = new JSONObject(); + data.put("slug", slug); + data.put("status", status); + notifyEvent("invoice_closed", data); + + if (!ignoreCurrentCheck && Objects.equals(currentPaymentSlug, slug)) { + currentPaymentSlug = null; + } + } catch (JSONException e) { + FileLog.e(e); + } + } + + public void onSettingsButtonPressed() { + lastClickMs = System.currentTimeMillis(); + notifyEvent("settings_button_pressed", null); + } + public void onMainButtonPressed() { - evaluateJs("window.Telegram.WebView.receiveEvent('main_button_pressed', null);"); + lastClickMs = System.currentTimeMillis(); + notifyEvent("main_button_pressed", null); } public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { @@ -609,7 +666,7 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent data.put("height", viewPortHeight / AndroidUtilities.density); data.put("is_state_stable", isStable); data.put("is_expanded", lastExpanded); - evaluateJs("window.Telegram.WebView.receiveEvent('viewport_changed', " + data + ");"); + notifyEvent("viewport_changed", data); } catch (JSONException e) { e.printStackTrace(); } @@ -630,7 +687,7 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent } AndroidUtilities.rectTmp.set(0, 0, getWidth(), getHeight()); - flickerDrawable.draw(canvas, AndroidUtilities.rectTmp, 0); + flickerDrawable.draw(canvas, AndroidUtilities.rectTmp, 0, this); invalidate(); return draw; } @@ -660,7 +717,7 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent return webView; } - public void loadFlicker(int currentAccount, long botId) { + public void loadFlickerAndSettingsItem(int currentAccount, long botId, ActionBarMenuSubItem settingsItem) { TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(botId); if (user.username != null && Objects.equals(user.username, DURGER_KING_USERNAME)) { flickerView.setVisibility(VISIBLE); @@ -691,6 +748,10 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent flickerView.setImage(ImageLocation.getForDocument(botIcon.icon), null, (Drawable) null, cachedBot); setupFlickerParams(center); } + + if (settingsItem != null) { + settingsItem.setVisibility(cachedBot.has_settings ? VISIBLE : GONE); + } } else { TLRPC.TL_messages_getAttachMenuBot req = new TLRPC.TL_messages_getAttachMenuBot(); req.bot = MessagesController.getInstance(currentAccount).getInputUser(botId); @@ -710,6 +771,12 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent flickerView.setImage(ImageLocation.getForDocument(botIcon.icon), null, (Drawable) null, bot); setupFlickerParams(center); } + + if (settingsItem != null) { + settingsItem.setVisibility(bot.has_settings ? VISIBLE : GONE); + } + } else if (settingsItem != null) { + settingsItem.setVisibility(GONE); } })); } @@ -733,16 +800,19 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent checkCreateWebView(); isPageLoaded = false; + lastClickMs = 0; hasUserPermissions = false; if (webView != null) { webView.reload(); } } - public void loadUrl(String url) { + public void loadUrl(int currentAccount, String url) { checkCreateWebView(); + this.currentAccount = currentAccount; isPageLoaded = false; + lastClickMs = 0; hasUserPermissions = false; mUrl = url; if (webView != null) { @@ -770,10 +840,17 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent public void destroyWebView() { if (webView != null) { + if (webView.getParent() != null) { + removeView(webView); + } webView.destroy(); } } + public boolean isBackButtonVisible() { + return isBackButtonVisible; + } + @SuppressWarnings("deprecation") public void evaluateJs(String script) { checkCreateWebView(); @@ -808,7 +885,11 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent } private void notifyThemeChanged() { - evaluateJs("window.Telegram.WebView.receiveEvent('theme_changed', {theme_params: " + buildThemeParams() + "});"); + notifyEvent("theme_changed", buildThemeParams()); + } + + private void notifyEvent(String event, JSONObject eventData) { + evaluateJs("window.Telegram.WebView.receiveEvent('" + event + "', " + eventData + ");"); } public void setWebViewScrollListener(WebViewScrollListener webViewScrollListener) { @@ -828,6 +909,38 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent delegate.onCloseRequested(null); break; } + case "web_app_set_background_color": { + try { + JSONObject jsonObject = new JSONObject(eventData); + delegate.onWebAppSetBackgroundColor(Color.parseColor(jsonObject.optString("color")) | 0xFF000000); + } catch (JSONException e) { + FileLog.e(e); + } + break; + } + case "web_app_set_header_color": { + try { + JSONObject jsonObject = new JSONObject(eventData); + String key = jsonObject.getString("color_key"); + String themeKey = null; + switch (key) { + case "bg_color": { + themeKey = Theme.key_windowBackgroundWhite; + break; + } + case "secondary_bg_color": { + themeKey = Theme.key_windowBackgroundGray; + break; + } + } + if (themeKey != null) { + delegate.onWebAppSetActionBarColor(themeKey); + } + } catch (JSONException e) { + FileLog.e(e); + } + break; + } case "web_app_data_send": { try { JSONObject jsonData = new JSONObject(eventData); @@ -837,6 +950,140 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent } break; } + case "web_app_trigger_haptic_feedback": { + try { + JSONObject jsonData = new JSONObject(eventData); + String type = jsonData.optString("type"); + + BotWebViewVibrationEffect vibrationEffect = null; + switch (type) { + case "impact": { + switch (jsonData.optString("impact_style")) { + case "light": { + vibrationEffect = BotWebViewVibrationEffect.IMPACT_LIGHT; + break; + } + case "medium": { + vibrationEffect = BotWebViewVibrationEffect.IMPACT_MEDIUM; + break; + } + case "heavy": { + vibrationEffect = BotWebViewVibrationEffect.IMPACT_HEAVY; + break; + } + case "rigid": { + vibrationEffect = BotWebViewVibrationEffect.IMPACT_RIGID; + break; + } + case "soft": { + vibrationEffect = BotWebViewVibrationEffect.IMPACT_SOFT; + break; + } + } + break; + } + case "notification": { + switch (jsonData.optString("notification_type")) { + case "error": { + vibrationEffect = BotWebViewVibrationEffect.NOTIFICATION_ERROR; + break; + } + case "success": { + vibrationEffect = BotWebViewVibrationEffect.NOTIFICATION_SUCCESS; + break; + } + case "warning": { + vibrationEffect = BotWebViewVibrationEffect.NOTIFICATION_WARNING; + break; + } + } + break; + } + case "selection_change": { + vibrationEffect = BotWebViewVibrationEffect.SELECTION_CHANGE; + break; + } + } + if (vibrationEffect != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + AndroidUtilities.getVibrator().vibrate(vibrationEffect.getVibrationEffectForOreo()); + } else { + AndroidUtilities.getVibrator().vibrate(vibrationEffect.fallbackTimings, -1); + } + } + } catch (Exception e) { + FileLog.e(e); + } + break; + } + case "web_app_open_link": { + try { + JSONObject jsonData = new JSONObject(eventData); + Uri uri = Uri.parse(jsonData.optString("url")); + if (WHITELISTED_SCHEMES.contains(uri.getScheme())) { + onOpenUri(uri, true); + } + } catch (Exception e) { + FileLog.e(e); + } + break; + } + case "web_app_open_tg_link": { + try { + JSONObject jsonData = new JSONObject(eventData); + String pathFull = jsonData.optString("path_full"); + if (pathFull.startsWith("/")) { + pathFull = pathFull.substring(1); + } + onOpenUri(Uri.parse("https://t.me/" + pathFull)); + } catch (JSONException e) { + FileLog.e(e); + } + break; + } + case "web_app_setup_back_button": { + try { + JSONObject jsonData = new JSONObject(eventData); + boolean newVisible = jsonData.optBoolean("is_visible"); + if (newVisible != isBackButtonVisible) { + isBackButtonVisible = newVisible; + + delegate.onSetBackButtonVisible(isBackButtonVisible); + } + } catch (JSONException e) { + FileLog.e(e); + } + break; + } + case "web_app_open_invoice": { + try { + JSONObject jsonData = new JSONObject(eventData); + String slug = jsonData.optString("slug"); + + if (currentPaymentSlug != null) { + onInvoiceStatusUpdate(slug, "cancelled", true); + break; + } + + currentPaymentSlug = slug; + + TLRPC.TL_payments_getPaymentForm req = new TLRPC.TL_payments_getPaymentForm(); + TLRPC.TL_inputInvoiceSlug invoiceSlug = new TLRPC.TL_inputInvoiceSlug(); + invoiceSlug.slug = slug; + req.invoice = invoiceSlug; + + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + if (error != null) { + onInvoiceStatusUpdate(slug, "failed"); + } else { + delegate.onWebAppOpenInvoice(slug, response); + } + })); + } catch (JSONException e) { + FileLog.e(e); + } + break; + } case "web_app_expand": { delegate.onWebAppExpand(); break; @@ -878,19 +1125,20 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent } } - private String buildThemeParams() { + private JSONObject buildThemeParams() { try { JSONObject object = new JSONObject(); object.put("bg_color", formatColor(Theme.key_windowBackgroundWhite)); + object.put("secondary_bg_color", formatColor(Theme.key_windowBackgroundGray)); object.put("text_color", formatColor(Theme.key_windowBackgroundWhiteBlackText)); object.put("hint_color", formatColor(Theme.key_windowBackgroundWhiteHintText)); object.put("link_color", formatColor(Theme.key_windowBackgroundWhiteLinkText)); object.put("button_color", formatColor(Theme.key_featuredStickers_addButton)); object.put("button_text_color", formatColor(Theme.key_featuredStickers_buttonText)); - return object.toString(); + return new JSONObject().put("theme_params", object); } catch (Exception e) { FileLog.e(e); - return "{}"; + return new JSONObject(); } } @@ -946,16 +1194,43 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent */ default void onSendWebViewData(String data) {} + /** + * Called when WebView requests to set action bar color + * + * @param colorKey Color theme key + */ + void onWebAppSetActionBarColor(String colorKey); + + /** + * Called when WebView requests to set background color + * + * @param color New color + */ + void onWebAppSetBackgroundColor(int color); + /** * Called when WebView requests to expand viewport */ void onWebAppExpand(); + /** + * Called when web app attempts to open invoice + * + * @param slug Invoice slug for the form + * @param response Payment request response + */ + void onWebAppOpenInvoice(String slug, TLObject response); + /** * Setups main button */ void onSetupMainButton(boolean isVisible, boolean isActive, String text, int color, int textColor, boolean isProgressVisible); + /** + * Sets back button enabled and visible + */ + void onSetBackButtonVisible(boolean visible); + /** * Called when WebView is ready (Called web_app_ready or page load finished) */ diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewMenuContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewMenuContainer.java index 0ced05bc3..a8631ddfe 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewMenuContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewMenuContainer.java @@ -29,13 +29,17 @@ import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; +import org.telegram.ui.ActionBar.ActionBarMenuSubItem; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ChatActivity; +import org.telegram.ui.PaymentFormActivity; +import java.util.Locale; import java.util.Objects; public class BotWebViewMenuContainer extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { @@ -59,6 +63,7 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification private Paint dimPaint = new Paint(); private Paint backgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private Paint actionBarPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private Paint linePaint = new Paint(); private ChatActivityEnterView parentEnterView; @@ -79,11 +84,18 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification private ActionBarMenuItem botMenuItem; private ActionBar.ActionBarMenuOnItemClick actionBarOnItemClick; + private ActionBarMenuSubItem settingsItem; private Editable savedEditText; private MessageObject savedReplyMessageObject; private MessageObject savedEditMessageObject; + private Runnable globalOnDismissListener; + + private float overrideActionBarBackgroundProgress; + private int overrideActionBarBackground; + private boolean overrideBackgroundColor; + private Runnable pollRunnable = () -> { if (!dismissed) { TLRPC.TL_messages_prolongWebView prolongWebView = new TLRPC.TL_messages_prolongWebView(); @@ -125,6 +137,43 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification dismiss(callback); } + @Override + public void onWebAppSetActionBarColor(String colorKey) { + int from = overrideActionBarBackground; + int to = getColor(colorKey); + + if (from == 0) { + overrideActionBarBackground = to; + } + + ValueAnimator animator = ValueAnimator.ofFloat(0, 1).setDuration(200); + animator.setInterpolator(CubicBezierInterpolator.DEFAULT); + animator.addUpdateListener(animation -> { + if (from != 0) { + overrideActionBarBackground = ColorUtils.blendARGB(from, to, (float) animation.getAnimatedValue()); + } else { + overrideActionBarBackgroundProgress = (float) animation.getAnimatedValue(); + } + actionBarPaint.setColor(overrideActionBarBackground); + invalidateActionBar(); + }); + animator.start(); + } + + @Override + public void onWebAppSetBackgroundColor(int color) { + overrideBackgroundColor = true; + + int from = backgroundPaint.getColor(); + ValueAnimator animator = ValueAnimator.ofFloat(0, 1).setDuration(200); + animator.setInterpolator(CubicBezierInterpolator.DEFAULT); + animator.addUpdateListener(animation -> { + backgroundPaint.setColor(ColorUtils.blendARGB(from, color, (Float) animation.getAnimatedValue())); + BotWebViewMenuContainer.this.invalidate(); + }); + animator.start(); + } + @Override public void onWebAppExpand() { if (/* System.currentTimeMillis() - lastSwipeTime <= 1000 || */ swipeContainer.isSwipeInProgress()) { @@ -133,6 +182,24 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification swipeContainer.stickTo(-swipeContainer.getOffsetY() + swipeContainer.getTopActionBarOffsetY()); } + @Override + public void onWebAppOpenInvoice(String slug, TLObject response) { + ChatActivity parentFragment = parentEnterView.getParentFragment(); + PaymentFormActivity paymentFormActivity = null; + if (response instanceof TLRPC.TL_payments_paymentForm) { + TLRPC.TL_payments_paymentForm form = (TLRPC.TL_payments_paymentForm) response; + MessagesController.getInstance(currentAccount).putUsers(form.users, false); + paymentFormActivity = new PaymentFormActivity(form, slug, parentFragment); + } else if (response instanceof TLRPC.TL_payments_paymentReceipt) { + paymentFormActivity = new PaymentFormActivity((TLRPC.TL_payments_paymentReceipt) response); + } + + if (paymentFormActivity != null) { + paymentFormActivity.setPaymentFormCallback(status -> webViewContainer.onInvoiceStatusUpdate(slug, status.name().toLowerCase(Locale.ROOT))); + parentFragment.presentFragment(paymentFormActivity); + } + } + @Override public void onSetupMainButton(boolean isVisible, boolean isActive, String text, int color, int textColor, boolean isProgressVisible) { ChatActivityBotWebViewButton botWebViewButton = parentEnterView.getBotWebViewButton(); @@ -142,6 +209,17 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification animateBotButton(isVisible); } } + + @Override + public void onSetBackButtonVisible(boolean visible) { + if (actionBarTransitionProgress == 1f) { + if (visible) { + AndroidUtilities.updateImageViewImageAnimated(actionBar.getBackButton(), actionBar.getBackButtonDrawable()); + } else { + AndroidUtilities.updateImageViewImageAnimated(actionBar.getBackButton(), R.drawable.ic_close_white); + } + } + } }); linePaint.setStyle(Paint.Style.FILL_AND_STROKE); @@ -171,9 +249,6 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification ignoreLayout = false; } - if (AndroidUtilities.isTablet() && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isSmallTablet()) { - widthMeasureSpec = MeasureSpec.makeMeasureSpec((int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.8f), MeasureSpec.EXACTLY); - } super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec) - ActionBar.getCurrentActionBarHeight() - AndroidUtilities.statusBarHeight + AndroidUtilities.dp(24) - AndroidUtilities.dp(5), MeasureSpec.EXACTLY)); } @@ -196,10 +271,21 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification if (springAnimation != null) { float progress = (1f - Math.min(swipeContainer.getTopActionBarOffsetY(), swipeContainer.getTranslationY() - swipeContainer.getTopActionBarOffsetY()) / swipeContainer.getTopActionBarOffsetY()); + if (BotWebViewMenuContainer.this.getVisibility() != VISIBLE) { + progress = 0; + } float newPos = (progress > 0.5f ? 1 : 0) * 100f; if (springAnimation.getSpring().getFinalPosition() != newPos) { springAnimation.getSpring().setFinalPosition(newPos); springAnimation.start(); + + if (!webViewContainer.isBackButtonVisible()) { + if (newPos == 100f) { + AndroidUtilities.updateImageViewImageAnimated(actionBar.getBackButton(), R.drawable.ic_close_white); + } else { + AndroidUtilities.updateImageViewImageAnimated(actionBar.getBackButton(), actionBar.getBackButtonDrawable()); + } + } } } lastSwipeTime = System.currentTimeMillis(); @@ -209,6 +295,7 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification swipeContainer.setDelegate(this::dismiss); swipeContainer.setTopActionBarOffsetY(ActionBar.getCurrentActionBarHeight() + AndroidUtilities.statusBarHeight - AndroidUtilities.dp(24)); swipeContainer.setSwipeOffsetAnimationDisallowed(true); + swipeContainer.setIsKeyboardVisible(obj -> parentEnterView.getSizeNotifierLayout().getKeyboardHeight() >= AndroidUtilities.dp(20)); addView(swipeContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP, 0, 24, 0, 0)); addView(progressView = new ChatAttachAlertBotWebViewLayout.WebProgressView(context, parentEnterView.getParentFragment().getResourceProvider()), LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM, 0, 0, 0, 5)); @@ -232,10 +319,17 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification } private void invalidateActionBar() { - int subtitleColor = ColorUtils.blendARGB(getColor(Theme.key_actionBarDefaultSubtitle), getColor(Theme.key_windowBackgroundWhiteGrayText), actionBarTransitionProgress); ChatActivity chatActivity = parentEnterView.getParentFragment(); + if (chatActivity == null || getVisibility() != VISIBLE) { + return; + } + + ChatAvatarContainer avatarContainer = chatActivity.getAvatarContainer(); + String subtitleDefaultColorKey = avatarContainer.getLastSubtitleColorKey() == null ? Theme.key_actionBarDefaultSubtitle : avatarContainer.getLastSubtitleColorKey(); + int subtitleColor = ColorUtils.blendARGB(getColor(subtitleDefaultColorKey), getColor(Theme.key_windowBackgroundWhiteGrayText), actionBarTransitionProgress); ActionBar actionBar = chatActivity.getActionBar(); - actionBar.setBackgroundColor(ColorUtils.blendARGB(getColor(Theme.key_actionBarDefault), getColor(Theme.key_windowBackgroundWhite), actionBarTransitionProgress)); + int backgroundColor = ColorUtils.blendARGB(getColor(Theme.key_actionBarDefault), getColor(Theme.key_windowBackgroundWhite), actionBarTransitionProgress); + actionBar.setBackgroundColor(backgroundColor); actionBar.setItemsColor(ColorUtils.blendARGB(getColor(Theme.key_actionBarDefaultIcon), getColor(Theme.key_windowBackgroundWhiteBlackText), actionBarTransitionProgress), false); actionBar.setItemsBackgroundColor(ColorUtils.blendARGB(getColor(Theme.key_actionBarDefaultSelector), getColor(Theme.key_actionBarWhiteSelector), actionBarTransitionProgress), false); actionBar.setSubtitleColor(subtitleColor); @@ -310,7 +404,9 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification @Override public void onItemClick(int id) { if (id == -1) { - dismiss(); + if (!webViewContainer.onBackPressed()) { + dismiss(); + } } else if (id == R.id.menu_reload_page) { if (webViewContainer.getWebView() != null) { webViewContainer.getWebView().animate().cancel(); @@ -323,8 +419,10 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification progressView.setVisibility(VISIBLE); webViewContainer.setBotUser(MessagesController.getInstance(currentAccount).getUser(botId)); - webViewContainer.loadFlicker(currentAccount, botId); + webViewContainer.loadFlickerAndSettingsItem(currentAccount, botId, settingsItem); webViewContainer.reload(); + } else if (id == R.id.menu_settings) { + webViewContainer.onSettingsButtonPressed(); } } }); @@ -366,38 +464,47 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification return; } + boolean doNotScroll = false; + float openOffset = -swipeContainer.getOffsetY() + swipeContainer.getTopActionBarOffsetY(); + if (swipeContainer.getSwipeOffsetY() != openOffset) { + swipeContainer.stickTo(openOffset); + doNotScroll = true; + } + int oldh = contentHeight + parentEnterView.getSizeNotifierLayout().measureKeyboardHeight(); setMeasuredDimension(getMeasuredWidth(), contentHeight); ignoreMeasure = true; - if (webViewScrollAnimator != null) { - webViewScrollAnimator.cancel(); - webViewScrollAnimator = null; - } + if (!doNotScroll) { + if (webViewScrollAnimator != null) { + webViewScrollAnimator.cancel(); + webViewScrollAnimator = null; + } - if (webViewContainer.getWebView() != null) { - int fromY = webViewContainer.getWebView().getScrollY(); - int toY = fromY + (oldh - contentHeight); - webViewScrollAnimator = ValueAnimator.ofInt(fromY, toY).setDuration(250); - webViewScrollAnimator.setInterpolator(ChatListItemAnimator.DEFAULT_INTERPOLATOR); - webViewScrollAnimator.addUpdateListener(animation -> { - int val = (int) animation.getAnimatedValue(); - if (webViewContainer.getWebView() != null) { - webViewContainer.getWebView().setScrollY(val); - } - }); - webViewScrollAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { + if (webViewContainer.getWebView() != null) { + int fromY = webViewContainer.getWebView().getScrollY(); + int toY = fromY + (oldh - contentHeight); + webViewScrollAnimator = ValueAnimator.ofInt(fromY, toY).setDuration(250); + webViewScrollAnimator.setInterpolator(ChatListItemAnimator.DEFAULT_INTERPOLATOR); + webViewScrollAnimator.addUpdateListener(animation -> { + int val = (int) animation.getAnimatedValue(); if (webViewContainer.getWebView() != null) { - webViewContainer.getWebView().setScrollY(toY); + webViewContainer.getWebView().setScrollY(val); } - if (animation == webViewScrollAnimator) { - webViewScrollAnimator = null; + }); + webViewScrollAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + if (webViewContainer.getWebView() != null) { + webViewContainer.getWebView().setScrollY(toY); + } + if (animation == webViewScrollAnimator) { + webViewScrollAnimator = null; + } } - } - }); - webViewScrollAnimator.start(); + }); + webViewScrollAnimator.start(); + } } } @@ -430,13 +537,21 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification protected void onDraw(Canvas canvas) { super.onDraw(canvas); - backgroundPaint.setColor(getColor(Theme.key_windowBackgroundWhite)); + if (!overrideBackgroundColor) { + backgroundPaint.setColor(getColor(Theme.key_windowBackgroundWhite)); + } + if (overrideActionBarBackgroundProgress == 0) { + actionBarPaint.setColor(getColor(Theme.key_windowBackgroundWhite)); + } AndroidUtilities.rectTmp.set(0, 0, getWidth(), getHeight()); canvas.drawRect(AndroidUtilities.rectTmp, dimPaint); float radius = AndroidUtilities.dp(16) * (1f - actionBarTransitionProgress); - AndroidUtilities.rectTmp.set(0, AndroidUtilities.lerp(swipeContainer.getTranslationY(), 0, actionBarTransitionProgress), getWidth(), getHeight() + radius); - canvas.drawRoundRect(AndroidUtilities.rectTmp, radius, radius, backgroundPaint); + AndroidUtilities.rectTmp.set(0, AndroidUtilities.lerp(swipeContainer.getTranslationY(), 0, actionBarTransitionProgress), getWidth(), swipeContainer.getTranslationY() + AndroidUtilities.dp(24) + radius); + canvas.drawRoundRect(AndroidUtilities.rectTmp, radius, radius, actionBarPaint); + + AndroidUtilities.rectTmp.set(0, swipeContainer.getTranslationY() + AndroidUtilities.dp(24), getWidth(), getHeight() + radius); + canvas.drawRect(AndroidUtilities.rectTmp, backgroundPaint); } @SuppressLint("ClickableViewAccessibility") @@ -453,7 +568,7 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification public void draw(Canvas canvas) { super.draw(canvas); - linePaint.setColor(getColor(Theme.key_dialogGrayLine)); + linePaint.setColor(getColor(Theme.key_sheet_scrollUp)); linePaint.setAlpha((int) (linePaint.getAlpha() * (1f - Math.min(0.5f, actionBarTransitionProgress) / 0.5f))); canvas.save(); @@ -519,7 +634,7 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification progressView.setVisibility(VISIBLE); webViewContainer.setBotUser(MessagesController.getInstance(currentAccount).getUser(botId)); - webViewContainer.loadFlicker(currentAccount, botId); + webViewContainer.loadFlickerAndSettingsItem(currentAccount, botId, settingsItem); TLRPC.TL_messages_requestWebView req = new TLRPC.TL_messages_requestWebView(); req.bot = MessagesController.getInstance(currentAccount).getInputUser(botId); @@ -531,6 +646,7 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification try { JSONObject jsonObject = new JSONObject(); jsonObject.put("bg_color", getColor(Theme.key_windowBackgroundWhite)); + jsonObject.put("secondary_bg_color", getColor(Theme.key_windowBackgroundGray)); jsonObject.put("text_color", getColor(Theme.key_windowBackgroundWhiteBlackText)); jsonObject.put("hint_color", getColor(Theme.key_windowBackgroundWhiteHintText)); jsonObject.put("link_color", getColor(Theme.key_windowBackgroundWhiteLinkText)); @@ -551,7 +667,7 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification TLRPC.TL_webViewResultUrl resultUrl = (TLRPC.TL_webViewResultUrl) response; queryId = resultUrl.query_id; - webViewContainer.loadUrl(resultUrl.url); + webViewContainer.loadUrl(currentAccount, resultUrl.url); swipeContainer.setWebView(webViewContainer.getWebView()); AndroidUtilities.runOnUIThread(pollRunnable, POLL_PERIOD); @@ -570,6 +686,13 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification return color != null ? color : Theme.getColor(key); } + /** + * Sets global dismiss callback to run every time menu being dismissed + */ + public void setOnDismissGlobalListener(Runnable callback) { + globalOnDismissListener = callback; + } + /** * Dismisses menu */ @@ -590,6 +713,9 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification if (callback != null) { callback.run(); } + if (globalOnDismissListener != null) { + globalOnDismissListener.run(); + } }); } @@ -599,6 +725,9 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification public void onDismiss() { setVisibility(GONE); + overrideActionBarBackground = 0; + overrideActionBarBackgroundProgress = 0; + actionBarPaint.setColor(getColor(Theme.key_windowBackgroundWhite)); webViewContainer.destroyWebView(); swipeContainer.removeView(webViewContainer); @@ -651,6 +780,10 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification }, delayRestoreText ? 200 : 0); } + public boolean hasSavedText() { + return savedEditText != null || savedReplyMessageObject != null || savedEditMessageObject != null; + } + @Override public void didReceivedNotification(int id, int account, Object... args) { if (id == NotificationCenter.webViewResultSent) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewSheet.java index 89036c35b..bf0566cf1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewSheet.java @@ -22,6 +22,7 @@ import android.view.Window; import android.view.WindowManager; import android.widget.TextView; +import androidx.annotation.IntDef; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.core.graphics.ColorUtils; @@ -39,15 +40,33 @@ import org.telegram.messenger.R; import org.telegram.messenger.UserObject; import org.telegram.messenger.Utilities; import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; +import org.telegram.ui.ActionBar.ActionBarMenuSubItem; +import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ChatActivity; import org.telegram.ui.LaunchActivity; +import org.telegram.ui.PaymentFormActivity; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.Locale; public class BotWebViewSheet extends Dialog implements NotificationCenter.NotificationCenterDelegate { + public final static int TYPE_WEB_VIEW_BUTTON = 0, TYPE_SIMPLE_WEB_VIEW_BUTTON = 1, TYPE_BOT_MENU_BUTTON = 2; + + @Retention(RetentionPolicy.SOURCE) + @IntDef(value = { + TYPE_WEB_VIEW_BUTTON, + TYPE_SIMPLE_WEB_VIEW_BUTTON, + TYPE_BOT_MENU_BUTTON + }) + public @interface WebViewType {} + private final static int POLL_PERIOD = 60000; private final static SimpleFloatPropertyCompat ACTION_BAR_TRANSITION_PROGRESS_VALUE = new SimpleFloatPropertyCompat("actionBarTransitionProgress", obj -> obj.actionBarTransitionProgress, (obj, value) -> { @@ -85,8 +104,14 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi private Paint dimPaint = new Paint(); private Paint backgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private int actionBarColor; + private Paint actionBarPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + private boolean overrideBackgroundColor; + private ActionBar actionBar; private Drawable actionBarShadow; + private ActionBarMenuSubItem settingsItem; private boolean dismissed; @@ -182,7 +207,73 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi sendWebViewData.random_id = Utilities.random.nextLong(); sendWebViewData.button_text = buttonText; sendWebViewData.data = data; - ConnectionsManager.getInstance(currentAccount).sendRequest(sendWebViewData, (response, error) -> AndroidUtilities.runOnUIThread(()-> dismiss())); + ConnectionsManager.getInstance(currentAccount).sendRequest(sendWebViewData, (response, error) -> { + if (response instanceof TLRPC.TL_updates) { + MessagesController.getInstance(currentAccount).processUpdates((TLRPC.TL_updates) response, false); + } + AndroidUtilities.runOnUIThread(BotWebViewSheet.this::dismiss); + }); + } + + @Override + public void onWebAppSetActionBarColor(String colorKey) { + int from = actionBarColor; + int to = getColor(colorKey); + + ValueAnimator animator = ValueAnimator.ofFloat(0, 1).setDuration(200); + animator.setInterpolator(CubicBezierInterpolator.DEFAULT); + animator.addUpdateListener(animation -> { + actionBarColor = ColorUtils.blendARGB(from, to, (Float) animation.getAnimatedValue()); + frameLayout.invalidate(); + }); + animator.start(); + } + + @Override + public void onWebAppSetBackgroundColor(int color) { + overrideBackgroundColor = true; + + int from = backgroundPaint.getColor(); + ValueAnimator animator = ValueAnimator.ofFloat(0, 1).setDuration(200); + animator.setInterpolator(CubicBezierInterpolator.DEFAULT); + animator.addUpdateListener(animation -> { + backgroundPaint.setColor(ColorUtils.blendARGB(from, color, (Float) animation.getAnimatedValue())); + frameLayout.invalidate(); + }); + animator.start(); + } + + @Override + public void onSetBackButtonVisible(boolean visible) { + AndroidUtilities.updateImageViewImageAnimated(actionBar.getBackButton(), visible ? R.drawable.ic_ab_back : R.drawable.ic_close_white); + } + + @Override + public void onWebAppOpenInvoice(String slug, TLObject response) { + BaseFragment parentFragment = ((LaunchActivity) parentActivity).getActionBarLayout().getLastFragment(); + PaymentFormActivity paymentFormActivity = null; + if (response instanceof TLRPC.TL_payments_paymentForm) { + TLRPC.TL_payments_paymentForm form = (TLRPC.TL_payments_paymentForm) response; + MessagesController.getInstance(currentAccount).putUsers(form.users, false); + paymentFormActivity = new PaymentFormActivity(form, slug, parentFragment); + } else if (response instanceof TLRPC.TL_payments_paymentReceipt) { + paymentFormActivity = new PaymentFormActivity((TLRPC.TL_payments_paymentReceipt) response); + } + + if (paymentFormActivity != null) { + swipeContainer.stickTo(-swipeContainer.getOffsetY() + swipeContainer.getTopActionBarOffsetY()); + + AndroidUtilities.hideKeyboard(frameLayout); + OverlayActionBarLayoutDialog overlayActionBarLayoutDialog = new OverlayActionBarLayoutDialog(context, resourcesProvider); + overlayActionBarLayoutDialog.show(); + paymentFormActivity.setPaymentFormCallback(status -> { + overlayActionBarLayoutDialog.dismiss(); + + webViewContainer.onInvoiceStatusUpdate(slug, status.name().toLowerCase(Locale.ROOT)); + }); + paymentFormActivity.setResourcesProvider(resourcesProvider); + overlayActionBarLayoutDialog.addFragment(paymentFormActivity); + } } @Override @@ -245,6 +336,7 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi linePaint.setStrokeCap(Paint.Cap.ROUND); dimPaint.setColor(0x40000000); + actionBarColor = getColor(Theme.key_windowBackgroundWhite); frameLayout = new SizeNotifierFrameLayout(context) { { setWillNotDraw(false); @@ -254,25 +346,33 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi protected void onDraw(Canvas canvas) { super.onDraw(canvas); - backgroundPaint.setColor(getColor(Theme.key_windowBackgroundWhite)); + if (!overrideBackgroundColor) { + backgroundPaint.setColor(getColor(Theme.key_windowBackgroundWhite)); + } AndroidUtilities.rectTmp.set(0, 0, getWidth(), getHeight()); canvas.drawRect(AndroidUtilities.rectTmp, dimPaint); - float radius = AndroidUtilities.dp(16) * (1f - actionBarTransitionProgress); - AndroidUtilities.rectTmp.set(0, AndroidUtilities.lerp(swipeContainer.getTranslationY(), 0, actionBarTransitionProgress), getWidth(), getHeight() + radius); - canvas.drawRoundRect(AndroidUtilities.rectTmp, radius, radius, backgroundPaint); + actionBarPaint.setColor(ColorUtils.blendARGB(actionBarColor, getColor(Theme.key_windowBackgroundWhite), actionBarTransitionProgress)); + float radius = AndroidUtilities.dp(16) * (AndroidUtilities.isTablet() ? 1f : 1f - actionBarTransitionProgress); + AndroidUtilities.rectTmp.set(swipeContainer.getLeft(), AndroidUtilities.lerp(swipeContainer.getTranslationY(), 0, actionBarTransitionProgress), swipeContainer.getRight(), swipeContainer.getTranslationY() + AndroidUtilities.dp(24) + radius); + canvas.drawRoundRect(AndroidUtilities.rectTmp, radius, radius, actionBarPaint); + + AndroidUtilities.rectTmp.set(swipeContainer.getLeft(), swipeContainer.getTranslationY() + AndroidUtilities.dp(24), swipeContainer.getRight(), getHeight()); + canvas.drawRect(AndroidUtilities.rectTmp, backgroundPaint); } @Override public void draw(Canvas canvas) { super.draw(canvas); - linePaint.setColor(Theme.getColor(Theme.key_dialogGrayLine)); - linePaint.setAlpha((int) (linePaint.getAlpha() * (1f - Math.min(0.5f, actionBarTransitionProgress) / 0.5f))); + float transitionProgress = AndroidUtilities.isTablet() ? 0 : actionBarTransitionProgress; + linePaint.setColor(Theme.getColor(Theme.key_sheet_scrollUp)); + linePaint.setAlpha((int) (linePaint.getAlpha() * (1f - Math.min(0.5f, transitionProgress) / 0.5f))); canvas.save(); - float scale = 1f - actionBarTransitionProgress; - float y = AndroidUtilities.lerp(swipeContainer.getTranslationY(), AndroidUtilities.statusBarHeight + ActionBar.getCurrentActionBarHeight() / 2f, actionBarTransitionProgress) + AndroidUtilities.dp(12); + float scale = 1f - transitionProgress; + float y = AndroidUtilities.isTablet() ? AndroidUtilities.lerp(swipeContainer.getTranslationY() + AndroidUtilities.dp(12), AndroidUtilities.statusBarHeight / 2f, actionBarTransitionProgress) : + (AndroidUtilities.lerp(swipeContainer.getTranslationY(), AndroidUtilities.statusBarHeight + ActionBar.getCurrentActionBarHeight() / 2f, transitionProgress) + AndroidUtilities.dp(12)); canvas.scale(scale, scale, getWidth() / 2f, y); canvas.drawLine(getWidth() / 2f - AndroidUtilities.dp(16), y, getWidth() / 2f + AndroidUtilities.dp(16), y, linePaint); canvas.restore(); @@ -286,7 +386,8 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouchEvent(MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN && event.getY() <= AndroidUtilities.lerp(swipeContainer.getTranslationY() + AndroidUtilities.dp(24), 0, actionBarTransitionProgress)) { + if (event.getAction() == MotionEvent.ACTION_DOWN && (event.getY() <= AndroidUtilities.lerp(swipeContainer.getTranslationY() + AndroidUtilities.dp(24), 0, actionBarTransitionProgress) || + event.getX() > swipeContainer.getRight() || event.getX() < swipeContainer.getLeft())) { dismiss(); return true; } @@ -298,9 +399,17 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi swipeContainer.stickTo(-swipeContainer.getOffsetY() + swipeContainer.getTopActionBarOffsetY()); } }); - frameLayout.addView(swipeContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP, 0, 24, 0, 0)); + frameLayout.addView(swipeContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 24, 0, 0)); - mainButton = new TextView(context); + mainButton = new TextView(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (AndroidUtilities.isTablet() && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isSmallTablet()) { + widthMeasureSpec = MeasureSpec.makeMeasureSpec((int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.8f), MeasureSpec.EXACTLY); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }; mainButton.setVisibility(View.GONE); mainButton.setAlpha(0f); mainButton.setSingleLine(); @@ -310,10 +419,22 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi mainButton.setPadding(padding, 0, padding, 0); mainButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); mainButton.setOnClickListener(v -> webViewContainer.onMainButtonPressed()); - frameLayout.addView(mainButton, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM)); + frameLayout.addView(mainButton, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL)); mainButtonAutoAnimator = VerticalPositionAutoAnimator.attach(mainButton); - radialProgressView = new RadialProgressView(context); + radialProgressView = new RadialProgressView(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) getLayoutParams(); + if (AndroidUtilities.isTablet() && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isSmallTablet()) { + params.rightMargin = (int) (AndroidUtilities.dp(10) + Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.1f); + } else { + params.rightMargin = AndroidUtilities.dp(10); + } + } + }; radialProgressView.setSize(AndroidUtilities.dp(18)); radialProgressView.setAlpha(0f); radialProgressView.setScaleX(0.1f); @@ -324,9 +445,17 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi actionBarShadow = ContextCompat.getDrawable(getContext(), R.drawable.header_shadow).mutate(); - actionBar = new ActionBar(context, resourcesProvider); + actionBar = new ActionBar(context, resourcesProvider) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (AndroidUtilities.isTablet() && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isSmallTablet()) { + widthMeasureSpec = MeasureSpec.makeMeasureSpec((int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.8f), MeasureSpec.EXACTLY); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }; actionBar.setBackgroundColor(Color.TRANSPARENT); - actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackButtonImage(R.drawable.ic_close_white); updateActionBarColors(); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override @@ -337,9 +466,17 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi } }); actionBar.setAlpha(0f); - frameLayout.addView(actionBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP)); + frameLayout.addView(actionBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.CENTER_HORIZONTAL)); - frameLayout.addView(progressView = new ChatAttachAlertBotWebViewLayout.WebProgressView(context, resourcesProvider), LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM, 0, 0, 0, 0)); + frameLayout.addView(progressView = new ChatAttachAlertBotWebViewLayout.WebProgressView(context, resourcesProvider) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (AndroidUtilities.isTablet() && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isSmallTablet()) { + widthMeasureSpec = MeasureSpec.makeMeasureSpec((int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.8f), MeasureSpec.EXACTLY); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0, 0, 0)); webViewContainer.setWebViewProgressListener(progress -> { progressView.setLoadProgressAnimated(progress); if (progress == 1f) { @@ -382,6 +519,7 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi swipeContainer.setScrollEndListener(()-> webViewContainer.invalidateViewPortHeight(true)); swipeContainer.setDelegate(this::dismiss); swipeContainer.setTopActionBarOffsetY(ActionBar.getCurrentActionBarHeight() + AndroidUtilities.statusBarHeight - AndroidUtilities.dp(24)); + swipeContainer.setIsKeyboardVisible(obj -> frameLayout.getKeyboardHeight() >= AndroidUtilities.dp(20)); setContentView(frameLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } @@ -402,7 +540,7 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi private void updateLightStatusBar() { int color = Theme.getColor(Theme.key_windowBackgroundWhite, null, true); - boolean lightStatusBar = ColorUtils.calculateLuminance(color) >= 0.9 && actionBarTransitionProgress >= 0.85f; + boolean lightStatusBar = !AndroidUtilities.isTablet() && ColorUtils.calculateLuminance(color) >= 0.9 && actionBarTransitionProgress >= 0.85f; if (wasLightStatusBar != null && wasLightStatusBar == lightStatusBar) { return; @@ -487,7 +625,7 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi } } - public void requestWebView(int currentAccount, long peerId, long botId, String buttonText, String buttonUrl, boolean simple, int replyToMsgId, boolean silent) { + public void requestWebView(int currentAccount, long peerId, long botId, String buttonText, String buttonUrl, @WebViewType int type, int replyToMsgId, boolean silent) { this.currentAccount = currentAccount; this.peerId = peerId; this.botId = botId; @@ -506,7 +644,9 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi @Override public void onItemClick(int id) { if (id == -1) { - dismiss(); + if (!webViewContainer.onBackPressed()) { + dismiss(); + } } else if (id == R.id.menu_open_bot) { Bundle bundle = new Bundle(); bundle.putLong("user_id", botId); @@ -525,8 +665,10 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi progressView.setVisibility(View.VISIBLE); webViewContainer.setBotUser(MessagesController.getInstance(currentAccount).getUser(botId)); - webViewContainer.loadFlicker(currentAccount, botId); + webViewContainer.loadFlickerAndSettingsItem(currentAccount, botId, settingsItem); webViewContainer.reload(); + } else if (id == R.id.menu_settings) { + webViewContainer.onSettingsButtonPressed(); } } }); @@ -536,6 +678,7 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi try { JSONObject jsonObject = new JSONObject(); jsonObject.put("bg_color", getColor(Theme.key_windowBackgroundWhite)); + jsonObject.put("secondary_bg_color", getColor(Theme.key_windowBackgroundGray)); jsonObject.put("text_color", getColor(Theme.key_windowBackgroundWhiteBlackText)); jsonObject.put("hint_color", getColor(Theme.key_windowBackgroundWhiteHintText)); jsonObject.put("link_color", getColor(Theme.key_windowBackgroundWhiteLinkText)); @@ -548,56 +691,89 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi } webViewContainer.setBotUser(MessagesController.getInstance(currentAccount).getUser(botId)); - webViewContainer.loadFlicker(currentAccount, botId); - if (simple) { - TLRPC.TL_messages_requestSimpleWebView req = new TLRPC.TL_messages_requestSimpleWebView(); - req.bot = MessagesController.getInstance(currentAccount).getInputUser(botId); - if (hasThemeParams) { - req.theme_params = new TLRPC.TL_dataJSON(); - req.theme_params.data = themeParams; - req.flags |= 1; - } - req.url = buttonUrl; + webViewContainer.loadFlickerAndSettingsItem(currentAccount, botId, settingsItem); + switch (type) { + case TYPE_BOT_MENU_BUTTON: { + TLRPC.TL_messages_requestWebView req = new TLRPC.TL_messages_requestWebView(); + req.bot = MessagesController.getInstance(currentAccount).getInputUser(botId); + req.peer = MessagesController.getInstance(currentAccount).getInputPeer(botId); - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(()->{ - if (response instanceof TLRPC.TL_simpleWebViewResultUrl) { - TLRPC.TL_simpleWebViewResultUrl resultUrl = (TLRPC.TL_simpleWebViewResultUrl) response; - queryId = 0; - webViewContainer.loadUrl(resultUrl.url); - swipeContainer.setWebView(webViewContainer.getWebView()); - } - })); - } else { - TLRPC.TL_messages_requestWebView req = new TLRPC.TL_messages_requestWebView(); - req.peer = MessagesController.getInstance(currentAccount).getInputPeer(peerId); - req.bot = MessagesController.getInstance(currentAccount).getInputUser(botId); - if (buttonUrl != null) { req.url = buttonUrl; req.flags |= 2; - } - if (replyToMsgId != 0) { - req.reply_to_msg_id = replyToMsgId; - req.flags |= 1; - } - - if (hasThemeParams) { - req.theme_params = new TLRPC.TL_dataJSON(); - req.theme_params.data = themeParams; - req.flags |= 4; - } - - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { - if (response instanceof TLRPC.TL_webViewResultUrl) { - TLRPC.TL_webViewResultUrl resultUrl = (TLRPC.TL_webViewResultUrl) response; - queryId = resultUrl.query_id; - webViewContainer.loadUrl(resultUrl.url); - swipeContainer.setWebView(webViewContainer.getWebView()); - - AndroidUtilities.runOnUIThread(pollRunnable, POLL_PERIOD); + if (hasThemeParams) { + req.theme_params = new TLRPC.TL_dataJSON(); + req.theme_params.data = themeParams; + req.flags |= 4; } - })); - NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.webViewResultSent); + + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + if (response instanceof TLRPC.TL_webViewResultUrl) { + TLRPC.TL_webViewResultUrl resultUrl = (TLRPC.TL_webViewResultUrl) response; + queryId = resultUrl.query_id; + webViewContainer.loadUrl(currentAccount, resultUrl.url); + swipeContainer.setWebView(webViewContainer.getWebView()); + + AndroidUtilities.runOnUIThread(pollRunnable, POLL_PERIOD); + } + })); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.webViewResultSent); + + break; + } + case TYPE_SIMPLE_WEB_VIEW_BUTTON: { + TLRPC.TL_messages_requestSimpleWebView req = new TLRPC.TL_messages_requestSimpleWebView(); + req.bot = MessagesController.getInstance(currentAccount).getInputUser(botId); + if (hasThemeParams) { + req.theme_params = new TLRPC.TL_dataJSON(); + req.theme_params.data = themeParams; + req.flags |= 1; + } + req.url = buttonUrl; + + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + if (response instanceof TLRPC.TL_simpleWebViewResultUrl) { + TLRPC.TL_simpleWebViewResultUrl resultUrl = (TLRPC.TL_simpleWebViewResultUrl) response; + queryId = 0; + webViewContainer.loadUrl(currentAccount, resultUrl.url); + swipeContainer.setWebView(webViewContainer.getWebView()); + } + })); + break; + } + case TYPE_WEB_VIEW_BUTTON: { + TLRPC.TL_messages_requestWebView req = new TLRPC.TL_messages_requestWebView(); + req.peer = MessagesController.getInstance(currentAccount).getInputPeer(peerId); + req.bot = MessagesController.getInstance(currentAccount).getInputUser(botId); + if (buttonUrl != null) { + req.url = buttonUrl; + req.flags |= 2; + } + + if (replyToMsgId != 0) { + req.reply_to_msg_id = replyToMsgId; + req.flags |= 1; + } + + if (hasThemeParams) { + req.theme_params = new TLRPC.TL_dataJSON(); + req.theme_params.data = themeParams; + req.flags |= 4; + } + + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + if (response instanceof TLRPC.TL_webViewResultUrl) { + TLRPC.TL_webViewResultUrl resultUrl = (TLRPC.TL_webViewResultUrl) response; + queryId = resultUrl.query_id; + webViewContainer.loadUrl(currentAccount, resultUrl.url); + swipeContainer.setWebView(webViewContainer.getWebView()); + + AndroidUtilities.runOnUIThread(pollRunnable, POLL_PERIOD); + } + })); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.webViewResultSent); + break; + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BottomSheetWithRecyclerListView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BottomSheetWithRecyclerListView.java new file mode 100644 index 000000000..e4af3851c --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BottomSheetWithRecyclerListView.java @@ -0,0 +1,244 @@ +package org.telegram.ui.Components; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.drawable.Drawable; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.ColorUtils; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.Theme; + +public abstract class BottomSheetWithRecyclerListView extends BottomSheet { + + protected RecyclerListView recyclerListView; + protected ActionBar actionBar; + boolean wasDrawn; + private int contentHeight; + private BaseFragment baseFragment; + public final boolean hasFixedSize; + protected boolean clipToActionBar; + + public float topPadding = 0.4f; + + public BottomSheetWithRecyclerListView(BaseFragment fragment, boolean needFocus, boolean hasFixedSize) { + super(fragment.getParentActivity(), needFocus); + this.baseFragment = fragment; + this.hasFixedSize = hasFixedSize; + Context context = fragment.getParentActivity(); + Drawable headerShadowDrawable = ContextCompat.getDrawable(context, R.drawable.header_shadow).mutate(); + FrameLayout containerView = new FrameLayout(context) { + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + contentHeight = MeasureSpec.getSize(heightMeasureSpec); + onPreMeasure(widthMeasureSpec, heightMeasureSpec); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + @Override + protected void dispatchDraw(Canvas canvas) { + if (!hasFixedSize) { + RecyclerView.ViewHolder holder = recyclerListView.findViewHolderForAdapterPosition(0); + int top = -AndroidUtilities.dp(16); + if (holder != null) { + top = holder.itemView.getBottom() - AndroidUtilities.dp(16); + } + + float progressToFullView = 1f - (top + AndroidUtilities.dp(16)) / (float) AndroidUtilities.dp(56); + if (progressToFullView < 0) { + progressToFullView = 0; + } + + AndroidUtilities.updateViewVisibilityAnimated(actionBar, progressToFullView != 0f, 1f, wasDrawn); + shadowDrawable.setBounds(0, top, getMeasuredWidth(), getMeasuredHeight()); + shadowDrawable.draw(canvas); + + onPreDraw(canvas, top, progressToFullView); + } + super.dispatchDraw(canvas); + if (actionBar != null && actionBar.getVisibility() == View.VISIBLE && actionBar.getAlpha() != 0) { + headerShadowDrawable.setBounds(0, actionBar.getBottom(), getMeasuredWidth(), actionBar.getBottom() + headerShadowDrawable.getIntrinsicHeight()); + headerShadowDrawable.setAlpha((int) (255 * actionBar.getAlpha())); + headerShadowDrawable.draw(canvas); + } + wasDrawn = true; + } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + if (!hasFixedSize && clipToActionBar && child == recyclerListView) { + canvas.save(); + canvas.clipRect(0, actionBar.getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight()); + super.drawChild(canvas, child, drawingTime); + canvas.restore(); + return true; + } + return super.drawChild(canvas, child, drawingTime); + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN && event.getY() < shadowDrawable.getBounds().top) { + dismiss(); + } + return super.dispatchTouchEvent(event); + } + }; + recyclerListView = new RecyclerListView(context); + recyclerListView.setLayoutManager(new LinearLayoutManager(context)); + + RecyclerListView.SelectionAdapter adapter = createAdapter(); + + if (hasFixedSize) { + recyclerListView.setHasFixedSize(true); + recyclerListView.setAdapter(adapter); + setCustomView(containerView); + containerView.addView(recyclerListView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + } else { + recyclerListView.setAdapter(new RecyclerListView.SelectionAdapter() { + + @Override + public boolean isEnabled(RecyclerView.ViewHolder holder) { + return adapter.isEnabled(holder); + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + if (viewType == -1000) { + View view = new View(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int h; + if (contentHeight == 0) { + h = AndroidUtilities.dp(300); + } else { + h = (int) (contentHeight * topPadding); + } + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(h, MeasureSpec.EXACTLY)); + } + }; + return new RecyclerListView.Holder(view); + } + return adapter.onCreateViewHolder(parent, viewType); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (position != 0) { + adapter.onBindViewHolder(holder, position - 1); + } + } + + @Override + public int getItemViewType(int position) { + if (position == 0) { + return -1000; + } + return adapter.getItemViewType(position - 1); + } + + @Override + public int getItemCount() { + return 1 + adapter.getItemCount(); + } + }); + this.containerView = containerView; + actionBar = new ActionBar(context) { + @Override + public void setAlpha(float alpha) { + if (getAlpha() != alpha) { + super.setAlpha(alpha); + containerView.invalidate(); + } + } + + @Override + public void setTag(Object tag) { + super.setTag(tag); + updateStatusBar(); + } + }; + actionBar.setBackgroundColor(getThemedColor(Theme.key_dialogBackground)); + actionBar.setTitleColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); + actionBar.setItemsBackgroundColor(getThemedColor(Theme.key_actionBarActionModeDefaultSelector), false); + actionBar.setItemsColor(getThemedColor(Theme.key_actionBarActionModeDefaultIcon), false); + + actionBar.setCastShadows(true); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setTitle(getTitle()); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick(){ + @Override + public void onItemClick(int id) { + if (id == -1) { + dismiss(); + } + } + }); + + containerView.addView(recyclerListView); + containerView.addView(actionBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 6, 0, 6, 0)); + + recyclerListView.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + containerView.invalidate(); + } + }); + } + onViewCreated(containerView); + updateStatusBar(); + } + + protected void onPreMeasure(int widthMeasureSpec, int heightMeasureSpec) { + + } + + protected void onPreDraw(Canvas canvas, int top, float progressToFullView) { + + } + + private boolean isLightStatusBar() { + return ColorUtils.calculateLuminance(Theme.getColor(Theme.key_dialogBackground)) > 0.7f; + } + + public void onViewCreated(FrameLayout containerView) { + + } + + protected abstract CharSequence getTitle(); + + protected abstract RecyclerListView.SelectionAdapter createAdapter(); + + public void notifyDataSetChanged() { + recyclerListView.getAdapter().notifyDataSetChanged(); + } + + @Override + protected boolean canDismissWithSwipe() { + return false; + } + + private void updateStatusBar() { + if (actionBar != null && actionBar.getTag() != null) { + AndroidUtilities.setLightStatusBar(getWindow(), isLightStatusBar()); + } else if (baseFragment != null) { + AndroidUtilities.setLightStatusBar(getWindow(), baseFragment.isLightStatusBar()); + } + } + +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Bulletin.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Bulletin.java index ea80522df..99b9713a6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Bulletin.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Bulletin.java @@ -16,6 +16,7 @@ import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Build; import android.text.TextUtils; +import android.text.method.LinkMovementMethod; import android.util.Property; import android.util.TypedValue; import android.view.GestureDetector; @@ -63,8 +64,10 @@ public class Bulletin { public static final int TYPE_BIO_CHANGED = 2; public static final int TYPE_NAME_CHANGED = 3; public static final int TYPE_ERROR_SUBTITLE = 4; + public static final int TYPE_APP_ICON = 5; public int tag; + public int hash; public static Bulletin make(@NonNull FrameLayout containerLayout, @NonNull Layout contentLayout, int duration) { return new Bulletin(containerLayout, contentLayout, duration); @@ -156,6 +159,11 @@ public class Bulletin { if (!showing && containerLayout != null) { showing = true; + CharSequence text = layout.getAccessibilityText(); + if (text != null) { + AndroidUtilities.makeAccessibilityAnnouncement(text); + } + if (layout.getParent() != parentLayout) { throw new IllegalStateException("Layout has incorrect parent"); } @@ -600,6 +608,10 @@ public class Bulletin { } } + protected CharSequence getAccessibilityText() { + return null; + } + public Bulletin getBulletin() { return bulletin; } @@ -931,6 +943,10 @@ public class Bulletin { textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); addView(textView, LayoutHelper.createFrameRelatively(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 56, 0, 16, 0)); } + + public CharSequence getAccessibilityText() { + return textView.getText(); + } } @SuppressLint("ViewConstructor") @@ -950,6 +966,10 @@ public class Bulletin { textView.setTypeface(Typeface.SANS_SERIF); addView(textView, LayoutHelper.createFrameRelatively(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 56, 0, 16, 0)); } + + public CharSequence getAccessibilityText() { + return textView.getText(); + } } @SuppressLint("ViewConstructor") @@ -980,11 +1000,16 @@ public class Bulletin { subtitleTextView = new TextView(context); subtitleTextView.setMaxLines(2); subtitleTextView.setTextColor(undoInfoColor); + subtitleTextView.setLinkTextColor(getThemedColor(Theme.key_undo_cancelColor)); + subtitleTextView.setMovementMethod(new LinkMovementMethod()); subtitleTextView.setTypeface(Typeface.SANS_SERIF); subtitleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); linearLayout.addView(subtitleTextView); } + public CharSequence getAccessibilityText() { + return titleTextView.getText() + ".\n" + subtitleTextView.getText(); + } } public static class TwoLineLottieLayout extends ButtonLayout { @@ -1042,6 +1067,10 @@ public class Bulletin { imageView.setLayerColor(layer + ".**", textColor); } } + + public CharSequence getAccessibilityText() { + return titleTextView.getText() + ".\n" + subtitleTextView.getText(); + } } public static class LottieLayout extends ButtonLayout { @@ -1101,6 +1130,10 @@ public class Bulletin { public void setIconPaddingBottom(int paddingBottom) { imageView.setLayoutParams(LayoutHelper.createFrameRelatively(56, 48 - paddingBottom, Gravity.START | Gravity.CENTER_VERTICAL, 0, 0, 0, paddingBottom)); } + + public CharSequence getAccessibilityText() { + return textView.getText(); + } } //endregion @@ -1153,6 +1186,7 @@ public class Bulletin { private Runnable delayedAction; private Bulletin bulletin; + private TextView undoTextView; private boolean isUndone; public UndoButton(@NonNull Context context, boolean text) { @@ -1166,7 +1200,7 @@ public class Bulletin { final int undoCancelColor = getThemedColor(Theme.key_undo_cancelColor); if (text) { - TextView undoTextView = new TextView(context); + undoTextView = new TextView(context); undoTextView.setOnClickListener(v -> undo()); final int leftInset = LocaleController.isRTL ? AndroidUtilities.dp(16) : 0; final int rightInset = LocaleController.isRTL ? 0 : AndroidUtilities.dp(16); @@ -1189,6 +1223,13 @@ public class Bulletin { } } + public UndoButton setText(CharSequence text) { + if (undoTextView != null) { + undoTextView.setText(text); + } + return this; + } + public void undo() { if (bulletin != null) { isUndone = true; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java index f61597ab3..9cbf175b5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java @@ -1,18 +1,31 @@ package org.telegram.ui.Components; +import android.app.DownloadManager; import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Environment; +import android.view.HapticFeedbackConstants; import android.widget.FrameLayout; import androidx.annotation.CheckResult; +import androidx.core.content.FileProvider; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.BuildConfig; +import org.telegram.messenger.DialogObject; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationsController; import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.messenger.UserObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; +import java.io.File; + public final class BulletinFactory { public static BulletinFactory of(BaseFragment fragment) { @@ -206,6 +219,11 @@ public final class BulletinFactory { @CheckResult public Bulletin createCopyBulletin(String message) { + return createCopyBulletin(message, null); + } + + @CheckResult + public Bulletin createCopyBulletin(String message, Theme.ResourcesProvider resourcesProvider) { if (!AndroidUtilities.shouldShowClipboardToast()) { return new Bulletin.EmptyBulletin(); } @@ -234,6 +252,17 @@ public final class BulletinFactory { } } + @CheckResult + public Bulletin createCopyLinkBulletin(String text, Theme.ResourcesProvider resourcesProvider) { + if (!AndroidUtilities.shouldShowClipboardToast()) { + return new Bulletin.EmptyBulletin(); + } + final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(getContext(), resourcesProvider); + layout.setAnimation(R.raw.voip_invite, 36, 36, "Wibe", "Circle"); + layout.textView.setText(text); + return create(layout, Bulletin.DURATION_SHORT); + } + private Bulletin create(Bulletin.Layout layout, int duration) { if (fragment != null) { return Bulletin.make(fragment, layout, duration); @@ -353,7 +382,7 @@ public final class BulletinFactory { @CheckResult public static Bulletin createPromoteToAdminBulletin(BaseFragment fragment, String userFirstName) { - final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(fragment.getParentActivity(), null); + final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(fragment.getParentActivity(), fragment.getResourceProvider()); layout.setAnimation(R.raw.ic_admin, "Shield"); layout.textView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("UserSetAsAdminHint", R.string.UserSetAsAdminHint, userFirstName))); return Bulletin.make(fragment, layout, Bulletin.DURATION_SHORT); @@ -361,15 +390,65 @@ public final class BulletinFactory { @CheckResult public static Bulletin createAddedAsAdminBulletin(BaseFragment fragment, String userFirstName) { - final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(fragment.getParentActivity(), null); + final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(fragment.getParentActivity(), fragment.getResourceProvider()); layout.setAnimation(R.raw.ic_admin, "Shield"); layout.textView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("UserAddedAsAdminHint", R.string.UserAddedAsAdminHint, userFirstName))); return Bulletin.make(fragment, layout, Bulletin.DURATION_SHORT); } + @CheckResult + public static Bulletin createForwardedBulletin(Context context, FrameLayout containerLayout, int dialogsCount, long did, int messagesCount, int backgroundColor, int textColor) { + final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(context, null, backgroundColor, textColor); + CharSequence text; + int hapticDelay = -1; + if (dialogsCount <= 1) { + if (did == UserConfig.getInstance(UserConfig.selectedAccount).clientUserId) { + if (messagesCount <= 1) { + text = AndroidUtilities.replaceTags(LocaleController.getString("FwdMessageToSavedMessages", R.string.FwdMessageToSavedMessages)); + } else { + text = AndroidUtilities.replaceTags(LocaleController.getString("FwdMessagesToSavedMessages", R.string.FwdMessagesToSavedMessages)); + } + layout.setAnimation(R.raw.saved_messages, 30, 30); + } else { + if (DialogObject.isChatDialog(did)) { + TLRPC.Chat chat = MessagesController.getInstance(UserConfig.selectedAccount).getChat(-did); + if (messagesCount <= 1) { + text = AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessageToGroup", R.string.FwdMessageToGroup, chat.title)); + } else { + text = AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessagesToGroup", R.string.FwdMessagesToGroup, chat.title)); + } + } else { + TLRPC.User user = MessagesController.getInstance(UserConfig.selectedAccount).getUser(did); + if (messagesCount <= 1) { + text = AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessageToUser", R.string.FwdMessageToUser, UserObject.getFirstName(user))); + } else { + text = AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessagesToUser", R.string.FwdMessagesToUser, UserObject.getFirstName(user))); + } + } + layout.setAnimation(R.raw.forward, 30, 30); + hapticDelay = 300; + } + } else { + if (messagesCount <= 1) { + text = AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessageToChats", R.string.FwdMessageToChats, LocaleController.formatPluralString("Chats", dialogsCount))); + } else { + text = AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessagesToChats", R.string.FwdMessagesToChats, LocaleController.formatPluralString("Chats", dialogsCount))); + } + layout.setAnimation(R.raw.forward, 30, 30); + hapticDelay = 300; + } + layout.textView.setText(text); + if (hapticDelay > 0) { + layout.postDelayed(() -> { + layout.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); + }, hapticDelay); + } + return Bulletin.make(containerLayout, layout, Bulletin.DURATION_SHORT); + } + @CheckResult public static Bulletin createRemoveFromChatBulletin(BaseFragment fragment, TLRPC.User user, String chatName) { - final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(fragment.getParentActivity(), null); + final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(fragment.getParentActivity(), fragment.getResourceProvider()); layout.setAnimation(R.raw.ic_ban, "Hand"); String name; if (user.deleted) { @@ -383,7 +462,7 @@ public final class BulletinFactory { @CheckResult public static Bulletin createBanBulletin(BaseFragment fragment, boolean banned) { - final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(fragment.getParentActivity(), null); + final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(fragment.getParentActivity(), fragment.getResourceProvider()); final String text; if (banned) { layout.setAnimation(R.raw.ic_ban, "Hand"); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java index 44da40dfe..dd9115d60 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java @@ -135,6 +135,7 @@ import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.BasePermissionsActivity; import org.telegram.ui.ChatActivity; +import org.telegram.ui.ContentPreviewViewer; import org.telegram.ui.DialogsActivity; import org.telegram.ui.GroupStickersActivity; import org.telegram.ui.LaunchActivity; @@ -253,6 +254,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific private final static int RECORD_STATE_CANCEL_BY_TIME = 4; private final static int RECORD_STATE_CANCEL_BY_GESTURE = 5; + private final static int POPUP_CONTENT_BOT_KEYBOARD = 1; private int currentAccount = UserConfig.selectedAccount; private AccountInstance accountInstance = AccountInstance.getInstance(UserConfig.selectedAccount); @@ -293,6 +295,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific private ValueAnimator searchAnimator; private float searchToOpenProgress; + private float chatSearchExpandOffset; private HashMap animationParamsX = new HashMap<>(); @@ -654,7 +657,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } if (!recordingAudioVideo) { recordingAudioVideo = true; - updateRecordIntefrace(RECORD_STATE_ENTER); + updateRecordInterface(RECORD_STATE_ENTER); recordCircle.showWaves(false, false); recordTimerView.reset(); } @@ -670,7 +673,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific startedDraggingX = -1; MediaController.getInstance().startRecording(currentAccount, dialog_id, replyingMessageObject, getThreadMessage(), recordingGuid); recordingAudioVideo = true; - updateRecordIntefrace(RECORD_STATE_ENTER); + updateRecordInterface(RECORD_STATE_ENTER); recordTimerView.start(); recordDot.enterAnimation = false; audioVideoButtonContainer.getParent().requestDisallowInterceptTouchEvent(true); @@ -1648,6 +1651,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific super(host); } + private int[] coords = new int[2]; @Override protected int getVirtualViewAt(float x, float y) { @@ -1656,6 +1660,15 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific return 1; } else if (pauseRect.contains(x, y)) { return 2; + } else if (slideText != null && slideText.cancelRect != null) { + AndroidUtilities.rectTmp.set(slideText.cancelRect); + slideText.getLocationOnScreen(coords); + AndroidUtilities.rectTmp.offset(coords[0], coords[1]); + recordCircle.getLocationOnScreen(coords); + AndroidUtilities.rectTmp.offset(-coords[0], -coords[1]); + if (AndroidUtilities.rectTmp.contains(x, y)) { + return 3; + } } } return HOST_ID; @@ -1666,6 +1679,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific if (isSendButtonVisible()) { list.add(1); list.add(2); + list.add(3); } } @@ -1678,6 +1692,16 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific rect.set((int) pauseRect.left, (int) pauseRect.top, (int) pauseRect.right, (int) pauseRect.bottom); info.setBoundsInParent(rect); info.setText(LocaleController.getString("Stop", R.string.Stop)); + } else if (id == 3) { + if (slideText != null && slideText.cancelRect != null) { + AndroidUtilities.rectTmp2.set(slideText.cancelRect); + slideText.getLocationOnScreen(coords); + AndroidUtilities.rectTmp2.offset(coords[0], coords[1]); + recordCircle.getLocationOnScreen(coords); + AndroidUtilities.rectTmp2.offset(-coords[0], -coords[1]); + info.setBoundsInParent(AndroidUtilities.rectTmp2); + } + info.setText(LocaleController.getString("Cancel", R.string.Cancel)); } } @@ -1907,12 +1931,10 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific return false; } if (isPopupShowing() && event.getAction() == MotionEvent.ACTION_DOWN) { - boolean rez = false; if (searchingType != 0) { setSearchingTypeInternal(0, false); emojiView.closeSearch(false); requestFocus(); - rez = true; } showPopup(AndroidUtilities.usingHardwareInput ? 0 : 2, 0); if (stickersExpanded) { @@ -1925,7 +1947,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } else { openKeyboardInternal(); } - return rez; + return true; } try { return super.onTouchEvent(event); @@ -2106,19 +2128,28 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific messageEditText.setBackgroundDrawable(null); messageEditText.setTextColor(getThemedColor(Theme.key_chat_messagePanelText)); messageEditText.setLinkTextColor(getThemedColor(Theme.key_chat_messageLinkOut)); + messageEditText.setHighlightColor(getThemedColor(Theme.key_chat_inTextSelectionHighlight)); messageEditText.setHintColor(getThemedColor(Theme.key_chat_messagePanelHint)); messageEditText.setHintTextColor(getThemedColor(Theme.key_chat_messagePanelHint)); messageEditText.setCursorColor(getThemedColor(Theme.key_chat_messagePanelCursor)); + messageEditText.setHandlesColor(getThemedColor(Theme.key_chat_TextSelectionCursor)); frameLayout.addView(messageEditText, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM, 52, 0, isChat ? 50 : 2, 0)); messageEditText.setOnKeyListener(new OnKeyListener() { boolean ctrlPressed = false; @Override - public boolean onKey(View view, int i, KeyEvent keyEvent) { - if (i == KeyEvent.KEYCODE_BACK && !keyboardVisible && isPopupShowing()) { + public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { + if (keyCode == KeyEvent.KEYCODE_BACK && !keyboardVisible && isPopupShowing() && keyEvent.getAction() == KeyEvent.ACTION_UP) { + if (ContentPreviewViewer.hasInstance() && ContentPreviewViewer.getInstance().isVisible()) { + ContentPreviewViewer.getInstance().closeWithMenu(); + return true; + } + if (currentPopupContentType == POPUP_CONTENT_BOT_KEYBOARD && botButtonsMessageObject != null) { + return false; + } if (keyEvent.getAction() == 1) { - if (currentPopupContentType == 1 && botButtonsMessageObject != null) { + if (currentPopupContentType == POPUP_CONTENT_BOT_KEYBOARD && botButtonsMessageObject != null) { SharedPreferences preferences = MessagesController.getMainSettings(currentAccount); preferences.edit().putInt("hidekeyboard_" + dialog_id, botButtonsMessageObject.getId()).commit(); } @@ -2133,16 +2164,20 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific setStickersExpanded(false, true, false); } else { if (stickersExpansionAnim == null) { - showPopup(0, 0); + if (botButtonsMessageObject != null && currentPopupContentType != POPUP_CONTENT_BOT_KEYBOARD && TextUtils.isEmpty(messageEditText.getText())) { + showPopup(1, POPUP_CONTENT_BOT_KEYBOARD); + } else { + showPopup(0, 0); + } } } } } return true; - } else if (i == KeyEvent.KEYCODE_ENTER && (ctrlPressed || sendByEnter) && keyEvent.getAction() == KeyEvent.ACTION_DOWN && editingMessageObject == null) { + } else if (keyCode == KeyEvent.KEYCODE_ENTER && (ctrlPressed || sendByEnter) && keyEvent.getAction() == KeyEvent.ACTION_DOWN && editingMessageObject == null) { sendMessage(); return true; - } else if (i == KeyEvent.KEYCODE_CTRL_LEFT || i == KeyEvent.KEYCODE_CTRL_RIGHT) { + } else if (keyCode == KeyEvent.KEYCODE_CTRL_LEFT || keyCode == KeyEvent.KEYCODE_CTRL_RIGHT) { ctrlPressed = keyEvent.getAction() == KeyEvent.ACTION_DOWN; return true; } @@ -2430,6 +2465,11 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific }; sizeNotifierLayout.addView(botWebViewMenuContainer, 15, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.BOTTOM)); botWebViewMenuContainer.setVisibility(GONE); + botWebViewMenuContainer.setOnDismissGlobalListener(()->{ + if (botButtonsMessageObject != null && TextUtils.isEmpty(messageEditText.getText()) && !botWebViewMenuContainer.hasSavedText()) { + showPopup(1, POPUP_CONTENT_BOT_KEYBOARD); + } + }); botButton = new ImageView(context); botButton.setImageDrawable(botButtonDrawable = new ReplaceableIconDrawable(context)); @@ -2440,6 +2480,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific botButton.setBackgroundDrawable(Theme.createSelectorDrawable(getThemedColor(Theme.key_listSelector))); } botButton.setVisibility(GONE); + AndroidUtilities.updateViewVisibilityAnimated(botButton, false, 0.1f, false); attachLayout.addView(botButton, LayoutHelper.createLinear(48, 48)); botButton.setOnClickListener(v -> { if (hasBotWebView() && botCommandsMenuIsShowing()) { @@ -2452,16 +2493,8 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific messageEditText.requestFocus(); } if (botReplyMarkup != null) { - if (!isPopupShowing() || currentPopupContentType != 1) { - showPopup(1, 1); - SharedPreferences preferences1 = MessagesController.getMainSettings(currentAccount); - preferences1.edit().remove("hidekeyboard_" + dialog_id).commit(); - } else { - if (botButtonsMessageObject != null) { - SharedPreferences preferences1 = MessagesController.getMainSettings(currentAccount); - preferences1.edit().putInt("hidekeyboard_" + dialog_id, botButtonsMessageObject.getId()).commit(); - } - openKeyboardInternal(); + if (!isPopupShowing() || currentPopupContentType != POPUP_CONTENT_BOT_KEYBOARD) { + showPopup(1, POPUP_CONTENT_BOT_KEYBOARD); } } else if (hasBotCommands) { setFieldText("/"); @@ -2961,6 +2994,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific recordTimeContainer = new LinearLayout(context); recordTimeContainer.setOrientation(LinearLayout.HORIZONTAL); recordTimeContainer.setPadding(AndroidUtilities.dp(13), 0, 0, 0); + recordTimeContainer.setFocusable(false); recordPanel.addView(recordTimeContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER_VERTICAL)); recordDot = new RecordDot(context); @@ -2985,6 +3019,8 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific audioVideoButtonContainer = new FrameLayout(context); audioVideoButtonContainer.setSoundEffectsEnabled(false); sendButtonContainer.addView(audioVideoButtonContainer, LayoutHelper.createFrame(48, 48)); + audioVideoButtonContainer.setFocusable(true); + audioVideoButtonContainer.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); audioVideoButtonContainer.setOnTouchListener((view, motionEvent) -> { if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { if (recordCircle.isSendButtonVisible()) { @@ -3003,7 +3039,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific messageTransitionIsRunning = false; AndroidUtilities.runOnUIThread(moveToSendStateRunnable = () -> { moveToSendStateRunnable = null; - updateRecordIntefrace(RECORD_STATE_SENDING); + updateRecordInterface(RECORD_STATE_SENDING); }, 200); } return false; @@ -3022,6 +3058,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } else { recordAudioVideoRunnable.run(); } + return true; } else if (motionEvent.getAction() == MotionEvent.ACTION_UP || motionEvent.getAction() == MotionEvent.ACTION_CANCEL) { if (motionEvent.getAction() == MotionEvent.ACTION_CANCEL && recordingAudioVideo) { if (recordCircle.slideToCancelProgress < 0.7f) { @@ -3033,7 +3070,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific MediaController.getInstance().stopRecording(0, false, 0); } recordingAudioVideo = false; - updateRecordIntefrace(RECORD_STATE_CANCEL_BY_GESTURE); + updateRecordInterface(RECORD_STATE_CANCEL_BY_GESTURE); } else { recordCircle.sendButtonVisible = true; startLockTransition(); @@ -3059,7 +3096,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific MediaController.getInstance().stopRecording(0, false, 0); } recordingAudioVideo = false; - updateRecordIntefrace(RECORD_STATE_CANCEL_BY_GESTURE); + updateRecordInterface(RECORD_STATE_CANCEL_BY_GESTURE); } else { if (recordAudioVideoRunnableStarted) { AndroidUtilities.cancelRunOnUIThread(recordAudioVideoRunnable); @@ -3083,10 +3120,11 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific messageTransitionIsRunning = false; AndroidUtilities.runOnUIThread(moveToSendStateRunnable = () -> { moveToSendStateRunnable = null; - updateRecordIntefrace(RECORD_STATE_SENDING); + updateRecordInterface(RECORD_STATE_SENDING); }, 500); } } + return true; } else if (motionEvent.getAction() == MotionEvent.ACTION_MOVE && recordingAudioVideo) { float x = motionEvent.getX(); float y = motionEvent.getY(); @@ -3130,8 +3168,9 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific MediaController.getInstance().stopRecording(0, false, 0); } recordingAudioVideo = false; - updateRecordIntefrace(RECORD_STATE_CANCEL_BY_GESTURE); + updateRecordInterface(RECORD_STATE_CANCEL_BY_GESTURE); } + return true; } view.onTouchEvent(motionEvent); return true; @@ -3144,6 +3183,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific audioSendButton.setPadding(0, 0, AndroidUtilities.dp(4), 0); audioSendButton.setContentDescription(LocaleController.getString("AccDescrVoiceMessage", R.string.AccDescrVoiceMessage)); audioSendButton.setFocusable(true); + audioSendButton.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); audioSendButton.setAccessibilityDelegate(mediaMessageButtonsDelegate); audioVideoButtonContainer.addView(audioSendButton, LayoutHelper.createFrame(48, 48)); @@ -3155,6 +3195,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific videoSendButton.setPadding(0, 0, AndroidUtilities.dp(4), 0); videoSendButton.setContentDescription(LocaleController.getString("AccDescrVideoMessage", R.string.AccDescrVideoMessage)); videoSendButton.setFocusable(true); + videoSendButton.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); videoSendButton.setAccessibilityDelegate(mediaMessageButtonsDelegate); audioVideoButtonContainer.addView(videoSendButton, LayoutHelper.createFrame(48, 48)); } @@ -3431,7 +3472,16 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific private void openWebViewMenu() { Runnable onRequestWebView = () -> { AndroidUtilities.hideKeyboard(this); - botWebViewMenuContainer.show(currentAccount, dialog_id, botMenuWebViewUrl); + if (AndroidUtilities.isTablet()) { + BotWebViewSheet webViewSheet = new BotWebViewSheet(getContext(), parentFragment.getResourceProvider()); + webViewSheet.setParentActivity(parentActivity); + webViewSheet.requestWebView(currentAccount, dialog_id, dialog_id, botMenuWebViewTitle, botMenuWebViewUrl, BotWebViewSheet.TYPE_BOT_MENU_BUTTON, 0, false); + webViewSheet.show(); + + botCommandsMenuButton.setOpened(false); + } else { + botWebViewMenuContainer.show(currentAccount, dialog_id, botMenuWebViewUrl); + } }; if (SharedPrefsHelper.isWebViewConfirmShown(currentAccount, dialog_id)) { @@ -3482,8 +3532,11 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific private void checkBotMenu() { if (botCommandsMenuButton != null) { + boolean wasExpanded = botCommandsMenuButton.expanded; botCommandsMenuButton.setExpanded(TextUtils.isEmpty(messageEditText.getText()) && !(keyboardVisible || waitingForKeyboardOpen || isPopupShowing()), true); - beginDelayedTransition(); + if (wasExpanded != botCommandsMenuButton.expanded) { + beginDelayedTransition(); + } } } @@ -3532,7 +3585,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific if (clip) { canvas.save(); if (child == textFieldContainer) { - int top = animatedTop + AndroidUtilities.dp(2); + int top = (int) (animatedTop + AndroidUtilities.dp(2) + chatSearchExpandOffset); if (topView != null && topView.getVisibility() == View.VISIBLE) { top += topView.getHeight(); } @@ -3563,6 +3616,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific Theme.chat_composeShadowDrawable.setAlpha((int) (composeShadowAlpha * 0xFF)); Theme.chat_composeShadowDrawable.setBounds(0, top, getMeasuredWidth(), bottom); Theme.chat_composeShadowDrawable.draw(canvas); + bottom += chatSearchExpandOffset; if (allowBlur) { backgroundPaint.setColor(getThemedColor(Theme.key_chat_messagePanelBackground)); if (SharedConfig.chatBlurEnabled() && sizeNotifierLayout != null) { @@ -3613,16 +3667,16 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific sendPopupWindow.dismiss(); } }); - sendPopupLayout.setShownFromBotton(false); + sendPopupLayout.setShownFromBottom(false); boolean scheduleButtonValue = parentFragment != null && parentFragment.canScheduleMessage(); boolean sendWithoutSoundButtonValue = !(self || slowModeTimer > 0 && !isInScheduleMode()); if (scheduleButtonValue) { ActionBarMenuSubItem scheduleButton = new ActionBarMenuSubItem(getContext(), true, !sendWithoutSoundButtonValue, resourcesProvider); if (self) { - scheduleButton.setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_schedule); + scheduleButton.setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_calendar2); } else { - scheduleButton.setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_schedule); + scheduleButton.setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_calendar2); } scheduleButton.setMinimumWidth(AndroidUtilities.dp(196)); scheduleButton.setOnClickListener(v -> { @@ -3661,7 +3715,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific sendPopupWindow.setInputMethodMode(ActionBarPopupWindow.INPUT_METHOD_NOT_NEEDED); sendPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED); sendPopupWindow.getContentView().setFocusableInTouchMode(true); - SharedConfig.removeScheduledOrNoSuoundHint(); + SharedConfig.removeScheduledOrNoSoundHint(); if (delegate != null) { delegate.onSendLongClick(); @@ -3755,7 +3809,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific MediaController.getInstance().stopRecording(0, false, 0); } recordingAudioVideo = false; - updateRecordIntefrace(RECORD_STATE_CANCEL); + updateRecordInterface(RECORD_STATE_CANCEL); } public void showContextProgress(boolean show) { @@ -3893,6 +3947,9 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific topView.setTranslationY(animatedTop + (1f - v) * topView.getLayoutParams().height); topLineView.setAlpha(v); topLineView.setTranslationY(animatedTop); + if (parentFragment != null && parentFragment.mentionContainer != null) { + parentFragment.mentionContainer.setTranslationY((1f - v) * topView.getLayoutParams().height); + } } }; @@ -3939,6 +3996,9 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific currentTopViewAnimation = null; } NotificationCenter.getInstance(currentAccount).onAnimationFinish(notificationsIndex); + if (parentFragment != null && parentFragment.mentionContainer != null) { + parentFragment.mentionContainer.setTranslationY(0); + } } }); currentTopViewAnimation.setDuration(ChatListItemAnimator.DEFAULT_DURATION + 20); @@ -4063,6 +4123,9 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific resizeForTopView(false); currentTopViewAnimation = null; } + if (parentFragment != null && parentFragment.mentionContainer != null) { + parentFragment.mentionContainer.setTranslationY(0); + } } @Override @@ -4326,7 +4389,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific updateScheduleButton(false); checkRoundVideo(); updateFieldHint(false); - updateSendAsButton(); + updateSendAsButton(false); } public void setChatInfo(TLRPC.ChatFull chatInfo) { @@ -5569,7 +5632,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific return moveToSendStateRunnable != null; } - private void updateRecordIntefrace(int recordState) { + private void updateRecordInterface(int recordState) { if (moveToSendStateRunnable != null) { AndroidUtilities.cancelRunOnUIThread(moveToSendStateRunnable); moveToSendStateRunnable = null; @@ -6475,6 +6538,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific scheduledButton.setVisibility(VISIBLE); } messageEditText.setText(draftMessage); + draftMessage = null; messageWebPageSearch = draftSearchWebpage; messageEditText.setSelection(messageEditText.length()); if (getVisibility() == VISIBLE) { @@ -6482,8 +6546,8 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } updateFieldRight(1); } - updateFieldHint(false); - updateSendAsButton(); + updateFieldHint(true); + updateSendAsButton(true); } public ImageView getAttachButton() { @@ -6779,6 +6843,10 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } public void updateSendAsButton() { + updateSendAsButton(true); + } + + public void updateSendAsButton(boolean animated) { if (parentFragment == null || delegate == null) { return; } @@ -6813,7 +6881,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific senderSelectView.setTag(null); } - if (parentFragment.getOtherSameChatsDiff() == 0 && parentFragment.fragmentOpened) { + if (parentFragment.getOtherSameChatsDiff() == 0 && parentFragment.fragmentOpened && animated) { ValueAnimator anim = ValueAnimator.ofFloat(0, 1).setDuration(150); senderSelectView.setTranslationX(startX); messageEditText.setTranslationX(senderSelectView.getTranslationX()); @@ -6878,10 +6946,11 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } else { senderSelectView.setVisibility(isVisible ? VISIBLE : GONE); senderSelectView.setTranslationX(endX); + float translationX = isVisible ? endX : 0; for (ImageView emoji : emojiButton) { - emoji.setTranslationX(endX); + emoji.setTranslationX(translationX); } - messageEditText.setTranslationX(endX); + messageEditText.setTranslationX(translationX); senderSelectView.setAlpha(endAlpha); senderSelectView.setTag(null); } @@ -6905,20 +6974,18 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } boolean hasBotWebView = hasBotWebView(); boolean canShowBotsMenu = botMenuButtonType != BotMenuButtonType.NO_BUTTON && dialog_id > 0; -// if (canShowBotsMenu && ) { -// TLRPC.Chat chat = accountInstance.getMessagesController().getChat(-dialog_id); -// canShowBotsMenu = chat == null || !chat.megagroup; -// } - + boolean wasVisible = botButton.getVisibility() == VISIBLE; if (hasBotWebView || hasBotCommands || botReplyMarkup != null) { if (botReplyMarkup != null) { - if (botButton.getVisibility() != VISIBLE) { - botButton.setVisibility(VISIBLE); - } - if (isPopupShowing() && currentPopupContentType == 1) { - botButtonDrawable.setIcon(R.drawable.input_keyboard, true); - botButton.setContentDescription(LocaleController.getString("AccDescrShowKeyboard", R.string.AccDescrShowKeyboard)); + if (isPopupShowing() && currentPopupContentType == POPUP_CONTENT_BOT_KEYBOARD) { + if (botButton.getVisibility() != GONE) { + botButton.setVisibility(GONE); + } } else { + if (botButton.getVisibility() != VISIBLE) { + botButton.setVisibility(VISIBLE); + } + botButtonDrawable.setIcon(R.drawable.input_bot2, true); botButton.setContentDescription(LocaleController.getString("AccDescrBotKeyboard", R.string.AccDescrBotKeyboard)); } @@ -6934,11 +7001,28 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } else { botButton.setVisibility(GONE); } + boolean wasWebView = botCommandsMenuButton.isWebView; botCommandsMenuButton.setWebView(botMenuButtonType == BotMenuButtonType.WEB_VIEW); - botCommandsMenuButton.setMenuText(botMenuButtonType == BotMenuButtonType.COMMANDS ? LocaleController.getString(R.string.BotsMenuTitle) : botMenuWebViewTitle); + boolean textChanged = botCommandsMenuButton.setMenuText(botMenuButtonType == BotMenuButtonType.COMMANDS ? LocaleController.getString(R.string.BotsMenuTitle) : botMenuWebViewTitle); AndroidUtilities.updateViewVisibilityAnimated(botCommandsMenuButton, canShowBotsMenu, 0.5f, animated); - if (animated) { + boolean changed = (botButton.getVisibility() == VISIBLE) != wasVisible || textChanged || wasWebView != botCommandsMenuButton.isWebView; + if (changed && animated) { beginDelayedTransition(); + + boolean show = botButton.getVisibility() == VISIBLE; + if (show != wasVisible) { + botButton.setVisibility(VISIBLE); + if (show) { + botButton.setAlpha(0f); + botButton.setScaleX(0.1f); + botButton.setScaleY(0.1f); + } else if (!show) { + botButton.setAlpha(1f); + botButton.setScaleX(1f); + botButton.setScaleY(1f); + } + AndroidUtilities.updateViewVisibilityAnimated(botButton, show, 0.1f, true); + } } updateFieldRight(2); attachLayout.setPivotX(AndroidUtilities.dp((botButton == null || botButton.getVisibility() == GONE) && (notifyButton == null || notifyButton.getVisibility() == GONE) ? 48 : 96)); @@ -7018,19 +7102,18 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific if (botReplyMarkup != null) { SharedPreferences preferences = MessagesController.getMainSettings(currentAccount); - boolean keyboardHidden = preferences.getInt("hidekeyboard_" + dialog_id, 0) == messageObject.getId(); boolean showPopup = true; if (botButtonsMessageObject != replyingMessageObject && botReplyMarkup.single_use) { if (preferences.getInt("answered_" + dialog_id, 0) == messageObject.getId()) { showPopup = false; } } - if (showPopup && !keyboardHidden && messageEditText.length() == 0 && !isPopupShowing()) { + if (showPopup && messageEditText.length() == 0 && !isPopupShowing()) { showPopup(1, 1); } botKeyboardView.setButtons(botReplyMarkup); } else { - if (isPopupShowing() && currentPopupContentType == 1) { + if (isPopupShowing() && currentPopupContentType == POPUP_CONTENT_BOT_KEYBOARD) { if (openKeyboard) { clearBotButtonsOnKeyboardOpen = true; openKeyboardInternal(); @@ -7069,7 +7152,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific BotWebViewSheet webViewSheet = new BotWebViewSheet(getContext(), resourcesProvider); webViewSheet.setParentActivity(parentActivity); - webViewSheet.requestWebView(currentAccount, messageObject.messageOwner.dialog_id, botId, button.text, button.url, button instanceof TLRPC.TL_keyboardButtonSimpleWebView, replyMessageObject != null ? replyMessageObject.messageOwner.id : 0, false); + webViewSheet.requestWebView(currentAccount, messageObject.messageOwner.dialog_id, botId, button.text, button.url, button instanceof TLRPC.TL_keyboardButtonSimpleWebView ? BotWebViewSheet.TYPE_SIMPLE_WEB_VIEW_BUTTON : BotWebViewSheet.TYPE_WEB_VIEW_BUTTON, replyMessageObject != null ? replyMessageObject.messageOwner.id : 0, false); webViewSheet.show(); } }; @@ -7283,7 +7366,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific if (gif instanceof TLRPC.Document) { TLRPC.Document document = (TLRPC.Document) gif; SendMessagesHelper.getInstance(currentAccount).sendSticker(document, query, dialog_id, replyingMessageObject, getThreadMessage(), parent, null, notify, scheduleDate); - MediaDataController.getInstance(currentAccount).addRecentGif(document, (int) (System.currentTimeMillis() / 1000)); + MediaDataController.getInstance(currentAccount).addRecentGif(document, (int) (System.currentTimeMillis() / 1000), true); if (DialogObject.isEncryptedDialog(dialog_id)) { accountInstance.getMessagesController().saveGif(parent, document); } @@ -7291,7 +7374,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific TLRPC.BotInlineResult result = (TLRPC.BotInlineResult) gif; if (result.document != null) { - MediaDataController.getInstance(currentAccount).addRecentGif(result.document, (int) (System.currentTimeMillis() / 1000)); + MediaDataController.getInstance(currentAccount).addRecentGif(result.document, (int) (System.currentTimeMillis() / 1000), false); if (DialogObject.isEncryptedDialog(dialog_id)) { accountInstance.getMessagesController().saveGif(parent, result.document); } @@ -7580,6 +7663,10 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } private void showPopup(int show, int contentType) { + showPopup(show, contentType, true); + } + + private void showPopup(int show, int contentType, boolean allowAnimation) { if (show == 2) { return; } @@ -7594,7 +7681,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific View currentView = null; boolean anotherPanelWasVisible = false; boolean samePannelWasVisible = false; - int previusHeight = 0; + int previousHeight = 0; if (contentType == 0) { if (emojiView.getParent() == null) { sizeNotifierLayout.addView(emojiView, sizeNotifierLayout.getChildCount() - 5); @@ -7606,12 +7693,12 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific botKeyboardView.setVisibility(GONE); botKeyboardViewVisible = false; anotherPanelWasVisible = true; - previusHeight = botKeyboardView.getMeasuredHeight(); + previousHeight = botKeyboardView.getMeasuredHeight(); } emojiView.setShowing(true); currentView = emojiView; animatingContentType = 0; - } else if (contentType == 1) { + } else if (contentType == POPUP_CONTENT_BOT_KEYBOARD) { samePannelWasVisible = botKeyboardViewVisible && botKeyboardView.getVisibility() == View.VISIBLE; botKeyboardViewVisible = true; if (emojiView != null && emojiView.getVisibility() != GONE) { @@ -7620,11 +7707,11 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific emojiView.setShowing(false); emojiViewVisible = false; anotherPanelWasVisible = true; - previusHeight = emojiView.getMeasuredHeight(); + previousHeight = emojiView.getMeasuredHeight(); } botKeyboardView.setVisibility(VISIBLE); currentView = botKeyboardView; - animatingContentType = 1; + animatingContentType = POPUP_CONTENT_BOT_KEYBOARD; } currentPopupContentType = contentType; @@ -7638,7 +7725,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific /*if (!samePannelWasVisible && !anotherPanelWasVisible) { currentHeight = 0; } else */ - if (contentType == 1) { + if (contentType == POPUP_CONTENT_BOT_KEYBOARD) { currentHeight = Math.min(botKeyboardView.getKeyboardHeight(), currentHeight); } if (botKeyboardView != null) { @@ -7656,10 +7743,10 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific setEmojiButtonImage(true, true); updateBotButton(true); onWindowSizeChanged(); - if (smoothKeyboard && !keyboardVisible && currentHeight != previusHeight) { + if (smoothKeyboard && !keyboardVisible && currentHeight != previousHeight && allowAnimation) { panelAnimation = new AnimatorSet(); - currentView.setTranslationY(currentHeight - previusHeight); - panelAnimation.playTogether(ObjectAnimator.ofFloat(currentView, View.TRANSLATION_Y, currentHeight - previusHeight, 0)); + currentView.setTranslationY(currentHeight - previousHeight); + panelAnimation.playTogether(ObjectAnimator.ofFloat(currentView, View.TRANSLATION_Y, currentHeight - previousHeight, 0)); panelAnimation.setInterpolator(AdjustPanLayoutHelper.keyboardInterpolator); panelAnimation.setDuration(AdjustPanLayoutHelper.keyboardDuration); panelAnimation.addListener(new AnimatorListenerAdapter() { @@ -7890,15 +7977,14 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } } - public void hidePopup(boolean byBackButton) { - hidePopup(byBackButton, false); + public boolean hidePopup(boolean byBackButton) { + return hidePopup(byBackButton, false); } - public void hidePopup(boolean byBackButton, boolean forceAnimate) { + public boolean hidePopup(boolean byBackButton, boolean forceAnimate) { if (isPopupShowing()) { - if (currentPopupContentType == 1 && byBackButton && botButtonsMessageObject != null) { - SharedPreferences preferences = MessagesController.getMainSettings(currentAccount); - preferences.edit().putInt("hidekeyboard_" + dialog_id, botButtonsMessageObject.getId()).commit(); + if (currentPopupContentType == POPUP_CONTENT_BOT_KEYBOARD && byBackButton && botButtonsMessageObject != null) { + return false; } if (byBackButton && searchingType != 0 || forceAnimate) { setSearchingTypeInternal(0, true); @@ -7918,7 +8004,9 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } showPopup(0, 0); } + return true; } + return false; } private void setSearchingTypeInternal(int searchingType, boolean animated) { @@ -8018,7 +8106,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } public void addRecentGif(TLRPC.Document searchImage) { - MediaDataController.getInstance(currentAccount).addRecentGif(searchImage, (int) (System.currentTimeMillis() / 1000)); + MediaDataController.getInstance(currentAccount).addRecentGif(searchImage, (int) (System.currentTimeMillis() / 1000), true); if (emojiView != null) { emojiView.addRecentGif(searchImage); } @@ -8066,14 +8154,14 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific if (isPopupShowing()) { int newHeight = isWidthGreater ? keyboardHeightLand : keyboardHeight; - if (currentPopupContentType == 1 && !botKeyboardView.isFullSize()) { + if (currentPopupContentType == POPUP_CONTENT_BOT_KEYBOARD && !botKeyboardView.isFullSize()) { newHeight = Math.min(botKeyboardView.getKeyboardHeight(), newHeight); } View currentView = null; if (currentPopupContentType == 0) { currentView = emojiView; - } else if (currentPopupContentType == 1) { + } else if (currentPopupContentType == POPUP_CONTENT_BOT_KEYBOARD) { currentView = botKeyboardView; } if (botKeyboardView != null) { @@ -8128,6 +8216,13 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific checkBotMenu(); if (keyboardVisible && isPopupShowing() && stickersExpansionAnim == null) { showPopup(0, currentPopupContentType); + } else if (!keyboardVisible && !isPopupShowing() && botButtonsMessageObject != null && replyingMessageObject != botButtonsMessageObject && (!hasBotWebView() || !botCommandsMenuIsShowing()) && TextUtils.isEmpty(messageEditText.getText())) { + if (sizeNotifierLayout.adjustPanLayoutHelper.animationInProgress()) { + sizeNotifierLayout.adjustPanLayoutHelper.stopTransition(); + } else { + sizeNotifierLayout.adjustPanLayoutHelper.ignoreOnce(); + } + showPopup(1, POPUP_CONTENT_BOT_KEYBOARD, false); } if (emojiPadding != 0 && !keyboardVisible && keyboardVisible != oldValue && !isPopupShowing()) { emojiPadding = 0; @@ -8216,10 +8311,10 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } } if (state != RECORD_STATE_PREPARING) { - updateRecordIntefrace(state); + updateRecordInterface(state); } } else { - updateRecordIntefrace(RECORD_STATE_CANCEL); + updateRecordInterface(RECORD_STATE_CANCEL); } } if (id == NotificationCenter.recordStopped) { @@ -8238,7 +8333,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } if (!recordingAudioVideo) { recordingAudioVideo = true; - updateRecordIntefrace(RECORD_STATE_ENTER); + updateRecordInterface(RECORD_STATE_ENTER); } else { recordCircle.showWaves(true, true); } @@ -8260,7 +8355,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific videoTimelineView.setKeyframes(keyframes); videoTimelineView.setVisibility(VISIBLE); videoTimelineView.setMinProgressDiff(1000.0f / videoToSendMessageObject.estimatedDuration); - updateRecordIntefrace(RECORD_STATE_PREPARING); + updateRecordInterface(RECORD_STATE_PREPARING); checkSendButton(false); } else { audioToSend = (TLRPC.TL_document) args[1]; @@ -8312,7 +8407,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } recordedAudioTimeTextView.setText(AndroidUtilities.formatShortDuration(duration)); checkSendButton(false); - updateRecordIntefrace(RECORD_STATE_PREPARING); + updateRecordInterface(RECORD_STATE_PREPARING); } else { if (delegate != null) { delegate.onMessageSend(null, true, 0); @@ -8365,7 +8460,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific updateSlowModeText(); } } else if (id == NotificationCenter.audioRecordTooShort) { - updateRecordIntefrace(RECORD_STATE_CANCEL_BY_TIME); + updateRecordInterface(RECORD_STATE_CANCEL_BY_TIME); } else if (id == NotificationCenter.updateBotMenuButton) { long botId = (long) args[0]; TLRPC.BotMenuButton botMenuButton = (TLRPC.BotMenuButton) args[1]; @@ -8706,7 +8801,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific StaticLayout cancelLayout; private boolean pressed; - private Rect cancelRect = new Rect(); + public Rect cancelRect = new Rect(); Drawable selectableBackground; private int lastSize; @@ -8736,21 +8831,25 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific return false; } if (event.getAction() == MotionEvent.ACTION_UP && cancelRect.contains(x, y)) { - if (hasRecordVideo && videoSendButton.getTag() != null) { - CameraController.getInstance().cancelOnInitRunnable(onFinishInitCameraRunnable); - delegate.needStartRecordVideo(5, true, 0); - } else { - delegate.needStartRecordAudio(0); - MediaController.getInstance().stopRecording(0, false, 0); - } - recordingAudioVideo = false; - updateRecordIntefrace(RECORD_STATE_CANCEL); + onCancelButtonPressed(); } return true; } return pressed; } + public void onCancelButtonPressed() { + if (hasRecordVideo && videoSendButton.getTag() != null) { + CameraController.getInstance().cancelOnInitRunnable(onFinishInitCameraRunnable); + delegate.needStartRecordVideo(5, true, 0); + } else { + delegate.needStartRecordAudio(0); + MediaController.getInstance().stopRecording(0, false, 0); + } + recordingAudioVideo = false; + updateRecordInterface(RECORD_STATE_CANCEL); + } + boolean smallSize; @@ -8897,6 +8996,18 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific canvas.restore(); } + float xi; + float yi = (getMeasuredHeight() - cancelLayout.getHeight()) / 2f; + if (!enableTransition) { + yi -= (AndroidUtilities.dp(12) - offsetY); + } + if (enableTransition) { + xi = x + offset; + } else { + xi = cancelX; + } + cancelRect.set((int) xi, (int) yi, (int) (xi + cancelLayout.getWidth()), (int) (yi + cancelLayout.getHeight())); + cancelRect.inset(-AndroidUtilities.dp(16), -AndroidUtilities.dp(16)); if (cancelToProgress > 0) { selectableBackground.setBounds( getMeasuredWidth() / 2 - w, getMeasuredHeight() / 2 - w, @@ -8904,20 +9015,8 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific ); selectableBackground.draw(canvas); - float xi; - float yi = (getMeasuredHeight() - cancelLayout.getHeight()) / 2f; - if (!enableTransition) { - yi -= (AndroidUtilities.dp(12) - offsetY); - } - if (enableTransition) { - xi = x + offset; - } else { - xi = cancelX; - } canvas.save(); canvas.translate(xi, yi); - cancelRect.set((int) xi, (int) yi, (int) (xi + cancelLayout.getWidth()), (int) (yi + cancelLayout.getHeight())); - cancelRect.inset(-AndroidUtilities.dp(16), -AndroidUtilities.dp(16)); cancelLayout.draw(canvas); canvas.restore(); } else { @@ -9324,6 +9423,11 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific return paint != null ? paint : Theme.getThemePaint(paintKey); } + public void setChatSearchExpandOffset(float chatSearchExpandOffset) { + this.chatSearchExpandOffset = chatSearchExpandOffset; + invalidate(); + } + public enum BotMenuButtonType { NO_BUTTON, COMMANDS, diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java index 06f605eff..0462a7525 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java @@ -27,6 +27,7 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.graphics.RectF; +import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; @@ -69,6 +70,7 @@ import androidx.recyclerview.widget.RecyclerView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.ContactsController; +import org.telegram.messenger.DocumentObject; import org.telegram.messenger.Emoji; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; @@ -83,6 +85,7 @@ import org.telegram.messenger.SharedConfig; import org.telegram.messenger.UserConfig; import org.telegram.messenger.UserObject; import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenuItem; @@ -97,11 +100,14 @@ import org.telegram.ui.ActionBar.ThemeDescription; import org.telegram.ui.BasePermissionsActivity; import org.telegram.ui.ChatActivity; import org.telegram.ui.PassportActivity; +import org.telegram.ui.PaymentFormActivity; import org.telegram.ui.PhotoPickerActivity; import org.telegram.ui.PhotoPickerSearchActivity; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Locale; import java.util.Objects; public class ChatAttachAlert extends BottomSheet implements NotificationCenter.NotificationCenterDelegate, BottomSheet.BottomSheetDelegateInterface { @@ -109,7 +115,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N public ChatActivity.ThemeDelegate parentThemeDelegate; private final NumberTextView captionLimitView; - private final int currentLimit; + private int currentLimit; private int codepointCount; public boolean canOpenPreview = false; @@ -121,7 +127,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N } public float getClipLayoutBottom() { - float alphaOffset = (frameLayout2.getMeasuredHeight()- AndroidUtilities.dp(84)) * (1f -frameLayout2.getAlpha()); + float alphaOffset = (frameLayout2.getMeasuredHeight() - AndroidUtilities.dp(84)) * (1f - frameLayout2.getAlpha()); return frameLayout2.getMeasuredHeight() - alphaOffset; } @@ -131,7 +137,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N public void showBotLayout(long id, String startCommand) { if (botAttachLayouts.get(id) == null || !Objects.equals(startCommand, botAttachLayouts.get(id).getStartCommand()) || botAttachLayouts.get(id).needReload()) { - if (baseFragment instanceof ChatActivity && ((ChatActivity) baseFragment).getCurrentUser() != null) { + if (baseFragment instanceof ChatActivity) { ChatAttachAlertBotWebViewLayout webViewLayout = new ChatAttachAlertBotWebViewLayout(this, getContext(), resourcesProvider); botAttachLayouts.put(id, webViewLayout); botAttachLayouts.get(id).setDelegate(new BotWebViewContainer.Delegate() { @@ -153,6 +159,50 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N }, 150); } + @Override + public void onWebAppSetActionBarColor(String colorKey) { + int from = ((ColorDrawable) actionBar.getBackground()).getColor(); + int to = getThemedColor(colorKey); + + ValueAnimator animator = ValueAnimator.ofFloat(0, 1).setDuration(200); + animator.setInterpolator(CubicBezierInterpolator.DEFAULT); + animator.addUpdateListener(animation -> actionBar.setBackgroundColor(ColorUtils.blendARGB(from, to, (float) animation.getAnimatedValue()))); + animator.start(); + } + + @Override + public void onWebAppSetBackgroundColor(int color) { + webViewLayout.setCustomBackground(color); + } + + @Override + public void onWebAppOpenInvoice(String slug, TLObject response) { + BaseFragment parentFragment = baseFragment; + PaymentFormActivity paymentFormActivity = null; + if (response instanceof TLRPC.TL_payments_paymentForm) { + TLRPC.TL_payments_paymentForm form = (TLRPC.TL_payments_paymentForm) response; + MessagesController.getInstance(currentAccount).putUsers(form.users, false); + paymentFormActivity = new PaymentFormActivity(form, slug, parentFragment); + } else if (response instanceof TLRPC.TL_payments_paymentReceipt) { + paymentFormActivity = new PaymentFormActivity((TLRPC.TL_payments_paymentReceipt) response); + } + + if (paymentFormActivity != null) { + webViewLayout.scrollToTop(); + + AndroidUtilities.hideKeyboard(webViewLayout); + OverlayActionBarLayoutDialog overlayActionBarLayoutDialog = new OverlayActionBarLayoutDialog(parentFragment.getParentActivity(), resourcesProvider); + overlayActionBarLayoutDialog.show(); + paymentFormActivity.setPaymentFormCallback(status -> { + overlayActionBarLayoutDialog.dismiss(); + + webViewLayout.getWebViewContainer().onInvoiceStatusUpdate(slug, status.name().toLowerCase(Locale.ROOT)); + }); + paymentFormActivity.setResourcesProvider(resourcesProvider); + overlayActionBarLayoutDialog.addFragment(paymentFormActivity); + } + } + @Override public void onWebAppExpand() { if (currentAttachLayout != webViewLayout) { @@ -247,9 +297,14 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N }).start(); } } + + @Override + public void onSetBackButtonVisible(boolean visible) { + AndroidUtilities.updateImageViewImageAnimated(actionBar.getBackButton(), visible ? R.drawable.ic_ab_back : R.drawable.ic_close_white); + } }); MessageObject replyingObject = ((ChatActivity) baseFragment).getChatActivityEnterView().getReplyingMessageObject(); - botAttachLayouts.get(id).requestWebView(currentAccount, ((ChatActivity) baseFragment).getCurrentUser().id, id, false, replyingObject != null ? replyingObject.messageOwner.id : 0, startCommand); + botAttachLayouts.get(id).requestWebView(currentAccount, ((ChatActivity) baseFragment).getDialogId(), id, false, replyingObject != null ? replyingObject.messageOwner.id : 0, startCommand); } } if (botAttachLayouts.get(id) != null) { @@ -368,6 +423,14 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N } + boolean hasCustomBackground() { + return false; + } + + int getCustomBackground() { + return 0; + } + void onButtonsTranslationYUpdated() { } @@ -620,7 +683,6 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N super(context); setWillNotDraw(false); setFocusable(true); - setFocusableInTouchMode(true); imageView = new RLottieImageView(context) { @Override @@ -643,6 +705,14 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 0, 62, 0, 0)); } + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setText(textView.getText()); + info.setEnabled(true); + info.setSelected(checked); + } + void updateCheckedState(boolean animate) { if (checked == (currentId == selectedId)) { return; @@ -785,6 +855,16 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N addView(nameTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 6, 60, 6, 0)); } + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setEnabled(true); + if (selector != null && checked) { + info.setCheckable(true); + info.setChecked(true); + } + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(MeasureSpec.makeMeasureSpec(attachItemSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(100), MeasureSpec.EXACTLY)); @@ -930,7 +1010,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N TLRPC.Document iconDoc = icon.icon; imageView.getImageReceiver().setAllowStartLottieAnimation(false); - imageView.setImage(ImageLocation.getForDocument(iconDoc), String.valueOf(bot.bot_id), animated ? "tgs" : "svg", null, bot); + imageView.setImage(ImageLocation.getForDocument(iconDoc), String.valueOf(bot.bot_id), animated ? "tgs" : "svg", DocumentObject.getSvgThumb(iconDoc, Theme.key_windowBackgroundGray, 1f), bot); } imageView.setSize(AndroidUtilities.dp(28), AndroidUtilities.dp(28)); @@ -965,6 +1045,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N setDelegate(this); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.reloadInlineHints); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.attachMenuBotsDidLoad); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.currentUserPremiumStatusChanged); exclusionRects.add(exclustionRect); sizeNotifierFrameLayout = new SizeNotifierFrameLayout(context) { @@ -1288,7 +1369,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N height -= AndroidUtilities.statusBarHeight; } - int backgroundColor = getThemedColor(forceDarkTheme ? Theme.key_voipgroup_listViewBackground : Theme.key_dialogBackground); + int backgroundColor = currentAttachLayout.hasCustomBackground() ? currentAttachLayout.getCustomBackground() : getThemedColor(forceDarkTheme ? Theme.key_voipgroup_listViewBackground : Theme.key_dialogBackground); shadowDrawable.setAlpha(viewAlpha); shadowDrawable.setBounds(0, top, getMeasuredWidth(), height); shadowDrawable.draw(canvas); @@ -1382,7 +1463,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N height -= AndroidUtilities.statusBarHeight; } - int backgroundColor = getThemedColor(forceDarkTheme ? Theme.key_voipgroup_listViewBackground : Theme.key_dialogBackground); + int backgroundColor = currentAttachLayout.hasCustomBackground() ? currentAttachLayout.getCustomBackground() : getThemedColor(forceDarkTheme ? Theme.key_voipgroup_listViewBackground : Theme.key_dialogBackground); boolean drawBackground = !(currentAttachLayout == photoPreviewLayout || nextAttachLayout == photoPreviewLayout || (currentAttachLayout == photoLayout && nextAttachLayout == null)); if (drawBackground) { shadowDrawable.setAlpha(viewAlpha); @@ -1458,7 +1539,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N if (inBubbleMode) { return; } - int color1 = getThemedColor(forceDarkTheme ? Theme.key_voipgroup_listViewBackground : Theme.key_dialogBackground); + int color1 = currentAttachLayout.hasCustomBackground() ? currentAttachLayout.getCustomBackground() : getThemedColor(forceDarkTheme ? Theme.key_voipgroup_listViewBackground : Theme.key_dialogBackground); int finalColor = Color.argb((int) (255 * actionBar.getAlpha()), Color.red(color1), Color.green(color1), Color.blue(color1)); Theme.dialogs_onlineCirclePaint.setColor(finalColor); canvas.drawRect(backgroundPaddingLeft, currentPanTranslationY, getMeasuredWidth() - backgroundPaddingLeft, AndroidUtilities.statusBarHeight + currentPanTranslationY, Theme.dialogs_onlineCirclePaint); @@ -1534,6 +1615,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N containerView = sizeNotifierFrameLayout; containerView.setWillNotDraw(false); containerView.setClipChildren(false); + containerView.setClipToPadding(false); containerView.setPadding(backgroundPaddingLeft, 0, backgroundPaddingLeft, 0); actionBar = new ActionBar(context, resourcesProvider) { @@ -1729,18 +1811,10 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N selectedArrowImageView.setImageDrawable(arrowRight); selectedArrowImageView.setVisibility(View.GONE); selectedView.addView(selectedArrowImageView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 4, 1, 0, 0)); - + selectedView.setAlpha(1); headerView.addView(selectedView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT)); - mediaPreviewView = new LinearLayout(context) { - @Override - public void setAlpha(float alpha) { - selectedView.setAlpha(1f - alpha); - selectedView.setTranslationX(alpha * -AndroidUtilities.dp(16)); - mediaPreviewView.setTranslationX((1f - alpha) * AndroidUtilities.dp(16)); - super.setAlpha(alpha); - } - }; + mediaPreviewView = new LinearLayout(context); mediaPreviewView.setOrientation(LinearLayout.HORIZONTAL); mediaPreviewView.setGravity(Gravity.CENTER_VERTICAL); @@ -1801,6 +1875,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N buttonsRecyclerView.setLayoutAnimation(null); buttonsRecyclerView.setGlowColor(getThemedColor(Theme.key_dialogScrollGlow)); buttonsRecyclerView.setBackgroundColor(getThemedColor(Theme.key_dialogBackground)); + buttonsRecyclerView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); containerView.addView(buttonsRecyclerView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 84, Gravity.BOTTOM | Gravity.LEFT)); buttonsRecyclerView.setOnItemClickListener((view, position) -> { if (baseFragment.getParentActivity() == null) { @@ -1942,7 +2017,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N float alphaOffset = (frameLayout2.getMeasuredHeight() - AndroidUtilities.dp(84)) * (1f - getAlpha()); shadow.setTranslationY(-(frameLayout2.getMeasuredHeight() - AndroidUtilities.dp(84)) + captionEditTextTopOffset + currentPanTranslationY + bottomPannelTranslation + alphaOffset + botMainButtonOffsetY); - int newColor = getThemedColor(forceDarkTheme ? Theme.key_voipgroup_listViewBackground : Theme.key_dialogBackground); + int newColor = currentAttachLayout.hasCustomBackground() ? currentAttachLayout.getCustomBackground() : getThemedColor(forceDarkTheme ? Theme.key_voipgroup_listViewBackground : Theme.key_dialogBackground); if (color != newColor) { color = newColor; p.setColor(color); @@ -1973,7 +2048,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N captionLimitView.setCenterAlign(true); frameLayout2.addView(captionLimitView, LayoutHelper.createFrame(56, 20, Gravity.BOTTOM | Gravity.RIGHT, 3, 0, 14, 78)); - currentLimit = MessagesController.getInstance(UserConfig.selectedAccount).maxCaptionLength; + currentLimit = MessagesController.getInstance(UserConfig.selectedAccount).getCaptionMaxLengthLimit(); commentTextView = new EditTextEmoji(context, sizeNotifierFrameLayout, null, EditTextEmoji.STYLE_DIALOG, resourcesProvider) { @@ -2235,7 +2310,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N sendPopupWindow.dismiss(); } }); - sendPopupLayout.setShownFromBotton(false); + sendPopupLayout.setShownFromBottom(false); itemCells = new ActionBarMenuSubItem[2]; int i = 0; @@ -2251,9 +2326,9 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N itemCells[a] = new ActionBarMenuSubItem(getContext(), a == 0, a == 1, resourcesProvider); if (num == 0) { if (UserObject.isUserSelf(user)) { - itemCells[a].setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_schedule); + itemCells[a].setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_calendar2); } else { - itemCells[a].setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_schedule); + itemCells[a].setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_calendar2); } } else if (num == 1) { itemCells[a].setTextAndIcon(LocaleController.getString("SendWithoutSound", R.string.SendWithoutSound), R.drawable.input_notify_off); @@ -2394,13 +2469,10 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N } openTransitionFinished = false; if (Build.VERSION.SDK_INT >= 30) { - int color = getThemedColor(Theme.key_windowBackgroundGray); - AndroidUtilities.setNavigationBarColor(getWindow(), color, false, tcolor -> { - navBarColorKey = null; - navBarColor = tcolor; - containerView.invalidate(); - }); - AndroidUtilities.setLightNavigationBar(getWindow(), AndroidUtilities.computePerceivedBrightness(color) > 0.721); + navBarColorKey = null; + navBarColor = ColorUtils.setAlphaComponent(getThemedColor(Theme.key_windowBackgroundGray), 0); + AndroidUtilities.setNavigationBarColor(getWindow(), navBarColor, false); + AndroidUtilities.setLightNavigationBar(getWindow(), AndroidUtilities.computePerceivedBrightness(navBarColor) > 0.721); } } @@ -2601,29 +2673,39 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N nextAttachLayout.setAlpha(1); currentAttachLayout.setAlpha(1); ATTACH_ALERT_LAYOUT_TRANSLATION.set(currentAttachLayout, 0.0f); + AndroidUtilities.runOnUIThread(() -> { + float fromActionBarAlpha = actionBar.getAlpha(); + boolean showActionBar = nextAttachLayout.getCurrentItemTop() <= layout.getButtonsHideOffset(); + float toActionBarAlpha = showActionBar ? 1f : 0f; + SpringAnimation springAnimation = new SpringAnimation(new FloatValueHolder(0)); + springAnimation.addUpdateListener((animation, value, velocity) -> { + float f = value / 500f; + ATTACH_ALERT_LAYOUT_TRANSLATION.set(currentAttachLayout, f); + actionBar.setAlpha(AndroidUtilities.lerp(fromActionBarAlpha, toActionBarAlpha, f)); + updateLayout(currentAttachLayout, false, 0); + updateLayout(nextAttachLayout, false, 0); + float mediaPreviewAlpha = nextAttachLayout instanceof ChatAttachAlertPhotoLayoutPreview && !showActionBar ? f : 1f - f; + mediaPreviewView.setAlpha(mediaPreviewAlpha); + selectedView.setAlpha(1f - mediaPreviewAlpha); + selectedView.setTranslationX(mediaPreviewAlpha * -AndroidUtilities.dp(16)); + mediaPreviewView.setTranslationX((1f - mediaPreviewAlpha) * AndroidUtilities.dp(16)); + }); + springAnimation.addEndListener((animation, canceled, value, velocity) -> { + currentAttachLayout.onHideShowProgress(1f); + nextAttachLayout.onHideShowProgress(1f); + currentAttachLayout.onContainerTranslationUpdated(currentPanTranslationY); + nextAttachLayout.onContainerTranslationUpdated(currentPanTranslationY); + containerView.invalidate(); + actionBar.setTag(showActionBar ? 1 : null); + onEnd.run(); + }); + springAnimation.setSpring(new SpringForce(500f)); + springAnimation.getSpring().setDampingRatio(1f); + springAnimation.getSpring().setStiffness(1000.0f); + springAnimation.start(); - float fromActionBarAlpha = actionBar.getAlpha(); - SpringAnimation springAnimation = new SpringAnimation(new FloatValueHolder(0)); - springAnimation.addUpdateListener((animation, value, velocity) -> { - float f = value / 500f; - ATTACH_ALERT_LAYOUT_TRANSLATION.set(currentAttachLayout, f); - actionBar.setAlpha(AndroidUtilities.lerp(fromActionBarAlpha, 0, f)); - mediaPreviewView.setAlpha(nextAttachLayout instanceof ChatAttachAlertPhotoLayoutPreview ? f : 1f - f); + viewChangeAnimator = springAnimation; }); - springAnimation.addEndListener((animation, canceled, value, velocity) -> { - currentAttachLayout.onHideShowProgress(1f); - nextAttachLayout.onHideShowProgress(1f); - currentAttachLayout.onContainerTranslationUpdated(currentPanTranslationY); - nextAttachLayout.onContainerTranslationUpdated(currentPanTranslationY); - containerView.invalidate(); - onEnd.run(); - }); - springAnimation.setSpring(new SpringForce(500f)); - springAnimation.getSpring().setDampingRatio(1f); - springAnimation.getSpring().setStiffness(1000.0f); - springAnimation.start(); - - viewChangeAnimator = springAnimation; } } @@ -2905,6 +2987,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N protected boolean onCustomOpenAnimation() { photoLayout.setTranslationX(0); mediaPreviewView.setAlpha(0); + selectedView.setAlpha(1); int fromTranslationY = super.containerView.getMeasuredHeight(); super.containerView.setTranslationY(fromTranslationY); @@ -2916,6 +2999,17 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N ATTACH_ALERT_PROGRESS.set(this, 0.0f); buttonsAnimation.start(); + if (navigationBarAnimation != null) { + navigationBarAnimation.cancel(); + } + navigationBarAnimation = ValueAnimator.ofFloat(navigationBarAlpha, 1f); + navigationBarAnimation.addUpdateListener(a -> { + navigationBarAlpha = (float) a.getAnimatedValue(); + if (container != null) { + container.invalidate(); + } + }); + if (appearSpringAnimation != null) { appearSpringAnimation.cancel(); } @@ -2980,9 +3074,32 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.stopAllHeavyOperations, 512); currentSheetAnimation.start(); +// AndroidUtilities.runOnUIThread(() -> { +// if (currentSheetAnimation != null) { +// // closes keyboard so navigation bar buttons can be accessible +// ChatAttachAlert.this.delegate.needEnterComment(); +// } +// }, 75); + ValueAnimator navigationBarAnimator = ValueAnimator.ofFloat(0, 1); + setNavBarAlpha(0); + navigationBarAnimator.addUpdateListener(a -> { + setNavBarAlpha((float) a.getAnimatedValue()); + }); + navigationBarAnimator.setStartDelay(25); + navigationBarAnimator.setDuration(200); + navigationBarAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT); + navigationBarAnimator.start(); + return true; } + private void setNavBarAlpha(float alpha) { + navBarColor = ColorUtils.setAlphaComponent(getThemedColor(Theme.key_windowBackgroundGray), Math.min(255, Math.max(0, (int) (255 * alpha)))); + AndroidUtilities.setNavigationBarColor(getWindow(), navBarColor, false); + AndroidUtilities.setLightNavigationBar(getWindow(), AndroidUtilities.computePerceivedBrightness(navBarColor) > 0.721); + getContainer().invalidate(); + } + @Override protected boolean onContainerTouchEvent(MotionEvent event) { return currentAttachLayout.onContainerViewTouchEvent(event); @@ -3143,6 +3260,8 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N if (buttonsAdapter != null) { buttonsAdapter.notifyDataSetChanged(); } + } else if (id == NotificationCenter.currentUserPremiumStatusChanged) { + currentLimit = MessagesController.getInstance(UserConfig.selectedAccount).getCaptionMaxLengthLimit(); } } @@ -3301,7 +3420,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N return; } boolean show = layout == currentAttachLayout && newOffset <= layout.getButtonsHideOffset(); - if (currentAttachLayout != photoPreviewLayout && keyboardVisible && animated) { + if (currentAttachLayout != photoPreviewLayout && keyboardVisible && animated && !(currentAttachLayout instanceof ChatAttachAlertBotWebViewLayout)) { animated = false; } if (layout == currentAttachLayout) { @@ -3436,6 +3555,8 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N for (int i = 0; i < botAttachLayouts.size(); i++) { botAttachLayouts.valueAt(i).setMeasureOffsetY(0); } + shadow.setAlpha(1f); + shadow.setTranslationY(0); if (baseFragment instanceof ChatActivity && avatarPicker != 2) { TLRPC.Chat chat = ((ChatActivity) baseFragment).getCurrentChat(); @@ -3515,6 +3636,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N } NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.reloadInlineHints); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.attachMenuBotsDidLoad); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.currentUserPremiumStatusChanged); baseFragment = null; if (commentTextView != null) { commentTextView.onDestroy(); @@ -3603,6 +3725,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N private int attachBotsStartRow; private int attachBotsEndRow; + private List attachMenuBots = new ArrayList<>(); private int documentButton; private int musicButton; @@ -3628,6 +3751,8 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N view = new AttachBotButton(mContext); break; } + view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); + view.setFocusable(true); return new RecyclerListView.Holder(view); } @@ -3661,7 +3786,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N if (position >= attachBotsStartRow && position < attachBotsEndRow) { position -= attachBotsStartRow; child.setTag(position); - TLRPC.TL_attachMenuBot bot = MediaDataController.getInstance(currentAccount).getAttachMenuBots().bots.get(position); + TLRPC.TL_attachMenuBot bot = attachMenuBots.get(position); child.setAttachBot(MessagesController.getInstance(currentAccount).getUser(bot.bot_id), bot); break; } @@ -3722,9 +3847,18 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N if (mediaEnabled) { galleryButton = buttonsCount++; - if (baseFragment instanceof ChatActivity && ((ChatActivity) baseFragment).getCurrentUser() != null && !((ChatActivity) baseFragment).isInScheduleMode() && !((ChatActivity) baseFragment).isSecretChat()) { + if (baseFragment instanceof ChatActivity && !((ChatActivity) baseFragment).isInScheduleMode() && !((ChatActivity) baseFragment).isSecretChat()) { + ChatActivity chatActivity = (ChatActivity) baseFragment; + attachBotsStartRow = buttonsCount; - buttonsCount += MediaDataController.getInstance(currentAccount).getAttachMenuBots().bots.size(); + attachMenuBots.clear(); + for (TLRPC.TL_attachMenuBot bot : MediaDataController.getInstance(currentAccount).getAttachMenuBots().bots) { + if (MediaDataController.canShowAttachMenuBot(bot, chatActivity.getCurrentChat() != null ? chatActivity.getCurrentChat() : chatActivity.getCurrentUser())) { + attachMenuBots.add(bot); + } + } + + buttonsCount += attachMenuBots.size(); attachBotsEndRow = buttonsCount; } @@ -3835,7 +3969,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N @Override public void dismiss() { - if (currentAttachLayout.onDismiss()) { + if (currentAttachLayout.onDismiss() || isDismissed()) { return; } if (commentTextView != null) { @@ -3881,11 +4015,14 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N layouts[a].onDismiss(); } } - AndroidUtilities.setNavigationBarColor(getWindow(), ColorUtils.setAlphaComponent(navBarColor, 0), true, tcolor -> { + AndroidUtilities.setNavigationBarColor(getWindow(), ColorUtils.setAlphaComponent(getThemedColor(Theme.key_windowBackgroundGray), 0), true, tcolor -> { navBarColorKey = null; navBarColor = tcolor; containerView.invalidate(); }); + if (baseFragment != null) { + AndroidUtilities.setLightStatusBar(getWindow(), baseFragment.isLightStatusBar()); + } super.dismiss(); allowPassConfirmationAlert = false; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertBotWebViewLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertBotWebViewLayout.java index dfe6a65d8..ff995d21b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertBotWebViewLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertBotWebViewLayout.java @@ -21,6 +21,7 @@ import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.core.math.MathUtils; import androidx.core.view.GestureDetectorCompat; +import androidx.dynamicanimation.animation.FloatValueHolder; import androidx.dynamicanimation.animation.SpringAnimation; import androidx.dynamicanimation.animation.SpringForce; import androidx.recyclerview.widget.ChatListItemAnimator; @@ -28,6 +29,7 @@ import androidx.recyclerview.widget.ChatListItemAnimator; import org.json.JSONObject; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.FileLog; +import org.telegram.messenger.GenericProvider; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessagesController; @@ -39,6 +41,7 @@ import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; +import org.telegram.ui.ActionBar.ActionBarMenuSubItem; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ChatActivity; @@ -63,6 +66,7 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert private WebProgressView progressView; private WebViewSwipeContainer swipeContainer; private ActionBarMenuItem otherItem; + private ActionBarMenuSubItem settingsItem; private int measureOffsetY; @@ -71,6 +75,9 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert private boolean ignoreMeasure; private boolean isBotButtonAvailable; + private boolean hasCustomBackground; + private int customBackground; + private boolean destroyed; private Runnable pollRunnable = () -> { if (!destroyed) { @@ -83,6 +90,18 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert prolongWebView.reply_to_msg_id = replyToMsgId; prolongWebView.flags |= 1; } + + if (peerId < 0) { + TLRPC.ChatFull chatFull = MessagesController.getInstance(currentAccount).getChatFull(-peerId); + if (chatFull != null) { + TLRPC.Peer peer = chatFull.default_send_as; + if (peer != null) { + prolongWebView.send_as = MessagesController.getInstance(currentAccount).getInputPeer(peer); + prolongWebView.flags |= 8192; + } + } + } + ConnectionsManager.getInstance(currentAccount).sendRequest(prolongWebView, (response, error) -> AndroidUtilities.runOnUIThread(() -> { if (destroyed) { return; @@ -102,13 +121,16 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert ActionBarMenu menu = parentAlert.actionBar.createMenu(); otherItem = menu.addItem(0, R.drawable.ic_ab_other); otherItem.addSubItem(R.id.menu_open_bot, R.drawable.msg_bot, LocaleController.getString(R.string.BotWebViewOpenBot)); + settingsItem = otherItem.addSubItem(R.id.menu_settings, R.drawable.msg_settings, LocaleController.getString(R.string.BotWebViewSettings)); otherItem.addSubItem(R.id.menu_reload_page, R.drawable.msg_retry, LocaleController.getString(R.string.BotWebViewReloadPage)); otherItem.addSubItem(R.id.menu_delete_bot, R.drawable.msg_delete, LocaleController.getString(R.string.BotWebViewDeleteBot)); parentAlert.actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { - parentAlert.dismiss(); + if (!onBackPressed()) { + parentAlert.dismiss(); + } } else if (id == R.id.menu_open_bot) { Bundle bundle = new Bundle(); bundle.putLong("user_id", botId); @@ -125,7 +147,7 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert progressView.setVisibility(VISIBLE); webViewContainer.setBotUser(MessagesController.getInstance(currentAccount).getUser(botId)); - webViewContainer.loadFlicker(currentAccount, botId); + webViewContainer.loadFlickerAndSettingsItem(currentAccount, botId, settingsItem); webViewContainer.reload(); } else if (id == R.id.menu_delete_bot) { for (TLRPC.TL_attachMenuBot bot : MediaDataController.getInstance(currentAccount).getAttachMenuBots().bots) { @@ -134,6 +156,8 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert break; } } + } else if (id == R.id.menu_settings) { + webViewContainer.onSettingsButtonPressed(); } } }); @@ -164,6 +188,7 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert }); swipeContainer.setScrollEndListener(()-> webViewContainer.invalidateViewPortHeight(true)); swipeContainer.setDelegate(() -> parentAlert.dismiss()); + swipeContainer.setIsKeyboardVisible(obj -> parentAlert.sizeNotifierFrameLayout.getKeyboardHeight() >= AndroidUtilities.dp(20)); addView(swipeContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); addView(progressView = new WebProgressView(context, resourcesProvider), LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM, 0, 0, 0, 84)); @@ -189,6 +214,21 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.didSetNewTheme); } + public void setCustomBackground(int customBackground) { + this.customBackground = customBackground; + hasCustomBackground = true; + } + + @Override + boolean hasCustomBackground() { + return hasCustomBackground; + } + + @Override + public int getCustomBackground() { + return customBackground; + } + public boolean canExpandByRequest() { return /* System.currentTimeMillis() - lastSwipeTime > 1000 && */ !swipeContainer.isSwipeInProgress(); } @@ -283,6 +323,10 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert webViewContainer.setParentActivity(parentAlert.getBaseFragment().getParentActivity()); } otherItem.setVisibility(VISIBLE); + + if (!webViewContainer.isBackButtonVisible()) { + AndroidUtilities.updateImageViewImageAnimated(parentAlert.actionBar.getBackButton(), R.drawable.ic_close_white); + } } @Override @@ -344,12 +388,23 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert this.startCommand = startCommand; webViewContainer.setBotUser(MessagesController.getInstance(currentAccount).getUser(botId)); - webViewContainer.loadFlicker(currentAccount, botId); + webViewContainer.loadFlickerAndSettingsItem(currentAccount, botId, settingsItem); TLRPC.TL_messages_requestWebView req = new TLRPC.TL_messages_requestWebView(); req.peer = MessagesController.getInstance(currentAccount).getInputPeer(peerId); req.bot = MessagesController.getInstance(currentAccount).getInputUser(botId); req.silent = silent; + + if (peerId < 0) { + TLRPC.ChatFull chatFull = MessagesController.getInstance(currentAccount).getChatFull(-peerId); + if (chatFull != null) { + TLRPC.Peer peer = chatFull.default_send_as; + if (peer != null) { + req.send_as = MessagesController.getInstance(currentAccount).getInputPeer(peer); + req.flags |= 8192; + } + } + } if (startCommand != null) { req.start_param = startCommand; req.flags |= 8; @@ -363,6 +418,7 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert try { JSONObject jsonObject = new JSONObject(); jsonObject.put("bg_color", getThemedColor(Theme.key_dialogBackground)); + jsonObject.put("secondary_bg_color", getThemedColor(Theme.key_windowBackgroundGray)); jsonObject.put("text_color", getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); jsonObject.put("hint_color", getThemedColor(Theme.key_windowBackgroundWhiteHintText)); jsonObject.put("link_color", getThemedColor(Theme.key_windowBackgroundWhiteLinkText)); @@ -380,7 +436,7 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert if (response instanceof TLRPC.TL_webViewResultUrl) { TLRPC.TL_webViewResultUrl resultUrl = (TLRPC.TL_webViewResultUrl) response; queryId = resultUrl.query_id; - webViewContainer.loadUrl(resultUrl.url); + webViewContainer.loadUrl(currentAccount, resultUrl.url); swipeContainer.setWebView(webViewContainer.getWebView()); AndroidUtilities.runOnUIThread(pollRunnable); @@ -410,6 +466,10 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert super.onHide(); otherItem.setVisibility(GONE); isBotButtonAvailable = false; + if (!webViewContainer.isBackButtonVisible()) { + AndroidUtilities.updateImageViewImageAnimated(parentAlert.actionBar.getBackButton(), R.drawable.ic_ab_back); + } + parentAlert.actionBar.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); if (webViewContainer.hasUserPermissions()) { webViewContainer.destroyWebView(); @@ -523,12 +583,13 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert private boolean isSwipeDisallowed; private float topActionBarOffsetY = ActionBar.getCurrentActionBarHeight(); - private float offsetY = -1; + private float offsetY = 0; private float pendingOffsetY = -1; + private float pendingSwipeOffsetY = Integer.MIN_VALUE; private float swipeOffsetY; private boolean isSwipeOffsetAnimationDisallowed; - private ValueAnimator offsetYAnimator; + private SpringAnimation offsetYAnimator; private boolean flingInProgress; @@ -542,6 +603,8 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert private int swipeStickyRange; + private GenericProvider isKeyboardVisible = obj -> false; + public WebViewSwipeContainer(@NonNull Context context) { super(context); @@ -574,7 +637,9 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if (!isScrolling && !isSwipeDisallowed) { - if (Math.abs(distanceY) >= touchSlop && Math.abs(distanceY) * 1.5f >= Math.abs(distanceX) && (swipeOffsetY != -offsetY + topActionBarOffsetY || webView == null || distanceY < 0 && webView.getScrollY() == 0)) { + if (isKeyboardVisible.provide(null) && swipeOffsetY == -offsetY + topActionBarOffsetY) { + isSwipeDisallowed = true; + } else if (Math.abs(distanceY) >= touchSlop && Math.abs(distanceY) * 1.5f >= Math.abs(distanceX) && (swipeOffsetY != -offsetY + topActionBarOffsetY || webView == null || distanceY < 0 && webView.getScrollY() == 0)) { isScrolling = true; MotionEvent ev = MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0); @@ -622,6 +687,10 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert updateStickyRange(); } + public void setIsKeyboardVisible(GenericProvider isKeyboardVisible) { + this.isKeyboardVisible = isKeyboardVisible; + } + @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); @@ -669,50 +738,55 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert } public void setOffsetY(float offsetY) { - float wasOffsetY = this.offsetY; - boolean wasOnTop = swipeOffsetY == -wasOffsetY + topActionBarOffsetY; - if (wasOffsetY != -1 && !isSwipeOffsetAnimationDisallowed) { - offsetYAnimator = ValueAnimator.ofFloat(wasOffsetY, offsetY).setDuration(200); - offsetYAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT); - offsetYAnimator.addUpdateListener(animation -> { - this.offsetY = (float) animation.getAnimatedValue(); - if (wasOnTop) { - swipeOffsetY = -this.offsetY + topActionBarOffsetY; - } else { - swipeOffsetY = MathUtils.clamp(swipeOffsetY, -this.offsetY + topActionBarOffsetY, getHeight() - this.offsetY + topActionBarOffsetY); - } - if (scrollAnimator != null && scrollAnimator.getSpring().getFinalPosition() == -wasOffsetY + topActionBarOffsetY) { - scrollAnimator.getSpring().setFinalPosition(-offsetY + topActionBarOffsetY); - } - invalidateTranslation(); - }); - offsetYAnimator.addListener(new AnimatorListenerAdapter() { - private boolean isCanceled; + if (pendingSwipeOffsetY != Integer.MIN_VALUE) { + pendingOffsetY = offsetY; + return; + } - @Override - public void onAnimationEnd(Animator animation) { - if (offsetYAnimator == animation) { + if (offsetYAnimator != null) { + offsetYAnimator.cancel(); + } + + float wasOffsetY = this.offsetY; + float deltaOffsetY = offsetY - wasOffsetY; + boolean wasOnTop = Math.abs(swipeOffsetY + wasOffsetY - topActionBarOffsetY) <= AndroidUtilities.dp(1); + if (!isSwipeOffsetAnimationDisallowed) { + if (offsetYAnimator != null) { + offsetYAnimator.cancel(); + } + offsetYAnimator = new SpringAnimation(new FloatValueHolder(wasOffsetY)) + .setSpring(new SpringForce(offsetY) + .setStiffness(1400) + .setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY)) + .addUpdateListener((animation, value, velocity) -> { + this.offsetY = value; + + float progress = (value - wasOffsetY) / deltaOffsetY; + + if (wasOnTop) { + swipeOffsetY = MathUtils.clamp(swipeOffsetY - progress * Math.max(0, deltaOffsetY), -this.offsetY + topActionBarOffsetY, getHeight() - this.offsetY + topActionBarOffsetY); + } + if (scrollAnimator != null && scrollAnimator.getSpring().getFinalPosition() == -wasOffsetY + topActionBarOffsetY) { + scrollAnimator.getSpring().setFinalPosition(-offsetY + topActionBarOffsetY); + } + invalidateTranslation(); + }) + .addEndListener((animation, canceled, value, velocity) -> { offsetYAnimator = null; - if (!isCanceled) { + if (!canceled) { WebViewSwipeContainer.this.offsetY = offsetY; invalidateTranslation(); } else { pendingOffsetY = offsetY; } - } - } - - @Override - public void onAnimationCancel(Animator animation) { - isCanceled = true; - } - }); + }); offsetYAnimator.start(); } else { this.offsetY = offsetY; + if (wasOnTop) { - this.swipeOffsetY = -this.offsetY + topActionBarOffsetY; + swipeOffsetY = MathUtils.clamp(swipeOffsetY - Math.max(0, deltaOffsetY), -this.offsetY + topActionBarOffsetY, getHeight() - this.offsetY + topActionBarOffsetY); } invalidateTranslation(); } @@ -766,13 +840,9 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert flingInProgress = false; } else { if (swipeOffsetY <= -swipeStickyRange) { - if (swipeOffsetY != -offsetY + topActionBarOffsetY) { - stickTo(-offsetY + topActionBarOffsetY); - } + stickTo(-offsetY + topActionBarOffsetY); } else if (swipeOffsetY > -swipeStickyRange && swipeOffsetY <= swipeStickyRange) { - if (swipeOffsetY != 0) { - stickTo(0); - } + stickTo(0); } else { if (delegate != null) { delegate.onDismiss(); @@ -802,6 +872,7 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert } return; } + pendingSwipeOffsetY = offset; if (offsetYAnimator != null) { offsetYAnimator.cancel(); @@ -832,6 +903,7 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert pendingOffsetY = -1; isSwipeOffsetAnimationDisallowed = wasDisallowed; } + pendingSwipeOffsetY = Integer.MIN_VALUE; } }); scrollAnimator.start(); @@ -849,7 +921,7 @@ public class ChatAttachAlertBotWebViewLayout extends ChatAttachAlert.AttachAlert } } - public final static class WebProgressView extends View { + public static class WebProgressView extends View { private final SimpleFloatPropertyCompat LOAD_PROGRESS_PROPERTY = new SimpleFloatPropertyCompat<>("loadProgress", obj -> obj.loadProgress, WebProgressView::setLoadProgress).setMultiplier(100f); private Paint bluePaint = new Paint(Paint.ANTI_ALIAS_FLAG); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertContactsLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertContactsLayout.java index f763975e5..83ba88994 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertContactsLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertContactsLayout.java @@ -161,9 +161,11 @@ public class ChatAttachAlertContactsLayout extends ChatAttachAlert.AttachAlertLa } else { statusTextView.setText(""); Utilities.globalQueue.postRunnable(() -> { - formattedPhoneNumber = PhoneFormat.getInstance().format("+" + currentUser.phone); - formattedPhoneNumberUser = currentUser; - AndroidUtilities.runOnUIThread(() -> statusTextView.setText(formattedPhoneNumber)); + if (currentUser != null) { + formattedPhoneNumber = PhoneFormat.getInstance().format("+" + currentUser.phone); + formattedPhoneNumberUser = currentUser; + AndroidUtilities.runOnUIThread(() -> statusTextView.setText(formattedPhoneNumber)); + } }); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertDocumentLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertDocumentLayout.java index 78568a44e..c1e633ac1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertDocumentLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertDocumentLayout.java @@ -12,12 +12,15 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; +import android.graphics.Canvas; +import android.graphics.Paint; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.media.MediaMetadataRetriever; @@ -29,6 +32,7 @@ import android.provider.MediaStore; import android.text.TextUtils; import android.util.SparseArray; import android.view.Gravity; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; @@ -70,6 +74,7 @@ import org.telegram.ui.Cells.HeaderCell; import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Cells.SharedDocumentCell; import org.telegram.ui.ChatActivity; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.FilteredSearchView; import org.telegram.ui.PhotoPickerActivity; @@ -106,8 +111,16 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa private int type; + private final static int ANIMATION_NONE = 0; + private final static int ANIMATION_FORWARD = 1; + private final static int ANIMATION_BACKWARD = 2; + private int currentAnimationType; + private RecyclerListView listView; + private RecyclerListView backgroundListView; private ListAdapter listAdapter; + private ListAdapter backgroundListAdapter; + private LinearLayoutManager backgroundLayoutManager; private SearchAdapter searchAdapter; private LinearLayoutManager layoutManager; private ActionBarMenuItem searchItem; @@ -127,15 +140,12 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa private boolean hasFiles; private File currentDir; - private ArrayList items = new ArrayList<>(); private boolean receiverRegistered = false; - private ArrayList history = new ArrayList<>(); private DocumentSelectActivityDelegate delegate; private HashMap selectedFiles = new HashMap<>(); private ArrayList selectedFilesOrder = new ArrayList<>(); private HashMap selectedMessages = new HashMap<>(); private boolean scrolling; - private ArrayList recentItems = new ArrayList<>(); private int maxSelectedFiles = -1; private boolean canSelectOnlyImageFiles; private boolean allowMusic; @@ -188,6 +198,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa public ChatAttachAlertDocumentLayout(ChatAttachAlert alert, Context context, int type, Theme.ResourcesProvider resourcesProvider) { super(alert, context, resourcesProvider); + listAdapter = new ListAdapter(context); allowMusic = type == TYPE_MUSIC; isSoundPicker = type == TYPE_RINGTONE; sortByName = SharedConfig.sortFilesByName; @@ -250,7 +261,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa editText.setCursorColor(getThemedColor(Theme.key_dialogTextBlack)); editText.setHintTextColor(getThemedColor(Theme.key_chat_messagePanelHint)); - sortItem = menu.addItem(sort_button, sortByName ? R.drawable.contacts_sort_time : R.drawable.contacts_sort_name); + sortItem = menu.addItem(sort_button, sortByName ? R.drawable.msg_contacts_time : R.drawable.msg_contacts_name); sortItem.setContentDescription(LocaleController.getString("AccDescrContactSorting", R.string.AccDescrContactSorting)); addView(loadingView = new FlickerLoadingView(context, resourcesProvider)); @@ -270,7 +281,59 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa emptyView.setVisibility(View.GONE); emptyView.setOnTouchListener((v, event) -> true); - listView = new RecyclerListView(context, resourcesProvider); + backgroundListView = new RecyclerListView(context, resourcesProvider) { + Paint paint = new Paint(); + @Override + protected void dispatchDraw(Canvas canvas) { + if (currentAnimationType == ANIMATION_BACKWARD && getChildCount() > 0) { + float top = Integer.MAX_VALUE; + for (int i = 0; i < getChildCount(); i++) { + if (getChildAt(i).getY() < top) { + top = getChildAt(i).getY(); + } + } + paint.setColor(Theme.getColor(Theme.key_dialogBackground)); + // canvas.drawRect(0, top, getMeasuredWidth(), getMeasuredHeight(), paint); + } + super.dispatchDraw(canvas); + } + + @Override + public boolean onTouchEvent(MotionEvent e) { + if (currentAnimationType != ANIMATION_NONE) { + return false; + } + return super.onTouchEvent(e); + } + }; + backgroundListView.setSectionsType(RecyclerListView.SECTIONS_TYPE_DATE); + backgroundListView.setVerticalScrollBarEnabled(false); + backgroundListView.setLayoutManager(backgroundLayoutManager = new FillLastLinearLayoutManager(context, LinearLayoutManager.VERTICAL, false, AndroidUtilities.dp(56), backgroundListView)); + backgroundListView.setClipToPadding(false); + backgroundListView.setAdapter(backgroundListAdapter = new ListAdapter(context)); + backgroundListView.setPadding(0, 0, 0, AndroidUtilities.dp(48)); + addView(backgroundListView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + backgroundListView.setVisibility(View.GONE); + + listView = new RecyclerListView(context, resourcesProvider) { + + Paint paint = new Paint(); + @Override + protected void dispatchDraw(Canvas canvas) { + if (currentAnimationType == ANIMATION_FORWARD && getChildCount() > 0) { + float top = Integer.MAX_VALUE; + for (int i = 0; i < getChildCount(); i++) { + if (getChildAt(i).getY() < top) { + top = getChildAt(i).getY(); + } + } + paint.setColor(Theme.getColor(Theme.key_dialogBackground)); + // canvas.drawRect(0, top, getMeasuredWidth(), getMeasuredHeight(), paint); + } + super.dispatchDraw(canvas); + + } + }; listView.setSectionsType(RecyclerListView.SECTIONS_TYPE_DATE); listView.setVerticalScrollBarEnabled(false); listView.setLayoutManager(layoutManager = new FillLastLinearLayoutManager(context, LinearLayoutManager.VERTICAL, false, AndroidUtilities.dp(56), listView) { @@ -294,11 +357,12 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa } }); listView.setClipToPadding(false); - listView.setAdapter(listAdapter = new ListAdapter(context)); + listView.setAdapter(listAdapter); listView.setPadding(0, 0, 0, AndroidUtilities.dp(48)); addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); searchAdapter = new SearchAdapter(context); + listView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { @@ -397,7 +461,8 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa } } else { int top = getTopForScroll(); - HistoryEntry he = history.remove(history.size() - 1); + prepareAnimation(); + HistoryEntry he = listAdapter.history.remove(listAdapter.history.size() - 1); parentAlert.actionBar.setTitle(he.title); if (he.dir != null) { listFiles(he.dir); @@ -406,6 +471,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa } updateSearchButton(); layoutManager.scrollToPositionWithOffset(0, top); + runAnimation(ANIMATION_BACKWARD); } } else if (file.isDirectory()) { HistoryEntry he = new HistoryEntry(); @@ -416,10 +482,14 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa he.scrollOffset = child.getTop(); he.dir = currentDir; he.title = parentAlert.actionBar.getTitle(); - history.add(he); + + prepareAnimation(); + listAdapter.history.add(he); if (!listFiles(file)) { - history.remove(he); + listAdapter.history.remove(he); return; + } else { + runAnimation(ANIMATION_FORWARD); } parentAlert.actionBar.setTitle(item.title); } @@ -456,6 +526,112 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa updateEmptyView(); } + ValueAnimator listAnimation; + private void runAnimation(int animationType) { + if (listAnimation != null) { + listAnimation.cancel(); + } + currentAnimationType = animationType; + int listViewChildIndex = 0; + for (int i = 0; i < getChildCount(); i++) { + if (getChildAt(i) == listView) { + listViewChildIndex = i; + break; + } + } + float xTranslate; + if (animationType == ANIMATION_FORWARD) { + xTranslate = AndroidUtilities.dp(150); + backgroundListView.setAlpha(1f); + backgroundListView.setScaleX(1f); + backgroundListView.setScaleY(1f); + backgroundListView.setTranslationX(0); + removeView(backgroundListView); + addView(backgroundListView, listViewChildIndex); + backgroundListView.setVisibility(View.VISIBLE); + listView.setTranslationX(xTranslate); + listView.setAlpha(0f); + listAnimation = ValueAnimator.ofFloat(1f, 0); + } else { + xTranslate = AndroidUtilities.dp(150); + listView.setAlpha(0f); + listView.setScaleX(0.95f); + listView.setScaleY(0.95f); + backgroundListView.setScaleX(1f); + backgroundListView.setScaleY(1f); + backgroundListView.setTranslationX(0f); + backgroundListView.setAlpha(1f); + removeView(backgroundListView); + addView(backgroundListView, listViewChildIndex + 1); + backgroundListView.setVisibility(View.VISIBLE); + listAnimation = ValueAnimator.ofFloat(0f, 1f); + } + + listAnimation.addUpdateListener(animation -> { + float value = (float) animation.getAnimatedValue(); + if (animationType == ANIMATION_FORWARD) { + listView.setTranslationX(xTranslate * value); + listView.setAlpha(1f - value); + listView.invalidate(); + + backgroundListView.setAlpha(value); + float s = 0.95f + value * 0.05f; + backgroundListView.setScaleX(s); + backgroundListView.setScaleY(s); + } else { + backgroundListView.setTranslationX(xTranslate * value); + backgroundListView.setAlpha(Math.max(0, 1f - value)); + backgroundListView.invalidate(); + + listView.setAlpha(value); + float s = 0.95f + value * 0.05f; + listView.setScaleX(s); + listView.setScaleY(s); + backgroundListView.invalidate(); + } + }); + listAnimation.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + backgroundListView.setVisibility(View.GONE); + currentAnimationType = ANIMATION_NONE; + listView.setAlpha(1f); + listView.setScaleX(1f); + listView.setScaleY(1f); + listView.setTranslationX(0f); + listView.invalidate(); + } + }); + if (animationType == ANIMATION_FORWARD) { + listAnimation.setDuration(220); + } else { + listAnimation.setDuration(200); + } + listAnimation.setInterpolator(CubicBezierInterpolator.DEFAULT); + listAnimation.start(); + } + + private void prepareAnimation() { + backgroundListAdapter.history.clear(); + backgroundListAdapter.history.addAll(listAdapter.history); + backgroundListAdapter.items.clear(); + backgroundListAdapter.items.addAll(listAdapter.items); + backgroundListAdapter.recentItems.clear(); + backgroundListAdapter.recentItems.addAll(listAdapter.recentItems); + backgroundListAdapter.notifyDataSetChanged(); + backgroundListView.setVisibility(View.VISIBLE); + + backgroundListView.setPadding(listView.getPaddingLeft(), listView.getPaddingTop(), listView.getPaddingRight(), listView.getPaddingBottom()); + int p = layoutManager.findFirstVisibleItemPosition(); + if (p >= 0) { + View childView = layoutManager.findViewByPosition(p); + if (childView != null) { + backgroundLayoutManager.scrollToPositionWithOffset(p, childView.getTop() - backgroundListView.getPaddingTop()); + } + } + } + @Override void onDestroy() { try { @@ -479,7 +655,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa sortRecentItems(); sortFileItems(); listAdapter.notifyDataSetChanged(); - sortItem.setIcon(sortByName ? R.drawable.contacts_sort_time : R.drawable.contacts_sort_name); + sortItem.setIcon(sortByName ? R.drawable.msg_contacts_time : R.drawable.msg_contacts_name); } } @@ -608,8 +784,10 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa showErrorBox(LocaleController.formatString("PassportUploadNotImage", R.string.PassportUploadNotImage)); return false; } - if (item.file.length() > FileLoader.MAX_FILE_SIZE) { - showErrorBox(LocaleController.formatString("FileUploadLimit", R.string.FileUploadLimit, AndroidUtilities.formatFileSize(FileLoader.MAX_FILE_SIZE))); + if ((item.file.length() > FileLoader.DEFAULT_MAX_FILE_SIZE && !UserConfig.getInstance(UserConfig.selectedAccount).isPremium()) || item.file.length() > FileLoader.DEFAULT_MAX_FILE_SIZE_PREMIUM) { + LimitReachedBottomSheet limitReachedBottomSheet = new LimitReachedBottomSheet(parentAlert.baseFragment, parentAlert.getContainer().getContext(), LimitReachedBottomSheet.TYPE_LARGE_FILE, UserConfig.selectedAccount); + limitReachedBottomSheet.setVeryLargeFile(true); + limitReachedBottomSheet.show(); return false; } if (maxSelectedFiles >= 0 && selectedFiles.size() >= maxSelectedFiles) { @@ -752,7 +930,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa if (fname.endsWith(".jpg") || fname.endsWith(".png") || fname.endsWith(".gif") || fname.endsWith(".jpeg")) { item.thumb = file.getAbsolutePath(); } - recentItems.add(item); + listAdapter.recentItems.add(item); } } catch (Exception e) { FileLog.e(e); @@ -786,13 +964,13 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa if (fname.endsWith(".jpg") || fname.endsWith(".png") || fname.endsWith(".gif") || fname.endsWith(".jpeg")) { item.thumb = file.getAbsolutePath(); } - recentItems.add(item); + listAdapter.recentItems.add(item); } } } private void sortRecentItems() { - Collections.sort(recentItems, (o1, o2) -> { + Collections.sort(listAdapter.recentItems, (o1, o2) -> { if (sortByName) { String lm = o1.file.getName(); String rm = o2.file.getName(); @@ -815,7 +993,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa if (currentDir == null) { return; } - Collections.sort(items, (lhs, rhs) -> { + Collections.sort(listAdapter.items, (lhs, rhs) -> { if (lhs.file == null) { return -1; } else if (rhs.file == null) { @@ -858,7 +1036,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa selectedMessages.clear(); searchAdapter.currentSearchFilters.clear(); selectedFilesOrder.clear(); - history.clear(); + listAdapter.history.clear(); listRoots(); updateSearchButton(); updateEmptyView(); @@ -902,7 +1080,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa return; } if (!searchItem.isSearchFieldVisible()) { - searchItem.setVisibility(hasFiles || history.isEmpty() ? View.VISIBLE : View.GONE); + searchItem.setVisibility(hasFiles || listAdapter.history.isEmpty() ? View.VISIBLE : View.GONE); } } @@ -917,8 +1095,9 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa } private boolean canClosePicker() { - if (history.size() > 0) { - HistoryEntry he = history.remove(history.size() - 1); + if (listAdapter.history.size() > 0) { + prepareAnimation(); + HistoryEntry he = listAdapter.history.remove(listAdapter.history.size() - 1); parentAlert.actionBar.setTitle(he.title); int top = getTopForScroll(); if (he.dir != null) { @@ -928,6 +1107,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa } updateSearchButton(); layoutManager.scrollToPositionWithOffset(0, top); + runAnimation(ANIMATION_BACKWARD); return false; } return true; @@ -960,7 +1140,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) && !Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY)) { currentDir = dir; - items.clear(); + listAdapter.items.clear(); String state = Environment.getExternalStorageState(); AndroidUtilities.clearDrawableAnimation(listView); scrolling = true; @@ -983,7 +1163,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa return false; } currentDir = dir; - items.clear(); + listAdapter.items.clear(); for (int a = 0; a < files.length; a++) { File file = files[a]; if (file.getName().indexOf('.') == 0) { @@ -1006,12 +1186,12 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa item.thumb = file.getAbsolutePath(); } } - items.add(item); + listAdapter.items.add(item); } ListItem item = new ListItem(); item.title = ".."; - if (history.size() > 0) { - HistoryEntry entry = history.get(history.size() - 1); + if (listAdapter.history.size() > 0) { + HistoryEntry entry = listAdapter.history.get(listAdapter.history.size() - 1); if (entry.dir == null) { item.subtitle = LocaleController.getString("Folder", R.string.Folder); } else { @@ -1022,7 +1202,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa } item.icon = R.drawable.files_folder; item.file = null; - items.add(0, item); + listAdapter.items.add(0, item); sortFileItems(); updateSearchButton(); AndroidUtilities.clearDrawableAnimation(listView); @@ -1041,13 +1221,14 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa private void listRoots() { currentDir = null; hasFiles = false; - items.clear(); + listAdapter.items.clear(); HashSet paths = new HashSet<>(); boolean isExternalStorageManager = false; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) { isExternalStorageManager = Environment.isExternalStorageManager(); } + // TODO add permission for read all files and uncomment for direct version // if (!BuildVars.NO_SCOPED_STORAGE && !isExternalStorageManager) { // ListItem ext = new ListItem(); // ext.title = LocaleController.getString("InternalStorage", R.string.InternalStorage); @@ -1069,7 +1250,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa ext.subtitle = LocaleController.getString("InternalFolderInfo", R.string.InternalFolderInfo); } ext.file = Environment.getExternalStorageDirectory(); - items.add(ext); + listAdapter.items.add(ext); paths.add(defaultPath); } @@ -1110,7 +1291,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa item.subtitle = LocaleController.getString("ExternalFolderInfo", R.string.ExternalFolderInfo); item.icon = R.drawable.files_internal; item.file = new File(path); - items.add(item); + listAdapter.items.add(item); } catch (Exception e) { FileLog.e(e); } @@ -1140,7 +1321,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa fs.subtitle = LocaleController.getString("AppFolderInfo", R.string.AppFolderInfo); fs.icon = R.drawable.files_folder; fs.file = telegramPath; - items.add(fs); + listAdapter.items.add(fs); } } catch (Exception e) { FileLog.e(e); @@ -1152,7 +1333,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa fs.subtitle = LocaleController.getString("GalleryInfo", R.string.GalleryInfo); fs.icon = R.drawable.files_gallery; fs.file = null; - items.add(fs); + listAdapter.items.add(fs); } if (allowMusic) { @@ -1161,9 +1342,9 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa fs.subtitle = LocaleController.getString("MusicInfo", R.string.MusicInfo); fs.icon = R.drawable.files_music; fs.file = null; - items.add(fs); + listAdapter.items.add(fs); } - if (!recentItems.isEmpty()) { + if (!listAdapter.recentItems.isEmpty()) { hasFiles = true; } @@ -1189,6 +1370,11 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa private class ListAdapter extends RecyclerListView.SelectionAdapter { + private ArrayList items = new ArrayList<>(); + private ArrayList history = new ArrayList<>(); + private ArrayList recentItems = new ArrayList<>(); + + private Context mContext; public ListAdapter(Context context) { @@ -1367,9 +1553,9 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa notifyDataSetChanged(); } else { AndroidUtilities.runOnUIThread(localSearchRunnable = () -> { - final ArrayList copy = new ArrayList<>(items); - if (history.isEmpty()) { - copy.addAll(0, recentItems); + final ArrayList copy = new ArrayList<>(listAdapter.items); + if (listAdapter.history.isEmpty()) { + copy.addAll(0, listAdapter.recentItems); } boolean hasFilters = !currentSearchFilters.isEmpty(); Utilities.searchQueue.postRunnable(() -> { @@ -1416,7 +1602,7 @@ public class ChatAttachAlertDocumentLayout extends ChatAttachAlert.AttachAlertLa }, 300); } - if (!canSelectOnlyImageFiles && history.isEmpty()) { + if (!canSelectOnlyImageFiles && listAdapter.history.isEmpty()) { long dialogId = 0; long minDate = 0; long maxDate = 0; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertLocationLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertLocationLayout.java index 56476a43b..d0aead09d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertLocationLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertLocationLayout.java @@ -29,7 +29,6 @@ import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.location.Location; import android.location.LocationManager; -import android.net.Uri; import android.os.Build; import android.text.TextUtils; import android.util.TypedValue; @@ -44,7 +43,6 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; -import android.widget.Toast; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.CameraUpdateFactory; @@ -582,7 +580,7 @@ public class ChatAttachAlertLocationLayout extends ChatAttachAlert.AttachAlertLa }); } mapTypeButton.setBackgroundDrawable(drawable); - mapTypeButton.setIcon(R.drawable.location_type); + mapTypeButton.setIcon(R.drawable.msg_map_type); mapViewClip.addView(mapTypeButton, LayoutHelper.createFrame(Build.VERSION.SDK_INT >= 21 ? 40 : 44, Build.VERSION.SDK_INT >= 21 ? 40 : 44, Gravity.RIGHT | Gravity.TOP, 0, 12, 12, 0)); mapTypeButton.setOnClickListener(v -> mapTypeButton.toggleSubMenu()); mapTypeButton.setDelegate(id -> { @@ -620,7 +618,7 @@ public class ChatAttachAlertLocationLayout extends ChatAttachAlert.AttachAlertLa }); } locationButton.setBackgroundDrawable(drawable); - locationButton.setImageResource(R.drawable.location_current); + locationButton.setImageResource(R.drawable.msg_current_location); locationButton.setScaleType(ImageView.ScaleType.CENTER); locationButton.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_location_actionActiveIcon), PorterDuff.Mode.MULTIPLY)); locationButton.setTag(Theme.key_location_actionActiveIcon); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java index 3e99d0c39..0892815fa 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java @@ -18,11 +18,10 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Canvas; -import android.graphics.Color; import android.graphics.Outline; import android.graphics.Paint; -import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; @@ -34,7 +33,6 @@ import android.os.Build; import android.provider.MediaStore; import android.provider.Settings; import android.text.TextUtils; -import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; @@ -52,14 +50,12 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.Keep; -import androidx.core.graphics.ColorUtils; import androidx.exifinterface.media.ExifInterface; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearSmoothScroller; import androidx.recyclerview.widget.RecyclerView; -import org.checkerframework.checker.units.qual.A; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.BuildVars; @@ -85,8 +81,6 @@ import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; -import org.telegram.ui.ActionBar.AlertDialog; -import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.BasePermissionsActivity; import org.telegram.ui.Cells.PhotoAttachCameraCell; @@ -108,7 +102,7 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou private PhotoAttachAdapter cameraAttachAdapter; private ActionBarMenuItem dropDownContainer; - private TextView dropDown; + public TextView dropDown; private Drawable dropDownDrawable; public RecyclerListView gridView; @@ -294,6 +288,16 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } private PhotoViewer.PhotoViewerProvider photoViewerProvider = new BasePhotoProvider() { + @Override + public void onOpen() { + pauseCameraPreview(); + } + + @Override + public void onClose() { + resumeCameraPreview(); + } + @Override public PhotoViewer.PlaceProviderObject getPlaceForPhoto(MessageObject messageObject, TLRPC.FileLocation fileLocation, int index, boolean needPreview) { PhotoAttachPhotoCell cell = getCellForIndex(index); @@ -674,7 +678,6 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } if (selectedPhotos.size() > 0 && selectedPhotosOrder.size() > 0) { Object o = selectedPhotos.get(selectedPhotosOrder.get(0)); - CharSequence firstPhotoCaption = null; if (o instanceof MediaController.PhotoEntry) { MediaController.PhotoEntry photoEntry1 = (MediaController.PhotoEntry) o; photoEntry1.caption = parentAlert.getCommentTextView().getText(); @@ -910,7 +913,15 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou return; } mediaFromExternalCamera = false; - MediaController.PhotoEntry photoEntry = new MediaController.PhotoEntry(0, lastImageId--, 0, outputFile.getAbsolutePath(), 0, true, 0, 0, 0); + int width = 0, height = 0; + try { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(new File(thumbPath).getAbsolutePath(), options); + width = options.outWidth; + height = options.outHeight; + } catch (Exception ignore) {} + MediaController.PhotoEntry photoEntry = new MediaController.PhotoEntry(0, lastImageId--, 0, outputFile.getAbsolutePath(), 0, true, width, height, 0); photoEntry.duration = (int) duration; photoEntry.thumbPath = thumbPath; if (parentAlert.avatarPicker != 0 && cameraView.isFrontface()) { @@ -974,7 +985,15 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou FileLog.e(e); } mediaFromExternalCamera = false; - MediaController.PhotoEntry photoEntry = new MediaController.PhotoEntry(0, lastImageId--, 0, cameraFile.getAbsolutePath(), orientation, false, 0, 0, 0); + int width = 0, height = 0; + try { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(new File(cameraFile.getAbsolutePath()).getAbsolutePath(), options); + width = options.outWidth; + height = options.outHeight; + } catch (Exception ignore) {} + MediaController.PhotoEntry photoEntry = new MediaController.PhotoEntry(0, lastImageId--, 0, cameraFile.getAbsolutePath(), orientation, false, width, height, 0); photoEntry.canDeleteAfter = true; openPhotoViewer(photoEntry, sameTakePictureOrientation, false); }); @@ -1386,6 +1405,16 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } PhotoViewer.getInstance().openPhotoForSelect(arrayList, index, type, false, new BasePhotoProvider() { + @Override + public void onOpen() { + pauseCameraPreview(); + } + + @Override + public void onClose() { + resumeCameraPreview(); + } + @Override public ImageReceiver.BitmapHolder getThumbForPhoto(MessageObject messageObject, TLRPC.FileLocation fileLocation, int index) { return null; @@ -1981,7 +2010,15 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } catch (Exception e) { FileLog.e(e); } - MediaController.PhotoEntry photoEntry = new MediaController.PhotoEntry(0, lastImageId--, 0, currentPicturePath, orientation, false, 0, 0, 0); + int width = 0, height = 0; + try { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(new File(currentPicturePath).getAbsolutePath(), options); + width = options.outWidth; + height = options.outHeight; + } catch (Exception ignore) {} + MediaController.PhotoEntry photoEntry = new MediaController.PhotoEntry(0, lastImageId--, 0, currentPicturePath, orientation, false, width, height, 0); photoEntry.canDeleteAfter = true; openPhotoViewer(photoEntry, false, true); } else if (requestCode == 2) { @@ -2053,7 +2090,7 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } SharedConfig.saveConfig(); - MediaController.PhotoEntry entry = new MediaController.PhotoEntry(0, lastImageId--, 0, videoPath, 0, true, 0, 0, 0); + MediaController.PhotoEntry entry = new MediaController.PhotoEntry(0, lastImageId--, 0, videoPath, 0, true, bitmap.getWidth(), bitmap.getHeight(), 0); entry.duration = (int) duration; entry.thumbPath = cacheFile.getAbsolutePath(); openPhotoViewer(entry, false, true); @@ -2240,7 +2277,6 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou cameraIcon.setAlpha(0.0f); } - Log.i("caapl", "cameraViewH=" + cameraViewH + " (endHeight=" + endHeight + ") value=" + value); if (layoutParams.width != cameraViewW || layoutParams.height != cameraViewH) { layoutParams.width = cameraViewW; layoutParams.height = cameraViewH; @@ -2513,7 +2549,7 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou Intent videoPickerIntent = new Intent(); videoPickerIntent.setType("video/*"); videoPickerIntent.setAction(Intent.ACTION_GET_CONTENT); - videoPickerIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, FileLoader.MAX_FILE_SIZE); + videoPickerIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, FileLoader.DEFAULT_MAX_FILE_SIZE); Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); @@ -2599,7 +2635,7 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } } - private boolean captionForAllMedia() { + public boolean captionForAllMedia() { int captionCount = 0; for (int a = 0; a < selectedPhotosOrder.size(); a++) { Object o = selectedPhotos.get(selectedPhotosOrder.get(a)); @@ -2856,16 +2892,7 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou checkCameraViewPosition(); - try { - if (cameraView != null) { - CameraSession cameraSession = cameraView.getCameraSession(); - if (cameraSession != null) { - CameraController.getInstance().startPreview(cameraSession); - } - } - } catch (Exception e) { - FileLog.e(e); - } + resumeCameraPreview(); } @Override @@ -2933,6 +2960,10 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou headerAnimator = dropDown.animate().alpha(0f).setDuration(150).setInterpolator(CubicBezierInterpolator.EASE_BOTH).withEndAction(() -> dropDownContainer.setVisibility(GONE)); headerAnimator.start(); + pauseCameraPreview(); + } + + private void pauseCameraPreview() { try { if (cameraView != null) { CameraSession cameraSession = cameraView.getCameraSession(); @@ -2945,6 +2976,19 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } } + private void resumeCameraPreview() { + try { + if (cameraView != null) { + CameraSession cameraSession = cameraView.getCameraSession(); + if (cameraSession != null) { + CameraController.getInstance().startPreview(cameraSession); + } + } + } catch (Exception e) { + FileLog.e(e); + } + } + @Override void onHidden() { if (cameraView != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayoutPreview.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayoutPreview.java index e44307268..21e32b8f8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayoutPreview.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayoutPreview.java @@ -45,12 +45,15 @@ import org.telegram.messenger.MediaController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; +import org.telegram.messenger.VideoEditedInfo; +import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.ChatActionCell; import org.telegram.ui.ChatActivity; +import org.telegram.ui.PhotoViewer; import java.util.ArrayList; import java.util.Arrays; @@ -71,10 +74,9 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle public RecyclerListView listView; private LinearLayoutManager layoutManager; - public PaddingBox paddingView; private PreviewGroupsView groupsView; private UndoView undoView; - private TextView header; + public TextView header; private float draggingCellTouchX = 0, draggingCellTouchY = 0; private float draggingCellTop = 0, draggingCellLeft = 0; @@ -177,37 +179,13 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle groupsView.deletedPhotos.clear(); groupsView.fromPhotoLayout(photoLayout); - undoView = new UndoView(context); + undoView = new UndoView(context, null, false, parentAlert.parentThemeDelegate); undoView.setEnterOffsetMargin(AndroidUtilities.dp(8 + 24)); addView(undoView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.LEFT, 8, 0, 8, 52)); videoPlayImage = context.getResources().getDrawable(R.drawable.play_mini_video); } - public class PaddingBox extends View { - private PaddingBox(Context context) { - super(context); - } - - private int thisHeight = 0; - public boolean setPadding(int height) { - if (thisHeight != height && getMeasuredHeight() != height) { - thisHeight = height; - requestLayout(); - return true; - } - return false; - } - public int getPadding() { - return thisHeight; - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(Math.max(0, thisHeight), MeasureSpec.EXACTLY)); - } - } - private ViewPropertyAnimator headerAnimator; private ChatAttachAlertPhotoLayout photoLayout; private boolean shown = false; @@ -243,7 +221,8 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle if (headerAnimator != null) { headerAnimator.cancel(); } - headerAnimator = header.animate().alpha(1f).setDuration(150).setInterpolator(CubicBezierInterpolator.EASE_BOTH); + + headerAnimator = header.animate().alpha(1f).setDuration(150).setInterpolator(CubicBezierInterpolator.DEFAULT); headerAnimator.start(); } @@ -949,13 +928,16 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle } public void fromPhotoLayout(ChatAttachAlertPhotoLayout photoLayout) { - ArrayList photosOrder = photoLayout.getSelectedPhotosOrder(); - HashMap photosMap = photoLayout.getSelectedPhotos(); + photosOrder = photoLayout.getSelectedPhotosOrder(); + photosMap = photoLayout.getSelectedPhotos(); + fromPhotoArrays(); + } + public void fromPhotoArrays() { groupCells.clear(); ArrayList photos = new ArrayList<>(); final int photosOrderSize = photosOrder.size(), - photosOrderLast = photosOrderSize - 1; + photosOrderLast = photosOrderSize - 1; for (int i = 0; i < photosOrderSize; ++i) { int imageId = (Integer) photosOrder.get(i); photos.add((MediaController.PhotoEntry) photosMap.get(imageId)); @@ -967,13 +949,17 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle } } } - public void toPhotoLayout(ChatAttachAlertPhotoLayout photoLayout, boolean updateLayout) { - int previousCount = photoLayout.getSelectedPhotosOrder().size(); - HashMap photosMap = photoLayout.getSelectedPhotos(); - List> photosMapKeys = new ArrayList<>(photosMap.entrySet()); - HashMap selectedPhotos = new HashMap<>(); - ArrayList photosOrder = new ArrayList<>(); + HashMap photosMap; + List> photosMapKeys; + HashMap selectedPhotos; + ArrayList photosOrder; + + public void calcPhotoArrays() { + photosMap = photoLayout.getSelectedPhotos(); + photosMapKeys = new ArrayList<>(photosMap.entrySet()); + selectedPhotos = new HashMap<>(); + photosOrder = new ArrayList<>(); final int groupCellsCount = groupCells.size(); for (int i = 0; i < groupCellsCount; ++i) { @@ -1007,11 +993,11 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle Map.Entry entry = photosMapKeys.get(k); Object value = entry.getValue(); if ( - value instanceof MediaController.PhotoEntry && - ((MediaController.PhotoEntry) value).path != null && - photoEntry != null && - ((MediaController.PhotoEntry) value).path.equals(photoEntry.path) - ) { + value instanceof MediaController.PhotoEntry && + ((MediaController.PhotoEntry) value).path != null && + photoEntry != null && + ((MediaController.PhotoEntry) value).path.equals(photoEntry.path) + ) { Object key = entry.getKey(); selectedPhotos.put(key, value); photosOrder.add(key); @@ -1022,6 +1008,11 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle } } } + } + + public void toPhotoLayout(ChatAttachAlertPhotoLayout photoLayout, boolean updateLayout) { + int previousCount = photoLayout.getSelectedPhotosOrder().size(); + calcPhotoArrays(); photoLayout.updateSelected(selectedPhotos, photosOrder, updateLayout); if (previousCount != photosOrder.size()) { @@ -1325,6 +1316,228 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle postDelayed(this, 15); } }; + /* + * + * + if (getSelectedItemsCount() > 1) { + // short tap -> remove photo + final MediaController.PhotoEntry photo = tapMediaCell.photoEntry; + final int index = tapGroupCell.group.photos.indexOf(photo); + if (index >= 0) { + saveDeletedImageId(photo); + final PreviewGroupCell groupCell = tapGroupCell; + groupCell.group.photos.remove(index); + groupCell.setGroup(groupCell.group, true); + updateGroups(); + toPhotoLayout(photoLayout, false); + + final int currentUndoViewId = ++undoViewId; + undoView.showWithAction(0, ACTION_PREVIEW_MEDIA_DESELECTED, photo, null, () -> { + if (draggingAnimator != null) { + draggingAnimator.cancel(); + } + draggingCell = null; + draggingT = 0; + pushToGroup(groupCell, photo, index); + updateGroups(); + toPhotoLayout(photoLayout, false); + }); + + postDelayed(() -> { + if (currentUndoViewId == undoViewId && undoView.isShown()) { + undoView.hide(true, 1); + } + }, 1000 * 4); + } + + if (draggingAnimator != null) { + draggingAnimator.cancel(); + } + } + * */ + + GroupingPhotoViewerProvider photoViewerProvider = new GroupingPhotoViewerProvider(); + + class GroupingPhotoViewerProvider extends PhotoViewer.EmptyPhotoViewerProvider { + private ArrayList photos = new ArrayList<>(); + public void init(ArrayList photos) { + this.photos = photos; + } + + @Override + public void onClose() { + fromPhotoArrays(); + toPhotoLayout(photoLayout, false); + } + + @Override + public boolean isPhotoChecked(int index) { + if (index < 0 || index >= photos.size()) { + return false; + } + return photosOrder.contains((Integer) photos.get(index).imageId); + } + + @Override + public int setPhotoChecked(int index, VideoEditedInfo videoEditedInfo) { + if (index < 0 || index >= photos.size()) { + return -1; + } + Object imageId = photos.get(index).imageId; + int orderIndex = photosOrder.indexOf((Integer) imageId); + if (orderIndex >= 0) { + if (photosOrder.size() <= 1) { + return -1; + } + photosOrder.remove(orderIndex); + fromPhotoArrays(); + return orderIndex; + } else { + photosOrder.add(imageId); + fromPhotoArrays(); + return photosOrder.size() - 1; + } + } + + @Override + public int setPhotoUnchecked(Object entry) { + MediaController.PhotoEntry photoEntry = (MediaController.PhotoEntry) entry; + Object imageId = photoEntry.imageId; + if (photosOrder.size() <= 1) { + return -1; + } + int index = photosOrder.indexOf((Integer) imageId); + if (index >= 0) { + photosOrder.remove(index); + fromPhotoArrays(); + return index; + } + return -1; + } + + @Override + public int getSelectedCount() { + return photosOrder.size(); + } + + @Override + public ArrayList getSelectedPhotosOrder() { + return photosOrder; + } + + @Override + public HashMap getSelectedPhotos() { + return photosMap; + } + + @Override + public int getPhotoIndex(int index) { + if (index < 0 || index >= photos.size()) { + return -1; + } + MediaController.PhotoEntry photoEntry = photos.get(index); + if (photoEntry == null) { + return -1; + } + return photosOrder.indexOf(photoEntry.imageId); + } + + @Override + public PhotoViewer.PlaceProviderObject getPlaceForPhoto(MessageObject messageObject, TLRPC.FileLocation fileLocation, int index, boolean needPreview) { + if (index < 0 || index >= photos.size() || !isPhotoChecked(index)) { + return null; + } + MediaController.PhotoEntry photoEntry = photos.get(index); + if (photoEntry != null) { + PreviewGroupCell group = null; + PreviewGroupCell.MediaCell mediaCell = null; + final int groupCellsCount = groupCells.size(); + for (int i = 0; i < groupCellsCount; ++i) { + group = groupCells.get(i); + if (group != null && group.media != null) { + final int count = group.media.size(); + for (int j = 0; j < count; ++j) { + PreviewGroupCell.MediaCell cell = group.media.get(j); + if (cell != null && cell.photoEntry == photoEntry && cell.scale > .5) { + mediaCell = group.media.get(j); + break; + } + } + if (mediaCell != null) { + break; + } + } + } + + if (group != null && mediaCell != null) { + PhotoViewer.PlaceProviderObject object = new PhotoViewer.PlaceProviderObject(); + int[] coords = new int[2]; + getLocationInWindow(coords); + if (Build.VERSION.SDK_INT < 26) { + coords[0] -= parentAlert.getLeftInset(); + } + object.viewX = coords[0]; + object.viewY = coords[1] + (int) group.y; + object.scale = 1; + object.parentView = PreviewGroupsView.this; + object.imageReceiver = mediaCell.image; + object.thumb = object.imageReceiver.getBitmapSafe(); + object.radius = new int[4]; + object.radius[0] = (int) mediaCell.roundRadiuses.left; + object.radius[1] = (int) mediaCell.roundRadiuses.top; + object.radius[2] = (int) mediaCell.roundRadiuses.right; + object.radius[3] = (int) mediaCell.roundRadiuses.bottom; + object.clipTopAddition = (int) (-PreviewGroupsView.this.getY()); + object.clipBottomAddition = PreviewGroupsView.this.getHeight() - (int) (-PreviewGroupsView.this.getY() + listView.getHeight() - parentAlert.getClipLayoutBottom()); + return object; + } + } + return null; + } + + @Override + public boolean cancelButtonPressed() { + return false; + } + + @Override + public void updatePhotoAtIndex(int index) { + if (index < 0 || index >= photos.size()) { + return; + } + MediaController.PhotoEntry photoEntry = photos.get(index); + if (photoEntry == null) { + return; + } + int imageId = photoEntry.imageId; + invalidate(); + for (int i = 0; i < groupCells.size(); ++i) { + PreviewGroupCell groupCell = groupCells.get(i); + if (groupCell != null && groupCell.media != null) { + for (int j = 0; j < groupCell.media.size(); ++j) { + PreviewGroupCell.MediaCell mediaCell = groupCell.media.get(j); + if (mediaCell != null && mediaCell.photoEntry.imageId == imageId) { + mediaCell.setImage(photoEntry); + } + } + boolean hadUpdates = false; + if (groupCell.group != null && groupCell.group.photos != null) { + for (int j = 0; j < groupCell.group.photos.size(); ++j) { + if (groupCell.group.photos.get(j).imageId == imageId) { + groupCell.group.photos.set(j, photoEntry); + hadUpdates = true; + } + } + } + if (hadUpdates) { + groupCell.setGroup(groupCell.group, true); + } + } + } + remeasure(); + invalidate(); + } + }; private int undoViewId = 0; @@ -1475,11 +1688,9 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle int tapIndex = replaceGroupCell.group.photos.indexOf(replaceMediaCell.photoEntry); if (draggingIndex >= 0) { draggingCell.groupCell.group.photos.remove(draggingIndex); -// draggingCell.groupCell.group.photos.add(draggingIndex, replaceMediaCell.photoEntry); draggingCell.groupCell.setGroup(draggingCell.groupCell.group, true); } if (tapIndex >= 0) { -// replaceMediaCell.group.photos.remove(tapIndex); if (groupCells.indexOf(replaceGroupCell) > groupCells.indexOf(draggingCell.groupCell)) { tapIndex++; } @@ -1517,39 +1728,75 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle stopDragging(); result = true; } else if (action == MotionEvent.ACTION_UP && draggingCell == null && tapMediaCell != null && tapGroupCell != null) { - if (getSelectedItemsCount() > 1) { - // short tap -> remove photo - final MediaController.PhotoEntry photo = tapMediaCell.photoEntry; - final int index = tapGroupCell.group.photos.indexOf(photo); - if (index >= 0) { - saveDeletedImageId(photo); - final PreviewGroupCell groupCell = tapGroupCell; - groupCell.group.photos.remove(index); - groupCell.setGroup(groupCell.group, true); - updateGroups(); - toPhotoLayout(photoLayout, false); - final int currentUndoViewId = ++undoViewId; - undoView.showWithAction(0, ACTION_PREVIEW_MEDIA_DESELECTED, photo, null, () -> { - if (draggingAnimator != null) { - draggingAnimator.cancel(); - } - draggingCell = null; - draggingT = 0; - pushToGroup(groupCell, photo, index); + RectF cellRect = tapMediaCell.drawingRect(); + AndroidUtilities.rectTmp.set(cellRect.right - AndroidUtilities.dp(36.4f), tapGroupCell.top + cellRect.top, cellRect.right, tapGroupCell.top + cellRect.top + AndroidUtilities.dp(36.4f)); + boolean tappedAtIndex = AndroidUtilities.rectTmp.contains(touchX, touchY - tapMediaCell.groupCell.y); + + if (tappedAtIndex) { + if (getSelectedItemsCount() > 1) { + // short tap -> remove photo + final MediaController.PhotoEntry photo = tapMediaCell.photoEntry; + final int index = tapGroupCell.group.photos.indexOf(photo); + if (index >= 0) { + saveDeletedImageId(photo); + final PreviewGroupCell groupCell = tapGroupCell; + groupCell.group.photos.remove(index); + groupCell.setGroup(groupCell.group, true); updateGroups(); toPhotoLayout(photoLayout, false); - }); - postDelayed(() -> { - if (currentUndoViewId == undoViewId && undoView.isShown()) { - undoView.hide(true, 1); - } - }, 1000 * 4); + final int currentUndoViewId = ++undoViewId; + undoView.showWithAction(0, ACTION_PREVIEW_MEDIA_DESELECTED, photo, null, () -> { + if (draggingAnimator != null) { + draggingAnimator.cancel(); + } + draggingCell = null; + draggingT = 0; + pushToGroup(groupCell, photo, index); + updateGroups(); + toPhotoLayout(photoLayout, false); + }); + + postDelayed(() -> { + if (currentUndoViewId == undoViewId && undoView.isShown()) { + undoView.hide(true, 1); + } + }, 1000 * 4); + } + + if (draggingAnimator != null) { + draggingAnimator.cancel(); + } } - - if (draggingAnimator != null) { - draggingAnimator.cancel(); + } else { + calcPhotoArrays(); + ArrayList arrayList = getPhotos(); + int position = arrayList.indexOf(tapMediaCell.photoEntry); + ChatActivity chatActivity; + int type; + if (parentAlert.avatarPicker != 0) { + chatActivity = null; + type = PhotoViewer.SELECT_TYPE_AVATAR; + } else if (parentAlert.baseFragment instanceof ChatActivity) { + chatActivity = (ChatActivity) parentAlert.baseFragment; + type = 0; + } else { + chatActivity = null; + type = 4; + } + if (!parentAlert.delegate.needEnterComment()) { + AndroidUtilities.hideKeyboard(parentAlert.baseFragment.getFragmentView().findFocus()); + AndroidUtilities.hideKeyboard(parentAlert.getContainer().findFocus()); + } + PhotoViewer.getInstance().setParentActivity(parentAlert.baseFragment.getParentActivity(), resourcesProvider); + PhotoViewer.getInstance().setParentAlert(parentAlert); + PhotoViewer.getInstance().setMaxSelectedPhotos(parentAlert.maxSelectedPhotos, parentAlert.allowOrder); + photoViewerProvider.init(arrayList); + ArrayList objectArrayList = new ArrayList<>(arrayList); + PhotoViewer.getInstance().openPhotoForSelect(objectArrayList, position, type, false, photoViewerProvider, chatActivity); + if (photoLayout.captionForAllMedia()) { + PhotoViewer.getInstance().setCaption(parentAlert.getCommentTextView().getText()); } } tapMediaCell = null; @@ -1651,27 +1898,24 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle } else { videoDurationText = null; } -// if (images.containsKey(photoEntry)) { -// image = images.get(photoEntry); -// } else { + if (image == null) { image = new ImageReceiver(PreviewGroupsView.this); - if (photoEntry != null) { - if (photoEntry.thumbPath != null) { - image.setImage(ImageLocation.getForPath(photoEntry.thumbPath), null, null, null, Theme.chat_attachEmptyDrawable, 0, null, null, 0); - } else if (photoEntry.path != null) { - if (photoEntry.isVideo) { - image.setImage(ImageLocation.getForPath("vthumb://" + photoEntry.imageId + ":" + photoEntry.path), null, null, null, Theme.chat_attachEmptyDrawable, 0, null, null, 0); - image.setAllowStartAnimation(true); - } else { - image.setOrientation(photoEntry.orientation, true); - image.setImage(ImageLocation.getForPath("thumb://" + photoEntry.imageId + ":" + photoEntry.path), null, null, null, Theme.chat_attachEmptyDrawable, 0, null, null, 0); - } + } + if (photoEntry != null) { + if (photoEntry.thumbPath != null) { + image.setImage(ImageLocation.getForPath(photoEntry.thumbPath), null, null, null, Theme.chat_attachEmptyDrawable, 0, null, null, 0); + } else if (photoEntry.path != null) { + if (photoEntry.isVideo) { + image.setImage(ImageLocation.getForPath("vthumb://" + photoEntry.imageId + ":" + photoEntry.path), null, null, null, Theme.chat_attachEmptyDrawable, 0, null, null, 0); + image.setAllowStartAnimation(true); } else { - image.setImageBitmap(Theme.chat_attachEmptyDrawable); + image.setOrientation(photoEntry.orientation, true); + image.setImage(ImageLocation.getForPath("thumb://" + photoEntry.imageId + ":" + photoEntry.path), null, null, null, Theme.chat_attachEmptyDrawable, 0, null, null, 0); } + } else { + image.setImageBitmap(Theme.chat_attachEmptyDrawable); } -// images.put(photoEntry, image); -// } + } } private void layoutFrom(MediaCell fromCell) { @@ -1841,7 +2085,7 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle private Rect indexIn = new Rect(), indexOut = new Rect(); private Rect durationIn = new Rect(), durationOut = new Rect(); - private void drawPhotoIndex(Canvas canvas, float top, float right, String indexText, float scale) { + private void drawPhotoIndex(Canvas canvas, float top, float right, String indexText, float scale, float alpha) { final int radius = AndroidUtilities.dp(12), strokeWidth = AndroidUtilities.dp(1.2f), sz = (radius + strokeWidth) * 2, @@ -1889,12 +2133,12 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle if (indexBitmap != null) { indexOut.set((int) (right - sz * scale + pad), (int) (top - pad), (int) (right + pad), (int) (top - pad + sz * scale)); - bitmapPaint.setAlpha((int) (255 * scale)); + bitmapPaint.setAlpha((int) (255 * alpha)); canvas.drawBitmap(indexBitmap, indexIn, indexOut, bitmapPaint); } } - private void drawDuration(Canvas canvas, float left, float bottom, String durationText, float scale) { + private void drawDuration(Canvas canvas, float left, float bottom, String durationText, float scale, float alpha) { if (durationText != null) { if (videoDurationBitmap == null || videoDurationBitmapText == null || !videoDurationBitmapText.equals(durationText)) { if (videoDurationTextPaint == null) { @@ -1932,11 +2176,14 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle int w = videoDurationBitmap.getWidth(), h = videoDurationBitmap.getHeight(); durationOut.set((int) left, (int) (bottom - h * scale), (int) (left + w * scale), (int) bottom); - bitmapPaint.setAlpha((int) (255 * scale)); + bitmapPaint.setAlpha((int) (255 * alpha)); canvas.drawBitmap(videoDurationBitmap, durationIn, durationOut, bitmapPaint); } } + private float visibleT = 1; + private long lastVisibleTUpdate = 0; + public boolean draw(Canvas canvas) { return draw(canvas, false); } @@ -1976,14 +2223,26 @@ public class ChatAttachAlertPhotoLayoutPreview extends ChatAttachAlert.AttachAle int index = indexStart + group.photos.indexOf(photoEntry); String indexText = index >= 0 ? (index + 1) + "" : null; - drawPhotoIndex(canvas, drawingRect.top + AndroidUtilities.dp(10), drawingRect.right - AndroidUtilities.dp(10), indexText, scale); - drawDuration(canvas, drawingRect.left + AndroidUtilities.dp(4), drawingRect.bottom - AndroidUtilities.dp(4), videoDurationText, scale); + float shouldVisibleT = image.getVisible() ? 1 : 0; + boolean needVisibleTUpdate; + if (needVisibleTUpdate = Math.abs(visibleT - shouldVisibleT) > 0.01f) { + long tx = Math.min(17, SystemClock.elapsedRealtime() - lastVisibleTUpdate); + lastVisibleTUpdate = SystemClock.elapsedRealtime(); + float upd = tx / 100f; + if (shouldVisibleT < visibleT) { + visibleT = Math.max(0, visibleT - upd); + } else { + visibleT = Math.min(1, visibleT + upd); + } + } + drawPhotoIndex(canvas, drawingRect.top + AndroidUtilities.dp(10), drawingRect.right - AndroidUtilities.dp(10), indexText, scale, scale * visibleT); + drawDuration(canvas, drawingRect.left + AndroidUtilities.dp(4), drawingRect.bottom - AndroidUtilities.dp(4), videoDurationText, scale, scale * visibleT); if (ignoreBounds) { canvas.restore(); } - return t < 1f; + return t < 1f || needVisibleTUpdate; } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java index 6eb972fc0..76f384c55 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java @@ -13,6 +13,8 @@ import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.content.Context; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; @@ -24,7 +26,10 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; +import androidx.core.content.ContextCompat; + import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.ChatObject; import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLog; @@ -50,7 +55,9 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent private BackupImageView avatarImageView; private SimpleTextView titleTextView; + private SimpleTextView titleTextLargerCopyView; private SimpleTextView subtitleTextView; + private SimpleTextView subtitleTextLargerCopyView; private ImageView timeItem; private TimerDrawable timerDrawable; private ChatActivity parentFragment; @@ -61,9 +68,14 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent private int leftPadding = AndroidUtilities.dp(8); StatusDrawable currentTypingDrawable; + private int lastWidth = -1; + private int largerWidth = -1; + + private AnimatorSet titleAnimation; private boolean[] isOnline = new boolean[1]; + public boolean[] statusMadeShorter = new boolean[1]; private boolean secretChatTimer; @@ -76,6 +88,9 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent private SharedMediaLayout.SharedMediaPreloader sharedMediaPreloader; private Theme.ResourcesProvider resourcesProvider; + public boolean allowShorterStatus = false; + public boolean premiumIconHiddable = false; + public ChatAvatarContainer(Context context, ChatActivity chatActivity, boolean needTime) { this(context, chatActivity, needTime, null); } @@ -113,7 +128,23 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent avatarImageView.setOnClickListener(v -> openProfile(true)); } - titleTextView = new SimpleTextView(context); + titleTextView = new SimpleTextView(context) { + @Override + public boolean setText(CharSequence value) { + if (titleTextLargerCopyView != null) { + titleTextLargerCopyView.setText(value); + } + return super.setText(value); + } + + @Override + public void setTranslationY(float translationY) { + if (titleTextLargerCopyView != null) { + titleTextLargerCopyView.setTranslationY(translationY); + } + super.setTranslationY(translationY); + } + }; titleTextView.setTextColor(getThemedColor(Theme.key_actionBarDefaultTitle)); titleTextView.setTextSize(18); titleTextView.setGravity(Gravity.LEFT); @@ -121,7 +152,23 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent titleTextView.setLeftDrawableTopPadding(-AndroidUtilities.dp(1.3f)); addView(titleTextView); - subtitleTextView = new SimpleTextView(context); + subtitleTextView = new SimpleTextView(context) { + @Override + public boolean setText(CharSequence value) { + if (subtitleTextLargerCopyView != null) { + subtitleTextLargerCopyView.setText(value); + } + return super.setText(value); + } + + @Override + public void setTranslationY(float translationY) { + if (subtitleTextLargerCopyView != null) { + subtitleTextLargerCopyView.setTranslationY(translationY); + } + super.setTranslationY(translationY); + } + }; subtitleTextView.setTextColor(getThemedColor(Theme.key_actionBarDefaultSubtitle)); subtitleTextView.setTag(Theme.key_actionBarDefaultSubtitle); subtitleTextView.setTextSize(14); @@ -255,7 +302,7 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent ImageLoader imageLoader = ImageLoader.getInstance(); if (key != null && !imageLoader.isInMemCache(key, false)) { Drawable drawable = imageReceiver.getDrawable(); - if (drawable instanceof BitmapDrawable) { + if (drawable instanceof BitmapDrawable && !(drawable instanceof AnimatedFileDrawable)) { imageLoader.putImageToCache((BitmapDrawable) drawable, key, false); } } @@ -312,6 +359,54 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent timeItem.measure(MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(34), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(34), MeasureSpec.EXACTLY)); } setMeasuredDimension(width, MeasureSpec.getSize(heightMeasureSpec)); + if (lastWidth != -1 && lastWidth != width && lastWidth > width) { + fadeOutToLessWidth(lastWidth); + } + if (titleTextLargerCopyView != null) { + int largerAvailableWidth = largerWidth - AndroidUtilities.dp((avatarImageView.getVisibility() == VISIBLE ? 54 : 0) + 16); + titleTextLargerCopyView.measure(MeasureSpec.makeMeasureSpec(largerAvailableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(24), MeasureSpec.AT_MOST)); + } + lastWidth = width; + } + + private void fadeOutToLessWidth(int largerWidth) { + this.largerWidth = largerWidth; + if (titleTextLargerCopyView != null) { + removeView(titleTextLargerCopyView); + } + titleTextLargerCopyView = new SimpleTextView(getContext()); + titleTextLargerCopyView.setTextColor(getThemedColor(Theme.key_actionBarDefaultTitle)); + titleTextLargerCopyView.setTextSize(18); + titleTextLargerCopyView.setGravity(Gravity.LEFT); + titleTextLargerCopyView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + titleTextLargerCopyView.setLeftDrawableTopPadding(-AndroidUtilities.dp(1.3f)); + titleTextLargerCopyView.setRightDrawable(titleTextView.getRightDrawable()); + titleTextLargerCopyView.setLeftDrawable(titleTextView.getLeftDrawable()); + titleTextLargerCopyView.setText(titleTextView.getText()); + titleTextLargerCopyView.animate().alpha(0).setDuration(350).setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT).withEndAction(() -> { + if (titleTextLargerCopyView != null) { + removeView(titleTextLargerCopyView); + titleTextLargerCopyView = null; + } + }).start(); + addView(titleTextLargerCopyView); + + subtitleTextLargerCopyView = new SimpleTextView(getContext()); + subtitleTextLargerCopyView.setTextColor(getThemedColor(Theme.key_actionBarDefaultSubtitle)); + subtitleTextLargerCopyView.setTag(Theme.key_actionBarDefaultSubtitle); + subtitleTextLargerCopyView.setTextSize(14); + subtitleTextLargerCopyView.setGravity(Gravity.LEFT); + subtitleTextLargerCopyView.setText(subtitleTextView.getText()); + subtitleTextLargerCopyView.animate().alpha(0).setDuration(350).setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT).withEndAction(() -> { + if (subtitleTextLargerCopyView != null) { + removeView(subtitleTextLargerCopyView); + subtitleTextLargerCopyView = null; + setClipChildren(true); + } + }).start(); + addView(subtitleTextLargerCopyView); + + setClipChildren(false); } @Override @@ -322,13 +417,22 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent int l = leftPadding + (avatarImageView.getVisibility() == VISIBLE ? AndroidUtilities.dp( 54) : 0); if (subtitleTextView.getVisibility() != GONE) { titleTextView.layout(l, viewTop + AndroidUtilities.dp(1.3f), l + titleTextView.getMeasuredWidth(), viewTop + titleTextView.getTextHeight() + AndroidUtilities.dp(1.3f)); + if (titleTextLargerCopyView != null) { + titleTextLargerCopyView.layout(l, viewTop + AndroidUtilities.dp(1.3f), l + titleTextLargerCopyView.getMeasuredWidth(), viewTop + titleTextLargerCopyView.getTextHeight() + AndroidUtilities.dp(1.3f)); + } } else { titleTextView.layout(l, viewTop + AndroidUtilities.dp(11), l + titleTextView.getMeasuredWidth(), viewTop + titleTextView.getTextHeight() + AndroidUtilities.dp(11)); + if (titleTextLargerCopyView != null) { + titleTextLargerCopyView.layout(l, viewTop + AndroidUtilities.dp(11), l + titleTextLargerCopyView.getMeasuredWidth(), viewTop + titleTextLargerCopyView.getTextHeight() + AndroidUtilities.dp(11)); + } } if (timeItem != null) { timeItem.layout(leftPadding + AndroidUtilities.dp(16), viewTop + AndroidUtilities.dp(15), leftPadding + AndroidUtilities.dp(16 + 34), viewTop + AndroidUtilities.dp(15 + 34)); } subtitleTextView.layout(l, viewTop + AndroidUtilities.dp(24), l + subtitleTextView.getMeasuredWidth(), viewTop + subtitleTextView.getTextHeight() + AndroidUtilities.dp(24)); + if (subtitleTextLargerCopyView != null) { + subtitleTextLargerCopyView.layout(l, viewTop + AndroidUtilities.dp(24), l + subtitleTextLargerCopyView.getMeasuredWidth(), viewTop + subtitleTextLargerCopyView.getTextHeight() + AndroidUtilities.dp(24)); + } } public void setLeftPadding(int value) { @@ -390,27 +494,61 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent } } - public void setTitleIcons(Drawable leftIcon, Drawable rightIcon) { + private boolean rightDrawableIsScamOrVerified = false; + private String rightDrawableContentDescription = null; + + public void setTitleIcons(Drawable leftIcon, Drawable mutedIcon) { titleTextView.setLeftDrawable(leftIcon); - if (!(titleTextView.getRightDrawable() instanceof ScamDrawable)) { - titleTextView.setRightDrawable(rightIcon); + if (!rightDrawableIsScamOrVerified) { + titleTextView.setRightDrawable(mutedIcon); + if (mutedIcon != null) { + rightDrawableContentDescription = LocaleController.getString("NotificationsMuted", R.string.NotificationsMuted); + } else { + rightDrawableContentDescription = null; + } } } public void setTitle(CharSequence value) { - setTitle(value, false, false); + setTitle(value, false, false, false, false); } - public void setTitle(CharSequence value, boolean scam, boolean fake) { + public void setTitle(CharSequence value, boolean scam, boolean fake, boolean verified, boolean premium) { + if (value != null) { + value = Emoji.replaceEmoji(value, titleTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(24), false); + } titleTextView.setText(value); + titleTextView.setCanHideRightDrawable(false); if (scam || fake) { if (!(titleTextView.getRightDrawable() instanceof ScamDrawable)) { ScamDrawable drawable = new ScamDrawable(11, scam ? 0 : 1); drawable.setColor(getThemedColor(Theme.key_actionBarDefaultSubtitle)); titleTextView.setRightDrawable(drawable); + rightDrawableContentDescription = LocaleController.getString("ScamMessage", R.string.ScamMessage); + rightDrawableIsScamOrVerified = true; } + } else if (verified) { + Drawable verifiedBackground = getResources().getDrawable(R.drawable.verified_area).mutate(); + verifiedBackground.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_profile_verifiedBackground), PorterDuff.Mode.MULTIPLY)); + Drawable verifiedCheck = getResources().getDrawable(R.drawable.verified_check).mutate(); + verifiedCheck.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_profile_verifiedCheck), PorterDuff.Mode.MULTIPLY)); + Drawable verifiedDrawable = new CombinedDrawable(verifiedBackground, verifiedCheck); + titleTextView.setRightDrawable(verifiedDrawable); + rightDrawableIsScamOrVerified = true; + rightDrawableContentDescription = LocaleController.getString("AccDescrVerified", R.string.AccDescrVerified); + } else if (premium) { + if (premiumIconHiddable) { + titleTextView.setCanHideRightDrawable(true); + } + Drawable drawable = ContextCompat.getDrawable(ApplicationLoader.applicationContext, R.drawable.msg_premium_liststar).mutate(); + drawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_profile_verifiedBackground), PorterDuff.Mode.MULTIPLY)); + titleTextView.setRightDrawable(drawable); + rightDrawableIsScamOrVerified = true; + rightDrawableContentDescription = LocaleController.getString("AccDescrPremium", R.string.AccDescrPremium); } else if (titleTextView.getRightDrawable() instanceof ScamDrawable) { titleTextView.setRightDrawable(null); + rightDrawableIsScamOrVerified = false; + rightDrawableContentDescription = null; } } @@ -610,7 +748,7 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent newStatus = LocaleController.getString("Bot", R.string.Bot); } else { isOnline[0] = false; - newStatus = LocaleController.formatUserStatus(currentAccount, user, isOnline); + newStatus = LocaleController.formatUserStatus(currentAccount, user, isOnline, allowShorterStatus ? statusMadeShorter : null); useOnlineColor = isOnline[0]; } newSubtitle = newStatus; @@ -666,6 +804,10 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent } } + public String getLastSubtitleColorKey() { + return lastSubtitleColorKey; + } + public void setChatAvatar(TLRPC.Chat chat) { avatarDrawable.setInfo(chat); if (avatarImageView != null) { @@ -722,7 +864,7 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent } else { avatarDrawable.setSmallSize(false); if (avatarImageView != null) { - avatarImageView.setForUserOrChat(user, avatarDrawable); + avatarImageView.imageReceiver.setForUserOrChat(user, avatarDrawable, null, true); } } } else if (chat != null) { @@ -761,6 +903,7 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent super.onAttachedToWindow(); if (parentFragment != null) { NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.didUpdateConnectionState); + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.emojiLoaded); currentConnectionState = ConnectionsManager.getInstance(currentAccount).getConnectionState(); updateCurrentConnectionState(); } @@ -771,6 +914,7 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent super.onDetachedFromWindow(); if (parentFragment != null) { NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.didUpdateConnectionState); + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.emojiLoaded); } } @@ -782,6 +926,14 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent currentConnectionState = state; updateCurrentConnectionState(); } + } else if (id == NotificationCenter.emojiLoaded) { + if (titleTextView != null) { + titleTextView.invalidate(); + } + if (subtitleTextView != null) { + subtitleTextView.invalidate(); + } + invalidate(); } } @@ -824,6 +976,15 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); + StringBuilder sb = new StringBuilder(); + sb.append(titleTextView.getText()); + if (rightDrawableContentDescription != null) { + sb.append(", "); + sb.append(rightDrawableContentDescription); + } + sb.append("\n"); + sb.append(subtitleTextView.getText()); + info.setContentDescription(sb); if (info.isClickable() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { info.addAction(new AccessibilityNodeInfo.AccessibilityAction(AccessibilityNodeInfo.ACTION_CLICK, LocaleController.getString("OpenProfile", R.string.OpenProfile))); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatBigEmptyView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatBigEmptyView.java index 92ce094e0..0f3c0bf00 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatBigEmptyView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatBigEmptyView.java @@ -62,8 +62,10 @@ public class ChatBigEmptyView extends LinearLayout { textViews.add(statusTextView); addView(statusTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP)); } else { - ImageView imageView = new ImageView(context); - imageView.setImageResource(R.drawable.cloud_big); + RLottieImageView imageView = new RLottieImageView(context); + imageView.setAutoRepeat(true); + imageView.setAnimation(R.raw.utyan_saved_messages, 120, 120); + imageView.playAnimation(); addView(imageView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, 2, 0, 0)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatGreetingsView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatGreetingsView.java index 746073969..af5ef3639 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatGreetingsView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatGreetingsView.java @@ -1,6 +1,7 @@ package org.telegram.ui.Components; import android.content.Context; +import android.graphics.Canvas; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -32,6 +33,7 @@ public class ChatGreetingsView extends LinearLayout { public BackupImageView stickerToSendView; private final Theme.ResourcesProvider resourcesProvider; + boolean wasDraw; public ChatGreetingsView(Context context, TLRPC.User user, int distance, int currentAccount, TLRPC.Document sticker, Theme.ResourcesProvider resourcesProvider) { super(context); @@ -64,12 +66,12 @@ public class ChatGreetingsView extends LinearLayout { titleView.setText(LocaleController.formatString("NearbyPeopleGreetingsMessage", R.string.NearbyPeopleGreetingsMessage, user.first_name, LocaleController.formatDistance(distance, 1))); descriptionView.setText(LocaleController.getString("NearbyPeopleGreetingsDescription", R.string.NearbyPeopleGreetingsDescription)); } + stickerToSendView.setContentDescription(descriptionView.getText()); preloadedGreetingsSticker = sticker; if (preloadedGreetingsSticker == null) { preloadedGreetingsSticker = MediaDataController.getInstance(currentAccount).getGreetingsSticker(); } - setSticker(preloadedGreetingsSticker); } private void setSticker(TLRPC.Document sticker) { @@ -160,6 +162,15 @@ public class ChatGreetingsView extends LinearLayout { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } + @Override + protected void dispatchDraw(Canvas canvas) { + if (!wasDraw) { + wasDraw = true; + setSticker(preloadedGreetingsSticker); + } + super.dispatchDraw(canvas); + } + @Override public void requestLayout() { if (ignoreLayot) { @@ -182,7 +193,9 @@ public class ChatGreetingsView extends LinearLayout { private void fetchSticker() { if (preloadedGreetingsSticker == null) { preloadedGreetingsSticker = MediaDataController.getInstance(currentAccount).getGreetingsSticker(); - setSticker(preloadedGreetingsSticker); + if (wasDraw) { + setSticker(preloadedGreetingsSticker); + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatNotificationsPopupWrapper.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatNotificationsPopupWrapper.java index db1047ee6..7c4b72bd8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatNotificationsPopupWrapper.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatNotificationsPopupWrapper.java @@ -69,7 +69,7 @@ public class ChatNotificationsPopupWrapper { ActionBarMenuSubItem item = ActionBarMenuItem.addItem(windowLayout, R.drawable.msg_mute_period, LocaleController.getString("MuteForPopup", R.string.MuteForPopup), false, resourcesProvider); item.setOnClickListener(view -> { dismiss(); - AlertsCreator.createMuteForPickerDialog(context, (notify, inSecond) -> { + AlertsCreator.createMuteForPickerDialog(context, resourcesProvider, (notify, inSecond) -> { AndroidUtilities.runOnUIThread(() -> { if (inSecond != 0) { SharedPreferences sharedPreferences = MessagesController.getNotificationsSettings(currentAccount); @@ -220,7 +220,7 @@ public class ChatNotificationsPopupWrapper { } public interface Callback { - void dismiss(); + default void dismiss() {} void toggleSound(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatScrimPopupContainerLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatScrimPopupContainerLayout.java index 1f1f5e552..09db6306e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatScrimPopupContainerLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatScrimPopupContainerLayout.java @@ -13,6 +13,7 @@ public class ChatScrimPopupContainerLayout extends LinearLayout { private ReactionsContainerLayout reactionsLayout; private ActionBarPopupWindow.ActionBarPopupWindowLayout popupWindowLayout; private View bottomView; + private int maxHeight; public ChatScrimPopupContainerLayout(Context context) { super(context); @@ -21,11 +22,17 @@ public class ChatScrimPopupContainerLayout extends LinearLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (maxHeight != 0) { + heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST); + } if (reactionsLayout != null && popupWindowLayout != null) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int reactionsLayoutTotalWidth = reactionsLayout.getTotalWidth(); View menuContainer = popupWindowLayout.getSwipeBack() != null ? popupWindowLayout.getSwipeBack().getChildAt(0) : popupWindowLayout.getChildAt(0); int maxReactionsLayoutWidth = menuContainer.getMeasuredWidth() + AndroidUtilities.dp(16) + AndroidUtilities.dp(16) + AndroidUtilities.dp(36); + if (maxReactionsLayoutWidth > getMeasuredWidth()) { + maxReactionsLayoutWidth = getMeasuredWidth(); + } if (reactionsLayoutTotalWidth > maxReactionsLayoutWidth) { int maxFullCount = ((maxReactionsLayoutWidth - AndroidUtilities.dp(16)) / AndroidUtilities.dp(36)) + 1; int newWidth = maxFullCount * AndroidUtilities.dp(36) + AndroidUtilities.dp(16) - AndroidUtilities.dp(8); @@ -40,9 +47,12 @@ public class ChatScrimPopupContainerLayout extends LinearLayout { if (popupWindowLayout.getSwipeBack() != null) { widthDiff = popupWindowLayout.getSwipeBack().getMeasuredWidth() - popupWindowLayout.getSwipeBack().getChildAt(0).getMeasuredWidth(); } - if (reactionsLayout.getLayoutParams().width != LayoutHelper.WRAP_CONTENT && reactionsLayout.getLayoutParams().width + widthDiff > getMeasuredWidth()) { + if (reactionsLayout.getLayoutParams().width != LayoutHelper.WRAP_CONTENT && reactionsLayout.getLayoutParams().width + widthDiff > getMeasuredWidth() && popupWindowLayout.getSwipeBack() != null && popupWindowLayout.getSwipeBack().getMeasuredWidth() > getMeasuredWidth()) { widthDiff = getMeasuredWidth() - reactionsLayout.getLayoutParams().width + AndroidUtilities.dp(8); } + if (widthDiff < 0) { + widthDiff = 0; + } ((LayoutParams) reactionsLayout.getLayoutParams()).rightMargin = widthDiff; if (bottomView != null) { if (popupWindowLayout.getSwipeBack() != null) { @@ -67,23 +77,21 @@ public class ChatScrimPopupContainerLayout extends LinearLayout { public void setPopupWindowLayout(ActionBarPopupWindow.ActionBarPopupWindowLayout popupWindowLayout) { this.popupWindowLayout = popupWindowLayout; - popupWindowLayout.setOnSizeChangedListener(new ActionBarPopupWindow.onSizeChangedListener() { - @Override - public void onSizeChanged() { - if (bottomView != null) { - bottomView.setTranslationY(popupWindowLayout.getVisibleHeight() - popupWindowLayout.getMeasuredHeight()); - } + popupWindowLayout.setOnSizeChangedListener(() -> { + if (bottomView != null) { + bottomView.setTranslationY(popupWindowLayout.getVisibleHeight() - popupWindowLayout.getMeasuredHeight()); } }); if (popupWindowLayout.getSwipeBack() != null) { - popupWindowLayout.getSwipeBack().addOnSwipeBackProgressListener(new PopupSwipeBackLayout.OnSwipeBackProgressListener() { - @Override - public void onSwipeBackProgress(PopupSwipeBackLayout layout, float toProgress, float progress) { - if (bottomView != null) { - bottomView.setAlpha(1f - progress); - } + popupWindowLayout.getSwipeBack().addOnSwipeBackProgressListener((layout, toProgress, progress) -> { + if (bottomView != null) { + bottomView.setAlpha(1f - progress); } }); } } + + public void setMaxHeight(int maxHeight) { + this.maxHeight = maxHeight; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatThemeBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatThemeBottomSheet.java index a6c78aa53..5a260a11b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatThemeBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatThemeBottomSheet.java @@ -22,6 +22,7 @@ import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -126,7 +127,17 @@ public class ChatThemeBottomSheet extends BottomSheet implements NotificationCen darkThemeDrawable.setPlayInDirectionOfCustomEndFrame(true); darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(drawableColor, PorterDuff.Mode.MULTIPLY)); - darkThemeView = new RLottieImageView(getContext()); + darkThemeView = new RLottieImageView(getContext()){ + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (forceDark) { + info.setText(LocaleController.getString("AccDescrSwitchToDayTheme", R.string.AccDescrSwitchToDayTheme)); + } else { + info.setText(LocaleController.getString("AccDescrSwitchToNightTheme", R.string.AccDescrSwitchToNightTheme)); + } + } + }; darkThemeView.setAnimation(darkThemeDrawable); darkThemeView.setScaleType(ImageView.ScaleType.CENTER); darkThemeView.setOnClickListener(view -> { @@ -696,6 +707,10 @@ public class ChatThemeBottomSheet extends BottomSheet implements NotificationCen animated = false; } + view.setFocusable(true); + view.setEnabled(true); + + view.setBackgroundColor(Theme.getColor(Theme.key_dialogBackgroundGray)); view.setItem(newItem, animated); view.setSelected(position == selectedItemPosition, animated); if (position == selectedItemPosition) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/CircularProgressDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/CircularProgressDrawable.java index dce400dc1..4ec8de90c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/CircularProgressDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/CircularProgressDrawable.java @@ -17,32 +17,36 @@ import org.telegram.messenger.AndroidUtilities; public class CircularProgressDrawable extends Drawable { + private float size = AndroidUtilities.dp(18); + private float thickness = AndroidUtilities.dp(2.25f); + public CircularProgressDrawable() { this(0xffffffff); } public CircularProgressDrawable(int color) { setColor(color); } + public CircularProgressDrawable(float size, float thickness, int color) { + this.size = size; + this.thickness = thickness; + setColor(color); + } private long start = -1; private final FastOutSlowInInterpolator interpolator = new FastOutSlowInInterpolator(); private float segmentFrom, segmentTo; private void updateSegment() { - final float t = (SystemClock.elapsedRealtime() - start) % 5400f / 667f; - segmentFrom = - t * 187.748148f + 250 * ( - interpolator.getInterpolation(t - 1f) + - interpolator.getInterpolation(t - 3.024f) + - interpolator.getInterpolation(t - 5.048f) + - interpolator.getInterpolation(t - 7.072f) - ) - 20; - segmentTo = - t * 187.748148f + 250 * ( - interpolator.getInterpolation(t) + - interpolator.getInterpolation(t - 2.024f) + - interpolator.getInterpolation(t - 4.048f) + - interpolator.getInterpolation(t - 6.072f) - ); + final long now = SystemClock.elapsedRealtime(); + final long t = (now - start) % 5400; + segmentFrom = 1520 * t / 5400f - 20; + segmentTo = 1520 * t / 5400f; + float fraction; + for (int i = 0; i < 4; ++i) { + fraction = (t - i * 1350) / 667f; + segmentTo += interpolator.getInterpolation(fraction) * 250; + fraction = (t - (667 + i * 1350)) / 667f; + segmentFrom += interpolator.getInterpolation(fraction) * 250; + } } private final Paint paint = new Paint(); { @@ -68,14 +72,12 @@ public class CircularProgressDrawable extends Drawable { @Override public void setBounds(int left, int top, int right, int bottom) { - final float radius = AndroidUtilities.dp(9); - final float thickness = AndroidUtilities.dp(2.25f); int width = right - left, height = bottom - top; bounds.set( - left + (width - thickness / 2f) / 2f - radius, - top + (height - thickness / 2f) / 2f - radius, - left + (width + thickness / 2f) / 2f + radius, - top + (height + thickness / 2f) / 2f + radius + left + (width - thickness / 2f - size) / 2f, + top + (height - thickness / 2f - size) / 2f, + left + (width + thickness / 2f + size) / 2f, + top + (height + thickness / 2f + size) / 2f ); super.setBounds(left, top, right, bottom); paint.setStrokeWidth(thickness); @@ -86,9 +88,13 @@ public class CircularProgressDrawable extends Drawable { } @Override - public void setAlpha(int i) {} + public void setAlpha(int alpha) { + paint.setAlpha(alpha); + } + @Override public void setColorFilter(@Nullable ColorFilter colorFilter) {} + @Override public int getOpacity() { return PixelFormat.TRANSPARENT; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ClearHistoryAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ClearHistoryAlert.java index c062a4e8e..14e2ebbfb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ClearHistoryAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ClearHistoryAlert.java @@ -367,7 +367,6 @@ public class ClearHistoryAlert extends BottomSheet { linearLayout.addView(buttonContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); TextInfoPrivacyCell infoCell = new TextInfoPrivacyCell(context, resourcesProvider); - infoCell.setText(LocaleController.getString("AutoDeleteInfo", R.string.AutoDeleteInfo)); buttonContainer.addView(infoCell); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ClippingImageView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ClippingImageView.java index 9965945ee..5042e210d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ClippingImageView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ClippingImageView.java @@ -249,6 +249,16 @@ public class ClippingImageView extends View { orientation = angle; } + public float getCenterX() { + float scaleY = getScaleY(); + return getTranslationX() + (clipLeft / scaleY + (getWidth() - clipRight / scaleY)) / 2 * getScaleX(); + } + + public float getCenterY() { + float scaleY = getScaleY(); + return getTranslationY() + (clipTop / scaleY + (getHeight() - clipBottom / scaleY)) / 2 * getScaleY(); + } + public void setImageBitmap(ImageReceiver.BitmapHolder bitmap) { if (bmp != null) { bmp.release(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ColorPicker.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ColorPicker.java index 976f85180..92e92d53e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ColorPicker.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ColorPicker.java @@ -35,6 +35,8 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.Keep; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; @@ -45,8 +47,6 @@ import org.telegram.ui.ActionBar.ThemeDescription; import java.util.ArrayList; import java.util.List; -import androidx.annotation.Keep; - public class ColorPicker extends FrameLayout { private final ColorPickerDelegate delegate; @@ -391,7 +391,7 @@ public class ColorPicker extends FrameLayout { addButton = new ImageView(getContext()); addButton.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_dialogButtonSelector), 1)); - addButton.setImageResource(R.drawable.themes_addcolor); + addButton.setImageResource(R.drawable.msg_add); addButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText), PorterDuff.Mode.MULTIPLY)); addButton.setScaleType(ImageView.ScaleType.CENTER); addButton.setOnClickListener(v -> { @@ -485,7 +485,7 @@ public class ColorPicker extends FrameLayout { } }; clearButton.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_dialogButtonSelector), 1)); - clearButton.setImageResource(R.drawable.themes_deletecolor); + clearButton.setImageResource(R.drawable.msg_close); clearButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText), PorterDuff.Mode.MULTIPLY)); clearButton.setAlpha(0.0f); clearButton.setScaleX(0.0f); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ColoredImageSpan.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ColoredImageSpan.java index ad0e2a3c9..bca7e4832 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ColoredImageSpan.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ColoredImageSpan.java @@ -9,35 +9,70 @@ import android.text.style.ReplacementSpan; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; +import org.telegram.ui.ActionBar.Theme; public class ColoredImageSpan extends ReplacementSpan { int drawableColor; Drawable drawable; - public ColoredImageSpan(@NonNull Drawable drawable) { + boolean usePaintColor = true; + String colorKey; + private int topOffset = 0; + + private int size; + + public ColoredImageSpan(int imageRes) { + this(ContextCompat.getDrawable(ApplicationLoader.applicationContext, imageRes)); + } + + public ColoredImageSpan(Drawable drawable) { this.drawable = drawable; drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); } + public void setSize(int size) { + this.size = size; + drawable.setBounds(0, 0, size, size); + } + @Override public int getSize(@NonNull Paint paint, CharSequence charSequence, int i, int i1, @Nullable Paint.FontMetricsInt fontMetricsInt) { - return drawable.getIntrinsicWidth(); + return size != 0 ? size : drawable.getIntrinsicWidth(); } @Override public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NonNull Paint paint) { - if (drawableColor != paint.getColor()) { - drawableColor = paint.getColor(); + int color; + if (usePaintColor) { + color = paint.getColor(); + } else { + color = Theme.getColor(colorKey); + } + if (drawableColor != color) { + drawableColor = color; drawable.setColorFilter(new PorterDuffColorFilter(drawableColor, PorterDuff.Mode.MULTIPLY)); } int lineHeight = bottom - top; - int drawableHeight = drawable.getIntrinsicHeight(); + int drawableHeight = size != 0 ? size : drawable.getIntrinsicHeight(); int padding = (lineHeight - drawableHeight) / 2; canvas.save(); - canvas.translate(x, top + padding); + canvas.translate(x, top + padding + AndroidUtilities.dp(topOffset)); drawable.draw(canvas); canvas.restore(); } + + public void setColorKey(String colorKey) { + this.colorKey = colorKey; + usePaintColor = false; + } + + public void setTopOffset(int topOffset) { + this.topOffset = topOffset; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropAreaView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropAreaView.java index 5deadc000..7b64c6e30 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropAreaView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropAreaView.java @@ -4,11 +4,13 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; +import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; +import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.RectF; @@ -16,16 +18,20 @@ import android.os.Build; import androidx.annotation.Keep; import android.os.SystemClock; +import android.text.TextPaint; +import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.Interpolator; import org.telegram.messenger.AndroidUtilities; import org.telegram.ui.BubbleActivity; -public class CropAreaView extends View { +public class CropAreaView extends ViewGroup { private enum Control { NONE, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, TOP, LEFT, BOTTOM, RIGHT @@ -137,8 +143,13 @@ public class CropAreaView extends View { bitmapPaint = new Paint(Paint.FILTER_BITMAP_FLAG); bitmapPaint.setColor(0xffffffff); + + setWillNotDraw(false); } + @Override + protected void onLayout(boolean b, int i, int i1, int i2, int i3) {} + public void setIsVideo(boolean value) { minWidth = AndroidUtilities.dp(value ? 64 : 32); } @@ -207,19 +218,45 @@ public class CropAreaView extends View { invalidate(); } + public float rotate = 0; + public float scale = 1; + public float tx = 0, ty = 0; + public void setRotationScaleTranslation(float rotate, float scale, float tx, float ty) { + this.rotate = rotate; + this.scale = scale; + this.tx = tx; + this.ty = ty; + invalidate(); + } + @Override protected void onDraw(Canvas canvas) { if (freeform) { - int lineThickness = AndroidUtilities.dp(2); - int handleSize = AndroidUtilities.dp(16); - int handleThickness = AndroidUtilities.dp(3); + int lineThickness = AndroidUtilities.dp(2 / scale); + int handleSize = AndroidUtilities.dp(16 / scale); + int handleThickness = AndroidUtilities.dp(3 / scale); int originX = (int) actualRect.left - lineThickness; int originY = (int) actualRect.top - lineThickness; int width = (int) (actualRect.right - actualRect.left) + lineThickness * 2; int height = (int) (actualRect.bottom - actualRect.top) + lineThickness * 2; + canvas.save(); + canvas.translate(tx, ty); + canvas.scale(scale, scale, originX + width / 2, originY + height / 2); + canvas.rotate(rotate, originX + width / 2, originY + height / 2); + if (dimVisibile) { + int left = -getWidth() * 4, top = -getHeight() * 4, + right = getWidth() * 4, bottom = getHeight() * 4; + + dimPaint.setAlpha((int) (0xff - 0x7f * frameAlpha)); + + canvas.drawRect(left, top, right, 0, dimPaint); + canvas.drawRect(left, 0, 0, getHeight(), dimPaint); + canvas.drawRect(getWidth(), 0, right, getHeight(), dimPaint); + canvas.drawRect(left, getHeight(), right, bottom, dimPaint); + canvas.drawRect(0, 0, getWidth(), originY + lineThickness, dimPaint); canvas.drawRect(0, originY + lineThickness, originX + lineThickness, originY + height - lineThickness, dimPaint); canvas.drawRect(originX + width - lineThickness, originY + lineThickness, getWidth(), originY + height - lineThickness, dimPaint); @@ -244,6 +281,11 @@ public class CropAreaView extends View { framePaint.setAlpha((int) (178 * frameAlpha)); handlePaint.setAlpha((int) (255 * frameAlpha)); + canvas.drawRect(originX + inset, originY + inset, originX + width - inset, originY + inset + lineThickness, framePaint); + canvas.drawRect(originX + inset, originY + inset, originX + inset + lineThickness, originY + height - inset, framePaint); + canvas.drawRect(originX + inset, originY + height - inset - lineThickness, originX + width - inset, originY + height - inset, framePaint); + canvas.drawRect(originX + width - inset - lineThickness, originY + inset, originX + width - inset, originY + height - inset, framePaint); + for (int i = 0; i < 3; i++) { if (type == GridType.MINOR) { for (int j = 1; j < 4; j++) { @@ -272,11 +314,6 @@ public class CropAreaView extends View { } } - canvas.drawRect(originX + inset, originY + inset, originX + width - inset, originY + inset + lineThickness, framePaint); - canvas.drawRect(originX + inset, originY + inset, originX + inset + lineThickness, originY + height - inset, framePaint); - canvas.drawRect(originX + inset, originY + height - inset - lineThickness, originX + width - inset, originY + height - inset, framePaint); - canvas.drawRect(originX + width - inset - lineThickness, originY + inset, originX + width - inset, originY + height - inset, framePaint); - canvas.drawRect(originX, originY, originX + handleSize, originY + handleThickness, handlePaint); canvas.drawRect(originX, originY, originX + handleThickness, originY + handleSize, handlePaint); @@ -288,6 +325,8 @@ public class CropAreaView extends View { canvas.drawRect(originX + width - handleSize, originY + height - handleThickness, originX + width, originY + height, handlePaint); canvas.drawRect(originX + width - handleThickness, originY + height - handleSize, originX + width, originY + height, handlePaint); + + canvas.restore(); } else { float width = getMeasuredWidth() - 2 * sidePadding; float height = getMeasuredHeight() - bottomPadding - (Build.VERSION.SDK_INT >= 21 && !inBubbleMode ? AndroidUtilities.statusBarHeight : 0) - 2 * sidePadding; @@ -556,6 +595,28 @@ public class CropAreaView extends View { rect.set(left, top, right, bottom); } + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + if (isDragging) { + return false; + } + return super.onInterceptTouchEvent(ev); + } + + public void updateStatusShow(boolean show) { + try { + Window window = ((Activity) getContext()).getWindow(); + View decorView = window.getDecorView(); + int flags = decorView.getSystemUiVisibility(); + if (show) { + flags |= View.SYSTEM_UI_FLAG_FULLSCREEN; + } else { + flags &= ~View.SYSTEM_UI_FLAG_FULLSCREEN; + } + decorView.setSystemUiVisibility(flags); + } catch (Exception ignore) {} + } + @Override public boolean onTouchEvent(MotionEvent event) { int x = (int) (event.getX() - ((ViewGroup) getParent()).getX()); @@ -596,6 +657,7 @@ public class CropAreaView extends View { setGridType(GridType.MAJOR, false); isDragging = true; + updateStatusShow(true); if (listener != null) { listener.onAreaChangeBegan(); @@ -604,6 +666,7 @@ public class CropAreaView extends View { return true; } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { isDragging = false; + updateStatusShow(false); if (activeControl == Control.NONE) { return false; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropRotationWheel.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropRotationWheel.java index 9d2592b47..12aa9780f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropRotationWheel.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropRotationWheel.java @@ -7,11 +7,13 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.RectF; +import android.os.Build; +import android.text.TextPaint; import android.view.Gravity; +import android.view.HapticFeedbackConstants; import android.view.MotionEvent; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; @@ -40,7 +42,9 @@ public class CropRotationWheel extends FrameLayout { private ImageView aspectRatioButton; private ImageView rotation90Button; private ImageView mirrorButton; - private TextView degreesLabel; +// private TextView degreesLabel; + private String degreesText; + private TextPaint degreesTextPaint; protected float rotation; private RectF tempRect; @@ -66,7 +70,7 @@ public class CropRotationWheel extends FrameLayout { bluePaint.setAntiAlias(true); mirrorButton = new ImageView(context); - mirrorButton.setImageResource(R.drawable.photo_flip); + mirrorButton.setImageResource(R.drawable.msg_photo_flip); mirrorButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); mirrorButton.setScaleType(ImageView.ScaleType.CENTER); mirrorButton.setOnClickListener(v -> { @@ -82,7 +86,7 @@ public class CropRotationWheel extends FrameLayout { addView(mirrorButton, LayoutHelper.createFrame(70, 64, Gravity.LEFT | Gravity.CENTER_VERTICAL)); aspectRatioButton = new ImageView(context); - aspectRatioButton.setImageResource(R.drawable.tool_cropfix); + aspectRatioButton.setImageResource(R.drawable.msg_photo_cropfix); aspectRatioButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); aspectRatioButton.setScaleType(ImageView.ScaleType.CENTER); aspectRatioButton.setOnClickListener(v -> { @@ -95,7 +99,7 @@ public class CropRotationWheel extends FrameLayout { addView(aspectRatioButton, LayoutHelper.createFrame(70, 64, Gravity.LEFT | Gravity.CENTER_VERTICAL)); rotation90Button = new ImageView(context); - rotation90Button.setImageResource(R.drawable.tool_rotate); + rotation90Button.setImageResource(R.drawable.msg_photo_rotate); rotation90Button.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); rotation90Button.setScaleType(ImageView.ScaleType.CENTER); rotation90Button.setOnClickListener(v -> { @@ -106,9 +110,9 @@ public class CropRotationWheel extends FrameLayout { rotation90Button.setContentDescription(LocaleController.getString("AccDescrRotate", R.string.AccDescrRotate)); addView(rotation90Button, LayoutHelper.createFrame(70, 64, Gravity.RIGHT | Gravity.CENTER_VERTICAL)); - degreesLabel = new TextView(context); - degreesLabel.setTextColor(Color.WHITE); - addView(degreesLabel, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.CENTER_HORIZONTAL)); + degreesTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + degreesTextPaint.setColor(Color.WHITE); + degreesTextPaint.setTextSize(AndroidUtilities.dp(14)); setWillNotDraw(false); @@ -147,14 +151,18 @@ public class CropRotationWheel extends FrameLayout { public void setRotation(float rotation, boolean animated) { this.rotation = rotation; - float value = this.rotation; + float value = rotation; if (Math.abs(value) < 0.1 - 0.001) value = Math.abs(value); - degreesLabel.setText(String.format("%.1fº", value)); + degreesText = String.format("%.1fº", value); invalidate(); } + public float getRotation() { + return this.rotation; + } + public void setAspectLock(boolean enabled) { aspectRatioButton.setColorFilter(enabled ? new PorterDuffColorFilter(0xff51bdf3, PorterDuff.Mode.MULTIPLY) : null); } @@ -167,8 +175,9 @@ public class CropRotationWheel extends FrameLayout { if (action == MotionEvent.ACTION_DOWN) { prevX = x; - if (rotationListener != null) + if (rotationListener != null) { rotationListener.onStart(); + } } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { if (rotationListener != null) rotationListener.onEnd(this.rotation); @@ -179,14 +188,26 @@ public class CropRotationWheel extends FrameLayout { float newAngle = this.rotation + (float)(delta / AndroidUtilities.density / Math.PI / 1.65f); newAngle = Math.max(-MAX_ANGLE, Math.min(MAX_ANGLE, newAngle)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { + try { + if (Math.abs(newAngle - MAX_ANGLE) < 0.001f && Math.abs(this.rotation - MAX_ANGLE) >= 0.001f || + Math.abs(newAngle - -MAX_ANGLE) < 0.001f && Math.abs(this.rotation - -MAX_ANGLE) >= 0.001f) { + performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } else if (Math.floor(this.rotation / 2.5f) != Math.floor(newAngle / 2.5f)) { + performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } + } catch (Exception ignore) {} + } + if (Math.abs(newAngle - this.rotation) > 0.001) { if (Math.abs(newAngle) < 0.05) newAngle = 0; setRotation(newAngle, false); - if (rotationListener != null) + if (rotationListener != null) { rotationListener.onChange(this.rotation); + } prevX = x; } @@ -228,6 +249,10 @@ public class CropRotationWheel extends FrameLayout { tempRect.right = (width + AndroidUtilities.dp(2.5f)) / 2; tempRect.bottom = (height + AndroidUtilities.dp(22)) / 2; canvas.drawRoundRect(tempRect, AndroidUtilities.dp(2), AndroidUtilities.dp(2), bluePaint); + + float tx = (width - degreesTextPaint.measureText(degreesText)) / 2; + float ty = AndroidUtilities.dp(14); + canvas.drawText(degreesText, tx, ty, degreesTextPaint); } protected void drawLine(Canvas canvas, int i, float delta, int width, int height, boolean center, Paint paint) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropTransform.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropTransform.java index 2f5235fff..4921f3574 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropTransform.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropTransform.java @@ -100,7 +100,7 @@ public class CropTransform { return cropPh; } - public boolean isMirrored () { + public boolean isMirrored() { return isMirrored; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropView.java index 7d9a227cc..3a2515f6c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Crop/CropView.java @@ -44,7 +44,7 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen private static final int RESULT_SIDE = 1280; private static final float MAX_SCALE = 30.0f; - private CropAreaView areaView; + public CropAreaView areaView; private ImageView imageView; private Matrix overlayMatrix; private PaintingOverlay paintingOverlay; @@ -75,19 +75,19 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen private int bitmapRotation; - private class CropState { - private float width; - private float height; + public class CropState { + public float width; + public float height; - private float x; - private float y; - private float scale; - private float minimumScale; - private float baseRotation; - private float orientation; - private float rotation; - private boolean mirrored; - private Matrix matrix; + public float x; + public float y; + public float scale; + public float minimumScale; + public float baseRotation; + public float orientation; + public float rotation; + public boolean mirrored; + public Matrix matrix; private CropState(int w, int h, int bRotation) { width = w; @@ -202,9 +202,18 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen y = 0.0f; rotation = 0.0f; orientation = orient; + updateMinimumScale(); scale = minimumScale; + matrix.postScale(scale, scale); + } + private void rotateToOrientation(float orientation) { + matrix.postScale(1f / scale, 1f / scale); + this.orientation = orientation; + float wasMinimumScale = minimumScale; + updateMinimumScale(); + scale = scale / wasMinimumScale * minimumScale; matrix.postScale(scale, scale); } @@ -231,7 +240,7 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen } } - private CropState state; + public CropState state; public interface CropViewListener { void onChange(boolean reset); @@ -242,6 +251,18 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen private CropViewListener listener; + public float getStateOrientation() { + return state.orientation; + } + + public float getStateFullOrientation() { + return state.baseRotation + state.orientation; + } + + public boolean getStateMirror() { + return state.mirrored; + } + public CropView(Context context) { super(context); @@ -401,13 +422,17 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen } public void reset() { + reset(false); + } + + public void reset(boolean force) { areaView.resetAnimator(); areaView.setBitmap(getCurrentWidth(), getCurrentHeight(), state.getBaseRotation() % 180 != 0, freeform); areaView.setLockedAspectRatio(freeform ? 0.0f : 1.0f); state.reset(areaView, 0, freeform); state.mirrored = false; areaView.getCropRect(initialAreaRect); - updateMatrix(); + updateMatrix(force); resetRotationStartScale(); @@ -418,6 +443,10 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen } public void updateMatrix() { + updateMatrix(false); + } + + public void updateMatrix(boolean force) { overlayMatrix.reset(); if (state.getBaseRotation() == 90 || state.getBaseRotation() == 270) { overlayMatrix.postTranslate(-state.getHeight() / 2, -state.getWidth() / 2); @@ -427,7 +456,7 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen overlayMatrix.postRotate(state.getOrientationOnly()); state.getConcatMatrix(overlayMatrix); overlayMatrix.postTranslate(areaView.getCropCenterX(), areaView.getCropCenterY()); - if ((!freeform || isVisible)) { + if (!freeform || isVisible || force) { updateCropTransform(); listener.onUpdate(); } @@ -685,6 +714,13 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen return bitmapRotation == 90 || bitmapRotation == 270 ? bitmap.getWidth() : bitmap.getHeight(); } + public boolean isMirrored() { + if (state == null) { + return false; + } + return state.mirrored; + } + public boolean mirror() { if (state == null) { return false; @@ -698,7 +734,58 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen return state.mirrored; } - public boolean rotate90Degrees() { + public void maximize(boolean animated) { + final float toScale = state.minimumScale; + areaView.resetAnimator(); + float aspectRatio; + if (state.getOrientation() % 180 != 0) { + aspectRatio = getCurrentHeight() / (float) getCurrentWidth(); + } else { + aspectRatio = getCurrentWidth() / (float) getCurrentHeight(); + } + if (!freeform) { + aspectRatio = 1.0f; + } + areaView.calculateRect(initialAreaRect, aspectRatio); + areaView.setLockedAspectRatio(freeform ? 0.0f : 1.0f); + resetRotationStartScale(); + + if (animated) { + ValueAnimator animator = ValueAnimator.ofFloat(0.0f, 1.0f); + RectF fromActualRect = new RectF(), animatedRect = new RectF(); + areaView.getCropRect(fromActualRect); + final float fromX = state.x; + final float fromY = state.y; + final float fromScale = state.scale; + final float fromRot = state.rotation; + animator.addUpdateListener(animation -> { + float t = (float) animation.getAnimatedValue(); + AndroidUtilities.lerp(fromActualRect, initialAreaRect, t, animatedRect); + areaView.setActualRect(animatedRect); + float dx = state.x - fromX * (1f - t), + dy = state.y - fromY * (1f - t), + dr = state.rotation - fromRot * (1f - t), + ds = AndroidUtilities.lerp(fromScale, toScale, t) / state.scale; + state.translate(-dx, -dy); + state.scale(ds, 0, 0); + state.rotate(-dr, 0, 0); + fitContentInBounds(true, false, false); + }); + animator.setInterpolator(areaView.getInterpolator()); + animator.setDuration(250); + animator.start(); + } else { + areaView.setActualRect(initialAreaRect); + state.translate(-state.x, -state.y); + state.scale(state.minimumScale / state.scale, 0, 0); + state.rotate(-state.rotation, 0, 0); + updateMatrix(); + + resetRotationStartScale(); + } + } + + public boolean rotate(float angle) { if (state == null) { return false; } @@ -706,7 +793,7 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen resetRotationStartScale(); - float orientation = (state.getOrientation() - state.getBaseRotation() - 90.0f) % 360; + float orientation = (state.getOrientation() - state.getBaseRotation() + angle) % 360; boolean fform = freeform; if (freeform && areaView.getLockAspectRatio() > 0) { @@ -714,7 +801,7 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen areaView.setActualRect(areaView.getLockAspectRatio()); fform = false; } else { - areaView.setBitmap(getCurrentWidth(), getCurrentHeight(), (orientation + state.getBaseRotation()) % 180 != 0, freeform); + areaView.setBitmap(getCurrentWidth(), getCurrentHeight(), (orientation + state.getBaseRotation()) % 180 != 0, freeform); } state.reset(areaView, orientation, fform); @@ -1102,6 +1189,7 @@ public class CropView extends FrameLayout implements CropAreaView.AreaViewListen editState.cropState.lockedAspectRatio = areaView.getLockAspectRatio(); editState.cropState.initied = true; + return; } private void setLockedAspectRatio(float aspectRatio) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/CrossfadeDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/CrossfadeDrawable.java index a2a076971..9b173c9a7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/CrossfadeDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/CrossfadeDrawable.java @@ -5,6 +5,7 @@ import android.graphics.ColorFilter; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.util.Log; import androidx.annotation.NonNull; @@ -14,6 +15,7 @@ public class CrossfadeDrawable extends Drawable { private final Drawable bottomDrawable; private float progress; + float globalAlpha = 255f; public CrossfadeDrawable(Drawable topDrawable, Drawable bottomDrawable) { this.topDrawable = topDrawable; @@ -28,9 +30,17 @@ public class CrossfadeDrawable extends Drawable { } } @Override - public void scheduleDrawable(@NonNull Drawable drawable, @NonNull Runnable runnable, long l) {} + public void scheduleDrawable(@NonNull Drawable drawable, @NonNull Runnable runnable, long l) { + if (progress < 1.0f) { + CrossfadeDrawable.this.scheduleSelf(runnable, l); + } + } @Override - public void unscheduleDrawable(@NonNull Drawable drawable, @NonNull Runnable runnable) {} + public void unscheduleDrawable(@NonNull Drawable drawable, @NonNull Runnable runnable) { + if (progress < 1.0f) { + CrossfadeDrawable.this.unscheduleSelf(runnable); + } + } }); } if (bottomDrawable != null) { @@ -57,19 +67,20 @@ public class CrossfadeDrawable extends Drawable { @Override public void draw(Canvas canvas) { - if (progress < 1.0f) { - topDrawable.setAlpha((int) (255f * (1.0f - progress))); + int topAlpha, bottomAlpha; + topDrawable.setAlpha(topAlpha = (int) (globalAlpha * (1.0f - progress))); + bottomDrawable.setAlpha(bottomAlpha = (int) (globalAlpha * progress)); + if (topAlpha > 0) { topDrawable.draw(canvas); } - if (progress > 0.0f) { - bottomDrawable.setAlpha((int) (255.0f * progress)); + if (bottomAlpha > 0) { bottomDrawable.draw(canvas); } } @Override public void setAlpha(int alpha) { - + globalAlpha = alpha; } @Override @@ -98,5 +109,6 @@ public class CrossfadeDrawable extends Drawable { public void setProgress(float value) { progress = value; + invalidateSelf(); } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/CustomPhoneKeyboardView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/CustomPhoneKeyboardView.java index 7069af3ac..f59d0ddf3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/CustomPhoneKeyboardView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/CustomPhoneKeyboardView.java @@ -141,7 +141,7 @@ public class CustomPhoneKeyboardView extends ViewGroup { return backDetector.onTouchEvent(event); } }; - backButton.setImageResource(R.drawable.menu_clear); + backButton.setImageResource(R.drawable.msg_clear_input); backButton.setColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); backButton.setBackground(getButtonDrawable()); int pad = AndroidUtilities.dp(11); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextBoldCursor.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextBoldCursor.java index bcf12e194..91ed7c2f2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextBoldCursor.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextBoldCursor.java @@ -16,6 +16,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; +import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.Rect; @@ -49,6 +50,7 @@ import org.telegram.messenger.BuildVars; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; +import org.telegram.messenger.XiaomiUtilities; import org.telegram.ui.ActionBar.FloatingActionMode; import org.telegram.ui.ActionBar.FloatingToolbar; import org.telegram.ui.ActionBar.Theme; @@ -1029,11 +1031,34 @@ public class EditTextBoldCursor extends EditTextEffects { super.onInitializeAccessibilityNodeInfo(info); info.setClassName("android.widget.EditText"); if (hintLayout != null) { - AccessibilityNodeInfoCompat.wrap(info).setHintText(hintLayout.getText()); + if (getText().length() <= 0) { + info.setText(hintLayout.getText()); + } else { + AccessibilityNodeInfoCompat.wrap(info).setHintText(hintLayout.getText()); + } } } protected Theme.ResourcesProvider getResourcesProvider() { return null; } + + public void setHandlesColor(int color) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q || XiaomiUtilities.isMIUI()) { + return; + } + try { + Drawable left = getTextSelectHandleLeft(); + left.setColorFilter(color, PorterDuff.Mode.SRC_IN); + setTextSelectHandleLeft(left); + + Drawable middle = getTextSelectHandle(); + middle.setColorFilter(color, PorterDuff.Mode.SRC_IN); + setTextSelectHandle(middle); + + Drawable right = getTextSelectHandleRight(); + right.setColorFilter(color, PorterDuff.Mode.SRC_IN); + setTextSelectHandleRight(right); + } catch (Exception ignore) {} + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextEmoji.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextEmoji.java index d8ef0bf55..121a9b867 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextEmoji.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextEmoji.java @@ -237,6 +237,10 @@ public class EditTextEmoji extends FrameLayout implements NotificationCenter.Not emojiPadding = 0; } + public EmojiView getEmojiView() { + return emojiView; + } + public void setDelegate(EditTextEmojiDelegate editTextEmojiDelegate) { delegate = editTextEmojiDelegate; } @@ -379,7 +383,7 @@ public class EditTextEmoji extends FrameLayout implements NotificationCenter.Not } } - private void showPopup(int show) { + protected void showPopup(int show) { if (show == 1) { boolean emojiWasVisible = emojiView != null && emojiView.getVisibility() == View.VISIBLE; if (emojiView == null) { @@ -473,7 +477,7 @@ public class EditTextEmoji extends FrameLayout implements NotificationCenter.Not } } - private void createEmojiView() { + protected void createEmojiView() { if (emojiView != null) { return; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/EmbedBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/EmbedBottomSheet.java index 4c5b9a6dc..fa7b83f8b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/EmbedBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/EmbedBottomSheet.java @@ -729,7 +729,7 @@ public class EmbedBottomSheet extends BottomSheet { pipButton = new ImageView(context); pipButton.setScaleType(ImageView.ScaleType.CENTER); - pipButton.setImageResource(R.drawable.video_pip); + pipButton.setImageResource(R.drawable.ic_goinline); pipButton.setContentDescription(LocaleController.getString("AccDescrPipMode", R.string.AccDescrPipMode)); pipButton.setEnabled(false); pipButton.setAlpha(0.5f); @@ -812,7 +812,7 @@ public class EmbedBottomSheet extends BottomSheet { ImageView copyButton = new ImageView(context); copyButton.setScaleType(ImageView.ScaleType.CENTER); - copyButton.setImageResource(R.drawable.video_copy); + copyButton.setImageResource(R.drawable.msg_copy); copyButton.setContentDescription(LocaleController.getString("CopyLink", R.string.CopyLink)); copyButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_dialogTextBlue4), PorterDuff.Mode.MULTIPLY)); copyButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.getColor(Theme.key_dialogButtonSelector), 0)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/EmojiView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/EmojiView.java index 60a46803d..46ca75bed 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/EmojiView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/EmojiView.java @@ -15,7 +15,9 @@ import android.animation.ObjectAnimator; import android.animation.StateListAnimator; import android.annotation.SuppressLint; import android.annotation.TargetApi; +import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.content.SharedPreferences; import android.graphics.Canvas; import android.graphics.Color; @@ -48,6 +50,7 @@ import android.view.ViewGroup; import android.view.ViewOutlineProvider; import android.view.ViewTreeObserver; import android.view.WindowManager; +import android.view.accessibility.AccessibilityNodeInfo; import android.view.inputmethod.EditorInfo; import android.widget.FrameLayout; import android.widget.ImageView; @@ -68,6 +71,7 @@ import androidx.recyclerview.widget.SimpleItemAnimator; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; +import org.telegram.messenger.AccountInstance; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.DocumentObject; @@ -75,7 +79,6 @@ import org.telegram.messenger.Emoji; import org.telegram.messenger.EmojiData; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; -import org.telegram.messenger.ImageLoader; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.LocaleController; @@ -101,16 +104,19 @@ import org.telegram.ui.Cells.FeaturedStickerSetInfoCell; import org.telegram.ui.Cells.StickerEmojiCell; import org.telegram.ui.Cells.StickerSetGroupInfoCell; import org.telegram.ui.Cells.StickerSetNameCell; +import org.telegram.ui.Components.Premium.PremiumGradient; import org.telegram.ui.ContentPreviewViewer; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.lang.ref.WeakReference; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; public class EmojiView extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { @@ -214,6 +220,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific private ArrayList recentGifs = new ArrayList<>(); private ArrayList recentStickers = new ArrayList<>(); private ArrayList favouriteStickers = new ArrayList<>(); + private ArrayList premiumStickers = new ArrayList<>(); private ArrayList featuredStickerSets = new ArrayList<>(); private Paint dotPaint; @@ -235,9 +242,10 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific private int emojiSize; private int location[] = new int[2]; private int stickersTabOffset; - private int recentTabBum = -2; - private int favTabBum = -2; + private int recentTabNum = -2; + private int favTabNum = -2; private int trendingTabNum = -2; + private int premiumTabNum = -2; private TLRPC.ChatFull info; @@ -875,6 +883,12 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), View.MeasureSpec.getSize(widthMeasureSpec)); } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName("android.view.View"); + } } private class EmojiPopupWindow extends PopupWindow { @@ -1096,15 +1110,15 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific }; emojiIcons = new Drawable[]{ - Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_recent, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), - Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_smiles, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), - Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_cat, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), - Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_food, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), - Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_activities, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), - Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_travel, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), - Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_objects, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), - Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_other, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), - Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_flags, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), + Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_emoji_recent, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), + Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_emoji_smiles, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), + Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_emoji_cat, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), + Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_emoji_food, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), + Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_emoji_activities, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), + Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_emoji_travel, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), + Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_emoji_objects, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), + Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_emoji_other, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), + Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_emoji_flags, getThemedColor(Theme.key_chat_emojiPanelIcon), getThemedColor(Theme.key_chat_emojiPanelIconSelected)), }; stickerIcons = new Drawable[]{ @@ -1272,7 +1286,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific emojiGridView.setInstantClick(true); emojiGridView.setLayoutManager(emojiLayoutManager = new GridLayoutManager(context, 8)); emojiGridView.setTopGlowOffset(AndroidUtilities.dp(38)); - emojiGridView.setBottomGlowOffset(AndroidUtilities.dp(48)); + emojiGridView.setBottomGlowOffset(AndroidUtilities.dp(36)); emojiGridView.setPadding(0, AndroidUtilities.dp(38), 0, AndroidUtilities.dp(44)); emojiGridView.setGlowColor(getThemedColor(Theme.key_chat_emojiPanelBackground)); emojiGridView.setSelectorDrawableColor(0); @@ -1323,6 +1337,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (view instanceof ImageViewEmoji) { ImageViewEmoji viewEmoji = (ImageViewEmoji) view; viewEmoji.sendEmoji(null); + performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); } } }); @@ -1545,7 +1560,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } } }); - gifGridView.setPadding(0, AndroidUtilities.dp(48 + 4), 0, AndroidUtilities.dp(44)); + gifGridView.setPadding(0, AndroidUtilities.dp(36 + 4), 0, AndroidUtilities.dp(44)); gifGridView.setOverScrollMode(RecyclerListView.OVER_SCROLL_NEVER); ((SimpleItemAnimator) gifGridView.getItemAnimator()).setSupportsChangeAnimations(false); gifGridView.setAdapter(gifAdapter = new GifAdapter(context, true)); @@ -1595,7 +1610,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific gifTabs.setIndicatorColor(getThemedColor(Theme.key_chat_emojiPanelStickerPackSelectorLine)); gifTabs.setUnderlineColor(getThemedColor(Theme.key_chat_emojiPanelShadowLine)); gifTabs.setBackgroundColor(getThemedColor(Theme.key_chat_emojiPanelBackground)); - gifContainer.addView(gifTabs, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.TOP)); + gifContainer.addView(gifTabs, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, StickerTabView.SMALL_HEIGHT, Gravity.LEFT | Gravity.TOP)); updateGifTabs(); gifTabs.setDelegate(page -> { @@ -1745,7 +1760,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } } }); - stickersGridView.setPadding(0, AndroidUtilities.dp(4 + 48), 0, AndroidUtilities.dp(44)); + stickersGridView.setPadding(0, AndroidUtilities.dp(4 + 36), 0, AndroidUtilities.dp(44)); stickersGridView.setClipToPadding(false); views.add(stickersContainer); stickersSearchGridAdapter = new StickersSearchGridAdapter(context); @@ -1764,8 +1779,13 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (!(view instanceof StickerEmojiCell)) { return; } - ContentPreviewViewer.getInstance().reset(); StickerEmojiCell cell = (StickerEmojiCell) view; + if (cell.getSticker() != null && MessageObject.isPremiumSticker(cell.getSticker()) && !AccountInstance.getInstance(currentAccount).getUserConfig().isPremium()) { + ContentPreviewViewer.getInstance().showMenuFor(cell); + return; + } + ContentPreviewViewer.getInstance().reset(); + if (cell.isDisabled()) { return; } @@ -1857,7 +1877,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific canvas.clipRect(0, searchProgressOffset, getMeasuredWidth(), getMeasuredHeight()); } paint.setColor(getThemedColor(Theme.key_chat_emojiPanelBackground)); - canvas.drawRect(0, 0, getMeasuredWidth(), AndroidUtilities.dp(48) + stickersTab.getExpandedOffset(), paint); + canvas.drawRect(0, 0, getMeasuredWidth(), AndroidUtilities.dp(36) + stickersTab.getExpandedOffset(), paint); super.dispatchDraw(canvas); stickersTab.drawOverlays(canvas); canvas.restore(); @@ -1869,10 +1889,10 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific updateStickerTabsPosition(); } }; - stickersTabContainer.addView(stickersTab, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.TOP)); + stickersTabContainer.addView(stickersTab, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 36, Gravity.LEFT | Gravity.TOP)); parentView.addView(stickersTabContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } else { - stickersContainer.addView(stickersTab, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.TOP)); + stickersContainer.addView(stickersTab, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 36, Gravity.LEFT | Gravity.TOP)); } updateStickerTabs(); stickersTab.setDelegate(page -> { @@ -1882,17 +1902,23 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (page == trendingTabNum) { openTrendingStickers(null); return; - } else if (page == recentTabBum) { + } else if (page == recentTabNum) { stickersGridView.stopScroll(); scrollStickersToPosition(stickersGridAdapter.getPositionForPack("recent"), 0); resetTabsY(Type.STICKERS); - stickersTab.onPageScrolled(recentTabBum, recentTabBum > 0 ? recentTabBum : stickersTabOffset); + stickersTab.onPageScrolled(recentTabNum, recentTabNum > 0 ? recentTabNum : stickersTabOffset); return; - } else if (page == favTabBum) { + } else if (page == favTabNum) { stickersGridView.stopScroll(); scrollStickersToPosition(stickersGridAdapter.getPositionForPack("fav"), 0); resetTabsY(Type.STICKERS); - stickersTab.onPageScrolled(favTabBum, favTabBum > 0 ? favTabBum : stickersTabOffset); + stickersTab.onPageScrolled(favTabNum, favTabNum > 0 ? favTabNum : stickersTabOffset); + return; + } else if (page == premiumTabNum) { + stickersGridView.stopScroll(); + scrollStickersToPosition(stickersGridAdapter.getPositionForPack("premium"), 0); + resetTabsY(Type.STICKERS); + stickersTab.onPageScrolled(premiumTabNum, premiumTabNum > 0 ? premiumTabNum : stickersTabOffset); return; } @@ -1909,10 +1935,10 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific resetTabsY(Type.STICKERS); checkScroll(Type.STICKERS); int firstTab; - if (favTabBum > 0) { - firstTab = favTabBum; - } else if (recentTabBum > 0) { - firstTab = recentTabBum; + if (favTabNum > 0) { + firstTab = favTabNum; + } else if (recentTabNum > 0) { + firstTab = recentTabNum; } else { firstTab = stickersTabOffset; } @@ -1930,7 +1956,11 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (getParent() != null) { getParent().requestDisallowInterceptTouchEvent(canScrollHorizontally(-1)); } - return super.onInterceptTouchEvent(ev); + try { + return super.onInterceptTouchEvent(ev); + } catch (IllegalArgumentException ignore) { + } + return false; } @Override @@ -1974,6 +2004,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific return true; } }; + backspaceButton.setHapticFeedbackEnabled(true); backspaceButton.setImageResource(R.drawable.smiles_tab_clear); backspaceButton.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_chat_emojiPanelBackspace), PorterDuff.Mode.MULTIPLY)); backspaceButton.setScaleType(ImageView.ScaleType.CENTER); @@ -2491,12 +2522,12 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific searchAnimation = new AnimatorSet(); if (tabStrip != null && a != 2) { searchAnimation.playTogether( - ObjectAnimator.ofFloat(tabStrip, View.TRANSLATION_Y, -AndroidUtilities.dp(48)), - ObjectAnimator.ofFloat(gridView, View.TRANSLATION_Y, -AndroidUtilities.dp(48)), + ObjectAnimator.ofFloat(tabStrip, View.TRANSLATION_Y, -AndroidUtilities.dp(36)), + ObjectAnimator.ofFloat(gridView, View.TRANSLATION_Y, -AndroidUtilities.dp(36)), ObjectAnimator.ofFloat(currentField, View.TRANSLATION_Y, AndroidUtilities.dp(0))); } else { searchAnimation.playTogether( - ObjectAnimator.ofFloat(gridView, View.TRANSLATION_Y, -AndroidUtilities.dp(48)), + ObjectAnimator.ofFloat(gridView, View.TRANSLATION_Y, -AndroidUtilities.dp(36)), ObjectAnimator.ofFloat(currentField, View.TRANSLATION_Y, AndroidUtilities.dp(0))); } searchAnimation.setDuration(220); @@ -2526,7 +2557,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } else { currentField.setTranslationY(AndroidUtilities.dp(0)); if (tabStrip != null && a != 2) { - tabStrip.setTranslationY(-AndroidUtilities.dp(48)); + tabStrip.setTranslationY(-AndroidUtilities.dp(36)); } if (gridView == stickersGridView) { gridView.setPadding(0, AndroidUtilities.dp(4), 0, 0); @@ -2600,7 +2631,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (set != null) { int pos = stickersGridAdapter.getPositionForPack(set); if (pos >= 0 && pos < stickersGridAdapter.getItemCount()) { - scrollStickersToPosition(pos, AndroidUtilities.dp(48 + 12)); + scrollStickersToPosition(pos, AndroidUtilities.dp(36 + 12)); } } } @@ -2643,11 +2674,11 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (tabStrip != null && a != 2) { searchAnimation.playTogether( ObjectAnimator.ofFloat(tabStrip, View.TRANSLATION_Y, 0), - ObjectAnimator.ofFloat(gridView, View.TRANSLATION_Y, AndroidUtilities.dp(48) - searchFieldHeight), - ObjectAnimator.ofFloat(currentField, View.TRANSLATION_Y, AndroidUtilities.dp(48) - searchFieldHeight)); + ObjectAnimator.ofFloat(gridView, View.TRANSLATION_Y, AndroidUtilities.dp(36) - searchFieldHeight), + ObjectAnimator.ofFloat(currentField, View.TRANSLATION_Y, AndroidUtilities.dp(36) - searchFieldHeight)); } else { searchAnimation.playTogether( - ObjectAnimator.ofFloat(gridView, View.TRANSLATION_Y, AndroidUtilities.dp(48) - searchFieldHeight), + ObjectAnimator.ofFloat(gridView, View.TRANSLATION_Y, AndroidUtilities.dp(36) - searchFieldHeight), ObjectAnimator.ofFloat(currentField, View.TRANSLATION_Y, -searchFieldHeight)); } searchAnimation.setDuration(200); @@ -2664,9 +2695,9 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } gridView.setTranslationY(0); if (gridView == stickersGridView) { - gridView.setPadding(0, AndroidUtilities.dp(48 + 4), 0, AndroidUtilities.dp(44)); + gridView.setPadding(0, AndroidUtilities.dp(36 + 4), 0, AndroidUtilities.dp(44)); } else if (gridView == gifGridView) { - gridView.setPadding(0, AndroidUtilities.dp(48 + 4), 0, AndroidUtilities.dp(44)); + gridView.setPadding(0, AndroidUtilities.dp(36 + 4), 0, AndroidUtilities.dp(44)); } else if (gridView == emojiGridView) { gridView.setPadding(0, AndroidUtilities.dp(38), 0, AndroidUtilities.dp(44)); } @@ -2686,14 +2717,14 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific }); searchAnimation.start(); } else { - currentField.setTranslationY(AndroidUtilities.dp(48) - searchFieldHeight); + currentField.setTranslationY(AndroidUtilities.dp(36) - searchFieldHeight); if (tabStrip != null && a != 2) { tabStrip.setTranslationY(0); } if (gridView == stickersGridView) { - gridView.setPadding(0, AndroidUtilities.dp(48 + 4), 0, AndroidUtilities.dp(44)); + gridView.setPadding(0, AndroidUtilities.dp(36 + 4), 0, AndroidUtilities.dp(44)); } else if (gridView == gifGridView) { - gridView.setPadding(0, AndroidUtilities.dp(48 + 4), 0, AndroidUtilities.dp(44)); + gridView.setPadding(0, AndroidUtilities.dp(36 + 4), 0, AndroidUtilities.dp(44)); } else if (gridView == emojiGridView) { gridView.setPadding(0, AndroidUtilities.dp(38), 0, AndroidUtilities.dp(44)); } @@ -3054,8 +3085,8 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific tabsMinusDy[Type.EMOJIS] -= dy; if (tabsMinusDy[Type.EMOJIS] > 0) { tabsMinusDy[Type.EMOJIS] = 0; - } else if (tabsMinusDy[Type.EMOJIS] < -AndroidUtilities.dp(48 * 6)) { - tabsMinusDy[Type.EMOJIS] = -AndroidUtilities.dp(48 * 6); + } else if (tabsMinusDy[Type.EMOJIS] < -AndroidUtilities.dp(36 * 6)) { + tabsMinusDy[Type.EMOJIS] = -AndroidUtilities.dp(36 * 6); } emojiTabs.setTranslationY(Math.max(-AndroidUtilities.dp(38), tabsMinusDy[Type.EMOJIS])); } @@ -3109,10 +3140,10 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific return; } int firstTab; - if (favTabBum > 0) { - firstTab = favTabBum; - } else if (recentTabBum > 0) { - firstTab = recentTabBum; + if (favTabNum > 0) { + firstTab = favTabNum; + } else if (recentTabNum > 0) { + firstTab = recentTabNum; } else { firstTab = stickersTabOffset; } @@ -3215,9 +3246,10 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (stickersTab == null || stickersTab.isDragging()) { return; } - recentTabBum = -2; - favTabBum = -2; + recentTabNum = -2; + favTabNum = -2; trendingTabNum = -2; + premiumTabNum = -2; hasChatStickers = false; stickersTabOffset = 0; @@ -3249,7 +3281,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } if (!favouriteStickers.isEmpty()) { - favTabBum = stickersTabOffset; + favTabNum = stickersTabOffset; stickersTabOffset++; StickerTabView stickerTabView = stickersTab.addStickerIconTab(1, stickerIcons[1]); stickerTabView.textView.setText(LocaleController.getString("FavoriteStickersShort", R.string.FavoriteStickersShort)); @@ -3257,13 +3289,14 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } if (!recentStickers.isEmpty()) { - recentTabBum = stickersTabOffset; + recentTabNum = stickersTabOffset; stickersTabOffset++; StickerTabView stickerTabView = stickersTab.addStickerIconTab(0, stickerIcons[0]); stickerTabView.textView.setText(LocaleController.getString("RecentStickersShort", R.string.RecentStickersShort)); stickerTabView.setContentDescription(LocaleController.getString("RecentStickers", R.string.RecentStickers)); } + stickerSets.clear(); groupStickerSet = null; groupStickerPackPosition = -1; @@ -3289,13 +3322,33 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } } } + premiumStickers.clear(); + packs = MessagesController.getInstance(currentAccount).filterPremiumStickers(packs); for (int a = 0; a < packs.size(); a++) { TLRPC.TL_messages_stickerSet pack = packs.get(a); if (pack.set.archived || pack.documents == null || pack.documents.isEmpty()) { continue; } stickerSets.add(pack); + if (!MessagesController.getInstance(currentAccount).premiumLocked) { + if (UserConfig.getInstance(currentAccount).isPremium()) { + for (int i = 0; i < pack.documents.size(); i++) { + if (MessageObject.isPremiumSticker(pack.documents.get(i))) { + premiumStickers.add(pack.documents.get(i)); + } + } + } + } } + + if (!premiumStickers.isEmpty()) { + premiumTabNum = stickersTabOffset; + stickersTabOffset++; + StickerTabView stickerTabView = stickersTab.addStickerIconTab(4, PremiumGradient.getInstance().premiumStarMenuDrawable2); + stickerTabView.textView.setText(LocaleController.getString("PremiumStickersShort", R.string.PremiumStickersShort)); + stickerTabView.setContentDescription(LocaleController.getString("PremiumStickers", R.string.PremiumStickers)); + } + if (info != null) { long hiddenStickerSetId = MessagesController.getEmojiSettings(currentAccount).getLong("group_hide_stickers_" + info.id, -1); TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(info.id); @@ -3366,10 +3419,10 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific int position = stickersLayoutManager.findFirstVisibleItemPosition(); if (position != RecyclerView.NO_POSITION) { int firstTab; - if (favTabBum > 0) { - firstTab = favTabBum; - } else if (recentTabBum > 0) { - firstTab = recentTabBum; + if (favTabNum > 0) { + firstTab = favTabNum; + } else if (recentTabNum > 0) { + firstTab = recentTabNum; } else { firstTab = stickersTabOffset; } @@ -3698,10 +3751,10 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } if (stickersTab != null) { firstTabUpdate = true; - if (favTabBum >= 0) { - stickersTab.selectTab(favTabBum); - } else if (recentTabBum >= 0) { - stickersTab.selectTab(recentTabBum); + if (favTabNum >= 0) { + stickersTab.selectTab(favTabNum); + } else if (recentTabNum >= 0) { + stickersTab.selectTab(recentTabNum); } else { stickersTab.selectTab(stickersTabOffset); } @@ -3730,6 +3783,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.recentDocumentsDidLoad); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.featuredStickersDidLoad); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.groupStickersDidLoad); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.currentUserPremiumStatusChanged); AndroidUtilities.runOnUIThread(() -> { updateStickerTabs(); reloadStickersAdapter(); @@ -3775,6 +3829,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.recentDocumentsDidLoad); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.featuredStickersDidLoad); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.groupStickersDidLoad); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.currentUserPremiumStatusChanged); } } @@ -3804,6 +3859,20 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } } } + if (MessagesController.getInstance(currentAccount).premiumLocked) { + for (int a = 0; a < favouriteStickers.size(); a++) { + if (MessageObject.isPremiumSticker(favouriteStickers.get(a))) { + favouriteStickers.remove(a); + a--; + } + } + for (int a = 0; a < recentStickers.size(); a++) { + if (MessageObject.isPremiumSticker(recentStickers.get(a))) { + recentStickers.remove(a); + a--; + } + } + } if (previousCount != recentStickers.size() || previousCount2 != favouriteStickers.size()) { updateStickerTabs(); } @@ -4014,6 +4083,8 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (emojiGridView != null && needEmojiSearch && (emojiSearchField.progressDrawable.isAnimating() || emojiGridView.getAdapter() == emojiSearchAdapter) && !TextUtils.isEmpty(emojiSearchAdapter.lastSearchEmojiString)) { emojiSearchAdapter.search(emojiSearchAdapter.lastSearchEmojiString); } + } else if (id == NotificationCenter.currentUserPremiumStatusChanged) { + updateStickerTabs(); } } @@ -4170,11 +4241,11 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific public int getTabForPosition(int position) { Object cacheObject = cache.get(position); if ("search".equals(cacheObject) || "trend1".equals(cacheObject) || "trend2".equals(cacheObject)) { - if (favTabBum >= 0) { - return favTabBum; + if (favTabNum >= 0) { + return favTabNum; } - if (recentTabBum >= 0) { - return recentTabBum; + if (recentTabNum >= 0) { + return recentTabNum; } return 0; } @@ -4195,9 +4266,9 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific Object pack = rowStartPack.get(row); if (pack instanceof String) { if ("recent".equals(pack)) { - return recentTabBum; + return recentTabNum; } else { - return favTabBum; + return favTabNum; } } else { TLRPC.TL_messages_stickerSet set = (TLRPC.TL_messages_stickerSet) pack; @@ -4206,6 +4277,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } } + @SuppressLint("NotifyDataSetChanged") @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = null; @@ -4221,17 +4293,41 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific view = new EmptyCell(context); break; case 2: - view = new StickerSetNameCell(context, false, resourcesProvider); - ((StickerSetNameCell) view).setOnIconClickListener(v -> { - if (groupStickerSet != null) { - if (delegate != null) { - delegate.onStickersGroupClick(info.id); - } - } else { - MessagesController.getEmojiSettings(currentAccount).edit().putLong("group_hide_stickers_" + info.id, info.stickerset != null ? info.stickerset.id : 0).commit(); - updateStickerTabs(); - if (stickersGridAdapter != null) { - stickersGridAdapter.notifyDataSetChanged(); + StickerSetNameCell nameCell = new StickerSetNameCell(context, false, resourcesProvider); + view = nameCell; + nameCell.setOnIconClickListener(v -> { + if (stickersGridView.indexOfChild(nameCell) == -1) { + return; + } + RecyclerView.ViewHolder holder = stickersGridView.getChildViewHolder(nameCell); + if (holder != null) { + if (holder.getAdapterPosition() == groupStickerPackPosition) { + if (groupStickerSet != null) { + if (delegate != null) { + delegate.onStickersGroupClick(info.id); + } + } else { + MessagesController.getEmojiSettings(currentAccount).edit().putLong("group_hide_stickers_" + info.id, info.stickerset != null ? info.stickerset.id : 0).apply(); + updateStickerTabs(); + if (stickersGridAdapter != null) { + stickersGridAdapter.notifyDataSetChanged(); + } + } + } else { + Object object = cache.get(holder.getAdapterPosition()); + if (object == recentStickers) { + AlertDialog alertDialog = new AlertDialog.Builder(context) + .setTitle(LocaleController.getString(R.string.ClearRecentStickersAlertTitle)) + .setMessage(LocaleController.getString(R.string.ClearRecentStickersAlertMessage)) + .setPositiveButton(LocaleController.getString(R.string.ClearButton), (dialog, which) -> MediaDataController.getInstance(currentAccount).clearRecentStickers()) + .setNegativeButton(LocaleController.getString(R.string.Cancel), null) + .create(); + alertDialog.show(); + TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); + if (button != null) { + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + } + } } } }); @@ -4352,7 +4448,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (groupStickersHidden && groupStickerSet == null) { icon = 0; } else { - icon = groupStickerSet != null ? R.drawable.stickersclose : R.drawable.stickerset_close; + icon = groupStickerSet != null ? R.drawable.msg_mini_customize : R.drawable.msg_close; } TLRPC.Chat chat = info != null ? MessagesController.getInstance(currentAccount).getChat(info.id) : null; cell.setText(LocaleController.formatString("CurrentGroupStickers", R.string.CurrentGroupStickers, chat != null ? chat.title : "Group Stickers"), icon); @@ -4364,9 +4460,11 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific cell.setText(set.set.title, 0); } } else if (object == recentStickers) { - cell.setText(LocaleController.getString("RecentStickers", R.string.RecentStickers), 0); + cell.setText(LocaleController.getString("RecentStickers", R.string.RecentStickers), R.drawable.msg_close, LocaleController.getString(R.string.ClearRecentStickersAlertTitle)); } else if (object == favouriteStickers) { cell.setText(LocaleController.getString("FavoriteStickers", R.string.FavoriteStickers), 0); + } else if (object == premiumStickers) { + cell.setText(LocaleController.getString("PremiumStickers", R.string.PremiumStickers), 0); } } break; @@ -4378,7 +4476,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } case 5: { StickerSetNameCell cell = (StickerSetNameCell) holder.itemView; - cell.setText(LocaleController.getString("FeaturedStickers", R.string.FeaturedStickers), R.drawable.stickerset_close); + cell.setText(LocaleController.getString("FeaturedStickers", R.string.FeaturedStickers), R.drawable.msg_close); break; } } @@ -4399,15 +4497,15 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific totalItems = 0; ArrayList packs = stickerSets; int startRow = 0; - for (int a = -4; a < packs.size(); a++) { + for (int a = -5; a < packs.size(); a++) { ArrayList documents; TLRPC.TL_messages_stickerSet pack = null; String key; - if (a == -4) { + if (a == -5) { cache.put(totalItems++, "search"); startRow++; continue; - } else if (a == -3) { + } else if (a == -4) { MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount); SharedPreferences preferences = MessagesController.getEmojiSettings(currentAccount); ArrayList featured = mediaDataController.getFeaturedStickerSets(); @@ -4417,12 +4515,15 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific startRow += 2; } continue; - } else if (a == -2) { + } else if (a == -3) { documents = favouriteStickers; packStartPosition.put(key = "fav", totalItems); - } else if (a == -1) { + } else if (a == -2) { documents = recentStickers; packStartPosition.put(key = "recent", totalItems); + } else if (a == -1) { + documents = premiumStickers; + packStartPosition.put(key = "premium", totalItems); } else { key = null; pack = packs.get(a); @@ -4656,7 +4757,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific ImageView imageView = new ImageView(getContext()); imageView.setScaleType(ImageView.ScaleType.CENTER); - imageView.setImageResource(R.drawable.smiles_panel_question); + imageView.setImageResource(R.drawable.msg_emoji_question); imageView.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_chat_emojiPanelEmptyText), PorterDuff.Mode.MULTIPLY)); frameLayout.addView(imageView, LayoutHelper.createFrame(48, 48, Gravity.BOTTOM | Gravity.RIGHT)); imageView.setOnClickListener(new OnClickListener() { @@ -5473,7 +5574,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific if (!loadingState) { height = (int) ((height - searchFieldHeight - AndroidUtilities.dp(8)) / 3 * 1.7f); } else { - height -= AndroidUtilities.dp(48 + 44); + height -= AndroidUtilities.dp(36 + 44); } super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); @@ -5602,6 +5703,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific }); } ArrayList local = MediaDataController.getInstance(currentAccount).getStickerSets(MediaDataController.TYPE_IMAGE); + MessagesController.getInstance(currentAccount).filterPremiumStickers(local); int index; for (int a = 0, size = local.size(); a < size; a++) { TLRPC.TL_messages_stickerSet set = local.get(a); @@ -5620,6 +5722,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific } } local = MediaDataController.getInstance(currentAccount).getStickerSets(MediaDataController.TYPE_FEATURED); + MessagesController.getInstance(currentAccount).filterPremiumStickers(local); for (int a = 0, size = local.size(); a < size; a++) { TLRPC.TL_messages_stickerSet set = local.get(a); if ((index = AndroidUtilities.indexOfIgnoreCase(set.set.title, searchQuery)) >= 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ExtendedGridLayoutManager.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ExtendedGridLayoutManager.java index 939f73a3e..9bfe0196d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ExtendedGridLayoutManager.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ExtendedGridLayoutManager.java @@ -18,6 +18,7 @@ import androidx.recyclerview.widget.RecyclerView; public class ExtendedGridLayoutManager extends GridLayoutManager { + private final boolean firstRowFullWidth; private final boolean lastRowFullWidth; private SparseIntArray itemSpans = new SparseIntArray(); @@ -31,8 +32,13 @@ public class ExtendedGridLayoutManager extends GridLayoutManager { } public ExtendedGridLayoutManager(Context context, int spanCount, boolean lastRowFullWidth) { + this(context, spanCount, lastRowFullWidth, false); + } + + public ExtendedGridLayoutManager(Context context, int spanCount, boolean lastRowFullWidth, boolean firstRowFullWidth) { super(context, spanCount); this.lastRowFullWidth = lastRowFullWidth; + this.firstRowFullWidth = firstRowFullWidth; } @Override @@ -61,6 +67,15 @@ public class ExtendedGridLayoutManager extends GridLayoutManager { int currentItemsInRow = 0; int currentItemsSpanAmount = 0; for (int a = 0, N = itemsCount + (lastRowFullWidth ? 1 : 0); a < N; a++) { + if (a == 0 && firstRowFullWidth) { + itemSpans.put(a, itemSpans.get(a) + spanCount); + itemsToRow.put(0, rowsCount); + rowsCount++; + currentItemsSpanAmount = 0; + currentItemsInRow = 0; + spanLeft = spanCount; + continue; + } Size size = a < itemsCount ? sizeForItem(a) : null; int requiredSpan; boolean moveToNewRow; @@ -69,7 +84,7 @@ public class ExtendedGridLayoutManager extends GridLayoutManager { requiredSpan = spanCount; } else { requiredSpan = Math.min(spanCount, (int) Math.floor(spanCount * (size.width / size.height * preferredRowSize / viewPortAvailableSize))); - moveToNewRow = spanLeft 33 && spanLeft < requiredSpan - 15; + moveToNewRow = spanLeft < requiredSpan || requiredSpan > 33 && spanLeft < requiredSpan - 15; } if (moveToNewRow) { if (spanLeft != 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FillLastLinearLayoutManager.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FillLastLinearLayoutManager.java index 7a535e37b..34a1e8659 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FillLastLinearLayoutManager.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FillLastLinearLayoutManager.java @@ -18,9 +18,12 @@ public class FillLastLinearLayoutManager extends LinearLayoutManager { private boolean skipFirstItem; private boolean bind = true; private boolean canScrollVertically = true; + boolean fixedLastItemHeight; + private int minimumHeight; public FillLastLinearLayoutManager(Context context, int h, RecyclerView recyclerView) { super(context); + listView = recyclerView; additionalHeight = h; } @@ -63,6 +66,7 @@ public class FillLastLinearLayoutManager extends LinearLayoutManager { } int count = adapter.getItemCount() - 1; int allHeight = 0; + int firstItemHeight = 0; for (int a = skipFirstItem ? 1 : 0; a < count; a++) { int type = adapter.getItemViewType(a); RecyclerView.ViewHolder holder = heights.get(type, null); @@ -82,11 +86,24 @@ public class FillLastLinearLayoutManager extends LinearLayoutManager { final int heightSpec = getChildMeasureSpec(listHeight, getHeightMode(), getPaddingTop() + getPaddingBottom() + lp.topMargin + lp.bottomMargin, lp.height, canScrollVertically()); holder.itemView.measure(widthSpec, heightSpec); allHeight += holder.itemView.getMeasuredHeight(); - if (allHeight >= listHeight) { - break; + if (a == 0) { + firstItemHeight = holder.itemView.getMeasuredHeight(); + } + if (fixedLastItemHeight) { + if (allHeight >= listHeight + firstItemHeight) { + break; + } + } else { + if (allHeight >= listHeight) { + break; + } } } - lastItemHeight = Math.max(0, listHeight - allHeight - additionalHeight - listView.getPaddingBottom()); + if (fixedLastItemHeight) { + lastItemHeight = Math.max(minimumHeight, firstItemHeight + (listHeight - allHeight - additionalHeight - listView.getPaddingBottom())); + } else { + lastItemHeight = Math.max(minimumHeight, listHeight - allHeight - additionalHeight - listView.getPaddingBottom()); + } } @Override @@ -154,4 +171,12 @@ public class FillLastLinearLayoutManager extends LinearLayoutManager { } super.measureChildWithMargins(child, 0, 0); } + + public void setFixedLastItemHeight() { + fixedLastItemHeight = true; + } + + public void setMinimumLastViewHeight(int height) { + minimumHeight = height; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FilterTabsView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FilterTabsView.java index 635856964..c5e5bcfcb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FilterTabsView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FilterTabsView.java @@ -17,6 +17,8 @@ import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; @@ -29,12 +31,14 @@ import android.text.TextPaint; import android.text.TextUtils; import android.util.Property; import android.util.SparseIntArray; +import android.view.HapticFeedbackConstants; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.TextView; +import androidx.core.content.ContextCompat; import androidx.core.graphics.ColorUtils; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.ItemTouchHelper; @@ -49,6 +53,7 @@ import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; +import org.telegram.messenger.Utilities; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; @@ -57,23 +62,41 @@ import java.util.ArrayList; public class FilterTabsView extends FrameLayout { + public int getCurrentTabStableId() { + return positionToStableId.get(currentPosition, -1); + } + + public int getStableId(int selectedType) { + return positionToStableId.get(selectedType, -1); + } + public interface FilterTabsViewDelegate { - void onPageSelected(int page, boolean forward); + void onPageSelected(Tab tab, boolean forward); + void onPageScrolled(float progress); + void onSamePageSelected(); + int getTabCounter(int tabId); + boolean didSelectTab(TabView tabView, boolean selected); + boolean isTabMenuVisible(); + void onDeletePressed(int id); + void onPageReorder(int fromId, int toId); + boolean canPerformActions(); } - private class Tab { + public class Tab { public int id; public String title; public int titleWidth; public int counter; + public boolean isDefault; + public boolean isLocked; public Tab(int i, String t) { id = i; @@ -128,6 +151,7 @@ public class FilterTabsView extends FrameLayout { public float changeProgress; public boolean animateCounterChange; + private float locIconXOffset; float lastTextX; @@ -160,6 +184,8 @@ public class FilterTabsView extends FrameLayout { private float lastTabWidth; private float animateFromTabWidth; private float lastWidth; + private float rotation; + private float progressToLocked; public TabView(Context context) { super(context); @@ -203,11 +229,13 @@ public class FilterTabsView extends FrameLayout { @SuppressLint("DrawAllocation") @Override protected void onDraw(Canvas canvas) { - if (currentTab.id != Integer.MAX_VALUE && editingAnimationProgress != 0) { + boolean reorderEnabled = (!currentTab.isDefault || UserConfig.getInstance(UserConfig.selectedAccount).isPremium()); + boolean showRemove = !currentTab.isDefault && reorderEnabled; + if (reorderEnabled && editingAnimationProgress != 0) { canvas.save(); float p = editingAnimationProgress * (currentPosition % 2 == 0 ? 1.0f : -1.0f); canvas.translate(AndroidUtilities.dp(0.66f) * p, 0); - canvas.rotate(p, getMeasuredWidth() / 2, getMeasuredHeight() / 2); + canvas.rotate(p, getMeasuredWidth() / 2f, getMeasuredHeight() / 2f); } String key; String animateToKey; @@ -280,8 +308,7 @@ public class FilterTabsView extends FrameLayout { } - - if (currentTab.id != Integer.MAX_VALUE && (isEditing || editingStartAnimationProgress != 0)) { + if (showRemove && (isEditing || editingStartAnimationProgress != 0)) { countWidth = (int) (countWidth + (AndroidUtilities.dp(20) - countWidth) * editingStartAnimationProgress); } @@ -336,7 +363,7 @@ public class FilterTabsView extends FrameLayout { } } - if (animateCounterEnter || counterText != null || currentTab.id != Integer.MAX_VALUE && (isEditing || editingStartAnimationProgress != 0)) { + if (animateCounterEnter || counterText != null || showRemove && (isEditing || editingStartAnimationProgress != 0)) { if (aBackgroundColorKey == null) { textCounterPaint.setColor(Theme.getColor(backgroundColorKey)); } else { @@ -368,7 +395,7 @@ public class FilterTabsView extends FrameLayout { } int countTop = (getMeasuredHeight() - AndroidUtilities.dp(20)) / 2; - if (currentTab.id != Integer.MAX_VALUE && (isEditing || editingStartAnimationProgress != 0) && counterText == null) { + if (showRemove && (isEditing || editingStartAnimationProgress != 0) && counterText == null) { counterPaint.setAlpha((int) (editingStartAnimationProgress * 255)); } else { counterPaint.setAlpha(255); @@ -397,7 +424,7 @@ public class FilterTabsView extends FrameLayout { y += (AndroidUtilities.dp(20) - (stableCounter.getLineBottom(0) - stableCounter.getLineTop(0))) / 2f; } float alpha = 1f; - if (currentTab.id != Integer.MAX_VALUE) { + if (showRemove) { alpha = (1.0f - editingStartAnimationProgress); } if (inCounter != null) { @@ -425,7 +452,7 @@ public class FilterTabsView extends FrameLayout { textCounterPaint.setAlpha(255); } else { if (counterText != null) { - if (currentTab.id != Integer.MAX_VALUE) { + if (showRemove) { textCounterPaint.setAlpha((int) (255 * (1.0f - editingStartAnimationProgress))); } canvas.drawText(counterText, rect.left + (rect.width() - counterWidth) / 2, countTop + AndroidUtilities.dp(14.5f), textCounterPaint); @@ -435,7 +462,7 @@ public class FilterTabsView extends FrameLayout { if (animateCounterEnter || animateCounterRemove) { canvas.restore(); } - if (currentTab.id != Integer.MAX_VALUE && (isEditing || editingStartAnimationProgress != 0)) { + if (showRemove && (isEditing || editingStartAnimationProgress != 0)) { deletePaint.setColor(textCounterPaint.getColor()); deletePaint.setAlpha((int) (255 * editingStartAnimationProgress)); int side = AndroidUtilities.dp(3); @@ -443,7 +470,7 @@ public class FilterTabsView extends FrameLayout { canvas.drawLine(rect.centerX() - side, rect.centerY() + side, rect.centerX() + side, rect.centerY() - side, deletePaint); } } - if (currentTab.id != Integer.MAX_VALUE && editingAnimationProgress != 0) { + if (reorderEnabled && editingAnimationProgress != 0) { canvas.restore(); } @@ -456,6 +483,38 @@ public class FilterTabsView extends FrameLayout { lastCounterWidth = counterWidth; lastTabWidth = tabWidth; lastWidth = getMeasuredWidth(); + + if (currentTab.isLocked || progressToLocked != 0) { + if (lockDrawable == null) { + lockDrawable = ContextCompat.getDrawable(getContext(), R.drawable.other_lockedfolders); + } + if (currentTab.isLocked && progressToLocked != 1f) { + progressToLocked += 16 / 150f; + } else if (!currentTab.isLocked){ + progressToLocked -= 16 / 150f; + } + progressToLocked = Utilities.clamp(progressToLocked, 1f, 0); + int unactiveColor = Theme.getColor(unactiveTextColorKey); + if (aUnactiveTextColorKey != null) { + unactiveColor = ColorUtils.blendARGB(unactiveColor, Theme.getColor(aUnactiveTextColorKey), animationValue); + } + if (lockDrawableColor != unactiveColor) { + lockDrawableColor = unactiveColor; + lockDrawable.setColorFilter(new PorterDuffColorFilter(unactiveColor, PorterDuff.Mode.MULTIPLY)); + } + int iconX = (int) ((getMeasuredWidth() - lockDrawable.getIntrinsicWidth()) / 2f + locIconXOffset); + int iconY = getMeasuredHeight() - AndroidUtilities.dp(12); + lockDrawable.setBounds(iconX, iconY, iconX + lockDrawable.getIntrinsicWidth(), iconY + lockDrawable.getIntrinsicHeight()); + if (progressToLocked != 1f) { + canvas.save(); + canvas.scale(progressToLocked, progressToLocked, lockDrawable.getBounds().centerX(), lockDrawable.getBounds().centerY()); + lockDrawable.draw(canvas); + canvas.restore(); + } else { + lockDrawable.draw(canvas); + } + + } } public boolean animateChange() { @@ -579,6 +638,16 @@ public class FilterTabsView extends FrameLayout { } else { info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); } + if (currentTab != null) { + StringBuilder sb = new StringBuilder(); + sb.append(currentTab.title); + int unread = currentTab != null ? currentTab.counter : 0; + if (unread > 0) { + sb.append("\n"); + sb.append(LocaleController.formatPluralString("AccDescrUnreadCount", unread)); + } + info.setContentDescription(sb); + } } public void clearTransitionParams() { @@ -591,6 +660,30 @@ public class FilterTabsView extends FrameLayout { changeAnimator = null; invalidate(); } + + public void shakeLockIcon(float x, int num) { + if (num == 6) { + locIconXOffset = 0; + return; + } + AnimatorSet animatorSet = new AnimatorSet(); + ValueAnimator animator = ValueAnimator.ofFloat(0, AndroidUtilities.dp(x)); + animator.addUpdateListener(animation -> { + locIconXOffset = (float) animation.getAnimatedValue(); + invalidate(); + }); + animatorSet.playTogether(animator); + animatorSet.setDuration(50); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + shakeLockIcon(num == 5 ? 0 : -x, num + 1); + locIconXOffset = 0; + invalidate(); + } + }); + animatorSet.start(); + } } private TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); @@ -660,6 +753,8 @@ public class FilterTabsView extends FrameLayout { private int previousPosition; private int previousId; DefaultItemAnimator itemAnimator; + private Drawable lockDrawable; + private int lockDrawableColor; private Runnable animationRunnable = new Runnable() { @Override @@ -760,13 +855,13 @@ public class FilterTabsView extends FrameLayout { boolean changesPending = !mPendingChanges.isEmpty(); boolean additionsPending = !mPendingAdditions.isEmpty(); if (removalsPending || movesPending || additionsPending || changesPending) { - ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.1f); - valueAnimator.addUpdateListener(valueAnimator12 -> { - listView.invalidate(); - invalidate(); - }); - valueAnimator.setDuration(getMoveDuration()); - valueAnimator.start(); + ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.1f); + valueAnimator.addUpdateListener(valueAnimator12 -> { + listView.invalidate(); + invalidate(); + }); + valueAnimator.setDuration(getMoveDuration()); + valueAnimator.start(); } super.runPendingAnimations(); } @@ -924,7 +1019,7 @@ public class FilterTabsView extends FrameLayout { delegate.onSamePageSelected(); return; } - scrollToTab(tabView.currentTab.id, position); + scrollToTab(tabView.currentTab, position); }); listView.setOnItemLongClickListener((view, position) -> { if (!delegate.canPerformActions() || isEditing || !delegate.didSelectTab((TabView) view, position == currentPosition)) { @@ -950,13 +1045,19 @@ public class FilterTabsView extends FrameLayout { return animatingIndicator; } - private void scrollToTab(int id, int position) { + private void scrollToTab(Tab tab, int position) { + if (tab.isLocked) { + if (delegate != null) { + delegate.onPageSelected(tab, false); + } + return; + } boolean scrollingForward = currentPosition < position; scrollingToChild = -1; previousPosition = currentPosition; previousId = selectedTabId; currentPosition = position; - selectedTabId = id; + selectedTabId = tab.id; if (animatingIndicator) { AndroidUtilities.cancelRunOnUIThread(animationRunnable); @@ -971,13 +1072,16 @@ public class FilterTabsView extends FrameLayout { AndroidUtilities.runOnUIThread(animationRunnable, 16); if (delegate != null) { - delegate.onPageSelected(id, scrollingForward); + delegate.onPageSelected(tab, scrollingForward); } scrollToChild(position); } public void selectFirstTab() { - scrollToTab(Integer.MAX_VALUE, 0); + if (tabs.isEmpty()) { + return; + } + scrollToTab(tabs.get(0), 0); } public void setAnimationIdicatorProgress(float value) { @@ -1018,7 +1122,7 @@ public class FilterTabsView extends FrameLayout { selectedTabId = -1; } - public void addTab(int id, int stableId, String text) { + public void addTab(int id, int stableId, String text, boolean isDefault, boolean isLocked) { int position = tabs.size(); if (position == 0 && selectedTabId == -1) { selectedTabId = id; @@ -1031,6 +1135,8 @@ public class FilterTabsView extends FrameLayout { } Tab tab = new Tab(id, text); + tab.isDefault = isDefault; + tab.isLocked = isLocked; allTabsWidth += tab.getWidth(true) + AndroidUtilities.dp(32); tabs.add(tab); } @@ -1078,6 +1184,10 @@ public class FilterTabsView extends FrameLayout { return positionToId.get(0, 0); } + public String getSelectorColorKey() { + return selectorColorKey; + } + private void updateTabsWidths() { positionToX.clear(); positionToWidth.clear(); @@ -1199,7 +1309,7 @@ public class FilterTabsView extends FrameLayout { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (!tabs.isEmpty()) { int width = MeasureSpec.getSize(widthMeasureSpec) - AndroidUtilities.dp(7) - AndroidUtilities.dp(7); - Tab firstTab = tabs.get(0); + Tab firstTab = findDefaultTab(); firstTab.setTitle(LocaleController.getString("FilterAllChats", R.string.FilterAllChats)); int tabWith = firstTab.getWidth(false); firstTab.setTitle(allTabsWidth > width ? LocaleController.getString("FilterAllChatsShort", R.string.FilterAllChatsShort) : LocaleController.getString("FilterAllChats", R.string.FilterAllChats)); @@ -1221,6 +1331,15 @@ public class FilterTabsView extends FrameLayout { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } + private Tab findDefaultTab() { + for (int i = 0; i < tabs.size(); i++) { + if (tabs.get(i).isDefault) { + return tabs.get(i); + } + } + return null; + } + @Override public void requestLayout() { if (ignoreLayout) { @@ -1330,10 +1449,14 @@ public class FilterTabsView extends FrameLayout { ArrayList filters = MessagesController.getInstance(UserConfig.selectedAccount).dialogFilters; for (int a = 0, N = filters.size(); a < N; a++) { MessagesController.DialogFilter filter = filters.get(a); - req.order.add(filters.get(a).id); + if (filter.isDefault()) { + req.order.add(0); + } else { + req.order.add(filter.id); + } } + MessagesController.getInstance(UserConfig.selectedAccount).lockFiltersInternal(); ConnectionsManager.getInstance(UserConfig.selectedAccount).sendRequest(req, (response, error) -> { - }); orderChanged = false; } @@ -1353,7 +1476,7 @@ public class FilterTabsView extends FrameLayout { invalidated = true; requestLayout(); allTabsWidth = 0; - tabs.get(0).setTitle(LocaleController.getString("FilterAllChats", R.string.FilterAllChats)); + findDefaultTab().setTitle(LocaleController.getString("FilterAllChats", R.string.FilterAllChats)); for (int b = 0; b < N; b++) { allTabsWidth += tabs.get(b).getWidth(true) + AndroidUtilities.dp(32); } @@ -1384,7 +1507,7 @@ public class FilterTabsView extends FrameLayout { listView.setItemAnimator(itemAnimator); adapter.notifyDataSetChanged(); allTabsWidth = 0; - tabs.get(0).setTitle(LocaleController.getString("FilterAllChats", R.string.FilterAllChats)); + findDefaultTab().setTitle(LocaleController.getString("FilterAllChats", R.string.FilterAllChats)); for (int b = 0, N = tabs.size(); b < N; b++) { allTabsWidth += tabs.get(b).getWidth(true) + AndroidUtilities.dp(32); } @@ -1422,7 +1545,11 @@ public class FilterTabsView extends FrameLayout { @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { TabView tabView = (TabView) holder.itemView; + int oldId = tabView.currentTab != null ? tabView.getId() : -1; tabView.setTab(tabs.get(position), position); + if (oldId != tabView.getId()) { + tabView.progressToLocked = tabView.currentTab.isLocked ? 1f : 0; + } } @Override @@ -1431,9 +1558,9 @@ public class FilterTabsView extends FrameLayout { } public void swapElements(int fromIndex, int toIndex) { - int idx1 = fromIndex - 1; - int idx2 = toIndex - 1; - int count = tabs.size() - 1; + int idx1 = fromIndex; + int idx2 = toIndex; + int count = tabs.size(); if (idx1 < 0 || idx2 < 0 || idx1 >= count || idx2 >= count) { return; } @@ -1496,7 +1623,7 @@ public class FilterTabsView extends FrameLayout { @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { - if (!isEditing || viewHolder.getAdapterPosition() == 0) { + if (!isEditing || (viewHolder.getAdapterPosition() == 0 && tabs.get(0).isDefault && !UserConfig.getInstance(UserConfig.selectedAccount).isPremium())) { return makeMovementFlags(0, 0); } return makeMovementFlags(ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT, 0); @@ -1504,7 +1631,7 @@ public class FilterTabsView extends FrameLayout { @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) { - if (source.getAdapterPosition() == 0 || target.getAdapterPosition() == 0) { + if ((source.getAdapterPosition() == 0 || target.getAdapterPosition() == 0) && !UserConfig.getInstance(UserConfig.selectedAccount).isPremium()) { return false; } adapter.swapElements(source.getAdapterPosition(), target.getAdapterPosition()); @@ -1537,4 +1664,54 @@ public class FilterTabsView extends FrameLayout { public RecyclerListView getListView() { return listView; } + + public boolean currentTabIsDefault() { + Tab defaultTab = findDefaultTab(); + if (defaultTab == null) { + return false; + } + return defaultTab.id == selectedTabId; + } + + public int getDefaultTabId() { + Tab defaultTab = findDefaultTab(); + if (defaultTab == null) { + return -1; + } + return defaultTab.id; + } + + public boolean isEmpty() { + return tabs.isEmpty(); + } + + public boolean isFirstTabSelected() { + if (tabs.isEmpty()) { + return true; + } + return selectedTabId == tabs.get(0).id; + } + + public boolean isLocked(int id) { + for (int i = 0; i < tabs.size(); i++) { + if (tabs.get(i).id == id) { + return tabs.get(i).isLocked; + } + } + return false; + } + + public void shakeLock(int id) { + for (int i = 0; i < listView.getChildCount(); i++) { + if (listView.getChildAt(i) instanceof TabView) { + TabView tabView = (TabView) listView.getChildAt(i); + if (tabView.currentTab.id == id) { + tabView.shakeLockIcon(1, 0); + tabView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP); + break; + } + } + } + } + } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FiltersListBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FiltersListBottomSheet.java index d15e3c85d..72c9acaea 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FiltersListBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FiltersListBottomSheet.java @@ -21,6 +21,9 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DialogObject; import org.telegram.messenger.LocaleController; @@ -35,9 +38,6 @@ import org.telegram.ui.DialogsActivity; import java.util.ArrayList; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class FiltersListBottomSheet extends BottomSheet implements NotificationCenter.NotificationCenterDelegate { private RecyclerListView listView; @@ -309,7 +309,7 @@ public class FiltersListBottomSheet extends BottomSheet implements NotificationC ArrayList filters = fragment.getMessagesController().dialogFilters; for (int a = 0, N = filters.size(); a < N; a++) { MessagesController.DialogFilter filter = filters.get(a); - if (!getDialogsCount(fragment, filter, selectedDialogs, true, true).isEmpty()) { + if (!getDialogsCount(fragment, filter, selectedDialogs, true, true).isEmpty() && !filter.isDefault()) { result.add(filter); } } @@ -393,19 +393,19 @@ public class FiltersListBottomSheet extends BottomSheet implements NotificationC cell.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); int icon; if ((filter.flags & MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) == (MessagesController.DIALOG_FILTER_FLAG_CONTACTS | MessagesController.DIALOG_FILTER_FLAG_NON_CONTACTS)) { - icon = R.drawable.menu_private; + icon = R.drawable.msg_openprofile; } else if ((filter.flags & MessagesController.DIALOG_FILTER_FLAG_EXCLUDE_READ) != 0 && (filter.flags & MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) == MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) { - icon = R.drawable.menu_unread; + icon = R.drawable.msg_markunread; } else if ((filter.flags & MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) == MessagesController.DIALOG_FILTER_FLAG_CHANNELS) { - icon = R.drawable.menu_broadcast; + icon = R.drawable.msg_channel; } else if ((filter.flags & MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) == MessagesController.DIALOG_FILTER_FLAG_GROUPS) { - icon = R.drawable.menu_groups; + icon = R.drawable.msg_groups; } else if ((filter.flags & MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) == MessagesController.DIALOG_FILTER_FLAG_CONTACTS) { - icon = R.drawable.menu_contacts; + icon = R.drawable.msg_contacts; } else if ((filter.flags & MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) == MessagesController.DIALOG_FILTER_FLAG_BOTS) { - icon = R.drawable.menu_bots; + icon = R.drawable.msg_bots; } else { - icon = R.drawable.menu_folders; + icon = R.drawable.msg_folders; } cell.setTextAndIcon(filter.name, icon); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FlickerLoadingView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FlickerLoadingView.java index c32188224..0b7ebaafd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FlickerLoadingView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FlickerLoadingView.java @@ -37,6 +37,9 @@ public class FlickerLoadingView extends View { public final static int REACTED_TYPE = 16; public final static int QR_TYPE = 17; public final static int CONTACT_TYPE = 18; + public final static int STICKERS_TYPE = 19; + public final static int LIMIT_REACHED_GROUPS = 21; + public final static int LIMIT_REACHED_LINKS = 22; private int gradientWidth; private LinearGradient gradient; @@ -71,6 +74,7 @@ public class FlickerLoadingView extends View { private float parentXOffset; FlickerLoadingView globalGradientView; + private boolean ignoreHeightCheck; public void setViewType(int type) { this.viewType = type; @@ -116,7 +120,7 @@ public class FlickerLoadingView extends View { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (isSingleCell) { - if (itemsCount > 1 && ignoreHeightCheck()) { + if (itemsCount > 1 && ignoreHeightCheck) { super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(getCellHeight(MeasureSpec.getSize(widthMeasureSpec)) * itemsCount, MeasureSpec.EXACTLY)); } else if (itemsCount > 1 && MeasureSpec.getSize(heightMeasureSpec) > 0) { super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(Math.min(MeasureSpec.getSize(heightMeasureSpec), getCellHeight(MeasureSpec.getSize(widthMeasureSpec)) * itemsCount), MeasureSpec.EXACTLY)); @@ -128,10 +132,6 @@ public class FlickerLoadingView extends View { } } - private boolean ignoreHeightCheck() { - return viewType == CONTACT_TYPE; - } - @Override protected void onDraw(Canvas canvas) { Paint paint = this.paint; @@ -209,6 +209,30 @@ public class FlickerLoadingView extends View { canvas.drawLine(AndroidUtilities.dp(textStart), h + getCellHeight(getMeasuredWidth()), getMeasuredWidth(), h + getCellHeight(getMeasuredWidth()), paint); + h += getCellHeight(getMeasuredWidth()); + k++; + if (isSingleCell && k >= itemsCount) { + break; + } + } + } else if (getViewType() == STICKERS_TYPE) { + int k = 0; + while (h <= getMeasuredHeight()) { + int r = AndroidUtilities.dp(20); + canvas.drawCircle(checkRtl(paddingLeft + AndroidUtilities.dp(9) + r), h + AndroidUtilities.dp(29), r, paint); + + int textStart = 76; + int titleWidth = k % 2 == 0 ? 92 : 128; + rectF.set(AndroidUtilities.dp(textStart), h + AndroidUtilities.dp(16), AndroidUtilities.dp(textStart + titleWidth), h + AndroidUtilities.dp(24)); + checkRtl(rectF); + canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint); + + rectF.set(AndroidUtilities.dp(textStart), h + AndroidUtilities.dp(38), AndroidUtilities.dp(textStart + 164), h + AndroidUtilities.dp(46)); + checkRtl(rectF); + canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint); + + canvas.drawLine(AndroidUtilities.dp(textStart), h + getCellHeight(getMeasuredWidth()), getMeasuredWidth(), h + getCellHeight(getMeasuredWidth()), paint); + h += getCellHeight(getMeasuredWidth()); k++; if (isSingleCell && k >= itemsCount) { @@ -552,6 +576,46 @@ public class FlickerLoadingView extends View { canvas.drawCircle(checkRtl(getWidth() - AndroidUtilities.dp(12) - r), h + AndroidUtilities.dp(24), r, paint); } + h += getCellHeight(getMeasuredWidth()); + k++; + if (isSingleCell && k >= itemsCount) { + break; + } + } + } else if (viewType == LIMIT_REACHED_GROUPS) { + int k = 0; + while (h <= getMeasuredHeight()) { + int r = AndroidUtilities.dp(46) >> 1; + canvas.drawCircle(checkRtl(AndroidUtilities.dp(20) + r), h + (AndroidUtilities.dp(58) >> 1), r, paint); + + rectF.set(AndroidUtilities.dp(74), h + AndroidUtilities.dp(16), AndroidUtilities.dp(140), h + AndroidUtilities.dp(24)); + checkRtl(rectF); + canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint); + + rectF.set(AndroidUtilities.dp(74), h + AndroidUtilities.dp(38), AndroidUtilities.dp(260), h + AndroidUtilities.dp(46)); + checkRtl(rectF); + canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint); + + h += getCellHeight(getMeasuredWidth()); + k++; + if (isSingleCell && k >= itemsCount) { + break; + } + } + } else if (viewType == LIMIT_REACHED_LINKS) { + int k = 0; + while (h <= getMeasuredHeight()) { + int r = AndroidUtilities.dp(48) >> 1; + canvas.drawCircle(checkRtl(AndroidUtilities.dp(20) + r), h + AndroidUtilities.dp(6) + r, r, paint); + + rectF.set(AndroidUtilities.dp(76), h + AndroidUtilities.dp(16), AndroidUtilities.dp(140), h + AndroidUtilities.dp(24)); + checkRtl(rectF); + canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint); + + rectF.set(AndroidUtilities.dp(76), h + AndroidUtilities.dp(38), AndroidUtilities.dp(260), h + AndroidUtilities.dp(46)); + checkRtl(rectF); + canvas.drawRoundRect(rectF, AndroidUtilities.dp(4), AndroidUtilities.dp(4), paint); + h += getCellHeight(getMeasuredWidth()); k++; if (isSingleCell && k >= itemsCount) { @@ -649,6 +713,8 @@ public class FlickerLoadingView extends View { return AndroidUtilities.dp(56); case LINKS_TYPE: return AndroidUtilities.dp(80); + case STICKERS_TYPE: + return AndroidUtilities.dp(58); case USERS_TYPE: case CONTACT_TYPE: return AndroidUtilities.dp(64); @@ -666,6 +732,10 @@ public class FlickerLoadingView extends View { return AndroidUtilities.dp(107); case REACTED_TYPE: return AndroidUtilities.dp(48); + case LIMIT_REACHED_GROUPS: + return AndroidUtilities.dp(58); + case LIMIT_REACHED_LINKS: + return AndroidUtilities.dp(60); } return 0; } @@ -714,4 +784,8 @@ public class FlickerLoadingView extends View { public Paint getPaint() { return paint; } + + public void setIgnoreHeightCheck(boolean ignore) { + this.ignoreHeightCheck = ignore; + } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ForwardingPreviewView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ForwardingPreviewView.java index 3fc21b44c..c94c0c9c4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ForwardingPreviewView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ForwardingPreviewView.java @@ -589,7 +589,7 @@ public class ForwardingPreviewView extends FrameLayout { sendMessagesView = new ActionBarMenuSubItem(context, false, true, resourcesProvider); buttonsLayout2.addView(sendMessagesView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48)); - sendMessagesView.setTextAndIcon(LocaleController.getString("ForwardSendMessages", R.string.ForwardSendMessages), R.drawable.msg_forward_send); + sendMessagesView.setTextAndIcon(LocaleController.getString("ForwardSendMessages", R.string.ForwardSendMessages), R.drawable.msg_send); if (forwardingMessagesParams.hasSenders) { actionItems.add(showSendersNameView); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextView.java index d3a1a275d..481f43336 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextView.java @@ -264,8 +264,8 @@ public class FragmentContextView extends FrameLayout implements NotificationCent } @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); + protected void dispatchDraw(Canvas canvas) { + super.dispatchDraw(canvas); if (currentStyle == STYLE_INACTIVE_GROUP_CALL && timeLayout != null) { int width = (int) Math.ceil(timeLayout.getLineWidth(0)) + AndroidUtilities.dp(24); if (width != gradientWidth) { @@ -290,12 +290,12 @@ public class FragmentContextView extends FrameLayout implements NotificationCent matrix.postTranslate(-gradientWidth * 0.7f * moveProgress, 0); linearGradient.setLocalMatrix(matrix); int x = getMeasuredWidth() - width - AndroidUtilities.dp(10); - int y = AndroidUtilities.dp(12); - rect.set(0, 0, width, AndroidUtilities.dp(24)); + int y = AndroidUtilities.dp(10); + rect.set(0, 0, width, AndroidUtilities.dp(28)); canvas.save(); canvas.translate(x, y); - canvas.drawRoundRect(rect, AndroidUtilities.dp(12), AndroidUtilities.dp(12), gradientPaint); - canvas.translate(AndroidUtilities.dp(12), AndroidUtilities.dp(4)); + canvas.drawRoundRect(rect, AndroidUtilities.dp(16), AndroidUtilities.dp(16), gradientPaint); + canvas.translate(AndroidUtilities.dp(12), AndroidUtilities.dp(6)); timeLayout.draw(canvas); canvas.restore(); } @@ -391,7 +391,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent final int halfOutlineWidth = AndroidUtilities.dp(1); AndroidUtilities.rectTmp.set(halfOutlineWidth, halfOutlineWidth, getWidth() - halfOutlineWidth, getHeight() - halfOutlineWidth); - joinButtonFlicker.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(16)); + joinButtonFlicker.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(16), this); if (joinButtonFlicker.getProgress() < 1f && !joinButtonFlicker.repeatEnabled) { invalidate(); } @@ -2105,7 +2105,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent return; } boolean clipped = false; - if ((currentStyle == STYLE_ACTIVE_GROUP_CALL || currentStyle == STYLE_CONNECTING_GROUP_CALL) && drawOverlay) { + if (currentStyle == STYLE_ACTIVE_GROUP_CALL || currentStyle == STYLE_CONNECTING_GROUP_CALL) { boolean mutedByAdmin = GroupCallActivity.groupCallInstance == null && Theme.getFragmentContextViewWavesDrawable().getState() == FragmentContextViewWavesDrawable.MUTE_BUTTON_STATE_MUTED_BY_ADMIN; Theme.getFragmentContextViewWavesDrawable().updateState(wasDraw); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/GigagroupConvertAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/GigagroupConvertAlert.java index e1c11c769..a3eed7f47 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/GigagroupConvertAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/GigagroupConvertAlert.java @@ -40,7 +40,7 @@ public class GigagroupConvertAlert extends BottomSheet { super(context); background = new View(context); - background.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + background.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); addView(background, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 0, 16, 16, 16, 16)); textView = new TextView(context); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupCallRecordAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupCallRecordAlert.java index 0534bfe70..3947f721b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupCallRecordAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupCallRecordAlert.java @@ -17,6 +17,8 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; @@ -289,11 +291,31 @@ public class GroupCallRecordAlert extends BottomSheet { public Object instantiateItem(ViewGroup container, int position) { View view; - ImageView imageView = new ImageView(getContext()); + ImageView imageView = new ImageView(getContext()) { + @Override + public void onInitializeAccessibilityEvent(AccessibilityEvent event) { + super.onInitializeAccessibilityEvent(event); + if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) { + viewPager.setCurrentItem(position, true); + } + } + }; + imageView.setOnClickListener((e) -> { + onStartRecord(position); + dismiss(); + }); + imageView.setFocusable(true); imageView.setTag(position); imageView.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setLayoutParams(new ViewGroup.LayoutParams(AndroidUtilities.dp(200), ViewGroup.LayoutParams.MATCH_PARENT)); + if (position == 0) { + imageView.setContentDescription(LocaleController.getString("VoipRecordAudio", R.string.VoipRecordAudio)); + } else if (position == 1) { + imageView.setContentDescription(LocaleController.getString("VoipRecordPortrait", R.string.VoipRecordPortrait)); + } else { + imageView.setContentDescription(LocaleController.getString("VoipRecordLandscape", R.string.VoipRecordLandscape)); + } view = imageView; int res; if (position == 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupedPhotosListView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupedPhotosListView.java index dbcb4e8a8..b4dbe499f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupedPhotosListView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupedPhotosListView.java @@ -743,6 +743,7 @@ public class GroupedPhotosListView extends View implements GestureDetector.OnGes } } receiver.setAlpha(drawAlpha); + receiver.setRoundRadius(AndroidUtilities.dp(2)); receiver.draw(canvas); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/HintView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/HintView.java index ee444e4c1..53d236ff6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/HintView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/HintView.java @@ -88,16 +88,16 @@ public class HintView extends FrameLayout { addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, 30, Gravity.LEFT | Gravity.TOP, 0, topArrow ? 6 : 0, 0, topArrow ? 0 : 6)); } else { textView.setGravity(Gravity.LEFT | Gravity.TOP); - textView.setBackground(Theme.createRoundRectDrawable(AndroidUtilities.dp(currentType == 7 || currentType == 8 || currentType == 9 ? 6 : 3), getThemedColor(Theme.key_chat_gifSaveHintBackground))); - if (currentType == TYPE_POLL_VOTE || currentType == 4) { - textView.setPadding(AndroidUtilities.dp(9), AndroidUtilities.dp(6), AndroidUtilities.dp(9), AndroidUtilities.dp(7)); - } else if (currentType == 2) { - textView.setPadding(AndroidUtilities.dp(7), AndroidUtilities.dp(6), AndroidUtilities.dp(7), AndroidUtilities.dp(7)); - } else if (currentType == 7 || currentType == 8 || currentType == 9) { - textView.setPadding(AndroidUtilities.dp(8), AndroidUtilities.dp(7), AndroidUtilities.dp(8), AndroidUtilities.dp(8)); - } else { - textView.setPadding(AndroidUtilities.dp(currentType == 0 ? 54 : 5), AndroidUtilities.dp(6), AndroidUtilities.dp(5), AndroidUtilities.dp(7)); - } + textView.setBackground(Theme.createRoundRectDrawable(AndroidUtilities.dp(6/*currentType == 7 || currentType == 8 || currentType == 9 ? 6 : 3*/), getThemedColor(Theme.key_chat_gifSaveHintBackground))); +// if (currentType == TYPE_POLL_VOTE || currentType == 4) { +// textView.setPadding(AndroidUtilities.dp(9), AndroidUtilities.dp(6), AndroidUtilities.dp(9), AndroidUtilities.dp(7)); +// } else if (currentType == 2) { +// textView.setPadding(AndroidUtilities.dp(7), AndroidUtilities.dp(6), AndroidUtilities.dp(7), AndroidUtilities.dp(7)); +// } else if (currentType == 7 || currentType == 8 || currentType == 9) { + textView.setPadding(AndroidUtilities.dp(currentType == 0 ? 54 : 8), AndroidUtilities.dp(7), AndroidUtilities.dp(8), AndroidUtilities.dp(8)); +// } else { +// textView.setPadding(AndroidUtilities.dp(currentType == 0 ? 54 : 5), AndroidUtilities.dp(6), AndroidUtilities.dp(5), AndroidUtilities.dp(7)); +// } addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 0, topArrow ? 6 : 0, 0, topArrow ? 0 : 6)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ImageUpdater.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ImageUpdater.java index 6ad965700..81ac54418 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ImageUpdater.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ImageUpdater.java @@ -161,7 +161,7 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega ArrayList ids = new ArrayList<>(); items.add(LocaleController.getString("ChooseTakePhoto", R.string.ChooseTakePhoto)); - icons.add(R.drawable.menu_camera); + icons.add(R.drawable.msg_camera); ids.add(ID_TAKE_PHOTO); if (canSelectVideo) { @@ -171,17 +171,17 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega } items.add(LocaleController.getString("ChooseFromGallery", R.string.ChooseFromGallery)); - icons.add(R.drawable.profile_photos); + icons.add(R.drawable.msg_photos); ids.add(ID_UPLOAD_FROM_GALLERY); if (searchAvailable) { items.add(LocaleController.getString("ChooseFromSearch", R.string.ChooseFromSearch)); - icons.add(R.drawable.menu_search); + icons.add(R.drawable.msg_search); ids.add(ID_SEARCH_WEB); } if (hasAvatar) { items.add(LocaleController.getString("DeletePhoto", R.string.DeletePhoto)); - icons.add(R.drawable.chats_delete); + icons.add(R.drawable.msg_delete); ids.add(ID_REMOVE_PHOTO); } @@ -468,10 +468,10 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega if (info.searchImage.photo != null) { TLRPC.PhotoSize photoSize = FileLoader.getClosestPhotoSizeWithSize(info.searchImage.photo.sizes, AndroidUtilities.getPhotoSize()); if (photoSize != null) { - File path = FileLoader.getPathToAttach(photoSize, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(photoSize, true); finalPath = path.getAbsolutePath(); if (!path.exists()) { - path = FileLoader.getPathToAttach(photoSize, false); + path = FileLoader.getInstance(currentAccount).getPathToAttach(photoSize, false); if (!path.exists()) { path = null; } @@ -733,7 +733,7 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega smallPhoto = ImageLoader.scaleAndSaveImage(bitmap, 150, 150, 80, false, 150, 150); if (smallPhoto != null) { try { - Bitmap b = BitmapFactory.decodeFile(FileLoader.getPathToAttach(smallPhoto, true).getAbsolutePath()); + Bitmap b = BitmapFactory.decodeFile(FileLoader.getInstance(currentAccount).getPathToAttach(smallPhoto, true).getAbsolutePath()); String key = smallPhoto.location.volume_id + "_" + smallPhoto.location.local_id + "@50_50"; ImageLoader.getInstance().putImageToCache(new BitmapDrawable(b), key, true); } catch (Throwable ignore) { @@ -749,6 +749,7 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega convertingVideo = avatarObject; long startTime = avatarObject.videoEditedInfo.startTime < 0 ? 0 : avatarObject.videoEditedInfo.startTime; videoTimestamp = (avatarObject.videoEditedInfo.avatarStartTime - startTime) / 1000000.0; + avatarObject.videoEditedInfo.shouldLimitFps = false; NotificationCenter.getInstance(currentAccount).addObserver(ImageUpdater.this, NotificationCenter.filePreparingStarted); NotificationCenter.getInstance(currentAccount).addObserver(ImageUpdater.this, NotificationCenter.filePreparingFailed); NotificationCenter.getInstance(currentAccount).addObserver(ImageUpdater.this, NotificationCenter.fileNewChunkAvailable); @@ -873,11 +874,11 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega Bitmap bitmap = SendMessagesHelper.createVideoThumbnailAtTime(finalPath, (long) (videoTimestamp * 1000), null, true); if (bitmap != null) { - File path = FileLoader.getPathToAttach(smallPhoto, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(smallPhoto, true); if (path != null) { path.delete(); } - path = FileLoader.getPathToAttach(bigPhoto, true); + path = FileLoader.getInstance(currentAccount).getPathToAttach(bigPhoto, true); if (path != null) { path.delete(); } @@ -885,7 +886,7 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega smallPhoto = ImageLoader.scaleAndSaveImage(bitmap, 150, 150, 80, false, 150, 150); if (smallPhoto != null) { try { - Bitmap b = BitmapFactory.decodeFile(FileLoader.getPathToAttach(smallPhoto, true).getAbsolutePath()); + Bitmap b = BitmapFactory.decodeFile(FileLoader.getInstance(currentAccount).getPathToAttach(smallPhoto, true).getAbsolutePath()); String key = smallPhoto.location.volume_id + "_" + smallPhoto.location.local_id + "@50_50"; ImageLoader.getInstance().putImageToCache(new BitmapDrawable(b), key, true); } catch (Throwable ignore) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/InstantCameraView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/InstantCameraView.java index f4af0f052..2c8d84c68 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/InstantCameraView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/InstantCameraView.java @@ -99,6 +99,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import java.util.ArrayList; +import java.util.Collections; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ArrayBlockingQueue; @@ -156,7 +157,7 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter private CameraGLThread cameraThread; private Size previewSize; private Size pictureSize; - private Size aspectRatio = SharedConfig.roundCamera16to9 ? new Size(16, 9) : new Size(4, 3); + private Size aspectRatio = SharedConfig.roundCamera16to9 ? new Size(1, 1) : new Size(4, 3); private TextureView textureView; private BackupImageView textureOverlayView; private CameraSession cameraSession; @@ -179,21 +180,6 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter " vTextureCoord = (uSTMatrix * aTextureCoord).xy;\n" + "}\n"; - private static final String FRAGMENT_SHADER = - "#extension GL_OES_EGL_image_external : require\n" + - "precision highp float;\n" + - "varying vec2 vTextureCoord;\n" + - "uniform float scaleX;\n" + - "uniform float scaleY;\n" + - "uniform float alpha;\n" + - "uniform samplerExternalOES sTexture;\n" + - "void main() {\n" + - " vec2 coord = vec2((vTextureCoord.x - 0.5) * scaleX, (vTextureCoord.y - 0.5) * scaleY);\n" + - " float coef = ceil(clamp(0.2601 - dot(coord, coord), 0.0, 1.0));\n" + - " vec3 color = texture2D(sTexture, vTextureCoord).rgb * coef + (1.0 - step(0.001, coef));\n" + - " gl_FragColor = vec4(color * alpha, alpha);\n" + - "}\n"; - private static final String FRAGMENT_SCREEN_SHADER = "#extension GL_OES_EGL_image_external : require\n" + "precision lowp float;\n" + @@ -227,6 +213,8 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter private boolean updateTextureViewSize; private final Theme.ResourcesProvider resourcesProvider; + private final static int audioSampleRate = 48000; + @SuppressLint("ClickableViewAccessibility") public InstantCameraView(Context context, ChatActivity parentFragment, Theme.ResourcesProvider resourcesProvider) { super(context); @@ -379,7 +367,7 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter float rad = AndroidUtilities.rectTmp.width() / 2f; canvas.drawRoundRect(AndroidUtilities.rectTmp, rad, rad, blackoutPaint); AndroidUtilities.rectTmp.inset(AndroidUtilities.dp(1), AndroidUtilities.dp(1)); - flickerDrawable.draw(canvas, AndroidUtilities.rectTmp, rad); + flickerDrawable.draw(canvas, AndroidUtilities.rectTmp, rad, null); invalidate(); } } @@ -934,8 +922,8 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter ArrayList previewSizes = selectedCamera.getPreviewSizes(); ArrayList pictureSizes = selectedCamera.getPictureSizes(); - previewSize = CameraController.chooseOptimalSize(previewSizes, 480, 270, aspectRatio); - pictureSize = CameraController.chooseOptimalSize(pictureSizes, 480, 270, aspectRatio); + previewSize = chooseOptimalSize(previewSizes); + pictureSize = chooseOptimalSize(pictureSizes); if (previewSize.mWidth != pictureSize.mWidth) { boolean found = false; for (int a = previewSizes.size() - 1; a >= 0; a--) { @@ -978,6 +966,30 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter return true; } + private Size chooseOptimalSize(ArrayList previewSizes) { + ArrayList sortedSizes = new ArrayList<>(); + for (int i = 0; i < previewSizes.size(); i++) { + if (Math.max(previewSizes.get(i).mHeight, previewSizes.get(i).mHeight) <= 1200 && Math.min(previewSizes.get(i).mHeight, previewSizes.get(i).mHeight) >= 320) { + sortedSizes.add(previewSizes.get(i)); + } + } + if (sortedSizes.isEmpty() || SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW) { + return CameraController.chooseOptimalSize(previewSizes, 480, 270, aspectRatio); + } + Collections.sort(sortedSizes, (o1, o2) -> { + float a1 = Math.min(o1.mHeight, o1.mWidth) / (float) Math.max(o1.mHeight, o1.mWidth); + float a2 = Math.min(o2.mHeight, o2.mWidth) / (float) Math.max(o2.mHeight, o2.mWidth); + + if (a1 < a2) { + return 1; + } else if (a1 > a2) { + return -1; + } + return 0; + }); + return sortedSizes.get(0); + } + private void createCamera(final SurfaceTexture surfaceTexture) { AndroidUtilities.runOnUIThread(() -> { if (cameraThread == null) { @@ -1424,8 +1436,8 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter GLES20.glGenTextures(1, cameraTexture, 0); GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, cameraTexture[0]); - GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); - GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); + GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); + GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE); GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE); @@ -1674,7 +1686,7 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter } buffer.offset[a] = audioPresentationTimeUs; buffer.read[a] = readResult; - int bufferDurationUs = 1000000 * readResult / 44100 / 2; + int bufferDurationUs = 1000000 * readResult / audioSampleRate / 2; audioPresentationTimeUs += bufferDurationUs; } if (buffer.results >= 0 || buffer.last) { @@ -2171,7 +2183,7 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter private void prepareEncoder() { try { - int recordBufferSize = AudioRecord.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); + int recordBufferSize = AudioRecord.getMinBufferSize(audioSampleRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); if (recordBufferSize <= 0) { recordBufferSize = 3584; } @@ -2182,7 +2194,7 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter for (int a = 0; a < 3; a++) { buffers.add(new AudioBufferInfo()); } - audioRecorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, 44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); + audioRecorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, audioSampleRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); audioRecorder.startRecording(); if (BuildVars.LOGS_ENABLED) { FileLog.d("initied audio record with channels " + audioRecorder.getChannelCount() + " sample rate = " + audioRecorder.getSampleRate() + " bufferSize = " + bufferSize); @@ -2196,7 +2208,7 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter MediaFormat audioFormat = new MediaFormat(); audioFormat.setString(MediaFormat.KEY_MIME, AUDIO_MIME_TYPE); - audioFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, 44100); + audioFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, audioSampleRate); audioFormat.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1); audioFormat.setInteger(MediaFormat.KEY_BIT_RATE, MessagesController.getInstance(currentAccount).roundAudioBitrate * 1024); audioFormat.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, 2048 * AudioBufferInfo.MAX_SAMPLES); @@ -2314,7 +2326,7 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, VERTEX_SHADER); - int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, FRAGMENT_SHADER); + int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, createFragmentShader(previewSize)); if (vertexShader != 0 && fragmentShader != 0) { drawProgram = GLES20.glCreateProgram(); GLES20.glAttachShader(drawProgram, vertexShader); @@ -2521,6 +2533,51 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter } } + private String createFragmentShader(Size previewSize) { + if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW || Math.max(previewSize.getHeight(), previewSize.getWidth()) * 0.7f < MessagesController.getInstance(currentAccount).roundVideoSize) { + return "#extension GL_OES_EGL_image_external : require\n" + + "precision highp float;\n" + + "varying vec2 vTextureCoord;\n" + + "uniform float scaleX;\n" + + "uniform float scaleY;\n" + + "uniform float alpha;\n" + + "uniform samplerExternalOES sTexture;\n" + + "void main() {\n" + + " vec2 coord = vec2((vTextureCoord.x - 0.5) * scaleX, (vTextureCoord.y - 0.5) * scaleY);\n" + + " float coef = ceil(clamp(0.2601 - dot(coord, coord), 0.0, 1.0));\n" + + " vec3 color = texture2D(sTexture, vTextureCoord).rgb * coef + (1.0 - step(0.001, coef));\n" + + " gl_FragColor = vec4(color * alpha, alpha);\n" + + "}\n"; + } + //apply box blur + return "#extension GL_OES_EGL_image_external : require\n" + + "precision highp float;\n" + + "varying vec2 vTextureCoord;\n" + + "uniform float scaleX;\n" + + "uniform float scaleY;\n" + + "uniform float alpha;\n" + + "const float kernel = 1.0;\n" + + "const float pixelSizeX = 1.0 / " + previewSize.getWidth() + ".0;\n" + + "const float pixelSizeY = 1.0 / " + previewSize.getHeight() + ".0;\n" + + + "uniform samplerExternalOES sTexture;\n" + + "void main() {\n" + + " vec3 accumulation = vec3(0);\n" + + " vec3 weightsum = vec3(0);\n" + + " for (float x = -kernel; x <= kernel; x++){\n" + + " for (float y = -kernel; y <= kernel; y++){\n" + + " accumulation += texture2D(sTexture, vTextureCoord + vec2(x * pixelSizeX, y * pixelSizeY)).xyz;\n" + + " weightsum += 1.0;\n" + + " }\n" + + " }\n" + + " vec4 textColor = vec4(accumulation / weightsum, 1.0);\n" + + " vec2 coord = vec2((vTextureCoord.x - 0.5) * scaleX, (vTextureCoord.y - 0.5) * scaleY);\n" + + " float coef = ceil(clamp(0.2601 - dot(coord, coord), 0.0, 1.0));\n" + + " vec3 color = textColor.rgb * coef + (1.0 - step(0.001, coef));\n" + + " gl_FragColor = vec4(color * alpha, alpha);\n" + + "}\n"; + } + public class InstantViewCameraContainer extends FrameLayout { ImageReceiver imageReceiver; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/InviteLinkBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/InviteLinkBottomSheet.java index 945a0f197..0976a0ab7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/InviteLinkBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/InviteLinkBottomSheet.java @@ -116,6 +116,7 @@ public class InviteLinkBottomSheet extends BottomSheet { this.chatId = chatId; this.permanent = permanent; this.isChannel = isChannel; + fixNavigationBar(getThemedColor(Theme.key_graySection)); if (this.users == null) { this.users = new HashMap<>(); @@ -307,7 +308,7 @@ public class InviteLinkBottomSheet extends BottomSheet { titleTextView.setSingleLine(true); titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); titleTextView.setEllipsize(TextUtils.TruncateAt.END); - titleTextView.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + titleTextView.setPadding(AndroidUtilities.dp(23), 0, AndroidUtilities.dp(23), 0); titleTextView.setGravity(Gravity.CENTER_VERTICAL); titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); if (!permanent) { @@ -331,8 +332,8 @@ public class InviteLinkBottomSheet extends BottomSheet { titleTextView.setText(builder); } - containerView.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, !titleVisible ? 0 : 48, 0, 0)); - containerView.addView(titleTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, !titleVisible ? 48 : 50, Gravity.LEFT | Gravity.TOP, 0, 0, 0, 0)); + containerView.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, !titleVisible ? 0 : 44, 0, 0)); + containerView.addView(titleTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, !titleVisible ? 44 : 50, Gravity.LEFT | Gravity.TOP, 0, 0, 0, 0)); updateRows(); loadUsers(); @@ -463,6 +464,7 @@ public class InviteLinkBottomSheet extends BottomSheet { emptyView = rowCount++; boolean needUsers = invite.usage > 0 || invite.usage_limit > 0 || invite.requested > 0; + boolean needLoadUsers = invite.usage > joinedUsers.size() || invite.request_needed && invite.requested > requestedUsers.size(); boolean usersLoaded = false; if (!joinedUsers.isEmpty()) { dividerRow = rowCount++; @@ -482,7 +484,7 @@ public class InviteLinkBottomSheet extends BottomSheet { emptyView3 = rowCount++; usersLoaded = true; } - if (needUsers) { + if (needUsers || needLoadUsers) { if (!usersLoaded) { dividerRow = rowCount++; loadingRow = rowCount++; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/InviteMembersBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/InviteMembersBottomSheet.java index 5fec41402..3f4a9baa0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/InviteMembersBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/InviteMembersBottomSheet.java @@ -130,6 +130,7 @@ public class InviteMembersBottomSheet extends UsersAlertBase implements Notifica needSnapToTop = false; this.parentFragment = parentFragment; this.chatId = chatId; + fixNavigationBar(); searchView.searchEditText.setHint(LocaleController.getString("SearchForChats", R.string.SearchForChats)); @@ -1316,7 +1317,7 @@ public class InviteMembersBottomSheet extends UsersAlertBase implements Notifica if (activity instanceof LaunchActivity) { BaseFragment fragment = ((LaunchActivity) activity).getActionBarLayout().fragmentsStack.get(((LaunchActivity) activity).getActionBarLayout().fragmentsStack.size() - 1); if (fragment instanceof ChatActivity) { - ((ChatActivity) fragment).onEditTextDialogClose(true); + ((ChatActivity) fragment).onEditTextDialogClose(true, true); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinCallAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinCallAlert.java index 1068ed423..78be91ee2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinCallAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinCallAlert.java @@ -17,6 +17,7 @@ import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; @@ -121,12 +122,13 @@ public class JoinCallAlert extends BottomSheet { background = new View(context); if (hasBackground) { - background.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + background.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); } addView(background, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 0, 16, withoutBackground ? 0 : 16, 16, 16)); for (int a = 0; a < 2; a++) { textView[a] = new TextView(context); + textView[a].setFocusable(false); textView[a].setLines(1); textView[a].setSingleLine(true); textView[a].setGravity(Gravity.CENTER_HORIZONTAL); @@ -138,6 +140,7 @@ public class JoinCallAlert extends BottomSheet { } else { textView[a].setTextColor(Theme.getColor(Theme.key_featuredStickers_addButton)); } + textView[a].setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); textView[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); textView[a].setPadding(0, 0, 0, hasBackground ? 0 : AndroidUtilities.dp(13)); addView(textView[a], LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER, 24, 0, 24, 0)); @@ -152,7 +155,10 @@ public class JoinCallAlert extends BottomSheet { super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(hasBackground ? 80 : 50), MeasureSpec.EXACTLY)); } + private CharSequence text; + public void setText(CharSequence text, boolean animated) { + this.text = text; if (!animated) { textView[0].setText(text); } else { @@ -179,6 +185,16 @@ public class JoinCallAlert extends BottomSheet { animatorSet.start(); } } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName("android.widget.Button"); + info.setClickable(true); + if (text != null) { +// info.setText(text); + } + } } public static void checkFewUsers(Context context, long did, AccountInstance accountInstance, MessagesStorage.BooleanCallback callback) { @@ -278,6 +294,7 @@ public class JoinCallAlert extends BottomSheet { this.delegate = delegate; currentType = type; + int backgroundColor; shadowDrawable = context.getResources().getDrawable(R.drawable.sheet_shadow_round).mutate(); if (type == TYPE_DISPLAY) { if (VoIPService.getSharedInstance() != null) { @@ -301,11 +318,12 @@ public class JoinCallAlert extends BottomSheet { } else { selectedPeer = chats.get(0); } - shadowDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_voipgroup_inviteMembersBackground), PorterDuff.Mode.MULTIPLY)); + shadowDrawable.setColorFilter(new PorterDuffColorFilter(backgroundColor = Theme.getColor(Theme.key_voipgroup_inviteMembersBackground), PorterDuff.Mode.MULTIPLY)); } else { - shadowDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_dialogBackground), PorterDuff.Mode.MULTIPLY)); + shadowDrawable.setColorFilter(new PorterDuffColorFilter(backgroundColor = Theme.getColor(Theme.key_dialogBackground), PorterDuff.Mode.MULTIPLY)); selectedPeer = chats.get(0); } + fixNavigationBar(backgroundColor); ViewGroup internalLayout; if (currentType == TYPE_CREATE) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinCallByUrlAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinCallByUrlAlert.java index e8f388a61..06927bcd1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinCallByUrlAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinCallByUrlAlert.java @@ -41,7 +41,7 @@ public class JoinCallByUrlAlert extends BottomSheet { super(context); background = new View(context); - background.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + background.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); addView(background, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 0, 16, 16, 16, 16)); textView = new TextView(context); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinGroupAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinGroupAlert.java index 3826156a0..8e5eb0aa8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinGroupAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinGroupAlert.java @@ -27,7 +27,9 @@ import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.BottomSheet; @@ -42,18 +44,24 @@ import androidx.recyclerview.widget.RecyclerView; public class JoinGroupAlert extends BottomSheet { private TLRPC.ChatInvite chatInvite; + private TLRPC.Chat currentChat; private String hash; private BaseFragment fragment; private TextView requestTextView; private RadialProgressView requestProgressView; - public JoinGroupAlert(final Context context, TLRPC.ChatInvite invite, String group, BaseFragment parentFragment) { - super(context, false); + public JoinGroupAlert(final Context context, TLObject obj, String group, BaseFragment parentFragment, Theme.ResourcesProvider resourcesProvider) { + super(context, false, resourcesProvider); setApplyBottomPadding(false); setApplyTopPadding(false); + fixNavigationBar(getThemedColor(Theme.key_windowBackgroundWhite)); fragment = parentFragment; - chatInvite = invite; + if (obj instanceof TLRPC.ChatInvite) { + chatInvite = (TLRPC.ChatInvite) obj; + } else if (obj instanceof TLRPC.Chat) { + currentChat = (TLRPC.Chat) obj; + } hash = group; LinearLayout linearLayout = new LinearLayout(context); @@ -69,50 +77,60 @@ public class JoinGroupAlert extends BottomSheet { ImageView closeView = new ImageView(context); closeView.setBackground(Theme.createSelectorDrawable(getThemedColor(Theme.key_listSelector))); - closeView.setColorFilter(Theme.getColor(Theme.key_sheet_other)); + closeView.setColorFilter(getThemedColor(Theme.key_sheet_other)); closeView.setImageResource(R.drawable.ic_layer_close); closeView.setOnClickListener((view) -> dismiss()); int closeViewPadding = AndroidUtilities.dp(8); closeView.setPadding(closeViewPadding, closeViewPadding, closeViewPadding, closeViewPadding); frameLayout.addView(closeView, LayoutHelper.createFrame(36, 36, Gravity.TOP | Gravity.END, 6, 8, 6, 0)); - String title; - AvatarDrawable avatarDrawable; - int participants_count; + String title = null, about = null; + AvatarDrawable avatarDrawable = null; + int participants_count = 0; BackupImageView avatarImageView = new BackupImageView(context); avatarImageView.setRoundRadius(AndroidUtilities.dp(35)); linearLayout.addView(avatarImageView, LayoutHelper.createLinear(70, 70, Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 29, 0, 0)); - if (invite.chat != null) { - avatarDrawable = new AvatarDrawable(invite.chat); - title = invite.chat.title; - participants_count = invite.chat.participants_count; - avatarImageView.setForUserOrChat(invite.chat, avatarDrawable, invite); - } else { - avatarDrawable = new AvatarDrawable(); - avatarDrawable.setInfo(0, invite.title, null); - title = invite.title; - participants_count = invite.participants_count; - TLRPC.PhotoSize size = FileLoader.getClosestPhotoSizeWithSize(invite.photo.sizes, 50); - avatarImageView.setImage(ImageLocation.getForPhoto(size, invite.photo), "50_50", avatarDrawable, invite); + if (chatInvite != null) { + if (chatInvite.chat != null) { + avatarDrawable = new AvatarDrawable(chatInvite.chat); + title = chatInvite.chat.title; + participants_count = chatInvite.chat.participants_count; + avatarImageView.setForUserOrChat(chatInvite.chat, avatarDrawable, chatInvite); + } else { + avatarDrawable = new AvatarDrawable(); + avatarDrawable.setInfo(0, chatInvite.title, null); + title = chatInvite.title; + participants_count = chatInvite.participants_count; + TLRPC.PhotoSize size = FileLoader.getClosestPhotoSizeWithSize(chatInvite.photo.sizes, 50); + avatarImageView.setImage(ImageLocation.getForPhoto(size, chatInvite.photo), "50_50", avatarDrawable, chatInvite); + } + about = chatInvite.about; + } else if (currentChat != null) { + avatarDrawable = new AvatarDrawable(currentChat); + title = currentChat.title; + TLRPC.ChatFull chatFull = MessagesController.getInstance(currentAccount).getChatFull(currentChat.id); + about = chatFull != null ? chatFull.about : null; + participants_count = Math.max(currentChat.participants_count, chatFull != null ? chatFull.participants_count : 0); + avatarImageView.setForUserOrChat(currentChat, avatarDrawable, currentChat); } TextView textView = new TextView(context); textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17); - textView.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); + textView.setTextColor(getThemedColor(Theme.key_dialogTextBlack)); textView.setText(title); textView.setSingleLine(true); textView.setEllipsize(TextUtils.TruncateAt.END); linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.CENTER_HORIZONTAL, 10, 9, 10, participants_count > 0 ? 0 : 20)); - final boolean isChannel = invite.channel && !invite.megagroup || ChatObject.isChannelAndNotMegaGroup(invite.chat); - boolean hasAbout = !TextUtils.isEmpty(invite.about); + final boolean isChannel = chatInvite != null && (chatInvite.channel && !chatInvite.megagroup || ChatObject.isChannelAndNotMegaGroup(chatInvite.chat)) || ChatObject.isChannel(currentChat) && !currentChat.megagroup; + boolean hasAbout = !TextUtils.isEmpty(about); if (participants_count > 0) { textView = new TextView(context); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - textView.setTextColor(Theme.getColor(Theme.key_dialogTextGray3)); + textView.setTextColor(getThemedColor(Theme.key_dialogTextGray3)); textView.setSingleLine(true); textView.setEllipsize(TextUtils.TruncateAt.END); if (isChannel) { @@ -126,13 +144,13 @@ public class JoinGroupAlert extends BottomSheet { if (hasAbout) { TextView aboutTextView = new TextView(context); aboutTextView.setGravity(Gravity.CENTER); - aboutTextView.setText(invite.about); - aboutTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); + aboutTextView.setText(about); + aboutTextView.setTextColor(getThemedColor(Theme.key_dialogTextBlack)); aboutTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); linearLayout.addView(aboutTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP, 24, 10, 24, 20)); } - if (invite.request_needed) { + if (chatInvite == null || chatInvite.request_needed) { FrameLayout requestFrameLayout = new FrameLayout(getContext()); linearLayout.addView(requestFrameLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -158,32 +176,42 @@ public class JoinGroupAlert extends BottomSheet { requestProgressView.setVisibility(View.VISIBLE); } }, 400); - final TLRPC.TL_messages_importChatInvite request = new TLRPC.TL_messages_importChatInvite(); - request.hash = hash; - ConnectionsManager.getInstance(currentAccount).sendRequest(request, (response, error) -> { - AndroidUtilities.runOnUIThread(() -> { - if (fragment == null || fragment.getParentActivity() == null) { - return; - } - if (error != null) { - if ("INVITE_REQUEST_SENT".equals(error.text)) { - setOnDismissListener(dialog -> { - Bulletin.TwoLineLottieLayout layout = new Bulletin.TwoLineLottieLayout(context, fragment.getResourceProvider()); - layout.imageView.setAnimation(R.raw.timer_3, 28, 28); - layout.titleTextView.setText(LocaleController.getString("RequestToJoinSent", R.string.RequestToJoinSent)); - String subTitle = isChannel - ? LocaleController.getString("RequestToJoinChannelSentDescription", R.string.RequestToJoinChannelSentDescription) - : LocaleController.getString("RequestToJoinGroupSentDescription", R.string.RequestToJoinGroupSentDescription); - layout.subtitleTextView.setText(subTitle); - Bulletin.make(fragment, layout, Bulletin.DURATION_LONG).show(); - }); - } else { - AlertsCreator.processError(currentAccount, error, fragment, request); + if (chatInvite == null && currentChat != null) { + MessagesController.getInstance(currentAccount).addUserToChat( + currentChat.id, + UserConfig.getInstance(currentAccount).getCurrentUser(), + 0, + null, + null, + true, + this::dismiss, + err -> { + if (err != null && "INVITE_REQUEST_SENT".equals(err.text)) { + setOnDismissListener(di -> showBulletin(getContext(), fragment, isChannel)); } + dismiss(); + return false; } - dismiss(); - }); - }, ConnectionsManager.RequestFlagFailOnServerErrors); + ); + } else { + final TLRPC.TL_messages_importChatInvite request = new TLRPC.TL_messages_importChatInvite(); + request.hash = hash; + ConnectionsManager.getInstance(currentAccount).sendRequest(request, (response, error) -> { + AndroidUtilities.runOnUIThread(() -> { + if (fragment == null || fragment.getParentActivity() == null) { + return; + } + if (error != null) { + if ("INVITE_REQUEST_SENT".equals(error.text)) { + setOnDismissListener(di -> showBulletin(getContext(), fragment, isChannel)); + } else { + AlertsCreator.processError(currentAccount, error, fragment, request); + } + } + dismiss(); + }); + }, ConnectionsManager.RequestFlagFailOnServerErrors); + } }); requestFrameLayout.addView(requestTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, Gravity.START, 16, 0, 16, 0)); @@ -191,10 +219,10 @@ public class JoinGroupAlert extends BottomSheet { descriptionTextView.setGravity(Gravity.CENTER); descriptionTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); descriptionTextView.setText(isChannel ? LocaleController.getString("RequestToJoinChannelDescription", R.string.RequestToJoinChannelDescription) : LocaleController.getString("RequestToJoinGroupDescription", R.string.RequestToJoinGroupDescription)); - descriptionTextView.setTextColor(Theme.getColor(Theme.key_dialogTextGray3)); + descriptionTextView.setTextColor(getThemedColor(Theme.key_dialogTextGray3)); linearLayout.addView(descriptionTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP, 24, 17, 24, 15)); - } else { - if (!invite.participants.isEmpty()) { + } else if (chatInvite != null) { + if (!chatInvite.participants.isEmpty()) { RecyclerListView listView = new RecyclerListView(context); listView.setPadding(0, 0, 0, AndroidUtilities.dp(8)); listView.setNestedScrollingEnabled(false); @@ -203,25 +231,25 @@ public class JoinGroupAlert extends BottomSheet { listView.setHorizontalScrollBarEnabled(false); listView.setVerticalScrollBarEnabled(false); listView.setAdapter(new UsersAdapter(context)); - listView.setGlowColor(Theme.getColor(Theme.key_dialogScrollGlow)); + listView.setGlowColor(getThemedColor(Theme.key_dialogScrollGlow)); linearLayout.addView(listView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 90, Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0, 0, 7)); } View shadow = new View(context); - shadow.setBackgroundColor(Theme.getColor(Theme.key_dialogShadowLine)); + shadow.setBackgroundColor(getThemedColor(Theme.key_dialogShadowLine)); linearLayout.addView(shadow, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, AndroidUtilities.getShadowHeight())); - PickerBottomLayout pickerBottomLayout = new PickerBottomLayout(context, false); + PickerBottomLayout pickerBottomLayout = new PickerBottomLayout(context, false, resourcesProvider); linearLayout.addView(pickerBottomLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.BOTTOM)); pickerBottomLayout.cancelButton.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); - pickerBottomLayout.cancelButton.setTextColor(Theme.getColor(Theme.key_dialogTextBlue2)); + pickerBottomLayout.cancelButton.setTextColor(getThemedColor(Theme.key_dialogTextBlue2)); pickerBottomLayout.cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase()); pickerBottomLayout.cancelButton.setOnClickListener(view -> dismiss()); pickerBottomLayout.doneButton.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); pickerBottomLayout.doneButton.setVisibility(View.VISIBLE); pickerBottomLayout.doneButtonBadgeTextView.setVisibility(View.GONE); - pickerBottomLayout.doneButtonTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlue2)); - if (invite.channel && !invite.megagroup || ChatObject.isChannel(invite.chat) && !invite.chat.megagroup) { + pickerBottomLayout.doneButtonTextView.setTextColor(getThemedColor(Theme.key_dialogTextBlue2)); + if (chatInvite.channel && !chatInvite.megagroup || ChatObject.isChannel(chatInvite.chat) && !chatInvite.chat.megagroup) { pickerBottomLayout.doneButtonTextView.setText(LocaleController.getString("ProfileJoinChannel", R.string.ProfileJoinChannel).toUpperCase()); } else { pickerBottomLayout.doneButtonTextView.setText(LocaleController.getString("JoinGroup", R.string.JoinGroup)); @@ -263,6 +291,17 @@ public class JoinGroupAlert extends BottomSheet { } } + public static void showBulletin(Context context, BaseFragment fragment, boolean isChannel) { + Bulletin.TwoLineLottieLayout layout = new Bulletin.TwoLineLottieLayout(context, fragment.getResourceProvider()); + layout.imageView.setAnimation(R.raw.timer_3, 28, 28); + layout.titleTextView.setText(LocaleController.getString("RequestToJoinSent", R.string.RequestToJoinSent)); + String subTitle = isChannel + ? LocaleController.getString("RequestToJoinChannelSentDescription", R.string.RequestToJoinChannelSentDescription) + : LocaleController.getString("RequestToJoinGroupSentDescription", R.string.RequestToJoinGroupSentDescription); + layout.subtitleTextView.setText(subTitle); + Bulletin.make(fragment, layout, Bulletin.DURATION_LONG).show(); + } + private class UsersAdapter extends RecyclerListView.SelectionAdapter { private Context context; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinToSendSettingsView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinToSendSettingsView.java new file mode 100644 index 000000000..5e7c07448 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/JoinToSendSettingsView.java @@ -0,0 +1,218 @@ +package org.telegram.ui.Components; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.content.Context; +import android.view.MotionEvent; +import android.view.View; +import android.widget.LinearLayout; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ChatObject; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.AlertDialog; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Cells.HeaderCell; +import org.telegram.ui.Cells.TextCheckCell; +import org.telegram.ui.Cells.TextInfoPrivacyCell; + +public class JoinToSendSettingsView extends LinearLayout { + + public HeaderCell joinHeaderCell; + public TextCheckCell joinToSendCell; + public TextCheckCell joinRequestCell; + public TextInfoPrivacyCell joinToSendInfoCell; + public TextInfoPrivacyCell joinRequestInfoCell; + + public boolean isJoinToSend, isJoinRequest; + private TLRPC.Chat currentChat; + + public JoinToSendSettingsView(Context context, TLRPC.Chat currentChat) { + super(context); + this.currentChat = currentChat; + + isJoinToSend = currentChat.join_to_send; + isJoinRequest = currentChat.join_request; + + setOrientation(LinearLayout.VERTICAL); + + joinHeaderCell = new HeaderCell(context, 23); + joinHeaderCell.setText(LocaleController.getString("ChannelSettingsJoinTitle", R.string.ChannelSettingsJoinTitle)); + joinHeaderCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + addView(joinHeaderCell); + + joinToSendCell = new TextCheckCell(context) { +// @Override +// public boolean onTouchEvent(MotionEvent event) { +// if (event.getAction() == MotionEvent.ACTION_DOWN && !isEnabled()) { +// return true; +// } +// if (event.getAction() == MotionEvent.ACTION_UP && !isEnabled()) { +// new AlertDialog.Builder(context) +// .setTitle(LocaleController.getString("UserRestrictionsCantModify", R.string.UserRestrictionsCantModify)) +// .setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("ChannelSettingsJoinToSendRestricted", R.string.ChannelSettingsJoinToSendRestricted, LocaleController.getString("EditAdminBanUsers", R.string.EditAdminBanUsers)))) +// .setPositiveButton(LocaleController.getString("OK", R.string.OK), null) +// .create() +// .show(); +// return false; +// } +// return super.onTouchEvent(event); +// } + }; + joinToSendCell.setBackground(Theme.getSelectorDrawable(true)); + joinToSendCell.setTextAndCheck(LocaleController.getString("ChannelSettingsJoinToSend", R.string.ChannelSettingsJoinToSend), isJoinToSend, isJoinToSend); + joinToSendCell.setEnabled(currentChat.creator || currentChat.admin_rights != null && currentChat.admin_rights.ban_users); + joinToSendCell.setOnClickListener(e -> { + final boolean oldValue = isJoinToSend, newValue = !isJoinToSend; + final boolean oldJoinToRequest = isJoinRequest; + if (onJoinToSendToggle(newValue, () -> AndroidUtilities.runOnUIThread(() -> { + setJoinRequest(oldJoinToRequest); + setJoinToSend(oldValue); + }))) { + setJoinRequest(false); + setJoinToSend(newValue); + } + }); + addView(joinToSendCell); + + joinRequestCell = new TextCheckCell(context) { +// @Override +// public boolean onTouchEvent(MotionEvent event) { +// if (event.getAction() == MotionEvent.ACTION_DOWN && !isEnabled()) { +// new AlertDialog.Builder(context) +// .setTitle(LocaleController.getString("UserRestrictionsCantModify", R.string.UserRestrictionsCantModify)) +// .setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("ChannelSettingsJoinToSendRestricted", R.string.ChannelSettingsJoinToSendRestricted, LocaleController.getString("EditAdminBanUsers", R.string.EditAdminBanUsers)))) +// .setPositiveButton(LocaleController.getString("OK", R.string.OK), null) +// .create() +// .show(); +// return false; +// } +// return super.onTouchEvent(event); +// } + }; + joinRequestCell.setBackground(Theme.getSelectorDrawable(true)); + joinRequestCell.setTextAndCheck(LocaleController.getString("ChannelSettingsJoinRequest", R.string.ChannelSettingsJoinRequest), isJoinRequest, false); + joinRequestCell.setPivotY(0); + joinRequestCell.setEnabled(currentChat.creator || currentChat.admin_rights != null && currentChat.admin_rights.ban_users); + joinRequestCell.setOnClickListener(e -> { + final boolean oldValue = isJoinRequest, newValue = !isJoinRequest; + if (onJoinRequestToggle(newValue, () -> AndroidUtilities.runOnUIThread(() -> { + setJoinRequest(oldValue); + }))) { + setJoinRequest(newValue); + } + }); + addView(joinRequestCell); + + joinToSendInfoCell = new TextInfoPrivacyCell(context); + joinToSendInfoCell.setText(LocaleController.getString("ChannelSettingsJoinToSendInfo", R.string.ChannelSettingsJoinToSendInfo)); + addView(joinToSendInfoCell); + + joinRequestInfoCell = new TextInfoPrivacyCell(context); + joinRequestInfoCell.setText(LocaleController.getString("ChannelSettingsJoinRequestInfo", R.string.ChannelSettingsJoinRequestInfo)); + addView(joinRequestInfoCell); + + toggleValue = isJoinToSend ? 1f : 0f; + joinRequestCell.setVisibility(isJoinToSend ? View.VISIBLE : View.GONE); + updateToggleValue(toggleValue); + } + + public void setChat(TLRPC.Chat chat) { + this.currentChat = chat; + joinToSendCell.setEnabled(currentChat.creator || currentChat.admin_rights != null && currentChat.admin_rights.ban_users); + joinRequestCell.setEnabled(currentChat.creator || currentChat.admin_rights != null && currentChat.admin_rights.ban_users); + } + + public boolean onJoinToSendToggle(boolean newValue, Runnable cancel) { + return true; + } + public boolean onJoinRequestToggle(boolean newValue, Runnable cancel) { + return true; + } + + private ValueAnimator toggleAnimator; + private float toggleValue; + + private void updateToggleValue(float value) { + toggleValue = value; + joinRequestCell.setAlpha(value); + joinRequestCell.setTranslationY((1f - value) * -AndroidUtilities.dp(16)); + joinRequestCell.setScaleY(1f - (1f - value) * .1f); + int joinRequestCellHeight = joinRequestCell.getMeasuredHeight() <= 0 ? AndroidUtilities.dp(50) : joinRequestCell.getMeasuredHeight(); + joinToSendInfoCell.setAlpha(1f - value); + joinToSendInfoCell.setTranslationY(-joinRequestCellHeight * (1f - value) + -AndroidUtilities.dp(4) * value); + joinRequestInfoCell.setAlpha(value); + joinRequestInfoCell.setTranslationY(-joinRequestCellHeight * (1f - value) + AndroidUtilities.dp(4) * (1f - value)); + requestLayout(); + } + + public void setJoinRequest(boolean newJoinRequest) { + isJoinRequest = newJoinRequest; + joinRequestCell.setChecked(newJoinRequest); + } + + public void setJoinToSend(boolean newJoinToSend) { + isJoinToSend = newJoinToSend; + + joinToSendCell.setChecked(isJoinToSend); + joinToSendCell.setDivider(isJoinToSend); + joinRequestCell.setChecked(isJoinRequest); + + if (toggleAnimator != null) { + toggleAnimator.cancel(); + } + toggleAnimator = ValueAnimator.ofFloat(toggleValue, isJoinToSend ? 1 : 0); + toggleAnimator.setDuration(200); + toggleAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT); + toggleAnimator.addUpdateListener(a -> updateToggleValue(toggleValue = (float) a.getAnimatedValue())); + toggleAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + if (!isJoinToSend) { + joinRequestCell.setVisibility(View.GONE); + } + } + }); + joinRequestCell.setVisibility(View.VISIBLE); + toggleAnimator.start(); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + int y = 0; + joinHeaderCell.layout(0, y, r - l, y += joinHeaderCell.getMeasuredHeight()); + joinToSendCell.layout(0, y, r - l, y += joinToSendCell.getMeasuredHeight()); + joinRequestCell.layout(0, y, r - l, y += joinRequestCell.getMeasuredHeight()); + joinToSendInfoCell.layout(0, y, r - l, y + joinToSendInfoCell.getMeasuredHeight()); + joinRequestInfoCell.layout(0, y, r - l, y + joinRequestInfoCell.getMeasuredHeight()); + } + + private final int MAXSPEC = MeasureSpec.makeMeasureSpec(999999, MeasureSpec.AT_MOST); + + private int calcHeight() { + return (int) ( + joinHeaderCell.getMeasuredHeight() + + joinToSendCell.getMeasuredHeight() + + joinRequestCell.getMeasuredHeight() * toggleValue + + AndroidUtilities.lerp(joinToSendInfoCell.getMeasuredHeight(), joinRequestInfoCell.getMeasuredHeight(), toggleValue) + ); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + joinHeaderCell.measure(widthMeasureSpec, MAXSPEC); + joinToSendCell.measure(widthMeasureSpec, MAXSPEC); + joinRequestCell.measure(widthMeasureSpec, MAXSPEC); + joinToSendInfoCell.measure(widthMeasureSpec, MAXSPEC); + joinRequestInfoCell.measure(widthMeasureSpec, MAXSPEC); + super.onMeasure(widthMeasureSpec, + MeasureSpec.makeMeasureSpec( + calcHeight(), + MeasureSpec.EXACTLY + ) + ); + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/LetterDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/LetterDrawable.java index b3bf1c24b..459507dff 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/LetterDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/LetterDrawable.java @@ -36,14 +36,18 @@ public class LetterDrawable extends Drawable { private StringBuilder stringBuilder = new StringBuilder(5); public LetterDrawable() { + this(null); + } + + public LetterDrawable(Theme.ResourcesProvider resourcesProvider) { super(); if (namePaint == null) { namePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); } namePaint.setTextSize(AndroidUtilities.dp(28)); - paint.setColor(Theme.getColor(Theme.key_sharedMedia_linkPlaceholder)); - namePaint.setColor(Theme.getColor(Theme.key_sharedMedia_linkPlaceholderText)); + paint.setColor(Theme.getColor(Theme.key_sharedMedia_linkPlaceholder, resourcesProvider)); + namePaint.setColor(Theme.getColor(Theme.key_sharedMedia_linkPlaceholderText, resourcesProvider)); } public void setBackgroundColor(int value) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/LineProgressView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/LineProgressView.java index cb4832d85..345edf014 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/LineProgressView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/LineProgressView.java @@ -127,7 +127,7 @@ public class LineProgressView extends View { cellFlickerDrawable.repeatProgress = 1.2f; } cellFlickerDrawable.setParentWidth(getMeasuredWidth()); - cellFlickerDrawable.draw(canvas, rect, getHeight() / 2f); + cellFlickerDrawable.draw(canvas, rect, getHeight() / 2f, null); invalidate(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkActionView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkActionView.java index df574cc8f..6f0b52600 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkActionView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkActionView.java @@ -90,6 +90,7 @@ public class LinkActionView extends LinearLayout { frameLayout.addView(linkView); optionsView = new ImageView(context); optionsView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_ab_other)); + optionsView.setContentDescription(LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions)); optionsView.setScaleType(ImageView.ScaleType.CENTER); frameLayout.addView(optionsView, LayoutHelper.createFrame(40, 48, Gravity.RIGHT | Gravity.CENTER_VERTICAL)); addView(frameLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 4, 0, 4, 0)); @@ -105,6 +106,7 @@ public class LinkActionView extends LinearLayout { spannableStringBuilder.append(LocaleController.getString("LinkActionCopy", R.string.LinkActionCopy)); spannableStringBuilder.append(".").setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(5)), spannableStringBuilder.length() - 1, spannableStringBuilder.length(), 0); copyView.setText(spannableStringBuilder); + copyView.setContentDescription(LocaleController.getString("LinkActionCopy", R.string.LinkActionCopy)); copyView.setPadding(AndroidUtilities.dp(10), AndroidUtilities.dp(10), AndroidUtilities.dp(10), AndroidUtilities.dp(10)); copyView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); copyView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -119,6 +121,7 @@ public class LinkActionView extends LinearLayout { spannableStringBuilder.append(LocaleController.getString("LinkActionShare", R.string.LinkActionShare)); spannableStringBuilder.append(".").setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(5)), spannableStringBuilder.length() - 1, spannableStringBuilder.length(), 0); shareView.setText(spannableStringBuilder); + shareView.setContentDescription(LocaleController.getString("LinkActionShare", R.string.LinkActionShare)); shareView.setPadding(AndroidUtilities.dp(10), AndroidUtilities.dp(10), AndroidUtilities.dp(10), AndroidUtilities.dp(10)); shareView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkPath.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkPath.java index 7bb73610b..6be71cf69 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkPath.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkPath.java @@ -117,7 +117,11 @@ public class LinkPath extends Path { y += baselineShift; } if (useRoundRect) { - super.addRect(left - getRadius() / 2f, y, right + getRadius() / 2f, y2, dir); +// final CharSequence text = currentLayout.getText(); +// int startOffset = currentLayout.getOffsetForHorizontal(currentLine, left), endOffset = currentLayout.getOffsetForHorizontal(currentLine, right) + 1; + boolean startsWithWhitespace = false; // startOffset >= 0 && startOffset < text.length() && text.charAt(startOffset) == ' '; + boolean endsWithWhitespace = false; // endOffset >= 0 && endOffset < text.length() && text.charAt(endOffset) == ' '; + super.addRect(left - (startsWithWhitespace ? 0 : getRadius() / 2f), y, right + (endsWithWhitespace ? 0 : getRadius() / 2f), y2, dir); } else { super.addRect(left, y, right, y2, dir); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkSpanDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkSpanDrawable.java index 8ea4a6375..ee8dfb468 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkSpanDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkSpanDrawable.java @@ -1,5 +1,6 @@ package org.telegram.ui.Components; +import android.content.Context; import android.graphics.Canvas; import android.graphics.CornerPathEffect; import android.graphics.Paint; @@ -8,11 +9,18 @@ import android.graphics.Rect; import android.graphics.Region; import android.os.Build; import android.os.SystemClock; +import android.text.Layout; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.StaticLayout; import android.text.style.CharacterStyle; +import android.text.style.ClickableSpan; import android.util.Log; import android.util.Pair; +import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; +import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.ui.ActionBar.Theme; @@ -361,4 +369,108 @@ public class LinkSpanDrawable { } } } + + public static class LinksTextView extends TextView { + public interface OnLinkPress { + public void run(ClickableSpan span); + } + + private boolean isCustomLinkCollector; + private LinkCollector links; + private Theme.ResourcesProvider resourcesProvider; + + private LinkSpanDrawable pressedLink; + + private OnLinkPress onPressListener; + private OnLinkPress onLongPressListener; + + public LinksTextView(Context context) { + this(context, null); + } + + public LinksTextView(Context context, Theme.ResourcesProvider resourcesProvider) { + super(context); + this.isCustomLinkCollector = false; + this.links = new LinkCollector(this); + this.resourcesProvider = resourcesProvider; + } + + public LinksTextView(Context context, LinkCollector customLinkCollector, Theme.ResourcesProvider resourcesProvider) { + super(context); + this.isCustomLinkCollector = true; + this.links = customLinkCollector; + this.resourcesProvider = resourcesProvider; + } + + public void setOnLinkPressListener(OnLinkPress listener) { + onPressListener = listener; + } + + public void setOnLinkLongPressListener(OnLinkPress listener) { + onLongPressListener = listener; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (links != null) { + Layout textLayout = getLayout(); + int x = (int) (event.getX() - getPaddingLeft()); + int y = (int) (event.getY() - getPaddingTop()); + final int line = textLayout.getLineForVertical(y); + final int off = textLayout.getOffsetForHorizontal(line, x); + final float left = getLayout().getLineLeft(line); + ClickableSpan span = null; + if (left <= x && left + textLayout.getLineWidth(line) >= x && y >= 0 && y <= textLayout.getHeight()) { + Spannable buffer = new SpannableString(textLayout.getText()); + ClickableSpan[] spans = buffer.getSpans(off, off, ClickableSpan.class); + if (spans.length != 0 && !AndroidUtilities.isAccessibilityScreenReaderEnabled()) { + span = spans[0]; + if (event.getAction() == MotionEvent.ACTION_DOWN) { + pressedLink = new LinkSpanDrawable(span, resourcesProvider, event.getX(), event.getY()); + links.addLink(pressedLink); + int start = buffer.getSpanStart(pressedLink.getSpan()); + int end = buffer.getSpanEnd(pressedLink.getSpan()); + LinkPath path = pressedLink.obtainNewPath(); + path.setCurrentLayout(textLayout, start, getPaddingTop()); + textLayout.getSelectionPath(start, end, path); + AndroidUtilities.runOnUIThread(() -> { + if (onLongPressListener != null) { + onLongPressListener.run(spans[0]); + pressedLink = null; + links.clear(); + } + }, ViewConfiguration.getLongPressTimeout()); + return true; + } + } + } + if (event.getAction() == MotionEvent.ACTION_UP) { + links.clear(); + if (pressedLink != null && pressedLink.getSpan() == span) { + if (onPressListener != null) { + onPressListener.run(pressedLink.getSpan()); + } else if (pressedLink.getSpan() != null) { + pressedLink.getSpan().onClick(this); + } + } + pressedLink = null; + return true; + } + if (event.getAction() == MotionEvent.ACTION_CANCEL) { + links.clear(); + pressedLink = null; + return true; + } + } + return pressedLink != null || super.onTouchEvent(event); + } + + @Override + protected void onDraw(Canvas canvas) { + if (!isCustomLinkCollector && links.draw(canvas)) { + invalidate(); + } + super.onDraw(canvas); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/MediaActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/MediaActivity.java index 225c47f72..ca4eac5b8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/MediaActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/MediaActivity.java @@ -206,7 +206,7 @@ public class MediaActivity extends BaseFragment implements SharedMediaLayout.Sha updateMediaCount(); } - }, SharedMediaLayout.VIEW_TYPE_MEDIA_ACTIVITY) { + }, SharedMediaLayout.VIEW_TYPE_MEDIA_ACTIVITY, getResourceProvider()) { @Override protected void onSelectedTabChanged() { updateMediaCount(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/MentionsContainerView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/MentionsContainerView.java new file mode 100644 index 000000000..6b03ccfed --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/MentionsContainerView.java @@ -0,0 +1,660 @@ +package org.telegram.ui.Components; + +import static org.telegram.messenger.AndroidUtilities.dp; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Rect; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.dynamicanimation.animation.DynamicAnimation; +import androidx.dynamicanimation.animation.FloatValueHolder; +import androidx.dynamicanimation.animation.SpringAnimation; +import androidx.dynamicanimation.animation.SpringForce; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.FileLoader; +import org.telegram.messenger.SharedConfig; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Adapters.MentionsAdapter; +import org.telegram.ui.Adapters.PaddedListAdapter; +import org.telegram.ui.Cells.AboutLinkCell; +import org.telegram.ui.ContentPreviewViewer; + +public class MentionsContainerView extends BlurredFrameLayout { + + private final SizeNotifierFrameLayout sizeNotifierFrameLayout; + private final Theme.ResourcesProvider resourcesProvider; + + private MentionsListView listView; + private LinearLayoutManager linearLayoutManager; + private ExtendedGridLayoutManager gridLayoutManager; + + private PaddedListAdapter paddedAdapter; + private MentionsAdapter adapter; + + private float containerTop, containerBottom, containerPadding, listViewPadding; + + public MentionsContainerView(@NonNull Context context, long dialogId, int threadMessageId, SizeNotifierFrameLayout sizeNotifierFrameLayout, Theme.ResourcesProvider resourcesProvider) { + super(context, sizeNotifierFrameLayout); + this.sizeNotifierFrameLayout = sizeNotifierFrameLayout; + this.resourcesProvider = resourcesProvider; + this.drawBlur = false; + this.isTopView = false; + setVisibility(View.GONE); + setWillNotDraw(false); + + listViewPadding = (int) Math.min(AndroidUtilities.dp(36 * 3.5f), AndroidUtilities.displaySize.y * 0.22f); + + listView = new MentionsListView(context, resourcesProvider); + listView.setTranslationY(AndroidUtilities.dp(6)); + linearLayoutManager = new LinearLayoutManager(context) { + @Override + public boolean supportsPredictiveItemAnimations() { + return false; + } + + @Override + public void setReverseLayout(boolean reverseLayout) { + super.setReverseLayout(reverseLayout); + listView.setTranslationY((reverseLayout ? -1 : 1) * AndroidUtilities.dp(6)); + } + }; + linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); + gridLayoutManager = new ExtendedGridLayoutManager(context, 100, false, false) { + private Size size = new Size(); + + @Override + protected Size getSizeForItem(int i) { + if (i == 0) { + size.width = getWidth(); + size.height = paddedAdapter.getPadding(); + return size; + } else { + i--; + } + if (adapter.getBotContextSwitch() != null) { + i++; + } + size.width = 0; + size.height = 0; + Object object = adapter.getItem(i); + if (object instanceof TLRPC.BotInlineResult) { + TLRPC.BotInlineResult inlineResult = (TLRPC.BotInlineResult) object; + if (inlineResult.document != null) { + TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(inlineResult.document.thumbs, 90); + size.width = thumb != null ? thumb.w : 100; + size.height = thumb != null ? thumb.h : 100; + for (int b = 0; b < inlineResult.document.attributes.size(); b++) { + TLRPC.DocumentAttribute attribute = inlineResult.document.attributes.get(b); + if (attribute instanceof TLRPC.TL_documentAttributeImageSize || attribute instanceof TLRPC.TL_documentAttributeVideo) { + size.width = attribute.w; + size.height = attribute.h; + break; + } + } + } else if (inlineResult.content != null) { + for (int b = 0; b < inlineResult.content.attributes.size(); b++) { + TLRPC.DocumentAttribute attribute = inlineResult.content.attributes.get(b); + if (attribute instanceof TLRPC.TL_documentAttributeImageSize || attribute instanceof TLRPC.TL_documentAttributeVideo) { + size.width = attribute.w; + size.height = attribute.h; + break; + } + } + } else if (inlineResult.thumb != null) { + for (int b = 0; b < inlineResult.thumb.attributes.size(); b++) { + TLRPC.DocumentAttribute attribute = inlineResult.thumb.attributes.get(b); + if (attribute instanceof TLRPC.TL_documentAttributeImageSize || attribute instanceof TLRPC.TL_documentAttributeVideo) { + size.width = attribute.w; + size.height = attribute.h; + break; + } + } + } else if (inlineResult.photo != null) { + TLRPC.PhotoSize photoSize = FileLoader.getClosestPhotoSizeWithSize(inlineResult.photo.sizes, AndroidUtilities.photoSize); + if (photoSize != null) { + size.width = photoSize.w; + size.height = photoSize.h; + } + } + } + return size; + } + + @Override + protected int getFlowItemCount() { + if (adapter.getBotContextSwitch() != null) { + return getItemCount() - 2; + } + return super.getFlowItemCount() - 1; + } + }; + gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + if (position == 0) { + return 100; + } else { + position--; + } + Object object = adapter.getItem(position); + if (object instanceof TLRPC.TL_inlineBotSwitchPM) { + return 100; + } else if (object instanceof TLRPC.Document) { + return 20; + } else { + if (adapter.getBotContextSwitch() != null) { + position--; + } + return gridLayoutManager.getSpanSizeForItem(position); + } + } + }); + DefaultItemAnimator mentionItemAnimator = new DefaultItemAnimator(); + mentionItemAnimator.setAddDuration(150); + mentionItemAnimator.setMoveDuration(150); + mentionItemAnimator.setChangeDuration(150); + mentionItemAnimator.setRemoveDuration(150); + mentionItemAnimator.setTranslationInterpolator(CubicBezierInterpolator.DEFAULT); + mentionItemAnimator.setDelayAnimations(false); + listView.setItemAnimator(mentionItemAnimator); + listView.setClipToPadding(false); + listView.setLayoutManager(linearLayoutManager); + + adapter = new MentionsAdapter(context, false, dialogId, threadMessageId, new MentionsAdapter.MentionsAdapterDelegate() { + @Override + public void onItemCountUpdate(int oldCount, int newCount) { + if (listView.getLayoutManager() != gridLayoutManager && shown) { + AndroidUtilities.cancelRunOnUIThread(updateVisibilityRunnable); + AndroidUtilities.runOnUIThread(updateVisibilityRunnable); + } + } + + @Override + public void needChangePanelVisibility(boolean show) { + if (getNeededLayoutManager() != getCurrentLayoutManager() && canOpen() && adapter.getItemCountInternal() > 0) { + switchLayoutManagerOnEnd = true; + updateVisibility(false); + return; + } + if (show && !canOpen()) { + show = false; + } + if (show && adapter.getItemCountInternal() <= 0) { + show = false; + } + updateVisibility(show); + } + + @Override + public void onContextSearch(boolean searching) { + MentionsContainerView.this.onContextSearch(searching); + } + + @Override + public void onContextClick(TLRPC.BotInlineResult result) { + MentionsContainerView.this.onContextClick(result); + } + + }, resourcesProvider); + paddedAdapter = new PaddedListAdapter(adapter); + listView.setAdapter(paddedAdapter); + + addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + setReversed(false); + } + + protected boolean canOpen() { + return true; + } + protected void onOpen() {} + protected void onClose() {} + protected void onContextSearch(boolean searching) {} + protected void onContextClick(TLRPC.BotInlineResult result) {} + + private boolean shouldLiftMentions = false; + + public void onPanTransitionStart() { + shouldLiftMentions = isReversed(); // (getCurrentLayoutManager().getReverseLayout() ? getCurrentLayoutManager().findLastVisibleItemPosition() : getCurrentLayoutManager().findFirstVisibleItemPosition()) > 0; + } + + public void onPanTransitionUpdate(float translationY) { + if (shouldLiftMentions) { + setTranslationY(translationY); + } + } + + public void onPanTransitionEnd() {} + + + public MentionsListView getListView() { + return listView; + } + + public MentionsAdapter getAdapter() { + return adapter; + } + + public void setReversed(boolean reversed) { + scrollToFirst = true; + linearLayoutManager.setReverseLayout(reversed); + adapter.setIsReversed(reversed); + } + + public boolean isReversed() { + return listView.getLayoutManager() == linearLayoutManager && linearLayoutManager.getReverseLayout(); + } + + public LinearLayoutManager getCurrentLayoutManager() { + return listView.getLayoutManager() == linearLayoutManager ? linearLayoutManager : gridLayoutManager; + } + + public LinearLayoutManager getNeededLayoutManager() { + return (adapter.isStickers() || adapter.isBotContext()) && adapter.isMediaLayout() ? gridLayoutManager : linearLayoutManager; + } + + private Rect rect = new Rect(); + private Path path; + private Paint paint; + + public float clipBottom() { + if (getVisibility() != View.VISIBLE) { + return 0; + } + return isReversed() ? 0 : getMeasuredHeight() - containerTop; + } + + public float clipTop() { + if (getVisibility() != View.VISIBLE) { + return 0; + } + return isReversed() ? containerBottom : 0; + } + + @Override + public void dispatchDraw(Canvas canvas) { + boolean reversed = isReversed(); + boolean topPadding = (adapter.isStickers() || adapter.isBotContext()) && adapter.isMediaLayout() && adapter.getBotContextSwitch() == null; + containerPadding = AndroidUtilities.dp(2 + (topPadding ? 2 : 0)); + + float r = AndroidUtilities.dp(4); + if (reversed) { + int paddingViewTop = paddedAdapter.paddingViewAttached ? paddedAdapter.paddingView.getTop() : getHeight(); + float top = Math.max(0, paddingViewTop + listView.getTranslationY()) + containerPadding; + top = Math.min(top, (1f - hideT) * getHeight()); + rect.set(0, (int) (containerTop = 0), getMeasuredWidth(), (int) (containerBottom = top)); + r = Math.min(r, Math.abs(getMeasuredHeight() - containerBottom)); + if (r > 0) { + rect.top -= (int) r; + } + } else { + if (listView.getLayoutManager() == gridLayoutManager) { + containerPadding += AndroidUtilities.dp(2); + r += AndroidUtilities.dp(2); + } + int paddingViewBottom = paddedAdapter.paddingViewAttached ? paddedAdapter.paddingView.getBottom() : 0; + float top = containerTop = Math.max(0, paddingViewBottom + listView.getTranslationY()) - containerPadding; + top = Math.max(top, hideT * getHeight()); + rect.set(0, (int) (containerTop = top), getMeasuredWidth(), (int) (containerBottom = getMeasuredHeight())); + r = Math.min(r, Math.abs(containerTop)); + if (r > 0) { + rect.bottom += (int) r; + } + } + + if (paint == null) { + paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setShadowLayer(dp(4), 0, 0, 0x1e000000); + } + paint.setColor(color != null ? color : getThemedColor(Theme.key_chat_messagePanelBackground)); + + if (SharedConfig.chatBlurEnabled() && sizeNotifierFrameLayout != null) { + if (r > 0) { + canvas.save(); + if (path == null) { + path = new Path(); + } else { + path.reset(); + } + AndroidUtilities.rectTmp.set(rect); + path.addRoundRect(AndroidUtilities.rectTmp, r, r, Path.Direction.CW); + canvas.clipPath(path); + } + sizeNotifierFrameLayout.drawBlurRect(canvas, getY(), rect, paint, reversed); + if (r > 0) { + canvas.restore(); + } + } else { + AndroidUtilities.rectTmp.set(rect); + canvas.drawRoundRect(AndroidUtilities.rectTmp, r, r, paint); + } + canvas.save(); + canvas.clipRect(rect); + super.dispatchDraw(canvas); + canvas.restore(); + } + + private Integer color; + public void setOverrideColor(int color) { + this.color = color; + invalidate(); + } + + + private boolean ignoreLayout = false; + + public void setIgnoreLayout(boolean ignore) { + ignoreLayout = ignore; + } + + @Override + public void requestLayout() { + if (ignoreLayout) { + return; + } + super.requestLayout(); + } + + private boolean scrollToFirst = false; + private boolean shown = false; + private Runnable updateVisibilityRunnable = () -> { + updateListViewTranslation(!shown, true); + }; + + public void updateVisibility(boolean show) { + if (show) { + boolean reversed = isReversed(); + if (!shown) { + scrollToFirst = true; + if (listView.getLayoutManager() == linearLayoutManager) { + linearLayoutManager.scrollToPositionWithOffset(0, reversed ? -100000 : 100000); + } + if (getVisibility() == View.GONE) { + hideT = 1; + listView.setTranslationY(reversed ? -(listViewPadding + AndroidUtilities.dp(12)) : (listView.computeVerticalScrollOffset() + listViewPadding)); + } + } + setVisibility(View.VISIBLE); + } else { + scrollToFirst = false; + } + shown = show; + AndroidUtilities.cancelRunOnUIThread(updateVisibilityRunnable); + if (listViewTranslationAnimator != null) { + listViewTranslationAnimator.cancel(); + } + AndroidUtilities.runOnUIThread(updateVisibilityRunnable); + if (show) { + onOpen(); + } else { + onClose(); + } + } + + public boolean isOpen() { + return shown; + } + + private SpringAnimation listViewTranslationAnimator; + private boolean listViewHiding = false; + private float hideT = 0; + private boolean switchLayoutManagerOnEnd = false; + + private void updateListViewTranslation(boolean forceZeroHeight, boolean animated) { + if (listView == null || paddedAdapter == null) { + return; + } + if (listViewHiding && listViewTranslationAnimator != null && listViewTranslationAnimator.isRunning() && forceZeroHeight) { + return; + } + boolean reversed = isReversed(); + float itemHeight; + if (forceZeroHeight) { + itemHeight = - containerPadding - AndroidUtilities.dp(6); + } else { + itemHeight = listView.computeVerticalScrollRange() - paddedAdapter.getPadding() + containerPadding; + } + float newTranslationY = (reversed ? -Math.max(0, listViewPadding - itemHeight) : -listViewPadding + Math.max(0, listViewPadding - itemHeight)); + if (forceZeroHeight && !reversed) { + newTranslationY += listView.computeVerticalScrollOffset(); // getMeasuredHeight() - containerTop; + } + setVisibility(View.VISIBLE); + if (listViewTranslationAnimator != null) { + listViewTranslationAnimator.cancel(); + } + if (animated) { + listViewHiding = forceZeroHeight; + final float fromTranslation = listView.getTranslationY(); + final float toTranslation = newTranslationY; + final float fromHideT = hideT; + final float toHideT = forceZeroHeight ? 1 : 0; + if (fromTranslation == toTranslation) { + listViewTranslationAnimator = null; + setVisibility(forceZeroHeight ? View.GONE : View.VISIBLE); + if (switchLayoutManagerOnEnd && forceZeroHeight) { + switchLayoutManagerOnEnd = false; + listView.setLayoutManager(getNeededLayoutManager()); + updateVisibility(shown = true); + } + } else { + listViewTranslationAnimator = + new SpringAnimation(new FloatValueHolder(fromTranslation)) + .setSpring( + new SpringForce(toTranslation) + .setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY) + .setStiffness(550.0f) + ); +// listViewTranslationAnimator = new SpringAnimation(listView, DynamicAnimation.TRANSLATION_Y, newTranslationY); +// listViewTranslationAnimator.getSpring().setStiffness(1500); +// listViewTranslationAnimator.getSpring().setDampingRatio(1); + listViewTranslationAnimator.addUpdateListener((anm, val, vel) -> { + listView.setTranslationY(val); + hideT = AndroidUtilities.lerp(fromHideT, toHideT, (val - fromTranslation) / (toTranslation - fromTranslation)); + }); + if (forceZeroHeight) { + listViewTranslationAnimator.addEndListener((a, cancelled, b, c) -> { + if (!cancelled) { + listViewTranslationAnimator = null; + setVisibility(forceZeroHeight ? View.GONE : View.VISIBLE); + if (switchLayoutManagerOnEnd && forceZeroHeight) { + switchLayoutManagerOnEnd = false; + listView.setLayoutManager(getNeededLayoutManager()); + updateVisibility(shown = true); + } + } + }); + } + listViewTranslationAnimator.start(); + } + } else { + hideT = forceZeroHeight ? 1 : 0; + listView.setTranslationY(newTranslationY); + if (forceZeroHeight) { + setVisibility(View.GONE); +// adapter.clear(true); + } + } + } + + public class MentionsListView extends RecyclerListView { + private boolean isScrolling, isDragging; + + public MentionsListView(Context context, Theme.ResourcesProvider resourcesProvider) { + super(context, resourcesProvider); + setOnScrollListener(new RecyclerView.OnScrollListener() { + + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + isScrolling = newState != RecyclerView.SCROLL_STATE_IDLE; + isDragging = newState == RecyclerView.SCROLL_STATE_DRAGGING; + } + + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + int lastVisibleItem; + if (getLayoutManager() == gridLayoutManager) { + lastVisibleItem = gridLayoutManager.findLastVisibleItemPosition(); + } else { + lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition(); + } + int visibleItemCount = lastVisibleItem == RecyclerView.NO_POSITION ? 0 : lastVisibleItem; + if (visibleItemCount > 0 && lastVisibleItem > adapter.getLastItemCount() - 5) { + adapter.searchForContextBotForNextOffset(); + } + } + }); + addItemDecoration(new RecyclerView.ItemDecoration() { + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + outRect.left = 0; + outRect.right = 0; + outRect.top = 0; + outRect.bottom = 0; + if (parent.getLayoutManager() == gridLayoutManager) { + int position = parent.getChildAdapterPosition(view); + if (position == 0) { + return; + } + position--; + if (adapter.isStickers()) { + return; + } else if (adapter.getBotContextSwitch() != null) { + if (position == 0) { + return; + } + position--; + if (!gridLayoutManager.isFirstRow(position)) { + outRect.top = AndroidUtilities.dp(2); + } + } else { + outRect.top = AndroidUtilities.dp(2); + } + outRect.right = gridLayoutManager.isLastInRow(position) ? 0 : AndroidUtilities.dp(2); + } + } + }); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + if (linearLayoutManager.getReverseLayout()) { + if (!isDragging && paddedAdapter != null && paddedAdapter.paddingView != null && paddedAdapter.paddingViewAttached && event.getY() > paddedAdapter.paddingView.getTop()) { + return false; + } + } else { + if (!isDragging && paddedAdapter != null && paddedAdapter.paddingView != null && paddedAdapter.paddingViewAttached && event.getY() < paddedAdapter.paddingView.getBottom()) { + return false; + } + } + boolean result = !isScrolling && ContentPreviewViewer.getInstance().onInterceptTouchEvent(event, listView, 0, null, resourcesProvider); + if (adapter.isStickers() && event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) { + adapter.doSomeStickersAction(); + } + return super.onInterceptTouchEvent(event) || result; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (linearLayoutManager.getReverseLayout()) { + if (!isDragging && paddedAdapter != null && paddedAdapter.paddingView != null && paddedAdapter.paddingViewAttached && event.getY() > paddedAdapter.paddingView.getTop()) { + return false; + } + } else { + if (!isDragging && paddedAdapter != null && paddedAdapter.paddingView != null && paddedAdapter.paddingViewAttached && event.getY() < paddedAdapter.paddingView.getBottom()) { + return false; + } + } + return super.onTouchEvent(event); + } + + @Override + public void requestLayout() { + if (ignoreLayout) { + return; + } + super.requestLayout(); + } + + private int lastWidth; + private int lastHeight; + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + int width = r - l; + int height = b - t; + + int position = -1, offset = 0; + boolean reversed = isReversed(); + LinearLayoutManager layoutManager = getCurrentLayoutManager(); + position = reversed ? layoutManager.findFirstVisibleItemPosition() : layoutManager.findLastVisibleItemPosition(); + View child = layoutManager.findViewByPosition(position); + if (child != null) { + offset = child.getTop() - (reversed ? 0 : lastHeight - height); + } + + super.onLayout(changed, l, t, r, b); + + if (scrollToFirst) { + ignoreLayout = true; + layoutManager.scrollToPositionWithOffset(0, 100000); + super.onLayout(false, l, t, r, b); + ignoreLayout = false; + scrollToFirst = false; + } else if (position != -1 && width == lastWidth && height - lastHeight != 0) { + ignoreLayout = true; + layoutManager.scrollToPositionWithOffset(position, offset, false); + super.onLayout(false, l, t, r, b); + ignoreLayout = false; + } + + lastHeight = height; + lastWidth = width; + } + + @Override + public void setTranslationY(float translationY) { + super.setTranslationY(translationY); + MentionsContainerView.this.invalidate(); + } + + @Override + protected void onMeasure(int widthSpec, int heightSpec) { + int height = MeasureSpec.getSize(heightSpec); + if (paddedAdapter != null) { + paddedAdapter.setPadding(height); + } + listViewPadding = (int) Math.min(AndroidUtilities.dp(36 * 3.5f), AndroidUtilities.displaySize.y * 0.22f); + super.onMeasure(widthSpec, MeasureSpec.makeMeasureSpec(height + (int) listViewPadding, MeasureSpec.EXACTLY)); + } + + @Override + public void onScrolled(int dx, int dy) { + super.onScrolled(dx, dy); + MentionsContainerView.this.invalidate(); + } + } + + private Paint getThemedPaint(String paintKey) { + Paint paint = resourcesProvider.getPaint(paintKey); + return paint != null ? paint : Theme.getThemePaint(paintKey); + } + + private int getThemedColor(String key) { + Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null; + return color != null ? color : Theme.getColor(key); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/MotionBackgroundDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/MotionBackgroundDrawable.java index 816fc0ca2..7e5f1a891 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/MotionBackgroundDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/MotionBackgroundDrawable.java @@ -76,6 +76,7 @@ public class MotionBackgroundDrawable extends Drawable { private Bitmap patternBitmap; private BitmapShader bitmapShader; private BitmapShader gradientShader; + private boolean disableGradientShaderScaling; private Matrix matrix; private boolean fastAnimation; @@ -377,12 +378,15 @@ public class MotionBackgroundDrawable extends Drawable { } public void setPatternBitmap(int intensity) { - setPatternBitmap(intensity, patternBitmap); + setPatternBitmap(intensity, patternBitmap, true); + } + public void setPatternBitmap(int intensity, Bitmap bitmap) { + setPatternBitmap(intensity, bitmap, true); } @SuppressLint("NewApi") - public void setPatternBitmap(int intensity, Bitmap bitmap) { + public void setPatternBitmap(int intensity, Bitmap bitmap, boolean doNotScale) { this.intensity = intensity; patternBitmap = bitmap; invalidateLegacy = true; @@ -399,8 +403,10 @@ public class MotionBackgroundDrawable extends Drawable { if (intensity < 0) { if (!useLegacyBitmap) { bitmapShader = new BitmapShader(currentBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); - gradientShader = new BitmapShader(patternBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + gradientShader = new BitmapShader(patternBitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); + disableGradientShaderScaling = doNotScale; paint2.setShader(new ComposeShader(bitmapShader, gradientShader, PorterDuff.Mode.DST_IN)); + paint2.setFilterBitmap(true); matrix = new Matrix(); } else { createLegacyBitmap(); @@ -428,6 +434,7 @@ public class MotionBackgroundDrawable extends Drawable { this.patternAlpha = alpha; invalidateParent(); } + public void setBackgroundAlpha(float alpha) { this.backgroundAlpha = alpha; invalidateParent(); @@ -625,8 +632,10 @@ public class MotionBackgroundDrawable extends Drawable { height = bitmapHeight * maxScale; x = (w - width) / 2; y = (h - height) / 2; - matrix.setTranslate(x, y + tr); - matrix.preScale(maxScale, maxScale); + matrix.setTranslate((int) x, (int) (y + tr)); + if (!disableGradientShaderScaling || maxScale > 1.4f || maxScale < 0.8f) { + matrix.preScale(maxScale, maxScale); + } gradientShader.setLocalMatrix(matrix); paint2.setColorFilter(null); paint2.setAlpha((int) ((Math.abs(intensity) / 100f) * alpha * patternAlpha)); @@ -758,8 +767,10 @@ public class MotionBackgroundDrawable extends Drawable { height = bitmapHeight * maxScale; x = (w - width) / 2; y = (h - height) / 2; - matrix.setTranslate(x, y + tr); - matrix.preScale(maxScale, maxScale); + matrix.setTranslate((int) x, (int) (y + tr)); + if (!disableGradientShaderScaling || maxScale > 1.4f || maxScale < 0.8f) { + matrix.preScale(maxScale, maxScale); + } gradientShader.setLocalMatrix(matrix); paint2.setColorFilter(null); paint2.setAlpha((int) ((Math.abs(intensity) / 100f) * alpha * patternAlpha)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/NumberPicker.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/NumberPicker.java index 29f8077be..8bc11e338 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/NumberPicker.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/NumberPicker.java @@ -22,10 +22,12 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Align; +import android.os.Build; import android.text.TextUtils; import android.util.SparseArray; import android.util.TypedValue; import android.view.Gravity; +import android.view.HapticFeedbackConstants; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.VelocityTracker; @@ -856,6 +858,11 @@ public class NumberPicker extends LinearLayout { int previous = mValue; mValue = current; updateInputTextView(); + if (Math.abs(previous - current) > 0.9f && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { + try { + performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } catch (Exception ignore) {} + } if (notifyChange) { notifyChange(previous, current); } @@ -863,7 +870,7 @@ public class NumberPicker extends LinearLayout { invalidate(); } - private void changeValueByOne(boolean increment) { + protected void changeValueByOne(boolean increment) { mInputText.setVisibility(View.INVISIBLE); if (!moveToFinalScrollerPosition(mFlingScroller)) { moveToFinalScrollerPosition(mAdjustScroller); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/NumberTextView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/NumberTextView.java index 358316546..52bbcaca8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/NumberTextView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/NumberTextView.java @@ -19,6 +19,7 @@ import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; import org.telegram.messenger.AndroidUtilities; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/OtherDocumentPlaceholderDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/OtherDocumentPlaceholderDrawable.java index c1c29648a..63f0dd1a5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/OtherDocumentPlaceholderDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/OtherDocumentPlaceholderDrawable.java @@ -18,6 +18,7 @@ import org.telegram.messenger.ImageLoader; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; import org.telegram.tgnet.TLRPC; import java.io.File; @@ -266,7 +267,7 @@ public class OtherDocumentPlaceholderDrawable extends RecyclableDrawable impleme String fileName = null; File cacheFile; if (TextUtils.isEmpty(parentMessageObject.messageOwner.attachPath) || !(new File(parentMessageObject.messageOwner.attachPath).exists())) { - cacheFile = FileLoader.getPathToMessage(parentMessageObject.messageOwner); + cacheFile = FileLoader.getInstance(UserConfig.selectedAccount).getPathToMessage(parentMessageObject.messageOwner); if (!cacheFile.exists()) { fileName = FileLoader.getAttachFileName(parentMessageObject.getDocument()); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/OverlayActionBarLayoutDialog.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/OverlayActionBarLayoutDialog.java new file mode 100644 index 000000000..a65634d5d --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/OverlayActionBarLayoutDialog.java @@ -0,0 +1,150 @@ +package org.telegram.ui.Components; + +import android.app.Dialog; +import android.content.Context; +import android.graphics.Color; +import android.os.Build; +import android.os.Bundle; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.FrameLayout; + +import androidx.annotation.NonNull; +import androidx.core.graphics.ColorUtils; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.ActionBarLayout; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; + +import java.util.ArrayList; + +public class OverlayActionBarLayoutDialog extends Dialog implements ActionBarLayout.ActionBarLayoutDelegate { + private Theme.ResourcesProvider resourcesProvider; + private ActionBarLayout actionBarLayout; + private FrameLayout frameLayout; + + public OverlayActionBarLayoutDialog(@NonNull Context context, Theme.ResourcesProvider resourcesProvider) { + super(context, R.style.TransparentDialog); + this.resourcesProvider = resourcesProvider; + + actionBarLayout = new ActionBarLayout(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (AndroidUtilities.isTablet() && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isSmallTablet()) { + super.onMeasure(MeasureSpec.makeMeasureSpec(Math.min(AndroidUtilities.dp(530), MeasureSpec.getSize(widthMeasureSpec)), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(Math.min(AndroidUtilities.dp(528), MeasureSpec.getSize(heightMeasureSpec)), MeasureSpec.EXACTLY)); + } else { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + } + }; + actionBarLayout.init(new ArrayList<>()); + actionBarLayout.presentFragment(new EmptyFragment(), false, true, false, false); + actionBarLayout.setDelegate(this); + + frameLayout = new FrameLayout(context); + frameLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + frameLayout.addView(actionBarLayout, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, Gravity.CENTER)); + if (AndroidUtilities.isTablet() && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isSmallTablet()) { + frameLayout.setBackgroundColor(0x99000000); + frameLayout.setOnClickListener(v -> onBackPressed()); + actionBarLayout.setRemoveActionBarExtraHeight(true); + VerticalPositionAutoAnimator.attach(actionBarLayout); + } + setContentView(frameLayout); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Window window = getWindow(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + } + window.setWindowAnimations(R.style.DialogNoAnimation); + + WindowManager.LayoutParams params = window.getAttributes(); + params.width = ViewGroup.LayoutParams.MATCH_PARENT; + params.gravity = Gravity.TOP | Gravity.LEFT; + params.dimAmount = 0; + params.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND; + params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; + params.height = ViewGroup.LayoutParams.MATCH_PARENT; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + params.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; + } + window.setAttributes(params); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + window.setStatusBarColor(Color.TRANSPARENT); + } + + frameLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + frameLayout.setOnApplyWindowInsetsListener((v, insets) -> { + v.setPadding(0, 0, 0, insets.getSystemWindowInsetBottom()); + return insets; + }); + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + int color = Theme.getColor(Theme.key_windowBackgroundWhite, null, true); + AndroidUtilities.setLightNavigationBar(window, ColorUtils.calculateLuminance(color) >= 0.9); + } + } + + public void addFragment(BaseFragment fragment) { + actionBarLayout.presentFragment(fragment, AndroidUtilities.isTablet() && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isSmallTablet()); + } + + @Override + public void onBackPressed() { + actionBarLayout.onBackPressed(); + if (actionBarLayout.fragmentsStack.size() <= 1) { + dismiss(); + } + } + + @Override + public boolean onPreIme() { + return false; + } + + @Override + public boolean needPresentFragment(BaseFragment fragment, boolean removeLast, boolean forceWithoutAnimation, ActionBarLayout layout) { + return true; + } + + @Override + public boolean needAddFragmentToStack(BaseFragment fragment, ActionBarLayout layout) { + return true; + } + + @Override + public boolean needCloseLastFragment(ActionBarLayout layout) { + if (layout.fragmentsStack.size() <= 1) { + dismiss(); + } + return true; + } + + @Override + public void onRebuildAllFragments(ActionBarLayout layout, boolean last) {} + + private static final class EmptyFragment extends BaseFragment { + @Override + public View createView(Context context) { + actionBar.setAddToContainer(false); + View v = new View(context); + v.setBackgroundColor(Color.TRANSPARENT); + return v; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Painting.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Painting.java index 8cf2fead4..e15b1a4a5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Painting.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Painting.java @@ -215,7 +215,7 @@ public class Painting { GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, getTexture()); - GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); GLES20.glActiveTexture(GLES20.GL_TEXTURE1); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, getPaintTexture()); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/ShaderSet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/ShaderSet.java index 0bf3a9b62..a8da41094 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/ShaderSet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/ShaderSet.java @@ -15,7 +15,7 @@ public class ShaderSet { private static final String UNIFORMS = "uniforms"; private static final String PAINT_BRUSH_VSH = "precision highp float; uniform mat4 mvpMatrix; attribute vec4 inPosition; attribute vec2 inTexcoord; attribute float alpha; varying vec2 varTexcoord; varying float varIntensity; void main (void) { gl_Position = mvpMatrix * inPosition; varTexcoord = inTexcoord; varIntensity = alpha; }"; - private static final String PAINT_BRUSH_FSH = "precision highp float; varying vec2 varTexcoord; varying float varIntensity; uniform sampler2D texture; void main (void) { gl_FragColor = vec4(0, 0, 0, varIntensity * texture2D(texture, varTexcoord.st, 0.0).r); }"; + private static final String PAINT_BRUSH_FSH = "precision highp float; varying vec2 varTexcoord; varying float varIntensity; uniform sampler2D texture; void main (void) { gl_FragColor = vec4(1, 1, 1, varIntensity * texture2D(texture, varTexcoord.st, 0.0).r); }"; private static final String PAINT_BRUSHLIGHT_FSH = "precision highp float; varying vec2 varTexcoord; varying float varIntensity; uniform sampler2D texture; void main (void) { vec4 f = texture2D(texture, varTexcoord.st, 0.0); gl_FragColor = vec4(f.r * varIntensity, f.g, f.b, 0.0); }"; private static final String PAINT_BLIT_VSH = "precision highp float; uniform mat4 mvpMatrix; attribute vec4 inPosition; attribute vec2 inTexcoord; varying vec2 varTexcoord; void main (void) { gl_Position = mvpMatrix * inPosition; varTexcoord = inTexcoord; }"; private static final String PAINT_BLIT_FSH = "precision highp float; varying vec2 varTexcoord; uniform sampler2D texture; void main (void) { gl_FragColor = texture2D(texture, varTexcoord.st, 0.0); gl_FragColor.rgb *= gl_FragColor.a; }"; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Texture.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Texture.java index 284d86338..274acc267 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Texture.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Texture.java @@ -1,8 +1,11 @@ package org.telegram.ui.Components.Paint; import android.graphics.Bitmap; +import android.graphics.Color; import android.opengl.GLES20; +import androidx.core.graphics.ColorUtils; + import org.telegram.ui.Components.Size; import java.nio.ByteBuffer; @@ -52,7 +55,7 @@ public class Texture { GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE); - GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); int width = bitmap.getWidth(); @@ -86,7 +89,7 @@ public class Texture { GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE); - GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); int width = (int) size.width; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/ColorPicker.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/ColorPicker.java index 1b6b87983..ff09b3bbf 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/ColorPicker.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/ColorPicker.java @@ -20,6 +20,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.Paint.Swatch; @@ -66,7 +67,7 @@ public class ColorPicker extends FrameLayout { 1.0f }; - private ImageView settingsButton; + public ImageView settingsButton; private ImageView undoButton; private Drawable shadowDrawable; @@ -90,6 +91,7 @@ public class ColorPicker extends FrameLayout { swatchStrokePaint.setStrokeWidth(AndroidUtilities.dp(1)); settingsButton = new ImageView(context); + settingsButton.setContentDescription(LocaleController.getString("AccDescrBrushType", R.string.AccDescrBrushType)); settingsButton.setScaleType(ImageView.ScaleType.CENTER); settingsButton.setImageResource(R.drawable.photo_paint_brush); addView(settingsButton, LayoutHelper.createFrame(46, 52)); @@ -100,6 +102,7 @@ public class ColorPicker extends FrameLayout { }); undoButton = new ImageView(context); + undoButton.setContentDescription(LocaleController.getString("Undo", R.string.Undo)); undoButton.setScaleType(ImageView.ScaleType.CENTER); undoButton.setImageResource(R.drawable.photo_undo); addView(undoButton, LayoutHelper.createFrame(46, 52)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/EditTextOutline.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/EditTextOutline.java index 8e5e78cc5..08900ccc7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/EditTextOutline.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/EditTextOutline.java @@ -129,6 +129,10 @@ public class EditTextOutline extends EditTextBoldCursor { if (mFrameColor != 0) { paint.setColor(mFrameColor); Layout sl = getLayout(); + if (sl == null) { + super.onDraw(canvas); + return; + } if (lines == null || lines.length != sl.getLineCount()) { lines = new float[sl.getLineCount()]; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PaintingOverlay.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PaintingOverlay.java index 8a7587146..715b89997 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PaintingOverlay.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PaintingOverlay.java @@ -13,6 +13,7 @@ import android.text.Layout; import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; +import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.FrameLayout; @@ -25,11 +26,14 @@ import org.telegram.tgnet.TLRPC; import org.telegram.ui.Components.Paint.Views.EditTextOutline; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; public class PaintingOverlay extends FrameLayout { private Bitmap paintBitmap; - private ArrayList mediaEntities; + private HashMap mediaEntityViews; private boolean ignoreLayout; private Drawable backgroundDrawable; @@ -38,6 +42,7 @@ public class PaintingOverlay extends FrameLayout { } public void setData(String paintPath, ArrayList entities, boolean isVideo, boolean startAfterSet) { + setEntities(entities, isVideo, startAfterSet); if (paintPath != null) { paintBitmap = BitmapFactory.decodeFile(paintPath); setBackground(backgroundDrawable = new BitmapDrawable(paintBitmap)); @@ -45,28 +50,28 @@ public class PaintingOverlay extends FrameLayout { paintBitmap = null; setBackground(backgroundDrawable = null); } - setEntities(entities, isVideo, startAfterSet); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { ignoreLayout = true; setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); - if (mediaEntities != null) { + if (mediaEntityViews != null) { int width = getMeasuredWidth(); int height = getMeasuredHeight(); - for (int a = 0, N = mediaEntities.size(); a < N; a++) { - VideoEditedInfo.MediaEntity entity = mediaEntities.get(a); - if (entity.view == null) { + for (int a = 0, N = getChildCount(); a < N; a++) { + View child = getChildAt(a); + VideoEditedInfo.MediaEntity entity = mediaEntityViews.get(child); + if (entity == null) { continue; } - if (entity.view instanceof EditTextOutline) { - entity.view.measure(MeasureSpec.makeMeasureSpec(entity.viewWidth, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); + if (child instanceof EditTextOutline) { + child.measure(MeasureSpec.makeMeasureSpec(entity.viewWidth, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); float sc = entity.textViewWidth * width / entity.viewWidth; - entity.view.setScaleX(entity.scale * sc); - entity.view.setScaleY(entity.scale * sc); + child.setScaleX(entity.scale * sc); + child.setScaleY(entity.scale * sc); } else { - entity.view.measure(MeasureSpec.makeMeasureSpec((int) (width * entity.width), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec((int) (height * entity.height), MeasureSpec.EXACTLY)); + child.measure(MeasureSpec.makeMeasureSpec((int) (width * entity.width), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec((int) (height * entity.height), MeasureSpec.EXACTLY)); } } } @@ -98,28 +103,37 @@ public class PaintingOverlay extends FrameLayout { @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - if (mediaEntities != null) { + if (mediaEntityViews != null) { int width = getMeasuredWidth(); int height = getMeasuredHeight(); - for (int a = 0, N = mediaEntities.size(); a < N; a++) { - VideoEditedInfo.MediaEntity entity = mediaEntities.get(a); - if (entity.view == null) { + for (int a = 0, N = getChildCount(); a < N; a++) { + View child = getChildAt(a); + VideoEditedInfo.MediaEntity entity = mediaEntityViews.get(child); + if (entity == null) { continue; } - int x; - int y; - if (entity.view instanceof EditTextOutline) { - x = (int) (width * entity.textViewX) - entity.view.getMeasuredWidth() / 2; - y = (int) (height * entity.textViewY) - entity.view.getMeasuredHeight() / 2; + int x, y; + if (child instanceof EditTextOutline) { + x = (int) (width * entity.textViewX) - child.getMeasuredWidth() / 2; + y = (int) (height * entity.textViewY) - child.getMeasuredHeight() / 2; } else { x = (int) (width * entity.x); y = (int) (height * entity.y); } - entity.view.layout(x, y, x + entity.view.getMeasuredWidth(), y + entity.view.getMeasuredHeight()); + child.layout(x, y, x + child.getMeasuredWidth(), y + child.getMeasuredHeight()); } } } + public void reset() { + paintBitmap = null; + setBackground(backgroundDrawable = null); + if (mediaEntityViews != null) { + mediaEntityViews.clear(); + } + removeAllViews(); + } + public void showAll() { int count = getChildCount(); for (int a = 0; a < count; a++) { @@ -140,11 +154,12 @@ public class PaintingOverlay extends FrameLayout { } public void setEntities(ArrayList entities, boolean isVideo, boolean startAfterSet) { - mediaEntities = entities; - removeAllViews(); + reset(); + mediaEntityViews = new HashMap<>(); if (entities != null && !entities.isEmpty()) { - for (int a = 0, N = mediaEntities.size(); a < N; a++) { - VideoEditedInfo.MediaEntity entity = mediaEntities.get(a); + for (int a = 0, N = entities.size(); a < N; a++) { + VideoEditedInfo.MediaEntity entity = entities.get(a); + View child = null; if (entity.type == 0) { BackupImageView imageView = new BackupImageView(getContext()); imageView.setAspectFit(true); @@ -168,7 +183,7 @@ public class PaintingOverlay extends FrameLayout { if ((entity.subType & 2) != 0) { imageView.setScaleX(-1); } - entity.view = imageView; + entity.view = child = imageView; } else if (entity.type == 1) { EditTextOutline editText = new EditTextOutline(getContext()) { @Override @@ -211,10 +226,13 @@ public class PaintingOverlay extends FrameLayout { editText.setFrameColor(0); editText.setShadowLayer(5, 0, 1, 0x66000000); } - entity.view = editText; + entity.view = child = editText; + } + if (child != null) { + addView(child); + child.setRotation((float) (-entity.rotation / Math.PI * 180)); + mediaEntityViews.put(child, entity); } - addView(entity.view); - entity.view.setRotation((float) (-entity.rotation / Math.PI * 180)); } } } @@ -233,6 +251,13 @@ public class PaintingOverlay extends FrameLayout { if (backgroundDrawable != null) { backgroundDrawable.setAlpha((int) (255 * alpha)); } + final int count = getChildCount(); + for (int i = 0; i < count; ++i) { + View child = getChildAt(i); + if (child != null && child.getParent() == this) { + child.setAlpha(alpha); + } + } } public Bitmap getThumb() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhonebookShareAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhonebookShareAlert.java index f061beef1..008f0f2df 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhonebookShareAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhonebookShareAlert.java @@ -37,6 +37,8 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; +import androidx.core.widget.NestedScrollView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.ContactsController; @@ -56,8 +58,6 @@ import java.io.File; import java.util.ArrayList; import java.util.Locale; -import androidx.core.widget.NestedScrollView; - public class PhonebookShareAlert extends BottomSheet { private ListAdapter listAdapter; @@ -556,13 +556,13 @@ public class PhonebookShareAlert extends BottomSheet { final Bulletin.SimpleLayout layout = new Bulletin.SimpleLayout(context, resourcesProvider); if (item.type == 0) { layout.textView.setText(LocaleController.getString("PhoneCopied", R.string.PhoneCopied)); - layout.imageView.setImageResource(R.drawable.menu_calls); + layout.imageView.setImageResource(R.drawable.msg_calls); } else if (item.type == 1) { layout.textView.setText(LocaleController.getString("EmailCopied", R.string.EmailCopied)); - layout.imageView.setImageResource(R.drawable.menu_mail); + layout.imageView.setImageResource(R.drawable.msg_mention); } else { layout.textView.setText(LocaleController.getString("TextCopied", R.string.TextCopied)); - layout.imageView.setImageResource(R.drawable.menu_info); + layout.imageView.setImageResource(R.drawable.msg_info); } if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { Bulletin.make((FrameLayout) containerView, layout, Bulletin.DURATION_SHORT).show(); @@ -1056,29 +1056,29 @@ public class PhonebookShareAlert extends BottomSheet { int icon; if (position >= phoneStartRow && position < phoneEndRow) { item = phones.get(position - phoneStartRow); - icon = R.drawable.menu_calls; + icon = R.drawable.msg_calls; } else { item = other.get(position - vcardStartRow); if (item.type == 1) { - icon = R.drawable.menu_mail; + icon = R.drawable.msg_mention; } else if (item.type == 2) { - icon = R.drawable.menu_location; + icon = R.drawable.msg_location; } else if (item.type == 3) { icon = R.drawable.msg_link; } else if (item.type == 4) { - icon = R.drawable.profile_info; + icon = R.drawable.msg_info; } else if (item.type == 5) { - icon = R.drawable.menu_date; + icon = R.drawable.msg_calendar2; } else if (item.type == 6) { if ("ORG".equalsIgnoreCase(item.getRawType(true))) { - icon = R.drawable.menu_work; + icon = R.drawable.msg_work; } else { - icon = R.drawable.menu_jobtitle; + icon = R.drawable.msg_jobtitle; } } else if (item.type == 20) { - icon = R.drawable.menu_info; + icon = R.drawable.msg_info; } else { - icon = R.drawable.menu_info; + icon = R.drawable.msg_info; } } cell.setVCardItem(item, icon, position != getItemCount() - 1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoCropView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoCropView.java index 093010cfa..14cf98032 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoCropView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoCropView.java @@ -43,12 +43,15 @@ public class PhotoCropView extends FrameLayout { void onTapUp(); int getVideoThumbX(); void onVideoThumbClick(); + boolean rotate(); + boolean mirror(); } private PhotoCropViewDelegate delegate; - private CropView cropView; - private CropRotationWheel wheelView; + public boolean isReset = true; + public CropView cropView; + public CropRotationWheel wheelView; private boolean inBubbleMode; @@ -100,6 +103,7 @@ public class PhotoCropView extends FrameLayout { cropView.setListener(new CropView.CropViewListener() { @Override public void onChange(boolean reset) { + isReset = reset; if (delegate != null) { delegate.onChange(reset); } @@ -139,6 +143,7 @@ public class PhotoCropView extends FrameLayout { @Override public void onChange(float angle) { cropView.setRotation(angle); + isReset = false; if (delegate != null) { delegate.onChange(false); } @@ -156,12 +161,18 @@ public class PhotoCropView extends FrameLayout { @Override public boolean rotate90Pressed() { - return rotate(); + if (delegate != null) { + return delegate.rotate(); + } + return false; } @Override public boolean mirror() { - return PhotoCropView.this.mirror(); + if (delegate != null) { + return delegate.mirror(); + } + return false; } }); addView(wheelView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER | Gravity.BOTTOM, 0, 0, 0, 0)); @@ -218,11 +229,11 @@ public class PhotoCropView extends FrameLayout { return result; } - public boolean rotate() { + public boolean rotate(float diff) { if (wheelView != null) { wheelView.reset(false); } - return cropView.rotate90Degrees(); + return cropView.rotate(diff); } public boolean mirror() { @@ -315,8 +326,12 @@ public class PhotoCropView extends FrameLayout { } public void reset() { + reset(false); + } + + public void reset(boolean force) { wheelView.reset(true); - cropView.reset(); + cropView.reset(force); } public void onAppear() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoFilterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoFilterView.java index d2192e4a1..68462e682 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoFilterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoFilterView.java @@ -28,6 +28,9 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; @@ -41,9 +44,6 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - @SuppressLint("NewApi") public class PhotoFilterView extends FrameLayout implements FilterShaders.FilterShadersDelegate { @@ -442,7 +442,7 @@ public class PhotoFilterView extends FrameLayout implements FilterShaders.Filter tuneItem = new ImageView(context); tuneItem.setScaleType(ImageView.ScaleType.CENTER); - tuneItem.setImageResource(R.drawable.photo_tools); + tuneItem.setImageResource(R.drawable.msg_photo_settings); tuneItem.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); tuneItem.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); linearLayout.addView(tuneItem, LayoutHelper.createLinear(56, 48)); @@ -456,7 +456,7 @@ public class PhotoFilterView extends FrameLayout implements FilterShaders.Filter blurItem = new ImageView(context); blurItem.setScaleType(ImageView.ScaleType.CENTER); - blurItem.setImageResource(R.drawable.tool_blur); + blurItem.setImageResource(R.drawable.msg_photo_blur); blurItem.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); linearLayout.addView(blurItem, LayoutHelper.createLinear(56, 48)); blurItem.setOnClickListener(v -> { @@ -472,7 +472,7 @@ public class PhotoFilterView extends FrameLayout implements FilterShaders.Filter curveItem = new ImageView(context); curveItem.setScaleType(ImageView.ScaleType.CENTER); - curveItem.setImageResource(R.drawable.tool_curve); + curveItem.setImageResource(R.drawable.msg_photo_curve); curveItem.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); linearLayout.addView(curveItem, LayoutHelper.createLinear(56, 48)); curveItem.setOnClickListener(v -> { @@ -624,35 +624,35 @@ public class PhotoFilterView extends FrameLayout implements FilterShaders.Filter private void updateSelectedBlurType() { if (blurType == 0) { - Drawable drawable = blurOffButton.getContext().getResources().getDrawable(R.drawable.blur_off).mutate(); + Drawable drawable = blurOffButton.getContext().getResources().getDrawable(R.drawable.msg_blur_off).mutate(); drawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); blurOffButton.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null); blurOffButton.setTextColor(getThemedColor(Theme.key_dialogFloatingButton)); - blurRadialButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.blur_radial, 0, 0); + blurRadialButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.msg_blur_radial, 0, 0); blurRadialButton.setTextColor(0xffffffff); - blurLinearButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.blur_linear, 0, 0); + blurLinearButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.msg_blur_linear, 0, 0); blurLinearButton.setTextColor(0xffffffff); } else if (blurType == 1) { - blurOffButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.blur_off, 0, 0); + blurOffButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.msg_blur_off, 0, 0); blurOffButton.setTextColor(0xffffffff); - Drawable drawable = blurOffButton.getContext().getResources().getDrawable(R.drawable.blur_radial).mutate(); + Drawable drawable = blurOffButton.getContext().getResources().getDrawable(R.drawable.msg_blur_radial).mutate(); drawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); blurRadialButton.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null); blurRadialButton.setTextColor(getThemedColor(Theme.key_dialogFloatingButton)); - blurLinearButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.blur_linear, 0, 0); + blurLinearButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.msg_blur_linear, 0, 0); blurLinearButton.setTextColor(0xffffffff); } else if (blurType == 2) { - blurOffButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.blur_off, 0, 0); + blurOffButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.msg_blur_off, 0, 0); blurOffButton.setTextColor(0xffffffff); - blurRadialButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.blur_radial, 0, 0); + blurRadialButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.msg_blur_radial, 0, 0); blurRadialButton.setTextColor(0xffffffff); - Drawable drawable = blurOffButton.getContext().getResources().getDrawable(R.drawable.blur_linear).mutate(); + Drawable drawable = blurOffButton.getContext().getResources().getDrawable(R.drawable.msg_blur_linear).mutate(); drawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); blurLinearButton.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null); blurLinearButton.setTextColor(getThemedColor(Theme.key_dialogFloatingButton)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoPaintView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoPaintView.java index aec222dbd..463aea3b0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoPaintView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoPaintView.java @@ -8,6 +8,7 @@ import android.app.Activity; import android.content.Context; import android.graphics.*; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Looper; import android.text.TextUtils; @@ -38,6 +39,7 @@ import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; import org.telegram.messenger.VideoEditedInfo; import org.telegram.tgnet.TLRPC; @@ -86,6 +88,7 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView private EntitiesContainerView entitiesView; private FrameLayout dimView; private FrameLayout textDimView; + private FrameLayout backgroundView; private FrameLayout selectionContainerView; private ColorPicker colorPicker; @@ -218,6 +221,13 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView textDimView.setVisibility(GONE); textDimView.setOnClickListener(v -> closeTextEnter(true)); + backgroundView = new FrameLayout(context); +// backgroundView.setBackgroundColor(0x7f000000); + Drawable backgroundDrawable = getResources().getDrawable(R.drawable.gradient_bottom).mutate(); + backgroundDrawable.setColorFilter(new PorterDuffColorFilter(0xff000000, PorterDuff.Mode.MULTIPLY)); + backgroundView.setBackground(backgroundDrawable); + addView(backgroundView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 72, Gravity.FILL_HORIZONTAL | Gravity.BOTTOM)); + selectionContainerView = new FrameLayout(context) { @Override public boolean onTouchEvent(MotionEvent event) { @@ -295,21 +305,23 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView paintButton = new ImageView(context); paintButton.setScaleType(ImageView.ScaleType.CENTER); - paintButton.setImageResource(R.drawable.photo_paint); + paintButton.setContentDescription(LocaleController.getString("AccDescrPaint", R.string.AccDescrPaint)); + paintButton.setImageResource(R.drawable.msg_photo_draw); paintButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); toolsView.addView(paintButton, LayoutHelper.createFrame(54, LayoutHelper.MATCH_PARENT, Gravity.CENTER, 0, 0, 56, 0)); paintButton.setOnClickListener(v -> selectEntity(null)); ImageView stickerButton = new ImageView(context); stickerButton.setScaleType(ImageView.ScaleType.CENTER); - stickerButton.setImageResource(R.drawable.photo_sticker); + stickerButton.setImageResource(R.drawable.msg_sticker); stickerButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); toolsView.addView(stickerButton, LayoutHelper.createFrame(54, LayoutHelper.MATCH_PARENT, Gravity.CENTER)); stickerButton.setOnClickListener(v -> openStickersView()); ImageView textButton = new ImageView(context); textButton.setScaleType(ImageView.ScaleType.CENTER); - textButton.setImageResource(R.drawable.photo_paint_text); + textButton.setContentDescription(LocaleController.getString("AccDescrPlaceText", R.string.AccDescrPlaceText)); + textButton.setImageResource(R.drawable.msg_photo_text); textButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); toolsView.addView(textButton, LayoutHelper.createFrame(54, LayoutHelper.MATCH_PARENT, Gravity.CENTER, 56, 0, 0, 0)); textButton.setOnClickListener(v -> createText(true)); @@ -406,13 +418,16 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView private void updateSettingsButton() { int resource = R.drawable.photo_paint_brush; + colorPicker.settingsButton.setContentDescription(LocaleController.getString("AccDescrBrushType", R.string.AccDescrBrushType)); if (currentEntityView != null) { if (currentEntityView instanceof StickerView) { - resource = R.drawable.photo_flip; + resource = R.drawable.msg_photo_flip; + colorPicker.settingsButton.setContentDescription(LocaleController.getString("AccDescrMirror", R.string.AccDescrMirror)); } else if (currentEntityView instanceof TextPaintView) { resource = R.drawable.photo_outline; + colorPicker.settingsButton.setContentDescription(LocaleController.getString("PaintOutlined", R.string.PaintOutlined)); } - paintButton.setImageResource(R.drawable.photo_paint); + paintButton.setImageResource(R.drawable.msg_photo_draw); paintButton.setColorFilter(null); } else { if (brushSwatch != null) { @@ -420,8 +435,9 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView brushSwatch = null; } paintButton.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); - paintButton.setImageResource(R.drawable.photo_paint); + paintButton.setImageResource(R.drawable.msg_photo_draw); } + backgroundView.setVisibility(currentEntityView instanceof TextPaintView ? View.INVISIBLE : View.VISIBLE); colorPicker.setSettingsButtonImage(resource); } @@ -460,6 +476,10 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView return toolsView; } + public FrameLayout getColorPickerBackground() { + return backgroundView; + } + public FrameLayout getCurtainView() { return curtainView; } @@ -518,7 +538,7 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView mediaEntity.document = stickerView.getSticker(); mediaEntity.parentObject = stickerView.getParentObject(); TLRPC.Document document = stickerView.getSticker(); - mediaEntity.text = FileLoader.getPathToAttach(document, true).getAbsolutePath(); + mediaEntity.text = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true).getAbsolutePath(); if (MessageObject.isAnimatedStickerDocument(document, true) || MessageObject.isVideoStickerDocument(document)) { boolean isAnimatedSticker = MessageObject.isAnimatedStickerDocument(document, true); mediaEntity.subType |= isAnimatedSticker ? 1 : 4; @@ -733,6 +753,7 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView colorPicker.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.EXACTLY)); toolsView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(48), MeasureSpec.EXACTLY)); curtainView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.EXACTLY)); + backgroundView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(72), MeasureSpec.EXACTLY)); ignoreLayout = false; } @@ -759,6 +780,7 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView colorPicker.layout(0, actionBarHeight2, colorPicker.getMeasuredWidth(), actionBarHeight2 + colorPicker.getMeasuredHeight()); toolsView.layout(0, height - toolsView.getMeasuredHeight(), toolsView.getMeasuredWidth(), height); curtainView.layout(0, y, curtainView.getMeasuredWidth(), y + curtainView.getMeasuredHeight()); + backgroundView.layout(0, height - AndroidUtilities.dp(45) - backgroundView.getMeasuredHeight(), backgroundView.getMeasuredWidth(), height - AndroidUtilities.dp(45)); } @Override @@ -960,8 +982,12 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView tx = trX; ty = trY; } - view.setScaleX(scale * additionlScale); - view.setScaleY(scale * additionlScale); + float finalScale = scale * additionlScale; + if (Float.isNaN(finalScale)) { + finalScale = 1f; + } + view.setScaleX(finalScale); + view.setScaleY(finalScale); view.setTranslationX(tx); view.setTranslationY(ty); view.setRotation(rotation); @@ -1456,7 +1482,7 @@ public class PhotoPaintView extends FrameLayout implements EntityView.EntityView popupWindow.dismiss(); } }); - popupLayout.setShownFromBotton(true); + popupLayout.setShownFromBottom(true); } popupLayout.removeInnerViews(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java index 708ec63a7..5bd23c8cf 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java @@ -28,14 +28,11 @@ import android.text.TextWatcher; import android.text.style.ImageSpan; import android.util.TypedValue; import android.view.ActionMode; -import android.view.DragEvent; import android.view.Gravity; import android.view.KeyEvent; import android.view.Menu; -import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.ExtractedText; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; @@ -44,10 +41,10 @@ import androidx.core.graphics.ColorUtils; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.Emoji; +import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; -import org.telegram.messenger.FileLog; import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; import org.telegram.messenger.UserConfig; @@ -60,7 +57,7 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica private final ImageView doneButton; public int getCaptionLimitOffset() { - return captionMaxLength - codePointCount; + return MessagesController.getInstance(currentAccount).getCaptionMaxLengthLimit() - codePointCount; } public interface PhotoViewerCaptionEnterViewDelegate { @@ -100,7 +97,6 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica private boolean innerTextChange; private boolean popupAnimating; - private int captionMaxLength = 1024; private int codePointCount; private PhotoViewerCaptionEnterViewDelegate delegate; @@ -114,6 +110,7 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica private TextPaint lengthTextPaint; private String lengthText; private final Theme.ResourcesProvider resourcesProvider; + public int currentAccount = UserConfig.selectedAccount; public PhotoViewerCaptionEnterView(Context context, SizeNotifierFrameLayoutPhoto parent, final View window, Theme.ResourcesProvider resourcesProvider) { super(context); @@ -275,7 +272,7 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica @Override public void afterTextChanged(Editable editable) { - int charactersLeft = captionMaxLength - messageEditText.length(); + int charactersLeft = MessagesController.getInstance(currentAccount).getCaptionMaxLengthLimit() - messageEditText.length(); if (charactersLeft <= 128) { lengthText = String.format("%d", charactersLeft); } else { @@ -296,7 +293,7 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica int beforeLimit; codePointCount = Character.codePointCount(editable, 0, editable.length()); boolean sendButtonEnabledLocal = true; - if (captionMaxLength > 0 && (beforeLimit = captionMaxLength - codePointCount) <= 100) { + if (MessagesController.getInstance(currentAccount).getCaptionMaxLengthLimit() > 0 && (beforeLimit = MessagesController.getInstance(currentAccount).getCaptionMaxLengthLimit() - codePointCount) <= 100) { if (beforeLimit < -9999) { beforeLimit = -9999; } @@ -351,7 +348,7 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica doneButton.setImageDrawable(combinedDrawable); textFieldContainer.addView(doneButton, LayoutHelper.createLinear(48, 48, Gravity.BOTTOM)); doneButton.setOnClickListener(view -> { - if (captionMaxLength - codePointCount < 0) { + if (MessagesController.getInstance(currentAccount).getCaptionMaxLengthLimit() - codePointCount < 0) { AndroidUtilities.shakeView(captionLimitView, 2, 0); Vibrator v = (Vibrator) captionLimitView.getContext().getSystemService(Context.VIBRATOR_SERVICE); if (v != null) { @@ -370,6 +367,7 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica captionLimitView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); captionLimitView.setCenterAlign(true); addView(captionLimitView, LayoutHelper.createFrame(48, 20, Gravity.BOTTOM | Gravity.RIGHT, 3, 0, 3, 48)); + currentAccount = UserConfig.selectedAccount; } private void onLineCountChanged(int lineCountOld, int lineCountNew) { @@ -496,6 +494,7 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica public void onCreate() { NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.emojiLoaded); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.currentUserPremiumStatusChanged); sizeNotifierLayout.setDelegate(this); } @@ -506,6 +505,7 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica } keyboardVisible = false; NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.emojiLoaded); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.currentUserPremiumStatusChanged); if (sizeNotifierLayout != null) { sizeNotifierLayout.setDelegate(null); } @@ -524,7 +524,6 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica if (delegate != null) { delegate.onTextChanged(messageEditText.getText()); } - captionMaxLength = MessagesController.getInstance(UserConfig.selectedAccount).maxCaptionLength; } public int getSelectionLength() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerWebView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerWebView.java index 9e6fb69f6..ff4da892d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerWebView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerWebView.java @@ -252,8 +252,12 @@ public class PhotoViewerWebView extends FrameLayout { return progressBar.getVisibility() != View.VISIBLE; } + public boolean isInAppOnly() { + return isYouTube && "inapp".equals(MessagesController.getInstance(currentAccount).youtubePipType); + } + public boolean openInPip() { - boolean inAppOnly = isYouTube && "inapp".equals(MessagesController.getInstance(currentAccount).youtubePipType); + boolean inAppOnly = isInAppOnly(); if (!inAppOnly && !checkInlinePermissions()) { return false; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PickerBottomLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PickerBottomLayout.java index 919be0a34..0bc16e85e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PickerBottomLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PickerBottomLayout.java @@ -28,21 +28,27 @@ public class PickerBottomLayout extends FrameLayout { public TextView cancelButton; public TextView doneButtonTextView; public TextView doneButtonBadgeTextView; + private Theme.ResourcesProvider resourcesProvider; public PickerBottomLayout(Context context) { - this(context, true); + this(context, true, null); } public PickerBottomLayout(Context context, boolean darkTheme) { - super(context); + this(context, darkTheme, null); + } - setBackgroundColor(Theme.getColor(darkTheme ? Theme.key_dialogBackground : Theme.key_windowBackgroundWhite)); + public PickerBottomLayout(Context context, boolean darkTheme, Theme.ResourcesProvider resourcesProvider) { + super(context); + this.resourcesProvider = resourcesProvider; + + setBackgroundColor(Theme.getColor(darkTheme ? Theme.key_dialogBackground : Theme.key_windowBackgroundWhite, resourcesProvider)); cancelButton = new TextView(context); cancelButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - cancelButton.setTextColor(Theme.getColor(Theme.key_picker_enabledButton)); + cancelButton.setTextColor(Theme.getColor(Theme.key_picker_enabledButton, resourcesProvider)); cancelButton.setGravity(Gravity.CENTER); - cancelButton.setBackgroundDrawable(Theme.createSelectorDrawable(0x0f000000, 0)); + cancelButton.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_picker_enabledButton, resourcesProvider) & 0x0fffffff, 0)); cancelButton.setPadding(AndroidUtilities.dp(33), 0, AndroidUtilities.dp(33), 0); cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase()); cancelButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -50,16 +56,16 @@ public class PickerBottomLayout extends FrameLayout { doneButton = new LinearLayout(context); doneButton.setOrientation(LinearLayout.HORIZONTAL); - doneButton.setBackgroundDrawable(Theme.createSelectorDrawable(0x0f000000, 0)); + doneButton.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_picker_enabledButton, resourcesProvider) & 0x0fffffff, 0)); doneButton.setPadding(AndroidUtilities.dp(33), 0, AndroidUtilities.dp(33), 0); addView(doneButton, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.RIGHT)); doneButtonBadgeTextView = new TextView(context); doneButtonBadgeTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); doneButtonBadgeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); - doneButtonBadgeTextView.setTextColor(Theme.getColor(Theme.key_picker_badgeText)); + doneButtonBadgeTextView.setTextColor(Theme.getColor(Theme.key_picker_badgeText, resourcesProvider)); doneButtonBadgeTextView.setGravity(Gravity.CENTER); - Drawable drawable = Theme.createRoundRectDrawable(AndroidUtilities.dp(11), Theme.getColor(Theme.key_picker_badge)); + Drawable drawable = Theme.createRoundRectDrawable(AndroidUtilities.dp(11), Theme.getColor(Theme.key_picker_badge, resourcesProvider)); doneButtonBadgeTextView.setBackgroundDrawable(drawable); doneButtonBadgeTextView.setMinWidth(AndroidUtilities.dp(23)); doneButtonBadgeTextView.setPadding(AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8), AndroidUtilities.dp(1)); @@ -67,7 +73,7 @@ public class PickerBottomLayout extends FrameLayout { doneButtonTextView = new TextView(context); doneButtonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - doneButtonTextView.setTextColor(Theme.getColor(Theme.key_picker_enabledButton)); + doneButtonTextView.setTextColor(Theme.getColor(Theme.key_picker_enabledButton, resourcesProvider)); doneButtonTextView.setGravity(Gravity.CENTER); doneButtonTextView.setCompoundDrawablePadding(AndroidUtilities.dp(8)); doneButtonTextView.setText(LocaleController.getString("Send", R.string.Send).toUpperCase()); @@ -81,18 +87,18 @@ public class PickerBottomLayout extends FrameLayout { if (disable) { doneButtonTextView.setTag(Theme.key_picker_disabledButton); - doneButtonTextView.setTextColor(Theme.getColor(Theme.key_picker_disabledButton)); + doneButtonTextView.setTextColor(Theme.getColor(Theme.key_picker_disabledButton, resourcesProvider)); doneButton.setEnabled(false); } else { doneButtonTextView.setTag(Theme.key_picker_enabledButton); - doneButtonTextView.setTextColor(Theme.getColor(Theme.key_picker_enabledButton)); + doneButtonTextView.setTextColor(Theme.getColor(Theme.key_picker_enabledButton, resourcesProvider)); } } else { doneButtonBadgeTextView.setVisibility(View.VISIBLE); doneButtonBadgeTextView.setText(String.format("%d", count)); doneButtonTextView.setTag(Theme.key_picker_enabledButton); - doneButtonTextView.setTextColor(Theme.getColor(Theme.key_picker_enabledButton)); + doneButtonTextView.setTextColor(Theme.getColor(Theme.key_picker_enabledButton, resourcesProvider)); if (disable) { doneButton.setEnabled(true); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PipVideoOverlay.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PipVideoOverlay.java index 95396a278..589981a04 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PipVideoOverlay.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PipVideoOverlay.java @@ -22,7 +22,6 @@ import android.graphics.Path; import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.os.Build; -import android.view.GestureDetector; import android.view.Gravity; import android.view.MotionEvent; import android.view.ScaleGestureDetector; @@ -36,12 +35,13 @@ import android.widget.FrameLayout; import android.widget.ImageView; import androidx.core.math.MathUtils; -import androidx.core.view.GestureDetectorCompat; import androidx.dynamicanimation.animation.DynamicAnimation; import androidx.dynamicanimation.animation.FloatPropertyCompat; import androidx.dynamicanimation.animation.SpringAnimation; import androidx.dynamicanimation.animation.SpringForce; +import com.google.android.exoplayer2.C; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.R; @@ -87,7 +87,7 @@ public class PipVideoOverlay { private FrameLayout controlsView; private ScaleGestureDetector scaleGestureDetector; - private GestureDetectorCompat gestureDetector; + private GestureDetectorFixDoubleTap gestureDetector; private boolean isScrolling; private boolean isScrollDisallowed; private View consumingChild; @@ -103,12 +103,7 @@ public class PipVideoOverlay { private boolean isVisible; - private boolean postedDismissControls; - private Runnable dismissControlsCallback = () -> { - toggleControls(isShowingControls = false); - postedDismissControls = false; - }; - + private VideoForwardDrawable videoForwardDrawable = new VideoForwardDrawable(false); private int mVideoWidth, mVideoHeight; private EmbedBottomSheet parentSheet; private PhotoViewer photoViewer; @@ -134,6 +129,86 @@ public class PipVideoOverlay { AndroidUtilities.runOnUIThread(this.progressRunnable, 500); }; + private boolean canLongClick; + private float[] longClickStartPoint = new float[2]; + private Runnable longClickCallback = this::onLongClick; + + private boolean postedDismissControls; + private Runnable dismissControlsCallback = () -> { + if (photoViewer != null && photoViewer.getVideoPlayerRewinder().rewindCount > 0) { + AndroidUtilities.runOnUIThread(this.dismissControlsCallback, 1500); + return; + } + toggleControls(isShowingControls = false); + postedDismissControls = false; + }; + + public static void onRewindCanceled() { + instance.onRewindCanceledInternal(); + } + + private void onRewindCanceledInternal() { + videoForwardDrawable.setShowing(false); + } + + public static void onUpdateRewindProgressUi(long timeDiff, float progress, boolean rewindByBackSeek) { + instance.onUpdateRewindProgressUiInternal(timeDiff, progress, rewindByBackSeek); + } + + private void onUpdateRewindProgressUiInternal(long timeDiff, float progress, boolean rewindByBackSeek) { + videoForwardDrawable.setTime(0); + if (rewindByBackSeek) { + videoProgress = progress; + + if (videoProgressView != null) { + videoProgressView.invalidate(); + } + if (controlsView != null) { + controlsView.invalidate(); + } + } + } + + public static void onRewindStart(boolean rewindForward) { + instance.onRewindStartInternal(rewindForward); + } + + private void onRewindStartInternal(boolean rewindForward) { + videoForwardDrawable.setOneShootAnimation(false); + videoForwardDrawable.setLeftSide(!rewindForward); + videoForwardDrawable.setShowing(true); + if (videoProgressView != null) { + videoProgressView.invalidate(); + } + if (controlsView != null) { + controlsView.invalidate(); + } + } + + protected void onLongClick() { + if (photoViewer == null || photoViewer.getVideoPlayer() == null || isDismissing || isVideoCompleted || isScrolling || scaleGestureDetector.isInProgress() || !canLongClick) { + return; + } + + VideoPlayer videoPlayer = photoViewer.getVideoPlayer(); + boolean forward = longClickStartPoint[0] >= getSuggestedWidth() * scaleFactor * 0.5f; + + long current = videoPlayer.getCurrentPosition(); + long total = videoPlayer.getDuration(); + if (current == C.TIME_UNSET || total < 15 * 1000) { + return; + } + + photoViewer.getVideoPlayerRewinder().startRewind(videoPlayer, forward, photoViewer.getCurrentVideoSpeed()); + + if (!isShowingControls) { + toggleControls(isShowingControls = true); + if (!postedDismissControls) { + AndroidUtilities.runOnUIThread(dismissControlsCallback, 1500); + postedDismissControls = true; + } + } + } private PipConfig getPipConfig() { if (pipConfig == null) { @@ -170,6 +245,7 @@ public class PipVideoOverlay { aspectRatio = mVideoHeight / (float) mVideoWidth; maxScaleFactor = (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) - AndroidUtilities.dp(SIDE_PADDING_DP * 2)) / (float) getSuggestedWidth(); + videoForwardDrawable.setPlayScaleFactor(aspectRatio < 1 ? 0.6f : 0.45f); } return aspectRatio; } @@ -264,6 +340,20 @@ public class PipVideoOverlay { isScrolling = false; isVisible = false; isDismissing = false; + canLongClick = false; + + cancelRewind(); + AndroidUtilities.cancelRunOnUIThread(longClickCallback); + } + + private void cancelRewind() { + if (photoViewer == null) { + return; + } + + if (photoViewer.getVideoPlayerRewinder().rewindCount > 0) { + photoViewer.getVideoPlayerRewinder().cancelRewind(); + } } public static void updatePlayButton() { @@ -436,6 +526,9 @@ public class PipVideoOverlay { public boolean onScaleBegin(ScaleGestureDetector detector) { if (isScrolling) { isScrolling = false; + canLongClick = false; + cancelRewind(); + AndroidUtilities.cancelRunOnUIThread(longClickCallback); } isScrollDisallowed = true; windowLayoutParams.width = (int) (getSuggestedWidth() * maxScaleFactor); @@ -489,7 +582,7 @@ public class PipVideoOverlay { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { scaleGestureDetector.setStylusScaleEnabled(false); } - gestureDetector = new GestureDetectorCompat(context, new GestureDetector.SimpleOnGestureListener() { + gestureDetector = new GestureDetectorFixDoubleTap(context, new GestureDetectorFixDoubleTap.OnGestureListener() { private float startPipX, startPipY; @Override @@ -510,7 +603,7 @@ public class PipVideoOverlay { } @Override - public boolean onSingleTapUp(MotionEvent e) { + public boolean onSingleTapConfirmed(MotionEvent e) { if (controlsAnimator != null) { return true; } @@ -531,6 +624,78 @@ public class PipVideoOverlay { return true; } + @Override + public boolean onDoubleTap(MotionEvent e) { + if (photoViewer == null || photoViewer.getVideoPlayer() == null || isDismissing || isVideoCompleted || isScrolling || scaleGestureDetector.isInProgress() || !canLongClick) { + return false; + } + + VideoPlayer videoPlayer = photoViewer.getVideoPlayer(); + boolean forward = e.getX() >= getSuggestedWidth() * scaleFactor * 0.5f; + + long current = videoPlayer.getCurrentPosition(); + long total = videoPlayer.getDuration(); + if (current == C.TIME_UNSET || total < 15 * 1000) { + return false; + } + + long old = current; + if (forward) { + current += 10000; + } else { + current -= 10000; + } + if (old != current) { + boolean apply = true; + if (current > total) { + current = total; + } else if (current < 0) { + if (current < -9000) { + apply = false; + } + current = 0; + } + if (apply) { + videoForwardDrawable.setOneShootAnimation(true); + videoForwardDrawable.setLeftSide(!forward); + videoForwardDrawable.addTime(10000); + videoPlayer.seekTo(current); + onUpdateRewindProgressUiInternal(forward ? 10000 : -10000, current / (float) total, true); + if (!isShowingControls) { + toggleControls(isShowingControls = true); + if (!postedDismissControls) { + postedDismissControls = true; + AndroidUtilities.runOnUIThread(dismissControlsCallback, 2500); + } + } + } + return true; + } + + return false; + } + + @Override + public boolean onSingleTapUp(MotionEvent e) { + if (!hasDoubleTap()) { + return onSingleTapConfirmed(e); + } + return super.onSingleTapUp(e); + } + + @Override + public boolean hasDoubleTap() { + if (photoViewer == null || photoViewer.getVideoPlayer() == null || isDismissing || isVideoCompleted || isScrolling || scaleGestureDetector.isInProgress() || !canLongClick) { + return false; + } + + VideoPlayer videoPlayer = photoViewer.getVideoPlayer(); + + long current = videoPlayer.getCurrentPosition(); + long total = videoPlayer.getDuration(); + return current != C.TIME_UNSET && total >= 15 * 1000; + } + @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (isScrolling && !isScrollDisallowed) { @@ -558,6 +723,10 @@ public class PipVideoOverlay { pipXSpring.cancel(); pipYSpring.cancel(); + + canLongClick = false; + cancelRewind(); + AndroidUtilities.cancelRunOnUIThread(longClickCallback); } } if (isScrolling) { @@ -606,14 +775,32 @@ public class PipVideoOverlay { @Override public boolean dispatchTouchEvent(MotionEvent ev) { - int action = ev.getAction(); + int action = ev.getActionMasked(); + if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN) { + if (ev.getPointerCount() == 1) { + canLongClick = true; + longClickStartPoint = new float[]{ev.getX(), ev.getY()}; + AndroidUtilities.runOnUIThread(longClickCallback, 500); + } else { + canLongClick = false; + cancelRewind(); + AndroidUtilities.cancelRunOnUIThread(longClickCallback); + } + } + + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_POINTER_UP) { + canLongClick = false; + cancelRewind(); + AndroidUtilities.cancelRunOnUIThread(longClickCallback); + } + if (consumingChild != null) { MotionEvent newEvent = MotionEvent.obtain(ev); newEvent.offsetLocation(consumingChild.getX(), consumingChild.getY()); boolean consumed = consumingChild.dispatchTouchEvent(ev); newEvent.recycle(); - if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_POINTER_UP) { consumingChild = null; } @@ -626,7 +813,7 @@ public class PipVideoOverlay { boolean scaleDetector = scaleGestureDetector.onTouchEvent(temp); temp.recycle(); boolean detector = !scaleGestureDetector.isInProgress() && gestureDetector.onTouchEvent(ev); - if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_POINTER_UP) { isScrolling = false; isScrollDisallowed = false; @@ -734,7 +921,25 @@ public class PipVideoOverlay { } contentFrameLayout.addView(innerView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); - controlsView = new FrameLayout(context); + videoForwardDrawable.setDelegate(new VideoForwardDrawable.VideoForwardDrawableDelegate() { + @Override + public void onAnimationEnd() {} + + @Override + public void invalidate() { + controlsView.invalidate(); + } + }); + controlsView = new FrameLayout(context) { + @Override + protected void onDraw(Canvas canvas) { + if (videoForwardDrawable.isAnimating()) { + videoForwardDrawable.setBounds(getLeft(), getTop(), getRight(), getBottom()); + videoForwardDrawable.draw(canvas); + } + } + }; + controlsView.setWillNotDraw(false); controlsView.setAlpha(0f); View scrim = new View(context); scrim.setBackgroundColor(0x4C000000); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PipVideoView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PipVideoView.java deleted file mode 100644 index d1e4f983b..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PipVideoView.java +++ /dev/null @@ -1,667 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 5.x.x. - * It is licensed under GNU GPL v. 2 or later. - * You should have received a copy of the license in this archive (see LICENSE). - * - * Copyright Nikolai Kudashov, 2013-2018. - */ - -package org.telegram.ui.Components; - -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; -import android.app.Activity; -import android.content.Context; -import android.content.SharedPreferences; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.PixelFormat; -import android.os.Build; -import androidx.annotation.Keep; -import android.view.Gravity; -import android.view.MotionEvent; -import android.view.TextureView; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewParent; -import android.view.WindowManager; -import android.view.animation.DecelerateInterpolator; -import android.webkit.WebView; -import android.widget.FrameLayout; -import android.widget.ImageView; - -import com.google.android.exoplayer2.ui.AspectRatioFrameLayout; - -import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ApplicationLoader; -import org.telegram.messenger.FileLog; -import org.telegram.messenger.R; -import org.telegram.ui.ActionBar.ActionBar; -import org.telegram.ui.PhotoViewer; - -import java.util.ArrayList; - -public class PipVideoView { - - private FrameLayout windowView; - private EmbedBottomSheet parentSheet; - private PhotoViewer photoViewer; - private Activity parentActivity; - private View controlsView; - private int videoWidth; - private int videoHeight; - - private boolean isInAppOnly; - - private WindowManager.LayoutParams windowLayoutParams; - private WindowManager windowManager; - private SharedPreferences preferences; - private DecelerateInterpolator decelerateInterpolator; - - private AnimatorSet animatorSet; - - private class MiniControlsView extends FrameLayout { - - private Paint progressPaint; - private Paint progressInnerPaint; - private boolean isVisible = true; - private AnimatorSet currentAnimation; - private ImageView playButton; - private float progress; - private boolean isCompleted; - private float bufferedPosition; - - private Runnable hideRunnable = () -> show(false, true); - - private Runnable progressRunnable = new Runnable() { - @Override - public void run() { - if (photoViewer == null) { - return; - } - VideoPlayer videoPlayer = photoViewer.getVideoPlayer(); - if (videoPlayer == null) { - return; - } - setProgress(videoPlayer.getCurrentPosition() / (float) videoPlayer.getDuration()); - if (photoViewer == null) { - setBufferedProgress(videoPlayer.getBufferedPosition() / (float) videoPlayer.getDuration()); - } - - AndroidUtilities.runOnUIThread(progressRunnable, 1000); - } - }; - - public MiniControlsView(Context context, boolean fullControls) { - super(context); - - ImageView inlineButton = new ImageView(context); - inlineButton.setScaleType(ImageView.ScaleType.CENTER); - inlineButton.setImageResource(R.drawable.ic_outinline); - addView(inlineButton, LayoutHelper.createFrame(56, 48, Gravity.RIGHT | Gravity.TOP)); - inlineButton.setOnClickListener(v -> { - if (parentSheet != null) { - parentSheet.exitFromPip(); - } else if (photoViewer != null) { - photoViewer.exitFromPip(); - } - }); - - if (fullControls) { - progressPaint = new Paint(); - progressPaint.setColor(0xff19a7e8); - progressInnerPaint = new Paint(); - progressInnerPaint.setColor(0xff959197); - - setWillNotDraw(false); - playButton = new ImageView(context); - playButton.setScaleType(ImageView.ScaleType.CENTER); - addView(playButton, LayoutHelper.createFrame(48, 48, Gravity.CENTER)); - playButton.setOnClickListener(v -> { - if (photoViewer == null) { - return; - } - VideoPlayer videoPlayer = photoViewer.getVideoPlayer(); - if (videoPlayer == null) { - return; - } - if (videoPlayer.isPlaying()) { - videoPlayer.pause(); - } else { - videoPlayer.play(); - } - updatePlayButton(); - }); - } - - setOnTouchListener((v, event) -> true); - updatePlayButton(); - show(false, false); - } - - private void updatePlayButton() { - if (photoViewer == null) { - return; - } - VideoPlayer videoPlayer = photoViewer.getVideoPlayer(); - if (videoPlayer == null) { - return; - } - AndroidUtilities.cancelRunOnUIThread(progressRunnable); - if (!videoPlayer.isPlaying()) { - if (isCompleted) { - playButton.setImageResource(R.drawable.ic_againinline); - } else { - playButton.setImageResource(R.drawable.ic_playinline); - } - } else { - playButton.setImageResource(R.drawable.ic_pauseinline); - AndroidUtilities.runOnUIThread(progressRunnable, 500); - } - } - - public void setBufferedProgress(float position) { - bufferedPosition = position; - invalidate(); - } - - public void setProgress(float value) { - progress = value; - invalidate(); - } - - public void show(boolean value, boolean animated) { - if (isVisible == value) { - return; - } - isVisible = value; - if (currentAnimation != null) { - currentAnimation.cancel(); - } - if (isVisible) { - if (animated) { - currentAnimation = new AnimatorSet(); - currentAnimation.playTogether(ObjectAnimator.ofFloat(this, View.ALPHA, 1.0f)); - currentAnimation.setDuration(150); - currentAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animator) { - currentAnimation = null; - } - }); - currentAnimation.start(); - } else { - setAlpha(1.0f); - } - } else { - if (animated) { - currentAnimation = new AnimatorSet(); - currentAnimation.playTogether(ObjectAnimator.ofFloat(this, View.ALPHA, 0.0f)); - currentAnimation.setDuration(150); - currentAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animator) { - currentAnimation = null; - } - }); - currentAnimation.start(); - } else { - setAlpha(0.0f); - } - } - checkNeedHide(); - } - - private void checkNeedHide() { - AndroidUtilities.cancelRunOnUIThread(hideRunnable); - if (isVisible) { - AndroidUtilities.runOnUIThread(hideRunnable, 3000); - } - } - - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - if (!isVisible) { - show(true, true); - return true; - } else { - checkNeedHide(); - } - } - return super.onInterceptTouchEvent(ev); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - if (currentAnimation != null) { - return true; - } - return super.onTouchEvent(event); - } - - @Override - public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) { - super.requestDisallowInterceptTouchEvent(disallowIntercept); - checkNeedHide(); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - checkNeedHide(); - } - - @Override - protected void onDraw(Canvas canvas) { - int width = getMeasuredWidth(); - int height = getMeasuredHeight(); - - int progressLineY = height - AndroidUtilities.dp(3); - int progressLineX = 0; - int cy = height - AndroidUtilities.dp(7); - int progressX = progressLineX + (int) ((width - progressLineX) * progress); - if (bufferedPosition != 0) { - canvas.drawRect(progressLineX, progressLineY, progressLineX + (width - progressLineX) * bufferedPosition, progressLineY + AndroidUtilities.dp(3), progressInnerPaint); - } - canvas.drawRect(progressLineX, progressLineY, progressX, progressLineY + AndroidUtilities.dp(3), progressPaint); - } - } - - public PipVideoView(boolean inAppOnly) { - isInAppOnly = inAppOnly; - } - - public TextureView show(Activity activity, EmbedBottomSheet sheet, View controls, float aspectRatio, int rotation, WebView webview) { - return show(activity, null, sheet, controls, aspectRatio, rotation, webview); - } - - public TextureView show(Activity activity, PhotoViewer viewer, float aspectRatio, int rotation, WebView webview) { - return show(activity, viewer, null, null, aspectRatio, rotation, webview); - } - - public TextureView show(Activity activity, PhotoViewer viewer, float aspectRatio, int rotation) { - return show(activity, viewer, null, null, aspectRatio, rotation, null); - } - - public TextureView show(Activity activity, PhotoViewer viewer, EmbedBottomSheet sheet, View controls, float aspectRatio, int rotation, WebView webview) { - - parentSheet = sheet; - parentActivity = activity; - photoViewer = viewer; - - windowView = new FrameLayout(activity) { - - private float startX; - private float startY; - private boolean dragging; - - @Override - public boolean dispatchTouchEvent(MotionEvent event) { - float x = event.getRawX(); - float y = event.getRawY(); - if (event.getAction() == MotionEvent.ACTION_DOWN) { - startX = x; - startY = y; - } else if (event.getAction() == MotionEvent.ACTION_MOVE && !dragging) { - if (Math.abs(startX - x) >= AndroidUtilities.getPixelsInCM(0.3f, true) || Math.abs(startY - y) >= AndroidUtilities.getPixelsInCM(0.3f, false)) { - dragging = true; - startX = x; - startY = y; - if (controlsView != null) { - ((ViewParent) controlsView).requestDisallowInterceptTouchEvent(true); - } - return true; - } - } - - if (dragging) { - if (event.getAction() == MotionEvent.ACTION_MOVE) { - float dx = (x - startX); - float dy = (y - startY); - windowLayoutParams.x += dx; - windowLayoutParams.y += dy; - int maxDiff = videoWidth / 2; - if (windowLayoutParams.x < -maxDiff) { - windowLayoutParams.x = -maxDiff; - } else if (windowLayoutParams.x > AndroidUtilities.displaySize.x - windowLayoutParams.width + maxDiff) { - windowLayoutParams.x = AndroidUtilities.displaySize.x - windowLayoutParams.width + maxDiff; - } - float alpha = 1.0f; - if (windowLayoutParams.x < 0) { - alpha = 1.0f + windowLayoutParams.x / (float) maxDiff * 0.5f; - } else if (windowLayoutParams.x > AndroidUtilities.displaySize.x - windowLayoutParams.width) { - alpha = 1.0f - (windowLayoutParams.x - AndroidUtilities.displaySize.x + windowLayoutParams.width) / (float) maxDiff * 0.5f; - } - if (windowView.getAlpha() != alpha) { - windowView.setAlpha(alpha); - } - maxDiff = 0; - if (windowLayoutParams.y < -maxDiff) { - windowLayoutParams.y = -maxDiff; - } else if (windowLayoutParams.y > AndroidUtilities.displaySize.y - windowLayoutParams.height + maxDiff) { - windowLayoutParams.y = AndroidUtilities.displaySize.y - windowLayoutParams.height + maxDiff; - } - windowManager.updateViewLayout(windowView, windowLayoutParams); - startX = x; - startY = y; - } else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { - dragging = false; - animateToBoundsMaybe(); - } - return true; - } else { - return super.dispatchTouchEvent(event); - } - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - if (animatorSet != null) { - animatorSet.cancel(); - animatorSet = null; - } - } - }; - - if (aspectRatio > 1) { - videoWidth = AndroidUtilities.dp(192); - videoHeight = (int) (videoWidth / aspectRatio); - } else { - videoHeight = AndroidUtilities.dp(192); - videoWidth = (int) (videoHeight * aspectRatio); - } - - AspectRatioFrameLayout aspectRatioFrameLayout = new AspectRatioFrameLayout(activity); - aspectRatioFrameLayout.setAspectRatio(aspectRatio, rotation); - windowView.addView(aspectRatioFrameLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER)); - - TextureView textureView; - if (webview != null) { - ViewGroup parent = (ViewGroup) webview.getParent(); - if (parent != null) { - parent.removeView(webview); - } - aspectRatioFrameLayout.addView(webview, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); - textureView = null; - } else { - textureView = new TextureView(activity); - aspectRatioFrameLayout.addView(textureView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); - } - - if (controls == null) { - controlsView = new MiniControlsView(activity, viewer != null); - } else { - controlsView = controls; - } - windowView.addView(controlsView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); - - if (isInAppOnly) { - windowManager = activity.getWindowManager(); - } else { - windowManager = (WindowManager) ApplicationLoader.applicationContext.getSystemService(Context.WINDOW_SERVICE); - } - - preferences = ApplicationLoader.applicationContext.getSharedPreferences("pipconfig", Context.MODE_PRIVATE); - - int sidex = preferences.getInt("sidex", 1); - int sidey = preferences.getInt("sidey", 0); - float px = preferences.getFloat("px", 0); - float py = preferences.getFloat("py", 0); - - try { - windowLayoutParams = new WindowManager.LayoutParams(); - windowLayoutParams.width = videoWidth; - windowLayoutParams.height = videoHeight; - windowLayoutParams.x = getSideCoord(true, sidex, px, videoWidth); - windowLayoutParams.y = getSideCoord(false, sidey, py, videoHeight); - windowLayoutParams.format = PixelFormat.TRANSLUCENT; - windowLayoutParams.gravity = Gravity.TOP | Gravity.LEFT; - if (isInAppOnly) { - windowLayoutParams.type = WindowManager.LayoutParams.LAST_APPLICATION_WINDOW; - } else { - if (Build.VERSION.SDK_INT >= 26) { - windowLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; - } else { - windowLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; - } - } - windowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; - windowManager.addView(windowView, windowLayoutParams); - } catch (Exception e) { - FileLog.e(e); - return null; - } - - return textureView; - } - - public void onVideoCompleted() { - if (controlsView instanceof MiniControlsView) { - MiniControlsView miniControlsView = (MiniControlsView) controlsView; - miniControlsView.isCompleted = true; - miniControlsView.progress = 0; - miniControlsView.bufferedPosition = 0; - miniControlsView.updatePlayButton(); - miniControlsView.invalidate(); - miniControlsView.show(true, true); - } - } - - public void setBufferedProgress(float progress) { - if (controlsView instanceof MiniControlsView) { - ((MiniControlsView) controlsView).setBufferedProgress(progress); - } - } - - public void updatePlayButton() { - if (controlsView instanceof MiniControlsView) { - MiniControlsView miniControlsView = (MiniControlsView) controlsView; - miniControlsView.updatePlayButton(); - miniControlsView.invalidate(); - } - } - - private static int getSideCoord(boolean isX, int side, float p, int sideSize) { - int total; - if (isX) { - total = AndroidUtilities.displaySize.x - sideSize; - } else { - total = AndroidUtilities.displaySize.y - sideSize - (ActionBar.getCurrentActionBarHeight() + AndroidUtilities.statusBarHeight); - } - int result; - if (side == 0) { - result = AndroidUtilities.dp(10); - } else if (side == 1) { - result = total - AndroidUtilities.dp(10); - } else { - result = Math.round((total - AndroidUtilities.dp(20)) * p) + AndroidUtilities.dp(10); - } - if (!isX) { - result += ActionBar.getCurrentActionBarHeight() + AndroidUtilities.statusBarHeight; - } - return result; - } - - public void close() { - try { - windowManager.removeView(windowView); - } catch (Exception e) { - //don't promt - } - parentSheet = null; - photoViewer = null; - parentActivity = null; - } - - public void onConfigurationChanged() { - int sidex = preferences.getInt("sidex", 1); - int sidey = preferences.getInt("sidey", 0); - float px = preferences.getFloat("px", 0); - float py = preferences.getFloat("py", 0); - windowLayoutParams.x = getSideCoord(true, sidex, px, videoWidth); - windowLayoutParams.y = getSideCoord(false, sidey, py, videoHeight); - windowManager.updateViewLayout(windowView, windowLayoutParams); - } - - private void animateToBoundsMaybe() { - int startX = getSideCoord(true, 0, 0, videoWidth); - int endX = getSideCoord(true, 1, 0, videoWidth); - int startY = getSideCoord(false, 0, 0, videoHeight); - int endY = getSideCoord(false, 1, 0, videoHeight); - ArrayList animators = null; - SharedPreferences.Editor editor = preferences.edit(); - int maxDiff = AndroidUtilities.dp(20); - boolean slideOut = false; - if (Math.abs(startX - windowLayoutParams.x) <= maxDiff || windowLayoutParams.x < 0 && windowLayoutParams.x > -videoWidth / 4) { - if (animators == null) { - animators = new ArrayList<>(); - } - editor.putInt("sidex", 0); - if (windowView.getAlpha() != 1.0f) { - animators.add(ObjectAnimator.ofFloat(windowView, View.ALPHA, 1.0f)); - } - animators.add(ObjectAnimator.ofInt(this, "x", startX)); - } else if (Math.abs(endX - windowLayoutParams.x) <= maxDiff || windowLayoutParams.x > AndroidUtilities.displaySize.x - videoWidth && windowLayoutParams.x < AndroidUtilities.displaySize.x - videoWidth / 4 * 3) { - if (animators == null) { - animators = new ArrayList<>(); - } - editor.putInt("sidex", 1); - if (windowView.getAlpha() != 1.0f) { - animators.add(ObjectAnimator.ofFloat(windowView, View.ALPHA, 1.0f)); - } - animators.add(ObjectAnimator.ofInt(this, "x", endX)); - } else if (windowView.getAlpha() != 1.0f) { - if (animators == null) { - animators = new ArrayList<>(); - } - if (windowLayoutParams.x < 0) { - animators.add(ObjectAnimator.ofInt(this, "x", -videoWidth)); - } else { - animators.add(ObjectAnimator.ofInt(this, "x", AndroidUtilities.displaySize.x)); - } - slideOut = true; - } else { - editor.putFloat("px", (windowLayoutParams.x - startX) / (float) (endX - startX)); - editor.putInt("sidex", 2); - } - if (!slideOut) { - if (Math.abs(startY - windowLayoutParams.y) <= maxDiff || windowLayoutParams.y <= (ActionBar.getCurrentActionBarHeight() + AndroidUtilities.statusBarHeight)) { - if (animators == null) { - animators = new ArrayList<>(); - } - editor.putInt("sidey", 0); - animators.add(ObjectAnimator.ofInt(this, "y", startY)); - } else if (Math.abs(endY - windowLayoutParams.y) <= maxDiff) { - if (animators == null) { - animators = new ArrayList<>(); - } - editor.putInt("sidey", 1); - animators.add(ObjectAnimator.ofInt(this, "y", endY)); - } else { - editor.putFloat("py", (windowLayoutParams.y - startY) / (float) (endY - startY)); - editor.putInt("sidey", 2); - } - editor.commit(); - } - if (animators != null) { - if (decelerateInterpolator == null) { - decelerateInterpolator = new DecelerateInterpolator(); - } - animatorSet = new AnimatorSet(); - animatorSet.setInterpolator(decelerateInterpolator); - animatorSet.setDuration(150); - if (slideOut) { - animators.add(ObjectAnimator.ofFloat(windowView, View.ALPHA, 0.0f)); - animatorSet.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - animatorSet = null; - if (parentSheet != null) { - parentSheet.destroy(); - } else if (photoViewer != null) { - photoViewer.destroyPhotoViewer(); - } - } - }); - } - animatorSet.playTogether(animators); - animatorSet.start(); - } - } - - public static Rect getPipRect(float aspectRatio) { - SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("pipconfig", Context.MODE_PRIVATE); - int sidex = preferences.getInt("sidex", 1); - int sidey = preferences.getInt("sidey", 0); - float px = preferences.getFloat("px", 0); - float py = preferences.getFloat("py", 0); - - int videoWidth; - int videoHeight; - if (aspectRatio > 1) { - videoWidth = AndroidUtilities.dp(192); - videoHeight = (int) (videoWidth / aspectRatio); - } else { - videoHeight = AndroidUtilities.dp(192); - videoWidth = (int) (videoHeight * aspectRatio); - } - - return new Rect(getSideCoord(true, sidex, px, videoWidth), getSideCoord(false, sidey, py, videoHeight), videoWidth, videoHeight); - } - - @Keep - public int getX() { - return windowLayoutParams.x; - } - - @Keep - public int getY() { - return windowLayoutParams.y; - } - - @Keep - public void setX(int value) { - windowLayoutParams.x = value; - try { - windowManager.updateViewLayout(windowView, windowLayoutParams); - } catch (Exception ignore) { - - } - } - - @Keep - public void setY(int value) { - windowLayoutParams.y = value; - try { - windowManager.updateViewLayout(windowView, windowLayoutParams); - } catch (Exception ignore) { - - } - } - - @Keep - public int getWidth() { - return windowLayoutParams.width; - } - - @Keep - public int getHeight() { - return windowLayoutParams.height; - } - - @Keep - public void setWidth(int value) { - windowLayoutParams.width = videoWidth = value; - windowManager.updateViewLayout(windowView, windowLayoutParams); - } - - @Keep - public void setHeight(int value) { - windowLayoutParams.height = videoHeight = value; - windowManager.updateViewLayout(windowView, windowLayoutParams); - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PollVotesAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PollVotesAlert.java index c6521c400..1fdc09f7a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PollVotesAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PollVotesAlert.java @@ -442,6 +442,7 @@ public class PollVotesAlert extends BottomSheet { public PollVotesAlert(ChatActivity parentFragment, MessageObject message) { super(parentFragment.getParentActivity(), true); + fixNavigationBar(); messageObject = message; chatActivity = parentFragment; TLRPC.TL_messageMediaPoll mediaPoll = (TLRPC.TL_messageMediaPoll) messageObject.messageOwner.media; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java index e08cb5a76..edebe846a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java @@ -283,7 +283,7 @@ public class PopupAudioView extends BaseCell implements SeekBar.SeekBarDelegate, public void updateButtonState() { String fileName = currentMessageObject.getFileName(); - File cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); + File cacheFile = FileLoader.getInstance(currentAccount).getPathToMessage(currentMessageObject.messageOwner); if (cacheFile.exists()) { DownloadController.getInstance(currentAccount).removeLoadingFileObserver(this); boolean playing = MediaController.getInstance().isPlayingMessage(currentMessageObject); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupSwipeBackLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupSwipeBackLayout.java index 5be49f989..c1b166ea0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupSwipeBackLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupSwipeBackLayout.java @@ -12,6 +12,7 @@ import android.graphics.Rect; import android.graphics.RectF; import android.util.SparseIntArray; import android.view.GestureDetector; +import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; @@ -56,6 +57,9 @@ public class PopupSwipeBackLayout extends FrameLayout { private int notificationIndex; Theme.ResourcesProvider resourcesProvider; + private int lastHeightReported = -1; + private IntCallback onHeightUpdateListener; + private Rect hitRect = new Rect(); public PopupSwipeBackLayout(@NonNull Context context, Theme.ResourcesProvider resourcesProvider) { @@ -146,11 +150,22 @@ public class PopupSwipeBackLayout extends FrameLayout { } public void invalidateTransforms() { + invalidateTransforms(true); + } - if (!onSwipeBackProgressListeners.isEmpty()) { - for (int i = 0; i < onSwipeBackProgressListeners.size(); i++) { - onSwipeBackProgressListeners.get(i).onSwipeBackProgress(this, toProgress, transitionProgress); + + float lastToProgress; + float lastTransitionProgress; + + public void invalidateTransforms(boolean applyBackScaleY) { + if (lastToProgress != toProgress || lastTransitionProgress != transitionProgress) { + if (!onSwipeBackProgressListeners.isEmpty()) { + for (int i = 0; i < onSwipeBackProgressListeners.size(); i++) { + onSwipeBackProgressListeners.get(i).onSwipeBackProgress(this, toProgress, transitionProgress); + } } + lastToProgress = toProgress; + lastTransitionProgress = transitionProgress; } View backgroundView = getChildAt(0); @@ -185,7 +200,9 @@ public class PopupSwipeBackLayout extends FrameLayout { h += p.getPaddingTop() + p.getPaddingBottom(); p.updateAnimation = false; p.setBackScaleX(w / p.getMeasuredWidth()); - p.setBackScaleY(h / p.getMeasuredHeight()); + if (applyBackScaleY) { + p.setBackScaleY(h / p.getMeasuredHeight()); + } p.updateAnimation = true; for (int i = 0; i < getChildCount(); i++) { @@ -197,12 +214,20 @@ public class PopupSwipeBackLayout extends FrameLayout { invalidate(); } + public boolean isForegroundOpen() { + return transitionProgress > 0; + } + @Override public boolean dispatchTouchEvent(MotionEvent ev) { - if (processTouchEvent(ev)) + if (processTouchEvent(ev)) { return true; - + } int act = ev.getActionMasked(); + if (mRect != null && !mRect.contains(ev.getX(), ev.getY()) && act == MotionEvent.ACTION_DOWN) { +// return false; + } + if (act == MotionEvent.ACTION_DOWN && !mRect.contains(ev.getX(), ev.getY())) { callOnClick(); return true; @@ -248,7 +273,9 @@ public class PopupSwipeBackLayout extends FrameLayout { if (isProcessingSwipe) { clearFlags(); animateToState(transitionProgress >= 0.5f ? 1 : 0, 0); - } else if (isSwipeDisallowed) clearFlags(); + } else if (isSwipeDisallowed) { + clearFlags(); + } return false; } } @@ -281,6 +308,9 @@ public class PopupSwipeBackLayout extends FrameLayout { public void onAnimationEnd(Animator animation) { NotificationCenter.getInstance(selectedAccount).onAnimationFinish(notificationIndex); transitionProgress = f; + if (f <= 0) { + currentForegroundIndex = -1; + } invalidateTransforms(); isAnimationInProgress = false; } @@ -313,7 +343,9 @@ public class PopupSwipeBackLayout extends FrameLayout { } public void closeForeground(boolean animated) { - if (isAnimationInProgress) return; + if (isAnimationInProgress) { + return; + } if (!animated) { currentForegroundIndex = -1; transitionProgress = 0; @@ -328,7 +360,12 @@ public class PopupSwipeBackLayout extends FrameLayout { protected void onLayout(boolean changed, int left, int top, int right, int bottom) { for (int i = 0; i < getChildCount(); i++) { View ch = getChildAt(i); - ch.layout(0, 0, ch.getMeasuredWidth(), ch.getMeasuredHeight()); + boolean shownFromBottom = ch.getLayoutParams() instanceof FrameLayout.LayoutParams && ((LayoutParams) ch.getLayoutParams()).gravity == Gravity.BOTTOM; + if (shownFromBottom) { + ch.layout(0, bottom - top - ch.getMeasuredHeight(), ch.getMeasuredWidth(), bottom - top); + } else { + ch.layout(0, 0, ch.getMeasuredWidth(), ch.getMeasuredHeight()); + } } } @@ -344,31 +381,48 @@ public class PopupSwipeBackLayout extends FrameLayout { return; } View backgroundView = getChildAt(0); - float fW = backgroundView.getMeasuredWidth(), fH = backgroundView.getMeasuredHeight(); - float w, h; + float fY = backgroundView.getTop(), fW = backgroundView.getMeasuredWidth(), fH = backgroundView.getMeasuredHeight(); + float y, w, h; if (currentForegroundIndex == -1 || currentForegroundIndex >= getChildCount()) { + y = fY; w = fW; h = fH; } else { View foregroundView = getChildAt(currentForegroundIndex); - float tW = foregroundView.getMeasuredWidth(), tH = overrideForegroundHeight != 0 ? overrideForegroundHeight : foregroundView.getMeasuredHeight(); + float tY = foregroundView.getTop(); + float tW = foregroundView.getMeasuredWidth(); + float tH = overrideForegroundHeight != 0 ? overrideForegroundHeight : foregroundView.getMeasuredHeight(); if (backgroundView.getMeasuredWidth() == 0 || backgroundView.getMeasuredHeight() == 0 || foregroundView.getMeasuredWidth() == 0 || foregroundView.getMeasuredHeight() == 0) { + y = fY; w = fW; h = fH; } else { - w = fW + (tW - fW) * transitionProgress; - h = fH + (tH - fH) * transitionProgress; + y = AndroidUtilities.lerp(fY, tY, transitionProgress); + w = AndroidUtilities.lerp(fW, tW, transitionProgress); + h = AndroidUtilities.lerp(fH, tH, transitionProgress); } } int s = canvas.save(); mPath.rewind(); int rad = AndroidUtilities.dp(6); - mRect.set(0, 0, w, h); + mRect.set(0, y, w, y + h); mPath.addRoundRect(mRect, rad, rad, Path.Direction.CW); canvas.clipPath(mPath); super.dispatchDraw(canvas); canvas.restoreToCount(s); + + if (onHeightUpdateListener != null && lastHeightReported != mRect.height()) { + onHeightUpdateListener.run(lastHeightReported = (int) mRect.height()); + } + } + + public interface IntCallback { + public void run(int height); + } + + public void setOnHeightUpdateListener(IntCallback onHeightUpdateListener) { + this.onHeightUpdateListener = onHeightUpdateListener; } /** @@ -413,7 +467,7 @@ public class PopupSwipeBackLayout extends FrameLayout { } } - public void setNewForegroundHeight(int index, int height) { + public void setNewForegroundHeight(int index, int height, boolean animated) { overrideHeightIndex.put(index, height); if (index != currentForegroundIndex) { return; @@ -423,30 +477,33 @@ public class PopupSwipeBackLayout extends FrameLayout { } if (foregroundAnimator != null) { foregroundAnimator.cancel(); + foregroundAnimator = null; } - View fg = getChildAt(currentForegroundIndex); - float fromH = overrideForegroundHeight != 0 ? overrideForegroundHeight : fg.getMeasuredHeight(); - float toH = height; + if (animated) { + View fg = getChildAt(currentForegroundIndex); + float fromH = overrideForegroundHeight != 0 ? overrideForegroundHeight : fg.getMeasuredHeight(); + float toH = height; - ValueAnimator animator = ValueAnimator.ofFloat(fromH, toH).setDuration(240); - animator.setInterpolator(Easings.easeInOutQuad); - animator.addUpdateListener(animation -> { - overrideForegroundHeight = (float) animation.getAnimatedValue(); + ValueAnimator animator = ValueAnimator.ofFloat(fromH, toH).setDuration(240); + animator.setInterpolator(Easings.easeInOutQuad); + animator.addUpdateListener(animation -> { + overrideForegroundHeight = (float) animation.getAnimatedValue(); + invalidateTransforms(); + }); + isAnimationInProgress = true; + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + isAnimationInProgress = false; + foregroundAnimator = null; + } + }); + animator.start(); + foregroundAnimator = animator; + } else { + overrideForegroundHeight = height; invalidateTransforms(); - }); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - isAnimationInProgress = false; - } - - @Override - public void onAnimationStart(Animator animation) { - isAnimationInProgress = true; - } - }); - animator.start(); - foregroundAnimator = animator; + } } public void setForegroundColor(int color) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/AboutPremiumView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/AboutPremiumView.java new file mode 100644 index 000000000..08143feed --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/AboutPremiumView.java @@ -0,0 +1,42 @@ +package org.telegram.ui.Components.Premium; + +import android.content.Context; +import android.util.TypedValue; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.LayoutHelper; + +public class AboutPremiumView extends LinearLayout { + + public AboutPremiumView(@NonNull Context context) { + super(context); + setOrientation(VERTICAL); + setPadding(AndroidUtilities.dp(16), AndroidUtilities.dp(16), AndroidUtilities.dp(16), AndroidUtilities.dp(16)); + + TextView textView = new TextView(context); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + textView.setText(LocaleController.getString("AboutPremiumTitle", R.string.AboutPremiumTitle)); + addView(textView); + + TextView description = new TextView(context); + description.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + description.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + description.setText(AndroidUtilities.replaceTags(LocaleController.getString("AboutPremiumDescription", R.string.AboutPremiumDescription))); + addView(description, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 0, 0, 0, 0)); + + TextView description2 = new TextView(context); + description2.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + description2.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + description2.setText(AndroidUtilities.replaceTags(LocaleController.getString("AboutPremiumDescription2", R.string.AboutPremiumDescription2))); + addView(description2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 0, 24, 0, 0)); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/CarouselView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/CarouselView.java new file mode 100644 index 000000000..a6bbd9c27 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/CarouselView.java @@ -0,0 +1,397 @@ +package org.telegram.ui.Components.Premium; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.Canvas; +import android.view.GestureDetector; +import android.view.HapticFeedbackConstants; +import android.view.MotionEvent; +import android.view.View; +import android.view.animation.Interpolator; +import android.view.animation.OvershootInterpolator; +import android.widget.OverScroller; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.Utilities; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + +public class CarouselView extends View implements PagerHeaderView { + + private final ArrayList drawingObjects; + private final ArrayList drawingObjectsSorted; + + float lastFlingX; + float lastFlingY; + int cX, cY; + + float offsetAngle = 0f; + boolean firstScroll = true; + boolean firstScroll1 = true; + boolean firstScrollEnabled = true; + GestureDetector gestureDetector; + boolean autoPlayEnabled = true; + static final Interpolator sQuinticInterpolator = t -> { + t -= 1.0f; + return t * t * t * t * t + 1.0f; + }; + + Comparator comparator = Comparator.comparingInt(value -> (int) (value.yRelative * 100)); + + OverScroller overScroller; + ValueAnimator autoScrollAnimation; + boolean scrolled; + private Runnable autoScrollRunnable = new Runnable() { + @Override + public void run() { + if (!autoPlayEnabled) { + return; + } + scrollToInternal(offsetAngle + 360f / drawingObjects.size()); + } + }; + + public CarouselView(Context context, ArrayList drawingObjects) { + super(context); + overScroller = new OverScroller(getContext(), sQuinticInterpolator); + gestureDetector = new GestureDetector(context, new GestureDetector.OnGestureListener() { + + double lastAngle; + + @Override + public boolean onDown(MotionEvent motionEvent) { + if (motionEvent.getY() > 0.2 * getMeasuredHeight() && motionEvent.getY() < 0.9 * getMeasuredHeight()) { + getParent().requestDisallowInterceptTouchEvent(true); + } + if (autoScrollAnimation != null) { + autoScrollAnimation.removeAllListeners(); + autoScrollAnimation.cancel(); + autoScrollAnimation = null; + } + AndroidUtilities.cancelRunOnUIThread(autoScrollRunnable); + overScroller.abortAnimation(); + lastAngle = Math.atan2((motionEvent.getX() - cX), (motionEvent.getY() - cY)); + float aStep = 360f / drawingObjects.size(); + lastSelected = ((int) (offsetAngle / aStep)); + for (int i = 0; i < drawingObjects.size(); i++) { + drawingObjects.get(i).hideAnimation(); + } + return true; + } + + @Override + public void onShowPress(MotionEvent motionEvent) { + + } + + @Override + public boolean onSingleTapUp(MotionEvent motionEvent) { + float x = motionEvent.getX(); + float y = motionEvent.getY(); + for (int i = drawingObjectsSorted.size() - 1; i >= 0; i--) { + if (drawingObjectsSorted.get(i).checkTap(x, y)) { + + if (drawingObjectsSorted.get(i).angle % 360 != 270) { + double toAngle = (270 - drawingObjectsSorted.get(i).angle % 360 + 180) % 360; + if (toAngle > 180.0) { + toAngle = -(360 - toAngle); + } + scrollToInternal(offsetAngle + (float) toAngle); + performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP); + } + return true; + } + } + return false; + } + + @Override + public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float dx, float dy) { + double angle = Math.atan2((motionEvent1.getX() - cX), (motionEvent1.getY() - cY)); + double dAngle = lastAngle - angle; + lastAngle = angle; + offsetAngle += Math.toDegrees(dAngle); + checkSelectedHaptic(); + invalidate(); + return true; + } + + @Override + public void onLongPress(MotionEvent motionEvent) { + + } + + @Override + public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float velocityX, float velocityY) { + lastFlingX = lastFlingY = 0; + double angle = Math.atan2((motionEvent1.getX() - cX), (motionEvent1.getY() - cY)); + float xVelocity = (float) (Math.cos(angle) * velocityX - Math.sin(angle) * velocityY); + overScroller.fling(0, 0, (int) xVelocity, 0, Integer.MIN_VALUE, Integer.MAX_VALUE, Integer.MIN_VALUE, Integer.MAX_VALUE); + if (overScroller.isFinished()) { + scheduleAutoscroll(); + } + invalidate(); + return true; + } + + }); + this.drawingObjects = drawingObjects; + this.drawingObjectsSorted = new ArrayList<>(drawingObjects); + for (int i = 0; i < drawingObjects.size() / 2; i++) { + drawingObjects.get(i).y = drawingObjects.size() / (float) i; + drawingObjects.get(drawingObjects.size() - 1 - i).y = drawingObjects.size() / (float) i; + } + Collections.sort(drawingObjects, comparator); + for (int i = 0; i < drawingObjects.size(); i++) { + drawingObjects.get(i).carouselView = this; + } + } + + private void checkSelectedHaptic() { + float aStep = 360f / drawingObjects.size(); + int selected = ((int) (offsetAngle / aStep)); + if (lastSelected != selected) { + lastSelected = selected; + performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP); + } + } + + private void scrollToInternal(float scrollTo) { + if (Math.abs(scrollTo - offsetAngle) < 1 && autoScrollAnimation == null) { + return; + } + AndroidUtilities.cancelRunOnUIThread(autoScrollRunnable); + if (autoScrollAnimation != null) { + autoScrollAnimation.removeAllListeners(); + autoScrollAnimation.cancel(); + autoScrollAnimation = null; + } + float from = offsetAngle; + autoScrollAnimation = ValueAnimator.ofFloat(0f, 1f); + autoScrollAnimation.addUpdateListener(animation -> { + float f = (float) animation.getAnimatedValue(); + offsetAngle = from * (1f - f) + scrollTo * f; + invalidate(); + }); + autoScrollAnimation.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + offsetAngle = scrollTo; + autoScrollAnimation = null; + invalidate(); + AndroidUtilities.runOnUIThread(() -> { + if (!drawingObjectsSorted.isEmpty()) { + drawingObjectsSorted.get(drawingObjectsSorted.size() - 1).select(); + } + scheduleAutoscroll(); + }); + } + }); + autoScrollAnimation.setInterpolator(new OvershootInterpolator()); + autoScrollAnimation.setDuration(600); + autoScrollAnimation.start(); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + scrolled = true; + } else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { + scrolled = false; + getParent().requestDisallowInterceptTouchEvent(false); + invalidate(); + } + return gestureDetector.onTouchEvent(event); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + cX = getMeasuredWidth() >> 1; + cY = getMeasuredHeight() >> 1; + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + for (int k = 0; k < 2; k++) { + for (int i = 0; i < drawingObjectsSorted.size(); i++) { + drawingObjectsSorted.get(i).onAttachToWindow(this, k); + } + } + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + for (int i = 0; i < drawingObjects.size(); i++) { + drawingObjects.get(i).onDetachFromWindow(); + } + } + + int lastSelected; + + @Override + protected void onDraw(Canvas canvas) { + double aStep = 360.0 / drawingObjects.size(); + + if (overScroller.computeScrollOffset()) { + //fling + final int x = overScroller.getCurrX(); + float dx = lastFlingX - x; + if (lastFlingX != 0 && Math.abs(dx * 0.08f) < 0.3f) { + overScroller.abortAnimation(); + } + lastFlingX = x; + offsetAngle += dx * 0.08f; + checkSelectedHaptic(); + invalidate(); + scheduleAutoscroll(); + } else if (firstScroll1 || firstScroll || (!scrolled && autoScrollAnimation == null && Math.abs((offsetAngle - 90) % aStep) > 2)) { + if (firstScroll1) { + offsetAngle += 90 + aStep; + } + float dif = (float) ((offsetAngle - 90) % aStep); + if (Math.abs(dif) > aStep / 2) { + if (dif < 0) { + dif += aStep; + } else { + dif -= aStep; + } + } + firstScroll1 = false; + if (firstScroll && firstScrollEnabled) { + firstScroll = false; + offsetAngle -= 180; + scrollToInternal(offsetAngle - dif + 180); + } else { + scrollToInternal(offsetAngle - dif); + } + } + + float r = (Math.min(getMeasuredWidth(), getMeasuredHeight() * 1.3f) - AndroidUtilities.dp(140)) * 0.5f; + float rY = r * 0.6f; + for (int i = 0; i < drawingObjects.size(); i++) { + DrawingObject object = drawingObjects.get(i); + object.angle = offsetAngle + aStep * i; + double s = Math.cos(Math.toRadians(object.angle)); + double p = s; + double totalAngle = object.angle - 30.0 * p; + object.x = (float) Math.cos(Math.toRadians(totalAngle)) * r + cX; + object.yRelative = (float) Math.sin(Math.toRadians(totalAngle)); + object.y = object.yRelative * rY + cY; + } + + Collections.sort(drawingObjectsSorted, comparator); + + for (int i = 0; i < drawingObjectsSorted.size(); i++) { + DrawingObject object = drawingObjectsSorted.get(i); + float s = 0.2f + 0.7f * (object.yRelative + 1f) / 2f; + object.draw(canvas, object.x, object.y, s); + } + invalidate(); + } + + void scheduleAutoscroll() { + AndroidUtilities.cancelRunOnUIThread(autoScrollRunnable); + if (!autoPlayEnabled) { + return; + } + AndroidUtilities.runOnUIThread(autoScrollRunnable, 3000); + } + + @Override + public void setOffset(float translationX) { + if (translationX >= getMeasuredWidth() || translationX <= -getMeasuredWidth()) { + overScroller.abortAnimation(); + if (autoScrollAnimation != null) { + autoScrollAnimation.removeAllListeners(); + autoScrollAnimation.cancel(); + autoScrollAnimation = null; + } + firstScroll = true; + firstScroll1 = true; + offsetAngle = 0; + } + setAutoPlayEnabled(translationX == 0); + setFirstScrollEnabled(Math.abs(translationX) < getMeasuredWidth() * 0.2f); + float s = Utilities.clamp(Math.abs(translationX) / getMeasuredWidth(), 1f, 0f); + setScaleX(1f - s); + setScaleY(1f - s); + } + + public void autoplayToNext() { + AndroidUtilities.cancelRunOnUIThread(autoScrollRunnable); + if (!autoPlayEnabled) { + return; + } + DrawingObject drawingObject = drawingObjectsSorted.get(drawingObjectsSorted.size() - 1); + int i = drawingObjects.indexOf(drawingObject); + i--; + if (i < 0) { + i = drawingObjects.size() - 1; + } + drawingObjects.get(i).select(); + AndroidUtilities.runOnUIThread(autoScrollRunnable, 16); + } + + public static class DrawingObject { + + public float x, y; + public double angle; + float yRelative; + CarouselView carouselView; + + public DrawingObject() { + } + + public void onAttachToWindow(View parentView, int i) { + + } + + public void onDetachFromWindow() { + + } + + public void draw(Canvas canvas, float cX, float cY, float scale) { + + } + + public boolean checkTap(float x, float y) { + return false; + } + + public void select() { + + } + + public void hideAnimation() { + + } + } + + + void setAutoPlayEnabled(boolean autoPlayEnabled) { + if (this.autoPlayEnabled != autoPlayEnabled) { + this.autoPlayEnabled = autoPlayEnabled; + if (autoPlayEnabled) { + scheduleAutoscroll(); + } else { + AndroidUtilities.cancelRunOnUIThread(autoScrollRunnable); + } + invalidate(); + } + } + + void setFirstScrollEnabled(boolean b) { + if (firstScrollEnabled != b) { + this.firstScrollEnabled = b; + invalidate(); + } + } +} + diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/DoubledLimitsBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/DoubledLimitsBottomSheet.java new file mode 100644 index 000000000..c4258b740 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/DoubledLimitsBottomSheet.java @@ -0,0 +1,378 @@ +package org.telegram.ui.Components.Premium; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Canvas; +import android.os.Bundle; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MessagesController; +import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Cells.FixedHeightEmptyCell; +import org.telegram.ui.Components.BottomSheetWithRecyclerListView; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.PremiumPreviewFragment; + +import java.util.ArrayList; + +public class DoubledLimitsBottomSheet extends BottomSheetWithRecyclerListView implements NotificationCenter.NotificationCenterDelegate { + + final ArrayList limits = new ArrayList<>(); + + int rowCount; + int headerRow; + int limitsStartRow; + int limitsStartEnd; + int lastViewRow; + + FrameLayout titleLayout; + TextView titleView; + ImageView titleImage; + + PremiumButtonView premiumButtonView; + PremiumPreviewFragment premiumPreviewFragment; + + float titleProgress; + + PremiumGradient.GradientTools gradientTools; + private int totalGradientHeight; + private BaseFragment baseFragment; + + private View divider; + + public DoubledLimitsBottomSheet(BaseFragment fragment, int currentAccount) { + super(fragment, false, false); + this.baseFragment = fragment; + gradientTools = new PremiumGradient.GradientTools(Theme.key_premiumGradient1, Theme.key_premiumGradient2, Theme.key_premiumGradient3, Theme.key_premiumGradient4); + gradientTools.x1 = 0; + gradientTools.y1 = 0; + gradientTools.x2 = 0; + gradientTools.y2 = 1f; + + clipToActionBar = true; + MessagesController messagesController = MessagesController.getInstance(currentAccount); + limits.add(new Limit( + LocaleController.getString("GroupsAndChannelsLimitTitle", R.string.GroupsAndChannelsLimitTitle), + LocaleController.formatString("GroupsAndChannelsLimitSubtitle", R.string.GroupsAndChannelsLimitSubtitle, messagesController.channelsLimitPremium), + messagesController.channelsLimitDefault, messagesController.channelsLimitPremium + )); + limits.add(new Limit( + LocaleController.getString("PinChatsLimitTitle", R.string.PinChatsLimitTitle), + LocaleController.formatString("PinChatsLimitSubtitle", R.string.PinChatsLimitSubtitle, messagesController.dialogFiltersPinnedLimitPremium), + messagesController.dialogFiltersPinnedLimitDefault, messagesController.dialogFiltersPinnedLimitPremium + )); + limits.add(new Limit( + LocaleController.getString("PublicLinksLimitTitle", R.string.PublicLinksLimitTitle), + LocaleController.formatString("PublicLinksLimitSubtitle", R.string.PublicLinksLimitSubtitle, messagesController.publicLinksLimitPremium), + messagesController.publicLinksLimitDefault, messagesController.publicLinksLimitPremium + )); + limits.add(new Limit( + LocaleController.getString("SavedGifsLimitTitle", R.string.SavedGifsLimitTitle), + LocaleController.formatString("SavedGifsLimitSubtitle", R.string.SavedGifsLimitSubtitle, messagesController.savedGifsLimitPremium), + messagesController.savedGifsLimitDefault, messagesController.savedGifsLimitPremium + )); + limits.add(new Limit( + LocaleController.getString("FavoriteStickersLimitTitle", R.string.FavoriteStickersLimitTitle), + LocaleController.formatString("FavoriteStickersLimitSubtitle", R.string.FavoriteStickersLimitSubtitle, messagesController.stickersFavedLimitPremium), + messagesController.stickersFavedLimitDefault, messagesController.stickersFavedLimitPremium + )); + limits.add(new Limit( + LocaleController.getString("BioLimitTitle", R.string.BioLimitTitle), + LocaleController.formatString("BioLimitSubtitle", R.string.BioLimitSubtitle, messagesController.stickersFavedLimitPremium), + messagesController.aboutLengthLimitDefault, messagesController.aboutLengthLimitPremium + )); + limits.add(new Limit( + LocaleController.getString("CaptionsLimitTitle", R.string.CaptionsLimitTitle), + LocaleController.formatString("CaptionsLimitSubtitle", R.string.CaptionsLimitSubtitle, messagesController.stickersFavedLimitPremium), + messagesController.captionLengthLimitDefault, messagesController.captionLengthLimitPremium + )); + limits.add(new Limit( + LocaleController.getString("FoldersLimitTitle", R.string.FoldersLimitTitle), + LocaleController.formatString("FoldersLimitSubtitle", R.string.FoldersLimitSubtitle, messagesController.dialogFiltersLimitPremium), + messagesController.dialogFiltersLimitDefault, messagesController.dialogFiltersLimitPremium + )); + limits.add(new Limit( + LocaleController.getString("ChatPerFolderLimitTitle", R.string.ChatPerFolderLimitTitle), + LocaleController.formatString("ChatPerFolderLimitSubtitle", R.string.ChatPerFolderLimitSubtitle, messagesController.dialogFiltersChatsLimitPremium), + messagesController.dialogFiltersChatsLimitDefault, messagesController.dialogFiltersChatsLimitPremium + )); + limits.add(new Limit( + LocaleController.getString("ConnectedAccountsLimitTitle", R.string.ConnectedAccountsLimitTitle), + LocaleController.formatString("ConnectedAccountsLimitSubtitle", R.string.ConnectedAccountsLimitSubtitle, 4), + UserConfig.MAX_ACCOUNT_DEFAULT_COUNT, UserConfig.MAX_ACCOUNT_COUNT + )); + + rowCount = 0; + headerRow = rowCount++; + limitsStartRow = rowCount; + rowCount += limits.size(); + limitsStartEnd = rowCount; + //lastViewRow = rowCount++; + + titleLayout = new FrameLayout(getContext()); + titleView = new TextView(getContext()); + titleView.setText(LocaleController.getString("DoubledLimits", R.string.DoubledLimits)); + titleView.setGravity(Gravity.CENTER); + titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); + titleView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + titleView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + titleLayout.addView(titleView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL)); + + titleImage = new ImageView(getContext()); + titleImage.setImageDrawable(PremiumGradient.getInstance().createGradientDrawable(ContextCompat.getDrawable(getContext(), R.drawable.other_2x_large))); + titleLayout.addView(titleImage, LayoutHelper.createFrame(40, 28, Gravity.CENTER_VERTICAL)); + containerView.addView(titleLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 40)); + + divider = new View(getContext()) { + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawRect(0, 0, getMeasuredWidth(), 1, Theme.dividerPaint); + } + }; + divider.setBackgroundColor(Theme.getColor(Theme.key_dialogBackground)); + containerView.addView(divider, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 72, Gravity.BOTTOM, 0, 0, 0, 0)); + + premiumButtonView = new PremiumButtonView(getContext(), true); + premiumButtonView.buttonTextView.setText(PremiumPreviewFragment.getPremiumButtonText(currentAccount)); + + containerView.addView(premiumButtonView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM, 16, 0, 16, 12)); + + premiumButtonView.buttonLayout.setOnClickListener((view) -> { + if (!UserConfig.getInstance(currentAccount).isPremium()) { + PremiumPreviewFragment.buyPremium(fragment, "double_limits"); + } + dismiss(); + }); + premiumButtonView.overlayTextView.setOnClickListener((v) -> { + dismiss(); + }); + recyclerListView.setPadding(0, 0, 0, AndroidUtilities.dp(48 + 24)); + bindPremium(UserConfig.getInstance(getCurrentAccount()).isPremium()); + } + + private void bindPremium(boolean hasPremium) { + if (hasPremium) { + premiumButtonView.setOverlayText(LocaleController.getString("OK", R.string.OK), false, false); + } + } + + @Override + protected void onPreMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onPreMeasure(widthMeasureSpec, heightMeasureSpec); + measureGradient(View.MeasureSpec.getSize(widthMeasureSpec), View.MeasureSpec.getSize(heightMeasureSpec)); + } + + @Override + protected void onPreDraw(Canvas canvas, int top, float progressToFullView) { + float minTop = AndroidUtilities.statusBarHeight + (actionBar.getMeasuredHeight() - AndroidUtilities.statusBarHeight - AndroidUtilities.dp(40)) / 2f; + float fromIconX = (titleLayout.getMeasuredWidth() - titleView.getMeasuredWidth() - titleImage.getMeasuredWidth() - AndroidUtilities.dp(6)) / 2f; + float toIconX = AndroidUtilities.dp(72) - titleImage.getMeasuredWidth() - AndroidUtilities.dp(6); + float fromX = fromIconX + titleImage.getMeasuredWidth() + AndroidUtilities.dp(6); + float toX = AndroidUtilities.dp(72); + + float fromY = Math.max(top + AndroidUtilities.dp(24), minTop); + float toY = minTop; + + if (progressToFullView > 0 && titleProgress != 1f) { + titleProgress += 16f / 150f; + if (titleProgress > 1f) { + titleProgress = 1f; + } + containerView.invalidate(); + } else if (progressToFullView == 0 && titleProgress != 0) { + titleProgress -= 16f / 150f; + if (titleProgress < 0) { + titleProgress = 0; + } + containerView.invalidate(); + } + + titleLayout.setTranslationY(fromY * (1f - titleProgress) + toY * titleProgress); + titleView.setTranslationX(fromX * (1f - titleProgress) + toX * titleProgress); + titleImage.setTranslationX(fromIconX * (1f - titleProgress) + toIconX * titleProgress); + titleImage.setAlpha(1f - titleProgress); + float s = 0.6f + 0.4f * (1f - titleProgress); + titleImage.setScaleX(s); + titleImage.setScaleY(s); + } + + @Override + protected CharSequence getTitle() { + return null; + } + + @Override + protected RecyclerListView.SelectionAdapter createAdapter() { + return new RecyclerListView.SelectionAdapter() { + @Override + public boolean isEnabled(RecyclerView.ViewHolder holder) { + return false; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + Context context = parent.getContext(); + View view; + switch (viewType) { + default: + case 0: + LimitCell limitCell = new LimitCell(context); + limitCell.previewView.setParentViewForGradien(containerView); + limitCell.previewView.setStaticGradinet(gradientTools); + view = limitCell; + break; + case 1: + view = new FixedHeightEmptyCell(context, 40 + 24); + break; + case 2: + view = new FixedHeightEmptyCell(context, 16); + break; + } + view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + return new RecyclerListView.Holder(view); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (holder.getItemViewType() == 0) { + LimitCell limitCell = (LimitCell) holder.itemView; + limitCell.setData(limits.get(position - limitsStartRow)); + limitCell.previewView.gradientYOffset = limits.get(position - limitsStartRow).yOffset; + limitCell.previewView.gradientTotalHeight = totalGradientHeight; + } + } + + @Override + public int getItemCount() { + return rowCount; + } + + @Override + public int getItemViewType(int position) { + if (position == headerRow) { + return 1; + } else if (position == lastViewRow) { + return 2; + } + return 0; + } + }; + } + + public void setParentFragment(PremiumPreviewFragment premiumPreviewFragment) { + this.premiumPreviewFragment = premiumPreviewFragment; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.billingProductDetailsUpdated); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.premiumPromoUpdated); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + } + + @Override + public void dismiss() { + super.dismiss(); + + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.billingProductDetailsUpdated); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.premiumPromoUpdated); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.billingProductDetailsUpdated || id == NotificationCenter.premiumPromoUpdated) { + premiumButtonView.buttonTextView.setText(PremiumPreviewFragment.getPremiumButtonText(currentAccount)); + } else if (id == NotificationCenter.currentUserPremiumStatusChanged) { + bindPremium(UserConfig.getInstance(currentAccount).isPremium()); + } + } + + + private class LimitCell extends LinearLayout { + + TextView title; + TextView subtitle; + LimitPreviewView previewView; + + public LimitCell(@NonNull Context context) { + super(context); + setOrientation(VERTICAL); + setPadding(AndroidUtilities.dp(6), 0, AndroidUtilities.dp(6), 0); + + title = new TextView(context); + title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + title.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + title.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + addView(title, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 16, 0, 16, 0)); + + subtitle = new TextView(context); + subtitle.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText)); + subtitle.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + addView(subtitle, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 16, 1, 16, 0)); + + previewView = new LimitPreviewView(context, 0, 10, 20); + addView(previewView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 0, 8, 0, 21)); + } + + @SuppressLint("SetTextI18n") + public void setData(Limit limit) { + title.setText(limit.title); + subtitle.setText(limit.subtitle); + previewView.premiumCount.setText(Integer.toString(limit.premiumLimit)); + previewView.defaultCount.setText(Integer.toString(limit.defaultLimit)); + } + } + + private void measureGradient(int w, int h) { + int yOffset = 0; + LimitCell dummyCell = new LimitCell(getContext()); + for (int i = 0; i < limits.size(); i++) { + dummyCell.setData(limits.get(i)); + dummyCell.measure(View.MeasureSpec.makeMeasureSpec(w, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(h, View.MeasureSpec.AT_MOST)); + limits.get(i).yOffset = yOffset; + yOffset += dummyCell.getMeasuredHeight(); + } + + totalGradientHeight = yOffset; + } + + + private static class Limit { + final String title; + final String subtitle; + final int defaultLimit; + final int premiumLimit; + final int current = -1; + public int yOffset; + + private Limit(String title, String subtitle, int defaultLimit, int premiumLimit) { + this.title = title; + this.subtitle = subtitle; + this.defaultLimit = defaultLimit; + this.premiumLimit = premiumLimit; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/GLIconRenderer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/GLIconRenderer.java new file mode 100644 index 000000000..ab7ae9416 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/GLIconRenderer.java @@ -0,0 +1,148 @@ +package org.telegram.ui.Components.Premium.GLIcon; + +import android.content.Context; +import android.graphics.Bitmap; +import android.opengl.GLES20; +import android.opengl.GLSurfaceView; +import android.opengl.Matrix; + +import androidx.core.graphics.ColorUtils; + +import org.telegram.ui.ActionBar.Theme; + +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.opengles.GL10; + +public class GLIconRenderer implements GLSurfaceView.Renderer { + + private int mWidth; + private int mHeight; + public Star3DIcon star; + public float angleX = 0; + public float angleX2 = 0; + public float angleY = 0; + + private static final float Z_NEAR = 1f; + private static final float Z_FAR = 200f; + + private final float[] mMVPMatrix = new float[16]; + private final float[] mProjectionMatrix = new float[16]; + private final float[] mViewMatrix = new float[16]; + private final float[] mRotationMatrix = new float[16]; + Context context; + + Bitmap backgroundBitmap; + + public float gradientStartX; + public float gradientStartY; + public float gradientScaleX; + public float gradientScaleY; + + int color1; + int color2; + + public String colorKey1 = Theme.key_premiumStartGradient1; + public String colorKey2 = Theme.key_premiumStartGradient2; + + private final int style; + public final static int FRAGMENT_STYLE = 0; + public final static int DIALOG_STYLE = 1; + public boolean isDarkBackground; + + public GLIconRenderer(Context context, int style) { + this.context = context; + this.style = style; + updateColors(); + } + + public static int loadShader(int type, String shaderSrc) { + int shader; + int[] compiled = new int[1]; + + shader = GLES20.glCreateShader(type); + + if (shader == 0) { + return 0; + } + + GLES20.glShaderSource(shader, shaderSrc); + GLES20.glCompileShader(shader); + GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0); + + if (compiled[0] == 0) { + throw new RuntimeException("Could not compile program: " + + GLES20.glGetShaderInfoLog(shader) + " " + shaderSrc); + } + + return shader; + } + + public static void checkGlError(String glOperation, int program) { + int error; + while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) { + throw new RuntimeException(glOperation + ": glError " + error + GLES20.glGetShaderInfoLog(program)); + } + } + + public void onSurfaceCreated(GL10 glUnused, EGLConfig config) { + GLES20.glClearColor(0f, 0f, 0f, 0f); + if (star != null) { + star.destroy(); + } + star = new Star3DIcon(context); + if (backgroundBitmap != null) { + star.setBackground(backgroundBitmap); + } + if (isDarkBackground) { + star.spec1 = 1f; + star.spec2 = 0.2f; + } + + } + + public void onDrawFrame(GL10 glUnused) { + GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); + + GLES20.glEnable(GLES20.GL_DEPTH_TEST); + Matrix.setLookAtM(mViewMatrix, 0, 0, 0, 100, 0f, 0f, 0f, 0f, 1.0f, 0.0f); + Matrix.setIdentityM(mRotationMatrix, 0); + + Matrix.translateM(mRotationMatrix, 0, 0, angleX2, 0); + + Matrix.rotateM(mRotationMatrix, 0, -angleY, 1f, 0, 0f); + Matrix.rotateM(mRotationMatrix, 0, -angleX, 0, 1.0f, 0); + + Matrix.multiplyMM(mMVPMatrix, 0, mViewMatrix, 0, mRotationMatrix, 0); + Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mMVPMatrix, 0); + + if (star != null) { + star.gradientColor1 = color1; + star.gradientColor2 = color2; + star.draw(mMVPMatrix, mRotationMatrix, mWidth, mHeight, gradientStartX, gradientScaleX, gradientStartY, gradientScaleY); + } + + } + + public void onSurfaceChanged(GL10 glUnused, int width, int height) { + mWidth = width; + mHeight = height; + + GLES20.glViewport(0, 0, mWidth, mHeight); + float aspect = (float) width / height; + + Matrix.perspectiveM(mProjectionMatrix, 0, 53.13f, aspect, Z_NEAR, Z_FAR); + } + + public void setBackground(Bitmap gradientTextureBitmap) { + if (star != null) { + star.setBackground(gradientTextureBitmap); + } + backgroundBitmap = gradientTextureBitmap; + } + + public void updateColors() { + color1 = Theme.getColor(colorKey1); + color2 = Theme.getColor(colorKey2); + isDarkBackground = style == DIALOG_STYLE && ColorUtils.calculateLuminance(Theme.getColor(Theme.key_dialogBackground)) < 0.5f; + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/GLIconTextureView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/GLIconTextureView.java new file mode 100644 index 000000000..f2d20f1a1 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/GLIconTextureView.java @@ -0,0 +1,737 @@ +package org.telegram.ui.Components.Premium.GLIcon; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.SurfaceTexture; +import android.opengl.GLUtils; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.TextureView; +import android.view.animation.LinearInterpolator; +import android.view.animation.OvershootInterpolator; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.EmuDetector; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.Utilities; +import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.Premium.StarParticlesView; + +import java.util.ArrayList; +import java.util.Collections; + +import javax.microedition.khronos.egl.EGL10; +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.egl.EGLContext; +import javax.microedition.khronos.egl.EGLDisplay; +import javax.microedition.khronos.egl.EGLSurface; +import javax.microedition.khronos.opengles.GL10; +import javax.microedition.khronos.opengles.GL11; + + +public class GLIconTextureView extends TextureView implements TextureView.SurfaceTextureListener { + + public boolean touched; + public GLIconRenderer mRenderer; + + private static final int EGL_OPENGL_ES2_BIT = 4; + private static final int EGL_CONTEXT_CLIENT_VERSION = 0x3098; + + private SurfaceTexture mSurface; + private EGLDisplay mEglDisplay; + private EGLSurface mEglSurface; + private EGLContext mEglContext; + private EGL10 mEgl; + private EGLConfig eglConfig; + private GL10 mGl; + + private int targetFrameDurationMillis; + + private int surfaceHeight; + private int surfaceWidth; + + public boolean isRunning = false; + private boolean paused = true; + private boolean rendererChanged = false; + private boolean dialogIsVisible = false; + + private RenderThread thread; + + private int targetFps; + + private long idleDelay = 2000; + + private final int animationsCount = 5; + int animationPointer; + ArrayList animationIndexes = new ArrayList<>(); + boolean attached; + StarParticlesView starParticlesView; + + public GLIconTextureView(Context context, int style) { + super(context); + setOpaque(false); + setRenderer(new GLIconRenderer(context, style)); + initialize(context); + + gestureDetector = new GestureDetector(context, new GestureDetector.OnGestureListener() { + @Override + public boolean onDown(MotionEvent motionEvent) { + if (backAnimation != null) { + backAnimation.removeAllListeners(); + backAnimation.cancel(); + backAnimation = null; + } + if (animatorSet != null) { + animatorSet.removeAllListeners(); + animatorSet.cancel(); + animatorSet = null; + } + AndroidUtilities.cancelRunOnUIThread(idleAnimation); + touched = true; + return true; + } + + @Override + public void onShowPress(MotionEvent motionEvent) { + + } + + @Override + public boolean onSingleTapUp(MotionEvent motionEvent) { + float rad = getMeasuredWidth() / 2f; + float toAngleX = (40 + Utilities.random.nextInt(30)) * (rad - motionEvent.getX()) / rad; + float toAngleY = (40 + Utilities.random.nextInt(30)) * (rad - motionEvent.getY()) / rad; + AndroidUtilities.runOnUIThread(() -> { + if (backAnimation != null) { + backAnimation.removeAllListeners(); + backAnimation.cancel(); + backAnimation = null; + } + if (animatorSet != null) { + animatorSet.removeAllListeners(); + animatorSet.cancel(); + animatorSet = null; + } + if (Math.abs(mRenderer.angleX) > 10) { + startBackAnimation(); + return; + } + AndroidUtilities.cancelRunOnUIThread(idleAnimation); + animatorSet = new AnimatorSet(); + int inTime = 220; + + ValueAnimator v1 = ValueAnimator.ofFloat(mRenderer.angleX, toAngleX); + v1.addUpdateListener(xUpdater); + v1.setDuration(inTime); + v1.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + + ValueAnimator v2 = ValueAnimator.ofFloat(toAngleX, 0); + v2.addUpdateListener(xUpdater); + v2.setStartDelay(inTime); + v2.setDuration(600); + v2.setInterpolator(AndroidUtilities.overshootInterpolator); + + ValueAnimator v3 = ValueAnimator.ofFloat(mRenderer.angleY, toAngleY); + v3.addUpdateListener(yUpdater); + v3.setDuration(inTime); + v3.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + + ValueAnimator v4 = ValueAnimator.ofFloat(toAngleY, 0); + v4.addUpdateListener(yUpdater); + v4.setStartDelay(inTime); + v4.setDuration(600); + v4.setInterpolator(AndroidUtilities.overshootInterpolator); + + animatorSet.playTogether(v1, v2, v3, v4); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + mRenderer.angleX = 0; + animatorSet = null; + scheduleIdleAnimation(idleDelay); + } + }); + animatorSet.start(); + }, 16); + + return true; + } + + @Override + public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { + mRenderer.angleX += v * 0.5f; + mRenderer.angleY += v1 * 0.05f; + return true; + } + + @Override + public void onLongPress(MotionEvent motionEvent) { + GLIconTextureView.this.onLongPress(); + } + + @Override + public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { + return false; + } + + }); + gestureDetector.setIsLongpressEnabled(true); + for (int i = 0; i < animationsCount; i++) { + animationIndexes.add(i); + } + Collections.shuffle(animationIndexes); + } + + public void onLongPress() { + + } + + + public synchronized void setRenderer(GLIconRenderer renderer) { + mRenderer = renderer; + rendererChanged = true; + } + + + private void initialize(Context context) { + targetFps = (int) AndroidUtilities.screenRefreshRate; + setSurfaceTextureListener(this); + } + + + @Override + public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { + startThread(surface, width, height); + } + + public void startThread(SurfaceTexture surface, int width, int height) { + thread = new RenderThread(); + mSurface = surface; + setDimensions(width, height); + targetFrameDurationMillis = Math.max(0, (int) ((1 / (float) targetFps) * 1000) - 1); + thread.start(); + } + + + @Override + public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { + setDimensions(width, height); + if (mRenderer != null) { + mRenderer.onSurfaceChanged(mGl, width, height); + } + } + + public synchronized void setPaused(boolean isPaused) { + paused = isPaused; + } + + public synchronized boolean isPaused() { + return paused; + } + + @Override + public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { + stopThread(); + return false; + } + + public void stopThread() { + if (thread != null) { + isRunning = false; + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + thread = null; + } + + } + + private boolean shouldSleep() { + return isPaused() || mRenderer == null; + } + + public void setBackgroundBitmap(Bitmap gradientTextureBitmap) { + mRenderer.setBackground(gradientTextureBitmap); + } + + + private class RenderThread extends Thread { + @Override + public void run() { + isRunning = true; + + initGL(); + checkGlError(); + + long lastFrameTime = System.currentTimeMillis(); + + while (isRunning) { + while (mRenderer == null) { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // Ignore + } + } + + if (rendererChanged) { + initializeRenderer(mRenderer); + rendererChanged = false; + } + + if (!shouldSleep()) { + lastFrameTime = System.currentTimeMillis(); + drawSingleFrame(); + } + + try { + if (shouldSleep()) + Thread.sleep(100); + else { + long thisFrameTime = System.currentTimeMillis(); + long timDiff = thisFrameTime - lastFrameTime; + while (timDiff < targetFrameDurationMillis) { + thisFrameTime = System.currentTimeMillis(); + timDiff = thisFrameTime - lastFrameTime; + } + } + } catch (InterruptedException ignore) { + } + } + } + + } + + private synchronized void initializeRenderer(GLIconRenderer renderer) { + if (renderer != null && isRunning) { + renderer.onSurfaceCreated(mGl, eglConfig); + renderer.onSurfaceChanged(mGl, surfaceWidth, surfaceHeight); + } + } + + private synchronized void drawSingleFrame() { + checkCurrent(); + if (mRenderer != null) { + mRenderer.onDrawFrame(mGl); + } + checkGlError(); + mEgl.eglSwapBuffers(mEglDisplay, mEglSurface); + } + + public void setDimensions(int width, int height) { + surfaceWidth = width; + surfaceHeight = height; + } + + private void checkCurrent() { + if (!mEglContext.equals(mEgl.eglGetCurrentContext()) + || !mEglSurface.equals(mEgl + .eglGetCurrentSurface(EGL10.EGL_DRAW))) { + checkEglError(); + if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, + mEglSurface, mEglContext)) { + throw new RuntimeException( + "eglMakeCurrent failed " + + GLUtils.getEGLErrorString(mEgl + .eglGetError())); + } + checkEglError(); + } + } + + private void checkEglError() { + final int error = mEgl.eglGetError(); + if (error != EGL10.EGL_SUCCESS) { + FileLog.e("cannot swap buffers!"); + } + } + + + private void checkGlError() { + final int error = mGl.glGetError(); + if (error != GL11.GL_NO_ERROR) { + FileLog.e("GL error = 0x" + Integer.toHexString(error)); + } + } + + private void initGL() { + + mEgl = (EGL10) EGLContext.getEGL(); + mEglDisplay = mEgl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); + if (mEglDisplay == EGL10.EGL_NO_DISPLAY) { + throw new RuntimeException("eglGetDisplay failed " + + GLUtils.getEGLErrorString(mEgl.eglGetError())); + } + int[] version = new int[2]; + if (!mEgl.eglInitialize(mEglDisplay, version)) { + throw new RuntimeException("eglInitialize failed " + + GLUtils.getEGLErrorString(mEgl.eglGetError())); + } + int[] configsCount = new int[1]; + EGLConfig[] configs = new EGLConfig[1]; + int[] configSpec; + if (EmuDetector.with(getContext()).detect()) { + configSpec = new int[] { + EGL10.EGL_RED_SIZE, 8, + EGL10.EGL_GREEN_SIZE, 8, + EGL10.EGL_BLUE_SIZE, 8, + EGL10.EGL_ALPHA_SIZE, 8, + EGL10.EGL_DEPTH_SIZE, 16, //was 0 + EGL10.EGL_NONE + }; + } else { + configSpec = new int[] { + EGL10.EGL_RENDERABLE_TYPE, + EGL_OPENGL_ES2_BIT, + EGL10.EGL_RED_SIZE, 8, + EGL10.EGL_GREEN_SIZE, 8, + EGL10.EGL_BLUE_SIZE, 8, + EGL10.EGL_ALPHA_SIZE, 8, + EGL10.EGL_DEPTH_SIZE, 16, //was 0 + EGL10.EGL_STENCIL_SIZE, 0, + EGL10.EGL_SAMPLE_BUFFERS, 1, + EGL10.EGL_NONE + }; + } + eglConfig = null; + if (!mEgl.eglChooseConfig(mEglDisplay, configSpec, configs, 1, + configsCount)) { + throw new IllegalArgumentException( + "eglChooseConfig failed " + + GLUtils.getEGLErrorString(mEgl + .eglGetError())); + } else if (configsCount[0] > 0) { + eglConfig = configs[0]; + } + if (eglConfig == null) { + throw new RuntimeException("eglConfig not initialized"); + } + int[] attrib_list = { + EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE + }; + mEglContext = mEgl.eglCreateContext(mEglDisplay, + eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list); + checkEglError(); + mEglSurface = mEgl.eglCreateWindowSurface( + mEglDisplay, eglConfig, mSurface, null); + checkEglError(); + if (mEglSurface == null || mEglSurface == EGL10.EGL_NO_SURFACE) { + int error = mEgl.eglGetError(); + if (error == EGL10.EGL_BAD_NATIVE_WINDOW) { + FileLog.e("eglCreateWindowSurface returned EGL10.EGL_BAD_NATIVE_WINDOW"); + return; + } + throw new RuntimeException( + "eglCreateWindowSurface failed " + + GLUtils.getEGLErrorString(error)); + } + if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, + mEglSurface, mEglContext)) { + throw new RuntimeException("eglMakeCurrent failed " + + GLUtils.getEGLErrorString(mEgl.eglGetError())); + } + checkEglError(); + mGl = (GL10) mEglContext.getGL(); + checkEglError(); + } + + @Override + public void onSurfaceTextureUpdated(SurfaceTexture surface) { + } + + + GestureDetector gestureDetector; + ValueAnimator backAnimation; + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + getParent().requestDisallowInterceptTouchEvent(true); + } else if (event.getAction() == MotionEvent.ACTION_CANCEL || event.getAction() == MotionEvent.ACTION_UP) { + touched = false; + startBackAnimation(); + getParent().requestDisallowInterceptTouchEvent(false); + } + return gestureDetector.onTouchEvent(event); + } + + private void startBackAnimation() { + cancelAnimatons(); + float fromX = mRenderer.angleX; + float fromY = mRenderer.angleY; + float fromX2 = mRenderer.angleX2; + float sum = fromX + fromY; + backAnimation = ValueAnimator.ofFloat(1f, 0f); + backAnimation.addUpdateListener(valueAnimator -> { + float v = (float) valueAnimator.getAnimatedValue(); + mRenderer.angleX = v * fromX; + mRenderer.angleX2 = v * fromX2; + mRenderer.angleY = v * fromY; + + }); + backAnimation.setDuration(600); + backAnimation.setInterpolator(new OvershootInterpolator()); + backAnimation.start(); + if (starParticlesView != null) { + starParticlesView.flingParticles(Math.abs(sum)); + } + scheduleIdleAnimation(idleDelay); + } + + private void cancelAnimatons() { + if (backAnimation != null) { + backAnimation.removeAllListeners(); + backAnimation.cancel(); + backAnimation = null; + } + if (animatorSet != null) { + animatorSet.removeAllListeners(); + animatorSet.cancel(); + animatorSet = null; + } + } + + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + attached = true; + rendererChanged = true; + scheduleIdleAnimation(idleDelay); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + cancelAnimatons(); + attached = false; + } + + AnimatorSet animatorSet = new AnimatorSet(); + + Runnable idleAnimation = new Runnable() { + @Override + public void run() { + if ((animatorSet != null && animatorSet.isRunning()) || (backAnimation != null && backAnimation.isRunning())) { + scheduleIdleAnimation(idleDelay); + } else { + startIdleAnimation(); + } + } + }; + + ValueAnimator.AnimatorUpdateListener xUpdater2 = valueAnimator -> { + mRenderer.angleX2 = (float) valueAnimator.getAnimatedValue(); + }; + + ValueAnimator.AnimatorUpdateListener xUpdater = valueAnimator -> { + mRenderer.angleX = (float) valueAnimator.getAnimatedValue(); + }; + + ValueAnimator.AnimatorUpdateListener yUpdater = valueAnimator -> { + mRenderer.angleY = (float) valueAnimator.getAnimatedValue(); + }; + + private void scheduleIdleAnimation(long time) { + AndroidUtilities.cancelRunOnUIThread(idleAnimation); + if (dialogIsVisible) { + return; + } + AndroidUtilities.runOnUIThread(idleAnimation, time); + } + + + private void startIdleAnimation() { + if (!attached) { + return; + } + + int i = animationIndexes.get(animationPointer); + animationPointer++; + if (animationPointer >= animationIndexes.size()) { + Collections.shuffle(animationIndexes); + animationPointer = 0; + } + + if (i == 0) { + pullAnimation(); + } else if (i == 1) { + slowFlipAination(); + } else if (i == 2) { + sleepAnimation(); + } else { + flipAnimation(); + } + } + + private void slowFlipAination() { + animatorSet = new AnimatorSet(); + ValueAnimator v1 = ValueAnimator.ofFloat(mRenderer.angleX, 360); + v1.addUpdateListener(xUpdater); + v1.setDuration(8000); + v1.setInterpolator(CubicBezierInterpolator.DEFAULT); + + animatorSet.playTogether(v1); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + mRenderer.angleX = 0; + animatorSet = null; + scheduleIdleAnimation(idleDelay); + } + }); + animatorSet.start(); + } + + private void pullAnimation() { + int i = Math.abs(Utilities.random.nextInt() % 4); + animatorSet = new AnimatorSet(); + if (i == 0) { + int a = 48; + + ValueAnimator v1 = ValueAnimator.ofFloat(mRenderer.angleY, a); + v1.addUpdateListener(yUpdater); + v1.setDuration(2300); + v1.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + + + ValueAnimator v2 = ValueAnimator.ofFloat(a, 0); + v2.addUpdateListener(yUpdater); + v2.setDuration(500); + v2.setStartDelay(2300); + v2.setInterpolator(AndroidUtilities.overshootInterpolator); + animatorSet.playTogether(v1, v2); + } else { + int a = 485; + if (i == 2) { + a = -485; + } + ValueAnimator v1 = ValueAnimator.ofFloat(mRenderer.angleY, a); + v1.addUpdateListener(xUpdater); + v1.setDuration(3000); + v1.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + + + ValueAnimator v2 = ValueAnimator.ofFloat(a, 0); + v2.addUpdateListener(xUpdater); + v2.setDuration(1000); + v2.setStartDelay(3000); + v2.setInterpolator(AndroidUtilities.overshootInterpolator); + animatorSet.playTogether(v1, v2); + } + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + mRenderer.angleX = 0; + animatorSet = null; + scheduleIdleAnimation(idleDelay); + } + }); + animatorSet.start(); + } + + private void flipAnimation() { + animatorSet = new AnimatorSet(); + ValueAnimator v1 = ValueAnimator.ofFloat(mRenderer.angleX, 180); + v1.addUpdateListener(xUpdater); + v1.setDuration(600); + v1.setInterpolator(CubicBezierInterpolator.DEFAULT); + + ValueAnimator v2 = ValueAnimator.ofFloat(180, 360); + v2.addUpdateListener(xUpdater); + v2.setDuration(600); + v2.setStartDelay(2000); + v2.setInterpolator(CubicBezierInterpolator.DEFAULT); + animatorSet.playTogether(v1, v2); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + mRenderer.angleX = 0; + animatorSet = null; + scheduleIdleAnimation(idleDelay); + } + }); + animatorSet.start(); + } + + private void sleepAnimation() { + animatorSet = new AnimatorSet(); + ValueAnimator v1 = ValueAnimator.ofFloat(mRenderer.angleX, 184); + v1.addUpdateListener(xUpdater); + v1.setDuration(600); + v1.setInterpolator(CubicBezierInterpolator.EASE_OUT); + + ValueAnimator v2 = ValueAnimator.ofFloat(mRenderer.angleY, 50); + v2.addUpdateListener(yUpdater); + v2.setDuration(600); + v2.setInterpolator(CubicBezierInterpolator.EASE_OUT); + + + ValueAnimator v3 = ValueAnimator.ofFloat(180, 0); + v3.addUpdateListener(xUpdater); + v3.setDuration(800); + v3.setStartDelay(10000); + v3.setInterpolator(AndroidUtilities.overshootInterpolator); + + ValueAnimator v4 = ValueAnimator.ofFloat(60, 0); + v4.addUpdateListener(yUpdater); + v4.setDuration(800); + v4.setStartDelay(10000); + v4.setInterpolator(AndroidUtilities.overshootInterpolator); + + ValueAnimator v5 = ValueAnimator.ofFloat(0, 2, -3, 2, -1, 2, -3, 2, -1, 0); + v5.addUpdateListener(xUpdater2); + v5.setDuration(10000); + v5.setInterpolator(new LinearInterpolator()); + + + animatorSet.playTogether(v1, v2, v3, v4, v5); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + mRenderer.angleX = 0; + animatorSet = null; + scheduleIdleAnimation(idleDelay); + } + }); + animatorSet.start(); + } + + public void setStarParticlesView(StarParticlesView starParticlesView) { + this.starParticlesView = starParticlesView; + } + + public void startEnterAnimation(int angle, long delay) { + if (mRenderer != null) { + mRenderer.angleX = -180; + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + startBackAnimation(); + } + }, delay); + + } + } + + public void setDialogVisible(boolean isVisible) { + dialogIsVisible = isVisible; + if (isVisible) { + AndroidUtilities.cancelRunOnUIThread(idleAnimation); + startBackAnimation(); + } else { + scheduleIdleAnimation(idleDelay); + } + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/ObjLoader.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/ObjLoader.java new file mode 100644 index 000000000..527b7fa9f --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/ObjLoader.java @@ -0,0 +1,69 @@ +package org.telegram.ui.Components.Premium.GLIcon; + +import android.content.Context; + +import java.io.DataInputStream; +import java.io.IOException; +import java.util.ArrayList; + +public final class ObjLoader { + + public int numFaces; + + public float[] normals; + public float[] textureCoordinates; + public float[] positions; + + public ObjLoader(Context context, String file) { + ArrayList vertices = new ArrayList<>(); + ArrayList normals = new ArrayList<>(); + ArrayList textures = new ArrayList<>(); + + try { + DataInputStream inputStream = new DataInputStream(context.getAssets().open(file)); + int n = inputStream.readInt(); + for (int i = 0; i < n; i++) { + vertices.add(inputStream.readFloat()); + } + + n = inputStream.readInt(); + for (int i = 0; i < n; i++) { + textures.add(inputStream.readFloat()); + } + + n = inputStream.readInt(); + for (int i = 0; i < n; i++) { + normals.add(inputStream.readFloat()); + } + + n = inputStream.readInt(); + + numFaces = n; + this.normals = new float[numFaces * 3]; + textureCoordinates = new float[numFaces * 2]; + positions = new float[numFaces * 3]; + int positionIndex = 0; + int normalIndex = 0; + int textureIndex = 0; + + for (int i = 0; i < n; i++) { + int index = 3 * inputStream.readInt(); + positions[positionIndex++] = vertices.get(index++); + positions[positionIndex++] = vertices.get(index++); + positions[positionIndex++] = vertices.get(index); + + index = 2 * inputStream.readInt(); + textureCoordinates[normalIndex++] = textures.get(index++); + textureCoordinates[normalIndex++] = 1 - textures.get(index); + + index = 3 * inputStream.readInt(); + this.normals[textureIndex++] = normals.get(index++); + this.normals[textureIndex++] = normals.get(index++); + this.normals[textureIndex++] = normals.get(index); + } + + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/Star3DIcon.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/Star3DIcon.java new file mode 100644 index 000000000..a67f527a3 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/GLIcon/Star3DIcon.java @@ -0,0 +1,280 @@ +package org.telegram.ui.Components.Premium.GLIcon; + +import android.content.Context; +import android.content.res.AssetManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.LinearGradient; +import android.graphics.Paint; +import android.graphics.Shader; +import android.opengl.GLES20; +import android.opengl.GLUtils; + +import org.telegram.ui.ActionBar.Theme; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; +import java.nio.charset.StandardCharsets; + +public class Star3DIcon { + private int mProgramObject; + private int mMVPMatrixHandle; + private int mWorldMatrixHandle; + private FloatBuffer mVertices; + private FloatBuffer mTextures; + private FloatBuffer mNormals; + + private int mTextureUniformHandle; + private int mNormalMapUniformHandle; + private int mBackgroundTextureUniformHandle; + private int mBackgroundTextureHandle; + private int mTextureCoordinateHandle; + private int mNormalCoordinateHandle; + private int xOffsetHandle; + private int alphaHandle; + private int mTextureDataHandle; + float xOffset; + + int trianglesCount; + float enterAlpha = 0f; + + public float spec1 = 0f; + public float spec2 = 0f; + public float diffuse = 1f; + public int gradientColor1; + public int gradientColor2; + public float normalSpec = 0.2f; + public int normalSpecColor = Color.WHITE; + public int specColor = Color.WHITE; + + int specHandleTop; + int specHandleBottom; + int diffuseHandle; + int gradientColor1Handle; + int gradientColor2Handle; + int normalSpecHandle; + int normalSpecColorHandle; + int specColorHandle; + int resolutionHandle; + int gradientPositionHandle; + + Bitmap texture; + Bitmap backgroundBitmap; + + public Star3DIcon(Context context) { + ObjLoader starObj = new ObjLoader(context, "models/star.binobj"); + + mVertices = ByteBuffer.allocateDirect(starObj.positions.length * 4) + .order(ByteOrder.nativeOrder()).asFloatBuffer(); + mVertices.put(starObj.positions).position(0); + + mTextures = ByteBuffer.allocateDirect(starObj.textureCoordinates.length * 4) + .order(ByteOrder.nativeOrder()).asFloatBuffer(); + mTextures.put(starObj.textureCoordinates).position(0); + + mNormals = ByteBuffer.allocateDirect(starObj.normals.length * 4) + .order(ByteOrder.nativeOrder()).asFloatBuffer(); + mNormals.put(starObj.normals).position(0); + + trianglesCount = starObj.positions.length; + + generateTexture(); + + int vertexShader; + int fragmentShader; + int programObject; + int[] linked = new int[1]; + + vertexShader = GLIconRenderer.loadShader(GLES20.GL_VERTEX_SHADER, loadFromAsset(context, "shaders/vertex2.glsl")); + fragmentShader = GLIconRenderer.loadShader(GLES20.GL_FRAGMENT_SHADER, loadFromAsset(context, "shaders/fragment2.glsl")); + + programObject = GLES20.glCreateProgram(); + GLES20.glAttachShader(programObject, vertexShader); + GLES20.glAttachShader(programObject, fragmentShader); + GLES20.glBindAttribLocation(programObject, 0, "vPosition"); + GLES20.glLinkProgram(programObject); + GLES20.glGetProgramiv(programObject, GLES20.GL_LINK_STATUS, linked, 0); + + mProgramObject = programObject; + init(context); + } + + private void init(Context context) { + GLES20.glUseProgram(mProgramObject); + + mTextureCoordinateHandle = GLES20.glGetAttribLocation(mProgramObject, "a_TexCoordinate"); + mNormalCoordinateHandle = GLES20.glGetAttribLocation(mProgramObject, "a_Normal"); + + mTextureUniformHandle = GLES20.glGetUniformLocation(mProgramObject, "u_Texture"); + mNormalMapUniformHandle = GLES20.glGetUniformLocation(mProgramObject, "u_NormalMap"); + mBackgroundTextureUniformHandle = GLES20.glGetUniformLocation(mProgramObject, "u_BackgroundTexture"); + xOffsetHandle = GLES20.glGetUniformLocation(mProgramObject, "f_xOffset"); + alphaHandle = GLES20.glGetUniformLocation(mProgramObject, "f_alpha"); + mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgramObject, "uMVPMatrix"); + mWorldMatrixHandle = GLES20.glGetUniformLocation(mProgramObject, "world"); + + specHandleTop = GLES20.glGetUniformLocation(mProgramObject, "spec1"); + specHandleBottom = GLES20.glGetUniformLocation(mProgramObject, "spec2"); + diffuseHandle = GLES20.glGetUniformLocation(mProgramObject, "u_diffuse"); + gradientColor1Handle = GLES20.glGetUniformLocation(mProgramObject, "gradientColor1"); + gradientColor2Handle = GLES20.glGetUniformLocation(mProgramObject, "gradientColor2"); + normalSpecColorHandle = GLES20.glGetUniformLocation(mProgramObject, "normalSpecColor"); + normalSpecHandle = GLES20.glGetUniformLocation(mProgramObject, "normalSpec"); + specColorHandle = GLES20.glGetUniformLocation(mProgramObject, "specColor"); + resolutionHandle = GLES20.glGetUniformLocation(mProgramObject, "resolution"); + gradientPositionHandle = GLES20.glGetUniformLocation(mProgramObject, "gradientPosition"); + + mTextures.position(0); + GLES20.glVertexAttribPointer(mTextureCoordinateHandle, 2, GLES20.GL_FLOAT, false, 0, mTextures); + GLES20.glEnableVertexAttribArray(mTextureCoordinateHandle); + + mNormals.position(0); + GLES20.glVertexAttribPointer(mNormalCoordinateHandle, 3, GLES20.GL_FLOAT, false, 0, mNormals); + GLES20.glEnableVertexAttribArray(mNormalCoordinateHandle); + + mVertices.position(0); + GLES20.glVertexAttribPointer(0, 3, GLES20.GL_FLOAT, false, 0, mVertices); + GLES20.glEnableVertexAttribArray(0); + + GLES20.glActiveTexture(GLES20.GL_TEXTURE0); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureDataHandle); + + Bitmap bitmap1 = getBitmapFromAsset(context, "flecks.png"); + + final int[] normalMap = new int[1]; + GLES20.glGenTextures(1, normalMap, 0); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, normalMap[0]); + + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); + + GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap1, 0); + bitmap1.recycle(); + + final int[] backgroundBitmapHandel = new int[1]; + GLES20.glGenTextures(1, backgroundBitmapHandel, 0); + mBackgroundTextureHandle = backgroundBitmapHandel[0]; + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, backgroundBitmapHandel[0]); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mBackgroundTextureHandle); + + + GLES20.glActiveTexture(GLES20.GL_TEXTURE1); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, normalMap[0]); + GLES20.glUniform1i(mNormalMapUniformHandle, 1); + + GLES20.glActiveTexture(GLES20.GL_TEXTURE2); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, backgroundBitmapHandel[0]); + GLES20.glUniform1i(mBackgroundTextureUniformHandle, 2); + + } + + private void generateTexture() { + texture = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(texture); + Paint paint = new Paint(); + paint.setShader(new LinearGradient(0, 100, 150, 0, new int[]{Theme.getColor(Theme.key_premiumGradient1), Theme.getColor(Theme.key_premiumGradient2), Theme.getColor(Theme.key_premiumGradient3), Theme.getColor(Theme.key_premiumGradient4)}, new float[]{0, 0.5f, 0.78f, 1f}, Shader.TileMode.CLAMP)); + canvas.drawRect(0, 0, 100, 100, paint); + + final int[] textureHandle = new int[1]; + GLES20.glGenTextures(1, textureHandle, 0); + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[0]); + + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); + GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); + + GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, texture, 0); + mTextureDataHandle = textureHandle[0]; + } + + public void draw(float[] mvpMatrix, float[] worldMatrix, int width, int height, float gradientStartX, float gradientScaleX, float gradientStartY, float gradientScaleY) { + if (backgroundBitmap != null) { + GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mBackgroundTextureHandle); + GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, backgroundBitmap, 0); + backgroundBitmap = null; + } + GLES20.glUniform1i(mTextureUniformHandle, 0); + GLES20.glUniform1f(xOffsetHandle, xOffset); + GLES20.glUniform1f(alphaHandle, enterAlpha); + GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0); + GLES20.glUniformMatrix4fv(mWorldMatrixHandle, 1, false, worldMatrix, 0); + GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, trianglesCount / 3); + + GLES20.glUniform1f(specHandleTop, spec1); + GLES20.glUniform1f(specHandleBottom, spec2); + GLES20.glUniform1f(diffuseHandle, diffuse); + GLES20.glUniform1f(normalSpecHandle, normalSpec); + + GLES20.glUniform3f(gradientColor1Handle, Color.red(gradientColor1) / 255f, Color.green(gradientColor1) / 255f, Color.blue(gradientColor1) / 255f); + GLES20.glUniform3f(gradientColor2Handle, Color.red(gradientColor2) / 255f, Color.green(gradientColor2) / 255f, Color.blue(gradientColor2) / 255f); + GLES20.glUniform3f(normalSpecColorHandle, Color.red(normalSpecColor) / 255f, Color.green(normalSpecColor) / 255f, Color.blue(normalSpecColor) / 255f); + GLES20.glUniform3f(specColorHandle, Color.red(specColor) / 255f, Color.green(specColor) / 255f, Color.blue(specColor) / 255f); + GLES20.glUniform2f(resolutionHandle, width, height); + GLES20.glUniform4f(gradientPositionHandle, gradientStartX, gradientScaleX, gradientStartY, gradientScaleY); + + if (enterAlpha < 1f) { + enterAlpha += 16 / 220f; + if (enterAlpha > 1) { + enterAlpha = 1f; + } + } + xOffset += 0.0005f; + if (xOffset > 1) { + xOffset -= 1f; + } + } + + public String loadFromAsset(Context context, String name) { + StringBuilder sb = new StringBuilder(); + InputStream is = null; + try { + is = context.getAssets().open(name); + + BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); + String str; + while ((str = br.readLine()) != null) { + if (str.startsWith("//")) { + continue; + } + sb.append(str); + } + br.close(); + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return sb.toString(); + } + + public static Bitmap getBitmapFromAsset(Context context, String filePath) { + AssetManager assetManager = context.getAssets(); + + InputStream istr; + Bitmap bitmap = null; + try { + istr = assetManager.open(filePath); + bitmap = BitmapFactory.decodeStream(istr); + } catch (IOException e) { + // handle exception + } + + return bitmap; + } + + public void setBackground(Bitmap gradientTextureBitmap) { + backgroundBitmap = gradientTextureBitmap; + } + + public void destroy() { + GLES20.glDeleteProgram(mProgramObject); + } + +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitPreviewView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitPreviewView.java new file mode 100644 index 000000000..95178df81 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitPreviewView.java @@ -0,0 +1,523 @@ +package org.telegram.ui.Components.Premium; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.CornerPathEffect; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PathEffect; +import android.text.Layout; +import android.text.SpannableStringBuilder; +import android.text.StaticLayout; +import android.text.TextPaint; +import android.view.Gravity; +import android.view.HapticFeedbackConstants; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.OvershootInterpolator; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.messenger.Utilities; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.ColoredImageSpan; +import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.EmptyStubSpan; +import org.telegram.ui.Components.LayoutHelper; + +import java.util.ArrayList; + +public class LimitPreviewView extends LinearLayout { + + public int gradientTotalHeight; + boolean wasAnimation; + CounterView limitIcon; + + boolean inc; + float progress; + + int icon; + + TextView premiumCount; + TextView defaultCount; + private float position; + private View parentVideForGradient; + PremiumGradient.GradientTools staticGradient; + int gradientYOffset; + boolean wasHaptic; + boolean animationCanPlay = true; + LinearLayout limitsContainer; + private boolean premiumLocked; + + @SuppressLint("SetTextI18n") + public LimitPreviewView(@NonNull Context context, int icon, int currentValue, int premiumLimit) { + super(context); + this.icon = icon; + setOrientation(VERTICAL); + setClipChildren(false); + setClipToPadding(false); + if (icon != 0) { + setPadding(0, AndroidUtilities.dp(16), 0, 0); + limitIcon = new CounterView(context); + + setIconValue(currentValue); + + limitIcon.setPadding(AndroidUtilities.dp(24), AndroidUtilities.dp(6), AndroidUtilities.dp(24), AndroidUtilities.dp(14)); + addView(limitIcon, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, Gravity.LEFT)); + } + limitsContainer = new LinearLayout(context) { + + Paint grayPaint = new Paint(); + + @Override + protected void dispatchDraw(Canvas canvas) { + grayPaint.setColor(Theme.getColor(Theme.key_windowBackgroundGray)); + AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(6), AndroidUtilities.dp(6), grayPaint); + + canvas.save(); + canvas.clipRect(getMeasuredWidth() / 2f, 0, getMeasuredWidth(), getMeasuredHeight()); + Paint paint = PremiumGradient.getInstance().getMainGradientPaint(); + if (parentVideForGradient != null) { + View parent = parentVideForGradient; + if (staticGradient != null) { + paint = staticGradient.paint; + staticGradient.gradientMatrixLinear(gradientTotalHeight, -gradientYOffset); + } else { + float y = 0; + View child = this; + while (child != parent) { + y += child.getY(); + child = (View) child.getParent(); + } + PremiumGradient.getInstance().updateMainGradientMatrix(0, 0, parent.getMeasuredWidth(), parent.getMeasuredHeight(), getGlobalXOffset() - getLeft(), -y); + } + + } else { + PremiumGradient.getInstance().updateMainGradientMatrix(0, 0, LimitPreviewView.this.getMeasuredWidth(), LimitPreviewView.this.getMeasuredHeight(), getGlobalXOffset() - getLeft(), -getTop()); + } + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(6), AndroidUtilities.dp(6), paint); + canvas.restore(); + if (staticGradient == null) { + invalidate(); + } + super.dispatchDraw(canvas); + } + }; + limitsContainer.setOrientation(LinearLayout.HORIZONTAL); + + FrameLayout limitLayout = new FrameLayout(context); + + TextView freeTextView = new TextView(context); + freeTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + freeTextView.setText(LocaleController.getString("LimitFree", R.string.LimitFree)); + freeTextView.setGravity(Gravity.CENTER_VERTICAL); + freeTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + freeTextView.setPadding(AndroidUtilities.dp(12), 0, 0, 0); + + defaultCount = new TextView(context); + defaultCount.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + defaultCount.setText(Integer.toString(premiumLimit)); + defaultCount.setGravity(Gravity.CENTER_VERTICAL); + defaultCount.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + + limitLayout.addView(freeTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 30, Gravity.LEFT, 0, 0, 36, 0)); + limitLayout.addView(defaultCount, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, 30, Gravity.RIGHT, 0, 0, 12, 0)); + + limitsContainer.addView(limitLayout, LayoutHelper.createLinear(0, 30, 1f)); + + FrameLayout limitLayout2 = new FrameLayout(context); + + TextView limitTextView = new TextView(context); + limitTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + limitTextView.setText(LocaleController.getString("LimitPremium", R.string.LimitPremium)); + limitTextView.setGravity(Gravity.CENTER_VERTICAL); + limitTextView.setTextColor(Color.WHITE); + limitTextView.setPadding(AndroidUtilities.dp(12), 0, 0, 0); + + premiumCount = new TextView(context); + premiumCount.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + premiumCount.setText(Integer.toString(premiumLimit)); + premiumCount.setGravity(Gravity.CENTER_VERTICAL); + premiumCount.setTextColor(Color.WHITE); + + limitLayout2.addView(limitTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 30, Gravity.LEFT, 0, 0, 36, 0)); + limitLayout2.addView(premiumCount, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, 30, Gravity.RIGHT, 0, 0, 12, 0)); + + limitsContainer.addView(limitLayout2, LayoutHelper.createLinear(0, 30, 1f)); + + addView(limitsContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 14, icon == 0 ? 0 : 12, 14, 0)); + } + + public void setIconValue(int currentValue) { + SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); + spannableStringBuilder.append("d ").setSpan(new ColoredImageSpan(icon), 0, 1, 0); + spannableStringBuilder.append(Integer.toString(currentValue)); + limitIcon.setText(spannableStringBuilder); + } + + private float getGlobalXOffset() { + return -LimitPreviewView.this.getMeasuredWidth() * 0.1f * progress - LimitPreviewView.this.getMeasuredWidth() * 0.2f; + } + + @Override + protected void dispatchDraw(Canvas canvas) { + if (staticGradient == null) { + if (inc) { + progress += 16f / 1000f; + if (progress > 3) { + inc = false; + } + } else { + progress -= 16f / 1000f; + if (progress < 1) { + inc = true; + } + } + invalidate(); + } + super.dispatchDraw(canvas); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + super.onLayout(changed, l, t, r, b); + if (!wasAnimation && limitIcon != null && animationCanPlay && !premiumLocked) { + int padding = AndroidUtilities.dp(14); + float fromX = 0; + float toX = padding + (getMeasuredWidth() - padding * 2) * position - limitIcon.getMeasuredWidth() / 2f; + float fromProgressCenter = 0.5f; + float toProgressCenter = 0.5f; + if (toX > getMeasuredWidth() - padding - limitIcon.getMeasuredWidth()) { + toX = getMeasuredWidth() - padding - limitIcon.getMeasuredWidth(); + toProgressCenter = 1f; + } + limitIcon.setAlpha(1f); + limitIcon.setTranslationX(fromX); + limitIcon.setPivotX(limitIcon.getMeasuredWidth() / 2f); + limitIcon.setPivotY(limitIcon.getMeasuredHeight()); + limitIcon.setScaleX(0); + limitIcon.setScaleY(0); + limitIcon.createAnimationLayouts(); + + ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1f); + float finalToX = toX; + float finalToProgressCenter = toProgressCenter; + valueAnimator.addUpdateListener(animation -> { + float v = (float) animation.getAnimatedValue(); + float moveValue = Math.min(1f, v); + if (v > 1f) { + if (!wasHaptic) { + wasHaptic = true; + limitIcon.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP); + } + limitIcon.setRotation((v - 1f) * 60); + } else { + limitIcon.setRotation(0); + } + limitIcon.setTranslationX(fromX * (1f - moveValue) + finalToX * moveValue); + float arrowCenter = fromProgressCenter * (1f - moveValue) + finalToProgressCenter * moveValue; + limitIcon.setArrowCenter(arrowCenter); + float scale = Math.min(1, moveValue * 2f); + limitIcon.setScaleX(scale); + limitIcon.setScaleY(scale); + limitIcon.setPivotX(limitIcon.getMeasuredWidth() * arrowCenter); + }); + + valueAnimator.setInterpolator(new OvershootInterpolator()); + valueAnimator.setDuration(1000); + valueAnimator.setStartDelay(200); + valueAnimator.start(); + + wasAnimation = true; + } else if (premiumLocked) { + int padding = AndroidUtilities.dp(14); + float toX = padding + (getMeasuredWidth() - padding * 2) * 0.5f - limitIcon.getMeasuredWidth() / 2f; + if (!wasAnimation && animationCanPlay) { + wasAnimation = true; + limitIcon.animate().alpha(1).scaleX(1).scaleY(1).setDuration(200).setInterpolator(new OvershootInterpolator()).start(); + } else if (!wasAnimation) { + limitIcon.setAlpha(0); + limitIcon.setScaleX(0); + limitIcon.setScaleY(0); + } else { + limitIcon.setAlpha(1f); + limitIcon.setScaleX(1f); + limitIcon.setScaleY(1f); + } + limitIcon.setTranslationX(toX); + } else if (limitIcon != null){ + limitIcon.setAlpha(0); + } + } + + public void setType(int type) { + if (type == LimitReachedBottomSheet.TYPE_LARGE_FILE) { + if (limitIcon != null) { + SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); + spannableStringBuilder.append("d ").setSpan(new ColoredImageSpan(icon), 0, 1, 0); + spannableStringBuilder.append(UserConfig.getInstance(UserConfig.selectedAccount).isPremium() ? "4 GB" : "2 GB"); + limitIcon.setText(spannableStringBuilder); + } + premiumCount.setText("4 GB"); + } + } + + public void setBagePosition(float position) { + this.position = position; + } + + public void setParentViewForGradien(ViewGroup containerView) { + parentVideForGradient = containerView; + } + + public void setStaticGradinet(PremiumGradient.GradientTools gradientTools) { + staticGradient = gradientTools; + } + + public void setDelayedAnimation() { + animationCanPlay = false; + } + + public void startDelayedAnimation() { + animationCanPlay = true; + requestLayout(); + } + + public void setPremiumLocked() { + limitsContainer.setVisibility(View.GONE); + limitIcon.setPadding(AndroidUtilities.dp(24), AndroidUtilities.dp(3), AndroidUtilities.dp(24), AndroidUtilities.dp(3)); + premiumLocked = true; + } + + private class LimitTextView extends LinearLayout { + + public LimitTextView(Context context) { + super(context); + } + + } + + private class CounterView extends View { + + Path path = new Path(); + PathEffect pathEffect = new CornerPathEffect(AndroidUtilities.dp(6)); + TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + + StaticLayout textLayout; + float textWidth; + CharSequence text; + + ArrayList animatedLayouts = new ArrayList(); + StaticLayout animatedStableLayout; + boolean animationInProgress; + + float arrowCenter; + boolean invalidatePath; + + public CounterView(Context context) { + super(context); + textPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + textPaint.setTextSize(AndroidUtilities.dp(22)); + textPaint.setColor(Color.WHITE); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + textWidth = textPaint.measureText(text, 0, text.length()); + textLayout = new StaticLayout(text, textPaint, (int) textWidth + AndroidUtilities.dp(12), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + setMeasuredDimension((int) (textWidth + getPaddingRight() + getPaddingLeft()), AndroidUtilities.dp(44) + AndroidUtilities.dp(8)); + updatePath(); + } + + private void updatePath() { + int h = getMeasuredHeight() - AndroidUtilities.dp(8); + float widthHalf = getMeasuredWidth() * arrowCenter; + float x2 = Utilities.clamp(widthHalf + AndroidUtilities.dp(8), getMeasuredWidth(), 0); + float x3 = Utilities.clamp(widthHalf + AndroidUtilities.dp(10), getMeasuredWidth(), 0); + + path.rewind(); + path.moveTo(widthHalf - AndroidUtilities.dp(24), h - h / 2f - AndroidUtilities.dp(2)); + path.lineTo(widthHalf - AndroidUtilities.dp(24), h); + path.lineTo(widthHalf - AndroidUtilities.dp(8), h); + path.lineTo(widthHalf, h + AndroidUtilities.dp(8)); + if (arrowCenter < 0.7f) { + path.lineTo(x2, h); + } + path.lineTo(x3, h); + path.lineTo(x3, h - h / 2f - AndroidUtilities.dp(2)); + path.close(); + } + + @Override + protected void onDraw(Canvas canvas) { + int h = getMeasuredHeight() - AndroidUtilities.dp(8); + if (premiumLocked) { + h = getMeasuredHeight(); + PremiumGradient.getInstance().updateMainGradientMatrix(0, 0, LimitPreviewView.this.getMeasuredWidth(), LimitPreviewView.this.getMeasuredHeight(), getGlobalXOffset() - getX(), -getTop()); + AndroidUtilities.rectTmp.set(0, AndroidUtilities.dp(3), getMeasuredWidth(), h - AndroidUtilities.dp(3)); + canvas.drawRoundRect(AndroidUtilities.rectTmp, h / 2f, h / 2f, PremiumGradient.getInstance().getMainGradientPaint()); + } else { + if (invalidatePath) { + invalidatePath = false; + updatePath(); + } + PremiumGradient.getInstance().updateMainGradientMatrix(0, 0, LimitPreviewView.this.getMeasuredWidth(), LimitPreviewView.this.getMeasuredHeight(), getGlobalXOffset() - getX(), -getTop()); + AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), h); + canvas.drawRoundRect(AndroidUtilities.rectTmp, h / 2f, h / 2f, PremiumGradient.getInstance().getMainGradientPaint()); + PremiumGradient.getInstance().getMainGradientPaint().setPathEffect(pathEffect); + canvas.drawPath(path, PremiumGradient.getInstance().getMainGradientPaint()); + PremiumGradient.getInstance().getMainGradientPaint().setPathEffect(null); + invalidate(); + } + + float x = (getMeasuredWidth() - textLayout.getWidth()) / 2f; + float y = (h - textLayout.getHeight()) / 2f; + if (!animationInProgress) { + if (textLayout != null) { + canvas.save(); + canvas.translate(x, y); + textLayout.draw(canvas); + canvas.restore(); + } + } else { + canvas.save(); + canvas.clipRect(0, 0, getMeasuredWidth(), getMeasuredHeight() - AndroidUtilities.dp(8)); + if (animatedStableLayout != null) { + canvas.save(); + canvas.translate(x, y); + animatedStableLayout.draw(canvas); + canvas.restore(); + } + for (int i = 0; i < animatedLayouts.size(); i++) { + AnimatedLayout animatedLayout = animatedLayouts.get(i); + canvas.save(); + if (animatedLayout.direction) { + canvas.translate(x + animatedLayout.x, y - h * 10 * animatedLayout.progress + h * (10 - animatedLayout.staticLayouts.size())); + for (int j = 0; j < animatedLayout.staticLayouts.size(); j++) { + canvas.translate(0, h); + animatedLayout.staticLayouts.get(j).draw(canvas); + } + } else { + canvas.translate(x + animatedLayout.x, y + h * 10 * animatedLayout.progress - h * (10 - animatedLayout.staticLayouts.size())); + for (int j = 0; j < animatedLayout.staticLayouts.size(); j++) { + canvas.translate(0, -h); + animatedLayout.staticLayouts.get(j).draw(canvas); + } + } + canvas.restore(); + } + + canvas.restore(); + } + } + + @Override + public void setTranslationX(float translationX) { + if (translationX != getTranslationX()) { + super.setTranslationX(translationX); + invalidate(); + } + } + + void createAnimationLayouts() { + animatedLayouts.clear(); + SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(text); + + boolean direction = true; + int directionCount = 0; + for (int i = 0; i < text.length(); i++) { + if (Character.isDigit(text.charAt(i))) { + AnimatedLayout animatedLayout = new AnimatedLayout(); + animatedLayouts.add(animatedLayout); + animatedLayout.x = textLayout.getSecondaryHorizontal(i); + animatedLayout.direction = direction; + if (directionCount >= 1) { + direction = !direction; + directionCount = 0; + } + directionCount++; + + int digit = text.charAt(i) - '0'; + if (digit == 0) { + digit = 10; + } + for (int j = 1; j <= digit; j++) { + int k = j; + if (k == 10) { + k = 0; + } + String str = "" + k; + StaticLayout staticLayout = new StaticLayout(str, textPaint, (int) textWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + animatedLayout.staticLayouts.add(staticLayout); + } + spannableStringBuilder.setSpan(new EmptyStubSpan(), i, i + 1, 0); + } + } + animatedStableLayout = new StaticLayout(spannableStringBuilder, textPaint, (int) textWidth + AndroidUtilities.dp(12), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + for (int i = 0; i < animatedLayouts.size(); i++) { + animationInProgress = true; + AnimatedLayout layout = animatedLayouts.get(i); + layout.valueAnimator = ValueAnimator.ofFloat(0, 1f); + layout.valueAnimator.addUpdateListener(animation -> { + layout.progress = (float) animation.getAnimatedValue(); + invalidate(); + }); + layout.valueAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + layout.valueAnimator = null; + checkAnimationComplete(); + } + }); + layout.valueAnimator.setInterpolator(CubicBezierInterpolator.EASE_OUT); + layout.valueAnimator.setDuration(750); + layout.valueAnimator.setStartDelay((animatedLayouts.size() - 1 - i) * 60L); + layout.valueAnimator.start(); + } + } + + private void checkAnimationComplete() { + for (int i = 0; i < animatedLayouts.size(); i++) { + if (animatedLayouts.get(i).valueAnimator != null) { + return; + } + } + animatedLayouts.clear(); + animationInProgress = false; + invalidate(); + } + + public void setText(CharSequence text) { + this.text = text; + } + + public void setArrowCenter(float v) { + if (arrowCenter != v) { + arrowCenter = v; + invalidatePath = true; + invalidate(); + } + } + + private class AnimatedLayout { + ArrayList staticLayouts = new ArrayList<>(); + float progress; + public boolean direction; + float x; + ValueAnimator valueAnimator; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitReachedBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitReachedBottomSheet.java new file mode 100644 index 000000000..a1867019c --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitReachedBottomSheet.java @@ -0,0 +1,714 @@ +package org.telegram.ui.Components.Premium; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Canvas; +import android.text.SpannableStringBuilder; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.HapticFeedbackConstants; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ChatObject; +import org.telegram.messenger.FileLoader; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MessagesController; +import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.AlertDialog; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Cells.AdminedChannelCell; +import org.telegram.ui.Cells.GroupCreateUserCell; +import org.telegram.ui.Cells.HeaderCell; +import org.telegram.ui.Cells.ShadowSectionCell; +import org.telegram.ui.Components.BottomSheetWithRecyclerListView; +import org.telegram.ui.Components.ColoredImageSpan; +import org.telegram.ui.Components.FlickerLoadingView; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.RecyclerItemsEnterAnimator; +import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.PremiumPreviewFragment; + +import java.util.ArrayList; +import java.util.HashSet; + +public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { + + public static final int TYPE_PIN_DIALOGS = 0; + public static final int TYPE_PUBLIC_LINKS = 2; + public static final int TYPE_FOLDERS = 3; + public static final int TYPE_CHATS_IN_FOLDER = 4; + public static final int TYPE_TO_MANY_COMMUNITIES = 5; + public static final int TYPE_LARGE_FILE = 6; + public static final int TYPE_ACCOUNTS = 7; + + public static final int TYPE_CAPTION = 8; + public static final int TYPE_GIFS = 9; + public static final int TYPE_STICKERS = 10; + + public static String limitTypeToServerString(int type) { + switch (type) { + case TYPE_PIN_DIALOGS: + return "double_limits__dialog_pinned"; + case TYPE_TO_MANY_COMMUNITIES: + return "double_limits__channels"; + case TYPE_PUBLIC_LINKS: + return "double_limits__channels_public"; + case TYPE_FOLDERS: + return "double_limits__dialog_filters"; + case TYPE_CHATS_IN_FOLDER: + return "double_limits__dialog_filters_chats"; + case TYPE_LARGE_FILE: + return "double_limits__upload_max_fileparts"; + case TYPE_CAPTION: + return "double_limits__caption_length"; + case TYPE_GIFS: + return "double_limits__saved_gifs"; + case TYPE_STICKERS: + return "double_limits__stickers_faved"; + } + return null; + } + + final int type; + ArrayList chats = new ArrayList<>(); + + int rowCount; + int headerRow = -1; + int dividerRow = -1; + int chatsTitleRow = -1; + int chatStartRow = -1; + int loadingRow = -1; + + public boolean parentIsChannel; + private int currentValue = -1; + LimitPreviewView limitPreviewView; + HashSet selectedChats = new HashSet<>(); + + private ArrayList inactiveChats = new ArrayList<>(); + private ArrayList inactiveChatsSignatures = new ArrayList<>(); + + PremiumButtonView premiumButtonView; + public Runnable onSuccessRunnable; + public Runnable onShowPremiumScreenRunnable; + private boolean loading = false; + RecyclerItemsEnterAnimator enterAnimator; + BaseFragment parentFragment; + View divider; + LimitParams limitParams; + private boolean isVeryLargeFile; + + public LimitReachedBottomSheet(BaseFragment fragment, Context context, int type, int currentAccount) { + super(fragment, false, hasFixedSize(type)); + fixNavigationBar(); + parentFragment = fragment; + this.type = type; + this.currentAccount = currentAccount; + updateRows(); + if (type == TYPE_PUBLIC_LINKS) { + loadAdminedChannels(); + } else if (type == TYPE_TO_MANY_COMMUNITIES) { + loadInactiveChannels(); + } + } + + @Override + public void onViewCreated(FrameLayout containerView) { + super.onViewCreated(containerView); + Context context = containerView.getContext(); + + premiumButtonView = new PremiumButtonView(context, true); + updatePremiumButtonText(); + + if (!hasFixedSize) { + divider = new View(context) { + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawRect(0, 0, getMeasuredWidth(), 1, Theme.dividerPaint); + } + }; + divider.setBackgroundColor(Theme.getColor(Theme.key_dialogBackground)); + containerView.addView(divider, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 72, Gravity.BOTTOM, 0, 0, 0, 0)); + } + containerView.addView(premiumButtonView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM, 16, 0, 16, 12)); + recyclerListView.setPadding(0, 0, 0, AndroidUtilities.dp(72)); + recyclerListView.setOnItemClickListener((view, position) -> { + if (view instanceof AdminedChannelCell) { + AdminedChannelCell adminedChannelCell = ((AdminedChannelCell) view); + TLRPC.Chat chat = adminedChannelCell.getCurrentChannel(); + if (selectedChats.contains(chat)) { + selectedChats.remove(chat); + } else { + selectedChats.add(chat); + } + adminedChannelCell.setChecked(selectedChats.contains(chat), true); + updateButton(); + } else if (view instanceof GroupCreateUserCell) { + GroupCreateUserCell cell = (GroupCreateUserCell) view; + TLRPC.Chat chat = (TLRPC.Chat) cell.getObject(); + if (selectedChats.contains(chat)) { + selectedChats.remove(chat); + } else { + selectedChats.add(chat); + } + cell.setChecked(selectedChats.contains(chat), true); + updateButton(); + } + }); + recyclerListView.setOnItemLongClickListener((view, position) -> { + recyclerListView.getOnItemClickListener().onItemClick(view, position); + view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + return false; + }); + premiumButtonView.buttonLayout.setOnClickListener(v -> { + if (UserConfig.getInstance(currentAccount).isPremium() || MessagesController.getInstance(currentAccount).premiumLocked || isVeryLargeFile) { + dismiss(); + return; + } + if (parentFragment == null) { + return; + } + if (parentFragment.getVisibleDialog() != null) { + parentFragment.getVisibleDialog().dismiss(); + } + parentFragment.presentFragment(new PremiumPreviewFragment(limitTypeToServerString(type))); + if (onShowPremiumScreenRunnable != null) { + onShowPremiumScreenRunnable.run(); + } + dismiss(); + }); + premiumButtonView.overlayTextView.setOnClickListener(v -> { + if (selectedChats.isEmpty()) { + return; + } + if (type == TYPE_PUBLIC_LINKS) { + revokeSelectedLinks(); + } else if (type == TYPE_TO_MANY_COMMUNITIES) { + leaveFromSelectedGroups(); + } + }); + enterAnimator = new RecyclerItemsEnterAnimator(recyclerListView, true); + } + + public void updatePremiumButtonText() { + if (UserConfig.getInstance(currentAccount).isPremium() || MessagesController.getInstance(currentAccount).premiumLocked || isVeryLargeFile) { + premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.OK)); + premiumButtonView.hideIcon(); + } else { + premiumButtonView.buttonTextView.setText(LocaleController.getString("IncreaseLimit", R.string.IncreaseLimit)); + premiumButtonView.setIcon(type == TYPE_ACCOUNTS ? R.raw.addone_icon : R.raw.double_icon); + } + } + + private void leaveFromSelectedGroups() { + TLRPC.User currentUser = MessagesController.getInstance(currentAccount).getUser(UserConfig.getInstance(currentAccount).getClientUserId()); + ArrayList chats = new ArrayList<>(selectedChats); + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + builder.setTitle(LocaleController.formatPluralString("LeaveCommunities", chats.size())); + if (chats.size() == 1) { + TLRPC.Chat channel = chats.get(0); + builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("ChannelLeaveAlertWithName", R.string.ChannelLeaveAlertWithName, channel.title))); + } else { + builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("ChatsLeaveAlert", R.string.ChatsLeaveAlert))); + } + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + builder.setPositiveButton(LocaleController.getString("RevokeButton", R.string.RevokeButton), (dialogInterface, interface2) -> { + dismiss(); + for (int i = 0; i < chats.size(); i++) { + TLRPC.Chat chat = chats.get(i); + MessagesController.getInstance(currentAccount).putChat(chat, false); + MessagesController.getInstance(currentAccount).deleteParticipantFromChat(chat.id, currentUser, null); + } + }); + AlertDialog alertDialog = builder.create(); + alertDialog.show(); + TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); + if (button != null) { + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + } + } + + private void updateButton() { + if (selectedChats.size() > 0) { + String str = null; + if (type == TYPE_PUBLIC_LINKS) { + str = LocaleController.formatPluralString("RevokeLinks", selectedChats.size()); + } else if (type == TYPE_TO_MANY_COMMUNITIES) { + str = LocaleController.formatPluralString("LeaveCommunities", selectedChats.size()); + } + premiumButtonView.setOverlayText(str, true, true); + } else { + premiumButtonView.clearOverlayText(); + } + } + + private static boolean hasFixedSize(int type) { + if (type == TYPE_PIN_DIALOGS || type == TYPE_FOLDERS || type == TYPE_CHATS_IN_FOLDER || type == TYPE_LARGE_FILE || type == TYPE_ACCOUNTS) { + return true; + } + return false; + } + + @Override + public CharSequence getTitle() { + return LocaleController.getString("LimitReached", R.string.LimitReached); + } + + @Override + public RecyclerListView.SelectionAdapter createAdapter() { + return new RecyclerListView.SelectionAdapter() { + @Override + public boolean isEnabled(RecyclerView.ViewHolder holder) { + return holder.getItemViewType() == 1 || holder.getItemViewType() == 4; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view; + Context context = parent.getContext(); + switch (viewType) { + default: + case 0: + view = new HeaderView(context); + break; + case 1: + view = new AdminedChannelCell(context, new View.OnClickListener() { + @Override + public void onClick(View v) { + AdminedChannelCell cell = (AdminedChannelCell) v.getParent(); + final ArrayList channels = new ArrayList<>(); + channels.add(cell.getCurrentChannel()); + revokeLinks(channels); + } + }, true, 9); + break; + case 2: + view = new ShadowSectionCell(context, 12, Theme.getColor(Theme.key_windowBackgroundGray)); + break; + case 3: + view = new HeaderCell(context); + view.setPadding(0, 0, 0, AndroidUtilities.dp(8)); + break; + case 4: + view = new GroupCreateUserCell(context, 1, 8, false); + break; + case 5: + FlickerLoadingView flickerLoadingView = new FlickerLoadingView(context, null); + flickerLoadingView.setViewType(type == TYPE_PUBLIC_LINKS ? FlickerLoadingView.LIMIT_REACHED_LINKS : FlickerLoadingView.LIMIT_REACHED_GROUPS); + flickerLoadingView.setIsSingleCell(true); + flickerLoadingView.setIgnoreHeightCheck(true); + flickerLoadingView.setItemsCount(10); + view = flickerLoadingView; + break; + } + view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + return new RecyclerListView.Holder(view); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (holder.getItemViewType() == 4) { + TLRPC.Chat chat = inactiveChats.get(position - chatStartRow); + GroupCreateUserCell cell = (GroupCreateUserCell) holder.itemView; + String signature = inactiveChatsSignatures.get(position - chatStartRow); + cell.setObject(chat, chat.title, signature, true); + cell.setChecked(selectedChats.contains(chat), false); + } else if (holder.getItemViewType() == 1) { + TLRPC.Chat chat = chats.get(position - chatStartRow); + AdminedChannelCell adminedChannelCell = (AdminedChannelCell) holder.itemView; + TLRPC.Chat oldChat = adminedChannelCell.getCurrentChannel(); + adminedChannelCell.setChannel(chat, false); + adminedChannelCell.setChecked(selectedChats.contains(chat), oldChat == chat); + } else if (holder.getItemViewType() == 3) { + HeaderCell headerCell = (HeaderCell) holder.itemView; + if (type == TYPE_PUBLIC_LINKS) { + headerCell.setText(LocaleController.getString("YourPublicCommunities", R.string.YourPublicCommunities)); + } else { + headerCell.setText(LocaleController.getString("LastActiveCommunities", R.string.LastActiveCommunities)); + } + } + } + + @Override + public int getItemViewType(int position) { + if (headerRow == position) { + return 0; + } else if (dividerRow == position) { + return 2; + } else if (chatsTitleRow == position) { + return 3; + } else if (loadingRow == position) { + return 5; + } + if (type == TYPE_TO_MANY_COMMUNITIES) { + return 4; + } else { + return 1; + } + } + + @Override + public int getItemCount() { + return rowCount; + } + }; + } + + public void setCurrentValue(int currentValue) { + this.currentValue = currentValue; + } + + public void setVeryLargeFile(boolean b) { + isVeryLargeFile = b; + updatePremiumButtonText(); + } + + + private class HeaderView extends LinearLayout { + + @SuppressLint("SetTextI18n") + public HeaderView(Context context) { + super(context); + setOrientation(LinearLayout.VERTICAL); + setPadding(AndroidUtilities.dp(6), 0, AndroidUtilities.dp(6), 0); + + limitParams = getLimitParams(type, currentAccount); + int icon = limitParams.icon; + String descriptionStr; + boolean premiumLocked = MessagesController.getInstance(currentAccount).premiumLocked; + if (premiumLocked) { + descriptionStr = limitParams.descriptionStrLocked; + } else { + descriptionStr = (UserConfig.getInstance(currentAccount).isPremium() || isVeryLargeFile) ? limitParams.descriptionStrPremium : limitParams.descriptionStr; + } + int defaultLimit = limitParams.defaultLimit; + int premiumLimit = limitParams.premiumLimit; + int currentValue = LimitReachedBottomSheet.this.currentValue; + float position = 0.5f; + + if (type == TYPE_FOLDERS) { + currentValue = MessagesController.getInstance(currentAccount).dialogFilters.size() - 1; + } else if (type == TYPE_ACCOUNTS) { + currentValue = UserConfig.getActivatedAccountsCount(); + } + if (type == TYPE_PIN_DIALOGS) { + int pinnedCount = 0; + ArrayList dialogs = MessagesController.getInstance(currentAccount).getDialogs(0); + for (int a = 0, N = dialogs.size(); a < N; a++) { + TLRPC.Dialog dialog = dialogs.get(a); + if (dialog instanceof TLRPC.TL_dialogFolder) { + continue; + } + if (dialog.pinned) { + pinnedCount++; + } + } + currentValue = pinnedCount; + } + + if (UserConfig.getInstance(currentAccount).isPremium() || isVeryLargeFile) { + currentValue = premiumLimit; + position = 1f; + } else { + if (currentValue < 0) { + currentValue = defaultLimit; + } + if (type == TYPE_ACCOUNTS) { + if (currentValue > defaultLimit) { + position = (float) (currentValue - defaultLimit) / (float) (premiumLimit - defaultLimit); + } + } else { + position = currentValue / (float) premiumLimit; + } + } + + limitPreviewView = new LimitPreviewView(context, icon, currentValue, premiumLimit); + limitPreviewView.setBagePosition(position); + limitPreviewView.setType(type); + limitPreviewView.defaultCount.setVisibility(View.GONE); + if (premiumLocked) { + limitPreviewView.setPremiumLocked(); + } else { + if (UserConfig.getInstance(currentAccount).isPremium() || isVeryLargeFile) { + limitPreviewView.premiumCount.setVisibility(View.GONE); + if (type == TYPE_LARGE_FILE) { + limitPreviewView.defaultCount.setText("2 GB"); + } else { + limitPreviewView.defaultCount.setText(Integer.toString(defaultLimit)); + } + limitPreviewView.defaultCount.setVisibility(View.VISIBLE); + } + } + + if (type == TYPE_PUBLIC_LINKS || type == TYPE_TO_MANY_COMMUNITIES) { + limitPreviewView.setDelayedAnimation(); + } + + + addView(limitPreviewView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 0, 0, 0, 0)); + + TextView title = new TextView(context); + title.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + if (type == TYPE_LARGE_FILE) { + title.setText(LocaleController.getString("FileTooLarge", R.string.FileTooLarge)); + } else { + title.setText(LocaleController.getString("LimitReached", R.string.LimitReached)); + } + title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); + title.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + addView(title, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 0, 22, 0, 10)); + + TextView description = new TextView(context); + description.setText(AndroidUtilities.replaceTags(descriptionStr)); + description.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + description.setGravity(Gravity.CENTER_HORIZONTAL); + description.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + addView(description, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, 24, 0, 24, 24)); + } + } + + private static LimitParams getLimitParams(int type, int currentAccount) { + LimitParams limitParams = new LimitParams(); + if (type == TYPE_PIN_DIALOGS) { + limitParams.defaultLimit = MessagesController.getInstance(currentAccount).dialogFiltersPinnedLimitDefault; + limitParams.premiumLimit = MessagesController.getInstance(currentAccount).dialogFiltersPinnedLimitPremium; + limitParams.icon = R.drawable.msg_limit_pin; + limitParams.descriptionStr = LocaleController.formatString("LimitReachedPinDialogs", R.string.LimitReachedPinDialogs, limitParams.defaultLimit, limitParams.premiumLimit); + limitParams.descriptionStrPremium = LocaleController.formatString("LimitReachedPinDialogsPremium", R.string.LimitReachedPinDialogsPremium, limitParams.premiumLimit); + limitParams.descriptionStrLocked = LocaleController.formatString("LimitReachedPinDialogsLocked", R.string.LimitReachedPinDialogsLocked, limitParams.defaultLimit); + } else if (type == TYPE_PUBLIC_LINKS) { + limitParams.defaultLimit = MessagesController.getInstance(currentAccount).publicLinksLimitDefault; + limitParams.premiumLimit = MessagesController.getInstance(currentAccount).publicLinksLimitPremium; + limitParams.icon = R.drawable.msg_limit_links; + limitParams.descriptionStr = LocaleController.formatString("LimitReachedPublicLinks", R.string.LimitReachedPublicLinks, limitParams.defaultLimit, limitParams.premiumLimit); + limitParams.descriptionStrPremium = LocaleController.formatString("LimitReachedPublicLinksPremium", R.string.LimitReachedPublicLinksPremium, limitParams.premiumLimit); + limitParams.descriptionStrLocked = LocaleController.formatString("LimitReachedPublicLinksLocked", R.string.LimitReachedPublicLinksLocked, limitParams.defaultLimit); + } else if (type == TYPE_FOLDERS) { + limitParams.defaultLimit = MessagesController.getInstance(currentAccount).dialogFiltersLimitDefault; + limitParams.premiumLimit = MessagesController.getInstance(currentAccount).dialogFiltersLimitPremium; + limitParams.icon = R.drawable.msg_limit_folder; + limitParams.descriptionStr = LocaleController.formatString("LimitReachedFolders", R.string.LimitReachedFolders, limitParams.defaultLimit, limitParams.premiumLimit); + limitParams.descriptionStrPremium = LocaleController.formatString("LimitReachedFoldersPremium", R.string.LimitReachedFoldersPremium, limitParams.premiumLimit); + limitParams.descriptionStrLocked = LocaleController.formatString("LimitReachedFoldersLocked", R.string.LimitReachedFoldersLocked, limitParams.defaultLimit); + } else if (type == TYPE_CHATS_IN_FOLDER) { + limitParams.defaultLimit = MessagesController.getInstance(currentAccount).dialogFiltersChatsLimitDefault; + limitParams.premiumLimit = MessagesController.getInstance(currentAccount).dialogFiltersChatsLimitPremium; + limitParams.icon = R.drawable.msg_limit_chats; + limitParams.descriptionStr = LocaleController.formatString("LimitReachedChatInFolders", R.string.LimitReachedChatInFolders, limitParams.defaultLimit, limitParams.premiumLimit); + limitParams.descriptionStrPremium = LocaleController.formatString("LimitReachedChatInFoldersPremium", R.string.LimitReachedChatInFoldersPremium, limitParams.premiumLimit); + limitParams.descriptionStrLocked = LocaleController.formatString("LimitReachedChatInFoldersLocked", R.string.LimitReachedChatInFoldersLocked, limitParams.defaultLimit); + } else if (type == TYPE_TO_MANY_COMMUNITIES) { + limitParams.defaultLimit = MessagesController.getInstance(currentAccount).channelsLimitDefault; + limitParams.premiumLimit = MessagesController.getInstance(currentAccount).channelsLimitPremium; + limitParams.icon = R.drawable.msg_limit_groups; + limitParams.descriptionStr = LocaleController.formatString("LimitReachedCommunities", R.string.LimitReachedCommunities, limitParams.defaultLimit, limitParams.premiumLimit); + limitParams.descriptionStrPremium = LocaleController.formatString("LimitReachedCommunitiesPremium", R.string.LimitReachedCommunitiesPremium, limitParams.premiumLimit); + limitParams.descriptionStrLocked = LocaleController.formatString("LimitReachedCommunitiesLocked", R.string.LimitReachedCommunitiesLocked, limitParams.defaultLimit); + } else if (type == TYPE_LARGE_FILE) { + limitParams.defaultLimit = 100; + limitParams.premiumLimit = 200; + limitParams.icon = R.drawable.msg_limit_folder; + limitParams.descriptionStr = LocaleController.formatString("LimitReachedFileSize", R.string.LimitReachedFileSize, "2 GB", "4 GB"); + limitParams.descriptionStrPremium = LocaleController.formatString("LimitReachedFileSizePremium", R.string.LimitReachedFileSizePremium, "4 GB"); + limitParams.descriptionStrLocked = LocaleController.formatString("LimitReachedFileSizeLocked", R.string.LimitReachedFileSizeLocked, "2 GB"); + } else if (type == TYPE_ACCOUNTS) { + limitParams.defaultLimit = 3; + limitParams.premiumLimit = 4; + limitParams.icon = R.drawable.msg_limit_accounts; + limitParams.descriptionStr = LocaleController.formatString("LimitReachedAccounts", R.string.LimitReachedAccounts, limitParams.defaultLimit, limitParams.premiumLimit); + limitParams.descriptionStrPremium = LocaleController.formatString("LimitReachedAccountsPremium", R.string.LimitReachedAccountsPremium, limitParams.premiumLimit); + limitParams.descriptionStrLocked = LocaleController.formatString("LimitReachedAccountsPremium", R.string.LimitReachedAccountsPremium, limitParams.defaultLimit); + } + return limitParams; + } + + boolean loadingAdminedChannels; + + private void loadAdminedChannels() { + loadingAdminedChannels = true; + loading = true; + updateRows(); + TLRPC.TL_channels_getAdminedPublicChannels req = new TLRPC.TL_channels_getAdminedPublicChannels(); + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + loadingAdminedChannels = false; + if (response != null) { + TLRPC.TL_messages_chats res = (TLRPC.TL_messages_chats) response; + chats.clear(); + chats.addAll(res.chats); + loading = false; + enterAnimator.showItemsAnimated(chatsTitleRow + 4); + int savedTop = 0; + for (int i = 0; i < recyclerListView.getChildCount(); i++) { + if (recyclerListView.getChildAt(i) instanceof HeaderView) { + savedTop = recyclerListView.getChildAt(i).getTop(); + break; + } + } + updateRows(); + if (headerRow >= 0 && savedTop != 0) { + ((LinearLayoutManager) recyclerListView.getLayoutManager()).scrollToPositionWithOffset(headerRow + 1, savedTop); + } + } + + int currentValue = Math.max(chats.size(), limitParams.defaultLimit); + limitPreviewView.setIconValue(currentValue); + limitPreviewView.setBagePosition(currentValue / (float) limitParams.premiumLimit); + limitPreviewView.startDelayedAnimation(); + })); + } + + private void updateRows() { + rowCount = 0; + dividerRow = -1; + chatStartRow = -1; + loadingRow = -1; + headerRow = rowCount++; + if (!hasFixedSize(type)) { + dividerRow = rowCount++; + chatsTitleRow = rowCount++; + if (loading) { + loadingRow = rowCount++; + } else { + chatStartRow = rowCount; + if (type == TYPE_TO_MANY_COMMUNITIES) { + rowCount += inactiveChats.size(); + } else { + rowCount += chats.size(); + } + } + } + notifyDataSetChanged(); + } + + + private void revokeSelectedLinks() { + final ArrayList channels = new ArrayList<>(selectedChats); + revokeLinks(channels); + } + + private void revokeLinks(ArrayList channels) { + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + builder.setTitle(LocaleController.formatPluralString("RevokeLinks", channels.size())); + if (channels.size() == 1) { + TLRPC.Chat channel = channels.get(0); + if (parentIsChannel) { + builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("RevokeLinkAlertChannel", R.string.RevokeLinkAlertChannel, MessagesController.getInstance(currentAccount).linkPrefix + "/" + channel.username, channel.title))); + } else { + builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("RevokeLinkAlert", R.string.RevokeLinkAlert, MessagesController.getInstance(currentAccount).linkPrefix + "/" + channel.username, channel.title))); + } + } else { + if (parentIsChannel) { + builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("RevokeLinksAlertChannel", R.string.RevokeLinksAlertChannel))); + } else { + builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("RevokeLinksAlert", R.string.RevokeLinksAlert))); + } + } + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + builder.setPositiveButton(LocaleController.getString("RevokeButton", R.string.RevokeButton), (dialogInterface, interface2) -> { + dismiss(); + for (int i = 0; i < channels.size(); i++) { + TLRPC.TL_channels_updateUsername req1 = new TLRPC.TL_channels_updateUsername(); + TLRPC.Chat channel = channels.get(i); + req1.channel = MessagesController.getInputChannel(channel); + req1.username = ""; + ConnectionsManager.getInstance(currentAccount).sendRequest(req1, (response1, error1) -> { + if (response1 instanceof TLRPC.TL_boolTrue) { + AndroidUtilities.runOnUIThread(onSuccessRunnable); + } + }, ConnectionsManager.RequestFlagInvokeAfter); + } + }); + AlertDialog alertDialog = builder.create(); + alertDialog.show(); + TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); + if (button != null) { + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + } + } + + private void loadInactiveChannels() { + loading = true; + updateRows(); + TLRPC.TL_channels_getInactiveChannels inactiveChannelsRequest = new TLRPC.TL_channels_getInactiveChannels(); + ConnectionsManager.getInstance(currentAccount).sendRequest(inactiveChannelsRequest, ((response, error) -> { + if (error == null) { + final TLRPC.TL_messages_inactiveChats chats = (TLRPC.TL_messages_inactiveChats) response; + final ArrayList signatures = new ArrayList<>(); + for (int i = 0; i < chats.chats.size(); i++) { + TLRPC.Chat chat = chats.chats.get(i); + int currentDate = ConnectionsManager.getInstance(currentAccount).getCurrentTime(); + int date = chats.dates.get(i); + int daysDif = (currentDate - date) / 86400; + + String dateFormat; + if (daysDif < 30) { + dateFormat = LocaleController.formatPluralString("Days", daysDif); + } else if (daysDif < 365) { + dateFormat = LocaleController.formatPluralString("Months", daysDif / 30); + } else { + dateFormat = LocaleController.formatPluralString("Years", daysDif / 365); + } + if (ChatObject.isMegagroup(chat)) { + String members = LocaleController.formatPluralString("Members", chat.participants_count); + signatures.add(LocaleController.formatString("InactiveChatSignature", R.string.InactiveChatSignature, members, dateFormat)); + } else if (ChatObject.isChannel(chat)) { + signatures.add(LocaleController.formatString("InactiveChannelSignature", R.string.InactiveChannelSignature, dateFormat)); + } else { + String members = LocaleController.formatPluralString("Members", chat.participants_count); + signatures.add(LocaleController.formatString("InactiveChatSignature", R.string.InactiveChatSignature, members, dateFormat)); + } + } + AndroidUtilities.runOnUIThread(() -> { + inactiveChatsSignatures.clear(); + inactiveChats.clear(); + inactiveChatsSignatures.addAll(signatures); + inactiveChats.addAll(chats.chats); + loading = false; + enterAnimator.showItemsAnimated(chatsTitleRow + 4); + int savedTop = 0; + for (int i = 0; i < recyclerListView.getChildCount(); i++) { + if (recyclerListView.getChildAt(i) instanceof HeaderView) { + savedTop = recyclerListView.getChildAt(i).getTop(); + break; + } + } + updateRows(); + if (headerRow >= 0 && savedTop != 0) { + ((LinearLayoutManager) recyclerListView.getLayoutManager()).scrollToPositionWithOffset(headerRow + 1, savedTop); + } + + int currentValue = Math.max(inactiveChats.size(), limitParams.defaultLimit); + limitPreviewView.setIconValue(currentValue); + limitPreviewView.setBagePosition(currentValue / (float) limitParams.premiumLimit); + limitPreviewView.startDelayedAnimation(); + }); + } + })); + } + + public static class LimitParams { + int icon = 0; + String descriptionStr = null; + String descriptionStrPremium = null; + String descriptionStrLocked = null; + int defaultLimit = 0; + int premiumLimit = 0; + } + +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/MatrixParticlesDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/MatrixParticlesDrawable.java new file mode 100644 index 000000000..6b297113d --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/MatrixParticlesDrawable.java @@ -0,0 +1,163 @@ +package org.telegram.ui.Components.Premium; + +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.RectF; +import android.text.TextPaint; + +import androidx.core.graphics.ColorUtils; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.Utilities; +import org.telegram.ui.ActionBar.Theme; + +import java.util.ArrayList; + + +public class MatrixParticlesDrawable { + + RectF excludeRect = new RectF(); + Bitmap[] bitmaps = new Bitmap[16]; + + int size; + Rect drawingRect = new Rect(); + ArrayList[] particles; + MatrixTextParticle[][] matrixTextParticles; + Paint paint = new Paint(); + + void init() { + size = AndroidUtilities.dp(16); + TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.LINEAR_TEXT_FLAG); + textPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rcondensedbold.ttf")); + textPaint.setTextSize(size); + textPaint.setColor(ColorUtils.setAlphaComponent(Theme.getColor(Theme.key_premiumStartSmallStarsColor2), 30)); + textPaint.setTextAlign(Paint.Align.CENTER); + for (int i = 0; i < 16; i++) { + char c = (char) (i < 10 ? ('0' + i) : ('A' + (i - 10))); + bitmaps[i] = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmaps[i]); + canvas.drawText(Character.toString(c), size >> 1, size, textPaint); + } + } + + void onDraw(Canvas canvas) { + int nx = drawingRect.width() / size; + int ny = drawingRect.height() / size; + if (nx == 0 || ny == 0) { + return; + } + long currentTime = System.currentTimeMillis(); + if (particles == null || particles.length != nx + 1) { + particles = new ArrayList[nx + 1]; + for (int x = 0; x <= nx; x++) { + particles[x] = new ArrayList<>(); + Particle particle = new Particle(); + particle.init(ny, currentTime); + particles[x].add(particle); + } + } + + if (matrixTextParticles == null || matrixTextParticles.length != nx + 1 || matrixTextParticles[0].length != ny + 1) { + matrixTextParticles = new MatrixTextParticle[nx + 1][]; + for (int x = 0; x <= nx; x++) { + matrixTextParticles[x] = new MatrixTextParticle[ny + 1]; + for (int y = 0; y <= ny; y++) { + matrixTextParticles[x][y] = new MatrixTextParticle(); + matrixTextParticles[x][y].init(currentTime); + } + } + } + + + for (int x = 0; x <= nx; x++) { + ArrayList list = particles[x]; + for (int i = 0; i < list.size(); i++) { + Particle particle = list.get(i); + if (currentTime - particle.time > 50) { + particle.y++; + particle.time = currentTime; + if (particle.y - particle.len >= ny) { + if (list.size() == 1) { + particle.reset(currentTime); + } else { + list.remove(particle); + i--; + } + } + if (particle.y > particle.len && i == list.size() - 1 && Math.abs(Utilities.fastRandom.nextInt(4)) == 0) { + Particle newParticle = new Particle(); + newParticle.reset(currentTime); + list.add(newParticle); + } + } + int n = Math.min(particle.y, ny + 1); + for (int y = Math.max(0, particle.y - particle.len); y < n; y++) { + float finalX = size * x; + float finalY = size * y; + if (!excludeRect.contains(finalX, finalY)) { + float alpha = Utilities.clamp(0.2f + 0.8f * (1f - (particle.y - y) / (float) (particle.len - 1)), 1f, 0f); + matrixTextParticles[x][y].draw(canvas, finalX, finalY, currentTime, alpha); + } + } + } +// for (int y = 0; y <= ny; y++) { +// matrixTextParticles[x][y].draw(canvas, size * x, size * y, currentTime); +// } + } + } + + private class Particle { + int y; + int len = 5; + long time; + + public void init(int ny, long currentTime) { + y = Math.abs(Utilities.fastRandom.nextInt() % ny); + time = currentTime; + len = 4 + Math.abs(Utilities.fastRandom.nextInt() % 6); + } + + public void reset(long currentTime) { + y = 0; + time = currentTime; + len = 4 + Math.abs(Utilities.fastRandom.nextInt() % 6); + } + } + + private class MatrixTextParticle { + int index; + int nextIndex; + long lastUpdateTime; + long nextUpdateTime; + + public void init(long time) { + index = Math.abs(Utilities.fastRandom.nextInt() % 16); + nextIndex = Math.abs(Utilities.fastRandom.nextInt() % 16); + lastUpdateTime = time; + nextUpdateTime = time + Math.abs(Utilities.fastRandom.nextInt() % 300) + 150; + } + + public void draw(Canvas canvas, float x, float y, long currentTime, float alpha) { + if (nextUpdateTime - currentTime < 150) { + float p = Utilities.clamp(1f - (nextUpdateTime - currentTime) / 150f, 1f, 0); + paint.setAlpha((int) ((1f - p) * alpha * 255)); + canvas.drawBitmap(bitmaps[index], x, y, paint); + paint.setAlpha((int) (p * alpha * 255)); + canvas.drawBitmap(bitmaps[nextIndex], x, y, paint); + paint.setAlpha(255); + if (p >= 1) { + index = nextIndex; + lastUpdateTime = currentTime; + nextIndex = Math.abs(Utilities.fastRandom.nextInt() % 16); + nextUpdateTime = currentTime + Math.abs(Utilities.fastRandom.nextInt() % 300) + 150; + } + } else { + paint.setAlpha((int) (alpha * 255)); + canvas.drawBitmap(bitmaps[index], x, y, paint); + } + + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PagerHeaderView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PagerHeaderView.java new file mode 100644 index 000000000..df03e5fe8 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PagerHeaderView.java @@ -0,0 +1,5 @@ +package org.telegram.ui.Components.Premium; + +public interface PagerHeaderView { + void setOffset(float v); +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumAppIconsPreviewView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumAppIconsPreviewView.java new file mode 100644 index 000000000..198875d97 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumAppIconsPreviewView.java @@ -0,0 +1,126 @@ +package org.telegram.ui.Components.Premium; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.view.Gravity; +import android.view.ViewGroup; +import android.widget.FrameLayout; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.Utilities; +import org.telegram.ui.Cells.AppIconsSelectorCell; +import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.LauncherIconController; + +import java.util.ArrayList; +import java.util.List; + +public class PremiumAppIconsPreviewView extends FrameLayout implements PagerHeaderView { + private List icons = new ArrayList<>(); + private AppIconsSelectorCell.AdaptiveIconImageView topIcon, bottomLeftIcon, bottomRightIcon; + boolean isEmpty; + + public PremiumAppIconsPreviewView(Context context) { + super(context); + + for (LauncherIconController.LauncherIcon icon : LauncherIconController.LauncherIcon.values()) { + if (icon.premium) { + icons.add(icon); + } + if (icons.size() == 3) { + break; + } + } + + if (icons.size() < 3) { + FileLog.e(new IllegalArgumentException("There should be at least 3 premium icons!")); + isEmpty = true; + return; + } + + topIcon = newIconView(context, icons.get(0)); + bottomLeftIcon = newIconView(context, icons.get(1)); + bottomRightIcon = newIconView(context, icons.get(2)); + } + + private AppIconsSelectorCell.AdaptiveIconImageView newIconView(Context ctx, LauncherIconController.LauncherIcon icon) { + AppIconsSelectorCell.AdaptiveIconImageView iconImageView = new AppIconsSelectorCell.AdaptiveIconImageView(ctx) { + private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + + { + paint.setColor(Color.WHITE); + } + + @Override + public void draw(Canvas canvas) { + AndroidUtilities.rectTmp.set(0, 0, getWidth(), getHeight()); + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(AppIconsSelectorCell.ICONS_ROUND_RADIUS), AndroidUtilities.dp(AppIconsSelectorCell.ICONS_ROUND_RADIUS), paint); + + super.draw(canvas); + } + }; + iconImageView.setLayoutParams(LayoutHelper.createFrame(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER, 0, 52, 0, 0)); + iconImageView.setForeground(icon.foreground); + iconImageView.setBackgroundResource(icon.background); + iconImageView.setPadding(AndroidUtilities.dp(8)); + iconImageView.setBackgroundOuterPadding(AndroidUtilities.dp(32)); + addView(iconImageView); + return iconImageView; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + if (isEmpty) { + return; + } + int minSide = Math.min(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); + int size = AndroidUtilities.dp(76); + LayoutParams params = (LayoutParams) topIcon.getLayoutParams(); + params.width = params.height = size; + params.bottomMargin = (int) (size + minSide * 0.1f); + + params = (LayoutParams) bottomLeftIcon.getLayoutParams(); + params.width = params.height = size; + params.rightMargin = (int) (size * 0.95f); + + params = (LayoutParams) bottomRightIcon.getLayoutParams(); + params.width = params.height = size; + params.leftMargin = (int) (size * 0.95f); + } + + @Override + public void setOffset(float translationX) { + if (isEmpty) { + return; + } + float progress = translationX / getMeasuredWidth(); + + float rightProgress = CubicBezierInterpolator.EASE_IN.getInterpolation(progress); + bottomRightIcon.setTranslationX(rightProgress * (getRight() - bottomRightIcon.getRight() + bottomRightIcon.getWidth() * 1.5f + AndroidUtilities.dp(32))); + bottomRightIcon.setTranslationY(rightProgress * AndroidUtilities.dp(16)); + float scale = AndroidUtilities.lerp(1f, 1.5f, rightProgress); + scale = Utilities.clamp(scale, 1f, 0); + bottomRightIcon.setScaleX(scale); + bottomRightIcon.setScaleY(scale); + + topIcon.setTranslationY(progress * (getTop() - topIcon.getTop() - topIcon.getHeight() * 1.8f - AndroidUtilities.dp(32))); + topIcon.setTranslationX(progress * AndroidUtilities.dp(16)); + scale = AndroidUtilities.lerp(1f, 1.8f, progress); + scale = Utilities.clamp(scale, 1f, 0); + topIcon.setScaleX(scale); + topIcon.setScaleY(scale); + + float leftProgress = CubicBezierInterpolator.EASE_OUT.getInterpolation(progress); + bottomLeftIcon.setTranslationX(leftProgress * (getLeft() - bottomLeftIcon.getLeft() - bottomLeftIcon.getWidth() * 2.5f + AndroidUtilities.dp(32))); + bottomLeftIcon.setTranslationY(leftProgress * (getBottom() - bottomLeftIcon.getBottom() + bottomLeftIcon.getHeight() * 2.5f + AndroidUtilities.dp(32))); + scale = AndroidUtilities.lerp(1f, 2.5f, progress); + scale = Utilities.clamp(scale, 1f, 0); + bottomLeftIcon.setScaleX(scale); + bottomLeftIcon.setScaleY(scale); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumButtonView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumButtonView.java new file mode 100644 index 000000000..e8a53bff2 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumButtonView.java @@ -0,0 +1,211 @@ +package org.telegram.ui.Components.Premium; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Path; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.graphics.ColorUtils; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.BuildVars; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.RLottieImageView; +import org.telegram.ui.Components.voip.CellFlickerDrawable; + +public class PremiumButtonView extends FrameLayout { + + private Paint paintOverlayPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + private float progress; + private boolean inc; + public TextView buttonTextView; + public TextView overlayTextView; + + private boolean showOverlay; + private float overlayProgress; + public FrameLayout buttonLayout; + ValueAnimator overlayAnimator; + + Path path = new Path(); + CellFlickerDrawable flickerDrawable; + private boolean drawOverlayColor; + + RLottieImageView iconView; + + public PremiumButtonView(@NonNull Context context, boolean createOverlayTextView) { + super(context); + flickerDrawable = new CellFlickerDrawable(); + flickerDrawable.animationSpeedScale = 1.2f; + flickerDrawable.drawFrame = false; + flickerDrawable.repeatProgress = 4f; + LinearLayout linearLayout = new LinearLayout(context); + linearLayout.setOrientation(LinearLayout.HORIZONTAL); + buttonTextView = new TextView(context); + buttonTextView.setGravity(Gravity.CENTER); + buttonTextView.setTextColor(Color.WHITE); + buttonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + buttonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + + iconView = new RLottieImageView(context); + iconView.setColorFilter(Color.WHITE); + iconView.setVisibility(View.GONE); + + buttonLayout = new FrameLayout(context); + buttonLayout.addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); + buttonLayout.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(8), Color.TRANSPARENT, ColorUtils.setAlphaComponent(Color.WHITE, 120))); + + linearLayout.addView(buttonTextView, LayoutHelper.createLinear(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL)); + linearLayout.addView(iconView, LayoutHelper.createLinear(24, 24, 0, Gravity.CENTER_VERTICAL, 4, 0, 0, 0)); + addView(buttonLayout); + + if (createOverlayTextView) { + overlayTextView = new TextView(context); + overlayTextView.setPadding(AndroidUtilities.dp(34), 0, AndroidUtilities.dp(34), 0); + overlayTextView.setGravity(Gravity.CENTER); + overlayTextView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); + overlayTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + overlayTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + overlayTextView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(8), Color.TRANSPARENT, ColorUtils.setAlphaComponent(Color.WHITE, 120))); + addView(overlayTextView); + + paintOverlayPaint.setColor(Theme.getColor(Theme.key_featuredStickers_addButton)); + updateOverlayProgress(); + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + @Override + protected void dispatchDraw(Canvas canvas) { + AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + if (overlayProgress != 1f || !drawOverlayColor) { + if (inc) { + progress += 16f / 1000f; + if (progress > 3) { + inc = false; + } + } else { + progress -= 16f / 1000f; + if (progress < 1) { + inc = true; + } + } + PremiumGradient.getInstance().updateMainGradientMatrix(0, 0, getMeasuredWidth(), getMeasuredHeight(), -getMeasuredWidth() * 0.1f * progress, 0); + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), PremiumGradient.getInstance().getMainGradientPaint()); + invalidate(); + } + + if (!BuildVars.IS_BILLING_UNAVAILABLE) { + flickerDrawable.setParentWidth(getMeasuredWidth()); + flickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(8), null); + } + + if (overlayProgress != 0 && drawOverlayColor) { + paintOverlayPaint.setAlpha((int) (255 * overlayProgress)); + if (overlayProgress != 1f) { + path.rewind(); + path.addCircle(getMeasuredWidth() / 2f, getMeasuredHeight() / 2f, Math.max(getMeasuredWidth(), getMeasuredHeight()) * 1.4f * overlayProgress, Path.Direction.CW); + canvas.save(); + canvas.clipPath(path); + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), paintOverlayPaint); + canvas.restore(); + } else { + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), paintOverlayPaint); + } + + } + + super.dispatchDraw(canvas); + } + + public void setOverlayText(String text, boolean drawOverlayColor, boolean animated) { + showOverlay = true; + this.drawOverlayColor = drawOverlayColor; + overlayTextView.setText(text); + updateOverlay(animated); + } + + + private void updateOverlay(boolean animated) { + if (overlayAnimator != null) { + overlayAnimator.removeAllListeners(); + overlayAnimator.cancel(); + } + if (!animated) { + overlayProgress = showOverlay ? 1f : 0; + updateOverlayProgress(); + return; + } + overlayAnimator = ValueAnimator.ofFloat(overlayProgress, showOverlay ? 1f : 0); + overlayAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + overlayProgress = (float) animation.getAnimatedValue(); + updateOverlayProgress(); + } + }); + overlayAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + overlayProgress = showOverlay ? 1f : 0f; + updateOverlayProgress(); + } + }); + overlayAnimator.setDuration(250); + overlayAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT); + overlayAnimator.start(); + } + + private void updateOverlayProgress() { + overlayTextView.setAlpha(overlayProgress); + overlayTextView.setTranslationY(AndroidUtilities.dp(12) * (1f - overlayProgress)); + buttonLayout.setAlpha(1f - overlayProgress); + buttonLayout.setTranslationY(-AndroidUtilities.dp(12) * (overlayProgress)); + buttonLayout.setVisibility(overlayProgress == 1f ? View.INVISIBLE : View.VISIBLE); + overlayTextView.setVisibility(overlayProgress == 0 ? View.INVISIBLE : View.VISIBLE); + invalidate(); + } + + public void clearOverlayText() { + showOverlay = false; + updateOverlay(true); + } + + public void setIcon(int id) { + iconView.setAnimation(id, 24, 24); + flickerDrawable.progress = 2f; + flickerDrawable.setOnRestartCallback(() -> { + iconView.getAnimatedDrawable().setCurrentFrame(0, true); + iconView.playAnimation(); + }); + invalidate(); + iconView.setVisibility(View.VISIBLE); + } + + public void hideIcon() { + flickerDrawable.setOnRestartCallback(null); + iconView.setVisibility(View.GONE); + } + + public void setButton(String text, View.OnClickListener clickListener) { + buttonTextView.setText(text); + buttonLayout.setOnClickListener(clickListener); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumFeatureBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumFeatureBottomSheet.java new file mode 100644 index 000000000..9fcde5d80 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumFeatureBottomSheet.java @@ -0,0 +1,518 @@ +package org.telegram.ui.Components.Premium; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.os.Bundle; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ScrollView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.graphics.ColorUtils; +import androidx.viewpager.widget.PagerAdapter; +import androidx.viewpager.widget.ViewPager; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; +import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; +import org.telegram.messenger.SvgHelper; +import org.telegram.messenger.UserConfig; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.ChatActivity; +import org.telegram.ui.Components.BottomPagesView; +import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.RLottieDrawable; +import org.telegram.ui.PremiumPreviewFragment; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +public class PremiumFeatureBottomSheet extends BottomSheet implements NotificationCenter.NotificationCenterDelegate { + + BaseFragment fragment; + + private PremiumButtonView premiumButtonView; + ArrayList premiumFeatures = new ArrayList<>(); + + float containerViewsProgress; + boolean containerViewsForward; + ViewPager viewPager; + FrameLayout content; + int contentHeight; + + private FrameLayout buttonContainer; + boolean enterAnimationIsRunning; + SvgHelper.SvgDrawable svgIcon; + private final int startType; + private final boolean onlySelectedType; + + public PremiumFeatureBottomSheet(BaseFragment fragment, int startType, boolean onlySelectedType) { + super(fragment.getParentActivity(), false); + this.fragment = fragment; + this.startType = startType; + this.onlySelectedType = onlySelectedType; + + String svg = RLottieDrawable.readRes(null, R.raw.star_loader); + svgIcon = SvgHelper.getDrawable(svg); + Context context = fragment.getParentActivity(); + FrameLayout frameLayout = new FrameLayout(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (isPortrait) { + contentHeight = MeasureSpec.getSize(widthMeasureSpec); + } else { + contentHeight = (int) (MeasureSpec.getSize(heightMeasureSpec) * 0.65f); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }; + + + PremiumPreviewFragment.fillPremiumFeaturesList(premiumFeatures, fragment.getCurrentAccount()); + + int selectedPosition = 0; + for (int i = 0; i < premiumFeatures.size(); i++) { + if (premiumFeatures.get(i).type == PremiumPreviewFragment.PREMIUM_FEATURE_LIMITS) { + premiumFeatures.remove(i); + i--; + continue; + } + if (premiumFeatures.get(i).type == startType) { + selectedPosition = i; + break; + } + } + + if (onlySelectedType) { + PremiumPreviewFragment.PremiumFeatureData selectedFeature = premiumFeatures.get(selectedPosition); + premiumFeatures.clear(); + premiumFeatures.add(selectedFeature); + selectedPosition = 0; + } + + PremiumPreviewFragment.PremiumFeatureData featureData = premiumFeatures.get(selectedPosition); + + setApplyBottomPadding(false); + useBackgroundTopPadding = false; + PremiumGradient.GradientTools gradientTools = new PremiumGradient.GradientTools(Theme.key_premiumGradientBottomSheet1, Theme.key_premiumGradientBottomSheet2, Theme.key_premiumGradientBottomSheet3, null); + gradientTools.x1 = 0; + gradientTools.y1 = 1.1f; + gradientTools.x2 = 1.5f; + gradientTools.y2 = -0.2f; + gradientTools.exactly = true; + content = new FrameLayout(context) { + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int h = contentHeight; + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(h + AndroidUtilities.dp(2), MeasureSpec.EXACTLY)); + } + + @Override + protected void dispatchDraw(Canvas canvas) { + gradientTools.gradientMatrix(0, 0, getMeasuredWidth(), getMeasuredHeight(), 0, 0); + AndroidUtilities.rectTmp.set(0, AndroidUtilities.dp(2), getMeasuredWidth(), getMeasuredHeight() + AndroidUtilities.dp(18)); + canvas.save(); + canvas.clipRect(0, 0, getMeasuredWidth(), getMeasuredHeight()); + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(12) - 1, AndroidUtilities.dp(12) - 1, gradientTools.paint); + canvas.restore(); + super.dispatchDraw(canvas); + } + }; + + FrameLayout closeLayout = new FrameLayout(context); + ImageView closeImage = new ImageView(context); + closeImage.setImageResource(R.drawable.msg_close); + closeImage.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(12), ColorUtils.setAlphaComponent(Color.WHITE, 40), ColorUtils.setAlphaComponent(Color.WHITE, 100))); + closeLayout.addView(closeImage, LayoutHelper.createFrame(24, 24, Gravity.CENTER)); + closeLayout.setOnClickListener(v -> dismiss()); + frameLayout.addView(content, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 0, 16, 0, 0)); + + viewPager = new ViewPager(context) { + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int h = AndroidUtilities.dp(100); + if (getChildCount() > 0) { + getChildAt(0).measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); + h = getChildAt(0).getMeasuredHeight(); + } + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(h, MeasureSpec.EXACTLY)); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + try { + return super.onInterceptTouchEvent(ev); + } catch (Exception e) { + return false; + } + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (enterAnimationIsRunning) { + return false; + } + return super.onTouchEvent(ev); + } + }; + viewPager.setOffscreenPageLimit(0); + PagerAdapter pagerAdapter = new PagerAdapter() { + @Override + public int getCount() { + return premiumFeatures.size(); + } + + @NonNull + @Override + public Object instantiateItem(@NonNull ViewGroup container, int position) { + ViewPage viewPage = new ViewPage(context, position); + container.addView(viewPage); + viewPage.position = position; + viewPage.setFeatureDate(premiumFeatures.get(position)); + return viewPage; + } + + @Override + public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { + container.removeView((View) object); + } + + @Override + public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { + return view == object; + } + }; + viewPager.setAdapter(pagerAdapter); + viewPager.setCurrentItem(selectedPosition); + frameLayout.addView(viewPager, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 100, 0, 0, 18, 0, 0)); + + frameLayout.addView(closeLayout, LayoutHelper.createFrame(52, 52, Gravity.RIGHT | Gravity.TOP, 0, 16, 0, 0)); + BottomPagesView bottomPages = new BottomPagesView(context, viewPager, premiumFeatures.size()); + viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + + int selectedPosition; + int toPosition; + float progress; + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + bottomPages.setPageOffset(position, positionOffset); + selectedPosition = position; + toPosition = positionOffsetPixels > 0 ? selectedPosition + 1 : selectedPosition - 1; + progress = positionOffset; + checkPage(); + } + + @Override + public void onPageSelected(int i) { + checkPage(); + } + + private void checkPage() { + for (int i = 0; i < viewPager.getChildCount(); i++) { + ViewPage page = (ViewPage) viewPager.getChildAt(i); + float offset = 0; + if (!enterAnimationIsRunning || !(page.topView instanceof PremiumAppIconsPreviewView)) { + if (page.position == selectedPosition) { + page.topHeader.setOffset(offset = -page.getMeasuredWidth() * progress); + } else if (page.position == toPosition) { + page.topHeader.setOffset(offset = -page.getMeasuredWidth() * progress + page.getMeasuredWidth()); + } else { + page.topHeader.setOffset(page.getMeasuredWidth()); + } + } + + if (page.topView instanceof PremiumAppIconsPreviewView) { + page.setTranslationX(-offset); + page.title.setTranslationX(offset); + page.description.setTranslationX(offset); + } + } + containerViewsProgress = progress; + containerViewsForward = toPosition > selectedPosition; + } + + @Override + public void onPageScrollStateChanged(int i) { + + } + }); + + LinearLayout linearLayout = new LinearLayout(context); + linearLayout.addView(frameLayout); + linearLayout.setOrientation(LinearLayout.VERTICAL); + bottomPages.setColor(Theme.key_chats_unreadCounterMuted, Theme.key_chats_actionBackground); + if (!onlySelectedType) { + linearLayout.addView(bottomPages, LayoutHelper.createLinear(11 * premiumFeatures.size(), 5, Gravity.CENTER_HORIZONTAL, 0, 0, 0, 10)); + } + premiumButtonView = new PremiumButtonView(context, true); + premiumButtonView.buttonLayout.setOnClickListener(v -> { + if (fragment.getVisibleDialog() != null) { + fragment.getVisibleDialog().dismiss(); + } + if (fragment instanceof ChatActivity) { + ((ChatActivity) fragment).closeMenu(); + } + if (onlySelectedType) { + fragment.presentFragment(new PremiumPreviewFragment(PremiumPreviewFragment.featureTypeToServerString(featureData.type))); + } else { + PremiumPreviewFragment.buyPremium(fragment, PremiumPreviewFragment.featureTypeToServerString(featureData.type)); + } + dismiss(); + }); + premiumButtonView.overlayTextView.setOnClickListener(v -> { + dismiss(); + }); + buttonContainer = new FrameLayout(context); + + buttonContainer.addView(premiumButtonView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.CENTER_VERTICAL, 16, 0, 16, 0)); + buttonContainer.setBackgroundColor(getThemedColor(Theme.key_dialogBackground)); + linearLayout.addView(buttonContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 68, Gravity.BOTTOM)); + + if (UserConfig.getInstance(currentAccount).isPremium()) { + premiumButtonView.setOverlayText(LocaleController.getString("OK", R.string.OK), false, false); + } + + ScrollView scrollView = new ScrollView(context); + scrollView.addView(linearLayout); + setCustomView(scrollView); + + MediaDataController.getInstance(currentAccount).preloadPremiumPreviewStickers(); + setButtonText(); + } + + private void setButtonText() { + if (onlySelectedType) { + if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_REACTIONS) { + premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.UnlockPremiumReactions)); + premiumButtonView.setIcon(R.raw.unlock_icon); + } else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_ADS) { + premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.AboutTelegramPremium)); + } else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_APPLICATION_ICONS) { + premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.UnlockPremiumIcons)); + premiumButtonView.setIcon(R.raw.unlock_icon); + } + } else { + premiumButtonView.buttonTextView.setText(PremiumPreviewFragment.getPremiumButtonText(currentAccount)); + } + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.billingProductDetailsUpdated); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.premiumPromoUpdated); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + } + + @Override + public void dismiss() { + super.dismiss(); + + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.billingProductDetailsUpdated); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.premiumPromoUpdated); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.billingProductDetailsUpdated || id == NotificationCenter.premiumPromoUpdated) { + setButtonText(); + } else if (id == NotificationCenter.currentUserPremiumStatusChanged) { + if (UserConfig.getInstance(currentAccount).isPremium()) { + premiumButtonView.setOverlayText(LocaleController.getString("OK", R.string.OK), false, true); + } else { + premiumButtonView.clearOverlayText(); + } + } + } + + + private class ViewPage extends LinearLayout { + + public int position; + TextView title; + TextView description; + PagerHeaderView topHeader; + View topView; + + public ViewPage(Context context, int p) { + super(context); + setOrientation(VERTICAL); + topView = getViewForPosition(context, p); + addView(topView); + topHeader = (PagerHeaderView) topView; + + title = new TextView(context); + title.setGravity(Gravity.CENTER_HORIZONTAL); + title.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); + title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); + title.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + + addView(title, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 21, 20, 21, 0)); + + description = new TextView(context); + description.setGravity(Gravity.CENTER_HORIZONTAL); + description.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + description.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); + if (!onlySelectedType) { + description.setLines(2); + } + addView(description, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 21, 10, 21, 16)); + setClipChildren(false); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + topView.getLayoutParams().height = contentHeight; + description.setVisibility(isPortrait ? View.VISIBLE : View.GONE); + MarginLayoutParams layoutParams = (MarginLayoutParams) title.getLayoutParams(); + if (isPortrait) { + layoutParams.topMargin = AndroidUtilities.dp(20); + layoutParams.bottomMargin = 0; + } else { + layoutParams.topMargin = AndroidUtilities.dp(10); + layoutParams.bottomMargin = AndroidUtilities.dp(10); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + if (child == topView) { + if (child instanceof CarouselView) { + return super.drawChild(canvas, child, drawingTime); + } + canvas.save(); + canvas.clipRect(0, 0, child.getMeasuredWidth(), child.getMeasuredHeight()); + boolean b = super.drawChild(canvas, child, drawingTime); + canvas.restore(); + return b; + } else { + return super.drawChild(canvas, child, drawingTime); + } + } + + void setFeatureDate(PremiumPreviewFragment.PremiumFeatureData featureData) { + + if (onlySelectedType) { + if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_REACTIONS) { + title.setText(LocaleController.getString("AdditionalReactions", R.string.AdditionalReactions)); + description.setText(LocaleController.getString("AdditionalReactionsDescription", R.string.AdditionalReactionsDescription)); + } else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_ADS) { + title.setText(LocaleController.getString("PremiumPreviewNoAds", R.string.PremiumPreviewNoAds)); + description.setText(LocaleController.getString("PremiumPreviewNoAdsDescription2", R.string.PremiumPreviewNoAdsDescription2)); + } else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_APPLICATION_ICONS) { + title.setText(LocaleController.getString("PremiumPreviewAppIcon", R.string.PremiumPreviewAppIcon)); + description.setText(LocaleController.getString("PremiumPreviewAppIconDescription2", R.string.PremiumPreviewAppIconDescription2)); + } + } else { + title.setText(featureData.title); + description.setText(featureData.description); + } + } + } + + View getViewForPosition(Context context, int position) { + PremiumPreviewFragment.PremiumFeatureData featureData = premiumFeatures.get(position); + if (featureData.type == PremiumPreviewFragment.PREMIUM_FEATURE_REACTIONS) { + ArrayList drawingObjects = new ArrayList<>(); + List list = MediaDataController.getInstance(currentAccount).getEnabledReactionsList(); + List premiumLockedReactions = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + if (list.get(i).premium) { + premiumLockedReactions.add(list.get(i)); + } + } + for (int i = 0; i < premiumLockedReactions.size(); i++) { + ReactionDrawingObject drawingObject = new ReactionDrawingObject(i); + drawingObject.set(premiumLockedReactions.get(i)); + drawingObjects.add(drawingObject); + } + + HashMap sortRulesMap = new HashMap<>(); + sortRulesMap.put("\uD83D\uDC4C", 1); + sortRulesMap.put("\uD83D\uDE0D", 2); + sortRulesMap.put("\uD83E\uDD21", 3); + sortRulesMap.put("\uD83D\uDD4A", 4); + sortRulesMap.put("\uD83E\uDD71", 5); + sortRulesMap.put("\uD83E\uDD74", 6); + sortRulesMap.put("\uD83D\uDC33", 7); + Collections.sort(drawingObjects, (o1, o2) -> { + int i1 = sortRulesMap.containsKey(o1.reaction.reaction) ? sortRulesMap.get(o1.reaction.reaction) : Integer.MAX_VALUE; + int i2 = sortRulesMap.containsKey(o2.reaction.reaction) ? sortRulesMap.get(o2.reaction.reaction) : Integer.MAX_VALUE; + return i2 - i1; + }); + + CarouselView carouselView = new CarouselView(context, drawingObjects); + return carouselView; + } else if (featureData.type == PremiumPreviewFragment.PREMIUM_FEATURE_STICKERS) { + PremiumStickersPreviewRecycler recyclerListView = new PremiumStickersPreviewRecycler(context, currentAccount) { + @Override + public void setOffset(float v) { + setAutoPlayEnabled(v == 0); + super.setOffset(v); + } + }; + return recyclerListView; + } else if (featureData.type == PremiumPreviewFragment.PREMIUM_FEATURE_APPLICATION_ICONS) { + return new PremiumAppIconsPreviewView(context); + } + VideoScreenPreview preview = new VideoScreenPreview(context, svgIcon, currentAccount, featureData.type); + return preview; + } + + @Override + protected boolean onCustomOpenAnimation() { + if (viewPager.getChildCount() > 0) { + ViewPage page = (ViewPage) viewPager.getChildAt(0); + if (page.topView instanceof PremiumAppIconsPreviewView) { + PremiumAppIconsPreviewView premiumAppIconsPreviewView = (PremiumAppIconsPreviewView) page.topView; + ValueAnimator valueAnimator = ValueAnimator.ofFloat(page.getMeasuredWidth(), 0); + premiumAppIconsPreviewView.setOffset(page.getMeasuredWidth()); + enterAnimationIsRunning = true; + valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + premiumAppIconsPreviewView.setOffset((Float) animation.getAnimatedValue()); + } + }); + valueAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + enterAnimationIsRunning = false; + premiumAppIconsPreviewView.setOffset(0); + super.onAnimationEnd(animation); + } + }); + valueAnimator.setDuration(500); + valueAnimator.setStartDelay(100); + valueAnimator.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + valueAnimator.start(); + } + } + return super.onCustomOpenAnimation(); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumGradient.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumGradient.java new file mode 100644 index 000000000..2a4ff24d1 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumGradient.java @@ -0,0 +1,205 @@ +package org.telegram.ui.Components.Premium; + +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.LinearGradient; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.PorterDuffXfermode; +import android.graphics.Shader; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; + +import androidx.core.content.ContextCompat; + +import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.MessagesController; +import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.ui.ActionBar.Theme; + +public class PremiumGradient { + + private final GradientTools mainGradient = new GradientTools(Theme.key_premiumGradient1, Theme.key_premiumGradient2, Theme.key_premiumGradient3, Theme.key_premiumGradient4); + private final Paint mainGradientPaint = mainGradient.paint; + Paint lockedPremiumPaint; + + private final static int size = 100; + private final static int sizeHalf = 100 >> 1; + + private static PremiumGradient instance; + + public Drawable premiumStarColoredDrawable; + public Drawable premiumStarDrawableMini; + public InternalDrawable premiumStarMenuDrawable; + public InternalDrawable premiumStarMenuDrawable2; + + private int lastStarColor; + + public static PremiumGradient getInstance() { + if (instance == null) { + instance = new PremiumGradient(); + } + return instance; + } + + private PremiumGradient() { + premiumStarDrawableMini = ContextCompat.getDrawable(ApplicationLoader.applicationContext, R.drawable.msg_premium_liststar).mutate(); + premiumStarMenuDrawable = createGradientDrawable(ContextCompat.getDrawable(ApplicationLoader.applicationContext, R.drawable.msg_settings_premium)); + premiumStarMenuDrawable2 = createGradientDrawable(ContextCompat.getDrawable(ApplicationLoader.applicationContext, R.drawable.msg_premium_normal)); + premiumStarColoredDrawable = ContextCompat.getDrawable(ApplicationLoader.applicationContext, R.drawable.msg_premium_liststar).mutate(); + mainGradient.chekColors(); + checkIconColors(); + } + + public InternalDrawable createGradientDrawable(Drawable drawable) { + int width = drawable.getIntrinsicWidth(); + int height = drawable.getMinimumHeight(); + Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, width, height); + drawable.draw(canvas); + + mainGradient.paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); + mainGradient.gradientMatrix(0, 0, width, height, -width, 0); + canvas.drawRect(0, 0, width, height, mainGradient.paint); + mainGradient.paint.setXfermode(null); + + return new InternalDrawable(drawable, bitmap, mainGradient.colors); + } + + public void checkIconColors() { + if (Theme.getColor(Theme.key_chats_verifiedBackground) != lastStarColor) { + lastStarColor = Theme.getColor(Theme.key_chats_verifiedBackground); + premiumStarDrawableMini.setColorFilter(new PorterDuffColorFilter(lastStarColor, PorterDuff.Mode.MULTIPLY)); + } + premiumStarMenuDrawable = checkColors(premiumStarMenuDrawable); + premiumStarMenuDrawable2 = checkColors(premiumStarMenuDrawable2); + } + + private InternalDrawable checkColors(InternalDrawable internalDrawable) { + if (mainGradient.colors[0] != internalDrawable.colors[0] || mainGradient.colors[1] != internalDrawable.colors[1] || mainGradient.colors[2] != internalDrawable.colors[2] || mainGradient.colors[3] != internalDrawable.colors[3]) { + return createGradientDrawable(internalDrawable.originDrawable); + } + return internalDrawable; + } + + public void updateMainGradientMatrix(int x, int y, int width, int height, float xOffset, float yOffset) { + mainGradient.gradientMatrix(x, y, width, height, xOffset, yOffset); + } + + public static class InternalDrawable extends BitmapDrawable { + + public int[] colors; + Drawable originDrawable; + + public InternalDrawable(Drawable originDrawable, Bitmap bitmap, int[] colors) { + super(ApplicationLoader.applicationContext.getResources(), bitmap); + this.originDrawable = originDrawable; + this.colors = new int[colors.length]; + System.arraycopy(colors, 0, this.colors, 0, colors.length); + } + + @Override + public void setColorFilter(ColorFilter colorFilter) { + + } + + @Override + public void setColorFilter(int color, PorterDuff.Mode mode) { + + } + } + + public Paint getMainGradientPaint() { + if (MessagesController.getInstance(UserConfig.selectedAccount).premiumLocked) { + if (lockedPremiumPaint == null) { + lockedPremiumPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + } + lockedPremiumPaint.setColor(Theme.getColor(Theme.key_featuredStickers_addButton)); + return lockedPremiumPaint; + } else { + return mainGradientPaint; + } + } + public static class GradientTools { + + public float cx = 0.5f; + public float cy = 0.5f; + Shader shader; + Matrix matrix = new Matrix(); + public final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + + final String colorKey1, colorKey2, colorKey3, colorKey4; + final int colors[] = new int[4]; + public boolean exactly; + + public float x1 = 0f, y1 = 1f, x2 = 1.5f, y2 = 0f; + + public GradientTools(String colorKey1, String colorKey2, String colorKey3, String colorKey4) { + this.colorKey1 = colorKey1; + this.colorKey2 = colorKey2; + this.colorKey3 = colorKey3; + this.colorKey4 = colorKey4; + } + + public void gradientMatrix(int x, int y, int x1, int y1, float xOffset, float yOffset) { + chekColors(); + if (exactly) { + int height = y1 - y; + float sx = (x1 - x) / (float) size; + float sy = height / (float) size; + + matrix.reset(); + matrix.postScale(sx, sy, 100 * cx, 100 * cy); + matrix.postTranslate(xOffset, yOffset); + shader.setLocalMatrix(matrix); + } else { + int height = y1 - y; + int gradientHeight = height + height; + float sx = (x1 - x) / (float) size; + float sy = gradientHeight / (float) size; + + chekColors(); + matrix.reset(); + matrix.postScale(sx, sy, 75, sizeHalf); + matrix.postTranslate(xOffset, -gradientHeight + yOffset); + shader.setLocalMatrix(matrix); + } + } + + private void chekColors() { + int c1 = Theme.getColor(colorKey1); + int c2 = Theme.getColor(colorKey2); + int c3 = colorKey3 == null ? 0 : Theme.getColor(colorKey3); + int c4 = colorKey4 == null ? 0 : Theme.getColor(colorKey4); + if (colors[0] != c1 || colors[1] != c2 || colors[2] != c3 || colors[3] != c4) { + colors[0] = c1; + colors[1] = c2; + colors[2] = c3; + colors[3] = c4; + if (c3 == 0) { + shader = new LinearGradient(size * x1, size * y1, size * x2, size * y2, new int[]{colors[0], colors[1]}, new float[]{0, 1f}, Shader.TileMode.CLAMP); + } else if (c4 == 0) { + shader = new LinearGradient(size * x1, size * y1, size * x2, size * y2, new int[]{colors[0], colors[1], colors[2]}, new float[]{0, 0.5f, 1f}, Shader.TileMode.CLAMP); + } else { + shader = new LinearGradient(size * x1, size * y1, size * x2, size * y2, new int[]{colors[0], colors[1], colors[2], colors[3]}, new float[]{0, 0.5f, 0.78f, 1f}, Shader.TileMode.CLAMP); + } + shader.setLocalMatrix(matrix); + paint.setShader(shader); + } + } + + public void gradientMatrixLinear(float totalHeight, float offset) { + chekColors(); + + matrix.reset(); + matrix.postScale(1f, totalHeight / 100f, 0, 0); + matrix.postTranslate(0, offset); + shader.setLocalMatrix(matrix); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumLockIconView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumLockIconView.java new file mode 100644 index 000000000..6c7791aed --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumLockIconView.java @@ -0,0 +1,219 @@ +package org.telegram.ui.Components.Premium; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.LinearGradient; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Shader; +import android.widget.ImageView; + +import androidx.core.graphics.ColorUtils; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ImageReceiver; +import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.voip.CellFlickerDrawable; + +public class PremiumLockIconView extends ImageView { + + public static int TYPE_REACTIONS = 0; + public static int TYPE_STICKERS = 1; + private final int type; + public boolean isEnter; + private float[] colorFloat = new float[3]; + StarParticlesView.Drawable starParticles; + + public PremiumLockIconView(Context context, int type) { + super(context); + this.type = type; + setImageResource(type == TYPE_REACTIONS ? R.drawable.msg_premium_lock2 : R.drawable.msg_mini_premiumlock); + if (type == TYPE_REACTIONS) { + starParticles = new StarParticlesView.Drawable(5); + starParticles.updateColors(); + starParticles.roundEffect = false; + starParticles.size3 = starParticles.size2 = 4; + starParticles.size1 = 2; + starParticles.speedScale = 0.1f; + starParticles.init(); + } + } + + int currentColor = Color.WHITE; + int color1, color2; + Shader shader = null; + + Path path = new Path(); + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + Paint oldShaderPaint; + ImageReceiver imageReceiver; + float shaderCrossfadeProgress = 1f; + boolean waitingImage; + boolean wasDrawn; + + CellFlickerDrawable cellFlickerDrawable = new CellFlickerDrawable(); + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + if (type == TYPE_REACTIONS) { + path.rewind(); + AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + path.addCircle(AndroidUtilities.rectTmp.width() / 2f, AndroidUtilities.rectTmp.centerY(), AndroidUtilities.rectTmp.width() / 2f, Path.Direction.CW); + AndroidUtilities.rectTmp.set(getMeasuredWidth() / 2f + AndroidUtilities.dp(2.5f), getMeasuredHeight() / 2f + AndroidUtilities.dpf2(5.7f), getMeasuredWidth() - AndroidUtilities.dpf2(0.2f), getMeasuredHeight()); + path.addRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(2f), AndroidUtilities.dp(2f), Path.Direction.CW); + path.close(); + + starParticles.rect.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + starParticles.rect.inset(AndroidUtilities.dp(6), AndroidUtilities.dp(6)); + } else { + updateGradient(); + } + } + + public void setColor(int color) { + if (currentColor != color) { + currentColor = color; + if (type == TYPE_REACTIONS) { + paint.setColor(color); + } else { + updateGradient(); + } + invalidate(); + } + } + + + @Override + protected void onDraw(Canvas canvas) { + if (waitingImage) { + if (imageReceiver.getBitmap() != null) { + waitingImage = false; + setColor(getDominantColor(imageReceiver.getBitmap())); + } else { + invalidate(); + } + } + if (type == TYPE_REACTIONS) { + if (currentColor != 0) { + canvas.drawPath(path, paint); + } else { + PremiumGradient.getInstance().updateMainGradientMatrix(0, 0, getMeasuredWidth(), getMeasuredHeight(), -AndroidUtilities.dp(24), 0); + canvas.drawPath(path, PremiumGradient.getInstance().getMainGradientPaint()); + } + cellFlickerDrawable.setParentWidth(getMeasuredWidth() / 2); + cellFlickerDrawable.drawFrame = false; + cellFlickerDrawable.draw(canvas, path, this); + canvas.save(); + canvas.clipPath(path); + starParticles.onDraw(canvas); + canvas.restore(); + invalidate(); + } else { + float cx = getMeasuredWidth() / 2f; + float cy = getMeasuredHeight() / 2f; + if (oldShaderPaint == null) { + shaderCrossfadeProgress = 1f; + } + if (shaderCrossfadeProgress != 1f) { + paint.setAlpha((int) (255 * shaderCrossfadeProgress)); + canvas.drawCircle(cx, cy, cx, oldShaderPaint); + canvas.drawCircle(cx, cy, cx, paint); + shaderCrossfadeProgress += 16 / 150f; + if (shaderCrossfadeProgress > 1f) { + shaderCrossfadeProgress = 1f; + oldShaderPaint = null; + } + invalidate(); + paint.setAlpha(255); + } else { + canvas.drawCircle(cx, cy, cx, paint); + } + } + super.onDraw(canvas); + wasDrawn = true; + } + + public void setImageReceiver(ImageReceiver imageReceiver) { + this.imageReceiver = imageReceiver; + waitingImage = true; + } + + public static int getDominantColor(Bitmap bitmap) { + if (bitmap == null) { + return Color.WHITE; + } + float stepH = (bitmap.getHeight() - 1) / 10f; + float stepW = (bitmap.getWidth() - 1) / 10f; + int r = 0, g = 0, b = 0; + int amount = 0; + for (int i = 0; i < 10; i++) { + for (int j = 0; j < 10; j++) { + int x = (int) (stepW * i); + int y = (int) (stepH * j); + int pixel = bitmap.getPixel(x, y); + if (pixel != Color.TRANSPARENT) { + r += Color.red(pixel); + g += Color.green(pixel); + b += Color.blue(pixel); + amount++; + } + } + } + if (amount == 0) { + return 0; + } + return Color.argb(255, r / amount, g / amount, b / amount); + } + + private void updateGradient() { + if (getMeasuredHeight() != 0 && getMeasuredWidth() != 0) { + int c1 = currentColor; + int c2; + Color.colorToHSV(c1, colorFloat); + colorFloat[1] *= 2; + if (colorFloat[2] > 0.7f) { + colorFloat[2] = 0.7f; + } + int baseColor = Color.HSVToColor(colorFloat); + + c2 = ColorUtils.blendARGB(baseColor, Theme.getColor(Theme.key_windowBackgroundWhite), 0.5f); + c1 = ColorUtils.blendARGB(baseColor, Theme.getColor(Theme.key_windowBackgroundWhite), 0.4f); + + if (shader == null || color1 != c1 || color2 != c2) { + if (wasDrawn) { + oldShaderPaint = paint; + oldShaderPaint.setAlpha(255); + shaderCrossfadeProgress = 0; + } + paint = new Paint(Paint.ANTI_ALIAS_FLAG); + shader = new LinearGradient(0, getMeasuredHeight(), 0, 0, new int[]{color1 = c1, color2 = c2}, null, Shader.TileMode.CLAMP); + paint.setShader(shader); + invalidate(); + } + } + } + + public void setWaitingImage() { + waitingImage = true; + wasDrawn = false; + invalidate(); + } + + public void play(int delay) { + isEnter = true; + cellFlickerDrawable.progress = 0; + cellFlickerDrawable.repeatEnabled = false; + invalidate(); + animate().scaleX(1.1f).scaleY(1.1f).setStartDelay(delay).setInterpolator(AndroidUtilities.overshootInterpolator).setDuration(300); + } + + public void resetAnimation() { + isEnter = false; + setScaleX(0); + setScaleY(0); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumNotAvailableBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumNotAvailableBottomSheet.java new file mode 100644 index 000000000..6877ef8a7 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumNotAvailableBottomSheet.java @@ -0,0 +1,72 @@ +package org.telegram.ui.Components.Premium; + +import android.content.ActivityNotFoundException; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.ScrollView; +import android.widget.TextView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.LayoutHelper; + +public class PremiumNotAvailableBottomSheet extends BottomSheet { + + public PremiumNotAvailableBottomSheet(BaseFragment fragment) { + super(fragment.getParentActivity(), false); + Context context = fragment.getParentActivity(); + LinearLayout linearLayout = new LinearLayout(context); + linearLayout.setOrientation(LinearLayout.VERTICAL); + + TextView title = new TextView(context); + title.setGravity(Gravity.START); + title.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); + title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); + title.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + + linearLayout.addView(title, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 21, 16, 21, 0)); + + TextView description = new TextView(context); + description.setGravity(Gravity.START); + description.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + description.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); + linearLayout.addView(description, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 21, 15, 21, 16)); + + TextView buttonTextView = new TextView(context); + buttonTextView.setPadding(AndroidUtilities.dp(34), 0, AndroidUtilities.dp(34), 0); + buttonTextView.setGravity(Gravity.CENTER); + buttonTextView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); + buttonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + buttonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + buttonTextView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 8)); + buttonTextView.setText(LocaleController.getString(R.string.InstallOfficialApp)); + buttonTextView.setOnClickListener(v -> { + try { + v.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=org.telegram.messenger"))); + } catch (ActivityNotFoundException e) { + FileLog.e(e); + } + }); + + FrameLayout buttonContainer = new FrameLayout(context); + buttonContainer.addView(buttonTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.CENTER_VERTICAL, 16, 0, 16, 0)); + buttonContainer.setBackgroundColor(getThemedColor(Theme.key_dialogBackground)); + linearLayout.addView(buttonContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 68, Gravity.BOTTOM)); + + title.setText(AndroidUtilities.replaceTags(LocaleController.getString(R.string.SubscribeToPremiumOfficialAppNeeded))); + description.setText(AndroidUtilities.replaceTags(LocaleController.getString(R.string.SubscribeToPremiumOfficialAppNeededDescription))); + ScrollView scrollView = new ScrollView(context); + scrollView.addView(linearLayout); + setCustomView(scrollView); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumPreviewBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumPreviewBottomSheet.java new file mode 100644 index 000000000..268bfc43b --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumPreviewBottomSheet.java @@ -0,0 +1,449 @@ +package org.telegram.ui.Components.Premium; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.app.Dialog; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.drawable.Drawable; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.graphics.ColorUtils; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ContactsController; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; +import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; +import org.telegram.messenger.Utilities; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.SimpleTextView; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Cells.ShadowSectionCell; +import org.telegram.ui.Components.BottomSheetWithRecyclerListView; +import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.GLIcon.GLIconRenderer; +import org.telegram.ui.Components.Premium.GLIcon.GLIconTextureView; +import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.PremiumFeatureCell; +import org.telegram.ui.PremiumPreviewFragment; + +import java.util.ArrayList; + +public class PremiumPreviewBottomSheet extends BottomSheetWithRecyclerListView { + + ArrayList premiumFeatures = new ArrayList<>(); + int currentAccount; + TLRPC.User user; + + PremiumFeatureCell dummyCell; + int totalGradientHeight; + + int rowCount; + int paddingRow; + int featuresStartRow; + int featuresEndRow; + int sectionRow; + int helpUsRow; + int buttonRow; + + PremiumGradient.GradientTools gradientTools; + StarParticlesView starParticlesView; + GLIconTextureView iconTextureView; + ViewGroup iconContainer; + BaseFragment fragment; + + public float startEnterFromX; + public float startEnterFromY; + public float startEnterFromX1; + public float startEnterFromY1; + public float startEnterFromScale; + public SimpleTextView startEnterFromView; + + int[] coords = new int[2]; + float enterTransitionProgress = 0; + boolean enterTransitionInProgress; + ValueAnimator enterAnimator; + + public PremiumPreviewBottomSheet(BaseFragment fragment, int currentAccount, TLRPC.User user) { + super(fragment, false, false); + this.fragment = fragment; + topPadding = 0.26f; + this.user = user; + this.currentAccount = currentAccount; + dummyCell = new PremiumFeatureCell(getContext()); + PremiumPreviewFragment.fillPremiumFeaturesList(premiumFeatures, currentAccount); + + gradientTools = new PremiumGradient.GradientTools(Theme.key_premiumGradient1, Theme.key_premiumGradient2, Theme.key_premiumGradient3, Theme.key_premiumGradient4); + gradientTools.exactly = true; + gradientTools.x1 = 0; + gradientTools.y1 = 1f; + gradientTools.x2 = 0; + gradientTools.y2 = 0f; + gradientTools.cx = 0; + gradientTools.cy = 0; + + paddingRow = rowCount++; + featuresStartRow = rowCount; + rowCount += premiumFeatures.size(); + featuresEndRow = rowCount; + sectionRow = rowCount++; + buttonRow = rowCount++; + recyclerListView.setPadding(AndroidUtilities.dp(6), 0, AndroidUtilities.dp(6), 0); + recyclerListView.setOnItemClickListener(new RecyclerListView.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { + if (view instanceof PremiumFeatureCell) { + PremiumFeatureCell cell = (PremiumFeatureCell) view; + PremiumPreviewFragment.sentShowFeaturePreview(currentAccount, cell.data.type); + if (cell.data.type == PremiumPreviewFragment.PREMIUM_FEATURE_LIMITS) { + DoubledLimitsBottomSheet bottomSheet = new DoubledLimitsBottomSheet(fragment, currentAccount); + showDialog(bottomSheet); + } else { + showDialog(new PremiumFeatureBottomSheet(fragment, cell.data.type, false)); + } + } + } + }); + + MediaDataController.getInstance(currentAccount).preloadPremiumPreviewStickers(); + PremiumPreviewFragment.sentShowScreenStat("profile"); + } + + private void showDialog(Dialog dialog) { + iconTextureView.setDialogVisible(true); + starParticlesView.setPaused(true); + dialog.setOnDismissListener(dialog1 -> { + iconTextureView.setDialogVisible(false); + starParticlesView.setPaused(false); + }); + dialog.show(); + } + + @Override + public void onViewCreated(FrameLayout containerView) { + super.onViewCreated(containerView); + + PremiumButtonView premiumButtonView = new PremiumButtonView(getContext(), false); + premiumButtonView.setButton(PremiumPreviewFragment.getPremiumButtonText(currentAccount), new View.OnClickListener() { + @Override + public void onClick(View v) { + PremiumPreviewFragment.sentPremiumButtonClick(); + PremiumPreviewFragment.buyPremium(fragment, "profile"); + } + }); + + FrameLayout buttonContainer = new FrameLayout(getContext()); + + View buttonDivider = new View(getContext()); + buttonDivider.setBackgroundColor(Theme.getColor(Theme.key_divider)); + buttonContainer.addView(buttonDivider, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 1)); + buttonDivider.getLayoutParams().height = 1; + AndroidUtilities.updateViewVisibilityAnimated(buttonDivider, true, 1f, false); + + buttonContainer.addView(premiumButtonView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.CENTER_VERTICAL, 16, 0, 16, 0)); + buttonContainer.setBackgroundColor(getThemedColor(Theme.key_dialogBackground)); + containerView.addView(buttonContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 68, Gravity.BOTTOM)); + + } + + @Override + protected void onPreMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onPreMeasure(widthMeasureSpec, heightMeasureSpec); + measureGradient(View.MeasureSpec.getSize(widthMeasureSpec), View.MeasureSpec.getSize(heightMeasureSpec)); + container.getLocationOnScreen(coords); + + } + + @Override + protected CharSequence getTitle() { + return LocaleController.getString("TelegramPremium", R.string.TelegramPremium); + } + + @Override + protected RecyclerListView.SelectionAdapter createAdapter() { + return new Adapter(); + } + + private class Adapter extends RecyclerListView.SelectionAdapter { + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view; + Context context = parent.getContext(); + switch (viewType) { + case 0: + LinearLayout linearLayout = new LinearLayout(context) { + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + if (child == iconTextureView && enterTransitionInProgress) { + return true; + } + return super.drawChild(canvas, child, drawingTime); + } + }; + iconContainer = linearLayout; + linearLayout.setOrientation(LinearLayout.VERTICAL); + iconTextureView = new GLIconTextureView(context, GLIconRenderer.DIALOG_STYLE) { + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + setPaused(false); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + setPaused(true); + } + }; + Bitmap bitmap = Bitmap.createBitmap(50, 50, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + canvas.drawColor(ColorUtils.blendARGB(Theme.getColor(Theme.key_premiumGradient2), Theme.getColor(Theme.key_dialogBackground), 0.5f)); + iconTextureView.setBackgroundBitmap(bitmap); + iconTextureView.mRenderer.colorKey1 = Theme.key_premiumGradient1; + iconTextureView.mRenderer.colorKey2 = Theme.key_premiumGradient2; + iconTextureView.mRenderer.updateColors(); + linearLayout.addView(iconTextureView, LayoutHelper.createLinear(160, 160, Gravity.CENTER_HORIZONTAL)); + + TextView titleView = new TextView(context); + titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + titleView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + titleView.setGravity(Gravity.CENTER_HORIZONTAL); + titleView.setText(LocaleController.getString("TelegramPremium", R.string.TelegramPremium)); + titleView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + titleView.setLinkTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteLinkText)); + linearLayout.addView(titleView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, Gravity.CENTER_HORIZONTAL, 40, 0, 40, 0)); + + TextView subtitleView = new TextView(context); + subtitleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + subtitleView.setGravity(Gravity.CENTER_HORIZONTAL); + subtitleView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + linearLayout.addView(subtitleView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 16, 9, 16, 20)); + + titleView.setText(AndroidUtilities.replaceSingleTag(LocaleController.formatString("TelegramPremiumUserDialogTitle", R.string.TelegramPremiumUserDialogTitle, ContactsController.formatName(user.first_name, user.last_name)), () -> { + + })); + subtitleView.setText(AndroidUtilities.replaceTags(LocaleController.getString("TelegramPremiumUserDialogSubtitle", R.string.TelegramPremiumUserDialogSubtitle))); + + starParticlesView = new StarParticlesView(context); + FrameLayout frameLayout = new FrameLayout(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + starParticlesView.setTranslationY(iconTextureView.getTop() + iconTextureView.getMeasuredHeight() / 2f - starParticlesView.getMeasuredHeight() / 2f); + } + }; + frameLayout.setClipChildren(false); + frameLayout.addView(starParticlesView); + frameLayout.addView(linearLayout); + + starParticlesView.drawable.useGradient = true; + starParticlesView.drawable.init(); + iconTextureView.setStarParticlesView(starParticlesView); + + view = frameLayout; + break; + default: + case 1: + view = new PremiumFeatureCell(context) { + @Override + protected void dispatchDraw(Canvas canvas) { + AndroidUtilities.rectTmp.set(imageView.getLeft(), imageView.getTop(), imageView.getRight(), imageView.getBottom()); + gradientTools.gradientMatrix(0, 0, getMeasuredWidth(), totalGradientHeight, 0, -data.yOffset); + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), gradientTools.paint); + super.dispatchDraw(canvas); + } + }; + break; + case 2: + view = new ShadowSectionCell(context, 12, Theme.getColor(Theme.key_windowBackgroundGray)); + break; + case 3: + view = new View(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(68), MeasureSpec.EXACTLY)); + } + }; + break; + case 4: + view = new AboutPremiumView(context); + break; + } + view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + return new RecyclerListView.Holder(view); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (position >= featuresStartRow && position < featuresEndRow) { + ((PremiumFeatureCell) holder.itemView).setData(premiumFeatures.get(position - featuresStartRow), position != featuresEndRow - 1); + } + } + + @Override + public int getItemCount() { + return rowCount; + } + + @Override + public int getItemViewType(int position) { + if (position == paddingRow) { + return 0; + } else if (position >= featuresStartRow && position < featuresEndRow) { + return 1; + } else if (position == sectionRow) { + return 2; + } else if (position == buttonRow) { + return 3; + } else if (position == helpUsRow) { + return 4; + } + return super.getItemViewType(position); + } + + @Override + public boolean isEnabled(RecyclerView.ViewHolder holder) { + return holder.getItemViewType() == 1; + } + } + + private void measureGradient(int w, int h) { + int yOffset = 0; + for (int i = 0; i < premiumFeatures.size(); i++) { + dummyCell.setData(premiumFeatures.get(i), false); + dummyCell.measure(View.MeasureSpec.makeMeasureSpec(w, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(h, View.MeasureSpec.AT_MOST)); + premiumFeatures.get(i).yOffset = yOffset; + yOffset += dummyCell.getMeasuredHeight(); + } + + totalGradientHeight = yOffset; + } + + @Override + public void show() { + super.show(); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.stopAllHeavyOperations, 4); + } + + @Override + public void dismiss() { + super.dismiss(); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.startAllHeavyOperations, 4); + if (enterAnimator != null) { + enterAnimator.cancel(); + } + } + + @Override + protected void mainContainerDispatchDraw(Canvas canvas) { + super.mainContainerDispatchDraw(canvas); + if (startEnterFromView != null && enterTransitionInProgress) { + canvas.save(); + + float[] points = new float[]{startEnterFromX, startEnterFromY}; + startEnterFromView.getMatrix().mapPoints(points); + Drawable startEnterFromDrawable = startEnterFromView.getRightDrawable(); + float cxFrom = -coords[0] + startEnterFromX1 + points[0]; + float cyFrom = -coords[1] + startEnterFromY1 + points[1]; + + float fromSize = startEnterFromScale * startEnterFromDrawable.getIntrinsicWidth(); + float toSize = iconTextureView.getMeasuredHeight() * 0.8f; + float toSclale = toSize / fromSize; + float bigIconFromScale = fromSize / toSize; + + float cxTo = iconTextureView.getMeasuredWidth() / 2f; + View view = iconTextureView; + while (view != container) { + cxTo += view.getX(); + view = (View) view.getParent(); + } + float cyTo = iconTextureView.getY() + ((View) iconTextureView.getParent()).getY() + ((View) iconTextureView.getParent().getParent()).getY() + iconTextureView.getMeasuredHeight() / 2f; + + float x = AndroidUtilities.lerp(cxFrom, cxTo, CubicBezierInterpolator.EASE_OUT_QUINT.getInterpolation(enterTransitionProgress)); + float y = AndroidUtilities.lerp(cyFrom, cyTo, enterTransitionProgress); + + if (startEnterFromDrawable != null) { + float s = startEnterFromScale * (1f - enterTransitionProgress) + toSclale * enterTransitionProgress; + canvas.save(); + canvas.scale(s, s, x, y); + startEnterFromDrawable.setBounds( + (int) x - startEnterFromDrawable.getIntrinsicWidth() / 2, + (int) y - startEnterFromDrawable.getIntrinsicHeight() / 2, + (int) x + startEnterFromDrawable.getIntrinsicWidth() / 2, + (int) y + startEnterFromDrawable.getIntrinsicHeight() / 2); + startEnterFromDrawable.setAlpha((int) (255 * (1f - Utilities.clamp(enterTransitionProgress, 1, 0)))); + startEnterFromDrawable.draw(canvas); + startEnterFromDrawable.setAlpha(0); + canvas.restore(); + + s = AndroidUtilities.lerp(bigIconFromScale, 1, enterTransitionProgress); + canvas.scale(s, s, x, y); + canvas.translate(x - iconTextureView.getMeasuredWidth() / 2f, y - iconTextureView.getMeasuredHeight() / 2f); + // canvas.saveLayerAlpha(0, 0, iconTextureView.getMeasuredWidth(), iconTextureView.getMeasuredHeight(), (int) (255 * enterTransitionProgress), Canvas.ALL_SAVE_FLAG); + iconTextureView.draw(canvas); + // canvas.restore(); + } + canvas.restore(); + } + } + + @Override + protected boolean onCustomOpenAnimation() { + if (startEnterFromView == null) { + return true; + } + enterAnimator = ValueAnimator.ofFloat(0, 1f); + enterTransitionProgress = 0f; + enterTransitionInProgress = true; + iconContainer.invalidate(); + startEnterFromView.getRightDrawable().setAlpha(0); + startEnterFromView.invalidate(); + iconTextureView.startEnterAnimation(-360, 100); + enterAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + enterTransitionProgress = (float) animation.getAnimatedValue(); + container.invalidate(); + } + }); + enterAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + enterTransitionInProgress = false; + enterTransitionProgress = 1f; + iconContainer.invalidate(); + ValueAnimator iconAlphaBack = ValueAnimator.ofInt(0, 255); + Drawable drawable = startEnterFromView.getRightDrawable(); + iconAlphaBack.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + drawable.setAlpha((Integer) animation.getAnimatedValue()); + startEnterFromView.invalidate(); + } + }); + iconAlphaBack.start(); + super.onAnimationEnd(animation); + } + }); + enterAnimator.setDuration(600); + enterAnimator.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + enterAnimator.start(); + return super.onCustomOpenAnimation(); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumStickersPreviewRecycler.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumStickersPreviewRecycler.java new file mode 100644 index 000000000..8eaba8caf --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumStickersPreviewRecycler.java @@ -0,0 +1,454 @@ +package org.telegram.ui.Components.Premium; + +import android.content.Context; +import android.graphics.Canvas; +import android.view.Gravity; +import android.view.HapticFeedbackConstants; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.DocumentObject; +import org.telegram.messenger.ImageLocation; +import org.telegram.messenger.ImageReceiver; +import org.telegram.messenger.MediaDataController; +import org.telegram.messenger.MessageObject; +import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.SvgHelper; +import org.telegram.messenger.Utilities; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.RecyclerListView; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + +public class PremiumStickersPreviewRecycler extends RecyclerListView implements NotificationCenter.NotificationCenterDelegate, PagerHeaderView { + + private final ArrayList premiumStickers = new ArrayList<>(); + LinearLayoutManager layoutManager; + boolean firstMeasure = true; + boolean firstDraw = true; + private final int currentAccount; + + boolean hasSelectedView; + boolean haptic; + Runnable autoScrollRunnable = new Runnable() { + @Override + public void run() { + if (!autoPlayEnabled) { + return; + } + if (!sortedView.isEmpty()) { + StickerView stickerView = sortedView.get(sortedView.size() - 1); + int adapterPosition = getChildAdapterPosition(stickerView); + if (adapterPosition >= 0) { + adapterPosition++; + View view = layoutManager.findViewByPosition(adapterPosition); + if (view != null) { + haptic = false; + drawEffectForView(view, true); + smoothScrollBy(0, view.getTop() - (getMeasuredHeight() - view.getMeasuredHeight()) / 2, AndroidUtilities.overshootInterpolator); + } + } + } + scheduleAutoScroll(); + } + }; + + CubicBezierInterpolator interpolator = new CubicBezierInterpolator(0, 0.5f, 0.5f, 1f); + ArrayList sortedView = new ArrayList<>(); + Comparator comparator = (o1, o2) -> (int) (o1.progress * 100 - o2.progress * 100); + + View oldSelectedView; + private boolean checkEffect; + private int size; + int selectStickerOnNextLayout = -1; + + public PremiumStickersPreviewRecycler(Context context, int currentAccount) { + super(context); + this.currentAccount = currentAccount; + setLayoutManager(layoutManager = new LinearLayoutManager(context)); + setAdapter(new Adapter()); + setClipChildren(false); + + setOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + if (recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_DRAGGING) { + drawEffectForView(null, true); + } + invalidate(); + } + + @Override + public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + if (newState == RecyclerView.SCROLL_STATE_DRAGGING) { + haptic = true; + } + if (newState == RecyclerView.SCROLL_STATE_IDLE) { + StickerView scrollToView = null; + for (int i = 0; i < recyclerView.getChildCount(); i++) { + StickerView view = (StickerView) getChildAt(i); + if (scrollToView == null || view.progress > scrollToView.progress) { + scrollToView = view; + } + } + if (scrollToView != null) { + drawEffectForView(scrollToView, true); + haptic = false; + smoothScrollBy(0, scrollToView.getTop() - (getMeasuredHeight() - scrollToView.getMeasuredHeight()) / 2, AndroidUtilities.overshootInterpolator); + } + scheduleAutoScroll(); + } else { + AndroidUtilities.cancelRunOnUIThread(autoScrollRunnable); + } + } + }); + + setOnItemClickListener((view, position) -> { + if (view != null) { + drawEffectForView(view, true); + haptic = false; + smoothScrollBy(0, view.getTop() - (getMeasuredHeight() - view.getMeasuredHeight()) / 2, AndroidUtilities.overshootInterpolator); + } + }); + + MediaDataController.getInstance(currentAccount).preloadPremiumPreviewStickers(); + setStickers(); + } + + @Override + protected void onMeasure(int widthSpec, int heightSpec) { + if (MeasureSpec.getSize(heightSpec) > MeasureSpec.getSize(widthSpec)) { + size = MeasureSpec.getSize(widthSpec); + } else { + size = MeasureSpec.getSize(heightSpec); + } + super.onMeasure(widthSpec, heightSpec); + } + + private void scheduleAutoScroll() { + if (!autoPlayEnabled) { + return; + } + AndroidUtilities.cancelRunOnUIThread(autoScrollRunnable); + AndroidUtilities.runOnUIThread(autoScrollRunnable, 2700); + } + + private void drawEffectForView(View view, boolean animated) { + hasSelectedView = view != null; + for (int i = 0; i < getChildCount(); i++) { + StickerView child = (StickerView) getChildAt(i); + if (child == view) { + child.setDrawImage(true, true, animated); + } else { + child.setDrawImage(!hasSelectedView, false, animated); + } + } + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + super.onLayout(changed, l, t, r, b); + if (firstMeasure && !premiumStickers.isEmpty() && getChildCount() > 0) { + firstMeasure = false; + AndroidUtilities.runOnUIThread(() -> { + int startPosition = Integer.MAX_VALUE >> 1; + startPosition -= startPosition % premiumStickers.size(); + layoutManager.scrollToPositionWithOffset(selectStickerOnNextLayout = startPosition, (getMeasuredHeight() - getChildAt(0).getMeasuredHeight()) >> 1); + drawEffectForView(null, false); + }); + } + if (selectStickerOnNextLayout > 0) { + ViewHolder holder = findViewHolderForAdapterPosition(selectStickerOnNextLayout); + if (holder != null) { + drawEffectForView(holder.itemView, false); + } + selectStickerOnNextLayout = -1; + } + } + + @Override + protected void dispatchDraw(Canvas canvas) { + if (!isVisible) { + return; + } + sortedView.clear(); + for (int i = 0; i < getChildCount(); i++) { + StickerView child = (StickerView) getChildAt(i); + float cY = (getMeasuredHeight() >> 1) + child.getMeasuredHeight(); + float p = (child.getTop() + child.getMeasuredHeight() + (child.getMeasuredHeight() >> 1)) / cY; + if (p > 1) { + p = 2 - p; + } + p = Utilities.clamp(p, 1f, 0f); + child.progress = p; + child.view.setTranslationX(-getMeasuredWidth() * 2f * (1f - interpolator.getInterpolation(p))); + sortedView.add(child); + } + Collections.sort(sortedView, comparator); + if ((firstDraw || checkEffect) && sortedView.size() > 0 && !premiumStickers.isEmpty()) { + drawEffectForView(oldSelectedView = sortedView.get(sortedView.size() - 1), !firstDraw); + firstDraw = false; + checkEffect = false; + } else if (oldSelectedView != sortedView.get(sortedView.size() - 1)) { + oldSelectedView = sortedView.get(sortedView.size() - 1); + if (haptic) { + performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP); + } + } + for (int i = 0; i < sortedView.size(); i++) { + canvas.save(); + canvas.translate(sortedView.get(i).getX(), sortedView.get(i).getY()); + sortedView.get(i).draw(canvas); + canvas.restore(); + } + } + + @Override + public boolean drawChild(Canvas canvas, View child, long drawingTime) { + return true; + } + + boolean isVisible; + + @Override + public void setOffset(float translationX) { + float p = Math.abs(translationX / (float) getMeasuredWidth()); + boolean localVisible = p < 1f; + if (isVisible != localVisible) { + isVisible = localVisible; + invalidate(); + } + } + + private class Adapter extends RecyclerListView.SelectionAdapter { + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = new StickerView(parent.getContext()); + view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + return new RecyclerListView.Holder(view); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (premiumStickers.isEmpty()) { + return; + } + StickerView stickerView = (StickerView) holder.itemView; + stickerView.setSticker(premiumStickers.get(position % premiumStickers.size())); + stickerView.setDrawImage(!hasSelectedView, false, false); + } + + @Override + public int getItemCount() { + return Integer.MAX_VALUE; + } + + @Override + public boolean isEnabled(RecyclerView.ViewHolder holder) { + return false; + } + + } + + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.premiumStickersPreviewLoaded); + scheduleAutoScroll(); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.premiumStickersPreviewLoaded); + } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.premiumStickersPreviewLoaded) { + setStickers(); + } + } + + private void setStickers() { + premiumStickers.clear(); + premiumStickers.addAll(MediaDataController.getInstance(currentAccount).premiumPreviewStickers); + getAdapter().notifyDataSetChanged(); + invalidate(); + } + + private class StickerView extends FrameLayout { + + public float progress; + View view; + ImageReceiver centerImage; + ImageReceiver effectImage; + boolean drawEffect; + boolean animateImage = true; + private float effectProgress; + private float animateImageProgress; + TLRPC.Document document; + boolean update; + + public StickerView(Context context) { + super(context); + view = new View(context) { + + @Override + public void draw(Canvas canvas) { + super.draw(canvas); + if (update) { + SvgHelper.SvgDrawable svgThumb = DocumentObject.getSvgThumb(document, Theme.key_windowBackgroundGray, 0.5f); + centerImage.setImage(ImageLocation.getForDocument(document), null, svgThumb, "webp", null, 1); + if (MessageObject.isPremiumSticker(document)) { + effectImage.setImage(ImageLocation.getForDocument(MessageObject.getPremiumStickerAnimation(document), document), "140_140", null, null, "tgs", null, 1); + } + } + + if (drawEffect) { + if (effectProgress == 0f) { + effectProgress = 1f; + if (effectImage.getLottieAnimation() != null) { + effectImage.getLottieAnimation().setCurrentFrame(0, false); + } + } + if (effectImage.getLottieAnimation() != null) { + effectImage.getLottieAnimation().start(); + } + if (effectImage.getLottieAnimation() != null && effectImage.getLottieAnimation().isLastFrame() && autoPlayEnabled) { + AndroidUtilities.cancelRunOnUIThread(autoScrollRunnable); + AndroidUtilities.runOnUIThread(autoScrollRunnable, 0); + } + } else { + if (effectImage.getLottieAnimation() != null) { + effectImage.getLottieAnimation().stop(); + } + } + + if (animateImage) { + if (centerImage.getLottieAnimation() != null) { + centerImage.getLottieAnimation().start(); + } + } else { + if (centerImage.getLottieAnimation() != null) { + centerImage.getLottieAnimation().stop(); + } + } + + if (animateImage && animateImageProgress != 1f) { + animateImageProgress += 16f / 150f; + invalidate(); + } else if (!animateImage && animateImageProgress != 0) { + animateImageProgress -= 16f / 150f; + invalidate(); + } + animateImageProgress = Utilities.clamp(animateImageProgress, 1f, 0f); + + if (drawEffect && effectProgress != 1f) { + effectProgress += 16f / 150f; + invalidate(); + } else if (!drawEffect && effectProgress != 0) { + effectProgress -= 16f / 150f; + invalidate(); + } + effectProgress = Utilities.clamp(effectProgress, 1f, 0f); + + float smallImageSize = PremiumStickersPreviewRecycler.this.size * 0.45f; + float size = smallImageSize * 1.499267f; + float x = getMeasuredWidth() - size; + float y = (getMeasuredHeight() - size) / 2f; + centerImage.setImageCoords(size - smallImageSize - size * 0.02f + x, (size - smallImageSize) / 2f + y, smallImageSize, smallImageSize); + centerImage.setAlpha(0.3f + 0.7f * animateImageProgress); + centerImage.draw(canvas); + + if (effectProgress != 0) { + effectImage.setImageCoords(x, y, size, size); + effectImage.setAlpha(effectProgress); + effectImage.draw(canvas); + } + } + }; + centerImage = new ImageReceiver(view); + effectImage = new ImageReceiver(view); + centerImage.setAllowStartAnimation(false); + effectImage.setAllowStartAnimation(false); + setClipChildren(false); + addView(view, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.RIGHT | Gravity.CENTER_VERTICAL)); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int size = (int) (PremiumStickersPreviewRecycler.this.size * 0.6f); + view.getLayoutParams().width = view.getLayoutParams().height = size - AndroidUtilities.dp(16); + super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec((int) (size * 0.7f), MeasureSpec.EXACTLY)); + } + + public void setSticker(TLRPC.Document document) { + this.document = document; + update = true; + } + + public void setDrawImage(boolean animateImage, boolean drawEffect, boolean animated) { + if (this.drawEffect != drawEffect) { + this.drawEffect = drawEffect; + if (!animated) { + effectProgress = drawEffect ? 1f : 0f; + } + view.invalidate(); + } + if (this.animateImage != animateImage) { + this.animateImage = animateImage; + if (!animated) { + animateImageProgress = animateImage ? 1f : 0f; + } + view.invalidate(); + } + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + centerImage.onAttachedToWindow(); + effectImage.onAttachedToWindow(); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + centerImage.onDetachedFromWindow(); + effectImage.onDetachedFromWindow(); + } + } + + boolean autoPlayEnabled; + + public void setAutoPlayEnabled(boolean b) { + if (autoPlayEnabled != b) { + autoPlayEnabled = b; + if (autoPlayEnabled) { + scheduleAutoScroll(); + checkEffect = true; + invalidate(); + } else { + AndroidUtilities.cancelRunOnUIThread(autoScrollRunnable); + drawEffectForView(null, true); + } + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/ProfilePremiumCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/ProfilePremiumCell.java new file mode 100644 index 000000000..42215a772 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/ProfilePremiumCell.java @@ -0,0 +1,49 @@ +package org.telegram.ui.Components.Premium; + +import android.content.Context; +import android.graphics.Canvas; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Cells.TextCell; + +public class ProfilePremiumCell extends TextCell { + + StarParticlesView.Drawable drawable = new StarParticlesView.Drawable(6); + + public ProfilePremiumCell(Context context, Theme.ResourcesProvider resourcesProvider) { + super(context, resourcesProvider); + drawable.size1 = 6; + drawable.size2 = 6; + drawable.size3 = 6; + drawable.useGradient = true; + drawable.speedScale = 3f; + drawable.minLifeTime = 600; + drawable.randLifeTime = 500; + drawable.startFromCenter = true; + drawable.type = StarParticlesView.Drawable.TYPE_SETTINGS; + + drawable.init(); + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + float cx = imageView.getX() + imageView.getWidth() / 2f; + float cy = imageView.getPaddingTop() + imageView.getY() + imageView.getHeight() / 2f - AndroidUtilities.dp(3); + drawable.rect.set( + cx - AndroidUtilities.dp(4), cy - AndroidUtilities.dp(4), + cx + AndroidUtilities.dp(4), cy + AndroidUtilities.dp(4) + ); + if (changed) { + drawable.resetPositions(); + } + } + + @Override + protected void dispatchDraw(Canvas canvas) { + drawable.onDraw(canvas); + invalidate(); + super.dispatchDraw(canvas); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/ReactionDrawingObject.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/ReactionDrawingObject.java new file mode 100644 index 000000000..1cf886f66 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/ReactionDrawingObject.java @@ -0,0 +1,185 @@ +package org.telegram.ui.Components.Premium; + +import android.graphics.Canvas; +import android.graphics.Rect; +import android.view.View; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.DocumentObject; +import org.telegram.messenger.ImageLocation; +import org.telegram.messenger.ImageReceiver; +import org.telegram.messenger.SvgHelper; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.Reactions.ReactionsEffectOverlay; + +public class ReactionDrawingObject extends CarouselView.DrawingObject { + + private View parentView; + ImageReceiver imageReceiver = new ImageReceiver(); + ImageReceiver actionReceiver = new ImageReceiver(); + ImageReceiver effectImageReceiver = new ImageReceiver(); + TLRPC.TL_availableReaction reaction; + private int position; + long lastSelectedTime; + private boolean selected; + android.graphics.Rect rect = new Rect(); + + private float selectedProgress; + + public ReactionDrawingObject(int i) { + position = i; + } + + @Override + public void onAttachToWindow(View parentView, int i) { + this.parentView = parentView; + if (i == 0) { + imageReceiver.setParentView(parentView); + imageReceiver.onAttachedToWindow(); + imageReceiver.setLayerNum(Integer.MAX_VALUE); + + SvgHelper.SvgDrawable svgThumb = DocumentObject.getSvgThumb(reaction.activate_animation, Theme.key_windowBackgroundGray, 0.5f); +// imageReceiver.setImage(ImageLocation.getForDocument(reaction.appear_animation), "60_60_nolimit", null, null, svgThumb, 0, "tgs", reaction, 0); +// imageReceiver.setAutoRepeat(0); +// if (imageReceiver.getLottieAnimation() != null) { +// imageReceiver.getLottieAnimation().setCurrentFrame(0, false); +// } +// imageReceiver.startAnimation(); +// + + actionReceiver.setParentView(parentView); + actionReceiver.onAttachedToWindow(); + actionReceiver.setLayerNum(Integer.MAX_VALUE); + + actionReceiver.setAllowStartLottieAnimation(false); + actionReceiver.setImage(ImageLocation.getForDocument(reaction.activate_animation), "50_50_nolimit", null, null, svgThumb, 0, "tgs", reaction, 0); + actionReceiver.setAutoRepeat(0); + if (actionReceiver.getLottieAnimation() != null) { + actionReceiver.getLottieAnimation().setCurrentFrame(0, false); + actionReceiver.getLottieAnimation().stop(); + } + } else { + effectImageReceiver.setParentView(parentView); + effectImageReceiver.onAttachedToWindow(); + effectImageReceiver.setLayerNum(Integer.MAX_VALUE); + + effectImageReceiver.setAllowStartLottieAnimation(false); + int size = ReactionsEffectOverlay.sizeForBigReaction(); + effectImageReceiver.setImage(ImageLocation.getForDocument(reaction.around_animation), size + "_" + size, null, null, null, 0, "tgs", reaction, 0); + effectImageReceiver.setAutoRepeat(0); + if (effectImageReceiver.getLottieAnimation() != null) { + effectImageReceiver.getLottieAnimation().setCurrentFrame(0, false); + effectImageReceiver.getLottieAnimation().stop(); + } + } + } + + @Override + public void onDetachFromWindow() { + imageReceiver.onDetachedFromWindow(); + imageReceiver.setParentView(null); + effectImageReceiver.onDetachedFromWindow(); + effectImageReceiver.setParentView(null); + actionReceiver.onDetachedFromWindow(); + actionReceiver.setParentView(null); + } + + @Override + public void draw(Canvas canvas, float cX, float cY, float globalScale) { + int imageSize = (int) (AndroidUtilities.dp(120) * globalScale); + int effectSize = (int) (AndroidUtilities.dp(350) * globalScale); + rect.set((int) (cX - imageSize / 2f), (int) (cY - imageSize / 2f), + (int) (cX + imageSize / 2f), (int) (cY + imageSize / 2f)); + + + imageReceiver.setImageCoords(cX - imageSize / 2f, cY - imageSize / 2f, imageSize, imageSize); + actionReceiver.setImageCoords(cX - imageSize / 2f, cY - imageSize / 2f, imageSize, imageSize); + + if (actionReceiver.getLottieAnimation() != null && actionReceiver.getLottieAnimation().hasBitmap()) { + actionReceiver.draw(canvas); + if (actionReceiver.getLottieAnimation() != null && actionReceiver.getLottieAnimation().isLastFrame()) { + // selected = false; + } else if (selected && actionReceiver.getLottieAnimation() != null && !actionReceiver.getLottieAnimation().isRunning()) { + actionReceiver.getLottieAnimation().start(); + } + } + if (selected || selectedProgress != 0) { + effectImageReceiver.setImageCoords(cX - effectSize / 2f, cY - effectSize / 2f, effectSize, effectSize); + effectImageReceiver.setAlpha(selectedProgress); + if (selectedProgress != 1f) { + float s = 0.7f + selectedProgress * 0.3f; + canvas.save(); + canvas.scale(s, s, cX, cY); + effectImageReceiver.draw(canvas); + canvas.restore(); + } else { + effectImageReceiver.draw(canvas); + } + + if (selected && effectImageReceiver.getLottieAnimation() != null && effectImageReceiver.getLottieAnimation().isLastFrame()) { + carouselView.autoplayToNext(); + } + + if (selected && effectImageReceiver.getLottieAnimation() != null && !effectImageReceiver.getLottieAnimation().isRunning() && !effectImageReceiver.getLottieAnimation().isLastFrame()) { + effectImageReceiver.getLottieAnimation().start(); + } + if (selected && effectImageReceiver.getLottieAnimation() != null && !effectImageReceiver.getLottieAnimation().isRunning() && effectImageReceiver.getLottieAnimation().isLastFrame()) { + selected = false; + } + if (selected && selectedProgress != 1f) { + selectedProgress += 16f / 200f; + if (selectedProgress > 1f) { + selectedProgress = 1f; + } + } else if (!selected) { + selectedProgress -= 16f / 200f; + if (selectedProgress < 0) { + selectedProgress = 0; + } + } + } + } + + @Override + public boolean checkTap(float x, float y) { + if (rect.contains((int) x, (int) y)) { + select(); + return true; + } + return false; + } + + @Override + public void select() { + if (selected) { + return; + } + selected = true; + if (selectedProgress == 0) { + selectedProgress = 1f; + } + lastSelectedTime = System.currentTimeMillis(); + if (effectImageReceiver.getLottieAnimation() != null) { + effectImageReceiver.getLottieAnimation().setCurrentFrame(0, false); + effectImageReceiver.getLottieAnimation().start(); + } + + if (actionReceiver.getLottieAnimation() != null) { + actionReceiver.getLottieAnimation().setCurrentFrame(0, false); + actionReceiver.getLottieAnimation().start(); + } + + parentView.invalidate(); + } + + @Override + public void hideAnimation() { + super.hideAnimation(); + selected = false; + } + + public void set(TLRPC.TL_availableReaction reaction) { + this.reaction = reaction; + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/SpeedLineParticles.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/SpeedLineParticles.java new file mode 100644 index 000000000..b56e7ab0c --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/SpeedLineParticles.java @@ -0,0 +1,127 @@ +package org.telegram.ui.Components.Premium; + +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.RectF; + +import androidx.core.graphics.ColorUtils; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.Utilities; +import org.telegram.ui.ActionBar.Theme; + +import java.util.ArrayList; + +public class SpeedLineParticles { + + public static class Drawable { + + public RectF rect = new RectF(); + public RectF screenRect = new RectF(); + public boolean paused; + private Paint paint = new Paint(); + private float lines[]; + + ArrayList particles = new ArrayList<>(); + public float speedScale = 1f; + + public final int count; + public boolean useGradient; + public int size1 = 14, size2 = 12, size3 = 10; + public long minLifeTime = 2000; + private int lastColor; + private final float dt = 1000 / AndroidUtilities.screenRefreshRate; + + public Drawable(int count) { + this.count = count; + lines = new float[count * 4]; + } + + public void init() { + if (particles.isEmpty()) { + for (int i = 0; i < count; i++) { + particles.add(new Drawable.Particle()); + } + } + updateColors(); + } + + public void updateColors() { + int c = ColorUtils.setAlphaComponent(Theme.getColor(Theme.key_premiumStartSmallStarsColor2), 80); + if (lastColor != c) { + lastColor = c; + paint.setColor(lastColor); + } + } + + + + public void resetPositions() { + long time = System.currentTimeMillis(); + for (int i = 0; i < particles.size(); i++) { + particles.get(i).genPosition(time, true); + } + } + + public void onDraw(Canvas canvas) { + long time = System.currentTimeMillis(); + for (int i = 0; i < particles.size(); i++) { + Drawable.Particle particle = particles.get(i); + if (paused) { + particle.draw(canvas, i, pausedTime); + } else { + particle.draw(canvas, i, time); + } + if (time > particle.lifeTime || !screenRect.contains(particle.x, particle.y)) { + particle.genPosition(time, false); + } + } + canvas.drawLines(lines, paint); + } + + long pausedTime; + + private class Particle { + private float x, y; + private float vecX, vecY; + private int starIndex; + private long lifeTime; + private int alpha; + float inProgress; + + public void draw(Canvas canvas, int index, long time) { + lines[4 * index ] = x; + lines[4 * index + 1] = y; + lines[4 * index + 2] = x + AndroidUtilities.dp(30) * vecX; + lines[4 * index + 3] = y + AndroidUtilities.dp(30) * vecY; + if (!paused) { + float speed = AndroidUtilities.dp(4) * (dt / 660f) * speedScale; + x += vecX * speed; + y += vecY * speed; + + if (inProgress != 1f) { + inProgress += dt / 200; + if (inProgress > 1f) { + inProgress = 1f; + } + } + } + } + + public void genPosition(long time, boolean reset) { + lifeTime = time + minLifeTime + Utilities.fastRandom.nextInt(1000); + RectF currentRect = reset ? screenRect : rect; + float randX = currentRect.left + Math.abs(Utilities.fastRandom.nextInt() % currentRect.width()); + float randY = currentRect.top + Math.abs(Utilities.fastRandom.nextInt() % currentRect.height()); + x = randX; + y = randY; + double a = Math.atan2(x - rect.centerX(), y - rect.centerY()); + vecX = (float) Math.sin(a); + vecY = (float) Math.cos(a); + alpha = (int) (255 * ((50 + Utilities.fastRandom.nextInt(50)) / 100f)); + + inProgress = 0; + } + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/StarParticlesView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/StarParticlesView.java new file mode 100644 index 000000000..86ca1d858 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/StarParticlesView.java @@ -0,0 +1,514 @@ +package org.telegram.ui.Components.Premium; + +import android.animation.AnimatorSet; +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.CornerPathEffect; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.RectF; +import android.view.View; + +import androidx.core.content.ContextCompat; +import androidx.core.graphics.ColorUtils; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.R; +import org.telegram.messenger.SharedConfig; +import org.telegram.messenger.SvgHelper; +import org.telegram.messenger.Utilities; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.GLIconSettingsView; +import org.telegram.ui.PremiumPreviewFragment; + +import java.util.ArrayList; + +public class StarParticlesView extends View { + + public Drawable drawable; + int size; + boolean distributionAlgorithm; + + public StarParticlesView(Context context) { + super(context); + + int particlesCount = 50; + if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_HIGH) { + particlesCount = 200; + } else if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_AVERAGE) { + particlesCount = 100; + } + + drawable = new Drawable(particlesCount); + drawable.type = 100; + drawable.roundEffect = true; + drawable.useRotate = true; + drawable.useBlur = true; + drawable.checkBounds = true; + drawable.size1 = 4; + drawable.k1 = drawable.k2 = drawable.k3 = 0.98f; + drawable.init(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int sizeInternal = getMeasuredWidth() << 16 + getMeasuredHeight(); + drawable.rect.set(0, 0, AndroidUtilities.dp(140), AndroidUtilities.dp(140)); + drawable.rect.offset((getMeasuredWidth() - drawable.rect.width()) / 2, (getMeasuredHeight() - drawable.rect.height()) / 2); + drawable.rect2.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + if (size != sizeInternal) { + size = sizeInternal; + drawable.resetPositions(); + } + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + drawable.onDraw(canvas); + if (!drawable.paused) { + invalidate(); + } + } + + public void flingParticles(float sum) { + float maxSpeed = 15f; + if (sum < 60) { + maxSpeed = 5f; + } else if (sum < 180) { + maxSpeed = 9f; + } + AnimatorSet animatorSet = new AnimatorSet(); + ValueAnimator.AnimatorUpdateListener updateListener = animation -> drawable.speedScale = (float) animation.getAnimatedValue(); + + ValueAnimator a1 = ValueAnimator.ofFloat(1f, maxSpeed); + a1.addUpdateListener(updateListener); + a1.setDuration(600); + + ValueAnimator a2 = ValueAnimator.ofFloat(maxSpeed, 1f); + a2.addUpdateListener(updateListener); + a2.setDuration(2000); + animatorSet.playTogether(a1, a2); + animatorSet.start(); + } + + public static class Drawable { + + public RectF rect = new RectF(); + public RectF rect2 = new RectF(); + public RectF excludeRect = new RectF(); + private final Bitmap[] stars = new Bitmap[3]; + public boolean paused; + public boolean startFromCenter; + private Paint paint = new Paint(); + + ArrayList particles = new ArrayList<>(); + public float speedScale = 1f; + + public final int count; + public boolean useGradient; + public int size1 = 14, size2 = 12, size3 = 10; + public float k1 = 0.85f, k2 = 0.85f, k3 = 0.9f; + public long minLifeTime = 2000; + public int randLifeTime = 1000; + private int lastColor; + private final float dt = 1000 / AndroidUtilities.screenRefreshRate; + private boolean distributionAlgorithm; + Matrix matrix = new Matrix(); + Matrix matrix2 = new Matrix(); + Matrix matrix3 = new Matrix(); + float[] points1; + float[] points2; + float[] points3; + int pointsCount1, pointsCount2, pointsCount3; + public boolean useRotate; + public boolean checkBounds = false; + public boolean checkTime = true; + public boolean isCircle = true; + public boolean useBlur = false; + public boolean roundEffect = true; + public int type = -1; + public String colorKey = Theme.key_premiumStartSmallStarsColor; + + public final static int TYPE_SETTINGS = 101; + + public Drawable(int count) { + this.count = count; + distributionAlgorithm = count < 50; + } + + public void init() { + if (useRotate) { + points1 = new float[count * 2]; + points2 = new float[count * 2]; + points3 = new float[count * 2]; + } + generateBitmaps(); + if (particles.isEmpty()) { + for (int i = 0; i < count; i++) { + particles.add(new Particle()); + } + } + } + + public void updateColors() { + int c = Theme.getColor(colorKey); + if (lastColor != c) { + lastColor = c; + generateBitmaps(); + } + } + + private void generateBitmaps() { + for (int i = 0; i < 3; i++) { + int size; + float k = k1; + Bitmap bitmap; + if (i == 0) { + size = AndroidUtilities.dp(size1); + } else if (i == 1) { + k = k2; + size = AndroidUtilities.dp(size2); + } else { + k = k3; + size = AndroidUtilities.dp(size3); + } + + if (type == PremiumPreviewFragment.PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT) { + int res; + if (i == 0) { + res = R.raw.premium_object_folder; + } else if (i == 1) { + res = R.raw.premium_object_bubble; + } else { + res = R.raw.premium_object_settings; + } + stars[i] = SvgHelper.getBitmap(res, size, size, ColorUtils.setAlphaComponent(Theme.getColor(colorKey), 30)); + continue; + } + if (type == PremiumPreviewFragment.PREMIUM_FEATURE_ADS) { + int res; + if (i == 0) { + res = R.raw.premium_object_adsbubble; + } else if (i == 1) { + res = R.raw.premium_object_like; + } else { + res = R.raw.premium_object_noads; + } + stars[i] = SvgHelper.getBitmap(res, size, size, ColorUtils.setAlphaComponent(Theme.getColor(colorKey), 30)); + continue; + } + if (type == PremiumPreviewFragment.PREMIUM_FEATURE_ANIMATED_AVATARS) { + int res; + if (i == 0) { + res = R.raw.premium_object_video2; + } else if (i == 1) { + res = R.raw.premium_object_video; + } else { + res = R.raw.premium_object_user; + } + stars[i] = SvgHelper.getBitmap(res, size, size, ColorUtils.setAlphaComponent(Theme.getColor(colorKey), 30)); + continue; + } + + bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + stars[i] = bitmap; + + Canvas canvas = new Canvas(bitmap); + + if (type == PremiumPreviewFragment.PREMIUM_FEATURE_PROFILE_BADGE && (i == 1 || i == 2)) { + android.graphics.drawable.Drawable drawable = ContextCompat.getDrawable(ApplicationLoader.applicationContext, R.drawable.msg_premium_liststar); + drawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(colorKey), PorterDuff.Mode.MULTIPLY)); + drawable.setBounds(0, 0, size, size); + drawable.draw(canvas); + continue; + } + Path path = new Path(); + int sizeHalf = size >> 1; + int mid = (int) (sizeHalf * k); + path.moveTo(0, sizeHalf); + path.lineTo(mid, mid); + path.lineTo(sizeHalf, 0); + path.lineTo(size - mid, mid); + path.lineTo(size, sizeHalf); + path.lineTo(size - mid, size - mid); + path.lineTo(sizeHalf, size); + path.lineTo(mid, size - mid); + path.lineTo(0, sizeHalf); + path.close(); + + Paint paint = new Paint(); + if (useGradient) { + if (size >= AndroidUtilities.dp(10)) { + PremiumGradient.getInstance().updateMainGradientMatrix(0, 0, size, size, -2 * size, 0); + } else { + PremiumGradient.getInstance().updateMainGradientMatrix(0, 0, size, size, -4 * size, 0); + } + Paint paint1 = PremiumGradient.getInstance().getMainGradientPaint(); + if (roundEffect) { + paint1.setPathEffect(new CornerPathEffect(AndroidUtilities.dpf2(size1 / 5f))); + } + paint1.setAlpha(120); + canvas.drawPath(path, paint1); + paint1.setPathEffect(null); + paint1.setAlpha(255); + } else { + if (type == 100) { + paint.setColor(ColorUtils.setAlphaComponent(Theme.getColor(colorKey), 200)); + } else { + paint.setColor(Theme.getColor(colorKey)); + } + if (roundEffect) { + paint.setPathEffect(new CornerPathEffect(AndroidUtilities.dpf2(size1 / 5f))); + } + canvas.drawPath(path, paint); + } + if (useBlur) { + Utilities.stackBlurBitmap(bitmap, 2); + } + } + } + + + public void resetPositions() { + long time = System.currentTimeMillis(); + for (int i = 0; i < particles.size(); i++) { + particles.get(i).genPosition(time); + } + } + + float a; + float a1; + float a2; + + public void onDraw(Canvas canvas) { + onDraw(canvas, 1f); + } + + public void onDraw(Canvas canvas, float alpha) { + long time = System.currentTimeMillis(); + if (useRotate) { + matrix.reset(); + a += 360f * (16f / 40000f); + a1 += 360f * (16f / 50000f); + a2 += 360f * (16f / 60000f); + matrix.setRotate(a, rect.centerX(), rect.centerY()); + matrix2.setRotate(a1, rect.centerX(), rect.centerY()); + matrix3.setRotate(a2, rect.centerX(), rect.centerY()); + + pointsCount1 = 0; + pointsCount2 = 0; + pointsCount3 = 0; + for (int i = 0; i < particles.size(); i++) { + Particle particle = particles.get(i); + particle.updatePoint(); + } + matrix.mapPoints(points1, 0, points1, 0, pointsCount1); + matrix2.mapPoints(points2, 0, points2, 0, pointsCount2); + matrix3.mapPoints(points3, 0, points3, 0, pointsCount3); + pointsCount1 = 0; + pointsCount2 = 0; + pointsCount3 = 0; + } + + for (int i = 0; i < particles.size(); i++) { + Particle particle = particles.get(i); + if (paused) { + particle.draw(canvas, pausedTime, alpha); + } else { + particle.draw(canvas, time,alpha); + } + if (checkTime) { + if (time > particle.lifeTime) { + particle.genPosition(time); + } + } + if (checkBounds) { + if (!rect2.contains(particle.drawingX, particle.drawingY)) { + particle.genPosition(time); + } + } + } + } + + long pausedTime; + + private class Particle { + private float x, y; + private float x2, y2; + private float drawingX, drawingY; + private float vecX, vecY; + private int starIndex; + private long lifeTime; + private int alpha; + private float randomRotate; + float inProgress; + + public void updatePoint() { + if (starIndex == 0) { + points1[2 * pointsCount1] = x; + points1[2 * pointsCount1 + 1] = y; + pointsCount1++; + } else if (starIndex == 1) { + points2[2 * pointsCount2] = x; + points2[2 * pointsCount2 + 1] = y; + pointsCount2++; + } else if (starIndex == 2) { + points3[2 * pointsCount3] = x; + points3[2 * pointsCount3 + 1] = y; + pointsCount3++; + } + } + + public void draw(Canvas canvas, long time, float alpha) { + if (useRotate) { + if (starIndex == 0) { + drawingX = points1[2 * pointsCount1]; + drawingY = points1[2 * pointsCount1 + 1]; + pointsCount1++; + } else if (starIndex == 1) { + drawingX = points2[2 * pointsCount2]; + drawingY = points2[2 * pointsCount2 + 1]; + pointsCount2++; + } else if (starIndex == 2) { + drawingX = points3[2 * pointsCount3]; + drawingY = points3[2 * pointsCount3 + 1]; + pointsCount3++; + } + } else { + drawingX = x; + drawingY = y; + } + boolean skipDraw = false; + if (!excludeRect.isEmpty() && excludeRect.contains(drawingX, drawingY)) { + skipDraw = true; + } + if (!skipDraw) { + canvas.save(); + canvas.translate(drawingX, drawingY); + if (randomRotate != 0) { + canvas.rotate(randomRotate, stars[starIndex].getWidth() / 2f, stars[starIndex].getHeight() / 2f); + } + if (inProgress < 1f || GLIconSettingsView.smallStarsSize != 1f) { + float s = AndroidUtilities.overshootInterpolator.getInterpolation(inProgress) * GLIconSettingsView.smallStarsSize; + canvas.scale(s, s, 0, 0); + } + float outProgress = 0f; + if (checkTime && lifeTime - time < 200) { + outProgress = 1f - (lifeTime - time) / 150f; + outProgress = Utilities.clamp(outProgress, 1f, 0f); + } + paint.setAlpha((int) (this.alpha * (1f - outProgress) * alpha)); + canvas.drawBitmap(stars[starIndex], -(stars[starIndex].getWidth() >> 1), -(stars[starIndex].getHeight() >> 1), paint); + canvas.restore(); + } + if (!paused) { + float speed = AndroidUtilities.dp(4) * (dt / 660f) * speedScale; + x += vecX * speed; + y += vecY * speed; + + if (inProgress != 1f) { + inProgress += dt / 200; + if (inProgress > 1f) { + inProgress = 1f; + } + } + } + } + + public void genPosition(long time) { + starIndex = Math.abs(Utilities.fastRandom.nextInt() % stars.length); + lifeTime = time + minLifeTime + Utilities.fastRandom.nextInt(randLifeTime); + randomRotate = 0; + + if (distributionAlgorithm) { + float bestDistance = 0; + float bestX = rect.left + Math.abs(Utilities.fastRandom.nextInt() % rect.width()); + float bestY = rect.top + Math.abs(Utilities.fastRandom.nextInt() % rect.height()); + for (int k = 0; k < 10; k++) { + float randX = rect.left + Math.abs(Utilities.fastRandom.nextInt() % rect.width()); + float randY = rect.top + Math.abs(Utilities.fastRandom.nextInt() % rect.height()); + float minDistance = Integer.MAX_VALUE; + for (int j = 0; j < particles.size(); j++) { + float rx; + float ry; + if (startFromCenter) { + rx = particles.get(j).x2 - randX; + ry = particles.get(j).y2 - randY; + } else { + rx = particles.get(j).x - randX; + ry = particles.get(j).y - randY; + } + float distance = rx * rx + ry * ry; + if (distance < minDistance) { + minDistance = distance; + } + } + if (minDistance > bestDistance) { + bestDistance = minDistance; + bestX = randX; + bestY = randY; + } + } + + x = bestX; + y = bestY; + } else { + if (isCircle) { + float r = (Math.abs(Utilities.fastRandom.nextInt() % 1000) / 1000f) * rect.width(); + float a = Math.abs(Utilities.fastRandom.nextInt() % 360); + x = rect.centerX() + (float) (r * Math.sin(Math.toRadians(a))); + y = rect.centerY() + (float) (r * Math.cos(Math.toRadians(a))); + } else { + x = rect.left + Math.abs(Utilities.fastRandom.nextInt() % rect.width()); + y = rect.top + Math.abs(Utilities.fastRandom.nextInt() % rect.height()); + } + } + + double a = Math.atan2(x - rect.centerX(), y - rect.centerY()); + vecX = (float) Math.sin(a); + vecY = (float) Math.cos(a); + if (type == PremiumPreviewFragment.PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT || type == PremiumPreviewFragment.PREMIUM_FEATURE_ADS || type == PremiumPreviewFragment.PREMIUM_FEATURE_ANIMATED_AVATARS) { + alpha = (int) (120 * ((50 + Utilities.fastRandom.nextInt(50)) / 100f)); + } else { + alpha = (int) (255 * ((50 + Utilities.fastRandom.nextInt(50)) / 100f)); + } + if ((type == PremiumPreviewFragment.PREMIUM_FEATURE_PROFILE_BADGE && (starIndex == 1 || starIndex == 2)) || type == PremiumPreviewFragment.PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT || type == PremiumPreviewFragment.PREMIUM_FEATURE_ADS || type == PremiumPreviewFragment.PREMIUM_FEATURE_ANIMATED_AVATARS) { + randomRotate = (int) (45 * ((Utilities.fastRandom.nextInt() % 100) / 100f)); + } + if (type != TYPE_SETTINGS) { + inProgress = 0; + } + if (startFromCenter) { + x2 = x; + y2 = y; + x = rect.centerX();// + (x - rect.centerX()) * 0.3f; + y = rect.centerY();// + (y - rect.centerY()) * 0.3f; + } + } + } + } + + public void setPaused(boolean paused) { + if (paused == drawable.paused) { + return; + } + drawable.paused = paused; + if (paused) { + drawable.pausedTime = System.currentTimeMillis(); + } else { + for (int i = 0; i < drawable.particles.size(); i++) { + drawable.particles.get(i).lifeTime += System.currentTimeMillis() - drawable.pausedTime; + } + invalidate(); + } + } +} + diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/VideoScreenPreview.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/VideoScreenPreview.java new file mode 100644 index 000000000..e4a1c9d85 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/VideoScreenPreview.java @@ -0,0 +1,561 @@ +package org.telegram.ui.Components.Premium; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.SurfaceTexture; +import android.graphics.drawable.Drawable; +import android.media.MediaMetadataRetriever; +import android.net.Uri; +import android.os.Build; +import android.view.TextureView; +import android.widget.FrameLayout; + +import androidx.core.graphics.ColorUtils; +import androidx.core.graphics.drawable.RoundedBitmapDrawable; +import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory; + +import com.google.android.exoplayer2.ExoPlayer; +import com.google.android.exoplayer2.ui.AspectRatioFrameLayout; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.FileLoader; +import org.telegram.messenger.ImageLoader; +import org.telegram.messenger.ImageReceiver; +import org.telegram.messenger.MediaDataController; +import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.SharedConfig; +import org.telegram.messenger.SvgHelper; +import org.telegram.messenger.Utilities; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.CombinedDrawable; +import org.telegram.ui.Components.VideoPlayer; +import org.telegram.ui.Components.voip.CellFlickerDrawable; +import org.telegram.ui.PremiumPreviewFragment; + +import java.io.File; + +public class VideoScreenPreview extends FrameLayout implements PagerHeaderView, NotificationCenter.NotificationCenterDelegate { + + private final SvgHelper.SvgDrawable svgIcon; + Paint phoneFrame1 = new Paint(Paint.ANTI_ALIAS_FLAG); + Paint phoneFrame2 = new Paint(Paint.ANTI_ALIAS_FLAG); + + boolean fromTop = false; + File file; + float aspectRatio; + String attachFileName; + ImageReceiver imageReceiver = new ImageReceiver(this); + + private void checkVideo() { + if (file != null && file.exists()) { + MediaMetadataRetriever retriever = new MediaMetadataRetriever(); + retriever.setDataSource(ApplicationLoader.applicationContext, Uri.fromFile(file)); + int width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)); + int height = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)); + retriever.release(); + aspectRatio = width / (float) height; + + if (allowPlay) { + runVideoPlayer(); + } + } + } + + int currentAccount; + int type; + boolean visible; + boolean attached; + boolean play; + boolean allowPlay; + boolean firstFrameRendered; + + float progress; + VideoPlayer videoPlayer; + AspectRatioFrameLayout aspectRatioFrameLayout; + TextureView textureView; + + RoundedBitmapDrawable roundedBitmapDrawable; + CellFlickerDrawable.DrawableInterface cellFlickerDrawable; + private float roundRadius; + StarParticlesView.Drawable starDrawable; + SpeedLineParticles.Drawable speedLinesDrawable; + private final static float[] speedScaleVideoTimestamps = new float[]{0.02f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 0.02f}; + private MatrixParticlesDrawable matrixParticlesDrawable; + + + public VideoScreenPreview(Context context, SvgHelper.SvgDrawable svgDrawable, int currentAccount, int type) { + super(context); + this.currentAccount = currentAccount; + this.type = type; + this.svgIcon = svgDrawable; + + phoneFrame1.setColor(Color.BLACK); + phoneFrame2.setColor(ColorUtils.blendARGB(Theme.getColor(Theme.key_premiumGradient2), Color.BLACK, 0.5f)); + imageReceiver.setLayerNum(Integer.MAX_VALUE); + setVideo(); + + if (type == PremiumPreviewFragment.PREMIUM_FEATURE_UPLOAD_LIMIT) { + matrixParticlesDrawable = new MatrixParticlesDrawable(); + matrixParticlesDrawable.init(); + } else if (type == PremiumPreviewFragment.PREMIUM_FEATURE_PROFILE_BADGE || type == PremiumPreviewFragment.PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT || type == PremiumPreviewFragment.PREMIUM_FEATURE_ADS || type == PremiumPreviewFragment.PREMIUM_FEATURE_ANIMATED_AVATARS) { + starDrawable = new StarParticlesView.Drawable(40); + starDrawable.speedScale = 3; + starDrawable.type = type; + + if (type == PremiumPreviewFragment.PREMIUM_FEATURE_ADS) { + starDrawable.size1 = 14; + starDrawable.size2 = 18; + starDrawable.size3 = 18; + } else { + starDrawable.size1 = 14; + starDrawable.size2 = 16; + starDrawable.size3 = 15; + } + starDrawable.k1 = starDrawable.k2 = starDrawable.k3 = 0.98f; + starDrawable.speedScale = 4; + starDrawable.colorKey = Theme.key_premiumStartSmallStarsColor2; + starDrawable.init(); + } else if (type == PremiumPreviewFragment.PREMIUM_FEATURE_DOWNLOAD_SPEED) { + speedLinesDrawable = new SpeedLineParticles.Drawable(200); + speedLinesDrawable.init(); + } else { + int particlesCount = 100; + if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_HIGH) { + particlesCount = 800; + } else if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_AVERAGE) { + particlesCount = 400; + } + starDrawable = new StarParticlesView.Drawable(particlesCount); + starDrawable.colorKey = Theme.key_premiumStartSmallStarsColor2; + starDrawable.size1 = 8; + starDrawable.size1 = 6; + starDrawable.size1 = 4; + starDrawable.k1 = starDrawable.k2 = starDrawable.k3 = 0.98f; + starDrawable.useRotate = true; + starDrawable.speedScale = 4; + starDrawable.checkBounds = true; + starDrawable.checkTime = true; + starDrawable.useBlur = true; + starDrawable.roundEffect = false; + starDrawable.init(); + } + + if (type == PremiumPreviewFragment.PREMIUM_FEATURE_UPLOAD_LIMIT || type == PremiumPreviewFragment.PREMIUM_FEATURE_ADS) { + fromTop = true; + } + + + aspectRatioFrameLayout = new AspectRatioFrameLayout(context) { + + Path clipPath = new Path(); + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + clipPath.reset(); + if (fromTop) { + AndroidUtilities.rectTmp.set(0, -roundRadius, getMeasuredWidth(), getMeasuredHeight()); + } else { + AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), (int) (getMeasuredHeight() + roundRadius)); + } + float rad = roundRadius - AndroidUtilities.dp(3); + clipPath.addRoundRect(AndroidUtilities.rectTmp, new float[]{rad, rad, rad, rad, rad, rad, rad, rad}, Path.Direction.CW); + } + + @Override + protected void dispatchDraw(Canvas canvas) { + canvas.save(); + canvas.clipPath(clipPath); + super.dispatchDraw(canvas); + canvas.restore(); + } + }; + + aspectRatioFrameLayout.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT); + textureView = new TextureView(context); + aspectRatioFrameLayout.addView(textureView); + setWillNotDraw(false); + addView(aspectRatioFrameLayout); + } + + private void setVideo() { + TLRPC.TL_help_premiumPromo premiumPromo = MediaDataController.getInstance(currentAccount).getPremiumPromo(); + String typeString = PremiumPreviewFragment.featureTypeToServerString(type); + if (premiumPromo != null) { + int index = -1; + for (int i = 0; i < premiumPromo.video_sections.size(); i++) { + if (premiumPromo.video_sections.get(i).equals(typeString)) { + index = i; + break; + } + } + if (index >= 0) { + TLRPC.Document document = premiumPromo.videos.get(index); + Drawable drawable = null; + for (int i = 0; i < document.thumbs.size(); i++) { + if (document.thumbs.get(i) instanceof TLRPC.TL_photoStrippedSize) { + roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), ImageLoader.getStrippedPhotoBitmap(document.thumbs.get(i).bytes, "b")); + CellFlickerDrawable flickerDrawable = new CellFlickerDrawable(); + flickerDrawable.repeatProgress = 4f; + flickerDrawable.progress = 3.5f; + flickerDrawable.frameInside = true; + cellFlickerDrawable = flickerDrawable.getDrawableInterface(this, svgIcon); + CombinedDrawable combinedDrawable = new CombinedDrawable(roundedBitmapDrawable, cellFlickerDrawable) { + @Override + public void setBounds(int left, int top, int right, int bottom) { + if (fromTop) { + super.setBounds(left, (int) (top - roundRadius), right, bottom); + } else { + super.setBounds(left, top, right, (int) (bottom + roundRadius)); + } + } + }; + combinedDrawable.setFullsize(true); + drawable = combinedDrawable; + } + } + attachFileName = FileLoader.getAttachFileName(document); + imageReceiver.setImage(null, null, drawable, null, null, 1); + FileLoader.getInstance(currentAccount).loadFile(document, null, 1, 0); + Utilities.globalQueue.postRunnable(() -> { + File file = FileLoader.getInstance(currentAccount).getPathToAttach(document); + AndroidUtilities.runOnUIThread(() -> { + this.file = file; + checkVideo(); + }); + }); + + } + } + } + + int size; + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int measuredWidth = MeasureSpec.getSize(widthMeasureSpec); + int measuredHeight = MeasureSpec.getSize(heightMeasureSpec); + int size = (int) (MeasureSpec.getSize(heightMeasureSpec) * 0.9f); + float h = size; + float w = size * 0.671f; + + float horizontalPadding = (measuredWidth - w) / 2f; + roundRadius = size * 0.0671f; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + aspectRatioFrameLayout.invalidateOutline(); + } + if (fromTop) { + AndroidUtilities.rectTmp.set(horizontalPadding, 0, measuredWidth - horizontalPadding, h); + } else { + AndroidUtilities.rectTmp.set(horizontalPadding, measuredHeight - h, measuredWidth - horizontalPadding, measuredHeight); + } + aspectRatioFrameLayout.getLayoutParams().width = (int) AndroidUtilities.rectTmp.width(); + aspectRatioFrameLayout.getLayoutParams().height = (int) AndroidUtilities.rectTmp.height(); + ((MarginLayoutParams) aspectRatioFrameLayout.getLayoutParams()).leftMargin = (int) AndroidUtilities.rectTmp.left; + ((MarginLayoutParams) aspectRatioFrameLayout.getLayoutParams()).topMargin = (int) AndroidUtilities.rectTmp.top; + + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + int sizeInternal = getMeasuredWidth() << 16 + getMeasuredHeight(); + + int size = (int) (getMeasuredHeight() * 0.9f); + float h = size; + float w = size * 0.671f; + float horizontalPadding = (getMeasuredWidth() - w) / 2f; + + if (fromTop) { + AndroidUtilities.rectTmp.set(horizontalPadding, -roundRadius, getMeasuredWidth() - horizontalPadding, h); + } else { + AndroidUtilities.rectTmp.set(horizontalPadding, getMeasuredHeight() - h, getMeasuredWidth() - horizontalPadding, getMeasuredHeight() + roundRadius); + } + + if (this.size != sizeInternal) { + this.size = sizeInternal; + if (matrixParticlesDrawable != null) { + matrixParticlesDrawable.drawingRect.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + matrixParticlesDrawable.excludeRect.set(AndroidUtilities.rectTmp); + matrixParticlesDrawable.excludeRect.inset(AndroidUtilities.dp(16), AndroidUtilities.dp(16)); + } + if (starDrawable != null) { + if (type == PremiumPreviewFragment.PREMIUM_FEATURE_PROFILE_BADGE || type == PremiumPreviewFragment.PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT || type == PremiumPreviewFragment.PREMIUM_FEATURE_ADS || type == PremiumPreviewFragment.PREMIUM_FEATURE_ANIMATED_AVATARS) { + starDrawable.rect.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + starDrawable.rect.inset(AndroidUtilities.dp(30), AndroidUtilities.dp(30)); + } else { + int getParticlesWidth = (int) (AndroidUtilities.rectTmp.width() * 0.4f); + starDrawable.rect.set( + AndroidUtilities.rectTmp.centerX() - getParticlesWidth, + AndroidUtilities.rectTmp.centerY() - getParticlesWidth, + AndroidUtilities.rectTmp.centerX() + getParticlesWidth, + AndroidUtilities.rectTmp.centerY() + getParticlesWidth); + starDrawable.rect2.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + } + starDrawable.resetPositions(); + starDrawable.excludeRect.set(AndroidUtilities.rectTmp); + starDrawable.excludeRect.inset(AndroidUtilities.dp(10), AndroidUtilities.dp(10)); + } + if (speedLinesDrawable != null) { + speedLinesDrawable.rect.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + speedLinesDrawable.screenRect.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + speedLinesDrawable.rect.inset(AndroidUtilities.dp(100), AndroidUtilities.dp(100)); + speedLinesDrawable.rect.offset(0, getMeasuredHeight() * 0.1f); + speedLinesDrawable.resetPositions(); + } + } + } + + + @Override + protected void dispatchDraw(Canvas canvas) { + if ((starDrawable != null || speedLinesDrawable != null || matrixParticlesDrawable != null) && progress < 0.5f) { + float s = (float) Math.pow(1f - progress, 2f); + canvas.save(); + canvas.scale(s, s, getMeasuredWidth() / 2f, getMeasuredHeight() / 2f); + if (matrixParticlesDrawable != null) { + matrixParticlesDrawable.onDraw(canvas); + } else if (starDrawable != null) { + starDrawable.onDraw(canvas); + } else if (speedLinesDrawable != null) { + float videoSpeedScale = 0.2f; + + if (videoPlayer != null) { + float p = videoPlayer.getCurrentPosition() / (float) videoPlayer.getDuration(); + p = Utilities.clamp(p, 1f, 0); + float step = 1f / (speedScaleVideoTimestamps.length - 1); + int fromIndex = (int) (p / step); + int toIndex = fromIndex + 1; + float localProgress = (p - fromIndex * step) / step; + if (toIndex < speedScaleVideoTimestamps.length) { + videoSpeedScale = speedScaleVideoTimestamps[fromIndex] * (1f - localProgress) + speedScaleVideoTimestamps[toIndex] * localProgress; + } else { + videoSpeedScale = speedScaleVideoTimestamps[fromIndex]; + } + } + float progressSpeedScale = 0.1f + 0.9f * (1f - Utilities.clamp(progress / 0.1f, 1f, 0)); + speedLinesDrawable.speedScale = 150 * progressSpeedScale * videoSpeedScale; + speedLinesDrawable.onDraw(canvas); + } + canvas.restore(); + invalidate(); + } + int size = (int) (getMeasuredHeight() * 0.9f); + float h = size; + float w = size * 0.671f; + float horizontalPadding = (getMeasuredWidth() - w) / 2f; + roundRadius = size * 0.0671f; + if (fromTop) { + AndroidUtilities.rectTmp.set(horizontalPadding, -roundRadius, getMeasuredWidth() - horizontalPadding, h); + } else { + AndroidUtilities.rectTmp.set(horizontalPadding, getMeasuredHeight() - h, getMeasuredWidth() - horizontalPadding, getMeasuredHeight() + roundRadius); + } + AndroidUtilities.rectTmp.inset(-AndroidUtilities.dp(3), -AndroidUtilities.dp(3)); + AndroidUtilities.rectTmp.inset(-AndroidUtilities.dp(3), -AndroidUtilities.dp(3)); + canvas.drawRoundRect(AndroidUtilities.rectTmp, roundRadius + AndroidUtilities.dp(3), roundRadius + AndroidUtilities.dp(3), phoneFrame2); + AndroidUtilities.rectTmp.inset(AndroidUtilities.dp(3), AndroidUtilities.dp(3)); + canvas.drawRoundRect(AndroidUtilities.rectTmp, roundRadius, roundRadius, phoneFrame1); + + if (fromTop) { + AndroidUtilities.rectTmp.set(horizontalPadding, 0, getMeasuredWidth() - horizontalPadding, h); + } else { + AndroidUtilities.rectTmp.set(horizontalPadding, getMeasuredHeight() - h, getMeasuredWidth() - horizontalPadding, getMeasuredHeight()); + } + + roundRadius -= AndroidUtilities.dp(3); + if (roundedBitmapDrawable != null) { + roundedBitmapDrawable.setCornerRadius(roundRadius); + } + if (cellFlickerDrawable != null) { + cellFlickerDrawable.radius = roundRadius; + } + if (fromTop) { + imageReceiver.setRoundRadius(0, 0, (int) roundRadius, (int) roundRadius); + } else { + imageReceiver.setRoundRadius((int) roundRadius, (int) roundRadius, 0, 0); + } + if (!firstFrameRendered) { + imageReceiver.setImageCoords(AndroidUtilities.rectTmp.left, AndroidUtilities.rectTmp.top, AndroidUtilities.rectTmp.width(), AndroidUtilities.rectTmp.height()); + imageReceiver.draw(canvas); + } + super.dispatchDraw(canvas); + + if (!fromTop) { + canvas.drawCircle(imageReceiver.getCenterX(), imageReceiver.getImageY() + AndroidUtilities.dp(12), AndroidUtilities.dp(6), phoneFrame1); + } + + } + + @Override + public void setOffset(float translationX) { + boolean localVisible; + boolean localAllowPlay; + if (translationX < 0) { + float p = (-translationX / (float) getMeasuredWidth()); + setAlpha(0.5f + Utilities.clamp(1f - p, 1f, 0) * 0.5f); + setRotationY(50 * p); + invalidate(); + if (fromTop) { + setTranslationY(-getMeasuredHeight() * 0.3f * p); + } else { + setTranslationY(getMeasuredHeight() * 0.3f * p); + } + progress = Math.abs(p); + localVisible = p < 1f; + localAllowPlay = p < 0.1f; + } else { + float p = (-translationX / (float) getMeasuredWidth()); + invalidate(); + setRotationY(50 * p); + if (fromTop) { + setTranslationY(getMeasuredHeight() * 0.3f * p); + } else { + setTranslationY(-getMeasuredHeight() * 0.3f * p); + } + localVisible = p > -1f; + localAllowPlay = p > -0.1f; + progress = Math.abs(p); + } + if (localVisible != visible) { + visible = localVisible; + updateAttachState(); + } + if (localAllowPlay != allowPlay) { + allowPlay = localAllowPlay; + imageReceiver.setAllowStartAnimation(allowPlay); + if (allowPlay) { + imageReceiver.startAnimation(); + runVideoPlayer(); + } else { + stopVideoPlayer(); + imageReceiver.stopAnimation(); + } + } + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + attached = true; + updateAttachState(); + if (!firstFrameRendered) { + checkVideo(); + } + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.fileLoaded); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + attached = false; + updateAttachState(); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.fileLoaded); + } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.fileLoaded) { + final String path = (String) args[0]; + if (attachFileName != null && attachFileName.equals(path)) { + file = (File) args[1]; + checkVideo(); + } + } + } + + private void updateAttachState() { + boolean localPlay = visible && attached; + if (play != localPlay) { + play = localPlay; + if (play) { + imageReceiver.onAttachedToWindow(); + } else { + imageReceiver.onDetachedFromWindow(); + } + } + } + + private void runVideoPlayer() { + if (file != null) { + if (videoPlayer != null) { + return; + } + aspectRatioFrameLayout.setAspectRatio(aspectRatio, 0); + videoPlayer = new VideoPlayer(); + videoPlayer.setTextureView(textureView); + videoPlayer.setDelegate(new VideoPlayer.VideoPlayerDelegate() { + @Override + public void onStateChanged(boolean playWhenReady, int playbackState) { + if (playbackState == ExoPlayer.STATE_ENDED) { + videoPlayer.seekTo(0); + videoPlayer.play(); + } else if (playbackState == ExoPlayer.STATE_IDLE) { + videoPlayer.play(); + } + } + + @Override + public void onError(VideoPlayer player, Exception e) { + + } + + @Override + public void onVideoSizeChanged(int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) { + + } + + @Override + public void onRenderedFirstFrame() { + if (!firstFrameRendered) { + textureView.setAlpha(0); + textureView.animate().alpha(1f).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + firstFrameRendered = true; + invalidate(); + } + }).setDuration(200); + } + } + + @Override + public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) { + + } + + @Override + public boolean onSurfaceDestroyed(SurfaceTexture surfaceTexture) { + return false; + } + + }); + videoPlayer.preparePlayer(Uri.fromFile(file), "other"); + videoPlayer.setPlayWhenReady(true); + if (!firstFrameRendered) { + imageReceiver.stopAnimation(); + textureView.setAlpha(0); + } + videoPlayer.seekTo(lastFrameTime + 60); + videoPlayer.play(); + } + } + + long lastFrameTime; + + private void stopVideoPlayer() { + if (videoPlayer != null) { + lastFrameTime = videoPlayer.getCurrentPosition(); + videoPlayer.setTextureView(null); + videoPlayer.releasePlayer(true); + videoPlayer = null; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ProfileGalleryView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ProfileGalleryView.java index 07e5eb483..56b2ed0c4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ProfileGalleryView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ProfileGalleryView.java @@ -25,7 +25,6 @@ import androidx.recyclerview.widget.RecyclerView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DialogObject; import org.telegram.messenger.FileLoader; -import org.telegram.messenger.ImageLoader; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.MessagesController; @@ -977,7 +976,7 @@ public class ProfileGalleryView extends CircularViewPager implements Notificatio needProgress = true; String filter; if (isProfileFragment && videoLocation != null && videoLocation.imageType == FileLoader.IMAGE_TYPE_ANIMATION) { - filter = ImageLoader.AUTOPLAY_FILTER; + filter = "avatar"; } else { filter = null; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ProgressButton.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ProgressButton.java index 89a21e072..3c48ab79b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ProgressButton.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ProgressButton.java @@ -78,7 +78,11 @@ public class ProgressButton extends Button { } public void setBackgroundRoundRect(int backgroundColor, int pressedBackgroundColor) { - setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), backgroundColor, pressedBackgroundColor)); + setBackgroundRoundRect(backgroundColor, pressedBackgroundColor, 4); + } + + public void setBackgroundRoundRect(int backgroundColor, int pressedBackgroundColor, float radius) { + setBackground(Theme.AdaptiveRipple.filledRect(backgroundColor, radius)); } public void setProgressColor(int progressColor) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ProximitySheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ProximitySheet.java index 537756d79..736fe0075 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ProximitySheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ProximitySheet.java @@ -247,7 +247,7 @@ public class ProximitySheet extends FrameLayout { buttonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); buttonTextView.setMaxLines(2); buttonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - buttonTextView.setBackgroundDrawable(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + buttonTextView.setBackgroundDrawable(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); buttonContainer.addView(buttonTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48)); buttonTextView.setOnClickListener(v -> { if (buttonTextView.getTag() != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/QRCodeBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/QRCodeBottomSheet.java index ccc89dc5b..a588a48c9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/QRCodeBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/QRCodeBottomSheet.java @@ -55,6 +55,7 @@ public class QRCodeBottomSheet extends BottomSheet { public QRCodeBottomSheet(Context context, String link, String helpMessage) { super(context, false); + fixNavigationBar(); setTitle(LocaleController.getString("InviteByQRCode", R.string.InviteByQRCode), true); ImageView imageView = new ImageView(context) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/RLottieDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/RLottieDrawable.java index 67771c9f8..592996015 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/RLottieDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/RLottieDrawable.java @@ -35,6 +35,7 @@ import java.io.InputStream; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -49,6 +50,7 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable { private static native void replaceColors(long ptr, int[] colorReplacement); public static native int getFrame(long ptr, int frame, Bitmap bitmap, int w, int h, int stride, boolean clear); private static native void createCache(long ptr, int w, int h); + private static native String getCacheFile(long ptr); protected int width; protected int height; @@ -120,6 +122,11 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable { private ArrayList> parentViews = new ArrayList<>(); private static DispatchQueuePool loadFrameRunnableQueue = new DispatchQueuePool(4); private static ThreadPoolExecutor lottieCacheGenerateQueue; + private static HashSet generatingCacheFiles = new HashSet<>(); + + File file; + File cacheFile; + boolean precache; private Runnable onAnimationEndListener; private Runnable onFrameReadyRunnable; @@ -135,13 +142,6 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable { } }; - private Runnable uiRunnableCacheFinished = new Runnable() { - @Override - public void run() { - cacheGenerateTask = null; - decodeFrameFinishedInternal(); - } - }; protected Runnable uiRunnable = new Runnable() { @Override @@ -165,19 +165,26 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable { } }; + long startTime; + private Runnable uiRunnableGenerateCache = new Runnable() { @Override public void run() { if (!isRecycled && !destroyWhenDone && nativePtr != 0) { + startTime = System.currentTimeMillis(); lottieCacheGenerateQueue.execute(cacheGenerateTask = () -> { - if (cacheGenerateTask == null) { - return; - } - createCache(nativePtr, width, height); uiHandler.post(uiRunnableCacheFinished); }); } + } + }; + + private Runnable uiRunnableCacheFinished = new Runnable() { + @Override + public void run() { + cacheGenerateTask = null; + generatingCacheFiles.remove(cacheFile.getPath()); decodeFrameFinishedInternal(); } }; @@ -218,23 +225,17 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable { } protected void recycleResources() { - try { - if (renderingBitmap != null) { - renderingBitmap.recycle(); - renderingBitmap = null; - } - if (backgroundBitmap != null) { - backgroundBitmap.recycle(); - backgroundBitmap = null; - } - } catch (Exception e) { - FileLog.e(e); - renderingBitmap = null; - backgroundBitmap = null; - } + ArrayList bitmapToRecycle = new ArrayList<>(); + bitmapToRecycle.add(renderingBitmap); + bitmapToRecycle.add(nextRenderingBitmap); + renderingBitmap = null; + backgroundBitmap = null; + AndroidUtilities.recycleBitmaps(bitmapToRecycle); + if (onAnimationEndListener != null) { onAnimationEndListener = null; } + invalidateInternal(); } public void setOnFinishCallback(Runnable callback, int frame) { @@ -380,7 +381,6 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable { this(file, w, h, precache, limitFps, null, 0); } - File file; public RLottieDrawable(File file, int w, int h, boolean precache, boolean limitFps, int[] colorReplacement, int fitzModifier) { width = w; height = h; @@ -395,6 +395,10 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable { if (nativePtr == 0) { file.delete(); } + String cacheFilePath = getCacheFile(nativePtr); + if (cacheFilePath != null) { + cacheFile = new File(cacheFilePath); + } if (shouldLimitFps && metaData[1] < 60) { shouldLimitFps = false; } @@ -1038,7 +1042,7 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable { if (isRunning) { if (renderingBitmap == null && nextRenderingBitmap == null) { scheduleNextGetFrame(); - } else if (nextRenderingBitmap != null && (renderingBitmap == null || timeDiff >= timeCheck) && isCurrentParentViewMaster()) { + } else if (nextRenderingBitmap != null && (renderingBitmap == null || timeDiff >= timeCheck)) { if (vibrationPattern != null && currentParentView != null) { Integer force = vibrationPattern.get(currentFrame - 1); if (force != null) { @@ -1098,4 +1102,8 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable { public void setOnFrameReadyRunnable(Runnable onFrameReadyRunnable) { this.onFrameReadyRunnable = onFrameReadyRunnable; } + + public boolean isLastFrame() { + return currentFrame == getFramesCount() - 1; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedHeaderView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedHeaderView.java index 4cbd7bc35..259f36fad 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedHeaderView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedHeaderView.java @@ -209,7 +209,7 @@ public class ReactedHeaderView extends FrameLayout { if (message.messageOwner.reactions != null && message.messageOwner.reactions.results.size() == 1 && !list.reactions.isEmpty()) { for (TLRPC.TL_availableReaction r : MediaDataController.getInstance(currentAccount).getReactionsList()) { if (r.reaction.equals(list.reactions.get(0).reaction)) { - reactView.setImage(ImageLocation.getForDocument(r.static_icon), "50_50", "webp", null, r); + reactView.setImage(ImageLocation.getForDocument(r.center_icon), "40_40_lastframe", "webp", null, r); reactView.setVisibility(VISIBLE); reactView.setAlpha(0); reactView.animate().alpha(1f).start(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedUsersListView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedUsersListView.java index 90ec9dd18..9438e553c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedUsersListView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedUsersListView.java @@ -6,6 +6,7 @@ import android.animation.ValueAnimator; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; import android.os.Build; import android.text.TextUtils; import android.util.LongSparseArray; @@ -13,7 +14,9 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -23,10 +26,12 @@ import androidx.recyclerview.widget.RecyclerView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DocumentObject; import org.telegram.messenger.ImageLocation; +import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; import org.telegram.messenger.SvgHelper; import org.telegram.messenger.UserObject; import org.telegram.tgnet.ConnectionsManager; @@ -47,7 +52,7 @@ public class ReactedUsersListView extends FrameLayout { private MessageObject message; private String filter; - private RecyclerListView listView; + public RecyclerListView listView; private RecyclerView.Adapter adapter; private FlickerLoadingView loadingView; @@ -55,7 +60,7 @@ public class ReactedUsersListView extends FrameLayout { private List userReactions = new ArrayList<>(); private LongSparseArray peerReactionMap = new LongSparseArray<>(); private String offset; - private boolean isLoading, isLoaded, canLoadMore = true; + public boolean isLoading, isLoaded, canLoadMore = true; private boolean onlySeenNow; private OnHeightChangedListener onHeightChangedListener; @@ -120,7 +125,7 @@ public class ReactedUsersListView extends FrameLayout { loadingView = new FlickerLoadingView(context, resourcesProvider); loadingView.setViewType(FlickerLoadingView.REACTED_TYPE); loadingView.setIsSingleCell(true); - loadingView.setItemsCount(reactionCount == null ? VISIBLE_ITEMS : reactionCount.count); + loadingView.setItemsCount(predictiveCount); addView(loadingView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); } @@ -271,6 +276,7 @@ public class ReactedUsersListView extends FrameLayout { titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); titleView.setTextColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem)); titleView.setEllipsize(TextUtils.TruncateAt.END); + titleView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); addView(titleView, LayoutHelper.createFrameRelatively(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 58, 0, 44, 0)); reactView = new BackupImageView(context); @@ -288,18 +294,24 @@ public class ReactedUsersListView extends FrameLayout { } avatarDrawable.setInfo(u); titleView.setText(UserObject.getUserName(u)); - avatarView.setImage(ImageLocation.getForUser(u, ImageLocation.TYPE_SMALL), "50_50", avatarDrawable, u); + Drawable thumb = avatarDrawable; + if (u.photo != null && u.photo.strippedBitmap != null) { + thumb = u.photo.strippedBitmap; + } + avatarView.setImage(ImageLocation.getForUser(u, ImageLocation.TYPE_SMALL), "50_50", thumb, u); if (reaction.reaction != null) { TLRPC.TL_availableReaction r = MediaDataController.getInstance(currentAccount).getReactionsMap().get(reaction.reaction); if (r != null) { SvgHelper.SvgDrawable svgThumb = DocumentObject.getSvgThumb(r.static_icon.thumbs, Theme.key_windowBackgroundGray, 1.0f); - reactView.setImage(ImageLocation.getForDocument(r.static_icon), "50_50", "webp", svgThumb, r); + reactView.setImage(ImageLocation.getForDocument(r.center_icon), "40_40_lastframe", "webp", svgThumb, r); } else { reactView.setImageDrawable(null); } + setContentDescription(LocaleController.formatString("AccDescrReactedWith", R.string.AccDescrReactedWith, UserObject.getUserName(u), reaction.reaction)); } else { reactView.setImageDrawable(null); + setContentDescription(LocaleController.formatString("AccDescrPersonHasSeen", R.string.AccDescrPersonHasSeen, UserObject.getUserName(u))); } } @@ -307,6 +319,12 @@ public class ReactedUsersListView extends FrameLayout { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(ITEM_HEIGHT_DP), MeasureSpec.EXACTLY)); } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setEnabled(true); + } } public ReactedUsersListView setOnProfileSelectedListener(OnProfileSelectedListener onProfileSelectedListener) { @@ -326,4 +344,60 @@ public class ReactedUsersListView extends FrameLayout { public interface OnProfileSelectedListener { void onProfileSelected(ReactedUsersListView view, long userId); } + + public void setPredictiveCount(int predictiveCount) { + this.predictiveCount = predictiveCount; + loadingView.setItemsCount(predictiveCount); + } + + public static class ContainerLinerLayout extends LinearLayout { + + public boolean hasHeader; + + public ContainerLinerLayout(Context context) { + super(context); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int maxWidth = 0; + RecyclerListView listView = null; + if (!hasHeader) { + for (int k = 0; k < getChildCount(); k++) { + if (getChildAt(k) instanceof ReactedUsersListView) { + listView = ((ReactedUsersListView) getChildAt(k)).listView; + if (listView.getAdapter().getItemCount() == listView.getChildCount()) { + int count = listView.getChildCount(); + for (int i = 0; i < count; i++) { + listView.getChildAt(i).measure(MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(1000), MeasureSpec.UNSPECIFIED), heightMeasureSpec); + if (listView.getChildAt(i).getMeasuredWidth() > maxWidth) { + maxWidth = listView.getChildAt(i).getMeasuredWidth(); + } + } + maxWidth += AndroidUtilities.dp(16); + } + } + } + } + int size = MeasureSpec.getSize(widthMeasureSpec); + if (size < AndroidUtilities.dp(240)) { + size = AndroidUtilities.dp(240); + } + if (size > AndroidUtilities.dp(280)) { + size = AndroidUtilities.dp(280); + } + if (size < 0) { + size = 0; + } + if (maxWidth != 0 && maxWidth < size) { + size = maxWidth; + } + if (listView != null) { + for (int i = 0; i < listView.getChildCount(); i++) { + listView.getChildAt(i).measure(MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY), heightMeasureSpec); + } + } + super.onMeasure(MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY), heightMeasureSpec); + } + } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionTabHolderView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionTabHolderView.java index 7e94ed393..598979c6f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionTabHolderView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionTabHolderView.java @@ -11,6 +11,7 @@ import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.view.Gravity; import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -42,6 +43,10 @@ public class ReactionTabHolderView extends FrameLayout { View overlaySelectorView; private float outlineProgress; Drawable drawable; + + private int count; + private String reaction; + public ReactionTabHolderView(@NonNull Context context) { super(context); @@ -55,7 +60,9 @@ public class ReactionTabHolderView extends FrameLayout { reactView = new BackupImageView(context); addView(reactView, LayoutHelper.createFrameRelatively(24, 24, Gravity.START | Gravity.CENTER_VERTICAL, 8, 0, 8, 0)); + counterView = new TextView(context); + counterView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); counterView.setTextColor(Theme.getColor(Theme.key_avatar_nameInMessageBlue)); counterView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); addView(counterView, LayoutHelper.createFrameRelatively(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 40, 0, 8, 0)); @@ -90,18 +97,22 @@ public class ReactionTabHolderView extends FrameLayout { } public void setCounter(int count) { + this.count = count; counterView.setText(String.format("%s", LocaleController.formatShortNumber(count, null))); iconView.setVisibility(VISIBLE); reactView.setVisibility(GONE); } public void setCounter(int currentAccount, TLRPC.TL_reactionCount counter) { + this.count = counter.count; counterView.setText(String.format("%s", LocaleController.formatShortNumber(counter.count, null))); String e = counter.reaction; + this.reaction = null; for (TLRPC.TL_availableReaction r : MediaDataController.getInstance(currentAccount).getReactionsList()) { if (r.reaction.equals(e)) { SvgHelper.SvgDrawable svgThumb = DocumentObject.getSvgThumb(r.static_icon, Theme.key_windowBackgroundGray, 1.0f); - reactView.setImage(ImageLocation.getForDocument(r.static_icon), "50_50", "webp", svgThumb, r); + this.reaction = r.reaction; + reactView.setImage(ImageLocation.getForDocument(r.center_icon), "40_40_lastframe", "webp", svgThumb, r); reactView.setVisibility(VISIBLE); iconView.setVisibility(GONE); break; @@ -121,4 +132,19 @@ public class ReactionTabHolderView extends FrameLayout { // rect.set(w, w, getWidth() - w, getHeight() - w); // canvas.drawRoundRect(rect, radius, radius, outlinePaint); } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName("android.widget.Button"); + info.setClickable(true); + if (outlineProgress > .5) { + info.setSelected(true); + } + if (reaction != null) { + info.setText(LocaleController.formatPluralString("AccDescrNumberOfPeopleReactions", count, reaction)); + } else { + info.setText(LocaleController.formatPluralString("AccDescrNumberOfReactions", count)); + } + } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Reactions/ReactionsEffectOverlay.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Reactions/ReactionsEffectOverlay.java index 9ff13e728..8b26004dd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Reactions/ReactionsEffectOverlay.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Reactions/ReactionsEffectOverlay.java @@ -191,14 +191,18 @@ public class ReactionsEffectOverlay { } int size; + int sizeForFilter; if (animationType == ONLY_MOVE_ANIMATION) { size = AndroidUtilities.dp(34); + sizeForFilter = (int) (2f * size / AndroidUtilities.density); } else if (animationType == SHORT_ANIMATION) { size = AndroidUtilities.dp(80); + sizeForFilter = (int) (2f * size / AndroidUtilities.density); } else { size = Math.round(Math.min(AndroidUtilities.dp(350), Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y)) * 0.8f); + sizeForFilter = sizeForBigReaction(); } - int sizeForFilter = (int) (2f * size / AndroidUtilities.density); + int emojiSize = size >> 1; int emojiSizeForFilter = sizeForFilter >> 1; @@ -415,6 +419,9 @@ public class ReactionsEffectOverlay { particle.outProgress += 16f / 150f; if (particle.outProgress > 1f) { particle.outProgress = 1f; + avatars.remove(i); + i--; + continue; } } float jumpProgress = progress < 0.5f ? (progress / 0.5f) : (1f - ((progress - 0.5f) / 0.5f)); @@ -534,7 +541,7 @@ public class ReactionsEffectOverlay { ((FrameLayout.LayoutParams) emojiImageView.getLayoutParams()).leftMargin = leftOffset; if (animationType != SHORT_ANIMATION) { - emojiStaticImageView.getImageReceiver().setImage(ImageLocation.getForDocument(availableReaction.static_icon), "40_40", null, "webp", availableReaction, 1); + emojiStaticImageView.getImageReceiver().setImage(ImageLocation.getForDocument(availableReaction.center_icon), "40_40_lastframe", null, "webp", availableReaction, 1); } container.addView(emojiStaticImageView); emojiStaticImageView.getLayoutParams().width = emojiSize; @@ -709,6 +716,10 @@ public class ReactionsEffectOverlay { } } + public static int sizeForBigReaction() { + return (int) (Math.round(Math.min(AndroidUtilities.dp(350), Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y)) * 0.7f) / AndroidUtilities.density); + } + private class AvatarParticle { ImageReceiver imageReceiver; @@ -725,6 +736,5 @@ public class ReactionsEffectOverlay { float currentRotation; boolean incrementRotation; float globalTranslationY; - } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionsContainerLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionsContainerLayout.java index 65e95d52c..41617d7f5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionsContainerLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionsContainerLayout.java @@ -24,11 +24,13 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.OvershootInterpolator; import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; +import androidx.core.graphics.ColorUtils; import androidx.core.util.Consumer; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -44,12 +46,16 @@ import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; import org.telegram.messenger.SvgHelper; +import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.Premium.PremiumFeatureBottomSheet; +import org.telegram.ui.Components.Premium.PremiumLockIconView; +import org.telegram.ui.PremiumPreviewFragment; import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -86,9 +92,12 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio private MessageObject messageObject; private int currentAccount; private long waitingLoadingChatId; - ValueAnimator cancelPressedAnimation; - private List reactionsList = Collections.emptyList(); + ValueAnimator cancelPressedAnimation; + FrameLayout premiumLockContainer; + + private List reactionsList = new ArrayList<>(20); + private List premiumLockedReactions = new ArrayList<>(10); private LinearLayoutManager linearLayoutManager; private RecyclerView.Adapter listAdapter; @@ -111,11 +120,14 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio private float otherViewsScale; private boolean clicked; long lastReactionSentTime; + BaseFragment fragment; + private PremiumLockIconView premiumLockIconView; - public ReactionsContainerLayout(@NonNull Context context, int currentAccount, Theme.ResourcesProvider resourcesProvider) { + public ReactionsContainerLayout(BaseFragment fragment, @NonNull Context context, int currentAccount, Theme.ResourcesProvider resourcesProvider) { super(context); this.resourcesProvider = resourcesProvider; this.currentAccount = currentAccount; + this.fragment = fragment; animationEnabled = MessagesController.getGlobalMainSettings().getBoolean("view_animations", true) && SharedConfig.getDevicePerformanceClass() != SharedConfig.PERFORMANCE_CLASS_LOW; @@ -126,7 +138,7 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio recyclerListView = new RecyclerListView(context) { @Override public boolean drawChild(Canvas canvas, View child, long drawingTime) { - if (pressedReaction != null && ((ReactionHolderView) child).currentReaction.reaction.equals(pressedReaction)) { + if (pressedReaction != null && (child instanceof ReactionHolderView) && ((ReactionHolderView) child).currentReaction.reaction.equals(pressedReaction)) { return true; } return super.drawChild(canvas, child, drawingTime); @@ -143,7 +155,11 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio } outRect.right = AndroidUtilities.dp(4); if (position == listAdapter.getItemCount() - 1) { - outRect.right = AndroidUtilities.dp(6); + if (showUnlockPremiumButton()) { + outRect.right = AndroidUtilities.dp(2); + } else { + outRect.right = AndroidUtilities.dp(6); + } } } }); @@ -153,23 +169,56 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - ReactionHolderView hv = new ReactionHolderView(context); + View view; + switch (viewType) { + default: + case 0: + view = new ReactionHolderView(context); + break; + case 1: + premiumLockContainer = new FrameLayout(context); + premiumLockIconView = new PremiumLockIconView(context, PremiumLockIconView.TYPE_REACTIONS); + premiumLockIconView.setColor(ColorUtils.blendARGB(Theme.getColor(Theme.key_actionBarDefaultSubmenuItemIcon), Theme.getColor(Theme.key_dialogBackground), 0.7f)); + premiumLockIconView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_dialogBackground), PorterDuff.Mode.MULTIPLY)); + premiumLockIconView.setScaleX(0f); + premiumLockIconView.setScaleY(0f); + premiumLockIconView.setPadding(AndroidUtilities.dp(1), AndroidUtilities.dp(1), AndroidUtilities.dp(1), AndroidUtilities.dp(1)); + premiumLockContainer.addView(premiumLockIconView, LayoutHelper.createFrame(26, 26, Gravity.CENTER)); + premiumLockIconView.setOnClickListener(v -> { + int[] position = new int[2]; + v.getLocationOnScreen(position); + showUnlockPremium(position[0] + v.getMeasuredWidth() / 2f, position[1] + v.getMeasuredHeight() / 2f); + }); + view = premiumLockContainer; + break; + } + int size = getLayoutParams().height - getPaddingTop() - getPaddingBottom(); - hv.setLayoutParams(new RecyclerView.LayoutParams(size - AndroidUtilities.dp(12), size)); - return new RecyclerListView.Holder(hv); + view.setLayoutParams(new RecyclerView.LayoutParams(size - AndroidUtilities.dp(12), size)); + return new RecyclerListView.Holder(view); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - ReactionHolderView h = (ReactionHolderView) holder.itemView; - h.setScaleX(1); - h.setScaleY(1); - h.setReaction(reactionsList.get(position)); + if (holder.getItemViewType() == 0) { + ReactionHolderView h = (ReactionHolderView) holder.itemView; + h.setScaleX(1); + h.setScaleY(1); + h.setReaction(reactionsList.get(position)); + } } @Override public int getItemCount() { - return reactionsList.size(); + return reactionsList.size() + (showUnlockPremiumButton() ? 1 : 0); + } + + @Override + public int getItemViewType(int position) { + if (position >= 0 && position < reactionsList.size()) { + return 0; + } + return 1; } }); recyclerListView.addOnScrollListener(new LeftRightShadowsListener()); @@ -189,7 +238,7 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio int dX1 = ch1X - rX; float s1 = SIDE_SCALE + (1f - Math.min(1, -Math.min(dX1, 0f) / ch1.getWidth())) * sideDiff; if (Float.isNaN(s1)) s1 = 1f; - ((ReactionHolderView) ch1).sideScale = s1; + setChildScale(ch1, s1); View ch2 = recyclerView.getChildAt(recyclerView.getChildCount() - 1); ch2.getLocationInWindow(location); @@ -198,11 +247,11 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio int dX2 = rX + recyclerView.getWidth() - (ch2X + ch2.getWidth()); float s2 = SIDE_SCALE + (1f - Math.min(1, -Math.min(dX2, 0f) / ch2.getWidth())) * sideDiff; if (Float.isNaN(s2)) s2 = 1f; - ((ReactionHolderView) ch2).sideScale = s2; + setChildScale(ch2, s2); } for (int i = 1; i < recyclerListView.getChildCount() - 1; i++) { View ch = recyclerListView.getChildAt(i); - ((ReactionHolderView) ch).sideScale = 1f; + setChildScale(ch, 1f); } invalidate(); } @@ -217,19 +266,53 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio outRect.right = AndroidUtilities.dp(8); } }); + recyclerListView.setOnItemClickListener((view, position) -> { + if (delegate != null && view instanceof ReactionHolderView) { + ReactionHolderView reactionHolderView = (ReactionHolderView) view; + delegate.onReactionClicked(this, reactionHolderView.currentReaction, false); + } + }); + recyclerListView.setOnItemLongClickListener((view, position) -> { + if (delegate != null && view instanceof ReactionHolderView) { + ReactionHolderView reactionHolderView = (ReactionHolderView) view; + delegate.onReactionClicked(this, reactionHolderView.currentReaction, true); + return true; + } + return false; + }); addView(recyclerListView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); invalidateShaders(); bgPaint.setColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground, resourcesProvider)); } + private boolean showUnlockPremiumButton() { + return !premiumLockedReactions.isEmpty() && !MessagesController.getInstance(currentAccount).premiumLocked; + } + + private void showUnlockPremium(float x, float y) { + PremiumFeatureBottomSheet bottomSheet = new PremiumFeatureBottomSheet(fragment, PremiumPreviewFragment.PREMIUM_FEATURE_REACTIONS, true); + bottomSheet.show(); + } + + private void setChildScale(View child, float scale) { + if (child instanceof ReactionHolderView) { + ((ReactionHolderView) child).sideScale = scale; + } else { + child.setScaleX(scale); + child.setScaleY(scale); + } + } + public void setDelegate(ReactionsContainerDelegate delegate) { this.delegate = delegate; } @SuppressLint("NotifyDataSetChanged") private void setReactionsList(List reactionsList) { - this.reactionsList = reactionsList; + this.reactionsList.clear(); + this.reactionsList.addAll(reactionsList); + checkPremiumReactions(this.reactionsList); int size = getLayoutParams().height - getPaddingTop() - getPaddingBottom(); if (size * reactionsList.size() < AndroidUtilities.dp(200)) { getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT; @@ -303,19 +386,34 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio if (transitionProgress != 0 && getAlpha() == 1f) { int delay = 0; for (int i = 0; i < recyclerListView.getChildCount(); i++) { - ReactionHolderView view = (ReactionHolderView) recyclerListView.getChildAt(i); - checkPressedProgress(canvas, view); - if (view.backupImageView.getImageReceiver().getLottieAnimation() == null) { - continue; - } - if (view.getX() + view.getMeasuredWidth() / 2f > 0 && view.getX() + view.getMeasuredWidth() / 2f < recyclerListView.getWidth()) { - if (!lastVisibleViewsTmp.contains(view)) { - view.play(delay); - delay += 30; + View child = recyclerListView.getChildAt(i); + if (child instanceof ReactionHolderView) { + ReactionHolderView view = (ReactionHolderView) recyclerListView.getChildAt(i); + checkPressedProgress(canvas, view); + if (view.backupImageView.getImageReceiver().getLottieAnimation() == null) { + continue; + } + if (view.getX() + view.getMeasuredWidth() / 2f > 0 && view.getX() + view.getMeasuredWidth() / 2f < recyclerListView.getWidth()) { + if (!lastVisibleViewsTmp.contains(view)) { + view.play(delay); + delay += 30; + } + lastVisibleViews.add(view); + } else if (!view.isEnter) { + view.resetAnimation(); + } + } else { + if (child == premiumLockContainer) { + if (child.getX() + child.getMeasuredWidth() / 2f > 0 && child.getX() + child.getMeasuredWidth() / 2f < recyclerListView.getWidth()) { + if (!lastVisibleViewsTmp.contains(child)) { + premiumLockIconView.play(delay); + delay += 30; + } + lastVisibleViews.add(child); + } else { + premiumLockIconView.resetAnimation(); + } } - lastVisibleViews.add(view); - } else if (!view.isEnter) { - view.resetAnimation(); } } } @@ -353,6 +451,22 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio canvas.restore(); } + private void checkPressedProgressForOtherViews(View view) { + int position = recyclerListView.getChildAdapterPosition(view); + float translationX; + translationX = (view.getMeasuredWidth() * (pressedViewScale - 1f)) / 3f - view.getMeasuredWidth() * (1f - otherViewsScale) * (Math.abs(pressedReactionPosition - position) - 1); + + if (position < pressedReactionPosition) { + view.setPivotX(0); + view.setTranslationX(-translationX); + } else { + view.setPivotX(view.getMeasuredWidth()); + view.setTranslationX(translationX); + } + view.setScaleX(otherViewsScale); + view.setScaleY(otherViewsScale); + } + private void checkPressedProgress(Canvas canvas, ReactionHolderView view) { if (view.currentReaction.reaction.equals(pressedReaction)) { @@ -471,6 +585,23 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio setReactionsList(l); } + private void checkPremiumReactions(List reactions) { + premiumLockedReactions.clear(); + if (UserConfig.getInstance(currentAccount).isPremium()) { + return; + } + try { + for (int i = 0; i < reactions.size(); i++) { + if (reactions.get(i).premium) { + premiumLockedReactions.add(reactions.remove(i)); + i--; + } + } + } catch (Exception e) { + return; + } + } + public void startEnterAnimation() { setTransitionProgress(0); setAlpha(1f); @@ -545,10 +676,17 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio if (backupImageView.getImageReceiver().getLottieAnimation() != null && !backupImageView.getImageReceiver().getLottieAnimation().isRunning() && !backupImageView.getImageReceiver().getLottieAnimation().isGeneratingCache()) { backupImageView.getImageReceiver().getLottieAnimation().start(); } - } }; + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (currentReaction != null) { + info.setText(currentReaction.reaction); + info.setEnabled(true); + } + } ReactionHolderView(Context context) { super(context); @@ -582,6 +720,7 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio SvgHelper.SvgDrawable svgThumb = DocumentObject.getSvgThumb(currentReaction.activate_animation, Theme.key_windowBackgroundGray, 1.0f); backupImageView.getImageReceiver().setImage(ImageLocation.getForDocument(currentReaction.appear_animation), "60_60_nolimit", null, null, svgThumb, 0, "tgs", react, 0); pressedBackupImageView.getImageReceiver().setImage(ImageLocation.getForDocument(currentReaction.select_animation), "60_60_nolimit", null, null, svgThumb, 0, "tgs", react, 0); + setFocusable(true); } @Override @@ -638,8 +777,10 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio ReactionsContainerLayout.this.invalidate(); } }; + float pressedX, pressedY; boolean pressed; + @Override public boolean onTouchEvent(MotionEvent event) { if (cancelPressedAnimation != null) { @@ -653,14 +794,14 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio AndroidUtilities.runOnUIThread(longPressRunnable, ViewConfiguration.getLongPressTimeout()); } } - float touchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop() * 2f; + float touchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop() * 2f; boolean cancelByMove = event.getAction() == MotionEvent.ACTION_MOVE && (Math.abs(pressedX - event.getX()) > touchSlop || Math.abs(pressedY - event.getY()) > touchSlop); if (cancelByMove || event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { if (event.getAction() == MotionEvent.ACTION_UP && pressed && (pressedReaction == null || pressedProgress > 0.8f) && delegate != null) { clicked = true; if (System.currentTimeMillis() - lastReactionSentTime > 300) { lastReactionSentTime = System.currentTimeMillis(); - delegate.onReactionClicked(this, currentReaction, pressedProgress > 0.8f); + delegate.onReactionClicked(this, currentReaction, pressedProgress > 0.8f); } } @@ -706,6 +847,8 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio public interface ReactionsContainerDelegate { void onReactionClicked(View v, TLRPC.TL_availableReaction reaction, boolean longpress); + + void hideMenu(); } @Override @@ -737,10 +880,19 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio if (getAlpha() != alpha && alpha == 0) { lastVisibleViews.clear(); for (int i = 0; i < recyclerListView.getChildCount(); i++) { - ReactionHolderView view = (ReactionHolderView) recyclerListView.getChildAt(i); - view.resetAnimation(); + if (recyclerListView.getChildAt(i) instanceof ReactionHolderView) { + ReactionHolderView view = (ReactionHolderView) recyclerListView.getChildAt(i); + view.resetAnimation(); + } } } super.setAlpha(alpha); } + + @Override + public void setTranslationX(float translationX) { + if (translationX != getTranslationX()) { + super.setTranslationX(translationX); + } + } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/RecyclerListView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/RecyclerListView.java index 6c0ca8d2b..4ba91be3f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/RecyclerListView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/RecyclerListView.java @@ -1439,6 +1439,10 @@ public class RecyclerListView extends RecyclerView { selectorDrawable.setCallback(this); } + public Drawable getSelectorDrawable() { + return selectorDrawable; + } + public void checkSection(boolean force) { if ((scrollingByUser || force) && fastScroll != null || sectionsType != SECTIONS_TYPE_SIMPLE && sectionsAdapter != null) { LayoutManager layoutManager = getLayoutManager(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReportAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReportAlert.java index 2229a669a..b3165e509 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReportAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReportAlert.java @@ -41,7 +41,7 @@ public class ReportAlert extends BottomSheet { super(context); background = new View(context); - background.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + background.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); addView(background, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 0, 16, 16, 16, 16)); textView = new TextView(context); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTabStrip.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTabStrip.java index dd2652212..7f144ed46 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTabStrip.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTabStrip.java @@ -93,7 +93,7 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { private int indicatorHeight; private GradientDrawable indicatorDrawable = new GradientDrawable(); - private int scrollOffset = AndroidUtilities.dp(52); + private int scrollOffset = AndroidUtilities.dp(StickerTabView.SMALL_WIDTH); private int underlineHeight = AndroidUtilities.dp(2); private int dividerPadding = AndroidUtilities.dp(12); private int tabPadding = AndroidUtilities.dp(24); @@ -163,6 +163,7 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { } }; tabsContainer.setOrientation(LinearLayout.HORIZONTAL); + tabsContainer.setPadding(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0); tabsContainer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); addView(tabsContainer); @@ -170,7 +171,7 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { rectPaint.setAntiAlias(true); rectPaint.setStyle(Style.FILL); - defaultTabLayoutParams = new LinearLayout.LayoutParams(AndroidUtilities.dp(52), LayoutHelper.MATCH_PARENT); + defaultTabLayoutParams = new LinearLayout.LayoutParams(AndroidUtilities.dp(StickerTabView.SMALL_WIDTH), LayoutHelper.MATCH_PARENT); defaultExpandLayoutParams = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT, 1.0F); } @@ -448,7 +449,7 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { float expandProgress; private float stickerTabExpandedWidth = AndroidUtilities.dp(86); - private float stickerTabWidth = AndroidUtilities.dp(52); + private float stickerTabWidth = AndroidUtilities.dp(StickerTabView.SMALL_WIDTH); private float expandOffset; private int scrollByOnNextMeasure = -1; @@ -526,10 +527,10 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { if (child instanceof StickerTabView) { ((StickerTabView) child).setExpanded(false); } - child.getLayoutParams().width = AndroidUtilities.dp(52); + child.getLayoutParams().width = AndroidUtilities.dp(StickerTabView.SMALL_WIDTH); } animateToExpanded = false; - getLayoutParams().height = AndroidUtilities.dp(48); + getLayoutParams().height = AndroidUtilities.dp(StickerTabView.SMALL_HEIGHT); tabsContainer.requestLayout(); } } @@ -547,7 +548,7 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { } tabsContainer.requestLayout(); - getLayoutParams().height = AndroidUtilities.dp(48 + 50); + getLayoutParams().height = AndroidUtilities.dp(StickerTabView.SMALL_HEIGHT + 50); } if (expanded) { @@ -610,9 +611,9 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { } public void setImages() { - float tabSize = AndroidUtilities.dp( 52) + AndroidUtilities.dp(34) * expandProgress; + float tabSize = AndroidUtilities.dp(StickerTabView.SMALL_WIDTH) + AndroidUtilities.dp(86 - StickerTabView.SMALL_WIDTH) * expandProgress; float scrollOffset = animateToExpanded ? expandOffset * (1f - expandProgress) : 0; - int start = (int) ((getScrollX() - scrollOffset) / tabSize); + int start = (int) ((getScrollX() - scrollOffset - tabsContainer.getPaddingLeft()) / tabSize); int end = Math.min(tabsContainer.getChildCount(), start + (int) Math.ceil(getMeasuredWidth() / tabSize) + 1); if (animateToExpanded) { start -= 2; @@ -642,8 +643,7 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { thumbDrawable = (Drawable) thumb; } if (sticker instanceof TLRPC.Document) { - // String.format(Locale.US, "%d_%d_nr_%s" + messageObject.emojiAnimatedStickerColor, w, h, messageObject.toString()); - tabView.imageView.setImage(ImageLocation.getForDocument((TLRPC.Document) sticker), "36_36_nolimit", thumbDrawable, null); + tabView.imageView.setImage(ImageLocation.getForDocument((TLRPC.Document) sticker), "36_36_nolimit", (Drawable) null, null); } else { tabView.imageView.setImageDrawable(thumbDrawable); } @@ -713,7 +713,7 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { } private int getTabSize() { - return AndroidUtilities.dp(animateToExpanded ? 86 : 52); + return AndroidUtilities.dp(animateToExpanded ? 86 : StickerTabView.SMALL_WIDTH); } @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTextTabStrip.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTextTabStrip.java index 89fd28914..4f5bfd87b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTextTabStrip.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTextTabStrip.java @@ -44,6 +44,7 @@ public class ScrollSlidingTextTabStrip extends HorizontalScrollView { private LinearLayout tabsContainer; private ScrollSlidingTabStripDelegate delegate; + private Theme.ResourcesProvider resourcesProvider; private boolean useSameWidth; @@ -119,12 +120,17 @@ public class ScrollSlidingTextTabStrip extends HorizontalScrollView { }; public ScrollSlidingTextTabStrip(Context context) { + this(context, null); + } + + public ScrollSlidingTextTabStrip(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; selectorDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, null); float rad = AndroidUtilities.dpf2(3); selectorDrawable.setCornerRadii(new float[]{rad, rad, rad, rad, 0, 0, 0, 0}); - selectorDrawable.setColor(Theme.getColor(tabLineColorKey)); + selectorDrawable.setColor(Theme.getColor(tabLineColorKey, resourcesProvider)); setFillViewport(true); setWillNotDraw(false); @@ -155,8 +161,8 @@ public class ScrollSlidingTextTabStrip extends HorizontalScrollView { if (newTab == null || prevTab == null) { return; } - int newColor = Theme.getColor(activeTextColorKey); - int prevColor = Theme.getColor(unactiveTextColorKey); + int newColor = Theme.getColor(activeTextColorKey, resourcesProvider); + int prevColor = Theme.getColor(unactiveTextColorKey, resourcesProvider); int r1 = Color.red(newColor); int g1 = Color.green(newColor); @@ -270,7 +276,7 @@ public class ScrollSlidingTextTabStrip extends HorizontalScrollView { }; tab.setWillNotDraw(false); tab.setGravity(Gravity.CENTER); - tab.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.getColor(selectorColorKey), 3)); + tab.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.getColor(selectorColorKey, resourcesProvider), 3)); tab.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); tab.setSingleLine(true); tab.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -325,7 +331,7 @@ public class ScrollSlidingTextTabStrip extends HorizontalScrollView { for (int a = 0; a < count; a++) { TextView tab = (TextView) tabsContainer.getChildAt(a); tab.setTag(currentPosition == a ? activeTextColorKey : unactiveTextColorKey); - tab.setTextColor(Theme.getColor(currentPosition == a ? activeTextColorKey : unactiveTextColorKey)); + tab.setTextColor(Theme.getColor(currentPosition == a ? activeTextColorKey : unactiveTextColorKey, resourcesProvider)); if (a == 0) { tab.getLayoutParams().width = count == 1 ? LayoutHelper.WRAP_CONTENT : 0; } @@ -337,7 +343,7 @@ public class ScrollSlidingTextTabStrip extends HorizontalScrollView { activeTextColorKey = active; unactiveTextColorKey = unactive; selectorColorKey = selector; - selectorDrawable.setColor(Theme.getColor(tabLineColorKey)); + selectorDrawable.setColor(Theme.getColor(tabLineColorKey, resourcesProvider)); } public int getCurrentTabId() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchDownloadsContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchDownloadsContainer.java index 99b5313b5..bcdb2ecb8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchDownloadsContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchDownloadsContainer.java @@ -3,11 +3,14 @@ package org.telegram.ui.Components; import android.app.Activity; import android.content.Context; import android.graphics.Color; +import android.os.Build; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; @@ -197,13 +200,13 @@ public class SearchDownloadsContainer extends FrameLayout implements Notificatio FileLoader.getInstance(currentAccount).getRecentLoadingFiles(recentLoadingFiles); for (int i = 0; i < currentLoadingFiles.size(); i++) { - if (FileLoader.getPathToMessage(currentLoadingFiles.get(i).messageOwner).exists()) { + if (FileLoader.getInstance(currentAccount).getPathToMessage(currentLoadingFiles.get(i).messageOwner).exists()) { moveToRecent.add(currentLoadingFiles.get(i)); } } for (int i = 0; i < recentLoadingFiles.size(); i++) { - if (!FileLoader.getPathToMessage(recentLoadingFiles.get(i).messageOwner).exists()) { + if (!FileLoader.getInstance(currentAccount).getPathToMessage(recentLoadingFiles.get(i).messageOwner).exists()) { removeFromRecent.add(recentLoadingFiles.get(i)); } } @@ -472,20 +475,25 @@ public class SearchDownloadsContainer extends FrameLayout implements Notificatio if (type == 0) { GraySectionCell graySectionCell = (GraySectionCell) holder.itemView; if (position == downloadingFilesHeader) { - graySectionCell.setText(LocaleController.getString("Downloading", R.string.Downloading), hasCurrentDownload ? LocaleController.getString("PauseAll", R.string.PauseAll) : LocaleController.getString("ResumeAll", R.string.ResumeAll), new OnClickListener() { - @Override - public void onClick(View view) { - for (int i = 0; i < currentLoadingFiles.size(); i++) { - MessageObject messageObject = currentLoadingFiles.get(i); - if (hasCurrentDownload) { - AccountInstance.getInstance(UserConfig.selectedAccount).getFileLoader().cancelLoadFile(messageObject.getDocument()); - } else { - AccountInstance.getInstance(UserConfig.selectedAccount).getFileLoader().loadFile(messageObject.getDocument(), messageObject, 0, 0); + String header = LocaleController.getString("Downloading", R.string.Downloading); + if (graySectionCell.getText().equals(header)) { + graySectionCell.setRightText(hasCurrentDownload ? LocaleController.getString("PauseAll", R.string.PauseAll) : LocaleController.getString("ResumeAll", R.string.ResumeAll), hasCurrentDownload); + } else { + graySectionCell.setText(header, hasCurrentDownload ? LocaleController.getString("PauseAll", R.string.PauseAll) : LocaleController.getString("ResumeAll", R.string.ResumeAll), new OnClickListener() { + @Override + public void onClick(View view) { + for (int i = 0; i < currentLoadingFiles.size(); i++) { + MessageObject messageObject = currentLoadingFiles.get(i); + if (hasCurrentDownload) { + AccountInstance.getInstance(UserConfig.selectedAccount).getFileLoader().cancelLoadFile(messageObject.getDocument()); + } else { + AccountInstance.getInstance(UserConfig.selectedAccount).getFileLoader().loadFile(messageObject.getDocument(), messageObject, 0, 0); + } } + update(true); } - update(true); - } - }); + }); + } } else if (position == recentFilesHeader) { graySectionCell.setText(LocaleController.getString("RecentlyDownloaded", R.string.RecentlyDownloaded), LocaleController.getString("Settings", R.string.Settings), new OnClickListener() { @Override @@ -607,6 +615,10 @@ public class SearchDownloadsContainer extends FrameLayout implements Notificatio scrollView.addView(linearLayout); bottomSheet.setCustomView(scrollView); bottomSheet.show(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + AndroidUtilities.setLightStatusBar(bottomSheet.getWindow(), !Theme.isCurrentThemeDark()); + AndroidUtilities.setLightNavigationBar(bottomSheet.getWindow(), !Theme.isCurrentThemeDark()); + } buttonTextView.setOnClickListener(view -> { bottomSheet.dismiss(); @@ -659,6 +671,12 @@ public class SearchDownloadsContainer extends FrameLayout implements Notificatio sharedDocumentCell.rightDateTextView.setVisibility(View.GONE); addView(sharedDocumentCell); } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + sharedDocumentCell.onInitializeAccessibilityNodeInfo(info); + } } public void setUiCallback(FilteredSearchView.UiCallback callback) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchViewPager.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchViewPager.java index d761f4626..1cad07c5d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchViewPager.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchViewPager.java @@ -4,14 +4,18 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.content.Context; import android.content.DialogInterface; +import android.graphics.Canvas; +import android.graphics.Paint; import android.os.Bundle; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.view.View; +import android.view.animation.OvershootInterpolator; import android.widget.FrameLayout; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -36,6 +40,8 @@ import org.telegram.ui.Adapters.DialogsSearchAdapter; import org.telegram.ui.Adapters.FiltersView; import org.telegram.ui.Cells.ContextLinkCell; import org.telegram.ui.Cells.DialogCell; +import org.telegram.ui.Cells.HashtagSearchCell; +import org.telegram.ui.Cells.ProfileSearchCell; import org.telegram.ui.Cells.SharedAudioCell; import org.telegram.ui.Cells.SharedDocumentCell; import org.telegram.ui.Cells.SharedLinkCell; @@ -55,6 +61,7 @@ public class SearchViewPager extends ViewPagerFixed implements FilteredSearchVie public FrameLayout searchContainer; public RecyclerListView searchListView; public StickerEmptyView emptyView; + private DefaultItemAnimator itemAnimator; public DialogsSearchAdapter dialogsSearchAdapter; private LinearLayoutManager searchLayoutManager; private RecyclerItemsEnterAnimator itemsEnterAnimator; @@ -99,7 +106,16 @@ public class SearchViewPager extends ViewPagerFixed implements FilteredSearchVie this.folderId = folderId; parent = fragment; this.chatPreviewDelegate = chatPreviewDelegate; - dialogsSearchAdapter = new DialogsSearchAdapter(context, type, initialDialogsType) { + + itemAnimator = new DefaultItemAnimator(); + itemAnimator.setAddDuration(150); + itemAnimator.setMoveDuration(350); + itemAnimator.setChangeDuration(0); + itemAnimator.setRemoveDuration(0); + itemAnimator.setMoveInterpolator(new OvershootInterpolator(1.1f)); + itemAnimator.setTranslationInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + + dialogsSearchAdapter = new DialogsSearchAdapter(context, type, initialDialogsType, itemAnimator) { @Override public void notifyDataSetChanged() { int itemCount = getCurrentItemCount(); @@ -115,7 +131,34 @@ public class SearchViewPager extends ViewPagerFixed implements FilteredSearchVie }; fragmentView = (SizeNotifierFrameLayout) fragment.getFragmentView(); - searchListView = new BlurredRecyclerView(context); + searchListView = new BlurredRecyclerView(context) { + @Override + protected void dispatchDraw(Canvas canvas) { + if (dialogsSearchAdapter != null && itemAnimator != null && searchLayoutManager != null && dialogsSearchAdapter.showMoreAnimation) { + canvas.save(); + invalidate(); + final int lastItemIndex = dialogsSearchAdapter.getItemCount() - 1; + for (int i = 0; i < getChildCount(); ++i) { + View child = getChildAt(i); + if (getChildAdapterPosition(child) == lastItemIndex) { + canvas.clipRect(0, 0, getWidth(), child.getBottom() + child.getTranslationY()); + break; + } + } + } + super.dispatchDraw(canvas); + if (dialogsSearchAdapter != null && itemAnimator != null && searchLayoutManager != null && dialogsSearchAdapter.showMoreAnimation) { + canvas.restore(); + } + if (dialogsSearchAdapter != null && dialogsSearchAdapter.showMoreHeader != null) { + canvas.save(); + canvas.translate(dialogsSearchAdapter.showMoreHeader.getLeft(), dialogsSearchAdapter.showMoreHeader.getTop() + dialogsSearchAdapter.showMoreHeader.getTranslationY()); + dialogsSearchAdapter.showMoreHeader.draw(canvas); + canvas.restore(); + } + } + }; + searchListView.setItemAnimator(itemAnimator); searchListView.setPivotY(0); searchListView.setAdapter(dialogsSearchAdapter); searchListView.setVerticalScrollBarEnabled(true); @@ -552,7 +595,14 @@ public class SearchViewPager extends ViewPagerFixed implements FilteredSearchVie } } - public void getThemeDescriptors(ArrayList arrayList) { + public void getThemeDescriptions(ArrayList arrayList) { + for (int i = 0; i < searchListView.getChildCount(); ++i) { + View child = searchListView.getChildAt(i); + if (child instanceof ProfileSearchCell || child instanceof DialogCell || child instanceof HashtagSearchCell) { + arrayList.add(new ThemeDescription(child, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_windowBackgroundWhite)); + } + } + for (int i = 0; i < getChildCount(); i++) { if (getChildAt(i) instanceof FilteredSearchView) { arrayList.addAll(((FilteredSearchView) getChildAt(i)).getThemeDescriptions()); @@ -847,7 +897,7 @@ public class SearchViewPager extends ViewPagerFixed implements FilteredSearchVie } public interface ChatPreviewDelegate { - void startChatPreview(DialogCell cell); + void startChatPreview(RecyclerListView listView, DialogCell cell); void move(float dy); void finish(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarView.java index d21620236..1d82fa314 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarView.java @@ -34,6 +34,7 @@ public class SeekBarView extends FrameLayout { private int thumbSize; private int selectorWidth; private int thumbX; + private AnimatedFloat animatedThumbX = new AnimatedFloat(this, 150, CubicBezierInterpolator.DEFAULT); private int thumbDX; private float progressToSet = -100; private boolean pressed; @@ -46,6 +47,7 @@ public class SeekBarView extends FrameLayout { private int[] pressedState = new int[]{android.R.attr.state_enabled, android.R.attr.state_pressed}; private float transitionProgress = 1f; private int transitionThumbX; + private int separatorsCount; private boolean twoSided; private final Theme.ResourcesProvider resourcesProvider; @@ -122,6 +124,10 @@ public class SeekBarView extends FrameLayout { }); } + public void setSeparatorsCount(int separatorsCount) { + this.separatorsCount = separatorsCount; + } + public void setColors(int inner, int outer) { innerPaint1.setColor(inner); outerPaint1.setColor(outer); @@ -343,9 +349,24 @@ public class SeekBarView extends FrameLayout { @Override protected void onDraw(Canvas canvas) { + int thumbX = this.thumbX; + if (!twoSided && separatorsCount > 1) { + float step = (getMeasuredWidth() - selectorWidth) / ((float) separatorsCount - 1f); + thumbX = (int) animatedThumbX.set(Math.round((thumbX) / step) * step); + } int y = (getMeasuredHeight() - thumbSize) / 2; innerPaint1.setColor(getThemedColor(Theme.key_player_progressBackground)); canvas.drawRect(selectorWidth / 2, getMeasuredHeight() / 2 - AndroidUtilities.dp(1), getMeasuredWidth() - selectorWidth / 2, getMeasuredHeight() / 2 + AndroidUtilities.dp(1), innerPaint1); + if (!twoSided && separatorsCount > 1) { + for (int i = 0; i < separatorsCount; ++i) { + canvas.drawCircle( + AndroidUtilities.lerp(selectorWidth / 2, getMeasuredWidth() - selectorWidth / 2, i / ((float) separatorsCount - 1f)), + getMeasuredHeight() / 2, + AndroidUtilities.dp(1.6f), + innerPaint1 + ); + } + } if (bufferedProgress > 0) { innerPaint1.setColor(getThemedColor(Theme.key_player_progressCachedBackground)); canvas.drawRect(selectorWidth / 2, getMeasuredHeight() / 2 - AndroidUtilities.dp(1), selectorWidth / 2 + bufferedProgress * (getMeasuredWidth() - selectorWidth), getMeasuredHeight() / 2 + AndroidUtilities.dp(1), innerPaint1); @@ -359,6 +380,20 @@ public class SeekBarView extends FrameLayout { } } else { canvas.drawRect(selectorWidth / 2, getMeasuredHeight() / 2 - AndroidUtilities.dp(1), selectorWidth / 2 + thumbX, getMeasuredHeight() / 2 + AndroidUtilities.dp(1), outerPaint1); + if (separatorsCount > 1) { + for (int i = 0; i < separatorsCount; ++i) { + float cx = AndroidUtilities.lerp(selectorWidth / 2, getMeasuredWidth() - selectorWidth / 2, i / ((float) separatorsCount - 1f)); + if (cx > thumbX + selectorWidth / 2) { + break; + } + canvas.drawCircle( + cx, + getMeasuredHeight() / 2, + AndroidUtilities.dp(1.4f), + outerPaint1 + ); + } + } } if (hoverDrawable != null) { int dx = thumbX + selectorWidth / 2 - AndroidUtilities.dp(16); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarWaveform.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarWaveform.java index fc3069e93..5a522d201 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarWaveform.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarWaveform.java @@ -10,12 +10,25 @@ package org.telegram.ui.Components; import android.content.Context; import android.graphics.Canvas; +import android.graphics.LinearGradient; import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Shader; +import android.os.SystemClock; +import android.util.Log; import android.view.MotionEvent; import android.view.View; +import androidx.core.graphics.ColorUtils; +import androidx.core.math.MathUtils; + +import org.checkerframework.checker.units.qual.A; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.MediaController; import org.telegram.messenger.MessageObject; +import org.telegram.messenger.MessagesController; + +import java.util.ArrayList; public class SeekBarWaveform { @@ -23,11 +36,13 @@ public class SeekBarWaveform { private static Paint paintOuter; private int thumbX = 0; private int thumbDX = 0; + private float progress; private float startX; private boolean startDraging = false; private boolean pressed = false; private int width; private int height; + private int fromWidth, toWidth; private SeekBar.SeekBarDelegate delegate; private byte[] waveformBytes; private MessageObject messageObject; @@ -39,21 +54,31 @@ public class SeekBarWaveform { private int selectedColor; private float clearProgress = 1f; - private int clearFromX; private boolean isUnread; + private AnimatedFloat appearFloat = new AnimatedFloat(125, 450, CubicBezierInterpolator.EASE_OUT_QUINT); private float waveScaling = 1f; + private Path path; + private Path alphaPath; + private boolean loading; + private long loadingStart; + private AnimatedFloat loadingFloat = new AnimatedFloat(150, CubicBezierInterpolator.DEFAULT); + private Paint loadingPaint; + private float loadingPaintWidth; + private int loadingPaintColor1, loadingPaintColor2; + + private ArrayList animatedValues; + private float[] heights; + private float[] fromHeights; + private float[] toHeights; + public SeekBarWaveform(Context context) { if (paintInner == null) { paintInner = new Paint(Paint.ANTI_ALIAS_FLAG); paintOuter = new Paint(Paint.ANTI_ALIAS_FLAG); - paintInner.setStyle(Paint.Style.STROKE); - paintOuter.setStyle(Paint.Style.STROKE); - paintInner.setStrokeWidth(AndroidUtilities.dpf2(2)); - paintOuter.setStrokeWidth(AndroidUtilities.dpf2(2)); - paintInner.setStrokeCap(Paint.Cap.ROUND); - paintOuter.setStrokeCap(Paint.Cap.ROUND); + paintInner.setStyle(Paint.Style.FILL); + paintOuter.setStyle(Paint.Style.FILL); } } @@ -69,6 +94,7 @@ public class SeekBarWaveform { public void setWaveform(byte[] waveform) { waveformBytes = waveform; + heights = calculateHeights((int) (width / AndroidUtilities.dpf2(3))); } public void setSelected(boolean value) { @@ -76,11 +102,16 @@ public class SeekBarWaveform { } public void setMessageObject(MessageObject object) { + if (animatedValues != null && messageObject != null && object != null && messageObject.getId() != object.getId()) { + animatedValues.clear(); + } messageObject = object; } public void setParentView(View view) { parentView = view; + loadingFloat.setParent(view); + appearFloat.setParent(view); } public boolean isStartDraging() { @@ -113,6 +144,7 @@ public class SeekBarWaveform { } else if (thumbX > width) { thumbX = width; } + this.progress = thumbX / (float) width; } if (startX != -1 && Math.abs(x - startX) > AndroidUtilities.getPixelsInCM(0.2f, true)) { if (parentView != null && parentView.getParent() != null) { @@ -136,9 +168,9 @@ public class SeekBarWaveform { } public void setProgress(float progress, boolean animated) { + this.progress = isUnread ? 1f : progress; int currentThumbX = isUnread ? width : thumbX; if (animated && currentThumbX != 0 && progress == 0) { - clearFromX = currentThumbX; clearProgress = 0f; } else if (!animated) { clearProgress = 1f; @@ -156,42 +188,46 @@ public class SeekBarWaveform { } public void setSize(int w, int h) { - width = w; - height = h; + setSize(w, h, w, w); } - public void draw(Canvas canvas, View parentView) { - if (waveformBytes == null || width == 0) { - return; + public void setSize(int w, int h, int fromW, int toW) { + width = w; + height = h; + if (heights == null || heights.length != (int) (width / AndroidUtilities.dpf2(3))) { + heights = calculateHeights((int) (width / AndroidUtilities.dpf2(3))); } - float totalBarsCount = width / AndroidUtilities.dp(3); - if (totalBarsCount <= 0.1f) { - return; + if (fromW != toW && (fromWidth != fromW || toWidth != toW)) { + fromWidth = fromW; + toWidth = toW; + fromHeights = calculateHeights((int) (fromWidth / AndroidUtilities.dpf2(3))); + toHeights = calculateHeights((int) (toWidth / AndroidUtilities.dpf2(3))); + } else if (fromW == toW) { + fromHeights = toHeights = null; } + } + + public void setSent() { + appearFloat.set(0, true); + if (parentView != null) { + parentView.invalidate(); + } + } + + private float[] calculateHeights(int count) { + if (waveformBytes == null || count <= 0) { + return null; + } + float[] heights = new float[count]; byte value; int samplesCount = (waveformBytes.length * 8 / 5); - float samplesPerBar = samplesCount / totalBarsCount; + float samplesPerBar = samplesCount / (float) count; float barCounter = 0; int nextBarNum = 0; - isUnread = messageObject != null && !messageObject.isOutOwner() && messageObject.isContentUnread() && thumbX == 0; - paintInner.setColor(isUnread ? outerColor : (selected ? selectedColor : innerColor)); - paintOuter.setColor(outerColor); - - int y = (height - AndroidUtilities.dp(14)) / 2; int barNum = 0; int lastBarNum; int drawBarCount; - - if (clearProgress != 1f) { - clearProgress += 16 / 150f; - if (clearProgress > 1f) { - clearProgress = 1f; - } else { - parentView.invalidate(); - } - } - for (int a = 0; a < samplesCount; a++) { if (a != nextBarNum) { continue; @@ -216,48 +252,162 @@ public class SeekBarWaveform { } for (int b = 0; b < drawBarCount; b++) { - float x = barNum * AndroidUtilities.dpf2(3); - float h = AndroidUtilities.dpf2(Math.max(0, 7 * value / 31.0f)); + if (barNum >= heights.length) { + return heights; + } + heights[barNum++] = Math.max(0, 7 * value / 31.0f); + } + } + return heights; + } - if (x < thumbX && x + AndroidUtilities.dp(2) < thumbX) { - drawLine(canvas,x, y, h, paintOuter); + public void draw(Canvas canvas, View parentView) { + if (waveformBytes == null || width == 0) { + return; + } + float totalBarsCount = width / AndroidUtilities.dpf2(3); + if (totalBarsCount <= 0.1f) { + return; + } + if (clearProgress != 1f) { + clearProgress += 16 / 150f; + if (clearProgress > 1f) { + clearProgress = 1f; + } else { + parentView.invalidate(); + } + } + + float appearProgress = appearFloat.set(1f); + + if (path == null) { + path = new Path(); + } else { + path.reset(); + } + + float alpha = 0; + if (alphaPath == null) { + alphaPath = new Path(); + } else { + alphaPath.reset(); + } + + if (fromHeights != null && toHeights != null) { + float t = (width - fromWidth) / (float) (toWidth - fromWidth); + int maxlen = Math.max(fromHeights.length, toHeights.length); + int minlen = Math.min(fromHeights.length, toHeights.length); + float[] minarr = fromHeights.length < toHeights.length ? fromHeights : toHeights; + float[] maxarr = fromHeights.length < toHeights.length ? toHeights : fromHeights; +// t = CubicBezierInterpolator.EASE_OUT.getInterpolation(t); + float T = fromHeights.length < toHeights.length ? t : 1f - t; + int k = -1; + for (int barNum = 0; barNum < maxlen; ++barNum) { + int l = MathUtils.clamp((int) Math.floor(barNum / (float) maxlen * minlen), 0, minlen - 1); + if (k < l) { + float x = AndroidUtilities.lerp((float) l, (float) barNum, T) * AndroidUtilities.dpf2(3); + float h = AndroidUtilities.dpf2(AndroidUtilities.lerp(minarr[l], maxarr[barNum], T)); + addBar(path, x, h); + k = l; } else { - drawLine(canvas,x, y, h, paintInner); - if (x < thumbX) { - canvas.save(); - canvas.clipRect(x - AndroidUtilities.dpf2(1), y, thumbX, y + AndroidUtilities.dp(14)); - drawLine(canvas,x, y, h, paintOuter); - canvas.restore(); - } + float x = AndroidUtilities.lerp((float) l, (float) barNum, T) * AndroidUtilities.dpf2(3); + float h = AndroidUtilities.dpf2(AndroidUtilities.lerp(minarr[l], maxarr[barNum], T)); + addBar(alphaPath, x, h); + alpha = T; } - if (clearProgress != 1f) { - int alpha = paintOuter.getAlpha(); - paintOuter.setAlpha((int) (alpha * (1f - clearProgress))); - if (x < clearFromX && x + AndroidUtilities.dp(2) < clearFromX) { - drawLine(canvas, x, y, h, paintOuter); - } else if (x < clearFromX) { - canvas.save(); - canvas.clipRect(x - AndroidUtilities.dpf2(1), y, clearFromX, y + AndroidUtilities.dp(14)); - drawLine(canvas, x, y, h, paintOuter); - canvas.restore(); - } - paintOuter.setAlpha(alpha); + } + } else if (heights != null) { + for (int barNum = 0; barNum < totalBarsCount; barNum++) { + if (barNum >= heights.length) { + break; } - barNum++; + float x = barNum * AndroidUtilities.dpf2(3); + float bart = MathUtils.clamp(appearProgress * totalBarsCount - barNum, 0, 1); + float h = AndroidUtilities.dpf2(heights[barNum]) * bart; + addBar(path, x, h); + } + } + + if (alpha > 0) { + canvas.save(); + canvas.clipPath(alphaPath); + drawFill(canvas, alpha); + canvas.restore(); + } + + canvas.save(); + canvas.clipPath(path); + drawFill(canvas, 1f); + canvas.restore(); + } + + private void drawFill(Canvas canvas, float alpha) { + final float strokeWidth = AndroidUtilities.dpf2(2); + + isUnread = messageObject != null && messageObject.isContentUnread() && !messageObject.isOut() && this.progress <= 0; + paintInner.setColor(isUnread ? outerColor : (selected ? selectedColor : innerColor)); + paintOuter.setColor(outerColor); + + loadingFloat.setParent(parentView); + boolean isPlaying = MediaController.getInstance().isPlayingMessage(messageObject); + float loadingT = loadingFloat.set(loading && !isPlaying ? 1f : 0f); + paintInner.setColor(ColorUtils.blendARGB(paintInner.getColor(), innerColor, loadingT)); + paintOuter.setAlpha((int) (paintOuter.getAlpha() * (1f - loadingT) * alpha)); + paintInner.setAlpha((int) (paintInner.getAlpha() * alpha)); + + canvas.drawRect(0, 0, width + strokeWidth, height, paintInner); + if (loadingT < 1f) { + canvas.drawRect(0, 0, (this.progress * (width + strokeWidth)) * (1f - loadingT), height, paintOuter); + } + + if (loadingT > 0f) { + if (loadingPaint == null || Math.abs(loadingPaintWidth - width) > AndroidUtilities.dp(8) || loadingPaintColor1 != innerColor || loadingPaintColor2 != outerColor) { + if (loadingPaint == null) { + loadingPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + } + loadingPaintColor1 = innerColor; + loadingPaintColor2 = outerColor; + loadingPaint.setShader(new LinearGradient(0, 0, loadingPaintWidth = width, 0, new int[]{ loadingPaintColor1, loadingPaintColor2, loadingPaintColor1 }, new float[]{0, 0.2f, 0.4f}, Shader.TileMode.CLAMP)); + } + loadingPaint.setAlpha((int) (255 * loadingT * alpha)); + canvas.save(); + float t = (SystemClock.elapsedRealtime() - loadingStart) / 270f; + t = (float) Math.pow(t, 0.75f); + float dx = (t % 1.6f - .6f) * loadingPaintWidth; + canvas.translate(dx, 0); + canvas.drawRect(-dx, 0, width + 5 - dx, height, loadingPaint); + canvas.restore(); + + if (parentView != null) { + parentView.invalidate(); } } } - private void drawLine(Canvas canvas, float x, int y, float h, Paint paint) { + private void addBar(Path path, float x, float h) { + final float strokeWidth = AndroidUtilities.dpf2(2); + final int y = (height - AndroidUtilities.dp(14)) / 2; h *= waveScaling; - if (h == 0) { - canvas.drawPoint(x + AndroidUtilities.dpf2(1), y + AndroidUtilities.dp(7), paint); - } else { - canvas.drawLine(x + AndroidUtilities.dpf2(1), y + AndroidUtilities.dp(7) - h, x + AndroidUtilities.dpf2(1), y + AndroidUtilities.dp(7) + h, paint); - } + AndroidUtilities.rectTmp.set( + x + AndroidUtilities.dpf2(1) - strokeWidth / 2f, + y + AndroidUtilities.dp(7) + (-h - strokeWidth / 2f), + x + AndroidUtilities.dpf2(1) + strokeWidth / 2f, + y + AndroidUtilities.dp(7) + (h + strokeWidth / 2f) + ); + path.addRoundRect(AndroidUtilities.rectTmp, strokeWidth, strokeWidth, Path.Direction.CW); } public void setWaveScaling(float waveScaling) { this.waveScaling = waveScaling; } + + public void setLoading(boolean loading) { + if (!this.loading && loading && this.loadingFloat.get() <= 0) { + loadingStart = SystemClock.elapsedRealtime(); + } + this.loading = loading; + if (parentView != null) { + parentView.invalidate(); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SenderSelectView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SenderSelectView.java index b6a34f2df..c7e183cc6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SenderSelectView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SenderSelectView.java @@ -9,6 +9,7 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -20,7 +21,11 @@ import com.google.android.exoplayer2.util.Log; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ImageReceiver; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; +import org.telegram.messenger.UserObject; import org.telegram.tgnet.TLObject; +import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; public class SenderSelectView extends View { @@ -49,6 +54,7 @@ public class SenderSelectView extends View { menuPaint.setStrokeCap(Paint.Cap.ROUND); menuPaint.setStyle(Paint.Style.STROKE); updateColors(); + setContentDescription(LocaleController.formatString("AccDescrSendAsPeer", R.string.AccDescrSendAsPeer, "")); } private void updateColors() { @@ -117,6 +123,15 @@ public class SenderSelectView extends View { * @param obj User or chat */ public void setAvatar(TLObject obj) { + String objName = ""; + if (obj instanceof TLRPC.User) { + objName = UserObject.getFirstName((TLRPC.User) obj); + } else if (obj instanceof TLRPC.Chat) { + objName = ((TLRPC.Chat) obj).title; + } else if (obj instanceof TLRPC.ChatInvite) { + objName = ((TLRPC.ChatInvite) obj).title; + } + setContentDescription(LocaleController.formatString("AccDescrSendAsPeer", R.string.AccDescrSendAsPeer, objName)); avatarDrawable.setInfo(obj); avatarImage.setForUserOrChat(obj, avatarDrawable); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java index 65343ab21..a73a72b5f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java @@ -120,15 +120,16 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi private FillLastGridLayoutManager searchLayoutManager; private ShareDialogsAdapter listAdapter; private ShareSearchAdapter searchAdapter; - private ArrayList sendingMessageObjects; + protected ArrayList sendingMessageObjects; private String[] sendingText = new String[2]; private int hasPoll; - private EmptyTextProgressView searchEmptyView; + private StickerEmptyView searchEmptyView; private Drawable shadowDrawable; private View[] shadow = new View[2]; private AnimatorSet[] shadowAnimation = new AnimatorSet[2]; - private LongSparseArray selectedDialogs = new LongSparseArray<>(); + protected LongSparseArray selectedDialogs = new LongSparseArray<>(); private SwitchView switchView; + private int containerViewTop = -1; private ChatActivity parentFragment; private Activity parentActivity; @@ -385,13 +386,13 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi String text = searchEditText.getText().toString(); if (text.length() != 0) { if (searchEmptyView != null) { - searchEmptyView.setText(LocaleController.getString("NoResult", R.string.NoResult)); + searchEmptyView.title.setText(LocaleController.getString("NoResult", R.string.NoResult)); } } else { if (gridView.getAdapter() != listAdapter) { int top = getCurrentTop(); - searchEmptyView.setText(LocaleController.getString("NoChats", R.string.NoChats)); - searchEmptyView.showTextView(); + searchEmptyView.title.setText(LocaleController.getString("NoResult", R.string.NoResult)); + searchEmptyView.showProgress(false, true); checkCurrentList(false); listAdapter.notifyDataSetChanged(); if (top > 0) { @@ -451,7 +452,9 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi parentFragment = fragment; shadowDrawable = context.getResources().getDrawable(R.drawable.sheet_shadow_round).mutate(); - shadowDrawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(darkTheme ? Theme.key_voipgroup_inviteMembersBackground : Theme.key_dialogBackground), PorterDuff.Mode.MULTIPLY)); + int backgroundColor = getThemedColor(behindKeyboardColorKey = (darkTheme ? Theme.key_voipgroup_inviteMembersBackground : Theme.key_dialogBackground)); + shadowDrawable.setColorFilter(new PorterDuffColorFilter(backgroundColor, PorterDuff.Mode.MULTIPLY)); + fixNavigationBar(backgroundColor); isFullscreen = fullScreen; linkToCopy[0] = copyLink; @@ -822,13 +825,15 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi super.requestLayout(); } + private boolean lightStatusBar = AndroidUtilities.computePerceivedBrightness(getThemedColor(darkTheme ? Theme.key_voipgroup_inviteMembersBackground : Theme.key_dialogBackground)) > .721f; + @Override protected void onDraw(Canvas canvas) { canvas.save(); canvas.translate(0, currentPanTranslationY); int y = scrollOffsetY - backgroundPaddingTop + AndroidUtilities.dp(6) + topOffset; - int top = scrollOffsetY - backgroundPaddingTop - AndroidUtilities.dp(13) + topOffset; - int height = getMeasuredHeight() + AndroidUtilities.dp(30) + backgroundPaddingTop; + int top = containerViewTop = scrollOffsetY - backgroundPaddingTop - AndroidUtilities.dp(13) + topOffset; + int height = getMeasuredHeight() + AndroidUtilities.dp(30 + 30) + backgroundPaddingTop; int statusBarHeight = 0; float radProgress = 1.0f; if (!isFullscreen && Build.VERSION.SDK_INT >= 21) { @@ -863,12 +868,20 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi Theme.dialogs_onlineCirclePaint.setColor(getThemedColor(darkTheme ? Theme.key_voipgroup_scrollUp : Theme.key_sheet_scrollUp)); canvas.drawRoundRect(rect1, AndroidUtilities.dp(2), AndroidUtilities.dp(2), Theme.dialogs_onlineCirclePaint); - if (statusBarHeight > 0) { - int color1 = getThemedColor(darkTheme ? Theme.key_voipgroup_inviteMembersBackground : Theme.key_dialogBackground); - int finalColor = Color.argb(0xff, (int) (Color.red(color1) * 0.8f), (int) (Color.green(color1) * 0.8f), (int) (Color.blue(color1) * 0.8f)); - Theme.dialogs_onlineCirclePaint.setColor(finalColor); - canvas.drawRect(backgroundPaddingLeft, AndroidUtilities.statusBarHeight - statusBarHeight, getMeasuredWidth() - backgroundPaddingLeft, AndroidUtilities.statusBarHeight, Theme.dialogs_onlineCirclePaint); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + int flags = getSystemUiVisibility(); + boolean shouldBeLightStatusBar = lightStatusBar && statusBarHeight > AndroidUtilities.statusBarHeight * .5f; + boolean isLightStatusBar = (flags & View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) > 0; + if (shouldBeLightStatusBar != isLightStatusBar) { + if (shouldBeLightStatusBar) { + flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + } else { + flags &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + } + setSystemUiVisibility(flags); + } } + canvas.restore(); previousTopOffset = topOffset; } @@ -1030,10 +1043,17 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi FlickerLoadingView flickerLoadingView = new FlickerLoadingView(context, resourcesProvider); flickerLoadingView.setViewType(FlickerLoadingView.SHARE_ALERT_TYPE); - searchEmptyView = new EmptyTextProgressView(context, flickerLoadingView, resourcesProvider); - searchEmptyView.setShowAtCenter(true); - searchEmptyView.showTextView(); - searchEmptyView.setText(LocaleController.getString("NoChats", R.string.NoChats)); + if (darkTheme) { + flickerLoadingView.setColors(Theme.key_voipgroup_inviteMembersBackground, Theme.key_voipgroup_searchBackground, null); + } + searchEmptyView = new StickerEmptyView(context, flickerLoadingView, StickerEmptyView.STICKER_TYPE_SEARCH, resourcesProvider); + searchEmptyView.addView(flickerLoadingView, 0); + searchEmptyView.setAnimateLayoutChange(true); + searchEmptyView.showProgress(false, false); + if (darkTheme) { + searchEmptyView.title.setTextColor(getThemedColor(Theme.key_voipgroup_nameText)); + } + searchEmptyView.title.setText(LocaleController.getString("NoResult", R.string.NoResult)); searchGridView.setEmptyView(searchEmptyView); searchGridView.setHideIfEmpty(false); searchGridView.setAnimateEmptyView(true, 0); @@ -1150,12 +1170,12 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi float alphaOffset = (frameLayout2.getMeasuredHeight() - AndroidUtilities.dp(48)) * (1f - getAlpha()); shadow[1].setTranslationY(-(frameLayout2.getMeasuredHeight() - AndroidUtilities.dp(48)) + captionEditTextTopOffset + currentPanTranslationY + alphaOffset); - int newColor = getThemedColor(darkTheme ? Theme.key_voipgroup_inviteMembersBackground : Theme.key_dialogBackground); - if (color != newColor) { - color = newColor; - p.setColor(color); - } - canvas.drawRect(0, captionEditTextTopOffset + alphaOffset, getMeasuredWidth(), getMeasuredHeight(), p); +// int newColor = getThemedColor(darkTheme ? Theme.key_voipgroup_inviteMembersBackground : Theme.key_dialogBackground); +// if (color != newColor) { +// color = newColor; +// p.setColor(color); +// } +// canvas.drawRect(0, captionEditTextTopOffset + alphaOffset, getMeasuredWidth(), getMeasuredHeight(), p); } @Override @@ -1214,14 +1234,40 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi chatActivityEnterViewAnimateFromTop = frameLayout2.getTop() + captionEditTextTopOffset; frameLayout2.invalidate(); } + + @Override + protected void showPopup(int show) { + super.showPopup(show); + if (darkTheme) { + navBarColorKey = null; + AndroidUtilities.setNavigationBarColor(ShareAlert.this.getWindow(), ShareAlert.this.getThemedColor(Theme.key_windowBackgroundGray), true, color -> { + ShareAlert.this.setOverlayNavBarColor(navBarColor = color); + }); + } + } + + @Override + public void hidePopup(boolean byBackButton) { + super.hidePopup(byBackButton); + if (darkTheme) { + navBarColorKey = null; + AndroidUtilities.setNavigationBarColor(ShareAlert.this.getWindow(), ShareAlert.this.getThemedColor(Theme.key_voipgroup_inviteMembersBackground), true, color -> { + ShareAlert.this.setOverlayNavBarColor(navBarColor = color); + }); + } + } }; - if (forCall) { + if (darkTheme) { commentTextView.getEditText().setTextColor(getThemedColor(Theme.key_voipgroup_nameText)); + commentTextView.getEditText().setCursorColor(getThemedColor(Theme.key_voipgroup_nameText)); } + commentTextView.setBackgroundColor(backgroundColor); commentTextView.setHint(LocaleController.getString("ShareComment", R.string.ShareComment)); commentTextView.onResume(); - frameLayout2.addView(commentTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT, 0, 0, 84, 0)); + commentTextView.setPadding(0, 0, AndroidUtilities.dp(84), 0); + frameLayout2.addView(commentTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT)); frameLayout2.setClipChildren(false); + frameLayout2.setClipToPadding(false); commentTextView.setClipChildren(false); writeButtonContainer = new FrameLayout(context) { @@ -1268,8 +1314,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi writeButtonContainer.addView(writeButton, LayoutHelper.createFrame(Build.VERSION.SDK_INT >= 21 ? 56 : 60, Build.VERSION.SDK_INT >= 21 ? 56 : 60, Gravity.LEFT | Gravity.TOP, Build.VERSION.SDK_INT >= 21 ? 2 : 0, 0, 0, 0)); writeButton.setOnClickListener(v -> sendInternal(true)); writeButton.setOnLongClickListener(v -> { - onSendLongClick(writeButton); - return true; + return onSendLongClick(writeButton); }); textPaint.setTextSize(AndroidUtilities.dp(12)); @@ -1333,13 +1378,12 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi } private void selectDialog(ShareDialogCell cell, TLRPC.Dialog dialog) { - if (hasPoll != 0) { - if (DialogObject.isChatDialog(dialog.id)) { - TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(-dialog.id); - boolean isChannel = ChatObject.isChannel(chat) && hasPoll == 2 && !chat.megagroup; - if (isChannel || !ChatObject.canSendPolls(chat)) { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext(), resourcesProvider); - builder.setTitle(LocaleController.getString("SendMessageTitle", R.string.SendMessageTitle)); + if (DialogObject.isChatDialog(dialog.id)) { + TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(-dialog.id); + if (ChatObject.isChannel(chat) && !chat.megagroup && (!ChatObject.isCanWriteToChannel(-dialog.id, currentAccount) || hasPoll == 2)) { + AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity); + builder.setTitle(LocaleController.getString("SendMessageTitle", R.string.SendMessageTitle)); + if (hasPoll == 2) { if (isChannel) { builder.setMessage(LocaleController.getString("PublicPollCantForward", R.string.PublicPollCantForward)); } else if (ChatObject.isActionBannedByDefault(chat, ChatObject.ACTION_SEND_POLLS)) { @@ -1347,11 +1391,24 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi } else { builder.setMessage(LocaleController.getString("ErrorSendRestrictedPolls", R.string.ErrorSendRestrictedPolls)); } - builder.setNegativeButton(LocaleController.getString("OK", R.string.OK), null); - builder.show(); - return; + } else { + builder.setMessage(LocaleController.getString("ChannelCantSendMessage", R.string.ChannelCantSendMessage)); } + builder.setNegativeButton(LocaleController.getString("OK", R.string.OK), null); + builder.show(); + return; } + } else if (DialogObject.isEncryptedDialog(dialog.id) && (hasPoll != 0)) { + AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity); + builder.setTitle(LocaleController.getString("SendMessageTitle", R.string.SendMessageTitle)); + if (hasPoll != 0) { + builder.setMessage(LocaleController.getString("PollCantForwardSecretChat", R.string.PollCantForwardSecretChat)); + } else { + builder.setMessage(LocaleController.getString("InvoiceCantForwardSecretChat", R.string.InvoiceCantForwardSecretChat)); + } + builder.setNegativeButton(LocaleController.getString("OK", R.string.OK), null); + builder.show(); + return; } if (selectedDialogs.indexOfKey(dialog.id) >= 0) { selectedDialogs.remove(dialog.id); @@ -1382,21 +1439,29 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi searchView.hideKeyboard(); } } - if (searchAdapter.categoryAdapter != null) { + if (searchAdapter != null && searchAdapter.categoryAdapter != null) { searchAdapter.categoryAdapter.notifyItemRangeChanged(0, searchAdapter.categoryAdapter.getItemCount()); } } + @Override + public int getContainerViewHeight() { + return containerView.getMeasuredHeight() - containerViewTop; + } + private boolean showSendersName = true; private ActionBarPopupWindow sendPopupWindow; private boolean onSendLongClick(View view) { - if (parentFragment == null) { + if (parentActivity == null) { return false; } LinearLayout layout = new LinearLayout(getContext()); layout.setOrientation(LinearLayout.VERTICAL); if (sendingMessageObjects != null) { ActionBarPopupWindow.ActionBarPopupWindowLayout sendPopupLayout1 = new ActionBarPopupWindow.ActionBarPopupWindowLayout(parentActivity, resourcesProvider); + if (darkTheme) { + sendPopupLayout1.setBackgroundColor(getThemedColor(Theme.key_voipgroup_inviteMembersBackground)); + } sendPopupLayout1.setAnimationEnabled(false); sendPopupLayout1.setOnTouchListener(new View.OnTouchListener() { private android.graphics.Rect popupRect = new android.graphics.Rect(); @@ -1419,15 +1484,20 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi sendPopupWindow.dismiss(); } }); - sendPopupLayout1.setShownFromBotton(false); - sendPopupLayout1.setupRadialSelectors(getThemedColor(Theme.key_dialogButtonSelector)); + sendPopupLayout1.setShownFromBottom(false); ActionBarMenuSubItem showSendersNameView = new ActionBarMenuSubItem(getContext(), true, true, false, resourcesProvider); + if (darkTheme) { + showSendersNameView.setTextColor(getThemedColor(Theme.key_voipgroup_nameText)); + } sendPopupLayout1.addView(showSendersNameView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48)); showSendersNameView.setTextAndIcon(false ? LocaleController.getString("ShowSenderNames", R.string.ShowSenderNames) : LocaleController.getString("ShowSendersName", R.string.ShowSendersName), 0); showSendersNameView.setChecked(showSendersName = true); ActionBarMenuSubItem hideSendersNameView = new ActionBarMenuSubItem(getContext(), true, false, true, resourcesProvider); + if (darkTheme) { + hideSendersNameView.setTextColor(getThemedColor(Theme.key_voipgroup_nameText)); + } sendPopupLayout1.addView(hideSendersNameView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48)); hideSendersNameView.setTextAndIcon(false ? LocaleController.getString("HideSenderNames", R.string.HideSenderNames) : LocaleController.getString("HideSendersName", R.string.HideSendersName), 0); hideSendersNameView.setChecked(!showSendersName); @@ -1439,11 +1509,15 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi showSendersNameView.setChecked(showSendersName = false); hideSendersNameView.setChecked(!showSendersName); }); + sendPopupLayout1.setupRadialSelectors(getThemedColor(darkTheme ? Theme.key_voipgroup_listSelector : Theme.key_dialogButtonSelector)); layout.addView(sendPopupLayout1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 0, -8)); } ActionBarPopupWindow.ActionBarPopupWindowLayout sendPopupLayout2 = new ActionBarPopupWindow.ActionBarPopupWindowLayout(parentActivity, resourcesProvider); + if (darkTheme) { + sendPopupLayout2.setBackgroundColor(Theme.getColor(Theme.key_voipgroup_inviteMembersBackground)); + } sendPopupLayout2.setAnimationEnabled(false); sendPopupLayout2.setOnTouchListener(new View.OnTouchListener() { private android.graphics.Rect popupRect = new android.graphics.Rect(); @@ -1466,10 +1540,13 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi sendPopupWindow.dismiss(); } }); - sendPopupLayout2.setShownFromBotton(false); - sendPopupLayout2.setupRadialSelectors(getThemedColor(Theme.key_dialogButtonSelector)); + sendPopupLayout2.setShownFromBottom(false); ActionBarMenuSubItem sendWithoutSound = new ActionBarMenuSubItem(getContext(), true, true, resourcesProvider); + if (darkTheme) { + sendWithoutSound.setTextColor(getThemedColor(Theme.key_voipgroup_nameText)); + sendWithoutSound.setIconColor(getThemedColor(Theme.key_windowBackgroundWhiteHintText)); + } sendWithoutSound.setTextAndIcon(LocaleController.getString("SendWithoutSound", R.string.SendWithoutSound), R.drawable.input_notify_off); sendWithoutSound.setMinimumWidth(AndroidUtilities.dp(196)); sendPopupLayout2.addView(sendWithoutSound, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48)); @@ -1480,7 +1557,11 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi sendInternal(false); }); ActionBarMenuSubItem sendMessage = new ActionBarMenuSubItem(getContext(), true, true, resourcesProvider); - sendMessage.setTextAndIcon(LocaleController.getString("SendMessage", R.string.SendMessage), R.drawable.msg_forward_send); + if (darkTheme) { + sendMessage.setTextColor(getThemedColor(Theme.key_voipgroup_nameText)); + sendMessage.setIconColor(getThemedColor(Theme.key_windowBackgroundWhiteHintText)); + } + sendMessage.setTextAndIcon(LocaleController.getString("SendMessage", R.string.SendMessage), R.drawable.msg_send); sendMessage.setMinimumWidth(AndroidUtilities.dp(196)); sendPopupLayout2.addView(sendMessage, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48)); sendMessage.setOnClickListener(v -> { @@ -1489,6 +1570,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi } sendInternal(true); }); + sendPopupLayout2.setupRadialSelectors(getThemedColor(darkTheme ? Theme.key_voipgroup_listSelector : Theme.key_dialogButtonSelector)); layout.addView(sendPopupLayout2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -1500,14 +1582,14 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi sendPopupWindow.setInputMethodMode(ActionBarPopupWindow.INPUT_METHOD_NOT_NEEDED); sendPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED); sendPopupWindow.getContentView().setFocusableInTouchMode(true); - SharedConfig.removeScheduledOrNoSuoundHint(); + SharedConfig.removeScheduledOrNoSoundHint(); layout.measure(View.MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(1000), View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(1000), View.MeasureSpec.AT_MOST)); sendPopupWindow.setFocusable(true); int[] location = new int[2]; view.getLocationInWindow(location); int y; - if (keyboardVisible && parentFragment.contentView.getMeasuredHeight() > AndroidUtilities.dp(58)) { + if (keyboardVisible && parentFragment != null && parentFragment.contentView.getMeasuredHeight() > AndroidUtilities.dp(58)) { y = location[1] + view.getMeasuredHeight(); } else { y = location[1] - layout.getMeasuredHeight() - AndroidUtilities.dp(2); @@ -1516,10 +1598,10 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi sendPopupWindow.dimBehind(); view.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); - return false; + return true; } - private void sendInternal(boolean withSound) { + protected void sendInternal(boolean withSound) { for (int a = 0; a < selectedDialogs.size(); a++) { long key = selectedDialogs.keyAt(a); if (AlertsCreator.checkSlowMode(getContext(), currentAccount, key, frameLayout2.getTag() != null && commentTextView.length() > 0)) { @@ -1954,6 +2036,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi int itemsCount; DialogsSearchAdapter.CategoryAdapterRecycler categoryAdapter; + RecyclerView categoryListView; public ShareSearchAdapter(Context context) { this.context = context; @@ -1967,7 +2050,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi } int oldItemsCount = lastItemCont; if (getItemCount() == 0 && !searchAdapterHelper.isSearchInProgress() && !internalDialogsIsSearching) { - searchEmptyView.showTextView(); + searchEmptyView.showProgress(false, true); } else { recyclerItemsEnterAnimator.showItemsAnimated(oldItemsCount); } @@ -2205,10 +2288,10 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi topBeforeSwitch = getCurrentTop(); } searchResult = result; - searchAdapterHelper.mergeResults(searchResult); + searchAdapterHelper.mergeResults(searchResult, null); int oldItemsCount = lastItemCont; if (getItemCount() == 0 && !searchAdapterHelper.isSearchInProgress() && !internalDialogsIsSearching) { - searchEmptyView.showTextView(); + searchEmptyView.showProgress(false, true); } else { recyclerItemsEnterAnimator.showItemsAnimated(oldItemsCount); } @@ -2244,7 +2327,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi } else { internalDialogsIsSearching = true; final int searchId = ++lastSearchId; - searchEmptyView.showProgress(false); + searchEmptyView.showProgress(true, true); Utilities.searchQueue.postRunnable(searchRunnable = () -> { searchRunnable = null; searchDialogsInternal(query, searchId); @@ -2297,7 +2380,11 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi public TLRPC.Dialog getItem(int position) { if (position >= recentDialogsStartRow && recentDialogsStartRow >= 0) { - DialogsSearchAdapter.RecentSearchObject recentSearchObject = recentSearchObjects.get(position - recentDialogsStartRow); + int index = position - recentDialogsStartRow; + if (index < 0 || index >= recentSearchObjects.size()) { + return null; + } + DialogsSearchAdapter.RecentSearchObject recentSearchObject = recentSearchObjects.get(index); TLObject object = recentSearchObject.object; TLRPC.Dialog dialog = new TLRPC.TL_dialog(); if (object instanceof TLRPC.User) { @@ -2364,6 +2451,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi return super.onInterceptTouchEvent(e); } }; + categoryListView = horizontalListView; horizontalListView.setItemAnimator(null); horizontalListView.setLayoutAnimation(null); LinearLayoutManager layoutManager = new LinearLayoutManager(context) { @@ -2378,6 +2466,9 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { HintDialogCell cell = (HintDialogCell) holder.itemView; + if (darkTheme) { + cell.setColors(Theme.key_voipgroup_nameText, Theme.key_voipgroup_inviteMembersBackground); + } TLRPC.TL_topPeer peer = MediaDataController.getInstance(currentAccount).hints.get(position); TLRPC.Chat chat = null; @@ -2428,6 +2519,8 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi } case 3: { GraySectionCell graySectionCell = new GraySectionCell(context, resourcesProvider); + graySectionCell.setTextColor(darkTheme ? Theme.key_voipgroup_nameText : Theme.key_graySectionText); + graySectionCell.setBackgroundColor(getThemedColor(darkTheme ? Theme.key_voipgroup_searchBackground : Theme.key_graySection)); graySectionCell.setText(LocaleController.getString("Recent", R.string.Recent)); view = graySectionCell; break; @@ -2516,6 +2609,8 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi } } cell.setDialog(id, selectedDialogs.indexOfKey(id) >= 0, name); + } else if (holder.getItemViewType() == 2) { + ((RecyclerListView) holder.itemView).getAdapter().notifyDataSetChanged(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SharedMediaLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SharedMediaLayout.java index 56c4a4ea6..268baaee8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SharedMediaLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SharedMediaLayout.java @@ -160,6 +160,8 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter FlickerLoadingView globalGradientView; private final int viewType; + private UndoView undoView; + public boolean checkPinchToZoom(MotionEvent ev) { if (mediaPages[0].selectedType != 0 || getParent() == null) { return false; @@ -1136,10 +1138,12 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter final Delegate delegate; private HintView fwdRestrictedHint; + private Theme.ResourcesProvider resourcesProvider; - public SharedMediaLayout(Context context, long did, SharedMediaPreloader preloader, int commonGroupsCount, ArrayList sortedUsers, TLRPC.ChatFull chatInfo, boolean membersFirst, BaseFragment parent, Delegate delegate, int viewType) { + public SharedMediaLayout(Context context, long did, SharedMediaPreloader preloader, int commonGroupsCount, ArrayList sortedUsers, TLRPC.ChatFull chatInfo, boolean membersFirst, BaseFragment parent, Delegate delegate, int viewType, Theme.ResourcesProvider resourcesProvider) { super(context); this.viewType = viewType; + this.resourcesProvider = resourcesProvider; globalGradientView = new FlickerLoadingView(context); globalGradientView.setIsSingleCell(true); @@ -1213,7 +1217,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter searchWas = false; pinnedHeaderShadowDrawable = context.getResources().getDrawable(R.drawable.photos_header_shadow); - pinnedHeaderShadowDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundGrayShadow), PorterDuff.Mode.MULTIPLY)); + pinnedHeaderShadowDrawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_windowBackgroundGrayShadow), PorterDuff.Mode.MULTIPLY)); if (scrollSlidingTextTabStrip != null) { initialTab = scrollSlidingTextTabStrip.getCurrentTabId(); @@ -1230,6 +1234,9 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter menu.addOnLayoutChangeListener(new OnLayoutChangeListener() { @Override public void onLayoutChange(View view, int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7) { + if (searchItem == null) { + return; + } View parent = (View) searchItem.getParent(); searchItem.setTranslationX(parent.getMeasuredWidth() - searchItem.getRight()); } @@ -1301,11 +1308,12 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter searchItem.setVisibility(View.INVISIBLE); photoVideoOptionsItem = new ImageView(context); + photoVideoOptionsItem.setContentDescription(LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions)); photoVideoOptionsItem.setTranslationY(AndroidUtilities.dp(10)); photoVideoOptionsItem.setVisibility(View.INVISIBLE); Drawable calendarDrawable = ContextCompat.getDrawable(context, R.drawable.ic_ab_other).mutate(); - calendarDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), PorterDuff.Mode.MULTIPLY)); + calendarDrawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_windowBackgroundWhiteGrayText2), PorterDuff.Mode.MULTIPLY)); photoVideoOptionsItem.setImageDrawable(calendarDrawable); photoVideoOptionsItem.setScaleType(ImageView.ScaleType.CENTER_INSIDE); actionBar.addView(photoVideoOptionsItem, LayoutHelper.createFrame(48, 56, Gravity.RIGHT | Gravity.BOTTOM)); @@ -1456,9 +1464,9 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter }); EditTextBoldCursor editText = searchItem.getSearchField(); - editText.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - editText.setHintTextColor(Theme.getColor(Theme.key_player_time)); - editText.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + editText.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); + editText.setHintTextColor(getThemedColor(Theme.key_player_time)); + editText.setCursorColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); searchItemState = 0; SizeNotifierFrameLayout sizeNotifierFrameLayout = null; @@ -1466,7 +1474,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter sizeNotifierFrameLayout = (SizeNotifierFrameLayout) profileActivity.getFragmentView(); } actionModeLayout = new BlurredLinearLayout(context, sizeNotifierFrameLayout); - actionModeLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + actionModeLayout.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); actionModeLayout.setAlpha(0.0f); actionModeLayout.setClickable(true); actionModeLayout.setVisibility(INVISIBLE); @@ -1474,8 +1482,8 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter closeButton = new ImageView(context); closeButton.setScaleType(ImageView.ScaleType.CENTER); closeButton.setImageDrawable(backDrawable = new BackDrawable(true)); - backDrawable.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); - closeButton.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), 1)); + backDrawable.setColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText2)); + closeButton.setBackground(Theme.createSelectorDrawable(getThemedColor(Theme.key_actionBarActionModeDefaultSelector), 1)); closeButton.setContentDescription(LocaleController.getString("Close", R.string.Close)); actionModeLayout.addView(closeButton, new LinearLayout.LayoutParams(AndroidUtilities.dp(54), ViewGroup.LayoutParams.MATCH_PARENT)); actionModeViews.add(closeButton); @@ -1484,12 +1492,12 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter selectedMessagesCountTextView = new NumberTextView(context); selectedMessagesCountTextView.setTextSize(18); selectedMessagesCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - selectedMessagesCountTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); + selectedMessagesCountTextView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText2)); actionModeLayout.addView(selectedMessagesCountTextView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 18, 0, 0, 0)); actionModeViews.add(selectedMessagesCountTextView); if (!DialogObject.isEncryptedDialog(dialog_id)) { - gotoItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false); + gotoItem = new ActionBarMenuItem(context, null, getThemedColor(Theme.key_actionBarActionModeDefaultSelector), getThemedColor(Theme.key_windowBackgroundWhiteGrayText2), false); gotoItem.setIcon(R.drawable.msg_message); gotoItem.setContentDescription(LocaleController.getString("AccDescrGoToMessage", R.string.AccDescrGoToMessage)); gotoItem.setDuplicateParentStateEnabled(false); @@ -1497,7 +1505,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter actionModeViews.add(gotoItem); gotoItem.setOnClickListener(v -> onActionBarItemClick(v, gotochat)); - forwardItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false); + forwardItem = new ActionBarMenuItem(context, null, getThemedColor(Theme.key_actionBarActionModeDefaultSelector), getThemedColor(Theme.key_windowBackgroundWhiteGrayText2), false); forwardItem.setIcon(R.drawable.msg_forward); forwardItem.setContentDescription(LocaleController.getString("Forward", R.string.Forward)); forwardItem.setDuplicateParentStateEnabled(false); @@ -1507,7 +1515,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter updateForwardItem(); } - deleteItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false); + deleteItem = new ActionBarMenuItem(context, null, getThemedColor(Theme.key_actionBarActionModeDefaultSelector), getThemedColor(Theme.key_windowBackgroundWhiteGrayText2), false); deleteItem.setIcon(R.drawable.msg_delete); deleteItem.setContentDescription(LocaleController.getString("Delete", R.string.Delete)); deleteItem.setDuplicateParentStateEnabled(false); @@ -2188,7 +2196,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter @Override protected void onDraw(Canvas canvas) { - backgroundPaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + backgroundPaint.setColor(getThemedColor(Theme.key_windowBackgroundWhite)); canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), backgroundPaint); super.onDraw(canvas); } @@ -2221,7 +2229,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter floatingDateView.setTranslationY(-AndroidUtilities.dp(48)); addView(floatingDateView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 48 + 4, 0, 0)); - addView(fragmentContextView = new FragmentContextView(context, parent, this, false, null), LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 0)); + addView(fragmentContextView = new FragmentContextView(context, parent, this, false, resourcesProvider), LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 0)); fragmentContextView.setDelegate((start, show) -> { if (!start) { requestLayout(); @@ -2232,7 +2240,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter addView(actionModeLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.TOP)); shadowLine = new View(context); - shadowLine.setBackgroundColor(Theme.getColor(Theme.key_divider)); + shadowLine.setBackgroundColor(getThemedColor(Theme.key_divider)); FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1); layoutParams.topMargin = AndroidUtilities.dp(48) - 1; addView(shadowLine, layoutParams); @@ -2276,7 +2284,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter if (noforwards && forwardItem.getBackground() != null) { forwardItem.setBackground(null); } else if (!noforwards && forwardItem.getBackground() == null) { - forwardItem.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), 5)); + forwardItem.setBackground(Theme.createSelectorDrawable(getThemedColor(Theme.key_actionBarActionModeDefaultSelector), 5)); } } private boolean hasNoforwardsMessage() { @@ -2642,12 +2650,12 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter } private ScrollSlidingTextTabStripInner createScrollingTextTabStrip(Context context) { - ScrollSlidingTextTabStripInner scrollSlidingTextTabStrip = new ScrollSlidingTextTabStripInner(context); + ScrollSlidingTextTabStripInner scrollSlidingTextTabStrip = new ScrollSlidingTextTabStripInner(context, resourcesProvider); if (initialTab != -1) { scrollSlidingTextTabStrip.setInitialTabId(initialTab); initialTab = -1; } - scrollSlidingTextTabStrip.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + scrollSlidingTextTabStrip.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); scrollSlidingTextTabStrip.setColors(Theme.key_profile_tabSelectedLine, Theme.key_profile_tabSelectedText, Theme.key_profile_tabText, Theme.key_profile_tabSelector); scrollSlidingTextTabStrip.setDelegate(new ScrollSlidingTextTabStrip.ScrollSlidingTabStripDelegate() { @Override @@ -3159,7 +3167,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter showActionMode(false); actionBar.closeSearchField(); cantDeleteMessagesCount = 0; - }, null, null); + }, null, resourcesProvider); } else if (id == forward) { if (info != null) { TLRPC.Chat chat = profileActivity.getMessagesController().getChat(info.id); @@ -3212,6 +3220,17 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter profileActivity.getSendMessagesHelper().sendMessage(fmessages, did, false, false, true, 0); } fragment1.finishFragment(); + UndoView undoView = null; + if (profileActivity instanceof ProfileActivity) { + undoView = ((ProfileActivity) profileActivity).getUndoView(); + } + if (undoView != null) { + if (dids.size() == 1) { + undoView.showWithAction(dids.get(0), UndoView.ACTION_FWD_MESSAGES, fmessages.size()); + } else { + undoView.showWithAction(0, UndoView.ACTION_FWD_MESSAGES, fmessages.size(), dids.size(), null, null); + } + } } else { long did = dids.get(0); Bundle args1 = new Bundle(); @@ -4853,7 +4872,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter public View getSectionHeaderView(int section, View view) { if (view == null) { view = new GraySectionCell(mContext); - view.setBackgroundColor(Theme.getColor(Theme.key_graySection) & 0xf2ffffff); + view.setBackgroundColor(getThemedColor(Theme.key_graySection) & 0xf2ffffff); } if (section == 0) { view.setAlpha(0.0f); @@ -4872,19 +4891,19 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter View view; switch (viewType) { case 0: - view = new GraySectionCell(mContext); + view = new GraySectionCell(mContext, resourcesProvider); break; case 1: - view = new SharedLinkCell(mContext); + view = new SharedLinkCell(mContext, SharedLinkCell.VIEW_TYPE_DEFAULT, resourcesProvider); ((SharedLinkCell) view).setDelegate(sharedLinkCellDelegate); break; case 3: - View emptyStubView = createEmptyStubView(mContext, 3, dialog_id); + View emptyStubView = createEmptyStubView(mContext, 3, dialog_id, resourcesProvider); emptyStubView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return new RecyclerListView.Holder(emptyStubView); case 2: default: - FlickerLoadingView flickerLoadingView = new FlickerLoadingView(mContext); + FlickerLoadingView flickerLoadingView = new FlickerLoadingView(mContext, resourcesProvider); flickerLoadingView.setIsSingleCell(true); flickerLoadingView.showDate(false); flickerLoadingView.setViewType(FlickerLoadingView.LINKS_TYPE); @@ -4998,12 +5017,12 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter View view; switch (viewType) { case 1: - SharedDocumentCell cell = new SharedDocumentCell(mContext); + SharedDocumentCell cell = new SharedDocumentCell(mContext, SharedDocumentCell.VIEW_TYPE_DEFAULT, resourcesProvider); cell.setGlobalGradientView(globalGradientView); view = cell; break; case 2: - FlickerLoadingView flickerLoadingView = new FlickerLoadingView(mContext); + FlickerLoadingView flickerLoadingView = new FlickerLoadingView(mContext, resourcesProvider); view = flickerLoadingView; if (currentType == 2) { flickerLoadingView.setViewType(FlickerLoadingView.AUDIO_TYPE); @@ -5015,7 +5034,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter flickerLoadingView.setGlobalGradientView(globalGradientView); break; case 4: - View emptyStubView = createEmptyStubView(mContext, currentType, dialog_id); + View emptyStubView = createEmptyStubView(mContext, currentType, dialog_id, resourcesProvider); emptyStubView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return new RecyclerListView.Holder(emptyStubView); case 3: @@ -5028,7 +5047,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter p.removeView(view); } } else { - view = new SharedAudioCell(mContext) { + view = new SharedAudioCell(mContext, SharedAudioCell.VIEW_TYPE_DEFAULT, resourcesProvider) { @Override public boolean needPlayMessage(MessageObject messageObject) { if (messageObject.isVoice() || messageObject.isRoundVideo()) { @@ -5160,45 +5179,39 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter } } - public static View createEmptyStubView(Context context, int currentType, long dialog_id) { - EmptyStubView emptyStubView = new EmptyStubView(context); + public static View createEmptyStubView(Context context, int currentType, long dialog_id, Theme.ResourcesProvider resourcesProvider) { + EmptyStubView emptyStubView = new EmptyStubView(context, resourcesProvider); if (currentType == 0) { - emptyStubView.emptyImageView.setImageResource(R.drawable.tip1); if (DialogObject.isEncryptedDialog(dialog_id)) { emptyStubView.emptyTextView.setText(LocaleController.getString("NoMediaSecret", R.string.NoMediaSecret)); } else { emptyStubView.emptyTextView.setText(LocaleController.getString("NoMedia", R.string.NoMedia)); } } else if (currentType == 1) { - emptyStubView.emptyImageView.setImageResource(R.drawable.tip2); if (DialogObject.isEncryptedDialog(dialog_id)) { emptyStubView.emptyTextView.setText(LocaleController.getString("NoSharedFilesSecret", R.string.NoSharedFilesSecret)); } else { emptyStubView.emptyTextView.setText(LocaleController.getString("NoSharedFiles", R.string.NoSharedFiles)); } } else if (currentType == 2) { - emptyStubView.emptyImageView.setImageResource(R.drawable.tip5); if (DialogObject.isEncryptedDialog(dialog_id)) { emptyStubView.emptyTextView.setText(LocaleController.getString("NoSharedVoiceSecret", R.string.NoSharedVoiceSecret)); } else { emptyStubView.emptyTextView.setText(LocaleController.getString("NoSharedVoice", R.string.NoSharedVoice)); } } else if (currentType == 3) { - emptyStubView.emptyImageView.setImageResource(R.drawable.tip3); if (DialogObject.isEncryptedDialog(dialog_id)) { emptyStubView.emptyTextView.setText(LocaleController.getString("NoSharedLinksSecret", R.string.NoSharedLinksSecret)); } else { emptyStubView.emptyTextView.setText(LocaleController.getString("NoSharedLinks", R.string.NoSharedLinks)); } } else if (currentType == 4) { - emptyStubView.emptyImageView.setImageResource(R.drawable.tip4); if (DialogObject.isEncryptedDialog(dialog_id)) { emptyStubView.emptyTextView.setText(LocaleController.getString("NoSharedAudioSecret", R.string.NoSharedAudioSecret)); } else { emptyStubView.emptyTextView.setText(LocaleController.getString("NoSharedAudio", R.string.NoSharedAudio)); } } else if (currentType == 5) { - emptyStubView.emptyImageView.setImageResource(R.drawable.tip1); if (DialogObject.isEncryptedDialog(dialog_id)) { emptyStubView.emptyTextView.setText(LocaleController.getString("NoSharedGifSecret", R.string.NoSharedGifSecret)); } else { @@ -5221,7 +5234,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter boolean ignoreRequestLayout; - public EmptyStubView(Context context) { + public EmptyStubView(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); emptyTextView = new TextView(context); emptyImageView = new ImageView(context); @@ -5231,7 +5244,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter addView(emptyImageView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); - emptyTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); + emptyTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2, resourcesProvider)); emptyTextView.setGravity(Gravity.CENTER); emptyTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17); emptyTextView.setPadding(AndroidUtilities.dp(40), 0, AndroidUtilities.dp(40), AndroidUtilities.dp(128)); @@ -5329,7 +5342,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter switch (viewType) { case 0: if (sharedResources == null) { - sharedResources = new SharedPhotoVideoCell2.SharedResources(parent.getContext()); + sharedResources = new SharedPhotoVideoCell2.SharedResources(parent.getContext(), resourcesProvider); } view = new SharedPhotoVideoCell2(mContext, sharedResources, profileActivity.getCurrentAccount()); SharedPhotoVideoCell2 cell = (SharedPhotoVideoCell2) view; @@ -5337,7 +5350,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter break; default: case 2: - View emptyStubView = createEmptyStubView(mContext, 0, dialog_id); + View emptyStubView = createEmptyStubView(mContext, 0, dialog_id, resourcesProvider); emptyStubView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return new RecyclerListView.Holder(emptyStubView); } @@ -5608,6 +5621,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter for (int a = 0; a < mediaPages.length; a++) { if (mediaPages[a].selectedType == currentType) { if (searchesInProgress == 0 && count == 0) { + mediaPages[a].emptyView.title.setText(LocaleController.formatString(R.string.NoResultFoundFor, "NoResultFoundFor", query)); mediaPages[a].emptyView.showProgress(false, true); } else if (oldItemCounts == 0) { animateItemsEnter(mediaPages[a].listView, 0, null); @@ -5746,6 +5760,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter for (int a = 0; a < mediaPages.length; a++) { if (mediaPages[a].selectedType == currentType) { if (searchesInProgress == 0 && count == 0) { + mediaPages[a].emptyView.title.setText(LocaleController.getString("NoResult", R.string.NoResult)); mediaPages[a].emptyView.showProgress(false, true); } else if (oldItemCount == 0) { animateItemsEnter(mediaPages[a].listView, 0, null); @@ -5796,9 +5811,9 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view; if (currentType == 1) { - view = new SharedDocumentCell(mContext); + view = new SharedDocumentCell(mContext, SharedDocumentCell.VIEW_TYPE_DEFAULT, resourcesProvider); } else if (currentType == 4) { - view = new SharedAudioCell(mContext) { + view = new SharedAudioCell(mContext, SharedAudioCell.VIEW_TYPE_DEFAULT, resourcesProvider) { @Override public boolean needPlayMessage(MessageObject messageObject) { if (messageObject.isVoice() || messageObject.isRoundVideo()) { @@ -5815,7 +5830,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter } }; } else { - view = new SharedLinkCell(mContext); + view = new SharedLinkCell(mContext, SharedLinkCell.VIEW_TYPE_DEFAULT, resourcesProvider); ((SharedLinkCell) view).setDelegate(sharedLinkCellDelegate); } view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); @@ -5900,11 +5915,11 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == 1) { - View emptyStubView = createEmptyStubView(mContext, 5, dialog_id); + View emptyStubView = createEmptyStubView(mContext, 5, dialog_id, resourcesProvider); emptyStubView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return new RecyclerListView.Holder(emptyStubView); } - ContextLinkCell cell = new ContextLinkCell(mContext, true); + ContextLinkCell cell = new ContextLinkCell(mContext, true, resourcesProvider); cell.setCanPreviewGif(true); return new RecyclerListView.Holder(cell); } @@ -6026,15 +6041,15 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter View view; switch (viewType) { case 0: - view = new ProfileSearchCell(mContext); + view = new ProfileSearchCell(mContext, resourcesProvider); break; case 2: - View emptyStubView = createEmptyStubView(mContext, 6, dialog_id); + View emptyStubView = createEmptyStubView(mContext, 6, dialog_id, resourcesProvider); emptyStubView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return new RecyclerListView.Holder(emptyStubView); case 1: default: - FlickerLoadingView flickerLoadingView = new FlickerLoadingView(mContext); + FlickerLoadingView flickerLoadingView = new FlickerLoadingView(mContext, resourcesProvider); flickerLoadingView.setIsSingleCell(true); flickerLoadingView.showDate(false); flickerLoadingView.setViewType(FlickerLoadingView.DIALOG_TYPE); @@ -6094,11 +6109,11 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == 1) { - View emptyStubView = createEmptyStubView(mContext, 7, dialog_id); + View emptyStubView = createEmptyStubView(mContext, 7, dialog_id, resourcesProvider); emptyStubView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return new RecyclerListView.Holder(emptyStubView); } - View view = new UserCell(mContext, 9, 0, true); + View view = new UserCell(mContext, 9, 0, true, false, resourcesProvider); view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); return new RecyclerListView.Holder(view); } @@ -6357,8 +6372,8 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - ManageChatUserCell view = new ManageChatUserCell(mContext, 9, 5, true); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + ManageChatUserCell view = new ManageChatUserCell(mContext, 9, 5, true, resourcesProvider); + view.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); view.setDelegate((cell, click) -> { TLObject object = getItem((Integer) cell.getTag()); if (object instanceof TLRPC.ChannelParticipant) { @@ -6394,7 +6409,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter name = new SpannableStringBuilder(u); int idx = AndroidUtilities.indexOfIgnoreCase(u, nameSearch); if (idx != -1) { - name.setSpan(new ForegroundColorSpan(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText4)), idx, idx + nameSearch.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + name.setSpan(new ForegroundColorSpan(getThemedColor(Theme.key_windowBackgroundWhiteBlueText4)), idx, idx + nameSearch.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } } @@ -6599,8 +6614,8 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter public int backgroundColor = Color.TRANSPARENT; - public ScrollSlidingTextTabStripInner(Context context) { - super(context); + public ScrollSlidingTextTabStripInner(Context context, Theme.ResourcesProvider resourcesProvider) { + super(context, resourcesProvider); } protected void drawBackground(Canvas canvas) { @@ -6621,6 +6636,11 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter } } + private int getThemedColor(String key) { + Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null; + return color != null ? color : Theme.getColor(key); + } + public interface Delegate { void scrollToSharedMedia(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SideMenultItemAnimator.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SideMenultItemAnimator.java index d1658cf6b..bc072a9fb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SideMenultItemAnimator.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SideMenultItemAnimator.java @@ -311,7 +311,7 @@ public class SideMenultItemAnimator extends SimpleItemAnimator { final RecyclerView.ViewHolder newHolder = changeInfo.newHolder; final View newView = newHolder != null ? newHolder.itemView : null; if (view != null) { - final ViewPropertyAnimator oldViewAnim = view.animate().setDuration(getChangeDuration()); + final ViewPropertyAnimator oldViewAnim = view.animate().setDuration(getChangeRemoveDuration()); mChangeAnimations.add(changeInfo.oldHolder); oldViewAnim.translationX(changeInfo.toX - changeInfo.fromX); oldViewAnim.translationY(changeInfo.toY - changeInfo.fromY); @@ -336,7 +336,8 @@ public class SideMenultItemAnimator extends SimpleItemAnimator { if (newView != null) { final ViewPropertyAnimator newViewAnimation = newView.animate(); mChangeAnimations.add(changeInfo.newHolder); - newViewAnimation.translationX(0).translationY(0).setDuration(getChangeDuration()).alpha(1).setListener(new AnimatorListenerAdapter() { + newViewAnimation.translationX(0).translationY(0).setDuration(getChangeAddDuration()) + .setStartDelay(getChangeDuration() - getChangeAddDuration()).alpha(1).setListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animator) { dispatchChangeStarting(changeInfo.newHolder, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SimpleThemeDescription.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SimpleThemeDescription.java index fe675b154..39efa4c62 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SimpleThemeDescription.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SimpleThemeDescription.java @@ -7,10 +7,14 @@ import java.util.ArrayList; public class SimpleThemeDescription { private SimpleThemeDescription() {} + public static ThemeDescription createThemeDescription(ThemeDescription.ThemeDescriptionDelegate del, String key) { + return new ThemeDescription(null, 0, null, null, null, del, key); + } + public static ArrayList createThemeDescriptions(ThemeDescription.ThemeDescriptionDelegate del, String... keys) { ArrayList l = new ArrayList<>(keys.length); for (String k : keys) { - l.add(new ThemeDescription(null, 0, null, null, null, del, k)); + l.add(createThemeDescription(del, k)); } return l; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SlideChooseView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SlideChooseView.java index c6bf352de..d0bfeb7ab 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SlideChooseView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SlideChooseView.java @@ -1,15 +1,27 @@ package org.telegram.ui.Components; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.TimeInterpolator; +import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Canvas; import android.graphics.DashPathEffect; +import android.graphics.Interpolator; import android.graphics.Paint; import android.os.Bundle; +import android.os.SystemClock; import android.text.TextPaint; +import android.view.HapticFeedbackConstants; import android.view.MotionEvent; import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; +import android.view.animation.LinearInterpolator; +import androidx.core.graphics.ColorUtils; +import androidx.core.math.MathUtils; + +import org.checkerframework.checker.units.qual.A; import org.telegram.messenger.AndroidUtilities; import org.telegram.ui.ActionBar.Theme; @@ -31,7 +43,6 @@ public class SlideChooseView extends View { private boolean moving; private boolean startMoving; - private float startX; private float xTouchDown; private float yTouchDown; @@ -41,10 +52,15 @@ public class SlideChooseView extends View { private int[] optionsSizes; private int selectedIndex; + private float selectedIndexTouch; + private AnimatedFloat selectedIndexAnimatedHolder = new AnimatedFloat(this, 120, CubicBezierInterpolator.DEFAULT); + private AnimatedFloat movingAnimatedHolder = new AnimatedFloat(this, 150, CubicBezierInterpolator.DEFAULT); private Callback callback; private final Theme.ResourcesProvider resourcesProvider; + private boolean touchWasClose = false; + public SlideChooseView(Context context) { this(context, null); } @@ -105,18 +121,18 @@ public class SlideChooseView extends View { public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); + float indexTouch = MathUtils.clamp((x - sideSide + circleSize / 2f) / (lineSize + gapSize * 2 + circleSize), 0, optionsStr.length - 1); + boolean isClose = Math.abs(indexTouch - Math.round(indexTouch)) < .35f; + if (isClose) { + indexTouch = Math.round(indexTouch); + } if (event.getAction() == MotionEvent.ACTION_DOWN) { xTouchDown = x; yTouchDown = y; - for (int a = 0; a < optionsStr.length; a++) { - int cx = sideSide + (lineSize + gapSize * 2 + circleSize) * a + circleSize / 2; - if (x > cx - AndroidUtilities.dp(15) && x < cx + AndroidUtilities.dp(15)) { - startMoving = a == selectedIndex; - startX = x; - startMovingPreset = selectedIndex; - break; - } - } + selectedIndexTouch = indexTouch; + startMovingPreset = selectedIndex; + startMoving = true; + invalidate(); } else if (event.getAction() == MotionEvent.ACTION_MOVE) { if (!moving) { if (Math.abs(xTouchDown - x) > Math.abs(yTouchDown - y)) { @@ -124,32 +140,24 @@ public class SlideChooseView extends View { } } if (startMoving) { - if (Math.abs(startX - x) >= AndroidUtilities.getPixelsInCM(0.5f, true)) { + if (Math.abs(xTouchDown - x) >= AndroidUtilities.dp(2)) { moving = true; startMoving = false; } - } else if (moving) { - for (int a = 0; a < optionsStr.length; a++) { - int cx = sideSide + (lineSize + gapSize * 2 + circleSize) * a + circleSize / 2; - int diff = lineSize / 2 + circleSize / 2 + gapSize; - if (x > cx - diff && x < cx + diff) { - if (selectedIndex != a) { - setOption(a); - } - break; - } + } + if (moving) { + selectedIndexTouch = indexTouch; + invalidate(); + if (Math.round(selectedIndexTouch) != selectedIndex && isClose) { + setOption(Math.round(selectedIndexTouch)); } } + invalidate(); } else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { if (!moving) { - for (int a = 0; a < 5; a++) { - int cx = sideSide + (lineSize + gapSize * 2 + circleSize) * a + circleSize / 2; - if (x > cx - AndroidUtilities.dp(15) && x < cx + AndroidUtilities.dp(15)) { - if (selectedIndex != a) { - setOption(a); - } - break; - } + selectedIndexTouch = indexTouch; + if (Math.round(selectedIndexTouch) != selectedIndex) { + setOption(Math.round(selectedIndexTouch)); } } else { if (selectedIndex != startMovingPreset) { @@ -161,12 +169,18 @@ public class SlideChooseView extends View { } startMoving = false; moving = false; + invalidate(); getParent().requestDisallowInterceptTouchEvent(false); } return true; } private void setOption(int index) { + if (selectedIndex != index) { + try { + performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } catch (Exception ignore) {} + } selectedIndex = index; if (callback != null) { callback.onOptionSelected(index); @@ -185,15 +199,18 @@ public class SlideChooseView extends View { @Override protected void onDraw(Canvas canvas) { - textPaint.setColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText)); + float selectedIndexAnimated = selectedIndexAnimatedHolder.set(selectedIndex); + float movingAnimated = movingAnimatedHolder.set(moving ? 1 : 0); int cy = getMeasuredHeight() / 2 + AndroidUtilities.dp(11); for (int a = 0; a < optionsStr.length; a++) { int cx = sideSide + (lineSize + gapSize * 2 + circleSize) * a + circleSize / 2; - int color = a <= selectedIndex ? getThemedColor(Theme.key_switchTrackChecked) : getThemedColor(Theme.key_switchTrack); + float t = Math.max(0, 1f - Math.abs(a - selectedIndexAnimated)); + float ut = MathUtils.clamp(selectedIndexAnimated - a + 1f, 0, 1); + int color = ColorUtils.blendARGB(getThemedColor(Theme.key_switchTrack), getThemedColor(Theme.key_switchTrackChecked), ut); paint.setColor(color); linePaint.setColor(color); - canvas.drawCircle(cx, cy, a == selectedIndex ? AndroidUtilities.dp(6) : circleSize / 2, paint); + canvas.drawCircle(cx, cy, AndroidUtilities.lerp(circleSize / 2, AndroidUtilities.dp(6), t), paint); if (a != 0) { int x = cx - circleSize / 2 - gapSize - lineSize; int width = lineSize; @@ -208,18 +225,16 @@ public class SlideChooseView extends View { } canvas.drawLine(x + AndroidUtilities.dp(1), cy, x + width - AndroidUtilities.dp(1), cy, linePaint); } else { - if (a == selectedIndex || a == selectedIndex + 1) { - width -= AndroidUtilities.dp(3); - } - if (a == selectedIndex + 1) { - x += AndroidUtilities.dp(3); - } + float nt = MathUtils.clamp(1f - Math.abs(a - selectedIndexAnimated - 1), 0, 1); + float nct = MathUtils.clamp(1f - Math.min(Math.abs(a - selectedIndexAnimated), Math.abs(a - selectedIndexAnimated - 1)), 0, 1); + width -= AndroidUtilities.dp(3) * nct; + x += AndroidUtilities.dp(3) * nt; canvas.drawRect(x, cy - AndroidUtilities.dp(1), x + width, cy + AndroidUtilities.dp(1), paint); } } int size = optionsSizes[a]; String text = optionsStr[a]; - + textPaint.setColor(ColorUtils.blendARGB(getThemedColor(Theme.key_windowBackgroundWhiteGrayText), getThemedColor(Theme.key_windowBackgroundWhiteBlueText), t)); if (a == 0) { canvas.drawText(text, AndroidUtilities.dp(22), AndroidUtilities.dp(28), textPaint); } else if (a == optionsStr.length - 1) { @@ -228,6 +243,12 @@ public class SlideChooseView extends View { canvas.drawText(text, cx - size / 2, AndroidUtilities.dp(28), textPaint); } } + + float cx = sideSide + (lineSize + gapSize * 2 + circleSize) * selectedIndexAnimated + circleSize / 2; + paint.setColor(ColorUtils.setAlphaComponent(getThemedColor(Theme.key_switchTrackChecked), 80)); + canvas.drawCircle(cx, cy, AndroidUtilities.dp(12 * movingAnimated), paint); + paint.setColor(getThemedColor(Theme.key_switchTrackChecked)); + canvas.drawCircle(cx, cy, AndroidUtilities.dp(6), paint); } @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SlotsDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SlotsDrawable.java index cdfdbce66..f26bb057b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SlotsDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SlotsDrawable.java @@ -8,6 +8,7 @@ import org.telegram.messenger.DownloadController; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.MessageObject; +import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Cells.ChatMessageCell; @@ -218,7 +219,7 @@ public class SlotsDrawable extends RLottieDrawable { num = 2; } TLRPC.Document document = stickerSet.documents.get(num); - File path = FileLoader.getPathToAttach(document, true); + File path = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true); String json = readRes(path, 0); if (TextUtils.isEmpty(json)) { loading = true; @@ -328,7 +329,7 @@ public class SlotsDrawable extends RLottieDrawable { } } TLRPC.Document document = stickerSet.documents.get(num); - File path = FileLoader.getPathToAttach(document, true); + File path = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true); String json = readRes(path, 0); if (TextUtils.isEmpty(json)) { loading = true; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerEmptyView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerEmptyView.java index ed56122c1..5c33d5134 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerEmptyView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerEmptyView.java @@ -20,6 +20,7 @@ import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.SvgHelper; import org.telegram.messenger.UserConfig; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.AdjustPanLayoutHelper; import org.telegram.ui.ActionBar.Theme; public class StickerEmptyView extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { @@ -103,7 +104,7 @@ public class StickerEmptyView extends FrameLayout implements NotificationCenter. subtitle.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); subtitle.setGravity(Gravity.CENTER); - linearLayout.addView(stickerView, LayoutHelper.createLinear(130, 130, Gravity.CENTER_HORIZONTAL)); + linearLayout.addView(stickerView, LayoutHelper.createLinear(117, 117, Gravity.CENTER_HORIZONTAL)); linearLayout.addView(title, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 0, 12, 0, 0)); linearLayout.addView(subtitle, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 0, 8, 0, 0)); addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER, 56, 0, 56, 30)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerMasksAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerMasksAlert.java index e1bdd5a85..95c94a063 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerMasksAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerMasksAlert.java @@ -288,6 +288,7 @@ public class StickerMasksAlert extends BottomSheet implements NotificationCenter behindKeyboardColorKey = null; behindKeyboardColor = 0xff252525; useLightStatusBar = false; + fixNavigationBar(0xff252525); currentType = MediaDataController.TYPE_IMAGE; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerSetBulletinLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerSetBulletinLayout.java index b7fc43321..74e2b6b96 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerSetBulletinLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerSetBulletinLayout.java @@ -1,20 +1,27 @@ package org.telegram.ui.Components; import android.annotation.SuppressLint; +import android.app.Activity; import android.content.Context; import androidx.annotation.IntDef; import androidx.annotation.NonNull; +import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.BuildVars; import org.telegram.messenger.FileLoader; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; +import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; +import org.telegram.ui.LaunchActivity; +import org.telegram.ui.PremiumPreviewFragment; import java.util.ArrayList; @@ -28,9 +35,12 @@ public class StickerSetBulletinLayout extends Bulletin.TwoLineLayout { public static final int TYPE_REMOVED_FROM_RECENT = 3; public static final int TYPE_REMOVED_FROM_FAVORITES = 4; public static final int TYPE_ADDED_TO_FAVORITES = 5; + public static final int TYPE_REPLACED_TO_FAVORITES = 6; + public static final int TYPE_REPLACED_TO_FAVORITES_GIFS = 7; - @IntDef(value = {TYPE_EMPTY, TYPE_REMOVED, TYPE_ARCHIVED, TYPE_ADDED, TYPE_REMOVED_FROM_RECENT, TYPE_REMOVED_FROM_FAVORITES, TYPE_ADDED_TO_FAVORITES}) - public @interface Type {} + @IntDef(value = {TYPE_EMPTY, TYPE_REMOVED, TYPE_ARCHIVED, TYPE_ADDED, TYPE_REMOVED_FROM_RECENT, TYPE_REMOVED_FROM_FAVORITES, TYPE_ADDED_TO_FAVORITES, TYPE_REPLACED_TO_FAVORITES}) + public @interface Type { + } public StickerSetBulletinLayout(@NonNull Context context, TLObject setObject, @Type int type) { this(context, setObject, type, null, null); @@ -89,7 +99,7 @@ public class StickerSetBulletinLayout extends Bulletin.TwoLineLayout { imageLocation = ImageLocation.getForSticker(thumb, sticker, thumbVersion); } - if (object instanceof TLRPC.Document && MessageObject.isAnimatedStickerDocument(sticker, true) || MessageObject.isVideoSticker(sticker)) { + if (object instanceof TLRPC.Document && MessageObject.isAnimatedStickerDocument(sticker, true) || MessageObject.isVideoSticker(sticker) || MessageObject.isGifDocument(sticker)) { imageView.setImage(ImageLocation.getForDocument(sticker), "50_50", imageLocation, null, 0, setObject); } else if (imageLocation != null && imageLocation.imageType == FileLoader.IMAGE_TYPE_LOTTIE) { imageView.setImage(imageLocation, "50_50", "tgs", null, setObject); @@ -136,6 +146,36 @@ public class StickerSetBulletinLayout extends Bulletin.TwoLineLayout { titleTextView.setText(LocaleController.getString("AddedToFavorites", R.string.AddedToFavorites)); subtitleTextView.setVisibility(ViewPagerFixed.GONE); break; + case TYPE_REPLACED_TO_FAVORITES: + if (!UserConfig.getInstance(UserConfig.selectedAccount).isPremium() && !MessagesController.getInstance(UserConfig.selectedAccount).premiumLocked) { + titleTextView.setText(LocaleController.formatString("LimitReachedFavoriteStickers", R.string.LimitReachedFavoriteStickers, MessagesController.getInstance(UserConfig.selectedAccount).stickersFavedLimitDefault)); + CharSequence str = AndroidUtilities.replaceSingleTag(LocaleController.formatString("LimitReachedFavoriteStickersSubtitle", R.string.LimitReachedFavoriteStickersSubtitle, MessagesController.getInstance(UserConfig.selectedAccount).stickersFavedLimitPremium), () -> { + Activity activity = AndroidUtilities.findActivity(context); + if (activity instanceof LaunchActivity) { + ((LaunchActivity) activity).presentFragment(new PremiumPreviewFragment(LimitReachedBottomSheet.limitTypeToServerString(LimitReachedBottomSheet.TYPE_STICKERS))); + } + }); + subtitleTextView.setText(str); + } else { + titleTextView.setText(LocaleController.formatString("LimitReachedFavoriteStickers", R.string.LimitReachedFavoriteStickers, MessagesController.getInstance(UserConfig.selectedAccount).stickersFavedLimitPremium)); + subtitleTextView.setText(LocaleController.formatString("LimitReachedFavoriteStickersSubtitlePremium", R.string.LimitReachedFavoriteStickersSubtitlePremium)); + } + break; + case TYPE_REPLACED_TO_FAVORITES_GIFS: + if (!UserConfig.getInstance(UserConfig.selectedAccount).isPremium() && !MessagesController.getInstance(UserConfig.selectedAccount).premiumLocked) { + titleTextView.setText(LocaleController.formatString("LimitReachedFavoriteGifs", R.string.LimitReachedFavoriteGifs, MessagesController.getInstance(UserConfig.selectedAccount).savedGifsLimitDefault)); + CharSequence str = AndroidUtilities.replaceSingleTag(LocaleController.formatString("LimitReachedFavoriteGifsSubtitle", R.string.LimitReachedFavoriteGifsSubtitle, MessagesController.getInstance(UserConfig.selectedAccount).savedGifsLimitPremium), () -> { + Activity activity = AndroidUtilities.findActivity(context); + if (activity instanceof LaunchActivity) { + ((LaunchActivity) activity).presentFragment(new PremiumPreviewFragment(LimitReachedBottomSheet.limitTypeToServerString(LimitReachedBottomSheet.TYPE_GIFS))); + } + }); + subtitleTextView.setText(str); + } else { + titleTextView.setText(LocaleController.formatString("LimitReachedFavoriteGifs", R.string.LimitReachedFavoriteGifs, MessagesController.getInstance(UserConfig.selectedAccount).savedGifsLimitPremium)); + subtitleTextView.setText(LocaleController.formatString("LimitReachedFavoriteGifsSubtitlePremium", R.string.LimitReachedFavoriteGifsSubtitlePremium)); + } + break; case TYPE_REMOVED_FROM_RECENT: titleTextView.setText(LocaleController.getString("RemovedFromRecent", R.string.RemovedFromRecent)); subtitleTextView.setVisibility(ViewPagerFixed.GONE); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerTabView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerTabView.java index 314d9f4db..68aafa711 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerTabView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerTabView.java @@ -4,7 +4,6 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.content.Context; -import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; @@ -24,6 +23,11 @@ public class StickerTabView extends FrameLayout { public final static int ICON_TYPE = 1; public final static int EMOJI_TYPE = 2; + public final static int SMALL_WIDTH = 38; + public final static int SMALL_HEIGHT = 36; + + private final static int IMAGE_SMALL_SIZE = 26; + public int type; public float dragOffset; public boolean inited; @@ -51,7 +55,7 @@ public class StickerTabView extends FrameLayout { imageView = new BackupImageView(getContext()); imageView.setLayerNum(1); imageView.setAspectFit(false); - addView(imageView, LayoutHelper.createFrame(36, 36, Gravity.CENTER)); + addView(imageView, LayoutHelper.createFrame(IMAGE_SMALL_SIZE, IMAGE_SMALL_SIZE, Gravity.CENTER)); visibleView = imageView; } else if (type == ICON_TYPE) { iconView = new ImageView(context); @@ -62,7 +66,7 @@ public class StickerTabView extends FrameLayout { imageView = new BackupImageView(getContext()); imageView.setLayerNum(1); imageView.setAspectFit(true); - addView(imageView, LayoutHelper.createFrame(30, 30, Gravity.CENTER)); + addView(imageView, LayoutHelper.createFrame(IMAGE_SMALL_SIZE, IMAGE_SMALL_SIZE, Gravity.CENTER)); visibleView = imageView; } @@ -82,7 +86,7 @@ public class StickerTabView extends FrameLayout { return; } this.expanded = expanded; - float size = type == ICON_TYPE ? 24 : 30; + float size = type == ICON_TYPE ? 24 : IMAGE_SMALL_SIZE; float sizeExpanded = type == ICON_TYPE ? 38 : 56; visibleView.getLayoutParams().width = AndroidUtilities.dp(expanded ? sizeExpanded : size); @@ -100,12 +104,12 @@ public class StickerTabView extends FrameLayout { return; } if (expanded) { - float size = type == ICON_TYPE ? 24 : 30; + float size = type == ICON_TYPE ? 24 : IMAGE_SMALL_SIZE; float sizeExpanded = type == ICON_TYPE ? 38 : 56; - float fromX = AndroidUtilities.dp(52 - size) / 2f; - float fromY = AndroidUtilities.dp(48 - size) / 2f; + float fromX = AndroidUtilities.dp(SMALL_WIDTH - size) / 2f; + float fromY = AndroidUtilities.dp(SMALL_HEIGHT - size) / 2f; float toX = AndroidUtilities.dp(86 - sizeExpanded) / 2f; - float toY = AndroidUtilities.dp(48 + 50 - sizeExpanded) / 2f; + float toY = AndroidUtilities.dp(SMALL_HEIGHT + 50 - sizeExpanded) / 2f; visibleView.setTranslationY((fromY - toY) * (1 - expandProgress) - AndroidUtilities.dp(8) * expandProgress); visibleView.setTranslationX((fromX - toX) * (1 - expandProgress)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java index 2ce15059d..a53536368 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java @@ -16,8 +16,11 @@ import android.animation.ValueAnimator; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; -import android.graphics.*; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Rect; +import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; @@ -46,15 +49,18 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.MediaController; -import org.telegram.messenger.MediaDataController; import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.FileRefController; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaController; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; @@ -84,9 +90,6 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class StickersAlert extends BottomSheet implements NotificationCenter.NotificationCenterDelegate { public interface StickersAlertDelegate { @@ -100,6 +103,14 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not void onStickerSetUninstalled(); } + public interface StickersAlertCustomButtonDelegate { + String getCustomButtonTextColorKey(); + String getCustomButtonRippleColorKey(); + String getCustomButtonColorKey(); + String getCustomButtonText(); + boolean onCustomButtonPressed(); + } + private static class LinkMovementMethodMy extends LinkMovementMethod { @Override public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { @@ -122,6 +133,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not private TextView titleTextView; private ActionBarMenuItem optionsButton; private TextView pickerBottomLayout; + private FrameLayout pickerBottomFrameLayout; private FrameLayout stickerPreviewLayout; private TextView previewSendButton; private View previewSendButtonShadow; @@ -148,6 +160,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not private StickersAlertDelegate delegate; private StickersAlertInstallDelegate installDelegate; + private StickersAlertCustomButtonDelegate customButtonDelegate; private int scrollOffsetY; private int reqId; @@ -196,7 +209,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not @Override public boolean needSend() { - return previewSendButton.getVisibility() == View.VISIBLE && importingStickers == null; + return delegate != null; } @Override @@ -215,6 +228,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not public StickersAlert(Context context, Object parentObject, TLObject object, Theme.ResourcesProvider resourcesProvider) { super(context, false, resourcesProvider); + fixNavigationBar(); this.resourcesProvider = resourcesProvider; parentActivity = (Activity) context; final TLRPC.TL_messages_getAttachedStickers req = new TLRPC.TL_messages_getAttachedStickers(); @@ -280,6 +294,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not public StickersAlert(Context context, String software, ArrayList uris, ArrayList emoji, Theme.ResourcesProvider resourcesProvider) { super(context, false, resourcesProvider); + fixNavigationBar(); parentActivity = (Activity) context; importingStickers = uris; importingSoftware = software; @@ -360,6 +375,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not public StickersAlert(Context context, BaseFragment baseFragment, TLRPC.InputStickerSet set, TLRPC.TL_messages_stickerSet loadedSet, StickersAlertDelegate stickersAlertDelegate, Theme.ResourcesProvider resourcesProvider) { super(context, false, resourcesProvider); + fixNavigationBar(); delegate = stickersAlertDelegate; inputStickerSet = set; stickerSet = loadedSet; @@ -431,6 +447,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not optionsButton.setVisibility(View.VISIBLE); stickerSet = (TLRPC.TL_messages_stickerSet) response; showEmoji = !stickerSet.set.masks; + checkPremiumStickers(); mediaDataController.preloadStickerSetThumb(stickerSet); updateSendButton(); updateFields(); @@ -447,11 +464,22 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not adapter.notifyDataSetChanged(); } mediaDataController.preloadStickerSetThumb(stickerSet); + checkPremiumStickers(); } } if (stickerSet != null) { showEmoji = !stickerSet.set.masks; } + checkPremiumStickers(); + } + + private void checkPremiumStickers() { + if (stickerSet != null) { + stickerSet = MessagesController.getInstance(currentAccount).filterPremiumStickers(stickerSet); + if (stickerSet == null) { + dismiss(); + } + } } private void init(Context context) { @@ -485,12 +513,13 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not } itemSize = (MeasureSpec.getSize(widthMeasureSpec) - AndroidUtilities.dp(36)) / 5; int contentSize; + MarginLayoutParams params = (MarginLayoutParams) gridView.getLayoutParams(); if (importingStickers != null) { - contentSize = AndroidUtilities.dp(48 + 48) + Math.max(3, (int) Math.ceil(importingStickers.size() / 5.0f)) * AndroidUtilities.dp(82) + backgroundPaddingTop + AndroidUtilities.statusBarHeight; + contentSize = AndroidUtilities.dp(48) + params.bottomMargin + Math.max(3, (int) Math.ceil(importingStickers.size() / 5.0f)) * AndroidUtilities.dp(82) + backgroundPaddingTop + AndroidUtilities.statusBarHeight; } else if (stickerSetCovereds != null) { - contentSize = AndroidUtilities.dp(48 + 8) + AndroidUtilities.dp(60) * stickerSetCovereds.size() + adapter.stickersRowCount * AndroidUtilities.dp(82) + backgroundPaddingTop + AndroidUtilities.dp(24); + contentSize = AndroidUtilities.dp(8) + params.bottomMargin + AndroidUtilities.dp(60) * stickerSetCovereds.size() + adapter.stickersRowCount * AndroidUtilities.dp(82) + backgroundPaddingTop + AndroidUtilities.dp(24); } else { - contentSize = AndroidUtilities.dp(48 + 48) + Math.max(3, (stickerSet != null ? (int) Math.ceil(stickerSet.documents.size() / 5.0f) : 0)) * AndroidUtilities.dp(82) + backgroundPaddingTop + AndroidUtilities.statusBarHeight; + contentSize = AndroidUtilities.dp(48) + params.bottomMargin + Math.max(3, (stickerSet != null ? (int) Math.ceil(stickerSet.documents.size() / 5.0f) : 0)) * AndroidUtilities.dp(82) + backgroundPaddingTop + AndroidUtilities.statusBarHeight; } int padding = contentSize < (height / 5 * 3.2) ? 0 : (height / 5 * 2); if (padding != 0 && contentSize < height) { @@ -504,7 +533,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not } if (gridView.getPaddingTop() != padding) { ignoreLayout = true; - gridView.setPadding(AndroidUtilities.dp(10), padding, AndroidUtilities.dp(10), 0); + gridView.setPadding(AndroidUtilities.dp(10), padding, AndroidUtilities.dp(10), AndroidUtilities.dp(8)); emptyView.setPadding(0, padding, 0, 0); ignoreLayout = false; } @@ -694,16 +723,18 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not stickerEmojiTextView.setText(Emoji.replaceEmoji(MediaDataController.getInstance(currentAccount).getEmojiForSticker(selectedSticker.id), stickerEmojiTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(30), false)); } - TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(selectedSticker.thumbs, 90); - stickerImageView.getImageReceiver().setImage(ImageLocation.getForDocument(selectedSticker), null, ImageLocation.getForDocument(thumb, selectedSticker), null, "webp", stickerSet, 1); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) stickerPreviewLayout.getLayoutParams(); - layoutParams.topMargin = scrollOffsetY; - stickerPreviewLayout.setLayoutParams(layoutParams); - stickerPreviewLayout.setVisibility(View.VISIBLE); - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.playTogether(ObjectAnimator.ofFloat(stickerPreviewLayout, View.ALPHA, 0.0f, 1.0f)); - animatorSet.setDuration(200); - animatorSet.start(); + if (!ContentPreviewViewer.getInstance().showMenuFor(view)) { + TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(selectedSticker.thumbs, 90); + stickerImageView.getImageReceiver().setImage(ImageLocation.getForDocument(selectedSticker), null, ImageLocation.getForDocument(thumb, selectedSticker), null, "webp", stickerSet, 1); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) stickerPreviewLayout.getLayoutParams(); + layoutParams.topMargin = scrollOffsetY; + stickerPreviewLayout.setLayoutParams(layoutParams); + stickerPreviewLayout.setVisibility(View.VISIBLE); + AnimatorSet animatorSet = new AnimatorSet(); + animatorSet.playTogether(ObjectAnimator.ofFloat(stickerPreviewLayout, View.ALPHA, 0.0f, 1.0f)); + animatorSet.setDuration(200); + animatorSet.start(); + } } }; gridView.setOnItemClickListener(stickersOnItemClickListener); @@ -757,13 +788,16 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not containerView.addView(shadow[1], frameLayoutParams); pickerBottomLayout = new TextView(context); - pickerBottomLayout.setBackgroundDrawable(Theme.createSelectorWithBackgroundDrawable(getThemedColor(Theme.key_dialogBackground), getThemedColor(Theme.key_listSelector))); + pickerBottomLayout.setBackground(Theme.createSelectorWithBackgroundDrawable(getThemedColor(Theme.key_dialogBackground), getThemedColor(Theme.key_listSelector))); pickerBottomLayout.setTextColor(getThemedColor(buttonTextColorKey = Theme.key_dialogTextBlue2)); pickerBottomLayout.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); pickerBottomLayout.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); - pickerBottomLayout.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + pickerBottomLayout.setTypeface(AndroidUtilities.getTypeface(AndroidUtilities.TYPEFACE_ROBOTO_MEDIUM)); pickerBottomLayout.setGravity(Gravity.CENTER); - containerView.addView(pickerBottomLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.BOTTOM)); + + pickerBottomFrameLayout = new FrameLayout(context); + pickerBottomFrameLayout.addView(pickerBottomLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48)); + containerView.addView(pickerBottomFrameLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM)); stickerPreviewLayout = new FrameLayout(context); stickerPreviewLayout.setVisibility(View.GONE); @@ -787,7 +821,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not previewSendButton.setBackground(Theme.createSelectorWithBackgroundDrawable(getThemedColor(Theme.key_dialogBackground), getThemedColor(Theme.key_listSelector))); previewSendButton.setGravity(Gravity.CENTER); previewSendButton.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0); - previewSendButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + previewSendButton.setTypeface(AndroidUtilities.getTypeface(AndroidUtilities.TYPEFACE_ROBOTO_MEDIUM)); stickerPreviewLayout.addView(previewSendButton, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM | Gravity.LEFT)); previewSendButton.setOnClickListener(v -> { if (importingStickersPaths != null) { @@ -859,6 +893,11 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not installDelegate = stickersAlertInstallDelegate; } + public void setCustomButtonDelegate(StickersAlertCustomButtonDelegate customButtonDelegate) { + this.customButtonDelegate = customButtonDelegate; + updateFields(); + } + private void onSubItemClick(int id) { if (stickerSet == null) { return; @@ -923,7 +962,13 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not } titleTextView.setText(stringBuilder != null ? stringBuilder : stickerSet.set.title); - if (stickerSet.set == null || !MediaDataController.getInstance(currentAccount).isStickerPackInstalled(stickerSet.set.id)) { + if (customButtonDelegate != null) { + setButton(v -> { + if (customButtonDelegate.onCustomButtonPressed()) { + dismiss(); + } + }, customButtonDelegate.getCustomButtonText(), customButtonDelegate.getCustomButtonTextColorKey(), customButtonDelegate.getCustomButtonColorKey(), customButtonDelegate.getCustomButtonRippleColorKey()); + } else if (stickerSet.set == null || !MediaDataController.getInstance(currentAccount).isStickerPackInstalled(stickerSet.set.id)) { String text; if (stickerSet.set != null && stickerSet.set.masks) { text = LocaleController.formatString("AddStickersCount", R.string.AddStickersCount, LocaleController.formatPluralString("MasksCount", stickerSet.documents.size())).toUpperCase(); @@ -945,7 +990,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not try { if (error == null) { if (showTooltipWhenToggle) { - Bulletin.make(parentFragment, new StickerSetBulletinLayout(pickerBottomLayout.getContext(), stickerSet, StickerSetBulletinLayout.TYPE_ADDED, null, resourcesProvider), Bulletin.DURATION_SHORT).show(); + Bulletin.make(parentFragment, new StickerSetBulletinLayout(pickerBottomFrameLayout.getContext(), stickerSet, StickerSetBulletinLayout.TYPE_ADDED, null, resourcesProvider), Bulletin.DURATION_SHORT).show(); } if (response instanceof TLRPC.TL_messages_stickerSetInstallResultArchive) { MediaDataController.getInstance(currentAccount).processStickerSetInstallResultArchive(parentFragment, true, type, (TLRPC.TL_messages_stickerSetInstallResultArchive) response); @@ -958,7 +1003,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not } MediaDataController.getInstance(currentAccount).loadStickers(type, false, true); })); - }, text, Theme.key_dialogTextBlue2); + }, text, Theme.key_featuredStickers_buttonText, Theme.key_featuredStickers_addButton, Theme.key_featuredStickers_addButtonPressed); } else { String text; if (stickerSet.set.masks) { @@ -1349,7 +1394,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not Bulletin.addDelegate((FrameLayout) containerView, new Bulletin.Delegate() { @Override public int getBottomOffset(int tag) { - return pickerBottomLayout != null ? pickerBottomLayout.getHeight() : 0; + return pickerBottomFrameLayout != null ? pickerBottomFrameLayout.getHeight() : 0; } }); } @@ -1369,10 +1414,6 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not gridView.getChildAt(a).invalidate(); } } - if (ContentPreviewViewer.getInstance().isVisible()) { - ContentPreviewViewer.getInstance().close(); - } - ContentPreviewViewer.getInstance().reset(); } else if (id == NotificationCenter.fileUploaded) { if (uploadImportStickers == null) { return; @@ -1420,9 +1461,30 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not } private void setButton(View.OnClickListener onClickListener, String title, String colorKey) { + setButton(onClickListener, title, colorKey, null, null); + } + + private void setButton(View.OnClickListener onClickListener, String title, String colorKey, String backgroundColorKey, String backgroundSelectorColorKey) { pickerBottomLayout.setTextColor(getThemedColor(buttonTextColorKey = colorKey)); - pickerBottomLayout.setText(title.toUpperCase()); + pickerBottomLayout.setText(customButtonDelegate == null ? title.toUpperCase() : title); pickerBottomLayout.setOnClickListener(onClickListener); + + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) pickerBottomLayout.getLayoutParams(); + ViewGroup.MarginLayoutParams shadowParams = (ViewGroup.MarginLayoutParams) shadow[1].getLayoutParams(); + ViewGroup.MarginLayoutParams gridParams = (ViewGroup.MarginLayoutParams) gridView.getLayoutParams(); + ViewGroup.MarginLayoutParams emptyParams = (ViewGroup.MarginLayoutParams) emptyView.getLayoutParams(); + if (backgroundColorKey != null && backgroundSelectorColorKey != null) { + pickerBottomLayout.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(6), getThemedColor(backgroundColorKey), getThemedColor(backgroundSelectorColorKey))); + pickerBottomFrameLayout.setBackgroundColor(getThemedColor(Theme.key_dialogBackground)); + params.leftMargin = params.topMargin = params.rightMargin = params.bottomMargin = AndroidUtilities.dp(8); + emptyParams.bottomMargin = gridParams.bottomMargin = shadowParams.bottomMargin = AndroidUtilities.dp(64); + } else { + pickerBottomLayout.setBackground(Theme.createSelectorWithBackgroundDrawable(getThemedColor(Theme.key_dialogBackground), getThemedColor(Theme.key_listSelector))); + pickerBottomFrameLayout.setBackgroundColor(Color.TRANSPARENT); + params.leftMargin = params.topMargin = params.rightMargin = params.bottomMargin = 0; + emptyParams.bottomMargin = gridParams.bottomMargin = shadowParams.bottomMargin = AndroidUtilities.dp(48); + } + containerView.requestLayout(); } public boolean isShowTooltipWhenToggle() { @@ -1662,4 +1724,13 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not } } } + + @Override + public void onBackPressed() { + if (ContentPreviewViewer.getInstance().isVisible()) { + ContentPreviewViewer.getInstance().closeWithMenu(); + return; + } + super.onBackPressed(); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/StroageUsageView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/StroageUsageView.java index b36e36e5b..1316ff288 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/StroageUsageView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/StroageUsageView.java @@ -191,7 +191,6 @@ public class StroageUsageView extends FrameLayout { this.totalDeviceFreeSize = totalDeviceFreeSize; this.totalDeviceSize = totalDeviceSize; - freeSizeTextView.setText(LocaleController.formatString("TotalDeviceFreeSize", R.string.TotalDeviceFreeSize, AndroidUtilities.formatFileSize(totalDeviceFreeSize))); totlaSizeTextView.setText(LocaleController.formatString("TotalDeviceSize", R.string.TotalDeviceSize, AndroidUtilities.formatFileSize(totalDeviceSize - totalDeviceFreeSize))); @@ -342,7 +341,7 @@ public class StroageUsageView extends FrameLayout { // canvas.drawLine(AndroidUtilities.dp(24), AndroidUtilities.dp(20), getMeasuredWidth() - AndroidUtilities.dp(24), AndroidUtilities.dp(20), paintCalculcating); AndroidUtilities.rectTmp.set(AndroidUtilities.dp(24), AndroidUtilities.dp(17), getMeasuredWidth() - AndroidUtilities.dp(24), AndroidUtilities.dp(23)); cellFlickerDrawable.setParentWidth(getMeasuredWidth()); - cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(3)); + cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(3), null); } int currentP = AndroidUtilities.dp(24); if (!calculating) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SwipeGestureSettingsView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SwipeGestureSettingsView.java index 556e86df3..64d3e36b9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SwipeGestureSettingsView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SwipeGestureSettingsView.java @@ -6,9 +6,13 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.RectF; +import android.os.Build; +import android.os.Bundle; import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.View; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import androidx.core.graphics.ColorUtils; @@ -104,7 +108,7 @@ public class SwipeGestureSettingsView extends FrameLayout { invalidate(); picker.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); }); - + picker.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); picker.setValue(SharedConfig.getChatSwipeAction(currentAccount)); addView(picker, LayoutHelper.createFrame(132, LayoutHelper.MATCH_PARENT, Gravity.RIGHT, 21, 0, 21, 0)); @@ -327,4 +331,27 @@ public class SwipeGestureSettingsView extends FrameLayout { picker.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); picker.invalidate(); } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setEnabled(true); + info.setContentDescription(strings[picker.getValue()]); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + info.addAction(new AccessibilityNodeInfo.AccessibilityAction(AccessibilityNodeInfo.ACTION_CLICK, null)); + } + } + + @Override + public void onInitializeAccessibilityEvent(AccessibilityEvent event) { + super.onInitializeAccessibilityEvent(event); + if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED) { + int newValue = picker.getValue() + 1; + if (newValue > picker.getMaxValue() || newValue < 0) { + newValue = 0; + } + setContentDescription(strings[newValue]); + picker.changeValueByOne(true); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Switch.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Switch.java index 7b0999f00..dfc0f0142 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Switch.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Switch.java @@ -25,14 +25,19 @@ import android.graphics.PorterDuffXfermode; import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.graphics.drawable.RippleDrawable; +import android.media.AudioManager; import android.os.Build; import androidx.annotation.Keep; + +import android.os.VibrationEffect; +import android.os.Vibrator; import android.util.StateSet; import android.view.HapticFeedbackConstants; import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.OneUIUtilities; import org.telegram.ui.ActionBar.Theme; import java.lang.reflect.Method; @@ -80,6 +85,8 @@ public class Switch extends View { private Paint overlayEraserPaint; private Paint overlayMaskPaint; + private Theme.ResourcesProvider resourcesProvider; + private int overrideColorProgress; public interface OnCheckedChangeListener { @@ -87,7 +94,12 @@ public class Switch extends View { } public Switch(Context context) { + this(context, null); + } + + public Switch(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); + this.resourcesProvider = resourcesProvider; rectF = new RectF(); paint = new Paint(Paint.ANTI_ALIAS_FLAG); @@ -95,6 +107,8 @@ public class Switch extends View { paint2.setStyle(Paint.Style.STROKE); paint2.setStrokeCap(Paint.Cap.ROUND); paint2.setStrokeWidth(AndroidUtilities.dp(2)); + + setHapticFeedbackEnabled(true); } @Keep @@ -190,7 +204,7 @@ public class Switch extends View { rippleDrawable.setCallback(this); } if (isChecked && colorSet != 2 || !isChecked && colorSet != 1) { - int color = isChecked ? Theme.getColor(Theme.key_switchTrackBlueSelectorChecked) : Theme.getColor(Theme.key_switchTrackBlueSelector); + int color = isChecked ? Theme.getColor(Theme.key_switchTrackBlueSelectorChecked, resourcesProvider) : Theme.getColor(Theme.key_switchTrackBlueSelector, resourcesProvider); /*if (Build.VERSION.SDK_INT < 28) { color = Color.argb(Color.alpha(color) * 2, Color.red(color), Color.green(color), Color.blue(color)); }*/ @@ -268,7 +282,7 @@ public class Switch extends View { if (checked != isChecked) { isChecked = checked; if (attachedToWindow && animated) { - vibrateChecked(); + vibrateChecked(checked); animateToCheckedState(checked); } else { cancelCheckAnimator(); @@ -293,7 +307,7 @@ public class Switch extends View { if (icon != 0) { iconDrawable = getResources().getDrawable(icon).mutate(); if (iconDrawable != null) { - iconDrawable.setColorFilter(new PorterDuffColorFilter(lastIconColor = Theme.getColor(isChecked ? trackCheckedColorKey : trackColorKey), PorterDuff.Mode.MULTIPLY)); + iconDrawable.setColorFilter(new PorterDuffColorFilter(lastIconColor = Theme.getColor(isChecked ? trackCheckedColorKey : trackColorKey, resourcesProvider), PorterDuff.Mode.MULTIPLY)); } } else { iconDrawable = null; @@ -401,8 +415,8 @@ public class Switch extends View { colorProgress = progress; } - color1 = Theme.getColor(trackColorKey); - color2 = Theme.getColor(trackCheckedColorKey); + color1 = Theme.getColor(trackColorKey, resourcesProvider); + color2 = Theme.getColor(trackCheckedColorKey, resourcesProvider); if (a == 0 && iconDrawable != null && lastIconColor != (isChecked ? color2 : color1)) { iconDrawable.setColorFilter(new PorterDuffColorFilter(lastIconColor = (isChecked ? color2 : color1), PorterDuff.Mode.MULTIPLY)); } @@ -456,8 +470,8 @@ public class Switch extends View { colorProgress = progress; } - color1 = Theme.getColor(thumbColorKey); - color2 = Theme.getColor(thumbCheckedColorKey); + color1 = Theme.getColor(thumbColorKey, resourcesProvider); + color2 = Theme.getColor(thumbCheckedColorKey, resourcesProvider); r1 = Color.red(color1); r2 = Color.red(color2); g1 = Color.green(color1); @@ -532,21 +546,18 @@ public class Switch extends View { private boolean semHaptics = false; - private void vibrateChecked() { + private void vibrateChecked(boolean toCheck) { try { - Integer hapticIndex = null; - Method method = null; - if (Build.VERSION.SDK_INT >= 29) { - method = HapticFeedbackConstants.class.getDeclaredMethod("hidden_semGetVibrationIndex", Integer.TYPE); - } else if (Build.VERSION.SDK_INT >= 28) { - method = HapticFeedbackConstants.class.getMethod("semGetVibrationIndex", Integer.TYPE); - } - if (method != null) { - method.setAccessible(true); - hapticIndex = (Integer) method.invoke(null, 27); - } - if (hapticIndex != null) { - performHapticFeedback(hapticIndex); + if (isHapticFeedbackEnabled() && android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) { + final Vibrator vibrator = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE); + int slightAmplitude = OneUIUtilities.isOneUI() ? 5 : 15; + VibrationEffect vibrationEffect = VibrationEffect.createWaveform( + toCheck ? new long[] { 80, 25, 15 } : new long[] { 25, 80, 10 }, + toCheck ? new int[] { slightAmplitude, 0, 255 } : new int[] { 0, slightAmplitude, 140 }, + -1 + ); + vibrator.cancel(); + vibrator.vibrate(vibrationEffect); semHaptics = true; } } catch (Exception ignore) {} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemePreviewDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemePreviewDrawable.java index dfe165374..2848c9fcd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemePreviewDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemePreviewDrawable.java @@ -116,8 +116,9 @@ public class ThemePreviewDrawable extends BitmapDrawable { Bitmap patternBitmap = null; if (pattern != null) { + int W = 560, H = 678; if ("application/x-tgwallpattern".equals(themeDocument.mime_type)) { - patternBitmap = SvgHelper.getBitmap(pattern, 560, 678, false); + patternBitmap = SvgHelper.getBitmap(pattern, W, H, false); } else { BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = 1; @@ -126,8 +127,8 @@ public class ThemePreviewDrawable extends BitmapDrawable { float photoW = opts.outWidth; float photoH = opts.outHeight; float scaleFactor; - int w_filter = 560; - int h_filter = 678; + int w_filter = W; + int h_filter = H; if (w_filter >= h_filter && photoW > photoH) { scaleFactor = Math.max(photoW / w_filter, photoH / h_filter); } else { @@ -159,11 +160,11 @@ public class ThemePreviewDrawable extends BitmapDrawable { backgroundPaint.setColorFilter(new PorterDuffColorFilter(patternColor, PorterDuff.Mode.SRC_IN)); } backgroundPaint.setAlpha(255); - float scale = Math.max(560.0f / patternBitmap.getWidth(), 678.0f / patternBitmap.getHeight()); + float scale = Math.max((float) W / patternBitmap.getWidth(), (float) H / patternBitmap.getHeight()); int w = (int) (patternBitmap.getWidth() * scale); int h = (int) (patternBitmap.getHeight() * scale); - int x = (560 - w) / 2; - int y = (678 - h) / 2; + int x = (W - w) / 2; + int y = (H - h) / 2; canvas.save(); canvas.translate(x, y); canvas.scale(scale, scale); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemeSmallPreviewView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemeSmallPreviewView.java index a75e53198..b0f35b442 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemeSmallPreviewView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemeSmallPreviewView.java @@ -21,6 +21,7 @@ import android.text.TextPaint; import android.text.TextUtils; import android.view.Gravity; import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import org.telegram.messenger.AndroidUtilities; @@ -44,6 +45,9 @@ import java.util.List; public class ThemeSmallPreviewView extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { + private final static int PATTERN_BITMAP_MAXWIDTH = 120; + private final static int PATTERN_BITMAP_MAXHEIGHT = 140; + public final static int TYPE_DEFAULT = 0; public final static int TYPE_GRID = 1; public final static int TYPE_QR = 2; @@ -95,7 +99,7 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe outlineBackgroundPaint.setStrokeWidth(AndroidUtilities.dp(2)); outlineBackgroundPaint.setStyle(Paint.Style.STROKE); - outlineBackgroundPaint.setColor(0xFFE3E3E3); + outlineBackgroundPaint.setColor(0x20E3E3E3); } @Override @@ -211,7 +215,7 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe if (result != null && result.first == themeId) { if (item.previewDrawable instanceof MotionBackgroundDrawable) { MotionBackgroundDrawable motionBackgroundDrawable = (MotionBackgroundDrawable) item.previewDrawable; - motionBackgroundDrawable.setPatternBitmap(intensity >= 0 ? 100 : -100, result.second); + motionBackgroundDrawable.setPatternBitmap(intensity >= 0 ? 100 : -100, prescaleBitmap(result.second), true); motionBackgroundDrawable.setPatternColorFilter(patternColor); } invalidate(); @@ -231,10 +235,10 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe if (wallPaper != null && wallPaper.document != null) { TLRPC.Document wallpaperDocument = wallPaper.document; - final TLRPC.PhotoSize thumbSize = FileLoader.getClosestPhotoSizeWithSize(wallpaperDocument.thumbs, 120); + final TLRPC.PhotoSize thumbSize = FileLoader.getClosestPhotoSizeWithSize(wallpaperDocument.thumbs, PATTERN_BITMAP_MAXWIDTH); ImageLocation imageLocation = ImageLocation.getForDocument(thumbSize, wallpaperDocument); ImageReceiver imageReceiver = new ImageReceiver(); - imageReceiver.setImage(imageLocation, "120_80", null, null, null, 1); + imageReceiver.setImage(imageLocation, PATTERN_BITMAP_MAXWIDTH + "_" + PATTERN_BITMAP_MAXHEIGHT, null, null, null, 1); imageReceiver.setDelegate((receiver, set, thumb, memCache) -> { ImageReceiver.BitmapHolder holder = receiver.getBitmapSafe(); if (!set || holder == null) { @@ -244,9 +248,8 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe if (resultBitmap != null) { if (item.previewDrawable instanceof MotionBackgroundDrawable) { MotionBackgroundDrawable motionBackgroundDrawable = (MotionBackgroundDrawable) item.previewDrawable; - motionBackgroundDrawable.setPatternBitmap(wallPaper.settings == null || wallPaper.settings.intensity >= 0 ? 100 : -100, resultBitmap); + motionBackgroundDrawable.setPatternBitmap(wallPaper.settings == null || wallPaper.settings.intensity >= 0 ? 100 : -100, prescaleBitmap(resultBitmap), true); motionBackgroundDrawable.setPatternColorFilter(patternColor); - invalidate(); } } @@ -255,11 +258,11 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe } } else if (accent != null && accent.info == null) { ChatThemeController.chatThemeQueue.postRunnable(() -> { - Bitmap bitmap = SvgHelper.getBitmap(R.raw.default_pattern, AndroidUtilities.dp(80), AndroidUtilities.dp(120), Color.BLACK, 3f); + Bitmap bitmap = SvgHelper.getBitmap(R.raw.default_pattern, AndroidUtilities.dp(PATTERN_BITMAP_MAXWIDTH), AndroidUtilities.dp(PATTERN_BITMAP_MAXHEIGHT), Color.BLACK, AndroidUtilities.density); AndroidUtilities.runOnUIThread(() -> { if (item.previewDrawable instanceof MotionBackgroundDrawable) { MotionBackgroundDrawable motionBackgroundDrawable = (MotionBackgroundDrawable) item.previewDrawable; - motionBackgroundDrawable.setPatternBitmap(100, bitmap); + motionBackgroundDrawable.setPatternBitmap(100, prescaleBitmap(bitmap), true); motionBackgroundDrawable.setPatternColorFilter(patternColor); invalidate(); } @@ -279,11 +282,16 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe backupImageView.getImageReceiver().getLottieAnimation().setCurrentFrame(0, false); } } + + if (chatThemeItem.chatTheme == null || chatThemeItem.chatTheme.showAsDefaultStub) { + setContentDescription(LocaleController.getString("ChatNoTheme", R.string.ChatNoTheme)); + } else { + setContentDescription(chatThemeItem.chatTheme.getEmoticon()); + } } boolean isSelected; - public void setSelected(boolean selected, boolean animated) { if (!animated) { if (strokeAlphaAnimator != null) { @@ -318,6 +326,22 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe isSelected = selected; } + private Bitmap prescaleBitmap(Bitmap bitmap) { + if (bitmap == null) { + return null; + } + float scale = Math.max(AndroidUtilities.dp(PATTERN_BITMAP_MAXWIDTH) / bitmap.getWidth(), AndroidUtilities.dp(PATTERN_BITMAP_MAXHEIGHT) / bitmap.getHeight()); + if (bitmap.getWidth() <= 0 || bitmap.getHeight() <= 0 || Math.abs(scale - 1f) < .0125f) { + return bitmap; + } + int w = (int) (bitmap.getWidth() * scale); + int h = (int) (bitmap.getHeight() * scale); + if (h <= 0 || w <= 0) { + return bitmap; + } + return Bitmap.createScaledBitmap(bitmap, w, h, true); + } + @Override public void setBackgroundColor(int color) { backgroundFillPaint.setColor(getThemedColor(Theme.key_dialogBackgroundGray)); @@ -434,9 +458,11 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe } else if (color1 != 0) { drawable = new ColorDrawable(color1); } else if (item.themeInfo != null && (item.themeInfo.previewWallpaperOffset > 0 || item.themeInfo.pathToWallpaper != null)) { - Bitmap wallpaper = AndroidUtilities.getScaledBitmap(AndroidUtilities.dp(76), AndroidUtilities.dp(97), item.themeInfo.pathToWallpaper, item.themeInfo.pathToFile, item.themeInfo.previewWallpaperOffset); + Bitmap wallpaper = AndroidUtilities.getScaledBitmap(AndroidUtilities.dp(112), AndroidUtilities.dp(134), item.themeInfo.pathToWallpaper, item.themeInfo.pathToFile, item.themeInfo.previewWallpaperOffset); if (wallpaper != null) { - drawable = new BitmapDrawable(wallpaper); + BitmapDrawable bitmapDrawable = new BitmapDrawable(wallpaper); + bitmapDrawable.setFilterBitmap(true); + drawable = bitmapDrawable; } } else { drawable = new MotionBackgroundDrawable(0xffdbddbb, 0xff6ba587, 0xffd5d88d, 0xff88b884, true); @@ -531,10 +557,12 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe previewDrawable.setAlpha((int) (255 * alpha)); previewDrawable.draw(canvas); if (previewDrawable instanceof ColorDrawable || (previewDrawable instanceof MotionBackgroundDrawable && ((MotionBackgroundDrawable) previewDrawable).isOneColor())) { - outlineBackgroundPaint.setAlpha((int) (255 * alpha)); + int wasAlpha = outlineBackgroundPaint.getAlpha(); + outlineBackgroundPaint.setAlpha((int) (wasAlpha * alpha)); float padding = INNER_RECT_SPACE; AndroidUtilities.rectTmp.set(padding, padding, getWidth() - padding, getHeight() - padding); canvas.drawRoundRect(AndroidUtilities.rectTmp, INNER_RADIUS, INNER_RADIUS, outlineBackgroundPaint); + outlineBackgroundPaint.setAlpha(wasAlpha); } canvas.restore(); } else { @@ -635,4 +663,11 @@ public class ThemeSmallPreviewView extends FrameLayout implements NotificationCe invalidate(); } } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setEnabled(true); + info.setSelected(isSelected); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/TimerDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/TimerDrawable.java index e866b7f63..74b6d1531 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/TimerDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/TimerDrawable.java @@ -91,11 +91,16 @@ public class TimerDrawable extends Drawable { } else if (timeString.length() > 2) { timeString = "c"; } - } else { + } else if (time < 60 * 60 * 24 * 364){ timeString = "" + value / 60 / 60 / 24 / 30; if (timeString.length() < 2) { timeString += LocaleController.getString("SecretChatTimerMonths", R.string.SecretChatTimerMonths); } + } else { + timeString = "" + value / 60 / 60 / 24 / 364; + if (timeString.length() < 2) { + timeString += LocaleController.getString("SecretChatTimerYears", R.string.SecretChatTimerYears); + } } timePaint.setTextSize(AndroidUtilities.dp(11)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/TranscribeButton.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/TranscribeButton.java new file mode 100644 index 000000000..869014a1f --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/TranscribeButton.java @@ -0,0 +1,494 @@ +package org.telegram.ui.Components; + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PixelFormat; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.RippleDrawable; +import android.os.Build; +import android.os.SystemClock; +import android.text.TextPaint; +import android.text.TextUtils; +import android.text.style.ImageSpan; +import android.util.StateSet; +import android.view.MotionEvent; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.graphics.ColorUtils; +import androidx.interpolator.view.animation.FastOutSlowInInterpolator; + +import org.telegram.messenger.AccountInstance; +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.BuildVars; +import org.telegram.messenger.DialogObject; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.MessageObject; +import org.telegram.messenger.MessagesController; +import org.telegram.messenger.MessagesStorage; +import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; +import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Cells.ChatMessageCell; +import org.telegram.ui.PremiumPreviewFragment; + +import java.util.HashMap; +import java.util.Objects; + +public class TranscribeButton { + + private final static int[] pressedState = new int[]{android.R.attr.state_enabled, android.R.attr.state_pressed}; + + private int backgroundColor, color, iconColor, rippleColor; + private Paint backgroundPaint, strokePaint; + private Path progressClipPath; + + private boolean loading; + private AnimatedFloat loadingFloat; + + private RLottieDrawable inIconDrawable; + private RLottieDrawable outIconDrawable; + + private Drawable selectorDrawable; + private ChatMessageCell parent; + private SeekBarWaveform seekBar; + + private long start; + private Rect bounds, pressBounds; + + private boolean premium; + private boolean isOpen, shouldBeOpen; + + public TranscribeButton(ChatMessageCell parent, SeekBarWaveform seekBar) { + start = SystemClock.elapsedRealtime(); + this.parent = parent; + this.seekBar = seekBar; + this.bounds = new Rect(0, 0, AndroidUtilities.dp(30), AndroidUtilities.dp(30)); + this.pressBounds = new Rect(this.bounds); + this.pressBounds.inset(AndroidUtilities.dp(8), AndroidUtilities.dp(8)); + + outIconDrawable = new RLottieDrawable(R.raw.transcribe_out, "transcribe_out", AndroidUtilities.dp(26), AndroidUtilities.dp(26)); + outIconDrawable.setCurrentFrame(0); + outIconDrawable.setCallback(parent); + outIconDrawable.addParentView(parent); + outIconDrawable.setOnFinishCallback(() -> { + outIconDrawable.stop(); + inIconDrawable.stop(); + isOpen = shouldBeOpen = true; + inIconDrawable.setCurrentFrame(0); + }, 19); + outIconDrawable.setAllowDecodeSingleFrame(true); + + inIconDrawable = new RLottieDrawable(R.raw.transcribe_in, "transcribe_in", AndroidUtilities.dp(26), AndroidUtilities.dp(26)); + inIconDrawable.setCurrentFrame(0); + inIconDrawable.setCallback(parent); + inIconDrawable.addParentView(parent); + inIconDrawable.setOnFinishCallback(() -> { + inIconDrawable.stop(); + outIconDrawable.stop(); + isOpen = shouldBeOpen = false; + outIconDrawable.setCurrentFrame(0); + }, 19); + inIconDrawable.setAllowDecodeSingleFrame(true); + + this.isOpen = false; + this.shouldBeOpen = false; + premium = AccountInstance.getInstance(parent.getMessageObject().currentAccount).getUserConfig().isPremium(); + + loadingFloat = new AnimatedFloat(parent, 250, CubicBezierInterpolator.EASE_OUT_QUINT); + } + + public void setLoading(boolean loading, boolean animated) { + this.loading = loading; + seekBar.setLoading(loading); + if (!animated) { + loadingFloat.set(this.loading ? 1 : 0, true); + } else { + if (loadingFloat.get() <= 0f) { + start = SystemClock.elapsedRealtime(); + } + } + if (parent != null) { + parent.invalidate(); + } + } + + public void setOpen(boolean open, boolean animated) { + boolean wasShouldBeOpen = shouldBeOpen; + shouldBeOpen = open; + if (animated) { + if (open && !wasShouldBeOpen) { + isOpen = false; + inIconDrawable.setCurrentFrame(0); + outIconDrawable.setCurrentFrame(0); + outIconDrawable.start(); + } else if (!open && wasShouldBeOpen) { + isOpen = true; + outIconDrawable.setCurrentFrame(0); + inIconDrawable.setCurrentFrame(0); + inIconDrawable.start(); + } + } else { + isOpen = open; + inIconDrawable.stop(); + outIconDrawable.stop(); + inIconDrawable.setCurrentFrame(0); + outIconDrawable.setCurrentFrame(0); + } + if (parent != null) { + parent.invalidate(); + } + } + + private boolean pressed = false; + private long pressId = 0; + public boolean onTouch(int action, float x, float y) { + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { + if (pressed && action == MotionEvent.ACTION_UP) { + boolean processClick, toOpen = !shouldBeOpen; + if (!shouldBeOpen) { + processClick = !loading; + if (premium && parent.getMessageObject().isSent()) { + setLoading(true, true); + } + } else { + processClick = true; + setOpen(false, true); + setLoading(false, true); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && selectorDrawable instanceof RippleDrawable) { + selectorDrawable.setState(StateSet.NOTHING); + parent.invalidate(); + } + pressed = false; + if (processClick) { + if (!premium && toOpen) { + if (parent.getDelegate() != null) { + parent.getDelegate().needShowPremiumFeatures(PremiumPreviewFragment.featureTypeToServerString(PremiumPreviewFragment.PREMIUM_FEATURE_VOICE_TO_TEXT)); + } + } else { + transcribePressed(parent.getMessageObject(), toOpen); + } + } + return true; + } + pressed = false; + return false; + } + if (!pressBounds.contains((int) x, (int) y)) { + return false; + } + if (action == MotionEvent.ACTION_DOWN) { + pressed = true; + } + if (pressed && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && selectorDrawable instanceof RippleDrawable) { + selectorDrawable.setHotspot(x, y); + selectorDrawable.setState(pressedState); + parent.invalidate(); + } + return true; + } + + public void setColor(boolean isOut, int color, int grayColor) { + boolean disabled = !premium; +// if (disabled) { +// color = ColorUtils.blendARGB(color, grayColor, isOut ? .6f : .8f); +// color = ColorUtils.setAlphaComponent(color, (int) (Color.alpha(color) * .8f)); +// } + boolean newColor = this.color != color; + this.iconColor = this.color = color; + this.backgroundColor = ColorUtils.setAlphaComponent(color, (int) (Color.alpha(color) * 0.156f)); + this.rippleColor = Theme.blendOver(this.backgroundColor, ColorUtils.setAlphaComponent(color, (int) (Color.alpha(color) * (Theme.isCurrentThemeDark() ? .3f : .2f)))); + if (backgroundPaint == null) { + backgroundPaint = new Paint(); + } + backgroundPaint.setColor(this.backgroundColor); + if (newColor || selectorDrawable == null) { + selectorDrawable = Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(8), 0, this.rippleColor); + selectorDrawable.setCallback(parent); + } + if (newColor) { + inIconDrawable.beginApplyLayerColors(); + inIconDrawable.setLayerColor("Artboard Outlines.**", this.iconColor); + inIconDrawable.commitApplyLayerColors(); + inIconDrawable.setAllowDecodeSingleFrame(true); + inIconDrawable.updateCurrentFrame(); + outIconDrawable.beginApplyLayerColors(); + outIconDrawable.setLayerColor("Artboard Outlines.**", this.iconColor); + outIconDrawable.commitApplyLayerColors(); + outIconDrawable.setAllowDecodeSingleFrame(true); + outIconDrawable.updateCurrentFrame(); + } +// inIconDrawable.setAlpha(disabled ? 125 : 255); +// outIconDrawable.setAlpha(disabled ? 125 : 255); + if (strokePaint == null) { + strokePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + strokePaint.setStyle(Paint.Style.STROKE); + } + strokePaint.setColor(color); + } + + private final FastOutSlowInInterpolator interpolator = new FastOutSlowInInterpolator(); + private Path boundsPath; + + public void draw(Canvas canvas) { + this.bounds.set(0, AndroidUtilities.dp(3), AndroidUtilities.dp(30), AndroidUtilities.dp(3 + 24)); + this.pressBounds.set(this.bounds.left - AndroidUtilities.dp(8), this.bounds.top - AndroidUtilities.dp(8), this.bounds.right + AndroidUtilities.dp(8), this.bounds.bottom + AndroidUtilities.dp(8)); + if (boundsPath == null) { + boundsPath = new Path(); + AndroidUtilities.rectTmp.set(this.bounds); + boundsPath.addRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), Path.Direction.CW); + } + canvas.save(); + canvas.clipPath(boundsPath); + if (backgroundPaint != null) { + canvas.drawRect(this.bounds, backgroundPaint); + } + if (selectorDrawable != null && premium) { + selectorDrawable.setBounds(bounds); + selectorDrawable.draw(canvas); + } + canvas.restore(); + + float loadingT = loadingFloat.set(loading ? 1f : 0f); + if (loadingT > 0f) { + float[] segments = getSegments((long) ((SystemClock.elapsedRealtime() - start) * .75f)); + + canvas.save(); + if (progressClipPath == null) { + progressClipPath = new Path(); + } + progressClipPath.reset(); + AndroidUtilities.rectTmp.set(pressBounds); + float segmentLength = Math.max(40 * loadingT, segments[1] - segments[0]); + progressClipPath.addArc(AndroidUtilities.rectTmp, segments[0] + segmentLength * (1f - loadingT) * (loading ? 0f : 1f), segmentLength * loadingT); + progressClipPath.lineTo(AndroidUtilities.rectTmp.centerX(), AndroidUtilities.rectTmp.centerY()); + progressClipPath.close(); + canvas.clipPath(progressClipPath); + AndroidUtilities.rectTmp.set(bounds); + strokePaint.setStrokeWidth(AndroidUtilities.dp(1.5f)); + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), strokePaint); + canvas.restore(); + + parent.invalidate(); + } + + canvas.save(); + canvas.translate(AndroidUtilities.dp(2), AndroidUtilities.dp(2)); + if (isOpen) { + inIconDrawable.draw(canvas); + } else { + outIconDrawable.draw(canvas); + } + canvas.restore(); + } + + private float[] segments; + private float[] getSegments(long d) { + if (segments == null) { + segments = new float[2]; + } + final long t = d % 5400L; + segments[0] = 1520 * t / 5400f - 20; + segments[1] = 1520 * t / 5400f; + float fraction; + for (int i = 0; i < 4; ++i) { + fraction = (t - i * 1350) / 667f; + segments[1] += interpolator.getInterpolation(fraction) * 250; + fraction = (t - (667 + i * 1350)) / 667f; + segments[0] += interpolator.getInterpolation(fraction) * 250; + } + return segments; + } + + + public static class LoadingPointsSpan extends ImageSpan { + private static LoadingPointsDrawable drawable; + + public LoadingPointsSpan() { + super(drawable == null ? drawable = new LoadingPointsDrawable(Theme.chat_msgTextPaint) : drawable, ImageSpan.ALIGN_BOTTOM); + float fontSize = Theme.chat_msgTextPaint.getTextSize() * 0.89f; + int yoff = (int) (fontSize * 0.02f); + getDrawable().setBounds(0, yoff, (int) fontSize, yoff + (int) (fontSize * 1.25f)); + } + + @Override + public void updateDrawState(TextPaint textPaint) { + float fontSize = textPaint.getTextSize() * 0.89f; + int yoff = (int) (fontSize * 0.02f); + getDrawable().setBounds(0, yoff, (int) fontSize, yoff + (int) (fontSize * 1.25f)); + super.updateDrawState(textPaint); + } + } + + private static class LoadingPointsDrawable extends Drawable { + private RLottieDrawable lottie; + private int lastColor; + private Paint paint; + public LoadingPointsDrawable(TextPaint textPaint) { + this.paint = textPaint; + float fontSize = textPaint.getTextSize() * 0.89f; + lottie = new RLottieDrawable(R.raw.dots_loading, "dots_loading", (int) fontSize, (int) (fontSize * 1.25f)) { + @Override + protected boolean hasParentView() { + return true; + } + }; + lottie.setAutoRepeat(1); + lottie.setCurrentFrame((int) (SystemClock.elapsedRealtime() / 16f % 60f)); + lottie.setAllowDecodeSingleFrame(true); + lottie.start(); + } + + public void setColor(int color) { + lottie.beginApplyLayerColors(); + lottie.setLayerColor("Comp 1.**", color); + lottie.commitApplyLayerColors(); + lottie.setAllowDecodeSingleFrame(true); + lottie.updateCurrentFrame(); + } + + @Override + public void draw(@NonNull Canvas canvas) { + int color = this.paint.getColor(); + if (color != lastColor) { + setColor(color); + lastColor = color; + } + lottie.draw(canvas); + } + + @Override + public void setAlpha(int i) {} + @Override + public void setColorFilter(@Nullable ColorFilter colorFilter) {} + @Override + public int getOpacity() { + return PixelFormat.TRANSPARENT; + } + } + + + // requests logic + + private static int reqInfoHash(MessageObject messageObject) { + if (messageObject == null) { + return 0; + } + return Objects.hash(messageObject.currentAccount, messageObject.getDialogId(), messageObject.getId()); + } + + private static HashMap transcribeOperationsById; + private static HashMap transcribeOperationsByDialogPosition; + + public static boolean isTranscribing(MessageObject messageObject) { + return ( + (transcribeOperationsByDialogPosition != null && (transcribeOperationsByDialogPosition.containsValue(messageObject) || transcribeOperationsByDialogPosition.containsKey((Integer) reqInfoHash(messageObject)))) || + (transcribeOperationsById != null && messageObject != null && messageObject.messageOwner != null && transcribeOperationsById.containsKey(messageObject.messageOwner.voiceTranscriptionId)) + ); + } + + private static void transcribePressed(MessageObject messageObject, boolean open) { + if (messageObject == null || messageObject.messageOwner == null || !messageObject.isSent()) { + return; + } + int account = messageObject.currentAccount; + final long start = SystemClock.elapsedRealtime(), minDuration = 350; + TLRPC.InputPeer peer = MessagesController.getInstance(account).getInputPeer(messageObject.messageOwner.peer_id); + long dialogId = DialogObject.getPeerDialogId(peer); + int messageId = messageObject.messageOwner.id; + if (open) { + if (messageObject.messageOwner.voiceTranscription != null && messageObject.messageOwner.voiceTranscriptionFinal) { + messageObject.messageOwner.voiceTranscriptionOpen = true; + MessagesStorage.getInstance(account).updateMessageVoiceTranscriptionOpen(dialogId, messageId, messageObject.messageOwner); + AndroidUtilities.runOnUIThread(() -> { + NotificationCenter.getInstance(account).postNotificationName(NotificationCenter.voiceTranscriptionUpdate, messageObject, null, null, (Boolean) true, (Boolean) true); + }); + } else { + TLRPC.TL_messages_transcribeAudio req = new TLRPC.TL_messages_transcribeAudio(); + req.peer = peer; + req.msg_id = messageId; + if (transcribeOperationsByDialogPosition == null) { + transcribeOperationsByDialogPosition = new HashMap<>(); + } + transcribeOperationsByDialogPosition.put((Integer) reqInfoHash(messageObject), messageObject); + ConnectionsManager.getInstance(account).sendRequest(req, (res, err) -> { + String text; + long id = 0; + boolean isFinal = false; + if (res instanceof TLRPC.TL_messages_transcribedAudio) { + TLRPC.TL_messages_transcribedAudio r = (TLRPC.TL_messages_transcribedAudio) res; + text = r.text; + id = r.transcription_id; + isFinal = !r.pending; + if (TextUtils.isEmpty(text)) { + text = !isFinal ? null : ""; + } + if (transcribeOperationsById == null) { + transcribeOperationsById = new HashMap<>(); + } + transcribeOperationsById.put(id, messageObject); + messageObject.messageOwner.voiceTranscriptionId = id; + } else { + text = ""; + isFinal = true; + } + final String finalText = text; + final long finalId = id; + final long duration = SystemClock.elapsedRealtime() - start; + messageObject.messageOwner.voiceTranscriptionOpen = true; + messageObject.messageOwner.voiceTranscriptionFinal = isFinal; + if (BuildVars.LOGS_ENABLED) { + FileLog.e("Transcription request sent, received final=" + isFinal + " id=" + finalId + " text=" + finalText); + } + + MessagesStorage.getInstance(account).updateMessageVoiceTranscription(dialogId, messageId, finalText, messageObject.messageOwner); + if (isFinal) { + AndroidUtilities.runOnUIThread(() -> finishTranscription(messageObject, finalId, finalText), Math.max(0, minDuration - duration)); + } + }); + } + } else { + if (transcribeOperationsByDialogPosition != null) { + transcribeOperationsByDialogPosition.remove((Integer) reqInfoHash(messageObject)); + } + messageObject.messageOwner.voiceTranscriptionOpen = false; + MessagesStorage.getInstance(account).updateMessageVoiceTranscriptionOpen(dialogId, messageId, messageObject.messageOwner); + AndroidUtilities.runOnUIThread(() -> { + NotificationCenter.getInstance(account).postNotificationName(NotificationCenter.voiceTranscriptionUpdate, messageObject, null, null, (Boolean) false, null); + }); + } + } + + public static boolean finishTranscription(MessageObject messageObject, long transcription_id, String text) { + try { + MessageObject messageObjectByTranscriptionId = null; + if (transcribeOperationsById != null && transcribeOperationsById.containsKey(transcription_id)) { + messageObjectByTranscriptionId = transcribeOperationsById.remove(transcription_id); + } + if (messageObject == null) { + messageObject = messageObjectByTranscriptionId; + } + if (messageObject == null || messageObject.messageOwner == null) { + return false; + } + final MessageObject finalMessageObject = messageObject; + if (transcribeOperationsByDialogPosition != null) { + transcribeOperationsByDialogPosition.remove((Integer) reqInfoHash(messageObject)); + } + messageObject.messageOwner.voiceTranscriptionFinal = true; + MessagesStorage.getInstance(messageObject.currentAccount).updateMessageVoiceTranscription(messageObject.getDialogId(), messageObject.getId(), text, messageObject.messageOwner); + AndroidUtilities.runOnUIThread(() -> { + NotificationCenter.getInstance(finalMessageObject.currentAccount).postNotificationName(NotificationCenter.voiceTranscriptionUpdate, finalMessageObject, (Long) transcription_id, (String) text, (Boolean) true, (Boolean) true); + }); + return true; + } catch (Exception ignore) {} + return false; + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/TranslateAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/TranslateAlert.java index 3be2543f9..7666f6f1d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/TranslateAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/TranslateAlert.java @@ -57,11 +57,13 @@ import org.json.JSONArray; import org.json.JSONTokener; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.DispatchQueue; import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.R; +import org.telegram.messenger.XiaomiUtilities; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.BaseFragment; @@ -77,6 +79,9 @@ import java.nio.charset.Charset; import java.util.ArrayList; public class TranslateAlert extends Dialog { + + public static volatile DispatchQueue translateQueue = new DispatchQueue("translateQueue", false); + private FrameLayout bulletinContainer; private FrameLayout contentView; private FrameLayout container; @@ -88,7 +93,6 @@ public class TranslateAlert extends Dialog { private ImageView backButton; private FrameLayout header; private FrameLayout headerShadowView; - private boolean scrollViewScrollable = false; private NestedScrollView scrollView; private TextBlocksLayout textsView; private TextView buttonTextView; @@ -99,7 +103,6 @@ public class TranslateAlert extends Dialog { private FrameLayout.LayoutParams titleLayout; private FrameLayout.LayoutParams subtitleLayout; - private FrameLayout.LayoutParams backLayout; private FrameLayout.LayoutParams headerLayout; private FrameLayout.LayoutParams scrollViewLayout; @@ -107,8 +110,6 @@ public class TranslateAlert extends Dialog { private ArrayList textBlocks; private float containerOpenAnimationT = 0f; - private float openAnimationT = 0f; - private float epsilon = 0.001f; private void openAnimation(float t) { t = Math.min(Math.max(t, 0f), 1f); if (containerOpenAnimationT == t) { @@ -225,17 +226,16 @@ public class TranslateAlert extends Dialog { } public interface OnLinkPress { - public void run(URLSpan urlSpan); + public boolean run(URLSpan urlSpan); } private boolean allowScroll = true; - private ValueAnimator scrollerToBottom = null; private String fromLanguage, toLanguage; private CharSequence text; private BaseFragment fragment; private boolean noforwards; - private OnLinkPress onLinkPress = null; - private Runnable onDismiss = null; + private OnLinkPress onLinkPress; + private Runnable onDismiss; public TranslateAlert(BaseFragment fragment, Context context, String fromLanguage, String toLanguage, CharSequence text, boolean noforwards, OnLinkPress onLinkPress, Runnable onDismiss) { this(fragment, context, -1, null, -1, fromLanguage, toLanguage, text, noforwards, onLinkPress, onDismiss); } @@ -423,7 +423,7 @@ public class TranslateAlert extends Dialog { backButton.setClickable(false); backButton.setAlpha(0f); backButton.setOnClickListener(e -> dismiss()); - header.addView(backButton, backLayout = LayoutHelper.createFrame(56, 56, Gravity.LEFT | Gravity.CENTER_HORIZONTAL)); + header.addView(backButton, LayoutHelper.createFrame(56, 56, Gravity.LEFT | Gravity.CENTER_HORIZONTAL)); headerShadowView = new FrameLayout(context); headerShadowView.setBackgroundColor(Theme.getColor(Theme.key_dialogShadowLine)); @@ -494,7 +494,7 @@ public class TranslateAlert extends Dialog { allTextsView.setHighlightColor(Theme.getColor(Theme.key_chat_inTextSelectionHighlight)); int handleColor = Theme.getColor(Theme.key_chat_TextSelectionCursor); try { - if (Build.VERSION.SDK_INT >= 29) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && !XiaomiUtilities.isMIUI()) { Drawable left = allTextsView.getTextSelectHandleLeft(); left.setColorFilter(handleColor, PorterDuff.Mode.SRC_IN); allTextsView.setTextSelectHandleLeft(left); @@ -504,6 +504,7 @@ public class TranslateAlert extends Dialog { allTextsView.setTextSelectHandleRight(right); } } catch (Exception e) {} + allTextsView.setFocusable(true); allTextsView.setMovementMethod(new LinkMovementMethod()); textsView = new TextBlocksLayout(context, dp(16), Theme.getColor(Theme.key_dialogTextBlack), allTextsView); @@ -541,7 +542,8 @@ public class TranslateAlert extends Dialog { buttonTextView.setText(LocaleController.getString("CloseTranslation", R.string.CloseTranslation)); buttonView = new FrameLayout(context); - buttonView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); +// buttonView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); + buttonView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.getColor(Theme.key_featuredStickers_addButton), 4)); buttonView.addView(buttonTextView); buttonView.setOnClickListener(e -> dismiss()); @@ -774,6 +776,10 @@ public class TranslateAlert extends Dialog { params.height = ViewGroup.LayoutParams.MATCH_PARENT; window.setAttributes(params); + int navigationbarColor = Theme.getColor(Theme.key_windowBackgroundWhite); + AndroidUtilities.setNavigationBarColor(window, navigationbarColor); + AndroidUtilities.setLightNavigationBar(window, AndroidUtilities.computePerceivedBrightness(navigationbarColor) > .721); + container.forceLayout(); } @@ -923,10 +929,8 @@ public class TranslateAlert extends Dialog { return false; } - CharSequence blockText = textBlocks.get(blockIndex); - fetchTranslation( - blockText, + textBlocks.get(blockIndex), Math.min((blockIndex + 1) * 1000, 3500), (String translatedText, String sourceLanguage) -> { loaded = true; @@ -947,9 +951,10 @@ public class TranslateAlert extends Dialog { @Override public void onClick(@NonNull View view) { if (onLinkPress != null) { - onLinkPress.run(urlSpan); - fastHide = true; - dismiss(); + if (onLinkPress.run(urlSpan)) { + fastHide = true; + dismiss(); + } } else { AlertsCreator.showOpenUrlAlert(fragment, urlSpan.getURL(), false, false); } @@ -1006,7 +1011,12 @@ public class TranslateAlert extends Dialog { e.printStackTrace(); } - allTexts = new SpannableStringBuilder(allTexts == null ? "" : allTexts).append(blockIndex == 0 ? "" : "\n").append(spannable); + SpannableStringBuilder allTextsBuilder = new SpannableStringBuilder(allTexts == null ? "" : allTexts); + if (blockIndex != 0) { + allTextsBuilder.append("\n"); + } + allTextsBuilder.append(spannable); + allTexts = allTextsBuilder; textsView.setWholeText(allTexts); LoadingTextView2 block = textsView.getBlockAt(blockIndex); @@ -1019,6 +1029,12 @@ public class TranslateAlert extends Dialog { updateSourceLanguage(); } + if (blockIndex == 0 && AndroidUtilities.isAccessibilityScreenReaderEnabled()) { + if (allTextsView != null) { + allTextsView.requestFocus(); + } + } + blockIndex++; loading = false; }, @@ -1052,88 +1068,85 @@ public class TranslateAlert extends Dialog { public void run(boolean rateLimit); } private void fetchTranslation(CharSequence text, long minDuration, OnTranslationSuccess onSuccess, OnTranslationFail onFail) { - new Thread() { - @Override - public void run() { - String uri = ""; - HttpURLConnection connection = null; - long start = SystemClock.elapsedRealtime(); + if (!translateQueue.isAlive()) { + translateQueue.start(); + } + translateQueue.postRunnable(() -> { + String uri = ""; + HttpURLConnection connection = null; + long start = SystemClock.elapsedRealtime(); + try { + uri = "https://translate.googleapis.com/translate_a/single?client=gtx&sl="; + uri += Uri.encode(fromLanguage); + uri += "&tl="; + uri += Uri.encode(toLanguage); + uri += "&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=0&tsel=0&kc=7&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&q="; + uri += Uri.encode(text.toString()); + connection = (HttpURLConnection) new URI(uri).toURL().openConnection(); + connection.setRequestMethod("GET"); + connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"); + connection.setRequestProperty("Content-Type", "application/json"); + + StringBuilder textBuilder = new StringBuilder(); + try (Reader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")))) { + int c = 0; + while ((c = reader.read()) != -1) { + textBuilder.append((char) c); + } + } + String jsonString = textBuilder.toString(); + + JSONTokener tokener = new JSONTokener(jsonString); + JSONArray array = new JSONArray(tokener); + JSONArray array1 = array.getJSONArray(0); + String sourceLanguage = null; try { - uri = "https://translate.googleapis.com/translate_a/single?client=gtx&sl="; - uri += Uri.encode(fromLanguage); - uri += "&tl="; - uri += Uri.encode(toLanguage); - uri += "&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=0&tsel=0&kc=7&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&q="; - uri += Uri.encode(text.toString()); - connection = (HttpURLConnection) new URI(uri).toURL().openConnection(); - connection.setRequestMethod("GET"); - connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"); - connection.setRequestProperty("Content-Type", "application/json"); - - StringBuilder textBuilder = new StringBuilder(); - try (Reader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")))) { - int c = 0; - while ((c = reader.read()) != -1) { - textBuilder.append((char) c); - } + sourceLanguage = array.getString(2); + } catch (Exception e2) {} + if (sourceLanguage != null && sourceLanguage.contains("-")) { + sourceLanguage = sourceLanguage.substring(0, sourceLanguage.indexOf("-")); + } + StringBuilder result = new StringBuilder(); + for (int i = 0; i < array1.length(); ++i) { + String blockText = array1.getJSONArray(i).getString(0); + if (blockText != null && !blockText.equals("null")) { + result.append(blockText); } - String jsonString = textBuilder.toString(); + } + if (text.length() > 0 && text.charAt(0) == '\n') { + result.insert(0, "\n"); + } + final String finalResult = result.toString(); + final String finalSourceLanguage = sourceLanguage; - JSONTokener tokener = new JSONTokener(jsonString); - JSONArray array = new JSONArray(tokener); - JSONArray array1 = array.getJSONArray(0); - String sourceLanguage = null; + long elapsed = SystemClock.elapsedRealtime() - start; + AndroidUtilities.runOnUIThread(() -> { + if (onSuccess != null) { + onSuccess.run(finalResult, finalSourceLanguage); + } + }, Math.max(0, minDuration - elapsed)); + } catch (Exception e) { + try { + Log.e("translate", "failed to translate a text " + (connection != null ? connection.getResponseCode() : null) + " " + (connection != null ? connection.getResponseMessage() : null)); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + e.printStackTrace(); + + if (onFail != null && !dismissed) { try { - sourceLanguage = array.getString(2); - } catch (Exception e2) {} - if (sourceLanguage != null && sourceLanguage.contains("-")) { - sourceLanguage = sourceLanguage.substring(0, sourceLanguage.indexOf("-")); - } - String result = ""; - for (int i = 0; i < array1.length(); ++i) { - String blockText = array1.getJSONArray(i).getString(0); - if (blockText != null && !blockText.equals("null")) { - result += /*(i > 0 ? "\n" : "") +*/ blockText; - } - } - if (text.length() > 0 && text.charAt(0) == '\n') { - result = "\n" + result; - } - final String finalResult = result; - final String finalSourceLanguage = sourceLanguage; - - long elapsed = SystemClock.elapsedRealtime() - start; - if (elapsed < minDuration) { - sleep(minDuration - elapsed); - } - AndroidUtilities.runOnUIThread(() -> { - if (onSuccess != null) { - onSuccess.run(finalResult, finalSourceLanguage); - } - }); - } catch (Exception e) { - try { - Log.e("translate", "failed to translate a text " + (connection != null ? connection.getResponseCode() : null) + " " + (connection != null ? connection.getResponseMessage() : null)); - } catch (IOException ioException) { - ioException.printStackTrace(); - } - e.printStackTrace(); - - if (onFail != null && !dismissed) { - try { - final boolean rateLimit = connection != null && connection.getResponseCode() == 429; - AndroidUtilities.runOnUIThread(() -> { - onFail.run(rateLimit); - }); - } catch (Exception e2) { - AndroidUtilities.runOnUIThread(() -> { - onFail.run(false); - }); - } + final boolean rateLimit = connection != null && connection.getResponseCode() == 429; + AndroidUtilities.runOnUIThread(() -> { + onFail.run(rateLimit); + }); + } catch (Exception e2) { + AndroidUtilities.runOnUIThread(() -> { + onFail.run(false); + }); } } } - }.start(); + }); } private static void translateText(int currentAccount, TLRPC.InputPeer peer, int msg_id, String from_lang, String to_lang) { TLRPC.TL_messages_translateText req = new TLRPC.TL_messages_translateText(); @@ -1150,9 +1163,7 @@ public class TranslateAlert extends Dialog { req.to_lang = to_lang; try { - ConnectionsManager.getInstance(currentAccount).sendRequest(req, (error, res) -> { - // TODO - }); + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (error, res) -> {}); } catch (Exception e) { FileLog.e(e); } @@ -1209,6 +1220,7 @@ public class TranslateAlert extends Dialog { public LoadingTextView2 addBlock(CharSequence fromText) { LoadingTextView2 textView = new LoadingTextView2(getContext(), fromText, getBlocksCount() > 0, fontSize, textColor); + textView.setFocusable(false); addView(textView); if (wholeTextView != null) { wholeTextView.bringToFront(); @@ -1283,7 +1295,7 @@ public class TranslateAlert extends Dialog { @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { - int y = 0, height = 0; + int y = 0; final int count = getBlocksCount(); for (int i = 0; i < count; ++i) { LoadingTextView2 block = getBlockAt(i); @@ -1294,7 +1306,6 @@ public class TranslateAlert extends Dialog { if (i > 0 && i < count - 1) { y += gap; } - height += blockHeight; } wholeTextView.measure( @@ -1310,7 +1321,6 @@ public class TranslateAlert extends Dialog { } } - public static class InlineLoadingTextView extends ViewGroup { public static final int paddingHorizontal = dp(6), @@ -1345,6 +1355,8 @@ public class TranslateAlert extends Dialog { fromTextView.setMaxLines(1); fromTextView.setSingleLine(true); fromTextView.setEllipsize(null); + fromTextView.setFocusable(false); + fromTextView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); addView(fromTextView); toTextView = new TextView(context) { @@ -1359,6 +1371,7 @@ public class TranslateAlert extends Dialog { toTextView.setMaxLines(1); toTextView.setSingleLine(true); toTextView.setEllipsize(null); + toTextView.setFocusable(true); addView(toTextView); int c1 = Theme.getColor(Theme.key_dialogBackground), @@ -1560,6 +1573,7 @@ public class TranslateAlert extends Dialog { setPadding(paddingHorizontal, paddingVertical, paddingHorizontal, paddingVertical); setClipChildren(false); setWillNotDraw(false); + setFocusable(false); fromTextView = new TextView(context) { @Override @@ -1574,6 +1588,8 @@ public class TranslateAlert extends Dialog { fromTextView.setMaxLines(0); fromTextView.setSingleLine(false); fromTextView.setEllipsize(null); + fromTextView.setFocusable(false); + fromTextView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); addView(fromTextView); toTextView = new TextView(context) { @@ -1588,6 +1604,8 @@ public class TranslateAlert extends Dialog { toTextView.setMaxLines(0); toTextView.setSingleLine(false); toTextView.setEllipsize(null); + toTextView.setFocusable(false); + toTextView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); addView(toTextView); int c1 = Theme.getColor(Theme.key_dialogBackground), @@ -1705,23 +1723,6 @@ public class TranslateAlert extends Dialog { } private RectF fetchedPathRect = new RectF(); - private Path fetchPath = new Path() { - private boolean got = false; - - @Override - public void reset() { - super.reset(); - got = false; - } - - @Override - public void addRect(float left, float top, float right, float bottom, @NonNull Direction dir) { - if (!got) { - fetchedPathRect.set(left - paddingHorizontal, top - paddingVertical, right + paddingHorizontal, bottom + paddingVertical); - got = true; - } - } - }; private void updateLoadingPath() { if (fromTextView != null && fromTextView.getMeasuredWidth() > 0) { loadingPath.reset(); @@ -1731,9 +1732,9 @@ public class TranslateAlert extends Dialog { final int lineCount = loadingLayout.getLineCount(); for (int i = 0; i < lineCount; ++i) { float s = loadingLayout.getLineLeft(i), - e = loadingLayout.getLineRight(i), - l = Math.min(s, e), - r = Math.max(s, e); + e = loadingLayout.getLineRight(i), + l = Math.min(s, e), + r = Math.max(s, e); int start = loadingLayout.getLineStart(i), end = loadingLayout.getLineEnd(i); boolean hasNonEmptyChar = false; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/TranslateAlert2.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/TranslateAlert2.java new file mode 100644 index 000000000..403f65fd2 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/TranslateAlert2.java @@ -0,0 +1,1813 @@ +package org.telegram.ui.Components; + +import static org.telegram.messenger.AndroidUtilities.dp; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.LinearGradient; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Region; +import android.graphics.Shader; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.SystemClock; +import android.text.Layout; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.Spanned; +import android.text.TextPaint; +import android.text.TextUtils; +import android.text.method.LinkMovementMethod; +import android.text.style.ClickableSpan; +import android.text.style.URLSpan; +import android.text.util.Linkify; +import android.util.Log; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewParent; +import android.view.WindowManager; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.json.JSONArray; +import org.json.JSONTokener; +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.DispatchQueue; +import org.telegram.messenger.Emoji; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MessageObject; +import org.telegram.messenger.R; +import org.telegram.messenger.XiaomiUtilities; +import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.Theme; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.net.HttpURLConnection; +import java.net.URI; +import java.nio.charset.Charset; +import java.util.ArrayList; + +public class TranslateAlert2 extends BottomSheet { + + public static volatile DispatchQueue translateQueue = new DispatchQueue("translateQueue", false); + + public RecyclerListView listView; + private LinearLayoutManager layoutManager; + private View paddingView; +// private FrameLayout container; + private TextView titleView; + private LinearLayout subtitleView; + private InlineLoadingTextView subtitleFromView; + private ImageView subtitleArrowView; + private TextView subtitleToView; + private ImageView backButton; + private HeaderView header; + private FrameLayout headerShadowView; +// private NestedScrollView scrollView; + private TextBlocksLayout textsView; + private TextView buttonTextView; + private FrameLayout buttonContainerView; + private FrameLayout buttonView; + private FrameLayout buttonShadowView; + private TextView allTextsView; +// private FrameLayout textsContainerView; + private FrameLayout bulletinContainer; + +// private FrameLayout.LayoutParams titleLayout; +// private FrameLayout.LayoutParams subtitleLayout; +// private FrameLayout.LayoutParams headerLayout; +// private FrameLayout.LayoutParams scrollViewLayout; + + private int blockIndex = 0; + private ArrayList textBlocks; +// +// private boolean canExpand() { +// return ( +// textsView.getBlocksCount() < textBlocks.size() || +// minHeight(true) >= (AndroidUtilities.displayMetrics.heightPixels * heightMaxPercent) +// ); +// } +// private void updateCanExpand() { +// boolean canExpand = canExpand(); +// if (containerOpenAnimationT > 0f && !canExpand) { +// openAnimationTo(0f, false); +// } +// +// buttonShadowView.animate().alpha(canExpand ? 1f : 0f).setDuration((long) (Math.abs(buttonShadowView.getAlpha() - (canExpand ? 1f : 0f)) * 220)).start(); +// } + + public interface OnLinkPress { + public boolean run(URLSpan urlSpan); + } + + @Override + public void onBackPressed() { + dismiss(); + } + + private class HeaderView extends FrameLayout { + + public HeaderView(Context context) { + super(context); + } + + private float expandedT = 0f; + public void setExpandedT(float value) { + backButton.setAlpha(value); + headerShadowView.setAlpha(value); + if (Math.abs(expandedT - value) > 0.01f) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && expandedT > .5f != value > .5f) { + int flags = containerView.getSystemUiVisibility(); + if (value > .5f) { + flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + } else { + flags &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + } + containerView.setSystemUiVisibility(flags); + } + expandedT = value; + invalidate(); + } + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + titleView.layout( + dp(22), + dp(22), + right - left - dp(22), + dp(22) + titleView.getMeasuredHeight() + ); + subtitleView.layout( + dp(22) - LoadingTextView2.paddingHorizontal, + dp(47) - LoadingTextView2.paddingVertical, + right - left - dp(22) - LoadingTextView2.paddingHorizontal, + dp(47) - LoadingTextView2.paddingVertical + subtitleView.getMeasuredHeight() + ); + backButton.layout(0, 0, dp(56), dp(56)); + headerShadowView.layout(0, dp(55), right - left, dp(56)); + } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + if (child == titleView) { + canvas.save(); + canvas.translate(dp(50 * expandedT), dp(-14 * expandedT)); + canvas.scale(1f - expandedT * 0.111f, 1f - expandedT * 0.111f, child.getX(), child.getY() + child.getMeasuredHeight() / 2); + boolean result = super.drawChild(canvas, child, drawingTime); + canvas.restore(); + return result; + } else if (child == subtitleView) { + canvas.save(); + canvas.translate(dp(50 * expandedT), dp(-17 * expandedT)); + boolean result = super.drawChild(canvas, child, drawingTime); + canvas.restore(); + return result; + } else { + return super.drawChild(canvas, child, drawingTime); + } + } + + @Override + protected void measureChild(View child, int parentWidthMeasureSpec, int parentHeightMeasureSpec) { + if (child == backButton) { + backButton.measure( + MeasureSpec.makeMeasureSpec(dp(56), MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(dp(56), MeasureSpec.EXACTLY) + ); + } else { + super.measureChild(child, parentWidthMeasureSpec, parentHeightMeasureSpec); + } + } + } + + private boolean allowScroll = true; + private String fromLanguage, toLanguage; + private CharSequence text; + private BaseFragment fragment; + private boolean noforwards; + private OnLinkPress onLinkPress; + private Runnable onDismiss; + + public void updateCanExpand() { + boolean canExpand = listView.canScrollVertically(1) || listView.canScrollVertically(-1); + float canExpandAlpha = canExpand ? 1f : 0f; + buttonShadowView.animate().alpha(canExpandAlpha).setDuration(200).start(); + allowScroll = canExpand; + } + + public TranslateAlert2(BaseFragment fragment, Context context, String fromLanguage, String toLanguage, CharSequence text, boolean noforwards, OnLinkPress onLinkPress, Runnable onDismiss) { + super(context, false); + fixNavigationBar(); + + this.onLinkPress = onLinkPress; + this.noforwards = noforwards; + this.fragment = fragment; + this.fromLanguage = fromLanguage != null && fromLanguage.equals("und") ? "auto" : fromLanguage; + this.toLanguage = toLanguage; + this.text = text; + this.textBlocks = cutInBlocks(text, 1024); + this.onDismiss = onDismiss; + + if (noforwards) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); + } + + allTextsView = new TextView(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MOST_SPEC); + } + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.save(); + canvas.translate(getPaddingLeft(), getPaddingTop()); + if (links != null && links.draw(canvas)) { + invalidate(); + } + canvas.restore(); + } + @Override + public boolean onTextContextMenuItem(int id) { + if (id == android.R.id.copy && isFocused()) { + android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + android.content.ClipData clip = android.content.ClipData.newPlainText( + "label", + getText().subSequence( + Math.max(0, Math.min(getSelectionStart(), getSelectionEnd())), + Math.max(0, Math.max(getSelectionStart(), getSelectionEnd())) + ) + ); + clipboard.setPrimaryClip(clip); + BulletinFactory.of(bulletinContainer, null).createCopyBulletin(LocaleController.getString("TextCopied", R.string.TextCopied)).show(); + clearFocus(); + return true; + } else { + return super.onTextContextMenuItem(id); + } + } + }; + links = new LinkSpanDrawable.LinkCollector(allTextsView); + allTextsView.setTextColor(0x00000000); + allTextsView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + allTextsView.setTextIsSelectable(!noforwards); + allTextsView.setHighlightColor(Theme.getColor(Theme.key_chat_inTextSelectionHighlight)); + try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && !XiaomiUtilities.isMIUI()) { + final int handleColor = Theme.getColor(Theme.key_chat_TextSelectionCursor); + + Drawable left = allTextsView.getTextSelectHandleLeft(); + left.setColorFilter(handleColor, PorterDuff.Mode.SRC_IN); + allTextsView.setTextSelectHandleLeft(left); + + Drawable right = allTextsView.getTextSelectHandleRight(); + right.setColorFilter(handleColor, PorterDuff.Mode.SRC_IN); + allTextsView.setTextSelectHandleRight(right); + } + } catch (Exception ignore) {} + allTextsView.setMovementMethod(new LinkMovementMethod()); + + textsView = new TextBlocksLayout(context, dp(16), Theme.getColor(Theme.key_dialogTextBlack), allTextsView) { + @Override + protected void onHeightUpdated(int height, int dy) { +// if (dy != 0 && listView != null && listView.canScrollVertically(-dy)) { +// try { +// listView.scrollBy(0, -dy); +// } catch (Exception ignore) {} +// } + paddingView.requestFocus(); + paddingView.requestLayout(); + } + }; + textsView.setPadding( + dp(22) - LoadingTextView2.paddingHorizontal, + dp(12 + 8) - LoadingTextView2.paddingVertical, + dp(22) - LoadingTextView2.paddingHorizontal, + dp(12) - LoadingTextView2.paddingVertical + ); + for (CharSequence blockText : textBlocks) { + textsView.addBlock(blockText); + } + + final Paint backgroundPaint = new Paint(); + backgroundPaint.setColor(Theme.getColor(Theme.key_dialogBackground)); + backgroundPaint.setShadowLayer(dp(2), 0, dp(-0.66f), 0x1e000000); + final Paint navigationBarPaint = new Paint(); + navigationBarPaint.setColor(Theme.getColor(Theme.key_dialogBackgroundGray)); + + containerView = new FrameLayout(context) { + @Override + public boolean hasOverlappingRendering() { + return false; + } + + @Override + protected void dispatchDraw(Canvas canvas) { + float top = getCurrentItemTop(); + float expandedT = 1f - Math.max(0, Math.min(top / dp(48), 1)); + header.setTranslationY(top); + header.setExpandedT(expandedT); + updateCanExpand(); + float r = dp(12) * (1f - expandedT); + AndroidUtilities.rectTmp.set(backgroundPaddingLeft, getPaddingTop() + top - (AndroidUtilities.statusBarHeight + dp(8)) * expandedT + dp(8), getWidth() - backgroundPaddingLeft, getPaddingTop() + top + dp(20)); + canvas.drawRoundRect(AndroidUtilities.rectTmp, r, r, navigationBarPaint); + AndroidUtilities.rectTmp.set(backgroundPaddingLeft, getPaddingTop() + top, getWidth() - backgroundPaddingLeft, getPaddingTop() + getHeight() + dp(12)); + canvas.drawRoundRect(AndroidUtilities.rectTmp, r, r, backgroundPaint); + + super.dispatchDraw(canvas); + } + + @Override + public void setTranslationY(float translationY) { + super.setTranslationY(translationY); + onContainerTranslationYChanged(translationY); + } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + if (child == listView) { + canvas.save(); + canvas.clipRect(0, getPaddingTop() + listView.getPaddingTop(), getWidth(), getHeight() - listView.getPaddingBottom()); + boolean result = super.drawChild(canvas, child, drawingTime); + canvas.restore(); + return result; + } else { + return super.drawChild(canvas, child, drawingTime); + } + } + }; + containerView.setPadding(backgroundPaddingLeft, AndroidUtilities.statusBarHeight, backgroundPaddingLeft, 0); + containerView.setClipChildren(false); + containerView.setClipToPadding(false); + containerView.setWillNotDraw(false); + + listView = new RecyclerListView(context) { + + @Override + public View getFocusedChild() { + return textsView; + } + + @Override + public void onScrolled(int dx, int dy) { + checkForNextLoading(); + super.onScrolled(dx, dy); + containerView.invalidate(); + } + + @Override + public void onScrollStateChanged(int state) { + super.onScrollStateChanged(state); + + if (state == SCROLL_STATE_IDLE && header.expandedT > 0 && header.expandedT < 1) { + smoothScrollBy(0, (int) header.getTranslationY()); + } + } + + @Override + public boolean onTouchEvent(MotionEvent e) { + if (!allowScroll) { + return false; + } + return super.onTouchEvent(e); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent e) { + if (!allowScroll) { + return false; + } + return super.onInterceptTouchEvent(e); + } + }; + listView.setClipChildren(true); + listView.setClipToPadding(true); + listView.setPadding(0, dp(56), 0, dp(80)); + listView.setLayoutManager(layoutManager = new LinearLayoutManager(context) { + @Override + public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) { + super.onLayoutChildren(recycler, state); + + } + }); + layoutManager.setOrientation(RecyclerView.VERTICAL); + layoutManager.setReverseLayout(true); + listView.setAdapter(new RecyclerView.Adapter() { + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + if (viewType == 0) { + return new RecyclerListView.Holder(textsView); + } + return new RecyclerListView.Holder(paddingView); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {} + + @Override + public int getItemCount() { + return 2; + } + }); + + View redDot = new View(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(32), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(32), MeasureSpec.EXACTLY)); + } + }; + redDot.setBackgroundColor(0xffff0000); + containerView.addView(redDot); + + containerView.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + + header = new HeaderView(context); + header.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + containerView.addView(header, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.FILL_HORIZONTAL)); + + titleView = new TextView(context); + titleView.setPivotX(LocaleController.isRTL ? titleView.getWidth() : 0); + titleView.setPivotY(0); + titleView.setLines(1); + titleView.setText(LocaleController.getString("AutomaticTranslation", R.string.AutomaticTranslation)); + titleView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + titleView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + titleView.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); + titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + header.addView(titleView, LayoutHelper.createFrame( + LayoutHelper.MATCH_PARENT, + LayoutHelper.WRAP_CONTENT, + Gravity.FILL_HORIZONTAL | Gravity.TOP, + 22, 22,22, 0 + )); + titleView.post(() -> { + titleView.setPivotX(LocaleController.isRTL ? titleView.getWidth() : 0); + }); + + subtitleView = new LinearLayout(context); + subtitleView.setOrientation(LinearLayout.HORIZONTAL); + if (Build.VERSION.SDK_INT >= 17) { + subtitleView.setLayoutDirection(LocaleController.isRTL ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR); + } + subtitleView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + + String fromLanguageName = languageName(fromLanguage); + subtitleFromView = new InlineLoadingTextView(context, fromLanguageName == null ? languageName(toLanguage) : fromLanguageName, dp(14), Theme.getColor(Theme.key_player_actionBarSubtitle)) { + @Override + protected void onLoadAnimation(float t) { + MarginLayoutParams lp = (MarginLayoutParams) subtitleFromView.getLayoutParams(); + if (lp != null) { + if (LocaleController.isRTL) { + lp.leftMargin = dp(2f - t * 6f); + } else { + lp.rightMargin = dp(2f - t * 6f); + } + subtitleFromView.setLayoutParams(lp); + } + } + }; + subtitleFromView.showLoadingText = false; + subtitleArrowView = new ImageView(context); + subtitleArrowView.setImageResource(R.drawable.search_arrow); + subtitleArrowView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_player_actionBarSubtitle), PorterDuff.Mode.MULTIPLY)); + if (LocaleController.isRTL) { + subtitleArrowView.setScaleX(-1f); + } + + subtitleToView = new TextView(context); + subtitleToView.setLines(1); + subtitleToView.setTextColor(Theme.getColor(Theme.key_player_actionBarSubtitle)); + subtitleToView.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp(14)); + subtitleToView.setText(languageName(toLanguage)); + + if (LocaleController.isRTL) { + subtitleView.setPadding(InlineLoadingTextView.paddingHorizontal, 0, 0, 0); + subtitleView.addView(subtitleToView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL)); + subtitleView.addView(subtitleArrowView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 3, 1, 3, 0)); + subtitleView.addView(subtitleFromView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 0, 0, 0, 0)); + } else { + subtitleView.setPadding(0, 0, InlineLoadingTextView.paddingHorizontal, 0); + subtitleView.addView(subtitleFromView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 0, 0, 0, 0)); + subtitleView.addView(subtitleArrowView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 3, 1, 3, 0)); + subtitleView.addView(subtitleToView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL)); + } + if (fromLanguageName != null) { + subtitleFromView.set(fromLanguageName); + } + + header.addView(subtitleView, LayoutHelper.createFrame( + LayoutHelper.MATCH_PARENT, + LayoutHelper.WRAP_CONTENT, + Gravity.TOP | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), + 22 - LoadingTextView2.paddingHorizontal / AndroidUtilities.density, + 47 - LoadingTextView2.paddingVertical / AndroidUtilities.density, + 22 - LoadingTextView2.paddingHorizontal / AndroidUtilities.density, + 0 + )); + + backButton = new ImageView(context); + backButton.setImageResource(R.drawable.ic_ab_back); + backButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_dialogTextBlack), PorterDuff.Mode.MULTIPLY)); + backButton.setScaleType(ImageView.ScaleType.FIT_CENTER); + backButton.setPadding(AndroidUtilities.dp(16), 0, AndroidUtilities.dp(16), 0); + backButton.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_dialogButtonSelector))); + backButton.setClickable(false); + backButton.setAlpha(0f); + backButton.setOnClickListener(e -> { + if (backButton.getAlpha() > .5f) { + dismiss(); + } + }); + header.addView(backButton, LayoutHelper.createFrame(56, 56, Gravity.LEFT | Gravity.CENTER_HORIZONTAL)); + + headerShadowView = new FrameLayout(context); + headerShadowView.setBackgroundColor(Theme.getColor(Theme.key_dialogShadowLine)); + headerShadowView.setAlpha(0); + header.addView(headerShadowView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 1, Gravity.BOTTOM | Gravity.FILL_HORIZONTAL)); + + paddingView = new View(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int padding = (int) Math.max(AndroidUtilities.displaySize.y * .5f, listView.getMeasuredHeight() - listView.getPaddingTop() - listView.getPaddingBottom() - textsView.height()); + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(padding, MeasureSpec.EXACTLY)); + } + }; + +// +// header.setClipChildren(false); +// container.addView(header, headerLayout = LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 70, Gravity.FILL_HORIZONTAL | Gravity.TOP)); + +// textsContainerView = new FrameLayout(context); +// textsContainerView.addView(textsView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + +// scrollView.addView(textsContainerView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 1f)); + +// container.addView(scrollView, scrollViewLayout = LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.FILL, 0, 70, 0, 81)); + + fetchNext(); + + +// container.addView(buttonShadowView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 1, Gravity.BOTTOM | Gravity.FILL_HORIZONTAL, 0, 0, 0, 80)); + + buttonTextView = new TextView(context); + buttonTextView.setLines(1); + buttonTextView.setSingleLine(true); + buttonTextView.setGravity(Gravity.CENTER_HORIZONTAL); + buttonTextView.setEllipsize(TextUtils.TruncateAt.END); + buttonTextView.setGravity(Gravity.CENTER); + buttonTextView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); + buttonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + buttonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + buttonTextView.setText(LocaleController.getString("CloseTranslation", R.string.CloseTranslation)); + + buttonView = new FrameLayout(context); + buttonView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + buttonView.addView(buttonTextView); + buttonView.setOnClickListener(e -> dismiss()); + + buttonContainerView = new FrameLayout(context); + buttonContainerView.addView(buttonView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.FILL, 16, 16, 16, 16)); + + buttonShadowView = new FrameLayout(context); + buttonShadowView.setBackgroundColor(Theme.getColor(Theme.key_dialogShadowLine)); + buttonShadowView.setAlpha(0); + buttonContainerView.addView(buttonShadowView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 1, Gravity.TOP | Gravity.FILL_HORIZONTAL)); + + containerView.addView(buttonContainerView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 80, Gravity.BOTTOM | Gravity.FILL_HORIZONTAL)); + + bulletinContainer = new FrameLayout(context); + containerView.addView(bulletinContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.FILL, 0, 0, 0, 81)); + } + + private float getCurrentItemTop() { + View child = listView.getChildAt(0); + if (child == null) { + return 0; + } + RecyclerListView.Holder holder = (RecyclerListView.Holder) listView.findContainingViewHolder(child); + if (holder != null && holder.getAdapterPosition() == 0) { + return Math.max(0, child.getY() - header.getMeasuredHeight()); + } + return 0; + } + + @Override + protected boolean canDismissWithSwipe() { + return !listView.canScrollVertically(-1); + } + + // private boolean scrollAtBottom() { +// View view = (View) scrollView.getChildAt(scrollView.getChildCount() - 1); +// int bottom = view.getBottom(); +// LoadingTextView2 lastUnloadedBlock = textsView.getFirstUnloadedBlock(); +// if (lastUnloadedBlock != null) { +// bottom = lastUnloadedBlock.getTop(); +// } +// int diff = (bottom - (scrollView.getHeight() + scrollView.getScrollY())); +// return diff <= textsContainerView.getPaddingBottom(); +// } + + private boolean hasSelection() { + return allTextsView.hasSelection(); + } + + private Rect containerRect = new Rect(); + private Rect textRect = new Rect(); + private Rect translateMoreRect = new Rect(); + private Rect buttonRect = new Rect(); + private Rect backRect = new Rect(); + private Rect scrollRect = new Rect(); + private float fromY = 0; + private boolean pressedOutside = false; + private boolean maybeScrolling = false; + private boolean scrolling = false; + private boolean fromScrollRect = false; + private boolean fromTranslateMoreView = false; + private float fromScrollViewY = 0; + private Spannable allTexts = null; + private LinkSpanDrawable pressedLink; + private LinkSpanDrawable.LinkCollector links; + +// @Override +// public boolean dispatchTouchEvent(@NonNull MotionEvent event) { +// try { +// float x = event.getX(); +// float y = event.getY(); +// +// container.getGlobalVisibleRect(containerRect); +// if (!containerRect.contains((int) x, (int) y)) { +// if (event.getAction() == MotionEvent.ACTION_DOWN) { +// pressedOutside = true; +// return true; +// } else if (event.getAction() == MotionEvent.ACTION_UP) { +// if (pressedOutside) { +// pressedOutside = false; +// dismiss(); +// return true; +// } +// } +// } +// +// try { +// allTextsView.getGlobalVisibleRect(textRect); +// if (textRect.contains((int) x, (int) y) && !maybeScrolling) { +// Layout allTextsLayout = allTextsView.getLayout(); +// int tx = (int) (x - allTextsView.getLeft() - container.getLeft()), +// ty = (int) (y - allTextsView.getTop() - container.getTop() - scrollView.getTop() + scrollView.getScrollY()); +// final int line = allTextsLayout.getLineForVertical(ty); +// final int off = allTextsLayout.getOffsetForHorizontal(line, tx); +// +// final float left = allTextsLayout.getLineLeft(line); +// if (allTexts instanceof Spannable && left <= tx && left + allTextsLayout.getLineWidth(line) >= tx) { +// ClickableSpan[] linkSpans = allTexts.getSpans(off, off, ClickableSpan.class); +// if (linkSpans != null && linkSpans.length >= 1) { +// if (event.getAction() == MotionEvent.ACTION_UP && pressedLink.getSpan() == linkSpans[0]) { +// ((ClickableSpan) pressedLink.getSpan()).onClick(allTextsView); +// if (links != null) { +// links.removeLink(pressedLink); +// } +// pressedLink = null; +// allTextsView.setTextIsSelectable(!noforwards); +// } else if (event.getAction() == MotionEvent.ACTION_DOWN) { +// pressedLink = new LinkSpanDrawable(linkSpans[0], fragment.getResourceProvider(), tx, ty, false); +// if (links != null) { +// links.addLink(pressedLink); +// } +// LinkPath path = pressedLink.obtainNewPath(); +// int start = allTexts.getSpanStart(pressedLink.getSpan()); +// int end = allTexts.getSpanEnd(pressedLink.getSpan()); +// path.setCurrentLayout(allTextsLayout, start, 0); +// allTextsLayout.getSelectionPath(start, end, path); +// } +// allTextsView.invalidate(); +// return true; +// } +// } +// } +// if (pressedLink != null) { +// if (links != null) { +// links.clear(); +// } +// pressedLink = null; +// } +// } catch (Exception e2) { +// e2.printStackTrace(); +// } +// +// scrollView.getGlobalVisibleRect(scrollRect); +// backButton.getGlobalVisibleRect(backRect); +// buttonView.getGlobalVisibleRect(buttonRect); +// if (pressedLink == null && /*!(scrollRect.contains((int) x, (int) y) && !canExpand() && containerOpenAnimationT < .5f && !scrolling) &&*/ !hasSelection()) { +// if ( +// !backRect.contains((int) x, (int) y) && +// !buttonRect.contains((int) x, (int) y) && +// event.getAction() == MotionEvent.ACTION_DOWN +// ) { +// fromScrollRect = scrollRect.contains((int) x, (int) y) && (containerOpenAnimationT > 0 || !canExpand()); +// maybeScrolling = true; +// scrolling = scrollRect.contains((int) x, (int) y) && textsView.getBlocksCount() > 0 && !((LoadingTextView2) textsView.getBlockAt(0)).loaded; +// fromY = y; +// fromScrollY = getScrollY(); +// fromScrollViewY = scrollView.getScrollY(); +// return super.dispatchTouchEvent(event) || true; +// } else if (maybeScrolling && (event.getAction() == MotionEvent.ACTION_MOVE || event.getAction() == MotionEvent.ACTION_UP)) { +// float dy = fromY - y; +// if (fromScrollRect) { +// dy = -Math.max(0, -(fromScrollViewY + dp(48)) - dy); +// if (dy < 0) { +// scrolling = true; +// allTextsView.setTextIsSelectable(false); +// } +// } else if (Math.abs(dy) > dp(4) && !fromScrollRect) { +// scrolling = true; +// allTextsView.setTextIsSelectable(false); +// scrollView.stopNestedScroll(); +// allowScroll = false; +// } +// float fullHeight = AndroidUtilities.displayMetrics.heightPixels, +// minHeight = Math.min(minHeight(), fullHeight * heightMaxPercent); +// float scrollYPx = minHeight * (1f - -Math.min(Math.max(fromScrollY, -1), 0)) + (fullHeight - minHeight) * Math.min(1, Math.max(fromScrollY, 0)) + dy; +// float scrollY = scrollYPx > minHeight ? (scrollYPx - minHeight) / (fullHeight - minHeight) : -(1f - scrollYPx / minHeight); +// if (!canExpand()) { +// scrollY = Math.min(scrollY, 0); +// } +// updateCanExpand(); +// +// if (scrolling) { +// setScrollY(scrollY); +// if (event.getAction() == MotionEvent.ACTION_UP) { +// scrolling = false; +// allTextsView.setTextIsSelectable(!noforwards); +// maybeScrolling = false; +// allowScroll = true; +// scrollYTo( +// Math.abs(dy) > dp(16) ? +// Math.round(fromScrollY) + (scrollY > fromScrollY ? 1f : -1f) * (float) Math.ceil(Math.abs(fromScrollY - scrollY)) : +// Math.round(fromScrollY), +// () -> { +// contentView.post(this::checkForNextLoading); +// } +// ); +// } +// return true; +// } +// } +// } +// if (hasSelection() && maybeScrolling) { +// scrolling = false; +// allTextsView.setTextIsSelectable(!noforwards); +// maybeScrolling = false; +// allowScroll = true; +// scrollYTo(Math.round(fromScrollY)); +// } +// return super.dispatchTouchEvent(event); +// } catch (Exception e) { +// e.printStackTrace(); +// return super.dispatchTouchEvent(event); +// } +// return super.dispatchTouchEvent(event); +// } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + containerView.setPadding(backgroundPaddingLeft, AndroidUtilities.statusBarHeight, backgroundPaddingLeft, 0); + } +// +// contentView.setPadding(0, AndroidUtilities.statusBarHeight, 0, 0); +// contentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); +// setContentView(contentView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); +// +// Window window = getWindow(); +// window.setWindowAnimations(R.style.DialogNoAnimation); +// WindowManager.LayoutParams params = window.getAttributes(); +// params.width = ViewGroup.LayoutParams.MATCH_PARENT; +// params.gravity = Gravity.TOP | Gravity.LEFT; +// params.dimAmount = 0; +// params.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND; +// if (Build.VERSION.SDK_INT >= 21) { +// params.flags |= +// WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | +// WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | +// WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR | +// WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; +// } +// params.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; +// params.height = ViewGroup.LayoutParams.MATCH_PARENT; +// if (Build.VERSION.SDK_INT >= 28) { +// params.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; +// } +// window.setAttributes(params); +// } + + protected ColorDrawable backDrawable = new ColorDrawable(0xff000000) { + @Override + public void setAlpha(int alpha) { + super.setAlpha(alpha); +// contentView.invalidate(); + } + }; + + public String languageName(String locale) { + // sorry, no more vodka + if (locale == null || locale.equals("und") || locale.equals("auto")) { + return null; + } + LocaleController.LocaleInfo thisLanguageInfo = LocaleController.getInstance().getBuiltinLanguageByPlural(locale); + if (thisLanguageInfo == null) { + return null; + } + LocaleController.LocaleInfo currentLanguageInfo = LocaleController.getInstance().getCurrentLocaleInfo(); + boolean isCurrentLanguageEnglish = currentLanguageInfo != null && "en".equals(currentLanguageInfo.pluralLangCode); + if (isCurrentLanguageEnglish) { + // trying to show this language in a language of the interface, but there are only names in english and its own + return thisLanguageInfo.nameEnglish; + } else { + return thisLanguageInfo.name; + } + } + + public void updateSourceLanguage() { + String fromLanguageName = languageName(fromLanguage); + if (fromLanguageName != null) { + subtitleView.setAlpha(1); + if (!subtitleFromView.loaded) { + subtitleFromView.loaded(fromLanguageName); + } + } else if (loaded) { + subtitleView.animate().alpha(0).setDuration(150).start(); + titleView.animate().scaleX(1.2f).scaleY(1.2f).translationY(dp(5)).setDuration(150).start(); + } + } + + private ArrayList cutInBlocks(CharSequence full, int maxBlockSize) { + ArrayList blocks = new ArrayList<>(); + if (full == null) { + return blocks; + } + while (full.length() > maxBlockSize) { + String maxBlockStr = full.subSequence(0, maxBlockSize).toString(); + int n = maxBlockStr.lastIndexOf("\n\n"); + if (n == -1) n = maxBlockStr.lastIndexOf("\n"); + if (n == -1) n = maxBlockStr.lastIndexOf(". "); + if (n == -1) n = maxBlockStr.length(); + blocks.add(full.subSequence(0, n + 1)); + full = full.subSequence(n + 1, full.length()); + } + if (full.length() > 0) { + blocks.add(full); + } + return blocks; + } + + private boolean loading = false; + private boolean loaded = false; + private boolean fetchNext() { + if (loading) { + return false; + } + loading = true; + + if (blockIndex >= textBlocks.size()) { + return false; + } + + fetchTranslation( + textBlocks.get(blockIndex), + Math.min((blockIndex + 1) * 1000, 3500), + (String translatedText, String sourceLanguage) -> { + loaded = true; + Spannable spannable = new SpannableStringBuilder(translatedText); + try { + MessageObject.addUrlsByPattern(false, spannable, false, 0, 0, true); + URLSpan[] urlSpans = spannable.getSpans(0, spannable.length(), URLSpan.class); + for (int i = 0; i < urlSpans.length; ++i) { + URLSpan urlSpan = urlSpans[i]; + int start = spannable.getSpanStart(urlSpan), + end = spannable.getSpanEnd(urlSpan); + if (start == -1 || end == -1) { + continue; + } + spannable.removeSpan(urlSpan); + spannable.setSpan( + new ClickableSpan() { + @Override + public void onClick(@NonNull View view) { + if (onLinkPress != null) { + onLinkPress.run(urlSpan); + dismiss(); + } else { + AlertsCreator.showOpenUrlAlert(fragment, urlSpan.getURL(), false, false); + } + } + + @Override + public void updateDrawState(@NonNull TextPaint ds) { + int alpha = Math.min(ds.getAlpha(), ds.getColor() >> 24 & 0xff); + if (!(urlSpan instanceof URLSpanNoUnderline)) { + ds.setUnderlineText(true); + } + ds.setColor(Theme.getColor(Theme.key_dialogTextLink)); + ds.setAlpha(alpha); + } + }, + start, end, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ); + } + + AndroidUtilities.addLinks(spannable, Linkify.WEB_URLS); + urlSpans = spannable.getSpans(0, spannable.length(), URLSpan.class); + for (int i = 0; i < urlSpans.length; ++i) { + URLSpan urlSpan = urlSpans[i]; + int start = spannable.getSpanStart(urlSpan), + end = spannable.getSpanEnd(urlSpan); + if (start == -1 || end == -1) { + continue; + } + spannable.removeSpan(urlSpan); + spannable.setSpan( + new ClickableSpan() { + @Override + public void onClick(@NonNull View view) { + AlertsCreator.showOpenUrlAlert(fragment, urlSpan.getURL(), false, false); + } + + @Override + public void updateDrawState(@NonNull TextPaint ds) { + int alpha = Math.min(ds.getAlpha(), ds.getColor() >> 24 & 0xff); + if (!(urlSpan instanceof URLSpanNoUnderline)) + ds.setUnderlineText(true); + ds.setColor(Theme.getColor(Theme.key_dialogTextLink)); + ds.setAlpha(alpha); + } + }, + start, end, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ); + } + + spannable = (Spannable) Emoji.replaceEmoji(spannable, allTextsView.getPaint().getFontMetricsInt(), dp(14), false); + } catch (Exception e) { + e.printStackTrace(); + } + + SpannableStringBuilder allTextsBuilder = new SpannableStringBuilder(allTexts == null ? "" : allTexts); + if (blockIndex != 0) { + allTextsBuilder.append("\n"); + } + allTextsBuilder.append(spannable); + allTexts = allTextsBuilder; + textsView.setWholeText(allTexts); + + LoadingTextView2 block = textsView.getBlockAt(blockIndex); + if (block != null) { + block.loaded(spannable, () -> AndroidUtilities.runOnUIThread(this::checkForNextLoading)); + } + + if (sourceLanguage != null) { + fromLanguage = sourceLanguage; + updateSourceLanguage(); + } + + blockIndex++; + loading = false; + }, + (boolean rateLimit) -> { + Toast.makeText( + getContext(), + rateLimit ? + LocaleController.getString("TranslationFailedAlert1", R.string.TranslationFailedAlert1) : + LocaleController.getString("TranslationFailedAlert2", R.string.TranslationFailedAlert2), + Toast.LENGTH_SHORT + ).show(); + + if (blockIndex == 0) { + dismiss(); + } + } + ); + return true; + } + + @Override + public void dismissInternal() { + super.dismissInternal(); + if (onDismiss != null) { + onDismiss.run(); + } + } + +// @Override +// public boolean dispatchTouchEvent(@NonNull MotionEvent event) { +// if (event.getAction() == MotionEvent.ACTION_DOWN && event.getY() < contentView.getPaddingTop() + header.getTranslationY()) { +// dismiss(); +// return true; +// } +// return super.dispatchTouchEvent(event); +// } + + private void checkForNextLoading() { + if (!listView.canScrollVertically(-1)) { + fetchNext(); + } + } + + public interface OnTranslationSuccess { + public void run(String translated, String sourceLanguage); + } + public interface OnTranslationFail { + public void run(boolean rateLimit); + } + private void fetchTranslation(CharSequence text, long minDuration, OnTranslationSuccess onSuccess, OnTranslationFail onFail) { + if (!translateQueue.isAlive()) { + translateQueue.start(); + } + translateQueue.postRunnable(() -> { + String uri = ""; + HttpURLConnection connection = null; + long start = SystemClock.elapsedRealtime(); + try { + uri = "https://translate.googleapis.com/translate_a/single?client=gtx&sl="; + uri += Uri.encode(fromLanguage); + uri += "&tl="; + uri += Uri.encode(toLanguage); + uri += "&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=0&tsel=0&kc=7&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&q="; + uri += Uri.encode(text.toString()); + connection = (HttpURLConnection) new URI(uri).toURL().openConnection(); + connection.setRequestMethod("GET"); + connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"); + connection.setRequestProperty("Content-Type", "application/json"); + + StringBuilder textBuilder = new StringBuilder(); + try (Reader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")))) { + int c; + while ((c = reader.read()) != -1) { + textBuilder.append((char) c); + } + } + String jsonString = textBuilder.toString(); + + JSONTokener tokener = new JSONTokener(jsonString); + JSONArray array = new JSONArray(tokener); + JSONArray array1 = array.getJSONArray(0); + String sourceLanguage = null; + try { + sourceLanguage = array.getString(2); + } catch (Exception e2) {} + if (sourceLanguage != null && sourceLanguage.contains("-")) { + sourceLanguage = sourceLanguage.substring(0, sourceLanguage.indexOf("-")); + } + StringBuilder result = new StringBuilder(); + for (int i = 0; i < array1.length(); ++i) { + String blockText = array1.getJSONArray(i).getString(0); + if (blockText != null && !blockText.equals("null")) { + result.append(blockText); + } + } + if (text.length() > 0 && text.charAt(0) == '\n') { + result.insert(0, "\n"); + } + final String finalResult = result.toString(); + final String finalSourceLanguage = sourceLanguage; + + long elapsed = SystemClock.elapsedRealtime() - start; + AndroidUtilities.runOnUIThread(() -> { + if (onSuccess != null) { + onSuccess.run(finalResult, finalSourceLanguage); + } + }, Math.max(0, minDuration - elapsed)); + } catch (Exception e) { + try { + Log.e("translate", "failed to translate a text " + (connection != null ? connection.getResponseCode() : null) + " " + (connection != null ? connection.getResponseMessage() : null)); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + e.printStackTrace(); + + if (onFail != null) { + try { + final boolean rateLimit = connection != null && connection.getResponseCode() == 429; + AndroidUtilities.runOnUIThread(() -> { + onFail.run(rateLimit); + }); + } catch (Exception e2) { + AndroidUtilities.runOnUIThread(() -> { + onFail.run(false); + }); + } + } + } + }); + } + private static void translateText(int currentAccount, TLRPC.InputPeer peer, int msg_id, String from_lang, String to_lang) { + TLRPC.TL_messages_translateText req = new TLRPC.TL_messages_translateText(); + + req.peer = peer; + req.msg_id = msg_id; + req.flags |= 1; + + if (from_lang != null) { + req.from_lang = from_lang; + req.flags |= 4; + } + + req.to_lang = to_lang; + + try { + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (error, res) -> {}); + } catch (Exception e) { + FileLog.e(e); + } + } + + public static TranslateAlert2 showAlert(Context context, BaseFragment fragment, int currentAccount, TLRPC.InputPeer peer, int msgId, String fromLanguage, String toLanguage, CharSequence text, boolean noforwards, OnLinkPress onLinkPress, Runnable onDismiss) { + if (peer != null) { + translateText(currentAccount, peer, msgId, fromLanguage != null && fromLanguage.equals("und") ? null : fromLanguage, toLanguage); + } + TranslateAlert2 alert = new TranslateAlert2(fragment, context, fromLanguage, toLanguage, text, noforwards, onLinkPress, onDismiss); + if (fragment != null) { + if (fragment.getParentActivity() != null) { + fragment.showDialog(alert); + } + } else { + alert.show(); + } + return alert; + } + public static TranslateAlert2 showAlert(Context context, BaseFragment fragment, String fromLanguage, String toLanguage, CharSequence text, boolean noforwards, OnLinkPress onLinkPress, Runnable onDismiss) { + TranslateAlert2 alert = new TranslateAlert2(fragment, context, fromLanguage, toLanguage, text, noforwards, onLinkPress, onDismiss); + if (fragment != null) { + if (fragment.getParentActivity() != null) { + fragment.showDialog(alert); + } + } else { + alert.show(); + } + return alert; + } + + private static final int MOST_SPEC = View.MeasureSpec.makeMeasureSpec(999999, View.MeasureSpec.AT_MOST); + public static class TextBlocksLayout extends ViewGroup { + + private TextView wholeTextView; + private final int fontSize; + private final int textColor; + + public TextBlocksLayout(Context context, int fontSize, int textColor, TextView wholeTextView) { + super(context); + + this.fontSize = fontSize; + this.textColor = textColor; + + if (wholeTextView != null) { + wholeTextView.setPadding(LoadingTextView2.paddingHorizontal, LoadingTextView2.paddingVertical, LoadingTextView2.paddingHorizontal, LoadingTextView2.paddingVertical); + addView(this.wholeTextView = wholeTextView); + } + } + + public void setWholeText(CharSequence wholeText) { + // having focus on that text view can cause jumping scroll to the top after loading a new block + // TODO(dkaraush): preserve selection after setting a new text + wholeTextView.clearFocus(); + wholeTextView.setText(wholeText); + } + + public LoadingTextView2 addBlock(CharSequence fromText) { + LoadingTextView2 textView = new LoadingTextView2(getContext(), fromText, getBlocksCount() > 0, fontSize, textColor); + addView(textView); + if (wholeTextView != null) { + wholeTextView.bringToFront(); + } + return textView; + } + + public int getBlocksCount() { + return getChildCount() - (wholeTextView != null ? 1 : 0); + } + public LoadingTextView2 getBlockAt(int i) { + View child = getChildAt(i); + if (child instanceof LoadingTextView2) { + return (LoadingTextView2) child; + } + return null; + } + + public LoadingTextView2 getFirstUnloadedBlock() { + final int count = getBlocksCount(); + for (int i = 0; i < count; ++i) { + LoadingTextView2 block = getBlockAt(i); + if (block != null && !block.loaded) + return block; + } + return null; + } + + private static final int gap = -LoadingTextView2.paddingVertical * 4 + dp(.48f); + public int height() { + int height = 0; + final int count = getBlocksCount(); + for (int i = 0; i < count; ++i) { + height += getBlockAt(i).height(); + } + return getPaddingTop() + height + getPaddingBottom(); + } + + protected void onHeightUpdated(int height, int dy) {} + + public void updateHeight() { + boolean updated; + int newHeight = height(); + int dy = 0; + RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) getLayoutParams(); + if (lp == null) { + lp = new RecyclerView.LayoutParams(LayoutParams.MATCH_PARENT, newHeight); + updated = true; + } else { + updated = lp.height != newHeight; + dy = newHeight - lp.height; + lp.height = newHeight; + } + + if (updated) { + this.setLayoutParams(lp); + onHeightUpdated(newHeight, dy); + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int count = getBlocksCount(); + final int innerWidthMeasureSpec = MeasureSpec.makeMeasureSpec( + MeasureSpec.getSize(widthMeasureSpec) - getPaddingLeft() - getPaddingRight(), + MeasureSpec.getMode(widthMeasureSpec) + ); + for (int i = 0; i < count; ++i) { + LoadingTextView2 block = getBlockAt(i); + block.measure(innerWidthMeasureSpec, MOST_SPEC); + } + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(height(), MeasureSpec.EXACTLY)); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + int y = 0; + final int count = getBlocksCount(); + for (int i = 0; i < count; ++i) { + LoadingTextView2 block = getBlockAt(i); + final int blockHeight = block.height(); + final int translationY = i > 0 ? gap : 0; + block.layout(getPaddingLeft(), getPaddingTop() + y + translationY, r - l - getPaddingRight(), getPaddingTop() + y + blockHeight + translationY); + y += blockHeight; + if (i > 0 && i < count - 1) { + y += gap; + } + } + + wholeTextView.measure( + MeasureSpec.makeMeasureSpec(r - l - getPaddingLeft() - getPaddingRight(), MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(b - t - getPaddingTop() - getPaddingBottom(), MeasureSpec.EXACTLY) + ); + wholeTextView.layout( + getPaddingLeft(), + getPaddingTop(), + (r - l) - getPaddingRight(), + getPaddingTop() + wholeTextView.getMeasuredHeight() + ); + } + } + + public static class InlineLoadingTextView extends ViewGroup { + + public static final int paddingHorizontal = dp(4), + paddingVertical = 0; + + + public boolean showLoadingText = true; + + private final TextView fromTextView; + private final TextView toTextView; + + private final ValueAnimator loadingAnimator; + + private final long start = SystemClock.elapsedRealtime(); + public InlineLoadingTextView(Context context, CharSequence fromText, int fontSize, int textColor) { + super(context); + + setPadding(paddingHorizontal, paddingVertical, paddingHorizontal, paddingVertical); + setClipChildren(false); + setWillNotDraw(false); + + fromTextView = new TextView(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(MOST_SPEC, MOST_SPEC); + } + }; + fromTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); + fromTextView.setTextColor(textColor); + fromTextView.setText(fromText); + fromTextView.setLines(1); + fromTextView.setMaxLines(1); + fromTextView.setSingleLine(true); + fromTextView.setEllipsize(null); + addView(fromTextView); + + toTextView = new TextView(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(MOST_SPEC, MOST_SPEC); + } + }; + toTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); + toTextView.setTextColor(textColor); + toTextView.setLines(1); + toTextView.setMaxLines(1); + toTextView.setSingleLine(true); + toTextView.setEllipsize(null); + addView(toTextView); + + int c1 = Theme.getColor(Theme.key_dialogBackground), + c2 = Theme.getColor(Theme.key_dialogBackgroundGray); + LinearGradient gradient = new LinearGradient(0, 0, gradientWidth, 0, new int[]{ c1, c2, c1 }, new float[] { 0, 0.67f, 1f }, Shader.TileMode.REPEAT); + loadingPaint.setShader(gradient); + + loadingAnimator = ValueAnimator.ofFloat(0f, 1f); + loadingAnimator.addUpdateListener(a -> invalidate()); + loadingAnimator.setDuration(Long.MAX_VALUE); + loadingAnimator.start(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + fromTextView.measure(0, 0); + toTextView.measure(0, 0); + super.onMeasure( + MeasureSpec.makeMeasureSpec( + (int) AndroidUtilities.lerp(fromTextView.getMeasuredWidth(), toTextView.getMeasuredWidth(), loadingT) + getPaddingLeft() + getPaddingRight(), + MeasureSpec.EXACTLY + ), + MeasureSpec.makeMeasureSpec( + Math.max(fromTextView.getMeasuredHeight(), toTextView.getMeasuredHeight()), + MeasureSpec.EXACTLY + ) + ); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + fromTextView.layout(getPaddingLeft(), getPaddingTop(), getPaddingLeft() + fromTextView.getMeasuredWidth(), getPaddingTop() + fromTextView.getMeasuredHeight()); + toTextView.layout(getPaddingLeft(), getPaddingTop(), getPaddingLeft() + toTextView.getMeasuredWidth(), getPaddingTop() + toTextView.getMeasuredHeight()); + updateWidth(); + } + + private void updateWidth() { + boolean updated; + + int newWidth = (int) AndroidUtilities.lerp(fromTextView.getMeasuredWidth(), toTextView.getMeasuredWidth(), loadingT) + getPaddingLeft() + getPaddingRight(); + int newHeight = Math.max(fromTextView.getMeasuredHeight(), toTextView.getMeasuredHeight()); + LayoutParams lp = getLayoutParams(); + if (lp == null) { + lp = new LinearLayout.LayoutParams(newWidth, newHeight); + updated = true; + } else { + updated = lp.width != newWidth || lp.height != newHeight; + lp.width = newWidth; + lp.height = newHeight; + } + + if (updated) + setLayoutParams(lp); + } + + protected void onLoadAnimation(float t) {} + + public boolean loaded = false; + public float loadingT = 0f; + private ValueAnimator loadedAnimator = null; + public void loaded(CharSequence loadedText) { + loaded(loadedText, 350,null); + } + public void loaded(CharSequence loadedText, Runnable onLoadEnd) { + loaded(loadedText, 350, onLoadEnd); + } + public void loaded(CharSequence loadedText, long duration, Runnable onLoadEnd) { + loaded = true; + toTextView.setText(loadedText); + + if (loadingAnimator.isRunning()) { + loadingAnimator.cancel(); + } + if (loadedAnimator == null) { + loadedAnimator = ValueAnimator.ofFloat(0f, 1f); + loadedAnimator.addUpdateListener(a -> { + loadingT = (float) a.getAnimatedValue(); + updateWidth(); + invalidate(); + onLoadAnimation(loadingT); + }); + loadedAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + if (onLoadEnd != null) + onLoadEnd.run(); + } + }); + loadedAnimator.setDuration(duration); + loadedAnimator.setInterpolator(CubicBezierInterpolator.EASE_BOTH); + loadedAnimator.start(); + } + } + public void set(CharSequence loadedText) { + loaded = true; + toTextView.setText(loadedText); + + if (loadingAnimator.isRunning()) { + loadingAnimator.cancel(); + } + if (loadedAnimator != null) { + loadedAnimator.cancel(); + loadedAnimator = null; + } + loadingT = 1f; + requestLayout(); + updateWidth(); + invalidate(); + onLoadAnimation(1f); + } + + private final RectF rect = new RectF(); + private final Path inPath = new Path(), + tempPath = new Path(), + loadingPath = new Path(), + shadePath = new Path(); + private final Paint loadingPaint = new Paint(); + private final float gradientWidth = dp(350f); + @Override + protected void onDraw(Canvas canvas) { + float w = getWidth(), h = getHeight(); + + float cx = LocaleController.isRTL ? Math.max(w / 2f, w - 8f) : Math.min(w / 2f, 8f), + cy = Math.min(h / 2f, 8f), + R = (float) Math.sqrt(Math.max( + Math.max(cx*cx + cy*cy, (w-cx)*(w-cx) + cy*cy), + Math.max(cx*cx + (h-cy)*(h-cy), (w-cx)*(w-cx) + (h-cy)*(h-cy)) + )), + r = loadingT * R; + inPath.reset(); + inPath.addCircle(cx, cy, r, Path.Direction.CW); + + canvas.save(); + canvas.clipPath(inPath, Region.Op.DIFFERENCE); + + loadingPaint.setAlpha((int) ((1f - loadingT) * 255)); + float dx = gradientWidth - (((SystemClock.elapsedRealtime() - start) / 1000f * gradientWidth) % gradientWidth); + shadePath.reset(); + shadePath.addRect(0, 0, w, h, Path.Direction.CW); + + loadingPath.reset(); + rect.set(0, 0, w, h); + loadingPath.addRoundRect(rect, dp(4), dp(4), Path.Direction.CW); + canvas.clipPath(loadingPath); + canvas.translate(-dx, 0); + shadePath.offset(dx, 0f, tempPath); + canvas.drawPath(tempPath, loadingPaint); + canvas.translate(dx, 0); + canvas.restore(); + + if (showLoadingText && fromTextView != null) { + canvas.save(); + rect.set(0, 0, w, h); + canvas.clipPath(inPath, Region.Op.DIFFERENCE); + canvas.translate(paddingHorizontal, paddingVertical); + canvas.saveLayerAlpha(rect, (int) (255 * .08f), Canvas.ALL_SAVE_FLAG); + fromTextView.draw(canvas); + canvas.restore(); + canvas.restore(); + } + + if (toTextView != null) { + canvas.save(); + canvas.clipPath(inPath); + canvas.translate(paddingHorizontal, paddingVertical); + canvas.saveLayerAlpha(rect, (int) (255 * loadingT), Canvas.ALL_SAVE_FLAG); + toTextView.draw(canvas); + if (loadingT < 1f) { + canvas.restore(); + } + canvas.restore(); + } + } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + return false; + } + } + + public static class LoadingTextView2 extends ViewGroup { + + public static final int paddingHorizontal = dp(4), + paddingVertical = dp(1.5f); + + public boolean showLoadingText = true; + + private final TextView fromTextView; + private final TextView toTextView; + + private final boolean scaleFromZero; + private final ValueAnimator loadingAnimator; + + private final long start = SystemClock.elapsedRealtime(); + private float scaleT = 1f; + public LoadingTextView2(Context context, CharSequence fromText, boolean scaleFromZero, int fontSize, int textColor) { + super(context); + + setPadding(paddingHorizontal, paddingVertical, paddingHorizontal, paddingVertical); + setClipChildren(false); + setWillNotDraw(false); + + fromTextView = new TextView(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MOST_SPEC); + } + }; + fromTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); + fromTextView.setTextColor(textColor); + fromTextView.setText(fromText); + fromTextView.setLines(0); + fromTextView.setMaxLines(0); + fromTextView.setSingleLine(false); + fromTextView.setEllipsize(null); + addView(fromTextView); + + toTextView = new TextView(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MOST_SPEC); + } + }; + toTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); + toTextView.setTextColor(textColor); + toTextView.setLines(0); + toTextView.setMaxLines(0); + toTextView.setSingleLine(false); + toTextView.setEllipsize(null); + addView(toTextView); + + int c1 = Theme.getColor(Theme.key_dialogBackground), + c2 = Theme.getColor(Theme.key_dialogBackgroundGray); + LinearGradient gradient = new LinearGradient(0, 0, gradientWidth, 0, new int[]{ c1, c2, c1 }, new float[] { 0, 0.67f, 1f }, Shader.TileMode.REPEAT); + loadingPaint.setShader(gradient); + + this.scaleFromZero = scaleFromZero; + loadingAnimator = ValueAnimator.ofFloat(0f, 1f); + if (scaleFromZero) + scaleT = 0; + loadingAnimator.addUpdateListener(a -> { + invalidate(); + if (scaleFromZero) { + boolean scaleTWasNoFull = scaleT < 1f; + scaleT = Math.min(1, (SystemClock.elapsedRealtime() - start) / 400f); + if (scaleTWasNoFull) { + updateHeight(); + } + } + }); + loadingAnimator.setDuration(Long.MAX_VALUE); + loadingAnimator.start(); + } + + public int innerHeight() { + return (int) (AndroidUtilities.lerp(fromTextView.getMeasuredHeight(), toTextView.getMeasuredHeight(), loadingT) * scaleT); + } + public int height() { + return getPaddingTop() + innerHeight() + getPaddingBottom(); + } + + private void updateHeight() { + ViewParent parent = getParent(); + if (parent instanceof TextBlocksLayout) { + ((TextBlocksLayout) parent).updateHeight(); + } + } + + public boolean loaded = false; + private float loadingT = 0f; + private ValueAnimator loadedAnimator = null; + public void loaded(CharSequence loadedText, Runnable onLoadEnd) { + loaded = true; + toTextView.setText(loadedText); + layout(); + + if (loadingAnimator.isRunning()) { + loadingAnimator.cancel(); + } + if (loadedAnimator == null) { + loadedAnimator = ValueAnimator.ofFloat(0f, 1f); + loadedAnimator.addUpdateListener(a -> { + loadingT = (float) a.getAnimatedValue(); + updateHeight(); + invalidate(); + }); + loadedAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + if (onLoadEnd != null) + onLoadEnd.run(); + } + }); + loadedAnimator.setDuration(350); + loadedAnimator.setInterpolator(CubicBezierInterpolator.EASE_BOTH); + loadedAnimator.start(); + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int width = MeasureSpec.getSize(widthMeasureSpec), + innerWidth = width - getPaddingLeft() - getPaddingRight(); + if (fromTextView.getMeasuredWidth() <= 0 || lastWidth != innerWidth) { + measureChild(fromTextView, innerWidth); + updateLoadingPath(); + } + if (toTextView.getMeasuredWidth() <= 0 || lastWidth != innerWidth) { + measureChild(toTextView, innerWidth); + } + lastWidth = innerWidth; + super.onMeasure( + MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(height(), MeasureSpec.EXACTLY) + ); + } + + int lastWidth = 0; + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + layout(r - l - getPaddingLeft() - getPaddingRight(), true); + } + private void layout(int width, boolean force) { + if (lastWidth != width || force) { + layout(lastWidth = width); + } + } + private void layout(int width) { + measureChild(fromTextView, width); + layoutChild(fromTextView, width); + updateLoadingPath(); + measureChild(toTextView, width); + layoutChild(toTextView, width); + updateHeight(); + } + private void layout() { + layout(lastWidth); + } + private void measureChild(View view, int width) { + view.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MOST_SPEC); + } + private void layoutChild(View view, int width) { + view.layout(getPaddingLeft(), getPaddingTop(), getPaddingLeft() + width, getPaddingTop() + view.getMeasuredHeight()); + } + + private RectF fetchedPathRect = new RectF(); + private void updateLoadingPath() { + if (fromTextView != null && fromTextView.getMeasuredWidth() > 0) { + loadingPath.reset(); + Layout loadingLayout = fromTextView.getLayout(); + if (loadingLayout != null) { + CharSequence text = loadingLayout.getText(); + final int lineCount = loadingLayout.getLineCount(); + for (int i = 0; i < lineCount; ++i) { + float s = loadingLayout.getLineLeft(i), + e = loadingLayout.getLineRight(i), + l = Math.min(s, e), + r = Math.max(s, e); + int start = loadingLayout.getLineStart(i), + end = loadingLayout.getLineEnd(i); + boolean hasNonEmptyChar = false; + for (int j = start; j < end; ++j) { + char c = text.charAt(j); + if (c != '\n' && c != '\t' && c != ' ') { + hasNonEmptyChar = true; + break; + } + } + if (!hasNonEmptyChar) + continue; + fetchedPathRect.set( + l - paddingHorizontal, + loadingLayout.getLineTop(i) - paddingVertical, + r + paddingHorizontal, + loadingLayout.getLineBottom(i) + paddingVertical + ); + loadingPath.addRoundRect(fetchedPathRect, dp(4), dp(4), Path.Direction.CW); + } + } + } + } + + private final RectF rect = new RectF(); + private final Path inPath = new Path(), + tempPath = new Path(), + loadingPath = new Path(), + shadePath = new Path(); + private final Paint loadingPaint = new Paint(); + private final float gradientWidth = dp(350f); + @Override + protected void onDraw(Canvas canvas) { + float w = getWidth(), h = getHeight(); + + float cx = LocaleController.isRTL ? Math.max(w / 2f, w - 8f) : Math.min(w / 2f, 8f), + cy = Math.min(h / 2f, 8f), + R = (float) Math.sqrt(Math.max( + Math.max(cx*cx + cy*cy, (w-cx)*(w-cx) + cy*cy), + Math.max(cx*cx + (h-cy)*(h-cy), (w-cx)*(w-cx) + (h-cy)*(h-cy)) + )), + r = loadingT * R; + inPath.reset(); + inPath.addCircle(cx, cy, r, Path.Direction.CW); + + canvas.save(); + canvas.clipPath(inPath, Region.Op.DIFFERENCE); + + loadingPaint.setAlpha((int) ((1f - loadingT) * 255)); + float dx = gradientWidth - (((SystemClock.elapsedRealtime() - start) / 1000f * gradientWidth) % gradientWidth); + shadePath.reset(); + shadePath.addRect(0, 0, w, h, Path.Direction.CW); + + canvas.translate(paddingHorizontal, paddingVertical); + canvas.clipPath(loadingPath); + canvas.translate(-paddingHorizontal, -paddingVertical); + canvas.translate(-dx, 0); + shadePath.offset(dx, 0f, tempPath); + canvas.drawPath(tempPath, loadingPaint); + canvas.translate(dx, 0); + canvas.restore(); + + if (showLoadingText && fromTextView != null) { + canvas.save(); + rect.set(0, 0, w, h); + canvas.clipPath(inPath, Region.Op.DIFFERENCE); + canvas.translate(paddingHorizontal, paddingVertical); + canvas.saveLayerAlpha(rect, (int) (255 * .08f), Canvas.ALL_SAVE_FLAG); + fromTextView.draw(canvas); + canvas.restore(); + canvas.restore(); + } + + if (toTextView != null) { + canvas.save(); + canvas.clipPath(inPath); + canvas.translate(paddingHorizontal, paddingVertical); + canvas.saveLayerAlpha(rect, (int) (255 * loadingT), Canvas.ALL_SAVE_FLAG); + toTextView.draw(canvas); + if (loadingT < 1f) { + canvas.restore(); + } + canvas.restore(); + } + } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + return false; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanNoUnderline.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanNoUnderline.java index 0bd1c0d0a..bf8009118 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanNoUnderline.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanNoUnderline.java @@ -22,6 +22,9 @@ public class URLSpanNoUnderline extends URLSpan { private TextStyleSpan.TextStyleRun style; private TLObject object; + // Used to label video timestamps + public String label; + public URLSpanNoUnderline(String url) { this(url, null); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanReplacement.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanReplacement.java index 590a633b5..54227f1d7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanReplacement.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanReplacement.java @@ -14,10 +14,12 @@ import android.text.style.URLSpan; import android.view.View; import org.telegram.messenger.browser.Browser; +import org.telegram.ui.LaunchActivity; public class URLSpanReplacement extends URLSpan { private TextStyleSpan.TextStyleRun style; + private boolean navigateToPremiumBot; public URLSpanReplacement(String url) { this(url, null); @@ -28,12 +30,19 @@ public class URLSpanReplacement extends URLSpan { style = run; } + public void setNavigateToPremiumBot(boolean navigateToPremiumBot) { + this.navigateToPremiumBot = navigateToPremiumBot; + } + public TextStyleSpan.TextStyleRun getTextStyleRun() { return style; } @Override public void onClick(View widget) { + if (navigateToPremiumBot && widget.getContext() instanceof LaunchActivity) { + ((LaunchActivity) widget.getContext()).setNavigateToPremiumBot(true); + } Uri uri = Uri.parse(getURL()); Browser.openUrl(widget.getContext(), uri); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/UndoView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/UndoView.java index a7872f174..4731a8e0a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/UndoView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/UndoView.java @@ -86,7 +86,7 @@ public class UndoView extends FrameLayout { private String timeLeftString; private int textWidth; - private int currentAction; + private int currentAction = -1; private ArrayList currentDialogIds; private Runnable currentActionRunnable; private Runnable currentCancelRunnable; @@ -438,7 +438,7 @@ public class UndoView extends FrameLayout { } public void showWithAction(ArrayList dialogIds, int action, Object infoObject, Object infoObject2, Runnable actionRunnable, Runnable cancelRunnable) { - if (!AndroidUtilities.shouldShowClipboardToast() && currentAction == ACTION_MESSAGE_COPIED || currentAction == ACTION_USERNAME_COPIED || currentAction == ACTION_HASHTAG_COPIED || currentAction == ACTION_TEXT_COPIED || currentAction == ACTION_LINK_COPIED || currentAction == ACTION_PHONE_COPIED || currentAction == ACTION_EMAIL_COPIED || currentAction == ACTION_VOIP_LINK_COPIED) { + if (!AndroidUtilities.shouldShowClipboardToast() && (currentAction == ACTION_MESSAGE_COPIED || currentAction == ACTION_USERNAME_COPIED || currentAction == ACTION_HASHTAG_COPIED || currentAction == ACTION_TEXT_COPIED || currentAction == ACTION_LINK_COPIED || currentAction == ACTION_PHONE_COPIED || currentAction == ACTION_EMAIL_COPIED || currentAction == ACTION_VOIP_LINK_COPIED)) { return; } if (currentActionRunnable != null) { @@ -836,6 +836,9 @@ public class UndoView extends FrameLayout { } subInfoText = null; icon = currentAction == ACTION_PIN_DIALOGS ? R.raw.ic_pin : R.raw.ic_unpin; + if (infoObject2 instanceof Integer) { + timeLeft = (int) infoObject2; + } } else { if (action == ACTION_ARCHIVE_HINT) { infoText = LocaleController.getString("ChatArchived", R.string.ChatArchived); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/UpdateAppAlertDialog.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/UpdateAppAlertDialog.java index b1c2630ac..3ac1529b0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/UpdateAppAlertDialog.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/UpdateAppAlertDialog.java @@ -74,7 +74,7 @@ public class UpdateAppAlertDialog extends BottomSheet { background = new View(context); if (hasBackground) { - background.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + background.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); } addView(background, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 0, 16, withoutBackground ? 0 : 16, 16, 16)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoForwardDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoForwardDrawable.java index 64a94f001..402c95907 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoForwardDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoForwardDrawable.java @@ -34,6 +34,7 @@ public class VideoForwardDrawable extends Drawable { private long time; private String timeStr; + private float playScaleFactor = 1f; public void setTime(long dt) { time = dt; @@ -67,6 +68,11 @@ public class VideoForwardDrawable extends Drawable { path1.close(); } + public void setPlayScaleFactor(float playScaleFactor) { + this.playScaleFactor = playScaleFactor; + invalidate(); + } + public boolean isAnimating() { return animating; } @@ -170,6 +176,7 @@ public class VideoForwardDrawable extends Drawable { } canvas.save(); + canvas.scale(playScaleFactor, playScaleFactor, x, y + getIntrinsicHeight() / 2f); if (leftSide) { canvas.rotate(180, x, y + getIntrinsicHeight() / 2); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoPlayerSeekBar.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoPlayerSeekBar.java index 6f893a021..6016a832c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoPlayerSeekBar.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoPlayerSeekBar.java @@ -13,15 +13,30 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; +import android.os.Build; import android.os.SystemClock; +import android.text.Layout; +import android.text.SpannableStringBuilder; +import android.text.Spanned; +import android.text.StaticLayout; +import android.text.TextPaint; +import android.text.TextUtils; +import android.util.Log; +import android.util.Pair; +import android.view.HapticFeedbackConstants; import android.view.MotionEvent; import android.view.View; import androidx.core.graphics.ColorUtils; -import com.google.android.exoplayer2.util.Log; - import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.Emoji; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.MessageObject; +import org.telegram.messenger.Utilities; + +import java.util.ArrayList; +import java.util.Collections; public class VideoPlayerSeekBar { @@ -31,13 +46,16 @@ public class VideoPlayerSeekBar { } } + private float progress; private static Paint paint; private static Paint strokePaint; private static int thumbWidth; private int thumbX = 0; + private float animatedThumbX = 0; private int draggingThumbX = 0; private int thumbDX = 0; private boolean pressed = false; + private boolean pressedDelayed = false; private int width; private int height; private SeekBarDelegate delegate; @@ -65,6 +83,8 @@ public class VideoPlayerSeekBar { private int fromThumbX = 0; private float animateThumbProgress = 1f; + private AnimatedFloat animateThumbLoopBackProgress; + private float loopBackWasThumbX; public VideoPlayerSeekBar(View parent) { if (paint == null) { @@ -77,6 +97,7 @@ public class VideoPlayerSeekBar { parentView = parent; thumbWidth = AndroidUtilities.dp(24); currentRadius = AndroidUtilities.dp(6); + animateThumbLoopBackProgress = new AnimatedFloat(0f, parent, 0, 300, CubicBezierInterpolator.EASE_OUT_QUINT); } public void setDelegate(SeekBarDelegate seekBarDelegate) { @@ -97,19 +118,21 @@ public class VideoPlayerSeekBar { } else if (thumbX > width - thumbWidth) { thumbX = thumbWidth - width; } + animatedThumbX = thumbX; } - pressed = true; + pressed = pressedDelayed = true; draggingThumbX = thumbX; thumbDX = (int) (x - thumbX); return true; } } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { if (pressed) { - thumbX = draggingThumbX; + animatedThumbX = thumbX = draggingThumbX; if (action == MotionEvent.ACTION_UP && delegate != null) { delegate.onSeekBarDrag((float) thumbX / (float) (width - thumbWidth)); } pressed = false; + AndroidUtilities.runOnUIThread(() -> pressedDelayed = false, 50); return true; } } else if (action == MotionEvent.ACTION_MOVE) { @@ -139,6 +162,11 @@ public class VideoPlayerSeekBar { } public void setProgress(float progress, boolean animated) { + if (Math.abs(this.progress - 1f) < 0.04f && Math.abs(progress) < 0.04f) { + animateThumbLoopBackProgress.set(1, true); + loopBackWasThumbX = thumbX; + } + this.progress = progress; int newThumb = (int) Math.ceil((width - thumbWidth) * progress); if (animated) { @@ -158,6 +186,9 @@ public class VideoPlayerSeekBar { } else if (thumbX > width - thumbWidth) { thumbX = width - thumbWidth; } + if (Math.abs(animatedThumbX - thumbX) > AndroidUtilities.dp(8)) { + animatedThumbX = thumbX; + } } public void setProgress(float progress) { @@ -218,12 +249,95 @@ public class VideoPlayerSeekBar { this.horizontalPadding = horizontalPadding; } + private ArrayList> timestamps; + private CharSequence lastCaption; + private long lastVideoDuration; + + public void updateTimestamps(MessageObject messageObject, long videoDuration) { + if (messageObject == null || videoDuration < 0) { + timestamps = null; + currentTimestamp = -1; + timestampsAppearing = 0; + if (timestampLabel != null) { + timestampLabel[0] = timestampLabel[1] = null; + } + lastCaption = null; + lastVideoDuration = -1; + return; + } + CharSequence text = messageObject.caption; + if (text == lastCaption && lastVideoDuration == videoDuration) { + return; + } + lastCaption = text; + lastVideoDuration = videoDuration; + if (!(text instanceof Spanned)) { + timestamps = null; + currentTimestamp = -1; + timestampsAppearing = 0; + if (timestampLabel != null) { + timestampLabel[0] = timestampLabel[1] = null; + } + return; + } + Spanned spanned = (Spanned) text; + URLSpanNoUnderline[] links; + try { + links = spanned.getSpans(0, spanned.length(), URLSpanNoUnderline.class); + } catch (Exception e) { + FileLog.e(e); + timestamps = null; + currentTimestamp = -1; + timestampsAppearing = 0; + if (timestampLabel != null) { + timestampLabel[0] = timestampLabel[1] = null; + } + return; + } + timestamps = new ArrayList<>(); + timestampsAppearing = 0; + if (timestampLabelPaint == null) { + timestampLabelPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + timestampLabelPaint.setTextSize(AndroidUtilities.dp(12)); + timestampLabelPaint.setColor(0xffffffff); + } + for (int i = 0; i < links.length; ++i) { + URLSpanNoUnderline link = links[i]; + if (link != null && link.getURL().startsWith("video?")) { + Integer seconds = Utilities.parseInt(link.getURL().substring(6)); + if (seconds != null && seconds >= 0) { + float position = seconds * 1000L / (float) videoDuration; + String label = link.label; + SpannableStringBuilder builder = new SpannableStringBuilder(label); + Emoji.replaceEmoji(builder, timestampLabelPaint.getFontMetricsInt(), AndroidUtilities.dp(14), false); + timestamps.add(new Pair<>(position, builder)); + } + } + } + Collections.sort(timestamps, (a, b) -> { + if (a.first > b.first) { + return 1; + } else if (b.first > a.first) { + return -1; + } else { + return 0; + } + }); + } + public void draw(Canvas canvas, View view) { - final float radius = AndroidUtilities.lerp(thumbWidth / 2f, smallLineHeight / 2f, transitionProgress); rect.left = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f, 0, transitionProgress); rect.top = AndroidUtilities.lerp((height - lineHeight) / 2f, height - AndroidUtilities.dp(3) - smallLineHeight, transitionProgress); rect.bottom = AndroidUtilities.lerp((height + lineHeight) / 2f, height - AndroidUtilities.dp(3), transitionProgress); + float thumbX = this.thumbX; + animatedThumbX = Math.min(animatedThumbX, thumbX); + animatedThumbX = AndroidUtilities.lerp(animatedThumbX, thumbX, .5f); + if (Math.abs(thumbX - animatedThumbX) > 0.005f) { + parentView.invalidate(); + } + thumbX = animatedThumbX; + float currentThumbX = thumbX; if (animateThumbProgress != 1f) { animateThumbProgress += 16 / 220f; @@ -235,10 +349,16 @@ public class VideoPlayerSeekBar { currentThumbX = fromThumbX * (1f - progressInterpolated) + thumbX * progressInterpolated; } } + + float loopBack = animateThumbLoopBackProgress.set(0); + if (pressed) { + loopBack = 0; + } + // background rect.right = horizontalPadding + AndroidUtilities.lerp(width - thumbWidth / 2f, parentView.getWidth() - horizontalPadding * 2f, transitionProgress); setPaintColor(selected ? backgroundSelectedColor : backgroundColor, 1f - transitionProgress); - canvas.drawRoundRect(rect, radius, radius, paint); + drawProgressBar(canvas, rect, paint); if (bufferedAnimationValue != 1f) { bufferedAnimationValue += 16 / 100f; @@ -254,34 +374,22 @@ public class VideoPlayerSeekBar { if (animateFromBufferedProgress > 0) { rect.right = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f + animateFromBufferedProgress * (width - thumbWidth), parentView.getWidth() - horizontalPadding * 2f, transitionProgress); setPaintColor(selected ? backgroundSelectedColor : cacheColor, (1f - transitionProgress) * (1f - bufferedAnimationValue)); - canvas.drawRoundRect(rect, radius, radius, paint); + drawProgressBar(canvas, rect, paint); } if (bufferedProgress > 0) { rect.right = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f + bufferedProgress * (width - thumbWidth), parentView.getWidth() - horizontalPadding * 2f, transitionProgress); setPaintColor(selected ? backgroundSelectedColor : cacheColor, 1f - transitionProgress); - canvas.drawRoundRect(rect, radius, radius, paint); + drawProgressBar(canvas, rect, paint); } } else { float currentBufferedProgress = animateFromBufferedProgress * (1f - bufferedAnimationValue) + bufferedProgress * bufferedAnimationValue; if (currentBufferedProgress > 0) { rect.right = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f + currentBufferedProgress * (width - thumbWidth), parentView.getWidth() - horizontalPadding * 2f, transitionProgress); setPaintColor(selected ? backgroundSelectedColor : cacheColor, 1f - transitionProgress); - canvas.drawRoundRect(rect, radius, radius, paint); + drawProgressBar(canvas, rect, paint); } } - // progress - rect.right = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f + (pressed ? draggingThumbX : currentThumbX), (parentView.getWidth() - horizontalPadding * 2f) * getProgress(), transitionProgress); - if (transitionProgress > 0f && rect.width() > 0) { - // progress stroke - strokePaint.setAlpha((int) (transitionProgress * 255 * 0.2f)); - canvas.drawRoundRect(rect, radius, radius, strokePaint); - } - setPaintColor(ColorUtils.blendARGB(progressColor, smallLineColor, transitionProgress), 1f); - canvas.drawRoundRect(rect, radius, radius, paint); - - // circle - setPaintColor(ColorUtils.blendARGB(circleColor, getProgress() == 0 ? Color.TRANSPARENT : smallLineColor, transitionProgress), 1f - transitionProgress); int newRad = AndroidUtilities.dp(pressed ? 8 : 6); if (currentRadius != newRad) { long newUpdateTime = SystemClock.elapsedRealtime(); @@ -306,7 +414,267 @@ public class VideoPlayerSeekBar { } } final float circleRadius = AndroidUtilities.lerp(currentRadius, 0, transitionProgress); - canvas.drawCircle(rect.right, rect.centerY(), circleRadius, paint); + + if (loopBack > 0) { + float wasLeft = rect.left; + rect.right = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f + (width - thumbWidth), parentView.getWidth() - horizontalPadding * 2f, transitionProgress); + rect.left = AndroidUtilities.lerp(wasLeft, rect.right, 1f - loopBack); + if (transitionProgress > 0f && rect.width() > 0) { + // progress stroke + strokePaint.setAlpha((int) (transitionProgress * 255 * 0.2f)); + drawProgressBar(canvas, rect, strokePaint); + } + setPaintColor(ColorUtils.blendARGB(progressColor, smallLineColor, transitionProgress), 1f); + drawProgressBar(canvas, rect, paint); + + rect.left = wasLeft; + + setPaintColor(ColorUtils.blendARGB(circleColor, getProgress() == 0 ? Color.TRANSPARENT : smallLineColor, transitionProgress), 1f - transitionProgress); + float wasRight = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f + loopBackWasThumbX, (parentView.getWidth() - horizontalPadding * 2f) * (loopBackWasThumbX / (float) (width - thumbWidth)), transitionProgress); + canvas.drawCircle(wasRight, rect.centerY(), circleRadius * loopBack, paint); + } + + // progress + rect.right = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f + (pressed ? draggingThumbX : currentThumbX), (parentView.getWidth() - horizontalPadding * 2f) * getProgress(), transitionProgress); + if (transitionProgress > 0f && rect.width() > 0) { + // progress stroke + strokePaint.setAlpha((int) (transitionProgress * 255 * 0.2f)); + drawProgressBar(canvas, rect, strokePaint); + } + setPaintColor(ColorUtils.blendARGB(progressColor, smallLineColor, transitionProgress), 1f); + drawProgressBar(canvas, rect, paint); + + // circle + setPaintColor(ColorUtils.blendARGB(circleColor, getProgress() == 0 ? Color.TRANSPARENT : smallLineColor, transitionProgress), 1f - transitionProgress); + canvas.drawCircle(rect.right, rect.centerY(), circleRadius * (1f - loopBack), paint); + + drawTimestampLabel(canvas); + } + + private float timestampsAppearing = 0; + private long lastTimestampsAppearingUpdate; + private final float TIMESTAMP_GAP = 1f; + private static float[] tmpRadii; + private static Path tmpPath; + + private void drawProgressBar(Canvas canvas, RectF rect, Paint paint) { + float radius = AndroidUtilities.dp(AndroidUtilities.lerp(2, 1, transitionProgress)); + if (timestamps == null || timestamps.isEmpty()) { + canvas.drawRoundRect(rect, radius, radius, paint); + } else { + float lineWidth = rect.bottom - rect.top; + float left = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f, 0, transitionProgress); + float right = horizontalPadding + AndroidUtilities.lerp(width - thumbWidth / 2f, parentView.getWidth() - horizontalPadding * 2f, transitionProgress); + AndroidUtilities.rectTmp.set(rect); + float halfGap = AndroidUtilities.dp(TIMESTAMP_GAP * timestampsAppearing) / 2f; + if (tmpPath == null) { + tmpPath = new Path(); + } + tmpPath.reset(); + float minDur = AndroidUtilities.dp(4) / (right - left); + int start = -1, end = -1; + for (int i = 0; i < timestamps.size(); ++i) { + if (timestamps.get(i).first >= minDur) { + start = i; + break; + } + } + if (start < 0) { + start = 0; + } + for (int i = timestamps.size() - 1; i >= 0; --i) { + if (1f - timestamps.get(i).first >= minDur) { + end = i + 1; + break; + } + } + if (end < 0) { + end = timestamps.size(); + } + boolean first = true; + for (int i = start; i <= end; ++i) { + float from = i == start ? 0 : timestamps.get(i - 1).first; + float to = i == end ? 1 : timestamps.get(i).first; + + AndroidUtilities.rectTmp.left = AndroidUtilities.lerp(left, right, from) + (i > 0 ? halfGap : 0); + AndroidUtilities.rectTmp.right = AndroidUtilities.lerp(left, right, to) - (i < end ? halfGap : 0); + + boolean last; + if (last = AndroidUtilities.rectTmp.right > rect.right) { + AndroidUtilities.rectTmp.right = rect.right; + } + if (AndroidUtilities.rectTmp.right < rect.left) { + continue; + } + if (AndroidUtilities.rectTmp.left < rect.left) { + AndroidUtilities.rectTmp.left = rect.left; + } + + if (tmpRadii == null) { + tmpRadii = new float[8]; + } + if (i == start || last && AndroidUtilities.rectTmp.left >= rect.left) { + tmpRadii[0] = tmpRadii[1] = tmpRadii[6] = tmpRadii[7] = radius; + tmpRadii[2] = tmpRadii[3] = tmpRadii[4] = tmpRadii[5] = radius * 0.7f * timestampsAppearing; + } else if (i >= end) { + tmpRadii[0] = tmpRadii[1] = tmpRadii[6] = tmpRadii[7] = radius * 0.7f * timestampsAppearing; + tmpRadii[2] = tmpRadii[3] = tmpRadii[4] = tmpRadii[5] = radius; + } else { + tmpRadii[0] = tmpRadii[1] = tmpRadii[6] = tmpRadii[7] = + tmpRadii[2] = tmpRadii[3] = tmpRadii[4] = tmpRadii[5] = radius * 0.7f * timestampsAppearing; + } + tmpPath.addRoundRect(AndroidUtilities.rectTmp, tmpRadii, Path.Direction.CW); + + if (last) { + break; + } + } + canvas.drawPath(tmpPath, paint); + } + } + + + private int currentTimestamp = -1, lastTimestamp = -1; + private StaticLayout[] timestampLabel; + private TextPaint timestampLabelPaint; + private float timestampChangeT = 1; + private int timestampChangeDirection; + private long lastTimestampUpdate; + private float lastWidth = -1; + + private void drawTimestampLabel(Canvas canvas) { + if (timestamps == null || timestamps.isEmpty()) { + return; + } + + float progress = pressed || pressedDelayed ? (draggingThumbX / (float) (width - thumbWidth)) : (animatedThumbX / (float) (width - thumbWidth)); + + int timestampIndex = -1; + for (int i = timestamps.size() - 1; i >= 0; --i) { + if (timestamps.get(i).first - 0.001f <= progress) { + timestampIndex = i; + break; + } + } + + if (timestampLabel == null) { + timestampLabel = new StaticLayout[2]; + } + + float left = horizontalPadding + AndroidUtilities.lerp(thumbWidth / 2f, 0, transitionProgress); + float right = horizontalPadding + AndroidUtilities.lerp(width - thumbWidth / 2f, parentView.getWidth() - horizontalPadding * 2f, transitionProgress); + float rightPadded = horizontalPadding + (width - thumbWidth / 2f); + float width = Math.abs(left - rightPadded) - AndroidUtilities.dp(16); + + if (lastWidth > 0 && Math.abs(lastWidth - width) > 0.01f) { + if (timestampLabel[0] != null) { + timestampLabel[0] = makeStaticLayout(timestampLabel[0].getText(), (int) width); + } + if (timestampLabel[1] != null) { + timestampLabel[1] = makeStaticLayout(timestampLabel[1].getText(), (int) width); + } + } + lastWidth = width; + + if (timestampIndex != currentTimestamp) { + timestampLabel[1] = timestampLabel[0]; + if (pressed) { + try { + parentView.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } catch (Exception ignore) {} + } + if (timestampIndex >= 0 && timestampIndex < timestamps.size()) { + CharSequence label = timestamps.get(timestampIndex).second; + if (label == null) { + timestampLabel[0] = null; + } else { + timestampLabel[0] = makeStaticLayout(label, (int) width); + } + } else { + timestampLabel[0] = null; + } + timestampChangeT = 0; + if (timestampIndex == -1) { + timestampChangeDirection = -1; + } else if (currentTimestamp == -1) { + timestampChangeDirection = 1; + } else if (timestampIndex < currentTimestamp) { + timestampChangeDirection = -1; + } else if (timestampIndex > currentTimestamp) { + timestampChangeDirection = 1; + } + lastTimestamp = currentTimestamp; + currentTimestamp = timestampIndex; + } + if (timestampChangeT < 1f) { + long tx = Math.min(17, Math.abs(SystemClock.elapsedRealtime() - lastTimestampUpdate)); + float duration = timestamps.size() > 8 ? 160f : 220f; + timestampChangeT = Math.min(timestampChangeT + tx / duration, 1); + parentView.invalidate(); + lastTimestampUpdate = SystemClock.elapsedRealtime(); + } + if (timestampsAppearing < 1f) { + long tx = Math.min(17, Math.abs(SystemClock.elapsedRealtime() - lastTimestampUpdate)); + timestampsAppearing = Math.min(timestampsAppearing + tx / 200f, 1); + parentView.invalidate(); + lastTimestampsAppearingUpdate = SystemClock.elapsedRealtime(); + } + float changeT = CubicBezierInterpolator.DEFAULT.getInterpolation(timestampChangeT); + + canvas.save(); + float bottom = AndroidUtilities.lerp((height + lineHeight) / 2f, height - AndroidUtilities.dp(3), transitionProgress); + canvas.translate(left + (right - rightPadded) * (transitionProgress), bottom + AndroidUtilities.dp(12)); + if (timestampLabel[1] != null) { + canvas.save(); + if (timestampChangeDirection != 0) { + canvas.translate(AndroidUtilities.dp(8) + AndroidUtilities.dp(16) * -timestampChangeDirection * changeT, 0); + } + canvas.translate(0, -timestampLabel[1].getHeight() / 2f); + timestampLabelPaint.setAlpha((int) (255 * (1f - transitionProgress) * (1f - changeT) * timestampsAppearing)); + timestampLabel[1].draw(canvas); + canvas.restore(); + } + if (timestampLabel[0] != null) { + canvas.save(); + if (timestampChangeDirection != 0) { + canvas.translate(AndroidUtilities.dp(8) + AndroidUtilities.dp(16) * timestampChangeDirection * (1f - changeT), 0); + } + canvas.translate(0, -timestampLabel[0].getHeight() / 2f); + timestampLabelPaint.setAlpha((int) (255 * (1f - transitionProgress) * changeT * timestampsAppearing)); + timestampLabel[0].draw(canvas); + canvas.restore(); + } + canvas.restore(); + } + + private StaticLayout makeStaticLayout(CharSequence text, int width) { + if (timestampLabelPaint == null) { + timestampLabelPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + timestampLabelPaint.setTextSize(AndroidUtilities.dp(12)); + timestampLabelPaint.setColor(0xffffffff); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + return StaticLayout.Builder.obtain(text, 0, text.length(), timestampLabelPaint, width) + .setMaxLines(1) + .setAlignment(Layout.Alignment.ALIGN_CENTER) + .setEllipsize(TextUtils.TruncateAt.END) + .setEllipsizedWidth(Math.min(AndroidUtilities.dp(400), width)) + .build(); + } else { + return new StaticLayout( + text, + 0, + text.length(), + timestampLabelPaint, + width, + Layout.Alignment.ALIGN_CENTER, + 1, + 0, + false, + TextUtils.TruncateAt.END, + Math.min(AndroidUtilities.dp(400), (int) width) + ); + } } private void setPaintColor(int color, float alpha) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoSeekPreviewImage.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoSeekPreviewImage.java index a6509f710..5c5d1974d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoSeekPreviewImage.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoSeekPreviewImage.java @@ -184,7 +184,7 @@ public class VideoSeekPreviewImage extends View { if (FileLoader.getInstance(currentAccount).isLoadingFile(name)) { path = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), document.dc_id + "_" + document.id + ".temp").getAbsolutePath(); } else { - path = FileLoader.getPathToAttach(document, false).getAbsolutePath(); + path = FileLoader.getInstance(currentAccount).getPathToAttach(document, false).getAbsolutePath(); } fileDrawable = new AnimatedFileDrawable(new File(path), true, document.size, document, null, parentObject, 0, currentAccount, true); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ViewPagerFixed.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ViewPagerFixed.java index 8359204b3..8fec663d0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ViewPagerFixed.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ViewPagerFixed.java @@ -930,7 +930,8 @@ public class ViewPagerFixed extends FrameLayout { } }; ((DefaultItemAnimator) listView.getItemAnimator()).setDelayAnimations(false); - listView.setSelectorType(7); + listView.setSelectorType(8); + listView.setSelectorRadius(6); listView.setSelectorDrawableColor(Theme.getColor(selectorColorKey)); listView.setLayoutManager(layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) { @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/WallpaperUpdater.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/WallpaperUpdater.java index bf56ad812..c5c048c7c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/WallpaperUpdater.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/WallpaperUpdater.java @@ -68,7 +68,7 @@ public class WallpaperUpdater { icons = null; } else { items = new CharSequence[]{LocaleController.getString("ChooseTakePhoto", R.string.ChooseTakePhoto), LocaleController.getString("SelectFromGallery", R.string.SelectFromGallery)}; - icons = new int[]{R.drawable.menu_camera, R.drawable.profile_photos}; + icons = new int[]{R.drawable.msg_camera, R.drawable.msg_photos}; } builder.setItems(items, icons, (dialogInterface, i) -> { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/spoilers/SpoilerEffect.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/spoilers/SpoilerEffect.java index 349c091f3..3d71ccf25 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/spoilers/SpoilerEffect.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/spoilers/SpoilerEffect.java @@ -698,8 +698,7 @@ public class SpoilerEffect extends Drawable { /** * Optimized version of text layout double-render - * - * @param v View to use as a parent view + * @param v View to use as a parent view * @param invalidateSpoilersParent Set to invalidate parent or not * @param spoilersColor Spoilers' color * @param verticalOffset Additional vertical offset @@ -707,10 +706,11 @@ public class SpoilerEffect extends Drawable { * @param textLayout Layout to render * @param spoilers Spoilers list to render * @param canvas Canvas to render + * @param useParentWidth */ @SuppressLint("WrongConstant") @MainThread - public static void renderWithRipple(View v, boolean invalidateSpoilersParent, int spoilersColor, int verticalOffset, AtomicReference patchedLayoutRef, Layout textLayout, List spoilers, Canvas canvas) { + public static void renderWithRipple(View v, boolean invalidateSpoilersParent, int spoilersColor, int verticalOffset, AtomicReference patchedLayoutRef, Layout textLayout, List spoilers, Canvas canvas, boolean useParentWidth) { if (spoilers.isEmpty()) { textLayout.draw(canvas); return; @@ -789,7 +789,11 @@ public class SpoilerEffect extends Drawable { boolean useAlphaLayer = spoilers.get(0).rippleProgress != -1; if (useAlphaLayer) { - canvas.saveLayer(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight(), null, canvas.ALL_SAVE_FLAG); + int w = v.getMeasuredWidth(); + if (useParentWidth && v.getParent() instanceof View) { + w = ((View) v.getParent()).getMeasuredWidth(); + } + canvas.saveLayer(0, 0, w, v.getMeasuredHeight(), null, canvas.ALL_SAVE_FLAG); } else { canvas.save(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/AcceptDeclineView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/AcceptDeclineView.java index 5e8396268..f5a1655ce 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/AcceptDeclineView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/AcceptDeclineView.java @@ -494,7 +494,7 @@ public class AcceptDeclineView extends View { this.screenWasWakeup = screenWasWakeup; } - private static abstract class AcceptDeclineAccessibilityNodeProvider extends AccessibilityNodeProvider { + public static abstract class AcceptDeclineAccessibilityNodeProvider extends AccessibilityNodeProvider { private final View hostView; private final int virtualViewsCount; @@ -503,7 +503,7 @@ public class AcceptDeclineView extends View { private int currentFocusedVirtualViewId = View.NO_ID; - private AcceptDeclineAccessibilityNodeProvider(View hostView, int virtualViewsCount) { + protected AcceptDeclineAccessibilityNodeProvider(View hostView, int virtualViewsCount) { this.hostView = hostView; this.virtualViewsCount = virtualViewsCount; this.accessibilityManager = ContextCompat.getSystemService(hostView.getContext(), AccessibilityManager.class); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/CellFlickerDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/CellFlickerDrawable.java index 7fca1f3fe..4292c2d12 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/CellFlickerDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/CellFlickerDrawable.java @@ -2,15 +2,23 @@ package org.telegram.ui.Components.voip; import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.ColorFilter; import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PixelFormat; import android.graphics.RectF; import android.graphics.Shader; +import android.graphics.drawable.Drawable; +import android.view.View; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.core.graphics.ColorUtils; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.SvgHelper; public class CellFlickerDrawable { @@ -22,19 +30,23 @@ public class CellFlickerDrawable { int size; int parentWidth; - float progress; + public float progress; long lastUpdateTime; Matrix matrix = new Matrix(); public boolean repeatEnabled = true; public boolean drawFrame = true; + public boolean frameInside = false; public float repeatProgress = 1.2f; public float animationSpeedScale = 1f; + View parentView; + Runnable onRestartCallback; public CellFlickerDrawable() { this(64, 204); } + public CellFlickerDrawable(int a1, int a2) { size = AndroidUtilities.dp(160); gradientShader = new LinearGradient(0, 0, size, 0, new int[]{Color.TRANSPARENT, ColorUtils.setAlphaComponent(Color.WHITE, a1), Color.TRANSPARENT}, null, Shader.TileMode.CLAMP); @@ -64,10 +76,32 @@ public class CellFlickerDrawable { this.progress = progress; } - public void draw(Canvas canvas, RectF rectF, float rad) { + public void draw(Canvas canvas, RectF rectF, float rad, View view) { + update(view); + canvas.drawRoundRect(rectF, rad, rad, paint); + if (drawFrame) { + if (frameInside) { + rectF.inset(paintOutline.getStrokeWidth() / 2f, paintOutline.getStrokeWidth() / 2f); + } + canvas.drawRoundRect(rectF, rad, rad, paintOutline); + } + } + + public void draw(Canvas canvas, Path path, View view) { + update(view); + canvas.drawPath(path, paint); + if (drawFrame) { + canvas.drawPath(path, paintOutline); + } + } + + private void update(View view) { if (progress > 1f && !repeatEnabled) { return; } + if (view != null) { + view.invalidate(); + } long currentTime = System.currentTimeMillis(); if (lastUpdateTime != 0) { long dt = currentTime - lastUpdateTime; @@ -75,6 +109,9 @@ public class CellFlickerDrawable { progress += (dt / 1200f) * animationSpeedScale; if (progress > repeatProgress) { progress = 0; + if (onRestartCallback != null) { + onRestartCallback.run(); + } } lastUpdateTime = currentTime; } @@ -82,22 +119,17 @@ public class CellFlickerDrawable { lastUpdateTime = currentTime; } - if (progress > 1f) { - return; - } +// if (progress > 1f) { +// return; +// } float x = (parentWidth + size * 2) * progress - size; + matrix.reset(); matrix.setTranslate(x, 0); gradientShader.setLocalMatrix(matrix); gradientShader2.setLocalMatrix(matrix); - - canvas.drawRoundRect(rectF, rad, rad, paint); - if (drawFrame) { - canvas.drawRoundRect(rectF, rad, rad, paintOutline); - } } - public void draw(Canvas canvas, GroupCallMiniTextureView view) { long currentTime = System.currentTimeMillis(); if (lastUpdateTime != 0) { @@ -106,6 +138,9 @@ public class CellFlickerDrawable { progress += dt / 500f; if (progress > 4f) { progress = 0; + if (onRestartCallback != null) { + onRestartCallback.run(); + } } lastUpdateTime = currentTime; } @@ -125,6 +160,9 @@ public class CellFlickerDrawable { AndroidUtilities.rectTmp.set(view.textureView.currentClipHorizontal, view.textureView.currentClipVertical, view.textureView.getMeasuredWidth() - view.textureView.currentClipHorizontal, view.textureView.getMeasuredHeight() - view.textureView.currentClipVertical); canvas.drawRect(AndroidUtilities.rectTmp, paint); if (drawFrame) { + if (frameInside) { + AndroidUtilities.rectTmp.inset(paintOutline.getStrokeWidth() / 2f, paintOutline.getStrokeWidth() / 2f); + } canvas.drawRoundRect(AndroidUtilities.rectTmp, view.textureView.roundRadius, view.textureView.roundRadius, paintOutline); } } @@ -132,4 +170,64 @@ public class CellFlickerDrawable { public void setParentWidth(int parentWidth) { this.parentWidth = parentWidth; } + + public DrawableInterface getDrawableInterface(View parentView, SvgHelper.SvgDrawable drawable) { + this.parentView = parentView; + return new DrawableInterface(drawable); + } + + + public void setOnRestartCallback(Runnable runnable) { + onRestartCallback = runnable; + } + + public class DrawableInterface extends Drawable { + + public float radius; + SvgHelper.SvgDrawable svgDrawable; + + public DrawableInterface(SvgHelper.SvgDrawable drawable) { + svgDrawable = drawable; + } + + @Override + public void draw(@NonNull Canvas canvas) { + setParentWidth(getBounds().width()); + AndroidUtilities.rectTmp.set(getBounds()); + CellFlickerDrawable.this.draw(canvas, AndroidUtilities.rectTmp, radius, null); + if (svgDrawable != null) { + svgDrawable.setPaint(paint); + float x = (parentWidth + size * 2) * progress - size; + int drawableSize = (int) (parentWidth * 0.5f); + float s = svgDrawable.getScale(); + matrix.reset(); + matrix.setScale(1f / s, 0, size / 2f, 0); + matrix.setTranslate(x - svgDrawable.getBounds().left - size / s, 0); + + gradientShader.setLocalMatrix(matrix); + svgDrawable.setBounds( + getBounds().centerX() - drawableSize / 2, getBounds().centerY() - drawableSize / 2, + getBounds().centerX() + drawableSize / 2, getBounds().centerY() + drawableSize / 2 + ); + svgDrawable.draw(canvas); + } + parentView.invalidate(); + } + + @Override + public void setAlpha(int alpha) { + paint.setAlpha(alpha); + paintOutline.setAlpha(alpha); + } + + @Override + public void setColorFilter(@Nullable ColorFilter colorFilter) { + + } + + @Override + public int getOpacity() { + return PixelFormat.TRANSLUCENT; + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/RTMPStreamPipOverlay.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/RTMPStreamPipOverlay.java index 5ef37d138..13c23a592 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/RTMPStreamPipOverlay.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/RTMPStreamPipOverlay.java @@ -543,7 +543,7 @@ public class RTMPStreamPipOverlay implements NotificationCenter.NotificationCent if (getAlpha() == 0f) return; AndroidUtilities.rectTmp.set(0, 0, getWidth(), getHeight()); - cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(ROUNDED_CORNERS_DP)); + cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(ROUNDED_CORNERS_DP), null); invalidate(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java index 785d703c2..5026cfe99 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java @@ -56,6 +56,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent private AvatarDrawable avatarDrawable; private TextView infoTextView; private CheckBoxCell checkBoxCell; + private Theme.ResourcesProvider resourcesProvider; private long user_id; private boolean addContact; @@ -74,6 +75,16 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent super(args); } + public ContactAddActivity(Bundle args, Theme.ResourcesProvider resourcesProvider) { + super(args); + this.resourcesProvider = resourcesProvider; + } + + @Override + public Theme.ResourcesProvider getResourceProvider() { + return resourcesProvider; + } + @Override public boolean onFragmentCreate() { getNotificationCenter().addObserver(this, NotificationCenter.updateInterfaces); @@ -96,6 +107,8 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent @Override public View createView(Context context) { + actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_avatar_actionBarSelectorBlue, resourcesProvider), false); + actionBar.setItemsColor(Theme.getColor(Theme.key_actionBarDefaultIcon, resourcesProvider), false); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setAllowOverlayTitle(true); if (addContact) { @@ -145,7 +158,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent frameLayout.addView(avatarImage, LayoutHelper.createFrame(60, 60, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP)); nameTextView = new TextView(context); - nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + nameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); nameTextView.setLines(1); nameTextView.setMaxLines(1); @@ -156,7 +169,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent frameLayout.addView(nameTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 80, 3, LocaleController.isRTL ? 80 : 0, 0)); onlineTextView = new TextView(context); - onlineTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText3)); + onlineTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText3, resourcesProvider)); onlineTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); onlineTextView.setLines(1); onlineTextView.setMaxLines(1); @@ -165,10 +178,15 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent onlineTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); frameLayout.addView(onlineTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 80, 32, LocaleController.isRTL ? 80 : 0, 0)); - firstNameField = new EditTextBoldCursor(context); + firstNameField = new EditTextBoldCursor(context) { + @Override + protected Theme.ResourcesProvider getResourcesProvider() { + return resourcesProvider; + } + }; firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - firstNameField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - firstNameField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + firstNameField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText, resourcesProvider)); + firstNameField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); firstNameField.setBackgroundDrawable(null); firstNameField.setLineColors(getThemedColor(Theme.key_windowBackgroundWhiteInputField), getThemedColor(Theme.key_windowBackgroundWhiteInputFieldActivated), getThemedColor(Theme.key_windowBackgroundWhiteRedText3)); firstNameField.setMaxLines(1); @@ -178,7 +196,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); firstNameField.setImeOptions(EditorInfo.IME_ACTION_NEXT); firstNameField.setHint(LocaleController.getString("FirstName", R.string.FirstName)); - firstNameField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + firstNameField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); firstNameField.setCursorSize(AndroidUtilities.dp(20)); firstNameField.setCursorWidth(1.5f); linearLayout.addView(firstNameField, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36, 24, 24, 24, 0)); @@ -201,10 +219,15 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent } }); - lastNameField = new EditTextBoldCursor(context); + lastNameField = new EditTextBoldCursor(context) { + @Override + protected Theme.ResourcesProvider getResourcesProvider() { + return resourcesProvider; + } + }; lastNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - lastNameField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - lastNameField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + lastNameField.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText, resourcesProvider)); + lastNameField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); lastNameField.setBackgroundDrawable(null); lastNameField.setLineColors(getThemedColor(Theme.key_windowBackgroundWhiteInputField), getThemedColor(Theme.key_windowBackgroundWhiteInputFieldActivated), getThemedColor(Theme.key_windowBackgroundWhiteRedText3)); lastNameField.setMaxLines(1); @@ -214,7 +237,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent lastNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); lastNameField.setImeOptions(EditorInfo.IME_ACTION_DONE); lastNameField.setHint(LocaleController.getString("LastName", R.string.LastName)); - lastNameField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + lastNameField.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); lastNameField.setCursorSize(AndroidUtilities.dp(20)); lastNameField.setCursorWidth(1.5f); linearLayout.addView(lastNameField, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36, 24, 16, 24, 0)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java index 0a399b656..a7dc58dec 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java @@ -251,7 +251,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter SharedConfig.toggleSortContactsByName(); sortByName = SharedConfig.sortContactsByName; listViewAdapter.setSortType(sortByName ? 1 : 2, false); - sortItem.setIcon(sortByName ? R.drawable.contacts_sort_time : R.drawable.contacts_sort_name); + sortItem.setIcon(sortByName ? R.drawable.msg_contacts_time : R.drawable.msg_contacts_name); } } }); @@ -319,7 +319,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter item.setSearchFieldHint(LocaleController.getString("Search", R.string.Search)); item.setContentDescription(LocaleController.getString("Search", R.string.Search)); if (!createSecretChat && !returnAsResult) { - sortItem = menu.addItem(sort_button, sortByName ? R.drawable.contacts_sort_time : R.drawable.contacts_sort_name); + sortItem = menu.addItem(sort_button, sortByName ? R.drawable.msg_contacts_time : R.drawable.msg_contacts_name); sortItem.setContentDescription(LocaleController.getString("AccDescrContactSorting", R.string.AccDescrContactSorting)); } @@ -1263,7 +1263,6 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{GraySectionCell.class}, new String[]{"textView"}, null, null, null, Theme.key_graySectionText)); themeDescriptions.add(new ThemeDescription(listView, ThemeDescription.FLAG_CELLBACKGROUNDCOLOR, new Class[]{GraySectionCell.class}, null, null, null, Theme.key_graySection)); - themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{ProfileSearchCell.class}, null, new Drawable[]{Theme.dialogs_groupDrawable, Theme.dialogs_broadcastDrawable, Theme.dialogs_botDrawable}, null, Theme.key_chats_nameIcon)); themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{ProfileSearchCell.class}, null, new Drawable[]{Theme.dialogs_verifiedCheckDrawable}, null, Theme.key_chats_verifiedCheck)); themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{ProfileSearchCell.class}, null, new Drawable[]{Theme.dialogs_verifiedDrawable}, null, Theme.key_chats_verifiedBackground)); themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{ProfileSearchCell.class}, Theme.dialogs_offlinePaint, null, null, Theme.key_windowBackgroundWhiteGrayText3)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContentPreviewViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/ContentPreviewViewer.java index 2668c50e2..7311ecca0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContentPreviewViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContentPreviewViewer.java @@ -8,9 +8,11 @@ package org.telegram.ui; +import android.animation.ValueAnimator; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; +import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; @@ -28,35 +30,37 @@ import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.MotionEvent; import android.view.View; -import android.view.ViewGroup; import android.view.WindowInsets; import android.view.WindowManager; import android.widget.FrameLayout; +import org.telegram.messenger.AccountInstance; import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ImageLoader; -import org.telegram.messenger.MediaDataController; import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLoader; +import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; -import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.SendMessagesHelper; import org.telegram.messenger.UserConfig; +import org.telegram.messenger.Utilities; import org.telegram.messenger.WebFile; import org.telegram.tgnet.TLRPC; -import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.ActionBarMenuItem; +import org.telegram.ui.ActionBar.ActionBarMenuSubItem; +import org.telegram.ui.ActionBar.ActionBarPopupWindow; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.ContextLinkCell; import org.telegram.ui.Cells.StickerCell; import org.telegram.ui.Cells.StickerEmojiCell; import org.telegram.ui.Components.AlertsCreator; -import org.telegram.ui.Components.EmojiView; +import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RecyclerListView; @@ -78,10 +82,15 @@ public class ContentPreviewViewer { public interface ContentPreviewViewerDelegate { void sendSticker(TLRPC.Document sticker, String query, Object parent, boolean notify, int scheduleDate); + void openSet(TLRPC.InputStickerSet set, boolean clearInputField); + boolean needSend(); + boolean canSchedule(); + boolean isInScheduleMode(); + long getDialogId(); default boolean needRemove() { @@ -126,12 +135,12 @@ public class ContentPreviewViewer { private float moveY = 0; private float finalMoveY; private float startMoveY; - private boolean animateY; private float currentMoveYProgress; private View currentPreviewCell; private boolean clearsInputField; private Runnable openPreviewRunnable; - private BottomSheet visibleDialog; + ActionBarPopupWindow popupWindow; + private ActionBarPopupWindow visibleMenu; private ContentPreviewViewerDelegate delegate; private boolean isRecentSticker; @@ -141,17 +150,25 @@ public class ContentPreviewViewer { private int currentAccount; private ColorDrawable backgroundDrawable = new ColorDrawable(0x71000000); + private Bitmap blurrBitmap; private Activity parentActivity; private WindowManager.LayoutParams windowLayoutParams; private FrameLayout windowView; private FrameLayoutDrawer containerView; private ImageReceiver centerImage = new ImageReceiver(); + private ImageReceiver effectImage = new ImageReceiver(); private boolean isVisible = false; private float showProgress; private StaticLayout stickerEmojiLayout; private long lastUpdateTime; private int keyboardHeight = AndroidUtilities.dp(200); private Drawable slideUpDrawable; + private boolean menuVisible; + private float blurProgress; + private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + private UnlockPremiumView unlockPremiumView; + private boolean closeOnDismiss; + private boolean drawEffect; private Runnable showSheetRunnable = new Runnable() { @Override @@ -159,31 +176,40 @@ public class ContentPreviewViewer { if (parentActivity == null) { return; } + closeOnDismiss = true; if (currentContentType == CONTENT_TYPE_STICKER) { + if (MessageObject.isPremiumSticker(currentDocument) && !AccountInstance.getInstance(currentAccount).getUserConfig().isPremium()) { + showUnlockPremiumView(); + menuVisible = true; + containerView.invalidate(); + containerView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + return; + } final boolean inFavs = MediaDataController.getInstance(currentAccount).isStickerInFavorites(currentDocument); - BottomSheet.Builder builder = new BottomSheet.Builder(parentActivity, true, resourcesProvider); ArrayList items = new ArrayList<>(); final ArrayList actions = new ArrayList<>(); ArrayList icons = new ArrayList<>(); + menuVisible = true; + containerView.invalidate(); if (delegate != null) { if (delegate.needSend() && !delegate.isInScheduleMode()) { items.add(LocaleController.getString("SendStickerPreview", R.string.SendStickerPreview)); - icons.add(R.drawable.outline_send); + icons.add(R.drawable.msg_send); actions.add(0); } - if (!delegate.isInScheduleMode()) { + if (delegate.needSend() && !delegate.isInScheduleMode()) { items.add(LocaleController.getString("SendWithoutSound", R.string.SendWithoutSound)); icons.add(R.drawable.input_notify_off); actions.add(6); } if (delegate.canSchedule()) { items.add(LocaleController.getString("Schedule", R.string.Schedule)); - icons.add(R.drawable.msg_timer); + icons.add(R.drawable.msg_autodelete); actions.add(3); } if (currentStickerSet != null && delegate.needOpen()) { items.add(LocaleController.formatString("ViewPackPreview", R.string.ViewPackPreview)); - icons.add(R.drawable.outline_pack); + icons.add(R.drawable.msg_media); actions.add(1); } if (delegate.needRemove()) { @@ -194,7 +220,7 @@ public class ContentPreviewViewer { } if (!MessageObject.isMaskDocument(currentDocument) && (inFavs || MediaDataController.getInstance(currentAccount).canAddStickerToFavorites() && MessageObject.isStickerHasSet(currentDocument))) { items.add(inFavs ? LocaleController.getString("DeleteFromFavorites", R.string.DeleteFromFavorites) : LocaleController.getString("AddToFavorites", R.string.AddToFavorites)); - icons.add(inFavs ? R.drawable.outline_unfave : R.drawable.outline_fave); + icons.add(inFavs ? R.drawable.msg_unfave : R.drawable.msg_fave); actions.add(2); } if (isRecentSticker) { @@ -209,77 +235,110 @@ public class ContentPreviewViewer { for (int a = 0; a < icons.size(); a++) { ic[a] = icons.get(a); } - builder.setItems(items.toArray(new CharSequence[0]), ic, (dialog, which) -> { - if (parentActivity == null) { - return; - } - if (actions.get(which) == 0 || actions.get(which) == 6) { - if (delegate != null) { - delegate.sendSticker(currentDocument, currentQuery, parentObject, actions.get(which) == 0, 0); - } - } else if (actions.get(which) == 1) { - if (delegate != null) { - delegate.openSet(currentStickerSet, clearsInputField); - } - } else if (actions.get(which) == 2) { - MediaDataController.getInstance(currentAccount).addRecentSticker(MediaDataController.TYPE_FAVE, parentObject, currentDocument, (int) (System.currentTimeMillis() / 1000), inFavs); - } else if (actions.get(which) == 3) { - TLRPC.Document sticker = currentDocument; - Object parent = parentObject; - String query = currentQuery; - ContentPreviewViewerDelegate stickerPreviewViewerDelegate = delegate; - AlertsCreator.createScheduleDatePickerDialog(parentActivity, stickerPreviewViewerDelegate.getDialogId(), (notify, scheduleDate) -> stickerPreviewViewerDelegate.sendSticker(sticker, query, parent, notify, scheduleDate)); - } else if (actions.get(which) == 4) { - MediaDataController.getInstance(currentAccount).addRecentSticker(MediaDataController.TYPE_IMAGE, parentObject, currentDocument, (int) (System.currentTimeMillis() / 1000), true); - } else if (actions.get(which) == 5) { - delegate.remove(importingSticker); - } - }); - builder.setDimBehind(false); - visibleDialog = builder.create(); - visibleDialog.setOnDismissListener(dialog -> { - visibleDialog = null; - close(); - }); - visibleDialog.show(); - containerView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); - if (delegate != null && delegate.needRemove()) { - BottomSheet.BottomSheetCell cell = visibleDialog.getItemViews().get(0); - cell.setTextColor(getThemedColor(Theme.key_dialogTextRed)); - cell.setIconColor(getThemedColor(Theme.key_dialogRedIcon)); - } - } else if (delegate != null) { - animateY = true; - visibleDialog = new BottomSheet(parentActivity, false) { + + View.OnClickListener onItemClickListener = new View.OnClickListener() { @Override - protected void onContainerTranslationYChanged(float translationY) { - if (animateY) { - ViewGroup container = getSheetContainer(); - if (finalMoveY == 0) { - finalMoveY = 0;//-container.getMeasuredHeight() / 2; - startMoveY = moveY; + public void onClick(View v) { + if (parentActivity == null) { + return; + } + int which = (int) v.getTag(); + if (actions.get(which) == 0 || actions.get(which) == 6) { + if (delegate != null) { + delegate.sendSticker(currentDocument, currentQuery, parentObject, actions.get(which) == 0, 0); } - currentMoveYProgress = 1.0f - Math.min(1.0f, translationY / containerView.getMeasuredHeight()); - moveY = startMoveY + (finalMoveY - startMoveY) * currentMoveYProgress; - ContentPreviewViewer.this.containerView.invalidate(); - if (currentMoveYProgress == 1.0f) { - animateY = false; + } else if (actions.get(which) == 1) { + if (delegate != null) { + delegate.openSet(currentStickerSet, clearsInputField); } + } else if (actions.get(which) == 2) { + MediaDataController.getInstance(currentAccount).addRecentSticker(MediaDataController.TYPE_FAVE, parentObject, currentDocument, (int) (System.currentTimeMillis() / 1000), inFavs); + } else if (actions.get(which) == 3) { + TLRPC.Document sticker = currentDocument; + Object parent = parentObject; + String query = currentQuery; + ContentPreviewViewerDelegate stickerPreviewViewerDelegate = delegate; + AlertsCreator.createScheduleDatePickerDialog(parentActivity, stickerPreviewViewerDelegate.getDialogId(), (notify, scheduleDate) -> stickerPreviewViewerDelegate.sendSticker(sticker, query, parent, notify, scheduleDate)); + } else if (actions.get(which) == 4) { + MediaDataController.getInstance(currentAccount).addRecentSticker(MediaDataController.TYPE_IMAGE, parentObject, currentDocument, (int) (System.currentTimeMillis() / 1000), true); + } else if (actions.get(which) == 5) { + delegate.remove(importingSticker); + } + if (popupWindow != null) { + popupWindow.dismiss(); } } }; + ActionBarPopupWindow.ActionBarPopupWindowLayout previewMenu = new ActionBarPopupWindow.ActionBarPopupWindowLayout(containerView.getContext(), R.drawable.popup_fixed_alert2, resourcesProvider); + + for (int i = 0; i < items.size(); i++) { + View item = ActionBarMenuItem.addItem(previewMenu, icons.get(i), items.get(i), false, resourcesProvider); + item.setTag(i); + item.setOnClickListener(onItemClickListener); + } + popupWindow = new ActionBarPopupWindow(previewMenu, LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT) { + @Override + public void dismiss() { + super.dismiss(); + popupWindow = null; + menuVisible = false; + if (closeOnDismiss) { + close(); + } + } + }; + popupWindow.setPauseNotifications(true); + popupWindow.setDismissAnimationDuration(100); + popupWindow.setScaleOut(true); + popupWindow.setOutsideTouchable(true); + popupWindow.setClippingEnabled(true); + popupWindow.setAnimationStyle(R.style.PopupContextAnimation); + popupWindow.setFocusable(true); + previewMenu.measure(View.MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(1000), View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(1000), View.MeasureSpec.AT_MOST)); + popupWindow.setInputMethodMode(ActionBarPopupWindow.INPUT_METHOD_NOT_NEEDED); + popupWindow.getContentView().setFocusableInTouchMode(true); + + int insets = 0; + int top; + if (Build.VERSION.SDK_INT >= 21 && lastInsets != null) { + insets = lastInsets.getStableInsetBottom() + lastInsets.getStableInsetTop(); + top = lastInsets.getStableInsetTop(); + } else { + top = AndroidUtilities.statusBarHeight; + } + int size; + if (currentContentType == CONTENT_TYPE_GIF) { + size = Math.min(containerView.getWidth(), containerView.getHeight() - insets) - AndroidUtilities.dp(40f); + } else { + if (drawEffect) { + size = (int) (Math.min(containerView.getWidth(), containerView.getHeight() - insets) - AndroidUtilities.dpf2(40f)); + } else { + size = (int) (Math.min(containerView.getWidth(), containerView.getHeight() - insets) / 1.8f); + } + } + + int y = (int) (moveY + Math.max(size / 2 + top + (stickerEmojiLayout != null ? AndroidUtilities.dp(40) : 0), (containerView.getHeight() - insets - keyboardHeight) / 2) + size / 2); + y += AndroidUtilities.dp(24); + if (drawEffect) { + y += AndroidUtilities.dp(24); + } + popupWindow.showAtLocation(containerView, 0, (int) ((containerView.getMeasuredWidth() - previewMenu.getMeasuredWidth()) / 2f), y); + + containerView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + } else if (delegate != null) { + menuVisible = true; ArrayList items = new ArrayList<>(); final ArrayList actions = new ArrayList<>(); ArrayList icons = new ArrayList<>(); if (delegate.needSend() && !delegate.isInScheduleMode()) { items.add(LocaleController.getString("SendGifPreview", R.string.SendGifPreview)); - icons.add(R.drawable.outline_send); + icons.add(R.drawable.msg_send); actions.add(0); } if (delegate.canSchedule()) { items.add(LocaleController.getString("Schedule", R.string.Schedule)); - icons.add(R.drawable.msg_timer); + icons.add(R.drawable.msg_autodelete); actions.add(3); } @@ -291,7 +350,7 @@ public class ContentPreviewViewer { actions.add(1); } else { items.add(LocaleController.formatString("SaveToGIFs", R.string.SaveToGIFs)); - icons.add(R.drawable.outline_add_gif); + icons.add(R.drawable.msg_gif_add); actions.add(2); } } else { @@ -302,17 +361,21 @@ public class ContentPreviewViewer { for (int a = 0; a < icons.size(); a++) { ic[a] = icons.get(a); } - visibleDialog.setItems(items.toArray(new CharSequence[0]), ic, (dialog, which) -> { + + ActionBarPopupWindow.ActionBarPopupWindowLayout previewMenu = new ActionBarPopupWindow.ActionBarPopupWindowLayout(containerView.getContext(), R.drawable.popup_fixed_alert2, resourcesProvider); + + View.OnClickListener onItemClickListener = v -> { if (parentActivity == null) { return; } + int which = (int) v.getTag(); if (actions.get(which) == 0) { delegate.sendGif(currentDocument != null ? currentDocument : inlineResult, parentObject, true, 0); } else if (actions.get(which) == 1) { MediaDataController.getInstance(currentAccount).removeRecentGif(currentDocument); delegate.gifAddedOrDeleted(); } else if (actions.get(which) == 2) { - MediaDataController.getInstance(currentAccount).addRecentGif(currentDocument, (int) (System.currentTimeMillis() / 1000)); + MediaDataController.getInstance(currentAccount).addRecentGif(currentDocument, (int) (System.currentTimeMillis() / 1000), true); MessagesController.getInstance(currentAccount).saveGif("gif", currentDocument); delegate.gifAddedOrDeleted(); } else if (actions.get(which) == 3) { @@ -322,21 +385,105 @@ public class ContentPreviewViewer { ContentPreviewViewerDelegate stickerPreviewViewerDelegate = delegate; AlertsCreator.createScheduleDatePickerDialog(parentActivity, stickerPreviewViewerDelegate.getDialogId(), (notify, scheduleDate) -> stickerPreviewViewerDelegate.sendGif(document != null ? document : result, parent, notify, scheduleDate), resourcesProvider); } - }); - visibleDialog.setDimBehind(false); - visibleDialog.setOnDismissListener(dialog -> { - visibleDialog = null; - close(); - }); - visibleDialog.show(); + if (popupWindow != null) { + popupWindow.dismiss(); + } + }; + + for (int i = 0; i < items.size(); i++) { + ActionBarMenuSubItem item = ActionBarMenuItem.addItem(previewMenu, icons.get(i), items.get(i), false, resourcesProvider); + item.setTag(i); + item.setOnClickListener(onItemClickListener); + + if (canDelete && i == items.size() - 1) { + item.setColors(getThemedColor(Theme.key_dialogTextRed2), getThemedColor(Theme.key_dialogRedIcon)); + } + } + popupWindow = new ActionBarPopupWindow(previewMenu, LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT) { + @Override + public void dismiss() { + super.dismiss(); + popupWindow = null; + menuVisible = false; + if (closeOnDismiss) { + close(); + } + } + }; + popupWindow.setPauseNotifications(true); + popupWindow.setDismissAnimationDuration(150); + popupWindow.setScaleOut(true); + popupWindow.setOutsideTouchable(true); + popupWindow.setClippingEnabled(true); + popupWindow.setAnimationStyle(R.style.PopupContextAnimation); + popupWindow.setFocusable(true); + previewMenu.measure(View.MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(1000), View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(1000), View.MeasureSpec.AT_MOST)); + popupWindow.setInputMethodMode(ActionBarPopupWindow.INPUT_METHOD_NOT_NEEDED); + popupWindow.getContentView().setFocusableInTouchMode(true); + + int insets = 0; + int top; + if (Build.VERSION.SDK_INT >= 21 && lastInsets != null) { + insets = lastInsets.getStableInsetBottom() + lastInsets.getStableInsetTop(); + top = lastInsets.getStableInsetTop(); + } else { + top = AndroidUtilities.statusBarHeight; + } + int size = Math.min(containerView.getWidth(), containerView.getHeight() - insets) - AndroidUtilities.dp(40f); + + + int y = (int) (moveY + Math.max(size / 2 + top + (stickerEmojiLayout != null ? AndroidUtilities.dp(40) : 0), (containerView.getHeight() - insets - keyboardHeight) / 2) + size / 2); + y += AndroidUtilities.dp(24) - moveY; + popupWindow.showAtLocation(containerView, 0, (int) ((containerView.getMeasuredWidth() - previewMenu.getMeasuredWidth()) / 2f), y); + containerView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); - if (canDelete) { - visibleDialog.setItemColor(items.size() - 1, getThemedColor(Theme.key_dialogTextRed2), getThemedColor(Theme.key_dialogRedIcon)); + + if (moveY != 0) { + if (finalMoveY == 0) { + finalMoveY = 0; + startMoveY = moveY; + } + ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f); + valueAnimator.addUpdateListener(animation -> { + currentMoveYProgress = (float) animation.getAnimatedValue(); + moveY = startMoveY + (finalMoveY - startMoveY) * currentMoveYProgress; + ContentPreviewViewer.this.containerView.invalidate(); + }); + valueAnimator.setDuration(350); + valueAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT); + valueAnimator.start(); } } } }; + private void showUnlockPremiumView() { + if (unlockPremiumView == null) { + unlockPremiumView = new UnlockPremiumView(containerView.getContext(), UnlockPremiumView.TYPE_STICKERS, resourcesProvider); + containerView.addView(unlockPremiumView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + unlockPremiumView.setOnClickListener(v -> { + menuVisible = false; + containerView.invalidate(); + close(); + }); + unlockPremiumView.premiumButtonView.buttonLayout.setOnClickListener(v -> { + if (parentActivity instanceof LaunchActivity) { + LaunchActivity activity = (LaunchActivity) parentActivity; + if (activity.getActionBarLayout() != null && activity.getActionBarLayout().getLastFragment() != null) { + activity.getActionBarLayout().getLastFragment().dismissCurrentDialog(); + } + activity.presentFragment(new PremiumPreviewFragment(PremiumPreviewFragment.featureTypeToServerString(PremiumPreviewFragment.PREMIUM_FEATURE_STICKERS))); + } + menuVisible = false; + containerView.invalidate(); + close(); + }); + } + AndroidUtilities.updateViewVisibilityAnimated(unlockPremiumView, false, 1f, false); + AndroidUtilities.updateViewVisibilityAnimated(unlockPremiumView, true); + unlockPremiumView.setTranslationY(0); + } + private int currentContentType; private TLRPC.Document currentDocument; private SendMessagesHelper.ImportingSticker importingSticker; @@ -348,6 +495,7 @@ public class ContentPreviewViewer { @SuppressLint("StaticFieldLeak") private static volatile ContentPreviewViewer Instance = null; + public static ContentPreviewViewer getInstance() { ContentPreviewViewer localInstance = Instance; if (localInstance == null) { @@ -412,7 +560,7 @@ public class ContentPreviewViewer { if (isVisible) { if (event.getAction() == MotionEvent.ACTION_MOVE) { if (currentContentType == CONTENT_TYPE_GIF) { - if (visibleDialog == null && showProgress == 1.0f) { + if (!menuVisible && showProgress == 1.0f) { if (lastTouchY == -10000) { lastTouchY = event.getY(); currentMoveY = 0; @@ -483,8 +631,13 @@ public class ContentPreviewViewer { ((ContextLinkCell) currentPreviewCell).setScaled(false); } currentPreviewCell = view; - setKeyboardHeight(height); clearsInputField = false; + menuVisible = false; + closeOnDismiss = false; + if (popupWindow != null) { + popupWindow.dismiss(); + } + AndroidUtilities.updateViewVisibilityAnimated(unlockPremiumView, false); if (currentPreviewCell instanceof StickerEmojiCell) { StickerEmojiCell stickerEmojiCell = (StickerEmojiCell) currentPreviewCell; open(stickerEmojiCell.getSticker(), stickerEmojiCell.getStickerPath(), stickerEmojiCell.getEmoji(), delegate != null ? delegate.getQuery(false) : null, null, contentType, stickerEmojiCell.isRecent(), stickerEmojiCell.getParentObject(), resourcesProvider); @@ -597,7 +750,7 @@ public class ContentPreviewViewer { listView.requestDisallowInterceptTouchEvent(true); openPreviewRunnable = null; setParentActivity((Activity) listView.getContext()); - setKeyboardHeight(height); + //setKeyboardHeight(height); clearsInputField = false; if (currentPreviewCell instanceof StickerEmojiCell) { StickerEmojiCell stickerEmojiCell = (StickerEmojiCell) currentPreviewCell; @@ -632,6 +785,8 @@ public class ContentPreviewViewer { currentAccount = UserConfig.selectedAccount; centerImage.setCurrentAccount(currentAccount); centerImage.setLayerNum(Integer.MAX_VALUE); + effectImage.setCurrentAccount(currentAccount); + effectImage.setLayerNum(Integer.MAX_VALUE); if (parentActivity == activity) { return; } @@ -655,12 +810,14 @@ public class ContentPreviewViewer { protected void onAttachedToWindow() { super.onAttachedToWindow(); centerImage.onAttachedToWindow(); + effectImage.onAttachedToWindow(); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); centerImage.onDetachedFromWindow(); + effectImage.onDetachedFromWindow(); } }; containerView.setFocusable(false); @@ -672,6 +829,10 @@ public class ContentPreviewViewer { return true; }); + + SharedPreferences sharedPreferences = MessagesController.getInstance(currentAccount).getGlobalEmojiSettings(); + keyboardHeight = sharedPreferences.getInt("kbd_height", AndroidUtilities.dp(200)); + windowLayoutParams = new WindowManager.LayoutParams(); windowLayoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; windowLayoutParams.format = PixelFormat.TRANSLUCENT; @@ -686,6 +847,10 @@ public class ContentPreviewViewer { centerImage.setAspectFit(true); centerImage.setInvalidateAll(true); centerImage.setParentView(containerView); + + effectImage.setAspectFit(true); + effectImage.setInvalidateAll(true); + effectImage.setParentView(containerView); } public void setKeyboardHeight(int height) { @@ -699,6 +864,8 @@ public class ContentPreviewViewer { this.resourcesProvider = resourcesProvider; isRecentSticker = isRecent; stickerEmojiLayout = null; + backgroundDrawable.setColor(Theme.getActiveTheme().isDark() ? 0x71000000 : 0x64E6E6E6); + drawEffect = false; if (contentType == CONTENT_TYPE_STICKER) { if (document == null && sticker == null) { return; @@ -708,6 +875,8 @@ public class ContentPreviewViewer { textPaint.setTextSize(AndroidUtilities.dp(24)); } + effectImage.clearImage(); + drawEffect = false; if (document != null) { TLRPC.InputStickerSet newSet = null; for (int a = 0; a < document.attributes.size(); a++) { @@ -718,24 +887,19 @@ public class ContentPreviewViewer { } } if (newSet != null && (delegate == null || delegate.needMenu())) { - try { - if (visibleDialog != null) { - visibleDialog.setOnDismissListener(null); - visibleDialog.dismiss(); - visibleDialog = null; - } - } catch (Exception e) { - FileLog.e(e); - } AndroidUtilities.cancelRunOnUIThread(showSheetRunnable); AndroidUtilities.runOnUIThread(showSheetRunnable, 1300); } currentStickerSet = newSet; TLRPC.PhotoSize thumb = FileLoader.getClosestPhotoSizeWithSize(document.thumbs, 90); if (MessageObject.isVideoStickerDocument(document)) { - centerImage.setImage(ImageLocation.getForDocument(document), null, ImageLocation.getForDocument(thumb, document), null, null, 0, "webp", currentStickerSet, 1); + centerImage.setImage(ImageLocation.getForDocument(document), null, ImageLocation.getForDocument(thumb, document), null, null, 0, "webp", currentStickerSet, 1); } else { centerImage.setImage(ImageLocation.getForDocument(document), null, ImageLocation.getForDocument(thumb, document), null, "webp", currentStickerSet, 1); + if (MessageObject.isPremiumSticker(document)) { + drawEffect = true; + effectImage.setImage(ImageLocation.getForDocument(MessageObject.getPremiumStickerAnimation(document), document), null, null, null, "tgs", currentStickerSet, 1); + } } for (int a = 0; a < document.attributes.size(); a++) { TLRPC.DocumentAttribute attribute = document.attributes.get(a); @@ -754,15 +918,6 @@ public class ContentPreviewViewer { stickerEmojiLayout = new StaticLayout(emoji, textPaint, AndroidUtilities.dp(100), Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false); } if (delegate.needMenu()) { - try { - if (visibleDialog != null) { - visibleDialog.setOnDismissListener(null); - visibleDialog.dismiss(); - visibleDialog = null; - } - } catch (Exception e) { - FileLog.e(e); - } AndroidUtilities.cancelRunOnUIThread(showSheetRunnable); AndroidUtilities.runOnUIThread(showSheetRunnable, 1300); } @@ -794,6 +949,13 @@ public class ContentPreviewViewer { AndroidUtilities.runOnUIThread(showSheetRunnable, 2000); } + if (centerImage.getLottieAnimation() != null) { + centerImage.getLottieAnimation().setCurrentFrame(0); + } + if (drawEffect && effectImage.getLottieAnimation() != null) { + effectImage.getLottieAnimation().setCurrentFrame(0); + } + currentContentType = contentType; currentDocument = document; importingSticker = sticker; @@ -831,27 +993,31 @@ public class ContentPreviewViewer { return isVisible; } + public void closeWithMenu() { + menuVisible = false; + if (popupWindow != null) { + popupWindow.dismiss(); + popupWindow = null; + } + close(); + } + public void close() { - if (parentActivity == null || visibleDialog != null) { + if (parentActivity == null || menuVisible) { return; } AndroidUtilities.cancelRunOnUIThread(showSheetRunnable); showProgress = 1.0f; lastUpdateTime = System.currentTimeMillis(); containerView.invalidate(); - try { - if (visibleDialog != null) { - visibleDialog.dismiss(); - visibleDialog = null; - } - } catch (Exception e) { - FileLog.e(e); - } currentDocument = null; currentStickerSet = null; currentQuery = null; delegate = null; isVisible = false; + if (unlockPremiumView != null) { + unlockPremiumView.animate().alpha(0).translationY(AndroidUtilities.dp(56)).setDuration(150).setInterpolator(CubicBezierInterpolator.DEFAULT).start(); + } NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.startAllHeavyOperations, 8); } @@ -861,17 +1027,15 @@ public class ContentPreviewViewer { currentDocument = null; currentQuery = null; currentStickerSet = null; - try { - if (visibleDialog != null) { - visibleDialog.dismiss(); - visibleDialog = null; - } - } catch (Exception e) { - FileLog.e(e); - } if (parentActivity == null || windowView == null) { return; } + if (blurrBitmap != null) { + blurrBitmap.recycle(); + blurrBitmap = null; + } + blurProgress = 0f; + menuVisible = false; try { if (windowView.getParent() != null) { WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); @@ -895,6 +1059,35 @@ public class ContentPreviewViewer { if (containerView == null || backgroundDrawable == null) { return; } + + if (menuVisible && blurrBitmap == null) { + prepareBlurBitmap(); + } + + if (blurrBitmap != null) { + if (menuVisible && blurProgress != 1f) { + blurProgress += 16 / 120f; + if (blurProgress > 1f) { + blurProgress = 1f; + } + containerView.invalidate(); + } else if (!menuVisible && blurProgress != 0f) { + blurProgress -= 16 / 120f; + if (blurProgress < 0f) { + blurProgress = 0f; + } + containerView.invalidate(); + } + + if (blurProgress != 0 && blurrBitmap != null) { + paint.setAlpha((int) (blurProgress * 255)); + canvas.save(); + canvas.scale(12f, 12f); + canvas.drawBitmap(blurrBitmap, 0, 0, paint); + canvas.restore(); + } + } + backgroundDrawable.setAlpha((int) (180 * showProgress)); backgroundDrawable.setBounds(0, 0, containerView.getWidth(), containerView.getHeight()); backgroundDrawable.draw(canvas); @@ -913,15 +1106,35 @@ public class ContentPreviewViewer { if (currentContentType == CONTENT_TYPE_GIF) { size = Math.min(containerView.getWidth(), containerView.getHeight() - insets) - AndroidUtilities.dp(40f); } else { - size = (int) (Math.min(containerView.getWidth(), containerView.getHeight() - insets) / 1.8f); + if (drawEffect) { + size = (int) (Math.min(containerView.getWidth(), containerView.getHeight() - insets) - AndroidUtilities.dpf2(40f)); + } else { + size = (int) (Math.min(containerView.getWidth(), containerView.getHeight() - insets) / 1.8f); + } } - - canvas.translate(containerView.getWidth() / 2, moveY + Math.max(size / 2 + top + (stickerEmojiLayout != null ? AndroidUtilities.dp(40) : 0), (containerView.getHeight() - insets - keyboardHeight) / 2)); + float topOffset = Math.max(size / 2 + top + (stickerEmojiLayout != null ? AndroidUtilities.dp(40) : 0), (containerView.getHeight() - insets - keyboardHeight) / 2); + if (drawEffect) { + topOffset += AndroidUtilities.dp(40); + } + canvas.translate(containerView.getWidth() / 2, moveY + topOffset); float scale = 0.8f * showProgress / 0.8f; size = (int) (size * scale); - centerImage.setAlpha(showProgress); - centerImage.setImageCoords(-size / 2, -size / 2, size, size); - centerImage.draw(canvas); + + if (drawEffect) { + float smallImageSize = size * 0.6669f; + float padding = size * 0.0546875f; + centerImage.setAlpha(showProgress); + centerImage.setImageCoords(size - smallImageSize - size / 2f - padding, (size - smallImageSize) / 2f - size / 2f, smallImageSize, smallImageSize); + centerImage.draw(canvas); + + effectImage.setAlpha(showProgress); + effectImage.setImageCoords(-size / 2f, -size / 2f, size, size); + effectImage.draw(canvas); + } else { + centerImage.setAlpha(showProgress); + centerImage.setImageCoords(-size / 2f, -size / 2f, size, size); + centerImage.draw(canvas); + } if (currentContentType == CONTENT_TYPE_GIF && slideUpDrawable != null) { int w = slideUpDrawable.getIntrinsicWidth(); @@ -932,7 +1145,11 @@ public class ContentPreviewViewer { slideUpDrawable.draw(canvas); } if (stickerEmojiLayout != null) { - canvas.translate(-AndroidUtilities.dp(50), -centerImage.getImageHeight() / 2 - AndroidUtilities.dp(30)); + if (drawEffect) { + canvas.translate(-AndroidUtilities.dp(50), -effectImage.getImageHeight() / 2 - AndroidUtilities.dp(30)); + } else { + canvas.translate(-AndroidUtilities.dp(50), -centerImage.getImageHeight() / 2 - AndroidUtilities.dp(30)); + } stickerEmojiLayout.draw(canvas); } canvas.restore(); @@ -960,6 +1177,12 @@ public class ContentPreviewViewer { centerImage.setImageBitmap((Drawable) null); AndroidUtilities.unlockOrientation(parentActivity); AndroidUtilities.runOnUIThread(() -> centerImage.setImageBitmap((Bitmap) null)); + if (blurrBitmap != null) { + blurrBitmap.recycle(); + blurrBitmap = null; + } + AndroidUtilities.updateViewVisibilityAnimated(unlockPremiumView, false, 1f, false); + blurProgress = 0f; try { if (windowView.getParent() != null) { WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); @@ -976,4 +1199,40 @@ public class ContentPreviewViewer { Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null; return color != null ? color : Theme.getColor(key); } + + private void prepareBlurBitmap() { + if (parentActivity == null) { + return; + } + View parentView = parentActivity.getWindow().getDecorView(); + int w = (int) (parentView.getMeasuredWidth() / 12.0f); + int h = (int) (parentView.getMeasuredHeight() / 12.0f); + Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + canvas.scale(1.0f / 12.0f, 1.0f / 12.0f); + canvas.drawColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + parentView.draw(canvas); + if (parentActivity instanceof LaunchActivity && ((LaunchActivity) parentActivity).getActionBarLayout().getLastFragment().getVisibleDialog() != null) { + ((LaunchActivity) parentActivity).getActionBarLayout().getLastFragment().getVisibleDialog().getWindow().getDecorView().draw(canvas); + } + Utilities.stackBlurBitmap(bitmap, Math.max(10, Math.max(w, h) / 180)); + blurrBitmap = bitmap; + } + + public boolean showMenuFor(View view) { + if (view instanceof StickerEmojiCell) { + Activity activity = AndroidUtilities.findActivity(view.getContext()); + if (activity == null) { + return true; + } + setParentActivity(activity); + StickerEmojiCell stickerEmojiCell = (StickerEmojiCell) view; + open(stickerEmojiCell.getSticker(), stickerEmojiCell.getStickerPath(), stickerEmojiCell.getEmoji(), delegate != null ? delegate.getQuery(false) : null, null, CONTENT_TYPE_STICKER, stickerEmojiCell.isRecent(), stickerEmojiCell.getParentObject(), resourcesProvider); + AndroidUtilities.cancelRunOnUIThread(showSheetRunnable); + AndroidUtilities.runOnUIThread(showSheetRunnable, 16); + stickerEmojiCell.setScaled(true); + return true; + } + return false; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DataAutoDownloadActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DataAutoDownloadActivity.java index 5ab42e9e7..4a6160713 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DataAutoDownloadActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DataAutoDownloadActivity.java @@ -24,6 +24,10 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DownloadController; import org.telegram.messenger.LocaleController; @@ -49,10 +53,6 @@ import org.telegram.ui.Components.SlideChooseView; import java.util.ArrayList; import java.util.Collections; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class DataAutoDownloadActivity extends BaseFragment { private ListAdapter listAdapter; @@ -582,8 +582,8 @@ public class DataAutoDownloadActivity extends BaseFragment { break; } } - int size1 = (video1 ? o1.sizes[index1] : 0) + (doc1 ? o1.sizes[index2] : 0); - int size2 = (video2 ? o2.sizes[index1] : 0) + (doc2 ? o2.sizes[index2] : 0); + long size1 = (video1 ? o1.sizes[index1] : 0) + (doc1 ? o1.sizes[index2] : 0); + long size2 = (video2 ? o2.sizes[index1] : 0) + (doc2 ? o2.sizes[index2] : 0); if (size1 > size2) { return 1; } else if (size1 < size2) { @@ -697,7 +697,7 @@ public class DataAutoDownloadActivity extends BaseFragment { } else { preset = DownloadController.getInstance(currentAccount).getCurrentRoamingPreset(); } - int maxSize = preset.sizes[DownloadController.typeToIndex(type)]; + long maxSize = preset.sizes[DownloadController.typeToIndex(type)]; int count = 0; StringBuilder builder = new StringBuilder(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DataSettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DataSettingsActivity.java index b3c0066e4..b76c35fee 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DataSettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DataSettingsActivity.java @@ -21,6 +21,9 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.BuildVars; import org.telegram.messenger.DownloadController; @@ -51,9 +54,6 @@ import org.telegram.ui.Components.voip.VoIPHelper; import java.io.File; import java.util.ArrayList; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class DataSettingsActivity extends BaseFragment { private ListAdapter listAdapter; @@ -93,6 +93,12 @@ public class DataSettingsActivity extends BaseFragment { private int proxySection2Row; private int clearDraftsRow; private int clearDraftsSectionRow; + private int saveToGallerySectionRow; + private int saveToGalleryPeerRow; + private int saveToGalleryChannelsRow; + private int saveToGalleryGroupsRow; + private int saveToGalleryDividerRow; + private int rowCount; @Override @@ -119,6 +125,13 @@ public class DataSettingsActivity extends BaseFragment { roamingRow = rowCount++; resetDownloadRow = rowCount++; mediaDownloadSection2Row = rowCount++; + + saveToGallerySectionRow = rowCount++; + saveToGalleryPeerRow = rowCount++; + saveToGalleryGroupsRow = rowCount++; + saveToGalleryChannelsRow = rowCount++; + saveToGalleryDividerRow = rowCount++; + autoplayHeaderRow = rowCount++; autoplayGifsRow = rowCount++; autoplayVideoRow = rowCount++; @@ -133,6 +146,7 @@ public class DataSettingsActivity extends BaseFragment { enableMkvRow = -1; } enableAllStreamInfoRow = rowCount++; + enableCacheStreamRow = -1;//rowCount++; callsSectionRow = rowCount++; useLessDataForCallsRow = rowCount++; @@ -176,7 +190,19 @@ public class DataSettingsActivity extends BaseFragment { frameLayout.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT)); listView.setAdapter(listAdapter); listView.setOnItemClickListener((view, position, x, y) -> { - if (position == mobileRow || position == roamingRow || position == wifiRow) { + if (position == saveToGalleryGroupsRow || position == saveToGalleryChannelsRow || position == saveToGalleryPeerRow) { + int flag; + if (position == saveToGalleryGroupsRow) { + flag = SharedConfig.SAVE_TO_GALLERY_FLAG_GROUP; + } else if (position == saveToGalleryChannelsRow) { + flag = SharedConfig.SAVE_TO_GALLERY_FLAG_CHANNELS; + } else { + flag = SharedConfig.SAVE_TO_GALLERY_FLAG_PEER; + } + SharedConfig.toggleSaveToGalleryFlag(flag); + TextCheckCell textCheckCell = (TextCheckCell) view; + textCheckCell.setChecked((SharedConfig.saveToGalleryFlags & flag) != 0); + } else if (position == mobileRow || position == roamingRow || position == wifiRow) { if (LocaleController.isRTL && x <= AndroidUtilities.dp(76) || !LocaleController.isRTL && x >= view.getMeasuredWidth() - AndroidUtilities.dp(76)) { boolean wasEnabled = listAdapter.isRowEnabled(resetDownloadRow); @@ -526,6 +552,8 @@ public class DataSettingsActivity extends BaseFragment { headerCell.setText(LocaleController.getString("Streaming", R.string.Streaming)); } else if (position == autoplayHeaderRow) { headerCell.setText(LocaleController.getString("AutoplayMedia", R.string.AutoplayMedia)); + } else if (position == saveToGallerySectionRow) { + headerCell.setText(LocaleController.getString("SaveToGallery", R.string.SaveToGallery)); } break; } @@ -543,6 +571,12 @@ public class DataSettingsActivity extends BaseFragment { checkCell.setTextAndCheck(LocaleController.getString("AutoplayGIF", R.string.AutoplayGIF), SharedConfig.autoplayGifs, true); } else if (position == autoplayVideoRow) { checkCell.setTextAndCheck(LocaleController.getString("AutoplayVideo", R.string.AutoplayVideo), SharedConfig.autoplayVideo, false); + } else if (position == saveToGalleryPeerRow) { + checkCell.setTextAndCheck(LocaleController.getString("SaveToGalleryPrivate", R.string.SaveToGalleryPrivate), (SharedConfig.saveToGalleryFlags & SharedConfig.SAVE_TO_GALLERY_FLAG_PEER) != 0, true); + } else if (position == saveToGalleryGroupsRow) { + checkCell.setTextAndCheck(LocaleController.getString("SaveToGalleryGroups", R.string.SaveToGalleryGroups), (SharedConfig.saveToGalleryFlags & SharedConfig.SAVE_TO_GALLERY_FLAG_GROUP) != 0, true); + } else if (position == saveToGalleryChannelsRow) { + checkCell.setTextAndCheck(LocaleController.getString("SaveToGalleryChannels", R.string.SaveToGalleryChannels), (SharedConfig.saveToGalleryFlags & SharedConfig.SAVE_TO_GALLERY_FLAG_CHANNELS) != 0, false); } break; } @@ -650,7 +684,7 @@ public class DataSettingsActivity extends BaseFragment { } return position == mobileRow || position == roamingRow || position == wifiRow || position == storageUsageRow || position == useLessDataForCallsRow || position == dataUsageRow || position == proxyRow || position == clearDraftsRow || position == enableCacheStreamRow || position == enableStreamRow || position == enableAllStreamRow || position == enableMkvRow || position == quickRepliesRow || position == autoplayVideoRow || position == autoplayGifsRow || - position == storageNumRow; + position == storageNumRow || position == saveToGalleryGroupsRow || position == saveToGalleryPeerRow || position == saveToGalleryChannelsRow; } @Override @@ -693,11 +727,11 @@ public class DataSettingsActivity extends BaseFragment { @Override public int getItemViewType(int position) { - if (position == mediaDownloadSection2Row || position == usageSection2Row || position == callsSection2Row || position == proxySection2Row || position == autoplaySectionRow || position == clearDraftsSectionRow) { + if (position == mediaDownloadSection2Row || position == usageSection2Row || position == callsSection2Row || position == proxySection2Row || position == autoplaySectionRow || position == clearDraftsSectionRow || position == saveToGalleryDividerRow) { return 0; - } else if (position == mediaDownloadSectionRow || position == streamSectionRow || position == callsSectionRow || position == usageSectionRow || position == proxySectionRow || position == autoplayHeaderRow) { + } else if (position == mediaDownloadSectionRow || position == streamSectionRow || position == callsSectionRow || position == usageSectionRow || position == proxySectionRow || position == autoplayHeaderRow || position == saveToGallerySectionRow) { return 2; - } else if (position == enableCacheStreamRow || position == enableStreamRow || position == enableAllStreamRow || position == enableMkvRow || position == autoplayGifsRow || position == autoplayVideoRow) { + } else if (position == enableCacheStreamRow || position == enableStreamRow || position == enableAllStreamRow || position == enableMkvRow || position == autoplayGifsRow || position == autoplayVideoRow || position == saveToGalleryGroupsRow || position == saveToGalleryPeerRow || position == saveToGalleryChannelsRow) { return 3; } else if (position == enableAllStreamInfoRow) { return 4; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DefaultThemesPreviewCell.java b/TMessagesProj/src/main/java/org/telegram/ui/DefaultThemesPreviewCell.java index ca6c22aea..1a5360069 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DefaultThemesPreviewCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DefaultThemesPreviewCell.java @@ -9,9 +9,11 @@ import android.content.Context; import android.content.SharedPreferences; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; +import android.graphics.drawable.RippleDrawable; import android.text.TextUtils; import android.view.Gravity; import android.view.View; +import android.view.Window; import android.widget.FrameLayout; import android.widget.LinearLayout; @@ -22,6 +24,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.tgnet.TLRPC; @@ -43,18 +46,22 @@ import java.util.ArrayList; public class DefaultThemesPreviewCell extends LinearLayout { private final RecyclerListView recyclerView; - private final LinearLayoutManager layoutManager; + private LinearLayoutManager layoutManager = null; private final FlickerLoadingView progressView; private final ChatThemeBottomSheet.Adapter adapter; RLottieDrawable darkThemeDrawable; TextCell dayNightCell; TextCell browseThemesCell; + private ValueAnimator navBarAnimator; + private int navBarColor; private int selectedPosition = -1; BaseFragment parentFragment; int currentType; int themeIndex; + private Boolean wasPortrait = null; + public DefaultThemesPreviewCell(Context context, BaseFragment parentFragment, int type) { super(context); this.currentType = type; @@ -67,24 +74,13 @@ public class DefaultThemesPreviewCell extends LinearLayout { adapter = new ChatThemeBottomSheet.Adapter(parentFragment.getCurrentAccount(), null, currentType == ThemeActivity.THEME_TYPE_BASIC ? ThemeSmallPreviewView.TYPE_DEFAULT : ThemeSmallPreviewView.TYPE_GRID); recyclerView = new RecyclerListView(getContext()); recyclerView.setAdapter(adapter); + recyclerView.setSelectorDrawableColor(0); recyclerView.setClipChildren(false); recyclerView.setClipToPadding(false); recyclerView.setHasFixedSize(true); recyclerView.setItemAnimator(null); recyclerView.setNestedScrollingEnabled(false); - if (currentType == ThemeActivity.THEME_TYPE_BASIC) { - recyclerView.setLayoutManager(layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false)); - } else { - recyclerView.setHasFixedSize(false); - GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 3); - gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { - @Override - public int getSpanSize(int position) { - return 1; - } - }); - recyclerView.setLayoutManager(layoutManager = gridLayoutManager); - } + updateLayoutManager(); recyclerView.setFocusable(false); recyclerView.setPadding(AndroidUtilities.dp(12), 0, AndroidUtilities.dp(12), 0); @@ -159,6 +155,7 @@ public class DefaultThemesPreviewCell extends LinearLayout { darkThemeDrawable.commitApplyLayerColors(); dayNightCell = new TextCell(context); + dayNightCell.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_listSelector), Theme.RIPPLE_MASK_ALL)); dayNightCell.imageLeft = 21; addView(dayNightCell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -175,6 +172,7 @@ public class DefaultThemesPreviewCell extends LinearLayout { return; } int iconOldColor = Theme.getColor(Theme.key_windowBackgroundWhiteBlueText4); + int navBarOldColor = Theme.getColor(Theme.key_windowBackgroundGray); DrawerProfileCell.switchingTheme = true; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("themeconfig", Activity.MODE_PRIVATE); String dayThemeName = preferences.getString("lastDayTheme", "Blue"); @@ -208,7 +206,7 @@ public class DefaultThemesPreviewCell extends LinearLayout { dayNightCell.getImageView().getLocationInWindow(pos); pos[0] += dayNightCell.getImageView().getMeasuredWidth() / 2; pos[1] += dayNightCell.getImageView().getMeasuredHeight() / 2 + AndroidUtilities.dp(3); - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needSetDayNightTheme, themeInfo, false, pos, -1, toDark, dayNightCell.getImageView()); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needSetDayNightTheme, themeInfo, false, pos, -1, toDark, dayNightCell.getImageView(), dayNightCell); updateDayNightMode(); updateSelectedPosition(); @@ -219,8 +217,8 @@ public class DefaultThemesPreviewCell extends LinearLayout { valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { - int color = ColorUtils.blendARGB(iconOldColor, iconNewColor, (Float) valueAnimator.getAnimatedValue()); - darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN)); + int iconColor = ColorUtils.blendARGB(iconOldColor, iconNewColor, (float) valueAnimator.getAnimatedValue()); + darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(iconColor, PorterDuff.Mode.SRC_IN)); } }); valueAnimator.addListener(new AnimatorListenerAdapter() { @@ -233,6 +231,36 @@ public class DefaultThemesPreviewCell extends LinearLayout { valueAnimator.setDuration(350); valueAnimator.start(); + int navBarNewColor = Theme.getColor(Theme.key_windowBackgroundGray); + final Window window = context instanceof Activity ? ((Activity) context).getWindow() : null; + if (window != null) { + if (navBarAnimator != null && navBarAnimator.isRunning()) { + navBarOldColor = navBarColor; + navBarAnimator.cancel(); + } + final int navBarFromColor = navBarOldColor; + navBarAnimator = ValueAnimator.ofFloat(0, 1); + final float startDelay = toDark ? 50 : 200, duration = 150, fullDuration = 350; + navBarAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator valueAnimator) { + float t = Math.max(0, Math.min(1, ((float) valueAnimator.getAnimatedValue() * fullDuration - startDelay) / duration)); + navBarColor = ColorUtils.blendARGB(navBarFromColor, navBarNewColor, t); + AndroidUtilities.setNavigationBarColor(window, navBarColor, false); + AndroidUtilities.setLightNavigationBar(window, AndroidUtilities.computePerceivedBrightness(navBarColor) >= 0.721f); + } + }); + navBarAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + AndroidUtilities.setNavigationBarColor(window, navBarNewColor, false); + AndroidUtilities.setLightNavigationBar(window, AndroidUtilities.computePerceivedBrightness(navBarNewColor) >= 0.721f); + } + }); + navBarAnimator.setDuration((long) fullDuration); + navBarAnimator.start(); + } + if (Theme.isCurrentThemeDay()) { dayNightCell.setTextAndIcon(LocaleController.getString("SettingsSwitchToNightMode", R.string.SettingsSwitchToNightMode), darkThemeDrawable, true); } else { @@ -254,8 +282,8 @@ public class DefaultThemesPreviewCell extends LinearLayout { } } - if (!Theme.defaultEmojiThemes.isEmpty()) { - ArrayList themes = new ArrayList<>(Theme.defaultEmojiThemes); + if (!MediaDataController.getInstance(parentFragment.getCurrentAccount()).defaultEmojiThemes.isEmpty()) { + ArrayList themes = new ArrayList<>(MediaDataController.getInstance(parentFragment.getCurrentAccount()).defaultEmojiThemes); if (currentType == ThemeActivity.THEME_TYPE_BASIC) { EmojiThemes chatTheme = EmojiThemes.createPreviewCustom(); @@ -270,11 +298,45 @@ public class DefaultThemesPreviewCell extends LinearLayout { updateDayNightMode(); updateSelectedPosition(); updateColors(); - if (selectedPosition >= 0) { + if (selectedPosition >= 0 && layoutManager != null) { layoutManager.scrollToPositionWithOffset(selectedPosition, AndroidUtilities.dp(16)); } } + public void updateLayoutManager() { + final boolean isPortrait = AndroidUtilities.displaySize.y > AndroidUtilities.displaySize.x; + if (wasPortrait != null && wasPortrait == isPortrait) { + return; + } + if (currentType == ThemeActivity.THEME_TYPE_BASIC) { + if (layoutManager == null) { + recyclerView.setLayoutManager(layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false)); + } + } else { + int spanCount = isPortrait ? 3 : 9; + if (layoutManager instanceof GridLayoutManager) { + ((GridLayoutManager) layoutManager).setSpanCount(spanCount); + } else { + recyclerView.setHasFixedSize(false); + GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), spanCount); + gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + return 1; + } + }); + recyclerView.setLayoutManager(layoutManager = gridLayoutManager); + } + } + wasPortrait = isPortrait; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + updateLayoutManager(); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + public void updateDayNightMode() { if (currentType == ThemeActivity.THEME_TYPE_BASIC) { themeIndex = !Theme.isCurrentThemeDay() ? 2 : 0; @@ -386,7 +448,7 @@ public class DefaultThemesPreviewCell extends LinearLayout { if (currentType == ThemeActivity.THEME_TYPE_BASIC) { darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText4), PorterDuff.Mode.SRC_IN)); - dayNightCell.setBackground(Theme.createSelectorWithBackgroundDrawable(Theme.getColor(Theme.key_windowBackgroundWhite), Theme.getColor(Theme.key_listSelector))); + Theme.setSelectorDrawableColor(dayNightCell.getBackground(), Theme.getColor(Theme.key_listSelector), true); browseThemesCell.setBackground(Theme.createSelectorWithBackgroundDrawable(Theme.getColor(Theme.key_windowBackgroundWhite), Theme.getColor(Theme.key_listSelector))); dayNightCell.setColors(null, Theme.key_windowBackgroundWhiteBlueText4); browseThemesCell.setColors(Theme.key_windowBackgroundWhiteBlueText4, Theme.key_windowBackgroundWhiteBlueText4); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Delegates/MemberRequestsDelegate.java b/TMessagesProj/src/main/java/org/telegram/ui/Delegates/MemberRequestsDelegate.java index d65bd0d70..50a900637 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Delegates/MemberRequestsDelegate.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Delegates/MemberRequestsDelegate.java @@ -709,7 +709,7 @@ public class MemberRequestsDelegate implements MemberRequestCell.OnClickListener ActionBarMenuSubItem addCell = new ActionBarMenuSubItem(context, true, false); addCell.setColors(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem, resourcesProvider), Theme.getColor(Theme.key_actionBarDefaultSubmenuItemIcon, resourcesProvider)); addCell.setSelectorColor(Theme.getColor(Theme.key_dialogButtonSelector, resourcesProvider)); - addCell.setTextAndIcon(isChannel ? LocaleController.getString("AddToChannel", R.string.AddToChannel) : LocaleController.getString("AddToGroup", R.string.AddToGroup), R.drawable.actions_requests); + addCell.setTextAndIcon(isChannel ? LocaleController.getString("AddToChannel", R.string.AddToChannel) : LocaleController.getString("AddToGroup", R.string.AddToGroup), R.drawable.msg_requests); addCell.setOnClickListener((v) -> { if (importer != null) { onAddClicked(importer); @@ -738,7 +738,7 @@ public class MemberRequestsDelegate implements MemberRequestCell.OnClickListener ActionBarMenuSubItem dismissCell = new ActionBarMenuSubItem(context, false, true); dismissCell.setColors(Theme.getColor(Theme.key_dialogTextRed2, resourcesProvider), Theme.getColor(Theme.key_dialogRedIcon, resourcesProvider)); dismissCell.setSelectorColor(Theme.getColor(Theme.key_dialogButtonSelector, resourcesProvider)); - dismissCell.setTextAndIcon(LocaleController.getString("DismissRequest", R.string.DismissRequest), R.drawable.actions_remove_user); + dismissCell.setTextAndIcon(LocaleController.getString("DismissRequest", R.string.DismissRequest), R.drawable.msg_remove); dismissCell.setOnClickListener((v) -> { if (importer != null) { onDismissClicked(importer); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java index 8ff366efa..9a56d18f1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java @@ -43,7 +43,6 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.os.Vibrator; import android.text.TextPaint; import android.text.TextUtils; import android.util.Property; @@ -166,6 +165,7 @@ import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.MediaActionDrawable; import org.telegram.ui.Components.NumberTextView; import org.telegram.ui.Components.PacmanAnimation; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.Components.ProxyDrawable; import org.telegram.ui.Components.PullForegroundDrawable; import org.telegram.ui.Components.RLottieDrawable; @@ -186,6 +186,7 @@ import java.io.File; import java.util.ArrayList; public class DialogsActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + public final static int DIALOGS_TYPE_START_ATTACH_BOT = 14; private boolean canShowFilterTabsView; private boolean filterTabsViewIsVisible; @@ -208,6 +209,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. private int lastItemsCount; private DialogsItemAnimator dialogsItemAnimator; private RecyclerItemsEnterAnimator recyclerItemsEnterAnimator; + private boolean isLocked; public ViewPage(Context context) { super(context); @@ -245,9 +247,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. private View blurredView; private Paint scrimPaint; + private Drawable scrimViewBackground; private View scrimView; private boolean scrimViewSelected; private int[] scrimViewLocation = new int[2]; + private boolean scrimViewAppearing; private AnimatorSet scrimAnimatorSet; private ActionBarPopupWindow scrimPopupWindow; private ActionBarMenuSubItem[] scrimPopupWindowItems; @@ -362,6 +366,10 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. private boolean afterSignup; private boolean showSetPasswordConfirm; private int otherwiseReloginDays; + private boolean allowGroups; + private boolean allowChannels; + private boolean allowUsers; + private boolean allowBots; private boolean closeFragment; private FrameLayout updateLayout; @@ -436,6 +444,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. private float scrollAdditionalOffset; private int debugLastUpdateAction = -1; + private boolean slowedReloadAfterDialogClick; public final Property SCROLL_Y = new AnimationProperties.FloatProperty("animationValue") { @Override @@ -709,6 +718,19 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. canvas.save(); getLocationInWindow(pos); canvas.translate(scrimViewLocation[0] - pos[0], scrimViewLocation[1] - (Build.VERSION.SDK_INT < 21 ? AndroidUtilities.statusBarHeight : 0)); + if (scrimViewBackground != null) { + scrimViewBackground.setAlpha(scrimViewAppearing ? 255 : (int) (scrimPaint.getAlpha() / 50f * 255f)); + scrimViewBackground.setBounds(0, 0, scrimView.getWidth(), scrimView.getHeight()); + scrimViewBackground.draw(canvas); + } + Drawable selectorDrawable = filterTabsView.getListView().getSelectorDrawable(); + if (scrimViewAppearing && selectorDrawable != null) { + canvas.save(); + Rect selectorBounds = selectorDrawable.getBounds(); + canvas.translate(-selectorBounds.left, -selectorBounds.top); + selectorDrawable.draw(canvas); + canvas.restore(); + } scrimView.draw(canvas); if (scrimViewSelected) { Drawable drawable = filterTabsView.getSelectorDrawable(); @@ -788,7 +810,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } else { child.setTranslationY(0); } - int transitionPadding = (isSlideBackTransition || isDrawerTransition) ? (int) (h * 0.05f) : 0; + int transitionPadding = ((isSlideBackTransition || isDrawerTransition) ? (int) (h * 0.05f) : 0); h += transitionPadding; child.setPadding(child.getPaddingLeft(), child.getPaddingTop(), child.getPaddingRight(), transitionPadding); child.measure(contentWidthSpec, View.MeasureSpec.makeMeasureSpec(Math.max(AndroidUtilities.dp(10), h), View.MeasureSpec.EXACTLY)); @@ -828,6 +850,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } else { paddingBottom = 0; } + setBottomClip(paddingBottom); lastMeasuredTopPadding = topPadding; @@ -1015,7 +1038,16 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. viewPages[1].setTranslationX(dx - viewPages[0].getMeasuredWidth()); } float scrollProgress = Math.abs(dx) / (float) viewPages[0].getMeasuredWidth(); - filterTabsView.selectTabWithId(viewPages[1].selectedType, scrollProgress); + if (viewPages[1].isLocked && scrollProgress > 0.3f) { + dispatchTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0)); + filterTabsView.shakeLock(viewPages[1].selectedType); + AndroidUtilities.runOnUIThread(() -> { + showDialog(new LimitReachedBottomSheet(DialogsActivity.this, getContext(), LimitReachedBottomSheet.TYPE_FOLDERS, currentAccount)); + }, 200); + return false; + } else { + filterTabsView.selectTabWithId(viewPages[1].selectedType, scrollProgress); + } } } else if (ev == null || ev.getPointerId(0) == startedTrackingPointerId && (ev.getAction() == MotionEvent.ACTION_CANCEL || ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_POINTER_UP)) { velocityTracker.computeCurrentVelocity(1000, maximumVelocity); @@ -1036,20 +1068,23 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (startedTracking) { float x = viewPages[0].getX(); tabsAnimation = new AnimatorSet(); - if (additionalOffset != 0) { - if (Math.abs(velX) > 1500) { - backAnimation = animatingForward ? velX > 0 : velX < 0; - } else { - if (animatingForward) { - backAnimation = (viewPages[1].getX() > (viewPages[0].getMeasuredWidth() >> 1)); - } else { - backAnimation = (viewPages[0].getX() < (viewPages[0].getMeasuredWidth() >> 1)); - } - } + if (viewPages[1].isLocked) { + backAnimation = true; } else { - backAnimation = Math.abs(x) < viewPages[0].getMeasuredWidth() / 3.0f && (Math.abs(velX) < 3500 || Math.abs(velX) < Math.abs(velY)); + if (additionalOffset != 0) { + if (Math.abs(velX) > 1500) { + backAnimation = animatingForward ? velX > 0 : velX < 0; + } else { + if (animatingForward) { + backAnimation = (viewPages[1].getX() > (viewPages[0].getMeasuredWidth() >> 1)); + } else { + backAnimation = (viewPages[0].getX() < (viewPages[0].getMeasuredWidth() >> 1)); + } + } + } else { + backAnimation = Math.abs(x) < viewPages[0].getMeasuredWidth() / 3.0f && (Math.abs(velX) < 3500 || Math.abs(velX) < Math.abs(velY)); + } } - float distToMove; float dx; if (backAnimation) { dx = Math.abs(x); @@ -1854,6 +1889,10 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. hasInvoice = arguments.getBoolean("hasInvoice", false); showSetPasswordConfirm = arguments.getBoolean("showSetPasswordConfirm", showSetPasswordConfirm); otherwiseReloginDays = arguments.getInt("otherwiseRelogin"); + allowGroups = arguments.getBoolean("allowGroups", true); + allowChannels = arguments.getBoolean("allowChannels", true); + allowUsers = arguments.getBoolean("allowUsers", true); + allowBots = arguments.getBoolean("allowBots", true); closeFragment = arguments.getBoolean("closeFragment", true); } @@ -1927,11 +1966,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. messagesController.loadHintDialogs(); messagesController.loadUserInfo(accountInstance.getUserConfig().getCurrentUser(), false, 0); accountInstance.getContactsController().checkInviteText(); - accountInstance.getMediaDataController().loadRecents(MediaDataController.TYPE_FAVE, false, true, false); - accountInstance.getMediaDataController().loadRecents(MediaDataController.TYPE_GREETINGS, false, true, false); - accountInstance.getMediaDataController().checkFeaturedStickers(); - accountInstance.getMediaDataController().checkReactions(); - accountInstance.getMediaDataController().checkMenuBots(); + accountInstance.getMediaDataController().chekAllMedia(false); AndroidUtilities.runOnUIThread(() -> accountInstance.getDownloadController().loadDownloadingFiles(), 200); for (String emoji : messagesController.diceEmojies) { accountInstance.getMediaDataController().loadStickersByEmojiOrName(emoji, true, true); @@ -2062,7 +2097,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. downloadsItem = menu.addItem(3, new ColorDrawable(Color.TRANSPARENT)); downloadsItem.addView(new DownloadProgressIcon(currentAccount, context)); - downloadsItem.setContentDescription(LocaleController.getString("AccDescrPasscodeLock", R.string.AccDescrPasscodeLock)); + downloadsItem.setContentDescription(LocaleController.getString("DownloadsTabs", R.string.DownloadsTabs)); downloadsItem.setVisibility(View.GONE); updatePasscodeButton(); @@ -2142,7 +2177,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } actionBar.setBackButtonContentDescription(LocaleController.getString("AccDescrOpenMenu", R.string.AccDescrOpenMenu)); } - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors, true); ((SizeNotifierFrameLayout) fragmentView).invalidateBlur(); } @@ -2174,6 +2209,9 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. return !actionBar.isActionModeShowed() && databaseMigrationHint == null; } }); + if (initialDialogsType == 2 || initialDialogsType == DIALOGS_TYPE_START_ATTACH_BOT) { + searchItem.setVisibility(View.GONE); + } searchItem.setSearchFieldHint(LocaleController.getString("Search", R.string.Search)); searchItem.setContentDescription(LocaleController.getString("Search", R.string.Search)); if (onlySelect) { @@ -2197,7 +2235,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. actionBar.setTitle(LocaleController.getString("ArchivedChats", R.string.ArchivedChats)); } else { if (BuildVars.DEBUG_VERSION) { - actionBar.setTitle("Telegram Beta"); + actionBar.setTitle(LocaleController.getString("AppNameBeta", R.string.AppNameBeta)); } else { actionBar.setTitle(LocaleController.getString("AppName", R.string.AppName)); } @@ -2273,12 +2311,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { })); -// if (getMessagesController().dialogFilters.size() > 1) { -// filterTabsView.beginCrossfade(); -// } getMessagesController().removeFilter(dialogFilter); getMessagesStorage().deleteDialogFilter(dialogFilter); - // filterTabsView.commitCrossfade(); }); AlertDialog alertDialog = builder.create(); showDialog(alertDialog); @@ -2305,18 +2339,24 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } @Override - public void onPageSelected(int id, boolean forward) { - if (viewPages[0].selectedType == id) { + public void onPageSelected(FilterTabsView.Tab tab, boolean forward) { + if (viewPages[0].selectedType == tab.id) { return; } + if (tab.isLocked) { + filterTabsView.shakeLock(tab.id); + showDialog(new LimitReachedBottomSheet(DialogsActivity.this, context, LimitReachedBottomSheet.TYPE_FOLDERS, currentAccount)); + return; + } + ArrayList dialogFilters = getMessagesController().dialogFilters; - if (id != Integer.MAX_VALUE && (id < 0 || id >= dialogFilters.size())) { + if (!tab.isDefault && (tab.id < 0 || tab.id >= dialogFilters.size())) { return; } if (parentLayout != null) { - parentLayout.getDrawerLayoutContainer().setAllowOpenDrawerBySwipe(id == filterTabsView.getFirstTabId() || SharedConfig.getChatSwipeAction(currentAccount) != SwipeGestureSettingsView.SWIPE_GESTURE_FOLDERS); + parentLayout.getDrawerLayoutContainer().setAllowOpenDrawerBySwipe(tab.id == filterTabsView.getFirstTabId() || SharedConfig.getChatSwipeAction(currentAccount) != SwipeGestureSettingsView.SWIPE_GESTURE_FOLDERS); } - viewPages[1].selectedType = id; + viewPages[1].selectedType = tab.id; viewPages[1].setVisibility(View.VISIBLE); viewPages[1].setTranslationX(viewPages[0].getMeasuredWidth()); showScrollbars(false); @@ -2356,7 +2396,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. @Override public int getTabCounter(int tabId) { - if (tabId == Integer.MAX_VALUE) { + if (tabId == filterTabsView.getDefaultTabId()) { return getMessagesStorage().getMainUnreadCount(); } ArrayList dialogFilters = getMessagesController().dialogFilters; @@ -2380,7 +2420,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. Rect rect = new Rect(); MessagesController.DialogFilter dialogFilter; - if (tabView.getId() == Integer.MAX_VALUE) { + if (tabView.getId() == filterTabsView.getDefaultTabId()) { dialogFilter = null; } else { dialogFilter = getMessagesController().dialogFilters.get(tabView.getId()); @@ -2440,7 +2480,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. linearLayout.setMinimumWidth(AndroidUtilities.dp(200)); linearLayout.setOrientation(LinearLayout.VERTICAL); scrimPopupWindowItems = new ActionBarMenuSubItem[3]; - for (int a = 0, N = (tabView.getId() == Integer.MAX_VALUE ? 2 : 3); a < N; a++) { + for (int a = 0, N = (tabView.getId() == filterTabsView.getDefaultTabId() ? 2 : 3); a < N; a++) { ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getParentActivity(), a == 0, a == N - 1); if (a == 0) { if (getMessagesController().dialogFilters.size() <= 1) { @@ -2493,6 +2533,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. scrimAnimatorSet = null; } scrimAnimatorSet = new AnimatorSet(); + scrimViewAppearing = false; ArrayList animators = new ArrayList<>(); animators.add(ObjectAnimator.ofInt(scrimPaint, AnimationProperties.PAINT_ALPHA, 0)); scrimAnimatorSet.playTogether(animators); @@ -2515,7 +2556,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } } }; - tabView.setBackground(Theme.createRoundRectDrawable(AndroidUtilities.dp(6), 0, Theme.getColor(Theme.key_actionBarDefault))); + scrimViewBackground = Theme.createRoundRectDrawable(AndroidUtilities.dp(6), 0, Theme.getColor(Theme.key_actionBarDefault)); scrimPopupWindow.setDismissAnimationDuration(220); scrimPopupWindow.setOutsideTouchable(true); scrimPopupWindow.setClippingEnabled(true); @@ -2542,6 +2583,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. scrimAnimatorSet.cancel(); } scrimAnimatorSet = new AnimatorSet(); + scrimViewAppearing = true; ArrayList animators = new ArrayList<>(); animators.add(ObjectAnimator.ofInt(scrimPaint, AnimationProperties.PAINT_ALPHA, 0, 50)); scrimAnimatorSet.playTogether(animators); @@ -2575,7 +2617,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. TLRPC.User user = getUserConfig().getCurrentUser(); avatarDrawable.setInfo(user); imageView.getImageReceiver().setCurrentAccount(currentAccount); - imageView.setImage(ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_SMALL), "50_50", ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_STRIPPED), "50_50", avatarDrawable, user); + Drawable thumb = user != null && user.photo != null && user.photo.strippedBitmap != null ? user.photo.strippedBitmap : avatarDrawable; + imageView.setImage(ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_SMALL), "50_50", ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_STRIPPED), "50_50", thumb, user); for (int a = 0; a < UserConfig.MAX_ACCOUNT_COUNT; a++) { TLRPC.User u = AccountInstance.getInstance(a).getUserConfig().getCurrentUser(); @@ -2613,7 +2656,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. filterTabsView.selectTabWithId(viewPages[1].selectedType, scrollProgress); } } - ((SizeNotifierFrameLayout) contentView).invalidateBlur(); + contentView.invalidateBlur(); } } }; @@ -2854,7 +2897,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. viewPage.addView(viewPage.listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); viewPage.listView.setOnItemClickListener((view, position) -> { if (initialDialogsType == 10) { - onItemLongClick(view, position, 0, 0, viewPage.dialogsType, viewPage.dialogsAdapter); + onItemLongClick(viewPage.listView, view, position, 0, 0, viewPage.dialogsType, viewPage.dialogsAdapter); return; } else if ((initialDialogsType == 11 || initialDialogsType == 13) && position == 1) { Bundle args = new Bundle(); @@ -2900,17 +2943,21 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE && filterTabsView.isEditing()) { return false; } - return onItemLongClick(view, position, x, y, viewPage.dialogsType, viewPage.dialogsAdapter); - } - - @Override - public void onLongClickRelease() { - finishPreviewFragment(); + return onItemLongClick(viewPage.listView, view, position, x, y, viewPage.dialogsType, viewPage.dialogsAdapter); } @Override public void onMove(float dx, float dy) { - movePreviewFragment(dy); + if (AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y) { + movePreviewFragment(dy); + } + } + + @Override + public void onLongClickRelease() { + if (AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y) { + finishPreviewFragment(); + } } }); viewPage.swipeController = new SwipeController(viewPage); @@ -3073,18 +3120,22 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } searchViewPager = new SearchViewPager(context, this, type, initialDialogsType, folderId, new SearchViewPager.ChatPreviewDelegate() { @Override - public void startChatPreview(DialogCell cell) { + public void startChatPreview(RecyclerListView listView, DialogCell cell) { showChatPreview(cell); } @Override public void move(float dy) { - movePreviewFragment(dy); + if (AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y) { + movePreviewFragment(dy); + } } @Override public void finish() { - finishPreviewFragment(); + if (AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y) { + finishPreviewFragment(); + } } }); contentView.addView(searchViewPager); @@ -3173,15 +3224,23 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. @Override public void needClearList() { AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setTitle(LocaleController.getString("ClearSearchAlertTitle", R.string.ClearSearchAlertTitle)); - builder.setMessage(LocaleController.getString("ClearSearchAlert", R.string.ClearSearchAlert)); - builder.setPositiveButton(LocaleController.getString("ClearButton", R.string.ClearButton).toUpperCase(), (dialogInterface, i) -> { - if (searchViewPager.dialogsSearchAdapter.isRecentSearchDisplayed()) { + if (searchViewPager.dialogsSearchAdapter.isSearchWas() && searchViewPager.dialogsSearchAdapter.isRecentSearchDisplayed()) { + builder.setTitle(LocaleController.getString("ClearSearchAlertPartialTitle", R.string.ClearSearchAlertPartialTitle)); + builder.setMessage(LocaleController.formatPluralString("ClearSearchAlertPartial", searchViewPager.dialogsSearchAdapter.getRecentResultsCount())); + builder.setPositiveButton(LocaleController.getString("Clear", R.string.Clear).toUpperCase(), (dialogInterface, i) -> { searchViewPager.dialogsSearchAdapter.clearRecentSearch(); - } else { - searchViewPager.dialogsSearchAdapter.clearRecentHashtags(); - } - }); + }); + } else { + builder.setTitle(LocaleController.getString("ClearSearchAlertTitle", R.string.ClearSearchAlertTitle)); + builder.setMessage(LocaleController.getString("ClearSearchAlert", R.string.ClearSearchAlert)); + builder.setPositiveButton(LocaleController.getString("ClearButton", R.string.ClearButton).toUpperCase(), (dialogInterface, i) -> { + if (searchViewPager.dialogsSearchAdapter.isRecentSearchDisplayed()) { + searchViewPager.dialogsSearchAdapter.clearRecentSearch(); + } else { + searchViewPager.dialogsSearchAdapter.clearRecentHashtags(); + } + }); + } builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); AlertDialog dialog = builder.create(); showDialog(dialog); @@ -3206,7 +3265,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. searchViewPager.searchListView.setOnItemClickListener((view, position) -> { if (initialDialogsType == 10) { - onItemLongClick(view, position, 0, 0, -1, searchViewPager.dialogsSearchAdapter); + onItemLongClick(searchViewPager.searchListView, view, position, 0, 0, -1, searchViewPager.dialogsSearchAdapter); return; } onItemClick(view, position, searchViewPager.dialogsSearchAdapter); @@ -3214,17 +3273,21 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. searchViewPager.searchListView.setOnItemLongClickListener(new RecyclerListView.OnItemLongClickListenerExtended() { @Override public boolean onItemClick(View view, int position, float x, float y) { - return onItemLongClick(view, position, x, y, -1, searchViewPager.dialogsSearchAdapter); - } - - @Override - public void onLongClickRelease() { - finishPreviewFragment(); + return onItemLongClick(searchViewPager.searchListView, view, position, x, y, -1, searchViewPager.dialogsSearchAdapter); } @Override public void onMove(float dx, float dy) { - movePreviewFragment(dy); + if (AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y) { + movePreviewFragment(dy); + } + } + + @Override + public void onLongClickRelease() { + if (AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y) { + finishPreviewFragment(); + } } }); @@ -3243,6 +3306,10 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. floatingButtonContainer.setVisibility(onlySelect && initialDialogsType != 10 || folderId != 0 ? View.GONE : View.VISIBLE); contentView.addView(floatingButtonContainer, LayoutHelper.createFrame((Build.VERSION.SDK_INT >= 21 ? 56 : 60), (Build.VERSION.SDK_INT >= 21 ? 56 : 60), (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.BOTTOM, LocaleController.isRTL ? 14 : 0, 0, LocaleController.isRTL ? 0 : 14, 14)); floatingButtonContainer.setOnClickListener(v -> { + if (parentLayout != null && parentLayout.isInPreviewMode()) { + finishPreviewFragment(); + return; + } if (initialDialogsType == 10) { if (delegate == null || selectedDialogs.isEmpty()) { return; @@ -3334,7 +3401,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } return super.dispatchTouchEvent(ev); } - @Override + @Override public void setTranslationY(float translationY) { super.setTranslationY(translationY); if (!commentViewAnimated) { @@ -3354,8 +3421,10 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. contentView.setClipChildren(false); contentView.setClipToPadding(false); commentView.allowBlur = false; + commentView.forceSmoothKeyboard(true); commentView.setAllowStickersAndGifs(false, false); commentView.setForceShowSendButton(true, false); + commentView.setPadding(0, 0, AndroidUtilities.dp(20), 0); commentView.setVisibility(View.GONE); commentView.getSendButton().setAlpha(0); commentViewBg = new View(getParentActivity()); @@ -3570,7 +3639,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. writeButton = new ImageView[2]; for (int a = 0; a < 2; ++a) { writeButton[a] = new ImageView(context); - writeButton[a].setImageResource(a == 1 ? R.drawable.actionbtn_next : R.drawable.attach_send); + writeButton[a].setImageResource(a == 1 ? R.drawable.msg_arrow_forward : R.drawable.attach_send); writeButton[a].setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingIcon), PorterDuff.Mode.MULTIPLY)); writeButton[a].setScaleType(ImageView.ScaleType.CENTER); writeButtonBackground.addView(writeButton[a], LayoutHelper.createFrame(Build.VERSION.SDK_INT >= 21 ? 56 : 60, Build.VERSION.SDK_INT >= 21 ? 56 : 60, Gravity.CENTER)); @@ -3745,7 +3814,16 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } } }; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + blurredView.setForeground(new ColorDrawable(ColorUtils.setAlphaComponent(getThemedColor(Theme.key_windowBackgroundWhite), 100))); + } + blurredView.setFocusable(false); + blurredView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); + blurredView.setOnClickListener(e -> { + finishPreviewFragment(); + }); blurredView.setVisibility(View.GONE); + blurredView.setFitsSystemWindows(true); contentView.addView(blurredView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); } @@ -3831,7 +3909,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. boolean show; if (SharedConfig.isAppUpdateAvailable()) { String fileName = FileLoader.getAttachFileName(SharedConfig.pendingAppUpdate.document); - File path = FileLoader.getPathToAttach(SharedConfig.pendingAppUpdate.document, true); + File path = getFileLoader().getPathToAttach(SharedConfig.pendingAppUpdate.document, true); show = path.exists(); } else { show = false; @@ -4075,8 +4153,9 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } else { currentCount = 0; } - if (currentCount + alwaysShow.size() > 100) { - showDialog(AlertsCreator.createSimpleAlert(getParentActivity(), LocaleController.getString("FilterAddToAlertFullTitle", R.string.FilterAddToAlertFullTitle), LocaleController.getString("FilterRemoveFromAlertFullText", R.string.FilterRemoveFromAlertFullText)).create()); + int totalCount = currentCount + alwaysShow.size(); + if ((totalCount > getMessagesController().dialogFiltersChatsLimitDefault && !getUserConfig().isPremium()) || totalCount > getMessagesController().dialogFiltersChatsLimitPremium) { + showDialog(new LimitReachedBottomSheet(DialogsActivity.this, fragmentView.getContext(), LimitReachedBottomSheet.TYPE_CHATS_IN_FOLDER, currentAccount)); return; } if (filter != null) { @@ -4146,11 +4225,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. int a = animated ? 1 : 0; RecyclerView.Adapter currentAdapter = viewPages[a].listView.getAdapter(); - if (viewPages[a].selectedType == Integer.MAX_VALUE) { + MessagesController.DialogFilter filter = getMessagesController().dialogFilters.get(viewPages[a].selectedType); + if (filter.isDefault()) { viewPages[a].dialogsType = 0; viewPages[a].listView.updatePullState(); } else { - MessagesController.DialogFilter filter = getMessagesController().dialogFilters.get(viewPages[a].selectedType); if (viewPages[a == 0 ? 1 : 0].dialogsType == 7) { viewPages[a].dialogsType = 8; } else { @@ -4159,6 +4238,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. viewPages[a].listView.setScrollEnabled(true); getMessagesController().selectDialogFilter(filter, viewPages[a].dialogsType == 8 ? 1 : 0); } + viewPages[1].isLocked = filter.locked; + viewPages[a].dialogsAdapter.setDialogsType(viewPages[a].dialogsType); viewPages[a].layoutManager.scrollToPositionWithOffset(viewPages[a].dialogsType == 0 && hasHiddenArchive() ? 1 : 0, (int) actionBar.getTranslationY()); checkListLoad(viewPages[a]); @@ -4205,33 +4286,36 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } ArrayList filters = getMessagesController().dialogFilters; SharedPreferences preferences = MessagesController.getMainSettings(currentAccount); - if (!filters.isEmpty()) { + if (filters.size() > 1) { if (force || filterTabsView.getVisibility() != View.VISIBLE) { boolean animatedUpdateItems = animated; if (filterTabsView.getVisibility() != View.VISIBLE) { animatedUpdateItems = false; } canShowFilterTabsView = true; + boolean updateCurrentTab = filterTabsView.isEmpty(); updateFilterTabsVisibility(animated); int id = filterTabsView.getCurrentTabId(); - if (id != Integer.MAX_VALUE && id >= filters.size()) { + int stableId = filterTabsView.getCurrentTabStableId(); + if (id != filterTabsView.getDefaultTabId() && id >= filters.size()) { filterTabsView.resetTabId(); } filterTabsView.removeTabs(); - filterTabsView.addTab(Integer.MAX_VALUE, 0, LocaleController.getString("FilterAllChats", R.string.FilterAllChats)); for (int a = 0, N = filters.size(); a < N; a++) { - filterTabsView.addTab(a, filters.get(a).localId, filters.get(a).name); + if (filters.get(a).isDefault()) { + filterTabsView.addTab(a, 0, LocaleController.getString("FilterAllChats", R.string.FilterAllChats), true, filters.get(a).locked); + } else { + filterTabsView.addTab(a, filters.get(a).localId, filters.get(a).name, false, filters.get(a).locked); + } } - id = filterTabsView.getCurrentTabId(); - boolean updateCurrentTab = false; - if (id >= 0) { - if (viewPages[0].selectedType != id) { + if (stableId >= 0) { + if (filterTabsView.getStableId(viewPages[0].selectedType) != stableId) { updateCurrentTab = true; viewPages[0].selectedType = id; } } for (int a = 0; a < viewPages.length; a++) { - if (viewPages[a].selectedType != Integer.MAX_VALUE && viewPages[a].selectedType >= filters.size()) { + if (viewPages[a].selectedType >= filters.size()) { viewPages[a].selectedType = filters.size() - 1; } viewPages[a].listView.setScrollingTouchSlop(RecyclerView.TOUCH_SLOP_PAGING); @@ -4243,6 +4327,9 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (parentLayout != null) { parentLayout.getDrawerLayoutContainer().setAllowOpenDrawerBySwipe(id == filterTabsView.getFirstTabId() || SharedConfig.getChatSwipeAction(currentAccount) != SwipeGestureSettingsView.SWIPE_GESTURE_FOLDERS); } + if (filterTabsView.isLocked(filterTabsView.getCurrentTabId())) { + filterTabsView.selectFirstTab(); + } } } else { if (filterTabsView.getVisibility() != View.GONE) { @@ -4255,14 +4342,14 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. viewPages[0].setTranslationX(0); viewPages[1].setTranslationX(viewPages[0].getMeasuredWidth()); } - if (viewPages[0].selectedType != Integer.MAX_VALUE) { - viewPages[0].selectedType = Integer.MAX_VALUE; + if (viewPages[0].selectedType != filterTabsView.getDefaultTabId()) { + viewPages[0].selectedType = filterTabsView.getDefaultTabId(); viewPages[0].dialogsAdapter.setDialogsType(0); viewPages[0].dialogsType = 0; viewPages[0].dialogsAdapter.notifyDataSetChanged(); } viewPages[1].setVisibility(View.GONE); - viewPages[1].selectedType = Integer.MAX_VALUE; + viewPages[1].selectedType = 0; viewPages[1].dialogsAdapter.setDialogsType(0); viewPages[1].dialogsType = 0; viewPages[1].dialogsAdapter.notifyDataSetChanged(); @@ -4502,7 +4589,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. hideActionMode(true); } return false; - } else if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE && !tabsAnimationInProgress && !filterTabsView.isAnimatingIndicator() && filterTabsView.getCurrentTabId() != Integer.MAX_VALUE && !startedTracking) { + } else if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE && !tabsAnimationInProgress && !filterTabsView.isAnimatingIndicator() && !startedTracking && !filterTabsView.isFirstTabSelected()) { filterTabsView.selectFirstTab(); return false; } else if (commentView != null && commentView.isPopupShowing()) { @@ -4651,7 +4738,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. searchViewPager.clear(); if (folderId != 0) { - FiltersView.MediaFilterData filterData = new FiltersView.MediaFilterData(R.drawable.chats_archive, R.drawable.chats_archive, LocaleController.getString("ArchiveSearchFilter", R.string.ArchiveSearchFilter), null, FiltersView.FILTER_TYPE_ARCHIVE); + FiltersView.MediaFilterData filterData = new FiltersView.MediaFilterData(R.drawable.chats_archive, LocaleController.getString("ArchiveSearchFilter", R.string.ArchiveSearchFilter), null, FiltersView.FILTER_TYPE_ARCHIVE); addSearchFilter(filterData); } } else { @@ -5070,7 +5157,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (index > 0) { hash = hash.substring(index + 1); } - showDialog(new JoinGroupAlert(getParentActivity(), invite, hash, DialogsActivity.this)); + showDialog(new JoinGroupAlert(getParentActivity(), invite, hash, DialogsActivity.this, null)); return; } else { if (invite.chat != null) { @@ -5206,6 +5293,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. presentFragment(new ChatActivity(args)); } } else { + slowedReloadAfterDialogClick = true; if (getMessagesController().checkCanOpenChat(args, DialogsActivity.this)) { ChatActivity chatActivity = new ChatActivity(args); if (adapter instanceof DialogsAdapter && DialogObject.isUserDialog(dialogId) && (getMessagesController().dialogs_dict.get(dialogId) == null)) { @@ -5220,7 +5308,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } } - private boolean onItemLongClick(View view, int position, float x, float y, int dialogsType, RecyclerListView.Adapter adapter) { + private boolean onItemLongClick(RecyclerListView listView, View view, int position, float x, float y, int dialogsType, RecyclerListView.Adapter adapter) { if (getParentActivity() == null) { return false; } @@ -5232,7 +5320,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } if (adapter == searchViewPager.dialogsSearchAdapter) { Object item = searchViewPager.dialogsSearchAdapter.getItem(position); - if (searchViewPager.dialogsSearchAdapter.isRecentSearchDisplayed()) { + if (!searchViewPager.dialogsSearchAdapter.isSearchWas()) { AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setTitle(LocaleController.getString("ClearSearchSingleAlertTitle", R.string.ClearSearchSingleAlertTitle)); long did; @@ -5308,36 +5396,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. return true; } else { if (dialog instanceof TLRPC.TL_dialogFolder) { - view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); - BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity()); - final boolean hasUnread = getMessagesStorage().getArchiveUnreadCount() != 0; - - int[] icons = new int[]{ - hasUnread ? R.drawable.menu_read : 0, - SharedConfig.archiveHidden ? R.drawable.chats_pin : R.drawable.chats_unpin, - }; - CharSequence[] items = new CharSequence[]{ - hasUnread ? LocaleController.getString("MarkAllAsRead", R.string.MarkAllAsRead) : null, - SharedConfig.archiveHidden ? LocaleController.getString("PinInTheList", R.string.PinInTheList) : LocaleController.getString("HideAboveTheList", R.string.HideAboveTheList) - }; - builder.setItems(items, icons, (d, which) -> { - if (which == 0) { - getMessagesStorage().readAllDialogs(1); - } else if (which == 1 && viewPages != null) { - for (int a = 0; a < viewPages.length; a++) { - if (viewPages[a].dialogsType != 0 || viewPages[a].getVisibility() != View.VISIBLE) { - continue; - } - View child = viewPages[a].listView.getChildAt(0); - DialogCell dialogCell = null; - if (child instanceof DialogCell && ((DialogCell) child).isFolderCell()) { - dialogCell = (DialogCell) child; - } - viewPages[a].listView.toggleArchiveHidden(true, dialogCell); - } - } - }); - showDialog(builder.create()); + onArchiveLongPress(view); return false; } if (actionBar.isActionModeShowed() && isDialogPinned(dialog)) { @@ -5348,7 +5407,46 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } } - private boolean showChatPreview(DialogCell cell) { + private void onArchiveLongPress(View view) { + view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); + BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity()); + final boolean hasUnread = getMessagesStorage().getArchiveUnreadCount() != 0; + + int[] icons = new int[]{ + hasUnread ? R.drawable.msg_markread : 0, + SharedConfig.archiveHidden ? R.drawable.chats_pin : R.drawable.chats_unpin, + }; + CharSequence[] items = new CharSequence[]{ + hasUnread ? LocaleController.getString("MarkAllAsRead", R.string.MarkAllAsRead) : null, + SharedConfig.archiveHidden ? LocaleController.getString("PinInTheList", R.string.PinInTheList) : LocaleController.getString("HideAboveTheList", R.string.HideAboveTheList) + }; + builder.setItems(items, icons, (d, which) -> { + if (which == 0) { + getMessagesStorage().readAllDialogs(1); + } else if (which == 1 && viewPages != null) { + for (int a = 0; a < viewPages.length; a++) { + if (viewPages[a].dialogsType != 0 || viewPages[a].getVisibility() != View.VISIBLE) { + continue; + } + View child = viewPages[a].listView.getChildAt(0); + DialogCell dialogCell = null; + if (child instanceof DialogCell && ((DialogCell) child).isFolderCell()) { + dialogCell = (DialogCell) child; + } + viewPages[a].listView.toggleArchiveHidden(true, dialogCell); + } + } + }); + showDialog(builder.create()); + } + + public boolean showChatPreview(DialogCell cell) { + if (cell.isDialogFolder()) { + if (cell.getCurrentDialogFolderId() == 1) { + onArchiveLongPress(cell); + } + return false; + } long dialogId = cell.getDialogId(); Bundle args = new Bundle(); int message_id = cell.getMessageId(); @@ -5372,19 +5470,305 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (message_id != 0) { args.putInt("message_id", message_id); } - if (searchString != null) { - if (getMessagesController().checkCanOpenChat(args, DialogsActivity.this)) { - getNotificationCenter().postNotificationName(NotificationCenter.closeChats); - prepareBlurBitmap(); - presentFragmentAsPreview(new ChatActivity(args)); - } + + final ArrayList dialogIdArray = new ArrayList<>(); + dialogIdArray.add(dialogId); + +// boolean hasFolders = getMessagesController().filtersEnabled && getMessagesController().dialogFiltersLoaded && getMessagesController().dialogFilters != null && getMessagesController().dialogFilters.size() > 0; + final ActionBarPopupWindow.ActionBarPopupWindowLayout[] previewMenu = new ActionBarPopupWindow.ActionBarPopupWindowLayout[1]; +// +// LinearLayout foldersMenuView = null; +// int[] foldersMenu = new int[1]; +// if (hasFolders) { +// foldersMenuView = new LinearLayout(getParentActivity()); +// foldersMenuView.setOrientation(LinearLayout.VERTICAL); +// +// ScrollView scrollView = new ScrollView(getParentActivity()) { +// @Override +// protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { +// super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec( +// (int) Math.min( +// MeasureSpec.getSize(heightMeasureSpec), +// Math.min(AndroidUtilities.displaySize.y * 0.35f, AndroidUtilities.dp(400)) +// ), +// MeasureSpec.getMode(heightMeasureSpec) +// )); +// } +// }; +// LinearLayout linearLayout = new LinearLayout(getParentActivity()); +// linearLayout.setOrientation(LinearLayout.VERTICAL); +// scrollView.addView(linearLayout); +// final boolean backButtonAtTop = true; +// +// final int foldersCount = getMessagesController().dialogFilters.size(); +// ActionBarMenuSubItem lastItem = null; +// for (int i = 0; i < foldersCount; ++i) { +// MessagesController.DialogFilter folder = getMessagesController().dialogFilters.get(i); +// if (folder.includesDialog(AccountInstance.getInstance(currentAccount), dialogId)) { +// continue; +// } +// final ArrayList alwaysShow = FiltersListBottomSheet.getDialogsCount(DialogsActivity.this, folder, dialogIdArray, true, false); +// int currentCount = folder.alwaysShow.size(); +// if (currentCount + alwaysShow.size() > 100) { +// continue; +// } +// ActionBarMenuSubItem folderItem = lastItem = new ActionBarMenuSubItem(getParentActivity(), !backButtonAtTop && linearLayout.getChildCount() == 0, false); +// folderItem.setTextAndIcon(folder.name, R.drawable.msg_folders); +// folderItem.setMinimumWidth(160); +// folderItem.setOnClickListener(e -> { +// if (!alwaysShow.isEmpty()) { +// for (int a = 0; a < alwaysShow.size(); a++) { +// folder.neverShow.remove(alwaysShow.get(a)); +// } +// folder.alwaysShow.addAll(alwaysShow); +// FilterCreateActivity.saveFilterToServer(folder, folder.flags, folder.name, folder.alwaysShow, folder.neverShow, folder.pinnedDialogs, false, false, true, true, false, DialogsActivity.this, null); +// } +// long did; +// if (alwaysShow.size() == 1) { +// did = alwaysShow.get(0); +// } else { +// did = 0; +// } +// getUndoView().showWithAction(did, UndoView.ACTION_ADDED_TO_FOLDER, alwaysShow.size(), folder, null, null); +// hideActionMode(true); +// finishPreviewFragment(); +// }); +// linearLayout.addView(folderItem); +// } +// if (lastItem != null && backButtonAtTop) { +// lastItem.updateSelectorBackground(false, true); +// } +// if (linearLayout.getChildCount() <= 0) { +// hasFolders = false; +// } else { +// ActionBarPopupWindow.GapView gap = new ActionBarPopupWindow.GapView(getParentActivity(), getResourceProvider(), Theme.key_actionBarDefaultSubmenuSeparator); +// gap.setTag(R.id.fit_width_tag, 1); +// ActionBarMenuSubItem backItem = new ActionBarMenuSubItem(getParentActivity(), backButtonAtTop, !backButtonAtTop); +// backItem.setTextAndIcon(LocaleController.getString("Back", R.string.Back), R.drawable.ic_ab_back); +// backItem.setMinimumWidth(160); +// backItem.setOnClickListener(e -> { +// if (previewMenu[0] != null) { +// previewMenu[0].getSwipeBack().closeForeground(); +// } +// }); +// if (backButtonAtTop) { +// foldersMenuView.addView(backItem); +// foldersMenuView.addView(gap, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); +// foldersMenuView.addView(scrollView); +// } else { +// foldersMenuView.addView(scrollView); +// foldersMenuView.addView(gap, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); +// foldersMenuView.addView(backItem); +// } +// } +// } + + int flags = ActionBarPopupWindow.ActionBarPopupWindowLayout.FLAG_SHOWN_FROM_BOTTOM; +// if (hasFolders) { +// flags |= ActionBarPopupWindow.ActionBarPopupWindowLayout.FLAG_USE_SWIPEBACK; +// } + + final ChatActivity[] chatActivity = new ChatActivity[1]; + previewMenu[0] = new ActionBarPopupWindow.ActionBarPopupWindowLayout(getParentActivity(), R.drawable.popup_fixed_alert, getResourceProvider(), flags); + +// if (hasFolders) { +// foldersMenu[0] = previewMenu[0].addViewToSwipeBack(foldersMenuView); +// ActionBarMenuSubItem addToFolderItem = new ActionBarMenuSubItem(getParentActivity(), true, false); +// addToFolderItem.setTextAndIcon(LocaleController.getString("FilterAddTo", R.string.FilterAddTo), R.drawable.msg_addfolder); +// addToFolderItem.setMinimumWidth(160); +// addToFolderItem.setOnClickListener(e -> +// previewMenu[0].getSwipeBack().openForeground(foldersMenu[0]) +// ); +// previewMenu[0].addView(addToFolderItem); +// previewMenu[0].getSwipeBack().setOnHeightUpdateListener(height -> { +// if (chatActivity[0] == null || chatActivity[0].getFragmentView() == null) { +// return; +// } +// ViewGroup.LayoutParams lp = chatActivity[0].getFragmentView().getLayoutParams(); +// if (lp instanceof ViewGroup.MarginLayoutParams) { +// ((ViewGroup.MarginLayoutParams) lp).bottomMargin = AndroidUtilities.dp(24 + 16 + 8) + height; +// chatActivity[0].getFragmentView().setLayoutParams(lp); +// } +// }); +// } + + ActionBarMenuSubItem markAsUnreadItem = new ActionBarMenuSubItem(getParentActivity(), true, false); + if (cell.getHasUnread()) { + markAsUnreadItem.setTextAndIcon(LocaleController.getString("MarkAsRead", R.string.MarkAsRead), R.drawable.msg_markread); } else { - if (getMessagesController().checkCanOpenChat(args, DialogsActivity.this)) { - prepareBlurBitmap(); - presentFragmentAsPreview(new ChatActivity(args)); - } + markAsUnreadItem.setTextAndIcon(LocaleController.getString("MarkAsUnread", R.string.MarkAsUnread), R.drawable.msg_markunread); } - return true; + markAsUnreadItem.setMinimumWidth(160); + markAsUnreadItem.setOnClickListener(e -> { + if (cell.getHasUnread()) { + markAsRead(dialogId); + } else { + markAsUnread(dialogId); + } + finishPreviewFragment(); + }); + previewMenu[0].addView(markAsUnreadItem); + + final boolean[] hasPinAction = new boolean[1]; + hasPinAction[0] = true; + TLRPC.Dialog dialog = getMessagesController().dialogs_dict.get(dialogId); + boolean containsFilter; + final MessagesController.DialogFilter filter = ( + (containsFilter = (viewPages[0].dialogsType == 7 || viewPages[0].dialogsType == 8) && (!actionBar.isActionModeShowed() || actionBar.isActionModeShowed(null))) ? + getMessagesController().selectedDialogFilter[viewPages[0].dialogsType == 8 ? 1 : 0] : null + ); + if (!isDialogPinned(dialog)) { + int pinnedCount = 0; + int pinnedSecretCount = 0; + int newPinnedCount = 0; + int newPinnedSecretCount = 0; + ArrayList dialogs = getMessagesController().getDialogs(folderId); + for (int a = 0, N = dialogs.size(); a < N; a++) { + TLRPC.Dialog dialog1 = dialogs.get(a); + if (dialog1 instanceof TLRPC.TL_dialogFolder) { + continue; + } + if (isDialogPinned(dialog1)) { + if (DialogObject.isEncryptedDialog(dialog1.id)) { + pinnedSecretCount++; + } else { + pinnedCount++; + } + } else if (!getMessagesController().isPromoDialog(dialog1.id, false)) { + break; + } + } + int alreadyAdded = 0; + if (dialog != null && !isDialogPinned(dialog)) { + if (DialogObject.isEncryptedDialog(dialogId)) { + newPinnedSecretCount++; + } else { + newPinnedCount++; + } + if (filter != null && filter.alwaysShow.contains(dialogId)) { + alreadyAdded++; + } + } + int maxPinnedCount; + if (containsFilter && filter != null) { + maxPinnedCount = 100 - filter.alwaysShow.size(); + } else if (folderId != 0 || filter != null) { + maxPinnedCount = getMessagesController().maxFolderPinnedDialogsCount; + } else { + maxPinnedCount = getMessagesController().maxPinnedDialogsCount; + } + hasPinAction[0] = !(newPinnedSecretCount + pinnedSecretCount > maxPinnedCount || newPinnedCount + pinnedCount - alreadyAdded > maxPinnedCount); + } + + if (hasPinAction[0]) { + ActionBarMenuSubItem unpinItem = new ActionBarMenuSubItem(getParentActivity(), false, false); + if (isDialogPinned(dialog)) { + unpinItem.setTextAndIcon(LocaleController.getString("UnpinMessage", R.string.UnpinMessage), R.drawable.msg_unpin); + } else { + unpinItem.setTextAndIcon(LocaleController.getString("PinMessage", R.string.PinMessage), R.drawable.msg_pin); + } + unpinItem.setMinimumWidth(160); + unpinItem.setOnClickListener(e -> { + finishPreviewFragment(); + AndroidUtilities.runOnUIThread(() -> { + int minPinnedNum = Integer.MAX_VALUE; + if (filter != null && isDialogPinned(dialog)) { + for (int c = 0, N = filter.pinnedDialogs.size(); c < N; c++) { + minPinnedNum = Math.min(minPinnedNum, filter.pinnedDialogs.valueAt(c)); + } + minPinnedNum -= canPinCount; + } + TLRPC.EncryptedChat encryptedChat = null; + if (DialogObject.isEncryptedDialog(dialogId)) { + encryptedChat = getMessagesController().getEncryptedChat(DialogObject.getEncryptedChatId(dialogId)); + } + if (!isDialogPinned(dialog)) { + pinDialog(dialogId, true, filter, minPinnedNum, true); + getUndoView().showWithAction(0, UndoView.ACTION_PIN_DIALOGS, 1, 1600, null, null); + if (filter != null) { + if (encryptedChat != null) { + if (!filter.alwaysShow.contains(encryptedChat.user_id)) { + filter.alwaysShow.add(encryptedChat.user_id); + } + } else { + if (!filter.alwaysShow.contains(dialogId)) { + filter.alwaysShow.add(dialogId); + } + } + } + } else { + pinDialog(dialogId, false, filter, minPinnedNum, true); + getUndoView().showWithAction(0, UndoView.ACTION_UNPIN_DIALOGS, 1, 1600, null, null); + } + if (filter != null) { + FilterCreateActivity.saveFilterToServer(filter, filter.flags, filter.name, filter.alwaysShow, filter.neverShow, filter.pinnedDialogs, false, false, true, true, false, DialogsActivity.this, null); + } + getMessagesController().reorderPinnedDialogs(folderId, null, 0); + updateCounters(true); + if (viewPages != null) { + for (int a = 0; a < viewPages.length; a++) { + viewPages[a].dialogsAdapter.onReorderStateChanged(false); + } + } + updateVisibleRows(MessagesController.UPDATE_MASK_REORDER | MessagesController.UPDATE_MASK_CHECK); + + }, 100); + }); + previewMenu[0].addView(unpinItem); + } + + if (!DialogObject.isUserDialog(dialogId) || !UserObject.isUserSelf(getMessagesController().getUser(dialogId))) { + ActionBarMenuSubItem muteItem = new ActionBarMenuSubItem(getParentActivity(), false, false); + if (!getMessagesController().isDialogMuted(dialogId)) { + muteItem.setTextAndIcon(LocaleController.getString("Mute", R.string.Mute), R.drawable.msg_mute); + } else { + muteItem.setTextAndIcon(LocaleController.getString("Unmute", R.string.Unmute), R.drawable.msg_unmute); + } + muteItem.setMinimumWidth(160); + muteItem.setOnClickListener(e -> { + boolean isMuted = getMessagesController().isDialogMuted(dialogId); + if (!isMuted) { + getNotificationsController().setDialogNotificationsSettings(dialogId, NotificationsController.SETTING_MUTE_FOREVER); + } else { + getNotificationsController().setDialogNotificationsSettings(dialogId, NotificationsController.SETTING_MUTE_UNMUTE); + } + BulletinFactory.createMuteBulletin(this, !isMuted, null).show(); + finishPreviewFragment(); + }); + previewMenu[0].addView(muteItem); + } + + ActionBarMenuSubItem deleteItem = new ActionBarMenuSubItem(getParentActivity(), false, true); + deleteItem.setIconColor(getThemedColor(Theme.key_dialogRedIcon)); + deleteItem.setTextColor(getThemedColor(Theme.key_dialogTextRed)); + deleteItem.setTextAndIcon(LocaleController.getString("Delete", R.string.Delete), R.drawable.msg_delete); + deleteItem.setMinimumWidth(160); + deleteItem.setOnClickListener(e -> { + performSelectedDialogsAction(dialogIdArray, delete, false); + finishPreviewFragment(); + }); + previewMenu[0].addView(deleteItem); + + if (getMessagesController().checkCanOpenChat(args, DialogsActivity.this)) { + if (searchString != null) { + getNotificationCenter().postNotificationName(NotificationCenter.closeChats); + } + prepareBlurBitmap(); + parentLayout.highlightActionButtons = true; + if (AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y) { + presentFragmentAsPreview(chatActivity[0] = new ChatActivity(args)); + } else { + presentFragmentAsPreviewWithMenu(chatActivity[0] = new ChatActivity(args), previewMenu[0]); + if (chatActivity[0] != null) { + chatActivity[0].allowExpandPreviewByClick = true; + try { + chatActivity[0].getAvatarContainer().getAvatarImageView().performAccessibilityAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null); + } catch (Exception ignore) {} + } + } + return true; + } + return false; } private void updateFloatingButtonOffset() { @@ -5589,7 +5973,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. filter = null; } int count = selectedDialogs.size(); - int pinedActionCount = 0; + int pinnedActionCount = 0; if (action == archive || action == archive2) { ArrayList copy = new ArrayList<>(selectedDialogs); getMessagesController().addDialogToFolder(copy, canUnarchiveCount == 0 ? 1 : 0, -1, null, 0); @@ -5659,23 +6043,14 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } else if (folderId != 0 || filter != null) { maxPinnedCount = getMessagesController().maxFolderPinnedDialogsCount; } else { - maxPinnedCount = getMessagesController().maxPinnedDialogsCount; + maxPinnedCount = getUserConfig().isPremium() ? getMessagesController().dialogFiltersPinnedLimitPremium : getMessagesController().dialogFiltersPinnedLimitDefault; } if (newPinnedSecretCount + pinnedSecretCount > maxPinnedCount || newPinnedCount + pinnedCount - alreadyAdded > maxPinnedCount) { if (folderId != 0 || filter != null) { AlertsCreator.showSimpleAlert(DialogsActivity.this, LocaleController.formatString("PinFolderLimitReached", R.string.PinFolderLimitReached, LocaleController.formatPluralString("Chats", maxPinnedCount))); } else { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setMessage(LocaleController.formatString("PinToTopLimitReached2", R.string.PinToTopLimitReached2, LocaleController.formatPluralString("Chats", maxPinnedCount))); - builder.setNegativeButton(LocaleController.getString("FiltersSetupPinAlert", R.string.FiltersSetupPinAlert), (dialog, which) -> presentFragment(new FiltersSetupActivity())); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); - showDialog(builder.create()); - } - AndroidUtilities.shakeView(pinItem, 2, 0); - Vibrator v = (Vibrator) getParentActivity().getSystemService(Context.VIBRATOR_SERVICE); - if (v != null) { - v.vibrate(200); + LimitReachedBottomSheet limitReachedBottomSheet = new LimitReachedBottomSheet(this, getParentActivity(), LimitReachedBottomSheet.TYPE_PIN_DIALOGS, currentAccount); + showDialog(limitReachedBottomSheet); } return; } @@ -5790,7 +6165,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (isDialogPinned(dialog)) { continue; } - pinedActionCount++; + pinnedActionCount++; pinDialog(selectedDialog, true, filter, minPinnedNum, count == 1); if (filter != null) { minPinnedNum++; @@ -5808,39 +6183,14 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (!isDialogPinned(dialog)) { continue; } - pinedActionCount++; + pinnedActionCount++; pinDialog(selectedDialog, false, filter, minPinnedNum, count == 1); - } } else if (action == read) { if (canReadCount != 0) { - debugLastUpdateAction = 2; - int selectedDialogIndex = -1; - if (filter != null && (filter.flags & MessagesController.DIALOG_FILTER_FLAG_EXCLUDE_READ) != 0 && !filter.alwaysShow(currentAccount, dialog)) { - setDialogsListFrozen(true); - if (frozenDialogsList != null) { - for (int i = 0; i < frozenDialogsList.size(); i++) { - if (frozenDialogsList.get(i).id == selectedDialog) { - selectedDialogIndex = i; - break; - } - } - if (selectedDialogIndex < 0) { - setDialogsListFrozen(false, false); - } - } - } - getMessagesController().markMentionsAsRead(selectedDialog); - getMessagesController().markDialogAsRead(selectedDialog, dialog.top_message, dialog.top_message, dialog.last_message_date, false, 0, 0, true, 0); - - if (selectedDialogIndex >= 0) { - frozenDialogsList.remove(selectedDialogIndex); - viewPages[0].dialogsItemAnimator.prepareForRemove(); - viewPages[0].dialogsAdapter.notifyItemRemoved(selectedDialogIndex); - dialogRemoveFinished = 2; - } + markAsRead(selectedDialog); } else { - getMessagesController().markDialogAsUnread(selectedDialog, null, 0); + markAsUnread(selectedDialog); } } else if (action == delete || action == clear) { if (count == 1) { @@ -5943,7 +6293,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. getMessagesController().reorderPinnedDialogs(folderId, null, 0); } if (searchIsShowed) { - getUndoView().showWithAction(0, canPinCount != 0 ? UndoView.ACTION_PIN_DIALOGS : UndoView.ACTION_UNPIN_DIALOGS, pinedActionCount); + getUndoView().showWithAction(0, canPinCount != 0 ? UndoView.ACTION_PIN_DIALOGS : UndoView.ACTION_UNPIN_DIALOGS, pinnedActionCount); } } if (scrollToTop) { @@ -5955,6 +6305,46 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. hideActionMode(action != pin2 && action != pin && action != delete); } + private void markAsRead(long did) { + TLRPC.Dialog dialog = getMessagesController().dialogs_dict.get(did); + MessagesController.DialogFilter filter; + boolean containsFilter = (viewPages[0].dialogsType == 7 || viewPages[0].dialogsType == 8) && (!actionBar.isActionModeShowed() || actionBar.isActionModeShowed(null)); + if (containsFilter) { + filter = getMessagesController().selectedDialogFilter[viewPages[0].dialogsType == 8 ? 1 : 0]; + } else { + filter = null; + } + debugLastUpdateAction = 2; + int selectedDialogIndex = -1; + if (filter != null && (filter.flags & MessagesController.DIALOG_FILTER_FLAG_EXCLUDE_READ) != 0 && !filter.alwaysShow(currentAccount, dialog)) { + setDialogsListFrozen(true); + if (frozenDialogsList != null) { + for (int i = 0; i < frozenDialogsList.size(); i++) { + if (frozenDialogsList.get(i).id == did) { + selectedDialogIndex = i; + break; + } + } + if (selectedDialogIndex < 0) { + setDialogsListFrozen(false, false); + } + } + } + getMessagesController().markMentionsAsRead(did); + getMessagesController().markDialogAsRead(did, dialog.top_message, dialog.top_message, dialog.last_message_date, false, 0, 0, true, 0); + + if (selectedDialogIndex >= 0) { + frozenDialogsList.remove(selectedDialogIndex); + viewPages[0].dialogsItemAnimator.prepareForRemove(); + viewPages[0].dialogsAdapter.notifyItemRemoved(selectedDialogIndex); + dialogRemoveFinished = 2; + } + } + + private void markAsUnread(long did) { + getMessagesController().markDialogAsUnread(did, null, 0); + } + private void performDeleteOrClearDialogAction(int action, long selectedDialog, TLRPC.Chat chat, boolean isBot, boolean revoke) { if (action == clear) { getMessagesController().deleteDialog(selectedDialog, 1, revoke); @@ -6287,12 +6677,12 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } else { blockItem.setVisibility(View.VISIBLE); } - if (filterTabsView == null || filterTabsView.getVisibility() != View.VISIBLE || filterTabsView.getCurrentTabId() == Integer.MAX_VALUE) { + if (filterTabsView == null || filterTabsView.getVisibility() != View.VISIBLE || filterTabsView.currentTabIsDefault()) { removeFromFolderItem.setVisibility(View.GONE); } else { removeFromFolderItem.setVisibility(View.VISIBLE); } - if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE && filterTabsView.getCurrentTabId() == Integer.MAX_VALUE && !FiltersListBottomSheet.getCanAddDialogFilters(this, selectedDialogs).isEmpty()) { + if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE && filterTabsView.currentTabIsDefault() && !FiltersListBottomSheet.getCanAddDialogFilters(this, selectedDialogs).isEmpty()) { addToFolderItem.setVisibility(View.VISIBLE); } else { addToFolderItem.setVisibility(View.GONE); @@ -6749,6 +7139,45 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } } + private void reloadViewPageDialogs(ViewPage viewPage, boolean newMessage) { + if (viewPage.getVisibility() != View.VISIBLE) { + return; + } + int oldItemCount = viewPage.dialogsAdapter.getCurrentCount(); + + if (viewPage.dialogsType == 0 && hasHiddenArchive() && viewPage.listView.getChildCount() == 0) { + LinearLayoutManager layoutManager = (LinearLayoutManager) viewPage.listView.getLayoutManager(); + layoutManager.scrollToPositionWithOffset(1, 0); + } + + if (viewPage.dialogsAdapter.isDataSetChanged() || newMessage) { + viewPage.dialogsAdapter.updateHasHints(); + int newItemCount = viewPage.dialogsAdapter.getItemCount(); + if (newItemCount == 1 && oldItemCount == 1 && viewPage.dialogsAdapter.getItemViewType(0) == 5) { + if (viewPage.dialogsAdapter.lastDialogsEmptyType != viewPage.dialogsAdapter.dialogsEmptyType()) { + viewPage.dialogsAdapter.notifyItemChanged(0); + } + } else { + viewPage.dialogsAdapter.notifyDataSetChanged(); + if (newItemCount > oldItemCount && initialDialogsType != 11 && initialDialogsType != 12 && initialDialogsType != 13) { + viewPage.recyclerItemsEnterAnimator.showItemsAnimated(oldItemCount); + } + } + } else { + updateVisibleRows(MessagesController.UPDATE_MASK_NEW_MESSAGE); + int newItemCount = viewPage.dialogsAdapter.getItemCount(); + if (newItemCount > oldItemCount && initialDialogsType != 11 && initialDialogsType != 12 && initialDialogsType != 13) { + viewPage.recyclerItemsEnterAnimator.showItemsAnimated(oldItemCount); + } + } + try { + viewPage.listView.setEmptyView(folderId == 0 ? viewPage.progressView : null); + } catch (Exception e) { + FileLog.e(e); + } + checkListLoad(viewPage); + } + @SuppressWarnings("unchecked") @Override public void didReceivedNotification(int id, int account, Object... args) { @@ -6756,54 +7185,32 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (viewPages == null || dialogsListFrozen) { return; } - - MessagesController messagesController = AccountInstance.getInstance(currentAccount).getMessagesController(); - ArrayList dialogs = messagesController.getDialogs(folderId); - for (int a = 0; a < viewPages.length; a++) { - if (viewPages[a].getVisibility() != View.VISIBLE) { - continue; + final ViewPage viewPage = viewPages[a]; + MessagesController.DialogFilter filter = null; + if (viewPages[0].dialogsType == 7 || viewPages[0].dialogsType == 8) { + filter = getMessagesController().selectedDialogFilter[viewPages[0].dialogsType == 8 ? 1 : 0]; } - int oldItemCount = viewPages[a].dialogsAdapter.getCurrentCount(); - - if (viewPages[a].dialogsType == 0 && hasHiddenArchive() && viewPages[a].listView.getChildCount() == 0) { - LinearLayoutManager layoutManager = (LinearLayoutManager) viewPages[a].listView.getLayoutManager(); - layoutManager.scrollToPositionWithOffset(1, 0); - } - - if (viewPages[a].dialogsAdapter.isDataSetChanged() || args.length > 0) { - viewPages[a].dialogsAdapter.updateHasHints(); - int newItemCount = viewPages[a].dialogsAdapter.getItemCount(); - if (newItemCount == 1 && oldItemCount == 1 && viewPages[a].dialogsAdapter.getItemViewType(0) == 5) { - if (viewPages[a].dialogsAdapter.lastDialogsEmptyType != viewPages[a].dialogsAdapter.dialogsEmptyType()) { - viewPages[a].dialogsAdapter.notifyItemChanged(0); + boolean isUnread = filter != null && (filter.flags & MessagesController.DIALOG_FILTER_FLAG_EXCLUDE_READ) != 0; + if (slowedReloadAfterDialogClick && isUnread) { + // in unread tab dialogs reload too instantly removes dialog from folder after clicking on it + AndroidUtilities.runOnUIThread(() -> { + reloadViewPageDialogs(viewPage, args.length > 0); + if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE) { + filterTabsView.checkTabsCounter(); } - } else { - viewPages[a].dialogsAdapter.notifyDataSetChanged(); - if (newItemCount > oldItemCount && initialDialogsType != 11 && initialDialogsType != 12 && initialDialogsType != 13) { - viewPages[a].recyclerItemsEnterAnimator.showItemsAnimated(oldItemCount); - } - } + }, 160); } else { - updateVisibleRows(MessagesController.UPDATE_MASK_NEW_MESSAGE); - int newItemCount = viewPages[a].dialogsAdapter.getItemCount(); - if (newItemCount > oldItemCount && initialDialogsType != 11 && initialDialogsType != 12 && initialDialogsType != 13) { - viewPages[a].recyclerItemsEnterAnimator.showItemsAnimated(oldItemCount); - } + reloadViewPageDialogs(viewPage, args.length > 0); } - try { - viewPages[a].listView.setEmptyView(folderId == 0 ? viewPages[a].progressView : null); - } catch (Exception e) { - FileLog.e(e); - } - checkListLoad(viewPages[a]); } if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE) { filterTabsView.checkTabsCounter(); } + slowedReloadAfterDialogClick = false; } else if (id == NotificationCenter.dialogsUnreadCounterChanged) { if (filterTabsView != null && filterTabsView.getVisibility() == View.VISIBLE) { - filterTabsView.notifyTabCounterChanged(Integer.MAX_VALUE); + filterTabsView.notifyTabCounterChanged(filterTabsView.getDefaultTabId()); } } else if (id == NotificationCenter.dialogsUnreadReactionsCounterChanged) { updateVisibleRows(0); @@ -7110,6 +7517,16 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. setDialogsListFrozen(frozen, true); } + public class DialogsHeader extends TLRPC.Dialog { + public static final int HEADER_TYPE_MY_CHANNELS = 0; + public static final int HEADER_TYPE_MY_GROUPS = 1; + public static final int HEADER_TYPE_GROUPS = 2; + public int headerType; + public DialogsHeader(int type) { + this.headerType = type; + } + } + @NonNull public ArrayList getDialogsArray(int currentAccount, int dialogsType, int folderId, boolean frozen) { if (frozen && frozenDialogsList != null) { @@ -7122,17 +7539,28 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. return messagesController.dialogsServerOnly; } else if (dialogsType == 2) { ArrayList dialogs = new ArrayList<>(messagesController.dialogsCanAddUsers.size() + messagesController.dialogsMyChannels.size() + messagesController.dialogsMyGroups.size() + 2); - if (messagesController.dialogsMyChannels.size() > 0) { - dialogs.add(null); + if (messagesController.dialogsMyChannels.size() > 0 && allowChannels) { + dialogs.add(new DialogsHeader(DialogsHeader.HEADER_TYPE_MY_CHANNELS)); dialogs.addAll(messagesController.dialogsMyChannels); } - if (messagesController.dialogsMyGroups.size() > 0) { - dialogs.add(null); + if (messagesController.dialogsMyGroups.size() > 0 && allowGroups) { + dialogs.add(new DialogsHeader(DialogsHeader.HEADER_TYPE_MY_GROUPS)); dialogs.addAll(messagesController.dialogsMyGroups); } if (messagesController.dialogsCanAddUsers.size() > 0) { - dialogs.add(null); - dialogs.addAll(messagesController.dialogsCanAddUsers); + final int count = messagesController.dialogsCanAddUsers.size(); + boolean first = true; + for (int i = 0; i < count; ++i) { + TLRPC.Dialog dialog = messagesController.dialogsCanAddUsers.get(i); + if (allowChannels && ChatObject.isChannelAndNotMegaGroup(-dialog.id, currentAccount) || + allowGroups && (ChatObject.isMegagroup(currentAccount, -dialog.id) || !ChatObject.isChannel(-dialog.id, currentAccount))) { + if (first) { + dialogs.add(new DialogsHeader(DialogsHeader.HEADER_TYPE_GROUPS)); + first = false; + } + dialogs.add(dialog); + } + } } return dialogs; } else if (dialogsType == 3) { @@ -7152,6 +7580,22 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } } else if (dialogsType == 9) { return messagesController.dialogsForBlock; + } else if (dialogsType == DIALOGS_TYPE_START_ATTACH_BOT) { + ArrayList dialogs = new ArrayList<>(); + if (allowUsers || allowBots) { + for (TLRPC.Dialog d : messagesController.dialogsUsersOnly) { + if (messagesController.getUser(d.id).bot ? allowBots : allowUsers) { + dialogs.add(d); + } + } + } + if (allowGroups) { + dialogs.addAll(messagesController.dialogsGroupsOnly); + } + if (allowChannels) { + dialogs.addAll(messagesController.dialogsChannelsOnly); + } + return dialogs; } return new ArrayList<>(); } @@ -7636,7 +8080,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. sendPopupWindow.dismiss(); } }); - sendPopupLayout2.setShownFromBotton(false); + sendPopupLayout2.setShownFromBottom(false); sendPopupLayout2.setupRadialSelectors(getThemedColor(Theme.key_dialogButtonSelector)); ActionBarMenuSubItem sendWithoutSound = new ActionBarMenuSubItem(parentActivity, true, true, resourcesProvider); @@ -7664,14 +8108,13 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. sendPopupWindow.setInputMethodMode(ActionBarPopupWindow.INPUT_METHOD_NOT_NEEDED); sendPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED); sendPopupWindow.getContentView().setFocusableInTouchMode(true); - SharedConfig.removeScheduledOrNoSuoundHint(); + SharedConfig.removeScheduledOrNoSoundHint(); layout.measure(View.MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(1000), View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(1000), View.MeasureSpec.AT_MOST)); sendPopupWindow.setFocusable(true); int[] location = new int[2]; view.getLocationInWindow(location); - int y; - y = location[1] - layout.getMeasuredHeight() - AndroidUtilities.dp(2); + int y = location[1] - layout.getMeasuredHeight() - AndroidUtilities.dp(2); sendPopupWindow.showAtLocation(view, Gravity.LEFT | Gravity.TOP, location[0] + view.getMeasuredWidth() - layout.getMeasuredWidth() + AndroidUtilities.dp(8), y); sendPopupWindow.dimBehind(); view.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); @@ -7746,8 +8189,10 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (scrimPopupWindowItems != null) { for (int a = 0; a < scrimPopupWindowItems.length; a++) { - scrimPopupWindowItems[a].setColors(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem), Theme.getColor(Theme.key_actionBarDefaultSubmenuItemIcon)); - scrimPopupWindowItems[a].setSelectorColor(Theme.getColor(Theme.key_dialogButtonSelector)); + if (scrimPopupWindowItems[a] != null) { + scrimPopupWindowItems[a].setColors(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem), Theme.getColor(Theme.key_actionBarDefaultSubmenuItemIcon)); + scrimPopupWindowItems[a].setSelectorColor(Theme.getColor(Theme.key_dialogButtonSelector)); + } } } if (scrimPopupWindow != null) { @@ -7771,6 +8216,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (searchTabsView != null) { searchTabsView.updateColors(); } + if (blurredView != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + blurredView.setForeground(new ColorDrawable(ColorUtils.setAlphaComponent(getThemedColor(Theme.key_windowBackgroundWhite), 100))); + } + } if (searchItem != null) { EditTextBoldCursor editText = searchItem.getSearchField(); if (whiteActionBar) { @@ -7879,7 +8329,6 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. arrayList.add(new ThemeDescription(list, 0, new Class[]{DialogCell.class}, Theme.dialogs_countGrayPaint, null, null, Theme.key_chats_unreadCounterMuted)); arrayList.add(new ThemeDescription(list, 0, new Class[]{DialogCell.class}, Theme.dialogs_countTextPaint, null, null, Theme.key_chats_unreadCounterText)); arrayList.add(new ThemeDescription(list, 0, new Class[]{DialogCell.class, ProfileSearchCell.class}, null, new Drawable[]{Theme.dialogs_lockDrawable}, null, Theme.key_chats_secretIcon)); - arrayList.add(new ThemeDescription(list, 0, new Class[]{DialogCell.class, ProfileSearchCell.class}, null, new Drawable[]{Theme.dialogs_groupDrawable, Theme.dialogs_broadcastDrawable, Theme.dialogs_botDrawable}, null, Theme.key_chats_nameIcon)); arrayList.add(new ThemeDescription(list, 0, new Class[]{DialogCell.class, ProfileSearchCell.class}, null, new Drawable[]{Theme.dialogs_scamDrawable, Theme.dialogs_fakeDrawable}, null, Theme.key_chats_draft)); arrayList.add(new ThemeDescription(list, 0, new Class[]{DialogCell.class}, null, new Drawable[]{Theme.dialogs_pinnedDrawable, Theme.dialogs_reorderDrawable}, null, Theme.key_chats_pinnedIcon)); arrayList.add(new ThemeDescription(list, 0, new Class[]{DialogCell.class, ProfileSearchCell.class}, null, new Paint[]{Theme.dialogs_namePaint[0], Theme.dialogs_namePaint[1], Theme.dialogs_searchNamePaint}, null, null, Theme.key_chats_name)); @@ -8184,7 +8633,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } if (searchViewPager != null) { - searchViewPager.getThemeDescriptors(arrayList); + searchViewPager.getThemeDescriptions(arrayList); } return arrayList; @@ -8365,5 +8814,4 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } return ColorUtils.calculateLuminance(color) > 0.7f; } -} - +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DownloadProgressIcon.java b/TMessagesProj/src/main/java/org/telegram/ui/DownloadProgressIcon.java index c07fb49a7..83e415ab6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DownloadProgressIcon.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DownloadProgressIcon.java @@ -43,7 +43,9 @@ public class DownloadProgressIcon extends View implements NotificationCenter.Not this.currentAccount = currentAccount; downloadDrawable = new RLottieDrawable(R.raw.download_progress, "download_progress", AndroidUtilities.dp(28), AndroidUtilities.dp(28), true, null); + downloadDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_actionBarDefaultIcon), PorterDuff.Mode.MULTIPLY)); downloadCompleteDrawable = new RLottieDrawable(R.raw.download_finish, "download_finish", AndroidUtilities.dp(28), AndroidUtilities.dp(28), true, null); + downloadCompleteDrawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_actionBarDefaultIcon), PorterDuff.Mode.MULTIPLY)); downloadImageReceiver.setImageBitmap(downloadDrawable); downloadCompleteImageReceiver.setImageBitmap(downloadCompleteDrawable); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/EditWidgetActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/EditWidgetActivity.java index f2dd0d4c1..f68e3032d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/EditWidgetActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/EditWidgetActivity.java @@ -27,12 +27,6 @@ import android.graphics.Shader; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; - -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.ItemTouchHelper; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import android.graphics.drawable.GradientDrawable; import android.os.Build; import android.text.SpannableStringBuilder; @@ -46,6 +40,11 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AccountInstance; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; @@ -53,7 +52,6 @@ import org.telegram.messenger.ChatsWidgetProvider; import org.telegram.messenger.ContactsController; import org.telegram.messenger.ContactsWidgetProvider; import org.telegram.messenger.DialogObject; -import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; @@ -291,7 +289,7 @@ public class EditWidgetActivity extends BaseFragment { try { Bitmap bitmap = null; if (photoPath != null) { - File path = FileLoader.getPathToAttach(photoPath, true); + File path = getFileLoader().getPathToAttach(photoPath, true); bitmap = BitmapFactory.decodeFile(path.toString()); } @@ -564,7 +562,7 @@ public class EditWidgetActivity extends BaseFragment { try { Bitmap bitmap = null; if (photoPath != null) { - File path = FileLoader.getPathToAttach(photoPath, true); + File path = getFileLoader().getPathToAttach(photoPath, true); bitmap = BitmapFactory.decodeFile(path.toString()); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/EmojiAnimationsOverlay.java b/TMessagesProj/src/main/java/org/telegram/ui/EmojiAnimationsOverlay.java index 42d52a15d..0f37d2b2f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/EmojiAnimationsOverlay.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/EmojiAnimationsOverlay.java @@ -16,6 +16,7 @@ import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaDataController; +import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; @@ -27,6 +28,7 @@ import org.telegram.ui.Cells.ChatMessageCell; import org.telegram.ui.Components.Bulletin; import org.telegram.ui.Components.RecyclerListView; import org.telegram.ui.Components.StickerSetBulletinLayout; +import org.telegram.ui.Components.StickersAlert; import java.util.ArrayList; import java.util.HashMap; @@ -223,30 +225,59 @@ public class EmojiAnimationsOverlay implements NotificationCenter.NotificationCe ChatMessageCell cell = (ChatMessageCell) child; if (cell.getMessageObject().getId() == drawingObject.messageId) { drawingObject.viewFound = true; - float viewX = listView.getX() + child.getX() + cell.getPhotoImage().getImageX(); - float viewY = listView.getY() + child.getY() + cell.getPhotoImage().getImageY(); - if (drawingObject.isOut) { - viewX += -cell.getPhotoImage().getImageWidth() * 2 + AndroidUtilities.dp(24); + float viewX = listView.getX() + child.getX(); + float viewY = listView.getY() + child.getY(); + if (drawingObject.isPremiumSticker) { + drawingObject.lastX = viewX + cell.getPhotoImage().getImageX(); + drawingObject.lastY = viewY + cell.getPhotoImage().getImageY(); + ; } else { - viewX += -AndroidUtilities.dp(24); + viewX += cell.getPhotoImage().getImageX(); + viewY += cell.getPhotoImage().getImageY(); + if (drawingObject.isOut) { + viewX += -cell.getPhotoImage().getImageWidth() * 2 + AndroidUtilities.dp(24); + } else { + viewX += -AndroidUtilities.dp(24); + } + viewY -= cell.getPhotoImage().getImageWidth(); + drawingObject.lastX = viewX; + drawingObject.lastY = viewY; } - viewY -= cell.getPhotoImage().getImageWidth(); - drawingObject.lastX = viewX; - drawingObject.lastY = viewY; drawingObject.lastW = cell.getPhotoImage().getImageWidth(); + drawingObject.lastH = cell.getPhotoImage().getImageHeight(); break; } } } - drawingObject.imageReceiver.setImageCoords(drawingObject.lastX + drawingObject.randomOffsetX, drawingObject.lastY + drawingObject.randomOffsetY, drawingObject.lastW * 3, drawingObject.lastW * 3); - if (!drawingObject.isOut) { - canvas.save(); - canvas.scale(-1f, 1, drawingObject.imageReceiver.getCenterX(), drawingObject.imageReceiver.getCenterY()); - drawingObject.imageReceiver.draw(canvas); - canvas.restore(); + if (drawingObject.isPremiumSticker) { + float size = drawingObject.lastH * 1.49926f; + float paddingHorizontal = size * 0.0546875f; + float centerY = drawingObject.lastY + drawingObject.lastH / 2f; + float top = centerY - size / 2f - size * 0.00279f; + if (!drawingObject.isOut) { + drawingObject.imageReceiver.setImageCoords(drawingObject.lastX - paddingHorizontal, top, size, size); + } else { + drawingObject.imageReceiver.setImageCoords(drawingObject.lastX + drawingObject.lastW - size + paddingHorizontal, top, size, size); + } + if (!drawingObject.isOut) { + canvas.save(); + canvas.scale(-1f, 1, drawingObject.imageReceiver.getCenterX(), drawingObject.imageReceiver.getCenterY()); + drawingObject.imageReceiver.draw(canvas); + canvas.restore(); + } else { + drawingObject.imageReceiver.draw(canvas); + } } else { - drawingObject.imageReceiver.draw(canvas); + drawingObject.imageReceiver.setImageCoords(drawingObject.lastX + drawingObject.randomOffsetX, drawingObject.lastY + drawingObject.randomOffsetY, drawingObject.lastW * 3, drawingObject.lastW * 3); + if (!drawingObject.isOut) { + canvas.save(); + canvas.scale(-1f, 1, drawingObject.imageReceiver.getCenterX(), drawingObject.imageReceiver.getCenterY()); + drawingObject.imageReceiver.draw(canvas); + canvas.restore(); + } else { + drawingObject.imageReceiver.draw(canvas); + } } if (drawingObject.wasPlayed && drawingObject.imageReceiver.getLottieAnimation() != null && drawingObject.imageReceiver.getLottieAnimation().getCurrentFrame() == drawingObject.imageReceiver.getLottieAnimation().getFramesCount() - 2) { drawingObjects.remove(i); @@ -258,19 +289,35 @@ public class EmojiAnimationsOverlay implements NotificationCenter.NotificationCe drawingObject.imageReceiver.getLottieAnimation().start(); } } + if (drawingObjects.isEmpty()) { + onAllEffectsEnd(); + } contentLayout.invalidate(); } } - public void onTapItem(ChatMessageCell view, ChatActivity chatActivity) { - if (chatActivity.currentUser == null || chatActivity.isSecretChat() || view.getMessageObject() == null || view.getMessageObject().getId() < 0) { - return; + public void onAllEffectsEnd() { + + } + + public boolean onTapItem(ChatMessageCell view, ChatActivity chatActivity) { + if (chatActivity.isSecretChat() || view.getMessageObject() == null || view.getMessageObject().getId() < 0) { + return false; + } + if (!view.getMessageObject().isPremiumSticker() && chatActivity.currentUser == null) { + return false; } boolean show = showAnimationForCell(view, -1, true, false); - if (show && !EmojiData.hasEmojiSupportVibration(view.getMessageObject().getStickerEmoji())) { + + if (show && (!EmojiData.hasEmojiSupportVibration(view.getMessageObject().getStickerEmoji()) || view.getMessageObject().isPremiumSticker())) { view.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP); } - + if (view.getMessageObject().isPremiumSticker()) { + view.getMessageObject().forcePlayEffect = false; + view.getMessageObject().messageOwner.premiumEffectWasPlayed = true; + chatActivity.getMessagesStorage().updateMessageCustomParams(dialogId, view.getMessageObject().messageOwner); + return show; + } Integer printingType = MessagesController.getInstance(currentAccount).getPrintingStringType(dialogId, threadMsgId); boolean canShowHint = true; if (printingType != null && printingType == 5) { @@ -294,6 +341,7 @@ public class EmojiAnimationsOverlay implements NotificationCenter.NotificationCe } }, 1500); } + return show; } public void cancelHintRunnable() { @@ -310,7 +358,8 @@ public class EmojiAnimationsOverlay implements NotificationCenter.NotificationCe if (!view.getPhotoImage().hasNotThumb()) { return false; } - String emoji = view.getMessageObject().getStickerEmoji(); + MessageObject messageObject = view.getMessageObject(); + String emoji = messageObject.getStickerEmoji(); if (emoji == null) { return false; } @@ -321,47 +370,102 @@ public class EmojiAnimationsOverlay implements NotificationCenter.NotificationCe } emoji = unwrapEmoji(emoji); + boolean isPremiumSticker = messageObject.isPremiumSticker(); - if (supportedEmoji.contains(emoji)) { + if (supportedEmoji.contains(emoji) || isPremiumSticker) { ArrayList arrayList = emojiInteractionsStickersMap.get(emoji); - if (arrayList != null && !arrayList.isEmpty()) { - int sameAnimationsCount = 0; + if ((arrayList != null && !arrayList.isEmpty()) || isPremiumSticker) { + int sameAnimationsCountMessageId = 0; + int sameAnimationsCountDocumentId = 0; for (int i = 0; i < drawingObjects.size(); i++) { if (drawingObjects.get(i).messageId == view.getMessageObject().getId()) { - sameAnimationsCount++; + sameAnimationsCountMessageId++; if (drawingObjects.get(i).imageReceiver.getLottieAnimation() == null || drawingObjects.get(i).imageReceiver.getLottieAnimation().isGeneratingCache()) { return false; } } + if (drawingObjects.get(i).document != null && view.getMessageObject().getDocument() != null && drawingObjects.get(i).document.id == view.getMessageObject().getDocument().id) { + sameAnimationsCountDocumentId++; + } } - if (sameAnimationsCount >= 4) { + if (sendTap && isPremiumSticker && sameAnimationsCountMessageId > 0) { + if (Bulletin.getVisibleBulletin() != null && Bulletin.getVisibleBulletin().hash == messageObject.getId()) { + return false; + } + TLRPC.InputStickerSet inputStickerSet = messageObject.getInputStickerSet(); + TLRPC.TL_messages_stickerSet stickerSet = null; + if (inputStickerSet.short_name != null) { + stickerSet = MediaDataController.getInstance(currentAccount).getStickerSetByName(inputStickerSet.short_name); + } + if (stickerSet == null) { + stickerSet = MediaDataController.getInstance(currentAccount).getStickerSetById(inputStickerSet.id); + } + if (stickerSet == null) { + TLRPC.TL_messages_getStickerSet req = new TLRPC.TL_messages_getStickerSet(); + req.stickerset = inputStickerSet; + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + showStickerSetBulletin((TLRPC.TL_messages_stickerSet) response, messageObject); + })); + } else { + showStickerSetBulletin(stickerSet, messageObject); + } return false; } - if (animation < 0 || animation > arrayList.size() - 1) { - animation = Math.abs(random.nextInt()) % arrayList.size(); + if (sameAnimationsCountMessageId >= 4) { + return false; + } + TLRPC.Document document = null; + TLRPC.VideoSize videoSize = null; + if (isPremiumSticker) { + videoSize = messageObject.getPremiumStickerAnimation(); + } else { + if (animation < 0 || animation > arrayList.size() - 1) { + animation = Math.abs(random.nextInt()) % arrayList.size(); + } + document = arrayList.get(animation); + } + + if (document == null && videoSize == null) { + return false; } - TLRPC.Document document = arrayList.get(animation); DrawingObject drawingObject = new DrawingObject(); + drawingObject.isPremiumSticker = messageObject.isPremiumSticker(); drawingObject.randomOffsetX = imageW / 4 * ((random.nextInt() % 101) / 100f); drawingObject.randomOffsetY = imageH / 4 * ((random.nextInt() % 101) / 100f); drawingObject.messageId = view.getMessageObject().getId(); drawingObject.document = document; drawingObject.isOut = view.getMessageObject().isOutOwner(); - - Integer lastIndex = lastAnimationIndex.get(document.id); - int currentIndex = lastIndex == null ? 0 : lastIndex; - lastAnimationIndex.put(document.id, (currentIndex + 1) % 4); - - - ImageLocation imageLocation = ImageLocation.getForDocument(document); - drawingObject.imageReceiver.setUniqKeyPrefix(currentIndex + "_" + drawingObject.messageId + "_"); - int w = (int) (2f * imageW / AndroidUtilities.density); - drawingObject.imageReceiver.setImage(imageLocation, w + "_" + w + "_pcache", null, "tgs", set, 1); - drawingObject.imageReceiver.setLayerNum(Integer.MAX_VALUE); drawingObject.imageReceiver.setAllowStartAnimation(true); + int w; + if (document != null) { + w = (int) (2f * imageW / AndroidUtilities.density); + Integer lastIndex = lastAnimationIndex.get(document.id); + int currentIndex = lastIndex == null ? 0 : lastIndex; + lastAnimationIndex.put(document.id, (currentIndex + 1) % 4); + + ImageLocation imageLocation = ImageLocation.getForDocument(document); + drawingObject.imageReceiver.setUniqKeyPrefix(currentIndex + "_" + drawingObject.messageId + "_"); + + drawingObject.imageReceiver.setImage(imageLocation, w + "_" + w + "_pcache", null, "tgs", set, 1); + } else { + w = (int) (1.5f * imageW / AndroidUtilities.density); + if (sameAnimationsCountDocumentId > 0) { + Integer lastIndex = lastAnimationIndex.get(messageObject.getDocument().id); + int currentIndex = lastIndex == null ? 0 : lastIndex; + lastAnimationIndex.put(messageObject.getDocument().id, (currentIndex + 1) % 4); + drawingObject.imageReceiver.setUniqKeyPrefix(currentIndex + "_" + drawingObject.messageId + "_"); + } + drawingObject.document = messageObject.getDocument(); + drawingObject.imageReceiver.setImage(ImageLocation.getForDocument(videoSize, messageObject.getDocument()), w + "_" + w, null, "tgs", set, 1); + } + + drawingObject.imageReceiver.setLayerNum(Integer.MAX_VALUE); drawingObject.imageReceiver.setAutoRepeat(0); if (drawingObject.imageReceiver.getLottieAnimation() != null) { + if (drawingObject.isPremiumSticker) { + drawingObject.imageReceiver.getLottieAnimation().setCurrentFrame(0, false, true); + } drawingObject.imageReceiver.getLottieAnimation().start(); } drawingObjects.add(drawingObject); @@ -369,7 +473,7 @@ public class EmojiAnimationsOverlay implements NotificationCenter.NotificationCe drawingObject.imageReceiver.setParentView(contentLayout); contentLayout.invalidate(); - if (sendTap) { + if (sendTap && !isPremiumSticker) { if (lastTappedMsgId != 0 && lastTappedMsgId != view.getMessageObject().getId()) { if (sentInteractionsRunnable != null) { AndroidUtilities.cancelRunOnUIThread(sentInteractionsRunnable); @@ -407,6 +511,27 @@ public class EmojiAnimationsOverlay implements NotificationCenter.NotificationCe return false; } + private void showStickerSetBulletin(TLRPC.TL_messages_stickerSet stickerSet, MessageObject messageObject) { + if (MessagesController.getInstance(currentAccount).premiumLocked) { + return; + } + StickerSetBulletinLayout layout = new StickerSetBulletinLayout(contentLayout.getContext(), null, StickerSetBulletinLayout.TYPE_EMPTY, messageObject.getDocument(), chatActivity.getResourceProvider()); + layout.titleTextView.setText(stickerSet.set.title); + layout.subtitleTextView.setText(LocaleController.getString("PremiumStickerTooltip", R.string.PremiumStickerTooltip)); + + Bulletin.UndoButton viewButton = new Bulletin.UndoButton(chatActivity.getParentActivity(), true, chatActivity.getResourceProvider()); + layout.setButton(viewButton); + viewButton.setUndoAction(() -> { + StickersAlert alert = new StickersAlert(chatActivity.getParentActivity(), chatActivity, messageObject.getInputStickerSet(), null, chatActivity.chatActivityEnterView, chatActivity.getResourceProvider()); + alert.setCalcMandatoryInsets(chatActivity.isKeyboardVisible()); + chatActivity.showDialog(alert); + }); + viewButton.setText(LocaleController.getString("ViewAction", R.string.ViewAction)); + Bulletin bulletin = Bulletin.make(chatActivity, layout, Bulletin.DURATION_LONG); + bulletin.hash = messageObject.getId(); + bulletin.show(); + } + private String unwrapEmoji(String emoji) { CharSequence fixedEmoji = emoji; int length = emoji.length(); @@ -479,13 +604,27 @@ public class EmojiAnimationsOverlay implements NotificationCenter.NotificationCe } } + public boolean isIdle() { + return drawingObjects.isEmpty(); + } + + public boolean checkPosition(ChatMessageCell messageCell, float chatListViewPaddingTop, int bottom) { + float y = messageCell.getY() + messageCell.getPhotoImage().getCenterY(); + if (y > chatListViewPaddingTop && y < bottom) { + return true; + } + return false; + } + private class DrawingObject { public float lastX; public float lastY; public boolean viewFound; public float lastW; + public float lastH; public float randomOffsetX; public float randomOffsetY; + public boolean isPremiumSticker; boolean wasPlayed; boolean isOut; int messageId; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/FilterCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/FilterCreateActivity.java index 1a6256e8d..1543d8273 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/FilterCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/FilterCreateActivity.java @@ -16,6 +16,9 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.DialogObject; @@ -49,9 +52,6 @@ import org.telegram.ui.Components.RecyclerListView; import java.util.ArrayList; import java.util.Collections; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class FilterCreateActivity extends BaseFragment { private RecyclerListView listView; @@ -996,10 +996,10 @@ public class FilterCreateActivity extends BaseFragment { textCell.setTextAndIcon(LocaleController.formatPluralString("FilterShowMoreChats", newNeverShow.size() - 5), R.drawable.arrow_more, false); } else if (position == includeAddRow) { textCell.setColors(Theme.key_switchTrackChecked, Theme.key_windowBackgroundWhiteBlueText4); - textCell.setTextAndIcon(LocaleController.getString("FilterAddChats", R.string.FilterAddChats), R.drawable.actions_addchat, position + 1 != includeSectionRow); + textCell.setTextAndIcon(LocaleController.getString("FilterAddChats", R.string.FilterAddChats), R.drawable.msg_chats_add, position + 1 != includeSectionRow); } else if (position == excludeAddRow) { textCell.setColors(Theme.key_switchTrackChecked, Theme.key_windowBackgroundWhiteBlueText4); - textCell.setTextAndIcon(LocaleController.getString("FilterRemoveChats", R.string.FilterRemoveChats), R.drawable.actions_addchat, position + 1 != excludeSectionRow); + textCell.setTextAndIcon(LocaleController.getString("FilterRemoveChats", R.string.FilterRemoveChats), R.drawable.msg_chats_add, position + 1 != excludeSectionRow); } break; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/FilterUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/FilterUsersActivity.java index 78f858c07..7aaa3bc34 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/FilterUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/FilterUsersActivity.java @@ -43,6 +43,11 @@ import android.view.inputmethod.EditorInfo; import android.widget.ImageView; import android.widget.ScrollView; +import androidx.annotation.Keep; +import androidx.collection.LongSparseArray; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ContactsController; import org.telegram.messenger.DialogObject; @@ -66,15 +71,11 @@ import org.telegram.ui.Components.EditTextBoldCursor; import org.telegram.ui.Components.EmptyTextProgressView; import org.telegram.ui.Components.GroupCreateSpan; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.Components.RecyclerListView; import java.util.ArrayList; -import androidx.annotation.Keep; -import androidx.collection.LongSparseArray; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class FilterUsersActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, View.OnClickListener { private ScrollView scrollView; @@ -683,7 +684,10 @@ public class FilterUsersActivity extends BaseFragment implements NotificationCen GroupCreateSpan span = selectedContacts.get(id); spansContainer.removeSpan(span); } else { - if (!(object instanceof String) && selectedCount >= 100) { + if (!(object instanceof String) && (!getUserConfig().isPremium() && selectedCount >= MessagesController.getInstance(currentAccount).dialogFiltersChatsLimitDefault) || selectedCount >= MessagesController.getInstance(currentAccount).dialogFiltersChatsLimitPremium) { + LimitReachedBottomSheet limitReachedBottomSheet = new LimitReachedBottomSheet(this, context, LimitReachedBottomSheet.TYPE_CHATS_IN_FOLDER, currentAccount); + limitReachedBottomSheet.setCurrentValue(selectedCount); + showDialog(limitReachedBottomSheet); return; } if (object instanceof TLRPC.User) { @@ -944,10 +948,11 @@ public class FilterUsersActivity extends BaseFragment implements NotificationCen } private void updateHint() { + int limit = getUserConfig().isPremium() ? getMessagesController().dialogFiltersChatsLimitPremium : getMessagesController().dialogFiltersChatsLimitDefault; if (selectedCount == 0) { - actionBar.setSubtitle(LocaleController.formatString("MembersCountZero", R.string.MembersCountZero, LocaleController.formatPluralString("Chats", 100))); + actionBar.setSubtitle(LocaleController.formatString("MembersCountZero", R.string.MembersCountZero, LocaleController.formatPluralString("Chats", limit))); } else { - actionBar.setSubtitle(String.format(LocaleController.getPluralString("MembersCountSelected", selectedCount), selectedCount, 100)); + actionBar.setSubtitle(String.format(LocaleController.getPluralString("MembersCountSelected", selectedCount), selectedCount, limit)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/FilteredSearchView.java b/TMessagesProj/src/main/java/org/telegram/ui/FilteredSearchView.java index 3f8222ede..ec9cb84f6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/FilteredSearchView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/FilteredSearchView.java @@ -324,7 +324,7 @@ public class FilteredSearchView extends FrameLayout implements NotificationCente } else if (view instanceof DialogCell) { if (!uiCallback.actionModeShowing()) { if (((DialogCell) view).isPointInsideAvatar(x, y)) { - chatPreviewDelegate.startChatPreview((DialogCell) view); + chatPreviewDelegate.startChatPreview(recyclerListView, (DialogCell) view); return true; } } @@ -374,7 +374,9 @@ public class FilteredSearchView extends FrameLayout implements NotificationCente int visibleItemCount = Math.abs(lastVisibleItem - firstVisibleItem) + 1; int totalItemCount = recyclerView.getAdapter().getItemCount(); if (!isLoading && visibleItemCount > 0 && lastVisibleItem >= totalItemCount - 10 && !endReached) { - search(currentSearchDialogId, currentSearchMinDate, currentSearchMaxDate, currentSearchFilter, currentIncludeFolder, lastMessagesSearchString, false); + AndroidUtilities.runOnUIThread(() -> { + search(currentSearchDialogId, currentSearchMinDate, currentSearchMaxDate, currentSearchFilter, currentIncludeFolder, lastMessagesSearchString, false); + }); } if (adapter == sharedPhotoVideoAdapter) { @@ -1728,7 +1730,6 @@ public class FilteredSearchView extends FrameLayout implements NotificationCente arrayList.add(new ThemeDescription(recyclerListView, 0, new Class[]{DialogCell.class}, Theme.dialogs_countGrayPaint, null, null, Theme.key_chats_unreadCounterMuted)); arrayList.add(new ThemeDescription(recyclerListView, 0, new Class[]{DialogCell.class}, Theme.dialogs_countTextPaint, null, null, Theme.key_chats_unreadCounterText)); arrayList.add(new ThemeDescription(recyclerListView, 0, new Class[]{DialogCell.class, ProfileSearchCell.class}, null, new Drawable[]{Theme.dialogs_lockDrawable}, null, Theme.key_chats_secretIcon)); - arrayList.add(new ThemeDescription(recyclerListView, 0, new Class[]{DialogCell.class, ProfileSearchCell.class}, null, new Drawable[]{Theme.dialogs_groupDrawable, Theme.dialogs_broadcastDrawable, Theme.dialogs_botDrawable}, null, Theme.key_chats_nameIcon)); arrayList.add(new ThemeDescription(recyclerListView, 0, new Class[]{DialogCell.class, ProfileSearchCell.class}, null, new Drawable[]{Theme.dialogs_scamDrawable, Theme.dialogs_fakeDrawable}, null, Theme.key_chats_draft)); arrayList.add(new ThemeDescription(recyclerListView, 0, new Class[]{DialogCell.class}, null, new Drawable[]{Theme.dialogs_pinnedDrawable, Theme.dialogs_reorderDrawable}, null, Theme.key_chats_pinnedIcon)); arrayList.add(new ThemeDescription(recyclerListView, 0, new Class[]{DialogCell.class, ProfileSearchCell.class}, null, new Paint[]{Theme.dialogs_namePaint[0], Theme.dialogs_namePaint[1], Theme.dialogs_searchNamePaint}, null, null, Theme.key_chats_name)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/FiltersSetupActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/FiltersSetupActivity.java index ad9cfb83a..0426b01a1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/FiltersSetupActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/FiltersSetupActivity.java @@ -16,10 +16,17 @@ import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLog; @@ -27,6 +34,7 @@ import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; +import org.telegram.messenger.Utilities; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.AlertDialog; @@ -38,17 +46,13 @@ import org.telegram.ui.Cells.HeaderCell; import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Components.CombinedDrawable; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.Components.ProgressButton; import org.telegram.ui.Components.RLottieImageView; import org.telegram.ui.Components.RecyclerListView; import java.util.ArrayList; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.ItemTouchHelper; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class FiltersSetupActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { private RecyclerListView listView; @@ -56,6 +60,7 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe private ItemTouchHelper itemTouchHelper; private boolean orderChanged; + private boolean showAllChats; private int filterHelpRow; private int recommendedHeaderRow; @@ -195,6 +200,14 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe canvas.drawLine(0, getHeight() - 1, getWidth() - getPaddingRight(), getHeight() - 1, Theme.dividerPaint); } } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setEnabled(true); + info.setText(addButton.getText()); + info.setClassName("android.widget.Button"); + } } @SuppressWarnings("FieldCanBeLocal") @@ -210,6 +223,7 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe imageView.setAnimation(R.raw.filters, 90, 90); imageView.setScaleType(ImageView.ScaleType.CENTER); imageView.playAnimation(); + imageView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); addView(imageView, LayoutHelper.createFrame(90, 90, Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 14, 0, 0)); imageView.setOnClickListener(v -> { if (!imageView.isPlaying()) { @@ -234,13 +248,14 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe public static class FilterCell extends FrameLayout { - private TextView textView; + private SimpleTextView textView; private TextView valueTextView; @SuppressWarnings("FieldCanBeLocal") private ImageView moveImageView; @SuppressWarnings("FieldCanBeLocal") private ImageView optionsImageView; private boolean needDivider; + float progressToLock; private MessagesController.DialogFilter currentFilter; @@ -257,14 +272,14 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe moveImageView.setClickable(true); addView(moveImageView, LayoutHelper.createFrame(48, 48, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL, 6, 0, 6, 0)); - textView = new TextView(context); + textView = new SimpleTextView(context); textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - textView.setLines(1); + textView.setTextSize(16); textView.setMaxLines(1); - textView.setSingleLine(true); textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); - textView.setEllipsize(TextUtils.TruncateAt.END); + Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.other_lockedfolders2); + drawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_stickers_menu), PorterDuff.Mode.MULTIPLY)); + textView.setRightDrawable(drawable); addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 80 : 64, 14, LocaleController.isRTL ? 64 : 80, 0)); valueTextView = new TextView(context); @@ -295,10 +310,13 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe } public void setFilter(MessagesController.DialogFilter filter, boolean divider) { + int oldId = currentFilter == null ? -1 : currentFilter.id; currentFilter = filter; + int newId = currentFilter == null ? -1 : currentFilter.id; + boolean animated = oldId != newId; StringBuilder info = new StringBuilder(); - if ((filter.flags & MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) == MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) { + if (filter.isDefault() || (filter.flags & MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) == MessagesController.DIALOG_FILTER_FLAG_ALL_CHATS) { info.append(LocaleController.getString("FilterAllChats", R.string.FilterAllChats)); } else { if ((filter.flags & MessagesController.DIALOG_FILTER_FLAG_CONTACTS) != 0) { @@ -342,10 +360,24 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe info.append(LocaleController.getString("FilterNoChats", R.string.FilterNoChats)); } - textView.setText(Emoji.replaceEmoji(filter.name, textView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(20), false)); + String name = filter.name; + if (filter.isDefault()) { + name = LocaleController.getString("FilterAllChats", R.string.FilterAllChats); + } + if (!animated) { + progressToLock = currentFilter.locked ? 1f : 0; + } + textView.setText(Emoji.replaceEmoji(name, textView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(20), false)); + valueTextView.setText(info); - //valueTextView.setVisibility(VISIBLE); needDivider = divider; + + if (filter.isDefault()) { + optionsImageView.setVisibility(View.GONE); + } else { + optionsImageView.setVisibility(View.VISIBLE); + } + invalidate(); } public MessagesController.DialogFilter getCurrentFilter() { @@ -361,6 +393,18 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe if (needDivider) { canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(62), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(62) : 0), getMeasuredHeight() - 1, Theme.dividerPaint); } + if (currentFilter != null) { + if (currentFilter.locked && progressToLock != 1f) { + progressToLock += 16 / 150f; + invalidate(); + } else if (!currentFilter.locked && progressToLock != 0) { + progressToLock -= 16 / 150f; + invalidate(); + } + } + progressToLock = Utilities.clamp(progressToLock, 1f, 0f); + textView.setRightDrawableScale(progressToLock); + textView.invalidate(); } @SuppressLint("ClickableViewAccessibility") @@ -391,6 +435,12 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe rowCount = 0; filterHelpRow = rowCount++; int count = getMessagesController().dialogFilters.size(); + if (!getUserConfig().isPremium()) { + count--; + showAllChats = false; + } else { + showAllChats = true; + } if (!suggestedFilters.isEmpty() && count < 10) { recommendedHeaderRow = rowCount++; recommendedStartRow = rowCount; @@ -409,7 +459,7 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe filtersStartRow = -1; filtersEndRow = -1; } - if (count < 10) { + if (count < getMessagesController().dialogFiltersLimitPremium) { createFilterRow = rowCount++; } else { createFilterRow = -1; @@ -432,7 +482,7 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe ArrayList filters = getMessagesController().dialogFilters; for (int a = 0, N = filters.size(); a < N; a++) { MessagesController.DialogFilter filter = filters.get(a); - req.order.add(filters.get(a).id); + req.order.add(filter.id); } getConnectionsManager().sendRequest(req, (response, error) -> { @@ -459,7 +509,17 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe FrameLayout frameLayout = (FrameLayout) fragmentView; frameLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); - listView = new RecyclerListView(context); + listView = new RecyclerListView(context) { + @Override + public boolean onTouchEvent(MotionEvent e) { + if (e.getAction() == MotionEvent.ACTION_UP || e.getAction() == MotionEvent.ACTION_CANCEL) { + AndroidUtilities.runOnUIThread(() -> { + getMessagesController().lockFiltersInternal(); + }, 250); + } + return super.onTouchEvent(e); + } + }; ((DefaultItemAnimator) listView.getItemAnimator()).setDelayAnimations(false); listView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)); listView.setVerticalScrollBarEnabled(false); @@ -469,9 +529,25 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe listView.setAdapter(adapter = new ListAdapter(context)); listView.setOnItemClickListener((view, position, x, y) -> { if (position >= filtersStartRow && position < filtersEndRow) { - presentFragment(new FilterCreateActivity(getMessagesController().dialogFilters.get(position - filtersStartRow))); + int filterPosition = position - filtersStartRow; + if (!showAllChats) { + filterPosition++; + } + if (getMessagesController().dialogFilters.get(filterPosition).isDefault()) { + return; + } + MessagesController.DialogFilter filter = getMessagesController().dialogFilters.get(filterPosition); + if (filter.locked) { + showDialog(new LimitReachedBottomSheet(this, context, LimitReachedBottomSheet.TYPE_FOLDERS, currentAccount)); + } else { + presentFragment(new FilterCreateActivity(getMessagesController().dialogFilters.get(filterPosition))); + } } else if (position == createFilterRow) { - presentFragment(new FilterCreateActivity()); + if ((getMessagesController().dialogFilters.size() - 1 >= getMessagesController().dialogFiltersLimitDefault && !getUserConfig().isPremium()) || getMessagesController().dialogFilters.size() >= getMessagesController().dialogFiltersLimitPremium) { + showDialog(new LimitReachedBottomSheet(this, context, LimitReachedBottomSheet.TYPE_FOLDERS, currentAccount)); + } else { + presentFragment(new FilterCreateActivity()); + } } }); @@ -492,7 +568,13 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe if (ignoreUpdates) { return; } - updateRows(true); + int rowCount = this.rowCount; + updateRows(false); + if (rowCount != this.rowCount) { + adapter.notifyDataSetChanged(); + } else { + adapter.notifyItemRangeChanged(0, rowCount); + } } else if (id == NotificationCenter.suggestedFiltersLoaded) { updateRows(true); } @@ -555,7 +637,11 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe }; builder1.setItems(items, icons, (dialog, which) -> { if (which == 0) { - presentFragment(new FilterCreateActivity(filter)); + if (filter.locked) { + showDialog(new LimitReachedBottomSheet(FiltersSetupActivity.this, mContext, LimitReachedBottomSheet.TYPE_FOLDERS, currentAccount)); + } else { + presentFragment(new FilterCreateActivity(filter)); + } } else if (which == 1) { AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setTitle(LocaleController.getString("FilterDelete", R.string.FilterDelete)); @@ -583,6 +669,9 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe if (idx >= 0) { idx += filtersStartRow; } + if (!showAllChats) { + idx--; + } ignoreUpdates = true; getMessagesController().removeFilter(filter); getMessagesStorage().deleteDialogFilter(filter); @@ -731,7 +820,11 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe } case 2: { FilterCell filterCell = (FilterCell) holder.itemView; - filterCell.setFilter(getMessagesController().dialogFilters.get(position - filtersStartRow), true); + int filterPosition = position - filtersStartRow; + if (!showAllChats) { + filterPosition++; + } + filterCell.setFilter(getMessagesController().dialogFilters.get(filterPosition), true); break; } case 3: { @@ -785,6 +878,12 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe int idx1 = fromIndex - filtersStartRow; int idx2 = toIndex - filtersStartRow; int count = filtersEndRow - filtersStartRow; + if (!showAllChats) { + idx1++; + idx2++; + count++; + } + if (idx1 < 0 || idx2 < 0 || idx1 >= count || idx2 >= count) { return; } @@ -810,7 +909,8 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { - if (viewHolder.getItemViewType() != 2) { + boolean canMove = getUserConfig().isPremium() || !((viewHolder.itemView instanceof FilterCell) && ((FilterCell) viewHolder.itemView).currentFilter.isDefault()); + if (viewHolder.getItemViewType() != 2 || !canMove) { return makeMovementFlags(0, 0); } return makeMovementFlags(ItemTouchHelper.UP | ItemTouchHelper.DOWN, 0); @@ -818,7 +918,8 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) { - if (source.getItemViewType() != target.getItemViewType()) { + boolean canMove = getUserConfig().isPremium() || !((target.itemView instanceof FilterCell) && ((FilterCell) target.itemView).currentFilter.isDefault()); + if (source.getItemViewType() != target.getItemViewType() || !canMove) { return false; } adapter.swapElements(source.getAdapterPosition(), target.getAdapterPosition()); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GLIconSettingsView.java b/TMessagesProj/src/main/java/org/telegram/ui/GLIconSettingsView.java new file mode 100644 index 000000000..a52dfefe7 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/GLIconSettingsView.java @@ -0,0 +1,236 @@ +package org.telegram.ui; + +import android.content.Context; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; +import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.ColorPicker; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.GLIcon.GLIconRenderer; +import org.telegram.ui.Components.SeekBarView; + +public class GLIconSettingsView extends LinearLayout { + + public static float smallStarsSize = 1f; + + public GLIconSettingsView(Context context, GLIconRenderer mRenderer) { + super(context); + setOrientation(VERTICAL); + + TextView saturationTextView = new TextView(context); + saturationTextView.setText("Spectral top "); + saturationTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlue2)); + saturationTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + saturationTextView.setLines(1); + saturationTextView.setMaxLines(1); + saturationTextView.setSingleLine(true); + saturationTextView.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP); + addView(saturationTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, 21, 13, 21, 0)); + + SeekBarView seekBar = new SeekBarView(context); + seekBar.setDelegate(new SeekBarView.SeekBarViewDelegate() { + @Override + public void onSeekBarDrag(boolean stop, float progress) { + mRenderer.star.spec1 = 2 * progress; + } + + @Override + public void onSeekBarPressed(boolean pressed) { + + } + }); + seekBar.setProgress(mRenderer.star.spec1 / 2); + seekBar.setReportChanges(true); + addView(seekBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, 0, 5, 4, 5, 0)); + + + saturationTextView = new TextView(context); + saturationTextView.setText("Spectral bottom "); + saturationTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlue2)); + saturationTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + saturationTextView.setLines(1); + saturationTextView.setMaxLines(1); + saturationTextView.setSingleLine(true); + saturationTextView.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP); + addView(saturationTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, 21, 13, 21, 0)); + + seekBar = new SeekBarView(context); + seekBar.setDelegate(new SeekBarView.SeekBarViewDelegate() { + @Override + public void onSeekBarDrag(boolean stop, float progress) { + mRenderer.star.spec2 = 2 * progress; + } + + @Override + public void onSeekBarPressed(boolean pressed) { + + } + }); + seekBar.setProgress(mRenderer.star.spec2 / 2); + seekBar.setReportChanges(true); + addView(seekBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, 0, 5, 4, 5, 0)); + + + saturationTextView = new TextView(context); + saturationTextView.setText("Setup spec color"); + saturationTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + saturationTextView.setLines(1); + saturationTextView.setGravity(Gravity.CENTER); + saturationTextView.setMaxLines(1); + saturationTextView.setSingleLine(true); + saturationTextView.setTextColor(Theme.getColor((Theme.key_featuredStickers_buttonText))); + saturationTextView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.getColor(Theme.key_featuredStickers_addButton), 4)); + saturationTextView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + ColorPicker colorPicker = new ColorPicker(context, false, new ColorPicker.ColorPickerDelegate() { + + @Override + public void setColor(int color, int num, boolean applyNow) { + mRenderer.star.specColor = color; + } + }) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(300), MeasureSpec.EXACTLY)); + } + }; + colorPicker.setColor(mRenderer.star.specColor, 0); + colorPicker.setType(-1, true, 1, 1, false, 0, false); + BottomSheet bottomSheet = new BottomSheet(context, false); + bottomSheet.setCustomView(colorPicker); + bottomSheet.setDimBehind(false); + bottomSheet.show(); + } + }); + addView(saturationTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.CENTER_VERTICAL, 16, 0, 16, 0)); + + + saturationTextView = new TextView(context); + saturationTextView.setText("Diffuse "); + saturationTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlue2)); + saturationTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + saturationTextView.setLines(1); + saturationTextView.setMaxLines(1); + saturationTextView.setSingleLine(true); + saturationTextView.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP); + addView(saturationTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, 21, 13, 21, 0)); + + seekBar = new SeekBarView(context); + seekBar.setDelegate(new SeekBarView.SeekBarViewDelegate() { + @Override + public void onSeekBarDrag(boolean stop, float progress) { + mRenderer.star.diffuse = progress; + } + + @Override + public void onSeekBarPressed(boolean pressed) { + + } + }); + seekBar.setProgress(mRenderer.star.diffuse); + seekBar.setReportChanges(true); + addView(seekBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, 0, 5, 4, 5, 0)); + + saturationTextView = new TextView(context); + saturationTextView.setText("Normal map spectral"); + saturationTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlue2)); + saturationTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + saturationTextView.setLines(1); + saturationTextView.setMaxLines(1); + saturationTextView.setSingleLine(true); + saturationTextView.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP); + addView(saturationTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, 21, 13, 21, 0)); + + seekBar = new SeekBarView(context); + seekBar.setDelegate(new SeekBarView.SeekBarViewDelegate() { + @Override + public void onSeekBarDrag(boolean stop, float progress) { + mRenderer.star.normalSpec = 2 * progress; + } + + @Override + public void onSeekBarPressed(boolean pressed) { + + } + }); + seekBar.setProgress(mRenderer.star.normalSpec / 2); + seekBar.setReportChanges(true); + addView(seekBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, 0, 5, 4, 5, 0)); + + + saturationTextView = new TextView(context); + saturationTextView.setText("Setup normal spec color"); + saturationTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + saturationTextView.setLines(1); + saturationTextView.setGravity(Gravity.CENTER); + saturationTextView.setMaxLines(1); + saturationTextView.setSingleLine(true); + saturationTextView.setTextColor(Theme.getColor((Theme.key_featuredStickers_buttonText))); + saturationTextView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.getColor(Theme.key_featuredStickers_addButton), 4)); + // addView(saturationTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, 21, 13, 21, 0)); + saturationTextView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + ColorPicker colorPicker = new ColorPicker(context, false, new ColorPicker.ColorPickerDelegate() { + + @Override + public void setColor(int color, int num, boolean applyNow) { + if (num == 0) { + mRenderer.star.normalSpecColor = color; + } + } + }) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(300), MeasureSpec.EXACTLY)); + } + }; + colorPicker.setColor(mRenderer.star.normalSpecColor, 0); + colorPicker.setType(-1, true, 1, 1, false, 0, false); + BottomSheet bottomSheet = new BottomSheet(context, false); + bottomSheet.setCustomView(colorPicker); + bottomSheet.setDimBehind(false); + bottomSheet.show(); + } + }); + addView(saturationTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.CENTER_VERTICAL, 16, 0, 16, 0)); + + + + saturationTextView = new TextView(context); + saturationTextView.setText("Small starts size"); + saturationTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlue2)); + saturationTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + saturationTextView.setLines(1); + saturationTextView.setMaxLines(1); + saturationTextView.setSingleLine(true); + saturationTextView.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP); + addView(saturationTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, 21, 13, 21, 0)); + + seekBar = new SeekBarView(context); + seekBar.setDelegate(new SeekBarView.SeekBarViewDelegate() { + @Override + public void onSeekBarDrag(boolean stop, float progress) { + smallStarsSize = progress * 2; + } + + @Override + public void onSeekBarPressed(boolean pressed) { + + } + }); + seekBar.setProgress(smallStarsSize / 2); + seekBar.setReportChanges(true); + addView(seekBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, 0, 5, 4, 5, 0)); + + } + +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCallActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCallActivity.java index 8c38f5448..306aca57e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCallActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCallActivity.java @@ -43,6 +43,7 @@ import android.text.InputType; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.TextWatcher; +import android.util.Log; import android.util.Property; import android.util.TypedValue; import android.view.Gravity; @@ -381,6 +382,8 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter private HashMap buttonsAnimationParamsY = new HashMap<>(); boolean animateButtonsOnNextLayout; + private Runnable onUserLeaveHintListener = this::onUserLeaveHint; + private Runnable updateSchedeulRunnable = new Runnable() { @Override public void run() { @@ -1061,6 +1064,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter @Override public void dismiss() { + parentActivity.removeOnUserLeaveHintListener(onUserLeaveHintListener); parentActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); groupCallUiVisible = false; if (groupVoipInviteAlert != null) { @@ -1260,7 +1264,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter if (child instanceof ActionBarMenuSubItem && child.getTag() != null && (Integer) child.getTag() == 10) { ((ActionBarMenuSubItem) child).setTextAndIcon( TextUtils.isEmpty(participant.about) ? LocaleController.getString("VoipAddDescription", R.string.VoipAddDescription) : LocaleController.getString("VoipEditDescription", R.string.VoipEditDescription), - TextUtils.isEmpty(participant.about) ? R.drawable.msg_addbio : R.drawable.msg_bio + TextUtils.isEmpty(participant.about) ? R.drawable.msg_addbio : R.drawable.msg_info ); } } @@ -1301,7 +1305,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter if (child instanceof ActionBarMenuSubItem && child.getTag() != null && (Integer) child.getTag() == 10) { ((ActionBarMenuSubItem) child).setTextAndIcon( TextUtils.isEmpty(participant.about) ? LocaleController.getString("VoipAddBio", R.string.VoipAddBio) : LocaleController.getString("VoipEditBio", R.string.VoipEditBio), - TextUtils.isEmpty(participant.about) ? R.drawable.msg_addbio : R.drawable.msg_bio + TextUtils.isEmpty(participant.about) ? R.drawable.msg_addbio : R.drawable.msg_info ); } } @@ -1738,6 +1742,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter return true; } }); + drawDoubleNavigationBar = true; drawNavigationBar = true; if (Build.VERSION.SDK_INT >= 30) { getWindow().setNavigationBarColor(0xff000000); @@ -1758,7 +1763,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter BaseFragment fragment = parentActivity.getActionBarLayout().fragmentsStack.get(parentActivity.getActionBarLayout().fragmentsStack.size() - 1); if (anyEnterEventSent) { if (fragment instanceof ChatActivity) { - ((ChatActivity) fragment).onEditTextDialogClose(true); + ((ChatActivity) fragment).onEditTextDialogClose(true, true); } } }); @@ -2165,6 +2170,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter BottomSheet bottomSheet = builder.create(); bottomSheet.setBackgroundColor(Theme.getColor(Theme.key_voipgroup_listViewBackgroundUnscrolled)); + bottomSheet.fixNavigationBar(Theme.getColor(Theme.key_voipgroup_listViewBackgroundUnscrolled)); int selectedPosition; if (service.getCurrentAudioRoute() == VoIPService.AUDIO_ROUTE_SPEAKER) { selectedPosition = 0; @@ -2180,6 +2186,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter int color; if (i == selectedPosition) { color = Theme.getColor(Theme.key_voipgroup_listeningText); + cell.isSelected = true; } else { color = Theme.getColor(Theme.key_voipgroup_nameText); } @@ -6056,6 +6063,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter } ObjectAnimator subtitleYAnimator; + ObjectAnimator additionalSubtitleYAnimator; public void invalidateActionBarAlpha() { actionBar.setAlpha((actionBar.getTag() != null ? 1f : 0f) * (1f - renderersContainer.progressToFullscreenMode)); @@ -6097,7 +6105,6 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter .setInterpolator(CubicBezierInterpolator.DEFAULT) .start(); - if (subtitleYAnimator != null) { subtitleYAnimator.removeAllListeners(); subtitleYAnimator.cancel(); @@ -6114,11 +6121,13 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter }); subtitleYAnimator.start(); - actionBar.getAdditionalSubtitleTextView().animate() - .translationY(show ? 0.0f : AndroidUtilities.dp(20)) - .setDuration(300) - .setInterpolator(CubicBezierInterpolator.DEFAULT) - .start(); + if (additionalSubtitleYAnimator != null) { + additionalSubtitleYAnimator.cancel(); + } + additionalSubtitleYAnimator = ObjectAnimator.ofFloat(actionBar.getAdditionalSubtitleTextView(), View.TRANSLATION_Y, show ? 0.0f : AndroidUtilities.dp(20)); + additionalSubtitleYAnimator.setDuration(300); + additionalSubtitleYAnimator.setInterpolator(CubicBezierInterpolator.DEFAULT); + additionalSubtitleYAnimator.start(); actionBarAnimation = new AnimatorSet(); actionBarAnimation.setDuration(140); @@ -7312,7 +7321,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter } else { items.add(TextUtils.isEmpty(participant.about) ? LocaleController.getString("VoipAddDescription", R.string.VoipAddDescription) : LocaleController.getString("VoipEditDescription", R.string.VoipEditDescription)); } - icons.add(TextUtils.isEmpty(participant.about) ? R.drawable.msg_addbio : R.drawable.msg_bio); + icons.add(TextUtils.isEmpty(participant.about) ? R.drawable.msg_addbio : R.drawable.msg_info); options.add(10); items.add(peerId > 0 ? LocaleController.getString("VoipEditName", R.string.VoipEditName) : LocaleController.getString("VoipEditTitle", R.string.VoipEditTitle)); @@ -7946,7 +7955,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter if (ChatObject.isChannel(currentChat) && !currentChat.megagroup && !TextUtils.isEmpty(currentChat.username)) { textCell.setTextAndIcon(LocaleController.getString("VoipGroupShareLink", R.string.VoipGroupShareLink), R.drawable.msg_link, false); } else { - textCell.setTextAndIcon(LocaleController.getString("VoipGroupInviteMember", R.string.VoipGroupInviteMember), R.drawable.actions_addmember2, false); + textCell.setTextAndIcon(LocaleController.getString("VoipGroupInviteMember", R.string.VoipGroupInviteMember), R.drawable.msg_contact_add, false); } break; case VIEW_TYPE_PARTICIPANT: { @@ -8383,8 +8392,8 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter } if (small != null && avatar != null) { - File destFile = FileLoader.getPathToAttach(small, true); - File src = FileLoader.getPathToAttach(avatar, true); + File destFile = FileLoader.getInstance(currentAccount).getPathToAttach(small, true); + File src = FileLoader.getInstance(currentAccount).getPathToAttach(avatar, true); src.renameTo(destFile); String oldKey = avatar.volume_id + "_" + avatar.local_id + "@50_50"; String newKey = small.location.volume_id + "_" + small.location.local_id + "@50_50"; @@ -8392,12 +8401,12 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter } if (big != null && avatarBig != null) { - File destFile = FileLoader.getPathToAttach(big, true); - File src = FileLoader.getPathToAttach(avatarBig, true); + File destFile = FileLoader.getInstance(currentAccount).getPathToAttach(big, true); + File src = FileLoader.getInstance(currentAccount).getPathToAttach(avatarBig, true); src.renameTo(destFile); } if (videoSize != null && videoPath != null) { - File destFile = FileLoader.getPathToAttach(videoSize, "mp4", true); + File destFile = FileLoader.getInstance(currentAccount).getPathToAttach(videoSize, "mp4", true); File src = new File(videoPath); src.renameTo(destFile); } @@ -8608,6 +8617,20 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter return !renderersContainer.inFullscreenMode; } + private void onUserLeaveHint() { + if (isRtmpStream() && AndroidUtilities.checkInlinePermissions(parentActivity) && !RTMPStreamPipOverlay.isVisible()) { + dismiss(); + AndroidUtilities.runOnUIThread(RTMPStreamPipOverlay::show, 100); + } + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + parentActivity.addOnUserLeaveHintListener(onUserLeaveHintListener); + } + public void onResume() { paused = false; listAdapter.notifyDataSetChanged(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index 7ade9b793..bfdb49ca2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -23,11 +23,6 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; -import androidx.annotation.Keep; -import androidx.collection.LongSparseArray; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import android.text.Editable; import android.text.InputType; import android.text.SpannableStringBuilder; @@ -51,24 +46,29 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ScrollView; +import androidx.annotation.Keep; +import androidx.collection.LongSparseArray; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.ContactsController; import org.telegram.messenger.DialogObject; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MessagesController; +import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; import org.telegram.messenger.UserObject; import org.telegram.messenger.Utilities; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; -import org.telegram.messenger.MessagesController; -import org.telegram.messenger.NotificationCenter; -import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.BackDrawable; -import org.telegram.ui.ActionBar.Theme; -import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; import org.telegram.ui.Adapters.SearchAdapterHelper; import org.telegram.ui.Cells.CheckBoxCell; @@ -79,14 +79,14 @@ import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.CombinedDrawable; import org.telegram.ui.Components.EditTextBoldCursor; import org.telegram.ui.Components.FlickerLoadingView; -import org.telegram.ui.Components.PermanentLinkBottomSheet; -import org.telegram.ui.Components.StickerEmptyView; -import org.telegram.ui.Components.VerticalPositionAutoAnimator; import org.telegram.ui.Components.GroupCreateDividerItemDecoration; import org.telegram.ui.Components.GroupCreateSpan; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.PermanentLinkBottomSheet; import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.Components.StickerEmptyView; import org.telegram.ui.Components.TypefaceSpan; +import org.telegram.ui.Components.VerticalPositionAutoAnimator; import java.util.ArrayList; import java.util.Collections; @@ -1415,9 +1415,9 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen case 2: { TextCell textCell = (TextCell) holder.itemView; if (inviteViaLink == 2) { - textCell.setTextAndIcon(LocaleController.getString("ChannelInviteViaLink", R.string.ChannelInviteViaLink), R.drawable.profile_link, false); + textCell.setTextAndIcon(LocaleController.getString("ChannelInviteViaLink", R.string.ChannelInviteViaLink), R.drawable.msg_link2, false); } else { - textCell.setTextAndIcon(LocaleController.getString("InviteToGroupByLink", R.string.InviteToGroupByLink), R.drawable.profile_link, false); + textCell.setTextAndIcon(LocaleController.getString("InviteToGroupByLink", R.string.InviteToGroupByLink), R.drawable.msg_link2, false); } break; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupStickersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupStickersActivity.java index 0c050860f..38018242d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupStickersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupStickersActivity.java @@ -8,36 +8,26 @@ package org.telegram.ui; -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; +import android.annotation.SuppressLint; import android.content.Context; -import android.content.SharedPreferences; -import android.graphics.Canvas; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; -import android.graphics.Rect; -import android.net.Uri; -import android.text.Editable; -import android.text.InputType; import android.text.SpannableStringBuilder; import android.text.Spanned; -import android.text.TextWatcher; -import android.util.TypedValue; -import android.view.Gravity; +import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; -import android.view.inputmethod.EditorInfo; +import android.widget.EditText; import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.MediaDataController; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; import org.telegram.messenger.NotificationCenter; @@ -55,58 +45,46 @@ import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Cells.StickerSetCell; import org.telegram.ui.Cells.TextInfoPrivacyCell; import org.telegram.ui.Cells.TextSettingsCell; -import org.telegram.ui.Components.ContextProgressView; -import org.telegram.ui.Components.EditTextBoldCursor; +import org.telegram.ui.Components.FlickerLoadingView; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.Components.StickerEmptyView; import org.telegram.ui.Components.StickersAlert; import org.telegram.ui.Components.URLSpanNoUnderline; +import org.telegram.ui.Components.VerticalPositionAutoAnimator; import java.util.ArrayList; import java.util.List; - -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; +import java.util.Locale; +import java.util.Objects; public class GroupStickersActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + private FrameLayout emptyFrameView; + private StickerEmptyView emptyView; + private FlickerLoadingView loadingView; + private RecyclerListView listView; private ListAdapter listAdapter; - private ActionBarMenuItem doneItem; - private ContextProgressView progressView; - private AnimatorSet doneItemAnimation; - private LinearLayout nameContainer; - private EditTextBoldCursor editText; - private EditTextBoldCursor usernameTextView; + private SearchAdapter searchAdapter; private LinearLayoutManager layoutManager; - private ImageView eraseImageView; - private Runnable queryRunnable; - - private boolean searchWas; - private boolean searching; - - private boolean ignoreTextChanges; - - private int reqId; + private int selectedStickerSetIndex = -1; private TLRPC.TL_messages_stickerSet selectedStickerSet; + private boolean removeStickerSet; private TLRPC.ChatFull info; private long chatId; - private boolean donePressed; - - private int nameRow; private int infoRow; - private int selectedStickerRow; private int headerRow; private int stickersStartRow; private int stickersEndRow; - private int stickersShadowRow; private int rowCount; - private final static int done_button = 1; + private ActionBarMenuItem searchItem; + private boolean searching; public GroupStickersActivity(long id) { super(); @@ -130,6 +108,10 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.stickersDidLoad); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.chatInfoDidLoad); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.groupStickersDidLoad); + + if (selectedStickerSet != null || removeStickerSet) { + saveStickerSet(); + } } @Override @@ -142,218 +124,198 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC public void onItemClick(int id) { if (id == -1) { finishFragment(); - } else if (id == done_button) { - if (donePressed) { - return; - } - donePressed = true; - if (searching) { - showEditDoneProgress(true); - return; - } - saveStickerSet(); } } }); ActionBarMenu menu = actionBar.createMenu(); - doneItem = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); - progressView = new ContextProgressView(context, 1); - progressView.setAlpha(0.0f); - progressView.setScaleX(0.1f); - progressView.setScaleY(0.1f); - progressView.setVisibility(View.INVISIBLE); - doneItem.addView(progressView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); - - nameContainer = new LinearLayout(context) { + searchItem = menu.addItem(0, R.drawable.ic_ab_search); + searchItem.setIsSearchField(true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() { @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(42), MeasureSpec.EXACTLY)); - } + public void onSearchExpand() {} @Override - protected void onDraw(Canvas canvas) { - if (selectedStickerSet != null) { - canvas.drawLine(0, getHeight() - 1, getWidth(), getHeight() - 1, Theme.dividerPaint); + public void onSearchCollapse() { + if (searching) { + searchAdapter.onSearchStickers(null); + searching = false; + listView.setAdapter(listAdapter); } } - }; - nameContainer.setWeightSum(1.0f); - nameContainer.setWillNotDraw(false); - nameContainer.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); - nameContainer.setOrientation(LinearLayout.HORIZONTAL); - nameContainer.setPadding(AndroidUtilities.dp(17), 0, AndroidUtilities.dp(14), 0); - - editText = new EditTextBoldCursor(context); - editText.setText(MessagesController.getInstance(currentAccount).linkPrefix + "/addstickers/"); - editText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17); - editText.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - editText.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - editText.setMaxLines(1); - editText.setLines(1); - editText.setEnabled(false); - editText.setFocusable(false); - editText.setBackgroundDrawable(null); - editText.setPadding(0, 0, 0, 0); - editText.setGravity(Gravity.CENTER_VERTICAL); - editText.setSingleLine(true); - editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); - editText.setImeOptions(EditorInfo.IME_ACTION_DONE); - nameContainer.addView(editText, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 42)); - - usernameTextView = new EditTextBoldCursor(context); - usernameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17); - usernameTextView.setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - usernameTextView.setCursorSize(AndroidUtilities.dp(20)); - usernameTextView.setCursorWidth(1.5f); - usernameTextView.setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - usernameTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - usernameTextView.setMaxLines(1); - usernameTextView.setLines(1); - usernameTextView.setBackgroundDrawable(null); - usernameTextView.setPadding(0, 0, 0, 0); - usernameTextView.setSingleLine(true); - usernameTextView.setGravity(Gravity.CENTER_VERTICAL); - usernameTextView.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); - usernameTextView.setImeOptions(EditorInfo.IME_ACTION_DONE); - usernameTextView.setHint(LocaleController.getString("ChooseStickerSetPlaceholder", R.string.ChooseStickerSetPlaceholder)); - usernameTextView.addTextChangedListener(new TextWatcher() { - - boolean ignoreTextChange; @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { + public void onTextChanged(EditText editText) { + String text = editText.getText().toString(); + searchAdapter.onSearchStickers(text); - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (eraseImageView != null) { - eraseImageView.setVisibility(s.length() > 0 ? View.VISIBLE : View.INVISIBLE); - } - if (ignoreTextChange || ignoreTextChanges) { - return; - } - if (s.length() > 5) { - ignoreTextChange = true; - try { - Uri uri = Uri.parse(s.toString()); - if (uri != null) { - List segments = uri.getPathSegments(); - if (segments.size() == 2) { - if (segments.get(0).toLowerCase().equals("addstickers")) { - usernameTextView.setText(segments.get(1)); - usernameTextView.setSelection(usernameTextView.length()); - } - } - } - } catch (Exception ignore) { + boolean newSearching = !TextUtils.isEmpty(text); + if (newSearching != searching) { + searching = newSearching; + if (listView != null) { + listView.setAdapter(searching ? searchAdapter : listAdapter); } - ignoreTextChange = false; } - resolveStickerSet(); } }); - - nameContainer.addView(usernameTextView, LayoutHelper.createLinear(0, 42, 1.0f)); - - eraseImageView = new ImageView(context); - eraseImageView.setScaleType(ImageView.ScaleType.CENTER); - eraseImageView.setImageResource(R.drawable.ic_close_white); - eraseImageView.setPadding(AndroidUtilities.dp(16), 0, 0, 0); - eraseImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText3), PorterDuff.Mode.MULTIPLY)); - eraseImageView.setVisibility(View.INVISIBLE); - eraseImageView.setOnClickListener(v -> { - searchWas = false; - selectedStickerSet = null; - usernameTextView.setText(""); - updateRows(); - }); - nameContainer.addView(eraseImageView, LayoutHelper.createLinear(42, 42, 0.0f)); - - if (info != null && info.stickerset != null) { - ignoreTextChanges = true; - usernameTextView.setText(info.stickerset.short_name); - usernameTextView.setSelection(usernameTextView.length()); - ignoreTextChanges = false; - } + searchItem.setSearchFieldHint(LocaleController.getString(R.string.Search)); listAdapter = new ListAdapter(context); + searchAdapter = new SearchAdapter(context); fragmentView = new FrameLayout(context); FrameLayout frameLayout = (FrameLayout) fragmentView; frameLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); listView = new RecyclerListView(context); - listView.setFocusable(true); - listView.setItemAnimator(null); - listView.setLayoutAnimation(null); - layoutManager = new LinearLayoutManager(context) { - @Override - public boolean requestChildRectangleOnScreen(RecyclerView parent, View child, Rect rect, boolean immediate, boolean focusedChildVisible) { - return false; - } - - @Override - public boolean supportsPredictiveItemAnimations() { - return false; - } - }; + DefaultItemAnimator defaultItemAnimator = new DefaultItemAnimator(); + defaultItemAnimator.setSupportsChangeAnimations(true); + listView.setItemAnimator(defaultItemAnimator); + layoutManager = new LinearLayoutManager(context); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); listView.setLayoutManager(layoutManager); + emptyFrameView = new FrameLayout(context); + emptyFrameView.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + + loadingView = new FlickerLoadingView(context, getResourceProvider()); + loadingView.setViewType(FlickerLoadingView.STICKERS_TYPE); + loadingView.setIsSingleCell(true); + loadingView.setItemsCount((int) Math.ceil(AndroidUtilities.displaySize.y / AndroidUtilities.dpf2(58))); + emptyFrameView.addView(loadingView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + + emptyView = new StickerEmptyView(context, loadingView, StickerEmptyView.STICKER_TYPE_SEARCH); + VerticalPositionAutoAnimator.attach(emptyView); + + emptyFrameView.addView(emptyView); + frameLayout.addView(emptyFrameView); + emptyFrameView.setVisibility(View.GONE); + listView.setEmptyView(emptyFrameView); + frameLayout.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); listView.setAdapter(listAdapter); listView.setOnItemClickListener((view, position) -> { if (getParentActivity() == null) { return; } - if (position == selectedStickerRow) { - if (selectedStickerSet == null) { - return; + if (searching) { + if (position > searchAdapter.searchEntries.size()) { + onStickerSetClicked(view, searchAdapter.localSearchEntries.get(position - searchAdapter.searchEntries.size() - 1), false); + } else if (position != searchAdapter.searchEntries.size()) { + onStickerSetClicked(view, searchAdapter.searchEntries.get(position), true); } - showDialog(new StickersAlert(getParentActivity(), GroupStickersActivity.this, null, selectedStickerSet, null)); - } else if (position >= stickersStartRow && position < stickersEndRow) { - boolean needScroll = selectedStickerRow == -1; + return; + } + + if (position >= stickersStartRow && position < stickersEndRow) { + TLRPC.TL_messages_stickerSet stickerSet = MediaDataController.getInstance(currentAccount).getStickerSets(MediaDataController.TYPE_IMAGE).get(position - stickersStartRow); + onStickerSetClicked(view, stickerSet, false); + } + }); + listView.setOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { + if (newState == RecyclerView.SCROLL_STATE_DRAGGING) { + AndroidUtilities.hideKeyboard(getParentActivity().getCurrentFocus()); + } + } + }); + + return fragmentView; + } + + private void onStickerSetClicked(View view, TLRPC.TL_messages_stickerSet stickerSet, boolean remote) { + TLRPC.InputStickerSet inputStickerSet = null; + if (remote) { + TLRPC.TL_inputStickerSetShortName inputStickerSetShortName = new TLRPC.TL_inputStickerSetShortName(); + inputStickerSetShortName.short_name = stickerSet.set.short_name; + inputStickerSet = inputStickerSetShortName; + } + StickersAlert stickersAlert = new StickersAlert(getParentActivity(), GroupStickersActivity.this, inputStickerSet, !remote ? stickerSet : null, null); + boolean isSelected = ((StickerSetCell) view).isChecked(); + stickersAlert.setCustomButtonDelegate(new StickersAlert.StickersAlertCustomButtonDelegate() { + @Override + public String getCustomButtonTextColorKey() { + return isSelected ? Theme.key_dialogTextRed : Theme.key_featuredStickers_buttonText; + } + + @Override + public String getCustomButtonRippleColorKey() { + return !isSelected ? Theme.key_featuredStickers_addButtonPressed : null; + } + + @Override + public String getCustomButtonColorKey() { + return !isSelected ? Theme.key_featuredStickers_addButton : null; + } + + @Override + public String getCustomButtonText() { + return LocaleController.getString(isSelected ? R.string.RemoveGroupStickerSet : R.string.SetAsGroupStickerSet); + } + + @Override + public boolean onCustomButtonPressed() { int row = layoutManager.findFirstVisibleItemPosition(); int top = Integer.MAX_VALUE; RecyclerListView.Holder holder = (RecyclerListView.Holder) listView.findViewHolderForAdapterPosition(row); if (holder != null) { top = holder.itemView.getTop(); } - selectedStickerSet = MediaDataController.getInstance(currentAccount).getStickerSets(MediaDataController.TYPE_IMAGE).get(position - stickersStartRow); - ignoreTextChanges = true; - usernameTextView.setText(selectedStickerSet.set.short_name); - usernameTextView.setSelection(usernameTextView.length()); - ignoreTextChanges = false; - AndroidUtilities.hideKeyboard(usernameTextView); - updateRows(); - if (needScroll && top != Integer.MAX_VALUE) { + int prevIndex = selectedStickerSetIndex; + if (isSelected) { + selectedStickerSet = null; + removeStickerSet = true; + } else { + selectedStickerSet = stickerSet; + removeStickerSet = false; + } + updateSelectedStickerSetIndex(); + + if (prevIndex != -1) { + boolean found = false; + if (!searching) { + for (int i = 0; i < listView.getChildCount(); i++) { + View ch = listView.getChildAt(i); + if (listView.getChildViewHolder(ch).getAdapterPosition() == stickersStartRow + prevIndex) { + ((StickerSetCell) ch).setChecked(false, true); + found = true; + break; + } + } + } + if (!found) { + listAdapter.notifyItemChanged(prevIndex); + } + } + if (selectedStickerSetIndex != -1) { + boolean found = false; + if (!searching) { + for (int i = 0; i < listView.getChildCount(); i++) { + View ch = listView.getChildAt(i); + if (listView.getChildViewHolder(ch).getAdapterPosition() == stickersStartRow + selectedStickerSetIndex) { + ((StickerSetCell) ch).setChecked(true, true); + found = true; + break; + } + } + } + if (!found) { + listAdapter.notifyItemChanged(selectedStickerSetIndex); + } + } + + if (top != Integer.MAX_VALUE) { layoutManager.scrollToPositionWithOffset(row + 1, top); } - } - }); - listView.setOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - if (newState == RecyclerView.SCROLL_STATE_DRAGGING) { - AndroidUtilities.hideKeyboard(getParentActivity().getCurrentFocus()); + if (searching) { + searchItem.setSearchFieldText("", false); + actionBar.closeSearchField(true); } - } - - @Override - public void onScrolled(RecyclerView recyclerView, int dx, int dy) { - + return true; } }); - - return fragmentView; + stickersAlert.show(); } @Override @@ -373,7 +335,7 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC } } else if (id == NotificationCenter.groupStickersDidLoad) { long setId = (Long) args[0]; - if (info != null && info.stickerset != null && info.stickerset.id == id) { + if (info != null && info.stickerset != null && info.stickerset.id == setId) { updateRows(); } } @@ -386,104 +348,16 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC } } - private void resolveStickerSet() { - if (listAdapter == null) { - return; - } - if (reqId != 0) { - ConnectionsManager.getInstance(currentAccount).cancelRequest(reqId, true); - reqId = 0; - } - if (queryRunnable != null) { - AndroidUtilities.cancelRunOnUIThread(queryRunnable); - queryRunnable = null; - } - selectedStickerSet = null; - if (usernameTextView.length() <= 0) { - searching = false; - searchWas = false; - if (selectedStickerRow != -1) { - updateRows(); - } - return; - } - searching = true; - searchWas = true; - final String query = usernameTextView.getText().toString(); - TLRPC.TL_messages_stickerSet existingSet = MediaDataController.getInstance(currentAccount).getStickerSetByName(query); - if (existingSet != null) { - selectedStickerSet = existingSet; - } - if (selectedStickerRow == -1) { - updateRows(); - } else { - listAdapter.notifyItemChanged(selectedStickerRow); - } - if (existingSet != null) { - searching = false; - return; - } - AndroidUtilities.runOnUIThread(queryRunnable = () -> { - if (queryRunnable == null) { - return; - } - TLRPC.TL_messages_getStickerSet req = new TLRPC.TL_messages_getStickerSet(); - req.stickerset = new TLRPC.TL_inputStickerSetShortName(); - req.stickerset.short_name = query; - reqId = ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { - searching = false; - if (response instanceof TLRPC.TL_messages_stickerSet) { - selectedStickerSet = (TLRPC.TL_messages_stickerSet) response; - if (donePressed) { - saveStickerSet(); - } else { - if (selectedStickerRow != -1) { - listAdapter.notifyItemChanged(selectedStickerRow); - } else { - updateRows(); - } - } - } else { - if (selectedStickerRow != -1) { - listAdapter.notifyItemChanged(selectedStickerRow); - } - if (donePressed) { - donePressed = false; - showEditDoneProgress(false); - if (getParentActivity() != null) { - Toast.makeText(getParentActivity(), LocaleController.getString("AddStickersNotFound", R.string.AddStickersNotFound), Toast.LENGTH_SHORT).show(); - } - } - } - reqId = 0; - })); - }, 500); - } - - @Override - public void onTransitionAnimationEnd(boolean isOpen, boolean backward) { - if (isOpen) { - AndroidUtilities.runOnUIThread(() -> { - if (usernameTextView != null) { - usernameTextView.requestFocus(); - AndroidUtilities.showKeyboard(usernameTextView); - } - }, 100); - } - } - private void saveStickerSet() { if (info == null || info.stickerset != null && selectedStickerSet != null && selectedStickerSet.set.id == info.stickerset.id || info.stickerset == null && selectedStickerSet == null) { - finishFragment(); return; } - showEditDoneProgress(true); TLRPC.TL_channels_setStickers req = new TLRPC.TL_channels_setStickers(); req.channel = MessagesController.getInstance(currentAccount).getInputChannel(chatId); - if (selectedStickerSet == null) { + if (removeStickerSet) { req.stickerset = new TLRPC.TL_inputStickerSetEmpty(); } else { - MessagesController.getEmojiSettings(currentAccount).edit().remove("group_hide_stickers_" + info.id).commit(); + MessagesController.getEmojiSettings(currentAccount).edit().remove("group_hide_stickers_" + info.id).apply(); req.stickerset = new TLRPC.TL_inputStickerSetID(); req.stickerset.id = selectedStickerSet.set.id; req.stickerset.access_hash = selectedStickerSet.set.access_hash; @@ -496,6 +370,8 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC info.stickerset = selectedStickerSet.set; MediaDataController.getInstance(currentAccount).putGroupStickerSet(selectedStickerSet); } + updateSelectedStickerSetIndex(); + if (info.stickerset == null) { info.flags |= 256; } else { @@ -506,110 +382,225 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC finishFragment(); } else { Toast.makeText(getParentActivity(), LocaleController.getString("ErrorOccurred", R.string.ErrorOccurred) + "\n" + error.text, Toast.LENGTH_SHORT).show(); - donePressed = false; - showEditDoneProgress(false); } })); } + private void updateSelectedStickerSetIndex() { + ArrayList stickerSets = MediaDataController.getInstance(currentAccount).getStickerSets(MediaDataController.TYPE_IMAGE); + selectedStickerSetIndex = -1; + + long selectedSet; + + if (removeStickerSet) { + selectedSet = 0; + } else if (selectedStickerSet != null) { + selectedSet = selectedStickerSet.set.id; + } else if (info != null && info.stickerset != null) { + selectedSet = info.stickerset.id; + } else { + selectedSet = 0; + } + + if (selectedSet != 0) { + for (int i = 0; i < stickerSets.size(); i++) { + TLRPC.TL_messages_stickerSet set = stickerSets.get(i); + if (set.set.id == selectedSet) { + selectedStickerSetIndex = i; + break; + } + } + } + } + + @SuppressLint("NotifyDataSetChanged") private void updateRows() { rowCount = 0; - nameRow = rowCount++; - if (selectedStickerSet != null || searchWas) { - selectedStickerRow = rowCount++; - } else { - selectedStickerRow = -1; - } - infoRow = rowCount++; ArrayList stickerSets = MediaDataController.getInstance(currentAccount).getStickerSets(MediaDataController.TYPE_IMAGE); if (!stickerSets.isEmpty()) { headerRow = rowCount++; stickersStartRow = rowCount; stickersEndRow = rowCount + stickerSets.size(); rowCount += stickerSets.size(); - stickersShadowRow = rowCount++; } else { headerRow = -1; stickersStartRow = -1; stickersEndRow = -1; - stickersShadowRow = -1; - } - if (nameContainer != null) { - nameContainer.invalidate(); } + infoRow = rowCount++; + updateSelectedStickerSetIndex(); + if (listAdapter != null) { listAdapter.notifyDataSetChanged(); } } - @Override - public void onResume() { - super.onResume(); - if (listAdapter != null) { - listAdapter.notifyDataSetChanged(); - } - SharedPreferences preferences = MessagesController.getGlobalMainSettings(); - boolean animations = preferences.getBoolean("view_animations", true); - if (!animations) { - usernameTextView.requestFocus(); - AndroidUtilities.showKeyboard(usernameTextView); - } - } + private class SearchAdapter extends RecyclerListView.SelectionAdapter { + private final static int TYPE_STICKER_SET = 0, + TYPE_MY_STICKERS_HEADER = 1; - private void showEditDoneProgress(final boolean show) { - if (doneItem == null) { - return; - } - if (doneItemAnimation != null) { - doneItemAnimation.cancel(); - } - doneItemAnimation = new AnimatorSet(); - if (show) { - progressView.setVisibility(View.VISIBLE); - doneItem.setEnabled(false); - doneItemAnimation.playTogether( - ObjectAnimator.ofFloat(doneItem.getContentView(), "scaleX", 0.1f), - ObjectAnimator.ofFloat(doneItem.getContentView(), "scaleY", 0.1f), - ObjectAnimator.ofFloat(doneItem.getContentView(), "alpha", 0.0f), - ObjectAnimator.ofFloat(progressView, "scaleX", 1.0f), - ObjectAnimator.ofFloat(progressView, "scaleY", 1.0f), - ObjectAnimator.ofFloat(progressView, "alpha", 1.0f)); - } else { - doneItem.getContentView().setVisibility(View.VISIBLE); - doneItem.setEnabled(true); - doneItemAnimation.playTogether( - ObjectAnimator.ofFloat(progressView, "scaleX", 0.1f), - ObjectAnimator.ofFloat(progressView, "scaleY", 0.1f), - ObjectAnimator.ofFloat(progressView, "alpha", 0.0f), - ObjectAnimator.ofFloat(doneItem.getContentView(), "scaleX", 1.0f), - ObjectAnimator.ofFloat(doneItem.getContentView(), "scaleY", 1.0f), - ObjectAnimator.ofFloat(doneItem.getContentView(), "alpha", 1.0f)); + private Context mContext; + private List searchEntries = new ArrayList<>(); + private List localSearchEntries = new ArrayList<>(); + private Runnable lastCallback; + private String lastQuery; + private int reqId; + + public SearchAdapter(Context context) { + mContext = context; + setHasStableIds(true); } - doneItemAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - if (doneItemAnimation != null && doneItemAnimation.equals(animation)) { - if (!show) { - progressView.setVisibility(View.INVISIBLE); - } else { - doneItem.getContentView().setVisibility(View.INVISIBLE); + + @Override + public long getItemId(int position) { + if (getItemViewType(position) == TYPE_STICKER_SET) { + List arrayList = position > searchEntries.size() ? localSearchEntries : searchEntries; + int row = position > searchEntries.size() ? position - searchEntries.size() - 1 : position; + + return arrayList.get(row).set.id; + } + return -1; + } + + @SuppressLint("NotifyDataSetChanged") + private void onSearchStickers(String query) { + if (reqId != 0) { + getConnectionsManager().cancelRequest(reqId, true); + reqId = 0; + } + + if (lastCallback != null) { + AndroidUtilities.cancelRunOnUIThread(lastCallback); + lastCallback = null; + } + lastQuery = null; + + int count = getItemCount(); + if (count > 0) { + searchEntries.clear(); + localSearchEntries.clear(); + notifyItemRangeRemoved(0, count); + } + + if (TextUtils.isEmpty(query)) { + emptyView.setVisibility(View.GONE); + emptyView.showProgress(false, true); + return; + } + + if (emptyView.getVisibility() != View.VISIBLE) { + emptyView.setVisibility(View.VISIBLE); + emptyView.showProgress(true, false); + } else { + emptyView.showProgress(true, true); + } + AndroidUtilities.runOnUIThread(lastCallback = ()-> { + lastQuery = query; + + TLRPC.TL_messages_searchStickerSets searchStickerSets = new TLRPC.TL_messages_searchStickerSets(); + searchStickerSets.q = query; + reqId = getConnectionsManager().sendRequest(searchStickerSets, (response, error) -> { + if (!Objects.equals(lastQuery, searchStickerSets.q)) { + return; } - } - } - @Override - public void onAnimationCancel(Animator animation) { - if (doneItemAnimation != null && doneItemAnimation.equals(animation)) { - doneItemAnimation = null; + if (response instanceof TLRPC.TL_messages_foundStickerSets) { + List newSearchEntries = new ArrayList<>(); + TLRPC.TL_messages_foundStickerSets foundStickerSets = (TLRPC.TL_messages_foundStickerSets) response; + for (TLRPC.StickerSetCovered stickerSetCovered : foundStickerSets.sets) { + TLRPC.TL_messages_stickerSet set = new TLRPC.TL_messages_stickerSet(); + set.set = stickerSetCovered.set; + set.documents = stickerSetCovered.covers; + newSearchEntries.add(set); + } + String lowQuery = query.toLowerCase(Locale.ROOT).trim(); + List newLocalEntries = new ArrayList<>(); + for (TLRPC.TL_messages_stickerSet localSet : MediaDataController.getInstance(currentAccount).getStickerSets(MediaDataController.TYPE_IMAGE)) { + if (localSet.set.short_name.toLowerCase(Locale.ROOT).contains(lowQuery) || localSet.set.title.toLowerCase(Locale.ROOT).contains(lowQuery)) { + newLocalEntries.add(localSet); + } + } + AndroidUtilities.runOnUIThread(()->{ + searchEntries = newSearchEntries; + localSearchEntries = newLocalEntries; + notifyDataSetChanged(); + + emptyView.title.setVisibility(View.GONE); + emptyView.subtitle.setText(LocaleController.formatString(R.string.ChooseStickerNoResultsFound, query)); + emptyView.showProgress(false, true); + }); + } + }, ConnectionsManager.RequestFlagInvokeAfter | ConnectionsManager.RequestFlagFailOnServerErrors); + }, 300); + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view; + switch (viewType) { + case TYPE_STICKER_SET: + view = new StickerSetCell(mContext, 3); + view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + break; + default: + case TYPE_MY_STICKERS_HEADER: + view = new HeaderCell(mContext, Theme.key_windowBackgroundWhiteGrayText4, 21, 0, 0, false, getResourceProvider()); + view.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + ((HeaderCell) view).setText(LocaleController.getString(R.string.ChooseStickerMyStickerSets)); + break; + } + view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT)); + return new RecyclerListView.Holder(view); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + switch (getItemViewType(position)) { + case TYPE_STICKER_SET: { + boolean local = position > searchEntries.size(); + List arrayList = local ? localSearchEntries : searchEntries; + int row = local ? position - searchEntries.size() - 1 : position; + StickerSetCell cell = (StickerSetCell) holder.itemView; + TLRPC.TL_messages_stickerSet set = arrayList.get(row); + cell.setStickersSet(set, row != arrayList.size() - 1, !local); + cell.setSearchQuery(set, lastQuery != null ? lastQuery.toLowerCase(Locale.ROOT) : "", getResourceProvider()); + long id; + if (selectedStickerSet != null) { + id = selectedStickerSet.set.id; + } else if (info != null && info.stickerset != null) { + id = info.stickerset.id; + } else { + id = 0; + } + cell.setChecked(set.set.id == id, false); + break; } } - }); - doneItemAnimation.setDuration(150); - doneItemAnimation.start(); + } + + @Override + public int getItemViewType(int position) { + return searchEntries.size() == position ? TYPE_MY_STICKERS_HEADER : TYPE_STICKER_SET; + } + + @Override + public int getItemCount() { + return searchEntries.size() + localSearchEntries.size() + (localSearchEntries.isEmpty() ? 0 : 1); + } + + @Override + public boolean isEnabled(RecyclerView.ViewHolder holder) { + int viewType = getItemViewType(holder.getAdapterPosition()); + return viewType == TYPE_STICKER_SET; + } } private class ListAdapter extends RecyclerListView.SelectionAdapter { + private final static int TYPE_STICKER_SET = 0, + TYPE_INFO = 1, + TYPE_CHOOSE_HEADER = 4; private Context mContext; @@ -625,7 +616,7 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (holder.getItemViewType()) { - case 0: { + case TYPE_STICKER_SET: { ArrayList arrayList = MediaDataController.getInstance(currentAccount).getStickerSets(MediaDataController.TYPE_IMAGE); int row = position - stickersStartRow; StickerSetCell cell = (StickerSetCell) holder.itemView; @@ -639,10 +630,10 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC } else { id = 0; } - cell.setChecked(set.set.id == id); + cell.setChecked(set.set.id == id, false); break; } - case 1: { + case TYPE_INFO: { if (position == infoRow) { String text = LocaleController.getString("ChooseStickerSetMy", R.string.ChooseStickerSetMy); String botName = "@stickers"; @@ -668,21 +659,8 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC } break; } - case 4: { - ((HeaderCell) holder.itemView).setText(LocaleController.getString("ChooseFromYourStickers", R.string.ChooseFromYourStickers)); - break; - } - case 5: { - StickerSetCell cell = (StickerSetCell) holder.itemView; - if (selectedStickerSet != null) { - cell.setStickersSet(selectedStickerSet, false); - } else { - if (searching) { - cell.setText(LocaleController.getString("Loading", R.string.Loading), null, 0, false); - } else { - cell.setText(LocaleController.getString("ChooseStickerSetNotFound", R.string.ChooseStickerSetNotFound), LocaleController.getString("ChooseStickerSetNotFoundInfo", R.string.ChooseStickerSetNotFoundInfo), R.drawable.ic_smiles2_sad, false); - } - } + case TYPE_CHOOSE_HEADER: { + ((HeaderCell) holder.itemView).setText(LocaleController.getString(R.string.ChooseStickerSetHeader)); break; } } @@ -691,30 +669,23 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC @Override public boolean isEnabled(RecyclerView.ViewHolder holder) { int type = holder.getItemViewType(); - return type == 0 || type == 2 || type == 5; + return type == TYPE_STICKER_SET; } + @NonNull @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view; switch (viewType) { - case 0: - case 5: - view = new StickerSetCell(mContext, viewType == 0 ? 3 : 2); + case TYPE_STICKER_SET: + view = new StickerSetCell(mContext, 3); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 1: + case TYPE_INFO: view = new TextInfoPrivacyCell(mContext); - view.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + view.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); break; - case 2: - view = nameContainer; - break; - case 3: - view = new ShadowSectionCell(mContext); - view.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); - break; - case 4: + case TYPE_CHOOSE_HEADER: default: view = new HeaderCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); @@ -727,19 +698,13 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC @Override public int getItemViewType(int i) { if (i >= stickersStartRow && i < stickersEndRow) { - return 0; - } else if (i == infoRow) { - return 1; - } else if (i == nameRow) { - return 2; - } else if (i == stickersShadowRow) { - return 3; + return TYPE_STICKER_SET; } else if (i == headerRow) { - return 4; - } else if (i == selectedStickerRow) { - return 5; + return TYPE_CHOOSE_HEADER; + } else if (i == infoRow) { + return TYPE_INFO; } - return 0; + return TYPE_STICKER_SET; } } @@ -760,11 +725,6 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{View.class}, Theme.dividerPaint, null, null, Theme.key_divider)); - themeDescriptions.add(new ThemeDescription(editText, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - themeDescriptions.add(new ThemeDescription(editText, ThemeDescription.FLAG_HINTTEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteHintText)); - themeDescriptions.add(new ThemeDescription(usernameTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - themeDescriptions.add(new ThemeDescription(usernameTextView, ThemeDescription.FLAG_HINTTEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteHintText)); - themeDescriptions.add(new ThemeDescription(listView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{TextInfoPrivacyCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow)); themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{TextInfoPrivacyCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText4)); themeDescriptions.add(new ThemeDescription(listView, ThemeDescription.FLAG_LINKCOLOR, new Class[]{TextInfoPrivacyCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteLinkText)); @@ -774,8 +734,6 @@ public class GroupStickersActivity extends BaseFragment implements NotificationC themeDescriptions.add(new ThemeDescription(listView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ShadowSectionCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow)); - themeDescriptions.add(new ThemeDescription(nameContainer, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_windowBackgroundWhite)); - themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{StickerSetCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{StickerSetCell.class}, new String[]{"valueTextView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText2)); themeDescriptions.add(new ThemeDescription(listView, ThemeDescription.FLAG_USEBACKGROUNDDRAWABLE | ThemeDescription.FLAG_DRAWABLESELECTEDSTATE, new Class[]{StickerSetCell.class}, new String[]{"optionsButton"}, null, null, null, Theme.key_stickers_menuSelector)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java index ee28e895c..eaaf271f9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java @@ -327,7 +327,7 @@ public class IntroActivity extends BaseFragment implements NotificationCenter.No } cellFlickerDrawable.setParentWidth(getMeasuredWidth()); AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); - cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(4)); + cellFlickerDrawable.draw(canvas, AndroidUtilities.rectTmp, AndroidUtilities.dp(4), null); invalidate(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/KeyboardHideHelper.java b/TMessagesProj/src/main/java/org/telegram/ui/KeyboardHideHelper.java new file mode 100644 index 000000000..8a4cfae65 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/KeyboardHideHelper.java @@ -0,0 +1,192 @@ +package org.telegram.ui; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.graphics.Insets; +import android.os.Build; +import android.os.CancellationSignal; +import android.util.Log; +import android.view.MotionEvent; +import android.view.VelocityTracker; +import android.view.View; +import android.view.WindowInsetsAnimationControlListener; +import android.view.WindowInsetsAnimationController; +import android.view.animation.LinearInterpolator; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.math.MathUtils; +import androidx.core.view.WindowInsetsCompat; +import androidx.recyclerview.widget.GridLayoutManagerFixed; +import androidx.recyclerview.widget.RecyclerView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.ui.ActionBar.AdjustPanLayoutHelper; +import org.telegram.ui.Components.ChatActivityEnterView; +import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.RecyclerListView; + +public class KeyboardHideHelper { + + public static boolean ENABLED = false; + + public KeyboardHideHelper() { + + } + + private View view, enterView; + private AdjustPanLayoutHelper panLayoutHelper; + private WindowInsetsAnimationController insetsController; + private boolean isKeyboard = false; + private boolean movingKeyboard = false, exactlyMovingKeyboard = false; + private boolean endingMovingKeyboard = false; + private boolean startedOutsideView = false; + private boolean startedAtBottom = false; + private VelocityTracker tracker; + private float rawT, lastT, lastDifferentT, t; + private float fromY; + private int keyboardSize, bottomNavBarSize; + + public boolean onTouch(AdjustPanLayoutHelper panLayoutHelper, View view, RecyclerListView listView, ChatActivityEnterView enterView, ChatActivity ca, MotionEvent ev) { + if (!ENABLED) { + return false; + } + this.panLayoutHelper = panLayoutHelper; + this.view = view; + this.enterView = enterView; + + if (view == null || enterView == null) { + return false; + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + boolean isKeyboardVisible = view.getRootWindowInsets().getInsets(WindowInsetsCompat.Type.ime()).bottom > 0; + if (!movingKeyboard && !isKeyboardVisible && !endingMovingKeyboard /* && !enterView.isPopupShowing()*/) { + return false; + } + boolean insideEnterView = ev.getY() >= enterView.getTop(); + if (ev.getAction() == MotionEvent.ACTION_DOWN) { + startedOutsideView = !insideEnterView; + startedAtBottom = !listView.canScrollVertically(1); + } + if (!movingKeyboard && insideEnterView && startedOutsideView && ev.getAction() == MotionEvent.ACTION_MOVE) { + movingKeyboard = true; + isKeyboard = !enterView.isPopupShowing(); + keyboardSize = ( + isKeyboard ? + view.getRootWindowInsets().getInsets(WindowInsetsCompat.Type.ime()).bottom : + enterView.getEmojiPadding() + ); + bottomNavBarSize = view.getRootWindowInsets().getInsets(WindowInsetsCompat.Type.navigationBars()).bottom; + view.getWindowInsetsController().controlWindowInsetsAnimation( + WindowInsetsCompat.Type.ime(), + -1, + new LinearInterpolator(), + new CancellationSignal(), + new WindowInsetsAnimationControlListener() { + @Override + public void onReady(@NonNull WindowInsetsAnimationController windowInsetsAnimationController, int i) { + insetsController = windowInsetsAnimationController; + } + + @Override + public void onFinished(@NonNull WindowInsetsAnimationController windowInsetsAnimationController) { + insetsController = null; + } + + @Override + public void onCancelled(@Nullable WindowInsetsAnimationController windowInsetsAnimationController) { + insetsController = null; + } + } + ); + fromY = ev.getRawY(); + exactlyMovingKeyboard = false; + panLayoutHelper.setEnabled(false); + update(0, false); + listView.stopScroll(); + t = rawT = lastT = lastDifferentT = 0; + panLayoutHelper.OnTransitionStart(true, view.getHeight()); + if (tracker == null) { + tracker = VelocityTracker.obtain(); + } + tracker.clear(); + } + + if (movingKeyboard) { + tracker.addMovement(ev); + t = MathUtils.clamp(rawT = (ev.getRawY() - fromY) / keyboardSize, 0, 1); + if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) { + movingKeyboard = false; + exactlyMovingKeyboard = false; + endingMovingKeyboard = true; + tracker.computeCurrentVelocity(1000); + final boolean end = t > .15f && t >= lastDifferentT || t > .8f; + final float endT = end ? 1 : 0; + ValueAnimator va = ValueAnimator.ofFloat(t, endT); + va.addUpdateListener(a -> { + update(t = (float) a.getAnimatedValue(), true); + }); + va.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + if (insetsController != null && isKeyboard) { + insetsController.finish(!end); + } + update(1, false); + rawT = endT; + panLayoutHelper.OnTransitionEnd(); + view.post(() -> { + panLayoutHelper.setEnabled(true); + endingMovingKeyboard = false; + }); + } + }); + va.setInterpolator(CubicBezierInterpolator.EASE_OUT); + va.setDuration(200); + va.start(); + if (end && startedAtBottom && ca != null) { + ca.scrollToLastMessage(true); + } + startedOutsideView = false; + return true; + } +// if (t > .15f && !exactlyMovingKeyboard) { +// exactlyMovingKeyboard = true; +// } +// if (exactlyMovingKeyboard) { + update(t, true); +// } + if (lastT != t) { + lastDifferentT = lastT; + } + lastT = t; + return true; + } + } + + return false; + } + + public boolean disableScrolling() { + return ENABLED && (movingKeyboard || endingMovingKeyboard) && rawT >= 0; + } + + private void update(float t, boolean withKeyboard) { + if (isKeyboard) { + float y = Math.max((1f - t) * keyboardSize - bottomNavBarSize - 1, 0); + panLayoutHelper.OnPanTranslationUpdate(y, t, true); + ((View) ((View) view.getParent()).getParent()).setTranslationY(-y); + if (withKeyboard) { + if (insetsController != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + insetsController.setInsetsAndAlpha(Insets.of(0, 0, 0, (int) (keyboardSize * (1f - t))), 1f, t); + } + } + } else { + float y = (1f - t) * keyboardSize; + panLayoutHelper.OnPanTranslationUpdate(y, t, true); +// ((View) ((View) view.getParent()).getParent()).setTranslationY(-y); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java index f6ba39e39..3dbb83b5e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java @@ -8,6 +8,8 @@ package org.telegram.ui; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.content.Context; import android.content.DialogInterface; @@ -15,6 +17,7 @@ import android.content.SharedPreferences; import android.content.res.Configuration; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.LinearLayout; @@ -74,7 +77,7 @@ public class LanguageSelectActivity extends BaseFragment implements Notification @Override public boolean onFragmentCreate() { fillLanguages(); - LocaleController.getInstance().loadRemoteLanguages(currentAccount); + LocaleController.getInstance().loadRemoteLanguages(currentAccount, false); NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.suggestedLangpack); return super.onFragmentCreate(); } @@ -411,19 +414,22 @@ public class LanguageSelectActivity extends BaseFragment implements Notification public TranslateSettings(Context context) { super(context); + setFocusable(false); setOrientation(VERTICAL); preferences = MessagesController.getGlobalMainSettings(); header = new HeaderCell(context); + header.setFocusable(true); header.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); header.setText(LocaleController.getString("TranslateMessages", R.string.TranslateMessages)); + header.setContentDescription(LocaleController.getString("TranslateMessages", R.string.TranslateMessages)); addView(header, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); boolean value = getValue(); showButtonCheck = new TextCheckCell(context); - showButtonCheck.setBackground(Theme.createSelectorWithBackgroundDrawable(Theme.getColor(Theme.key_windowBackgroundWhite), Theme.getColor(Theme.key_listSelector))); + showButtonCheck.setBackground(Theme.AdaptiveRipple.filledRect(Theme.getColor(Theme.key_windowBackgroundWhite))); showButtonCheck.setTextAndCheck( LocaleController.getString("ShowTranslateButton", R.string.ShowTranslateButton), value, @@ -435,7 +441,7 @@ public class LanguageSelectActivity extends BaseFragment implements Notification addView(showButtonCheck, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); doNotTranslateCell = new TextSettingsCell(context); - doNotTranslateCell.setBackground(Theme.createSelectorWithBackgroundDrawable(Theme.getColor(Theme.key_windowBackgroundWhite), Theme.getColor(Theme.key_listSelector))); + doNotTranslateCell.setBackground(Theme.AdaptiveRipple.filledRect(Theme.getColor(Theme.key_windowBackgroundWhite))); doNotTranslateCell.setOnClickListener(e -> { presentFragment(new RestrictedLanguagesSelectActivity()); update(); @@ -447,13 +453,17 @@ public class LanguageSelectActivity extends BaseFragment implements Notification info = new TextInfoPrivacyCell(context); info.setTopPadding(11); info.setBottomPadding(16); + info.setFocusable(true); info.setText(LocaleController.getString("TranslateMessagesInfo1", R.string.TranslateMessagesInfo1)); + info.setContentDescription(LocaleController.getString("TranslateMessagesInfo1", R.string.TranslateMessagesInfo1)); addView(info, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); info2 = new TextInfoPrivacyCell(context); info2.setTopPadding(0); info2.setBottomPadding(16); + info2.setFocusable(true); info2.setText(LocaleController.getString("TranslateMessagesInfo2", R.string.TranslateMessagesInfo2)); + info2.setContentDescription(LocaleController.getString("TranslateMessagesInfo2", R.string.TranslateMessagesInfo2)); info2.setAlpha(value ? 0f : 1f); addView(info2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -501,6 +511,7 @@ public class LanguageSelectActivity extends BaseFragment implements Notification doNotTranslateCell.setTextAndValue(LocaleController.getString("DoNotTranslate", R.string.DoNotTranslate), doNotTranslateCellValue, false); doNotTranslateCell.setClickable(value); + info2.setVisibility(View.VISIBLE); doNotTranslateCellAnimation = ValueAnimator.ofFloat(doNotTranslateCell.getAlpha(), value ? 1f : 0f); doNotTranslateCellAnimation.setInterpolator(CubicBezierInterpolator.DEFAULT); doNotTranslateCellAnimation.addUpdateListener(a -> { @@ -520,6 +531,17 @@ public class LanguageSelectActivity extends BaseFragment implements Notification // layoutParams.height = AndroidUtilities.dp(HEIGHT_CLOSED + (HEIGHT_OPEN - HEIGHT_CLOSED) * t); // setLayoutParams(layoutParams); }); + doNotTranslateCellAnimation.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + if (doNotTranslateCell.getAlpha() > .5) { + info2.setVisibility(View.GONE); + } else { + info2.setVisibility(View.VISIBLE); + } + } + }); doNotTranslateCellAnimation.setDuration((long) (Math.abs(doNotTranslateCell.getAlpha() - (value ? 1f : 0f)) * 200)); doNotTranslateCellAnimation.start(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 09869e811..22b614f68 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -8,10 +8,14 @@ package org.telegram.ui; +import static org.telegram.ui.Components.Premium.LimitReachedBottomSheet.TYPE_ACCOUNTS; + import android.Manifest; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; @@ -27,6 +31,7 @@ import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Point; import android.graphics.Shader; +import android.graphics.drawable.Drawable; import android.location.LocationManager; import android.media.AudioManager; import android.net.Uri; @@ -39,6 +44,7 @@ import android.provider.ContactsContract; import android.provider.Settings; import android.text.TextUtils; import android.util.Base64; +import android.util.Log; import android.util.TypedValue; import android.view.ActionMode; import android.view.Gravity; @@ -108,6 +114,9 @@ import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBarLayout; +import org.telegram.ui.ActionBar.ActionBarMenuItem; +import org.telegram.ui.ActionBar.ActionBarMenuSubItem; +import org.telegram.ui.ActionBar.ActionBarPopupWindow; import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.DrawerLayoutContainer; @@ -119,6 +128,7 @@ import org.telegram.ui.Cells.DrawerProfileCell; import org.telegram.ui.Cells.DrawerUserCell; import org.telegram.ui.Cells.LanguageCell; import org.telegram.ui.Components.AlertsCreator; +import org.telegram.ui.Components.AppIconBulletinLayout; import org.telegram.ui.Components.AttachBotIntroTopView; import org.telegram.ui.Components.AudioPlayerAlert; import org.telegram.ui.Components.BlockingUpdateView; @@ -135,6 +145,7 @@ import org.telegram.ui.Components.MediaActionDrawable; import org.telegram.ui.Components.PasscodeView; import org.telegram.ui.Components.PhonebookShareAlert; import org.telegram.ui.Components.PipRoundVideoView; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.RLottieImageView; import org.telegram.ui.Components.RadialProgress2; @@ -221,6 +232,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar private SimpleTextView updateTextView; private TextView updateSizeTextView; private FrameLayout sideMenuContainer; + private View rippleAbove; private AlertDialog localeDialog; private boolean loadingLocaleDialog; @@ -243,8 +255,12 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar private boolean isNavigationBarColorFrozen = false; + private boolean navigateToPremiumBot; + private Runnable lockRunnable; + private List onUserLeaveHintListeners = new ArrayList<>(); + private static final int PLAY_SERVICES_REQUEST_CHECK_SETTINGS = 140; public static final int SCREEN_CAPTURE_REQUEST_CODE = 520; @@ -317,7 +333,13 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } }; - frameLayout = new FrameLayout(this); + frameLayout = new FrameLayout(this) { + @Override + protected void dispatchDraw(Canvas canvas) { + super.dispatchDraw(canvas); + drawRippleAbove(canvas, this); + } + }; setContentView(frameLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); if (Build.VERSION.SDK_INT >= 21) { themeSwitchImageView = new ImageView(this); @@ -526,17 +548,31 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar switchToAccount(((DrawerUserCell) view).getAccountNumber(), true); drawerLayoutContainer.closeDrawer(false); } else if (view instanceof DrawerAddCell) { - int freeAccount = -1; - for (int a = 0; a < UserConfig.MAX_ACCOUNT_COUNT; a++) { + int freeAccounts = 0; + Integer availableAccount = null; + for (int a = UserConfig.MAX_ACCOUNT_COUNT - 1; a >= 0; a--) { if (!UserConfig.getInstance(a).isClientActivated()) { - freeAccount = a; - break; + freeAccounts++; + if (availableAccount == null) { + availableAccount = a; + } } } - if (freeAccount >= 0) { - presentFragment(new LoginActivity(freeAccount)); + if (!UserConfig.hasPremiumOnAccounts()) { + freeAccounts -= (UserConfig.MAX_ACCOUNT_COUNT - UserConfig.MAX_ACCOUNT_DEFAULT_COUNT); } - drawerLayoutContainer.closeDrawer(false); + if (freeAccounts > 0 && availableAccount != null) { + presentFragment(new LoginActivity(availableAccount)); + drawerLayoutContainer.closeDrawer(false); + } else if (!UserConfig.hasPremiumOnAccounts()) { + if (actionBarLayout.fragmentsStack.size() > 0) { + BaseFragment fragment = actionBarLayout.fragmentsStack.get(0); + LimitReachedBottomSheet limitReachedBottomSheet = new LimitReachedBottomSheet(fragment, this, TYPE_ACCOUNTS, currentAccount); + fragment.showDialog(limitReachedBottomSheet); + limitReachedBottomSheet.onShowPremiumScreenRunnable = () -> drawerLayoutContainer.closeDrawer(false); + } + } + } else { int id = drawerLayoutAdapter.getId(position); if (id == 2) { @@ -726,7 +762,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar actionBarLayout.setDrawerLayoutContainer(drawerLayoutContainer); actionBarLayout.init(mainFragmentsStack); actionBarLayout.setFragmentStackChangedListener(() -> { - checkSystemBarColors(); + checkSystemBarColors(true, false); }); actionBarLayout.setDelegate(this); Theme.loadWallpaper(); @@ -890,6 +926,14 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } } + public void addOnUserLeaveHintListener(Runnable callback) { + onUserLeaveHintListeners.add(callback); + } + + public void removeOnUserLeaveHintListener(Runnable callback) { + onUserLeaveHintListeners.remove(callback); + } + private BaseFragment getClientNotActivatedFragment() { if (LoginActivity.loadCurrentState(false).getInt("currentViewNum", 0) != 0) { return new LoginActivity(); @@ -913,10 +957,18 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } private void checkSystemBarColors() { - checkSystemBarColors(true, !isNavigationBarColorFrozen); + checkSystemBarColors(false, true, !isNavigationBarColorFrozen); + } + + private void checkSystemBarColors(boolean useCurrentFragment) { + checkSystemBarColors(useCurrentFragment, true, !isNavigationBarColorFrozen); } private void checkSystemBarColors(boolean checkStatusBar, boolean checkNavigationBar) { + checkSystemBarColors(false, checkStatusBar, checkNavigationBar); + } + + private void checkSystemBarColors(boolean useCurrentFragment, boolean checkStatusBar, boolean checkNavigationBar) { BaseFragment currentFragment = !mainFragmentsStack.isEmpty() ? mainFragmentsStack.get(mainFragmentsStack.size() - 1) : null; if (currentFragment != null && (currentFragment.isRemovingFromStack() || currentFragment.isInPreviewMode())) { currentFragment = mainFragmentsStack.size() > 1 ? mainFragmentsStack.get(mainFragmentsStack.size() - 2) : null; @@ -933,9 +985,16 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } AndroidUtilities.setLightStatusBar(getWindow(), enable, forceLightStatusBar); } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && checkNavigationBar) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && checkNavigationBar && (!useCurrentFragment || currentFragment == null || !currentFragment.isInPreviewMode())) { final Window window = getWindow(); - int color = Theme.getColor(Theme.key_windowBackgroundGray, null, true); + final int color = currentFragment != null && useCurrentFragment ? currentFragment.getNavigationBarColor() : Theme.getColor(Theme.key_windowBackgroundGray, null, true); +// Theme.ResourcesProvider resourcesProvider = currentFragment != null ? currentFragment.getResourceProvider() : null; +// if (resourcesProvider != null) { +// color = resourcesProvider.getColor(Theme.key_windowBackgroundGray); +// } +// if (color == null) { +// color = Theme.getColor(Theme.key_windowBackgroundGray, null, true); +// } if (window.getNavigationBarColor() != color) { window.setNavigationBarColor(color); final float brightness = AndroidUtilities.computePerceivedBrightness(color); @@ -1079,6 +1138,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.groupCallUpdated); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.stickersImportComplete); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.newSuggestionsAvailable); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.currentUserShowLimitReachedDialog); } private void checkLayout() { @@ -1240,6 +1300,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar }); } + @SuppressLint("Range") private boolean handleIntent(Intent intent, boolean isNew, boolean restore, boolean fromPassword) { if (AndroidUtilities.handleProxyIntent(this, intent)) { actionBarLayout.showLastFragment(); @@ -1591,6 +1652,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar String unsupportedUrl = null; String botUser = null; String botChat = null; + String botChannel = null; String botChatAdminParams = null; String message = null; String phone = null; @@ -1602,6 +1664,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar String theme = null; String code = null; TLRPC.TL_wallPaper wallPaper = null; + String inputInvoiceSlug = null; Integer messageId = null; Long channelId = null; Integer threadId = null; @@ -1610,6 +1673,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar boolean hasUrl = false; String setAsAttachBot = null; String attachMenuBotToOpen = null; + String attachMenuBotChoose = null; final String scheme = data.getScheme(); if (scheme != null) { switch (scheme) { @@ -1620,7 +1684,11 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar String path = data.getPath(); if (path != null && path.length() > 1) { path = path.substring(1); - if (path.startsWith("bg/")) { + if (path.startsWith("$")) { + inputInvoiceSlug = path.substring(1); + } else if (path.startsWith("invoice/")) { + inputInvoiceSlug = path.substring(path.indexOf('/') + 1); + } else if (path.startsWith("bg/")) { wallPaper = new TLRPC.TL_wallPaper(); wallPaper.settings = new TLRPC.TL_wallPaperSettings(); wallPaper.slug = path.replace("bg/", ""); @@ -1779,11 +1847,13 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } botUser = data.getQueryParameter("start"); botChat = data.getQueryParameter("startgroup"); + botChannel = data.getQueryParameter("startchannel"); botChatAdminParams = data.getQueryParameter("admin"); game = data.getQueryParameter("game"); voicechat = data.getQueryParameter("voicechat"); livestream = data.getQueryParameter("livestream"); setAsAttachBot = data.getQueryParameter("startattach"); + attachMenuBotChoose = data.getQueryParameter("choose"); attachMenuBotToOpen = data.getQueryParameter("attach"); threadId = Utilities.parseInt(data.getQueryParameter("thread")); if (threadId == 0) { @@ -1804,6 +1874,12 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar url = url.replace("tg:resolve", "tg://telegram.org").replace("tg://resolve", "tg://telegram.org"); data = Uri.parse(url); username = data.getQueryParameter("domain"); + if (username == null) { + username = data.getQueryParameter("phone"); + if (username != null && username.startsWith("+")) { + username = username.substring(1); + } + } if ("telegrampassport".equals(username)) { username = null; auth = new HashMap<>(); @@ -1820,11 +1896,13 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } else { botUser = data.getQueryParameter("start"); botChat = data.getQueryParameter("startgroup"); + botChannel = data.getQueryParameter("startchannel"); botChatAdminParams = data.getQueryParameter("admin"); game = data.getQueryParameter("game"); voicechat = data.getQueryParameter("voicechat"); livestream = data.getQueryParameter("livestream"); setAsAttachBot = data.getQueryParameter("startattach"); + attachMenuBotChoose = data.getQueryParameter("choose"); attachMenuBotToOpen = data.getQueryParameter("attach"); messageId = Utilities.parseInt(data.getQueryParameter("post")); if (messageId == 0) { @@ -1839,6 +1917,11 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar commentId = null; } } + } + if (url.startsWith("tg:invoice") || url.startsWith("tg://invoice")) { + url = url.replace("tg:invoice", "tg://invoice"); + data = Uri.parse(url); + inputInvoiceSlug = data.getQueryParameter("slug"); } else if (url.startsWith("tg:privatepost") || url.startsWith("tg://privatepost")) { url = url.replace("tg:privatepost", "tg://telegram.org").replace("tg://privatepost", "tg://telegram.org"); data = Uri.parse(url); @@ -2146,11 +2229,11 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar AlertsCreator.processError(currentAccount, error, getActionBarLayout().getLastFragment(), req); } }), ConnectionsManager.RequestFlagFailOnServerErrors); - } else if (username != null || group != null || sticker != null || message != null || game != null || voicechat != null || auth != null || unsupportedUrl != null || lang != null || code != null || wallPaper != null || channelId != null || theme != null || login != null) { + } else if (username != null || group != null || sticker != null || message != null || game != null || voicechat != null || auth != null || unsupportedUrl != null || lang != null || code != null || wallPaper != null || inputInvoiceSlug != null || channelId != null || theme != null || login != null) { if (message != null && message.startsWith("@")) { message = " " + message; } - runLinkRequest(intentAccount[0], username, group, sticker, botUser, botChat, botChatAdminParams, message, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, login, wallPaper, theme, voicechat, livestream, 0, videoTimestamp, setAsAttachBot, attachMenuBotToOpen); + runLinkRequest(intentAccount[0], username, group, sticker, botUser, botChat, botChannel, botChatAdminParams, message, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, login, wallPaper, inputInvoiceSlug, theme, voicechat, livestream, 0, videoTimestamp, setAsAttachBot, attachMenuBotToOpen, attachMenuBotChoose); } else { try (Cursor cursor = getContentResolver().query(intent.getData(), null, null, null, null)) { if (cursor != null) { @@ -2187,7 +2270,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } else if (intent.getAction().startsWith("com.tmessages.openchat")) { long chatId = intent.getLongExtra("chatId", intent.getIntExtra("chatId", 0)); - long userId = intent.getLongExtra("userId", intent.getIntExtra("userId", 0)); + long userId = intent.getLongExtra("userId", intent.getIntExtra("userId", 0)); int encId = intent.getIntExtra("encId", 0); int widgetId = intent.getIntExtra("appWidgetId", 0); if (widgetId != 0) { @@ -2559,7 +2642,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } catch (Throwable ignore) { } - if (videoTimestamp == - 1) { + if (videoTimestamp == -1) { DateFormat dateFormat = new SimpleDateFormat("mm:ss"); Date reference = null; try { @@ -2689,7 +2772,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } private void runImportRequest(final Uri importUri, - ArrayList documents) { + ArrayList documents) { final int intentAccount = UserConfig.selectedAccount; final AlertDialog progressDialog = new AlertDialog(this, 3); final int[] requestId = new int[]{0}; @@ -2827,6 +2910,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar final String sticker, final String botUser, final String botChat, + final String botChannel, final String botChatAdminParams, final String message, final boolean hasUrl, @@ -2841,19 +2925,21 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar final String code, final String loginToken, final TLRPC.TL_wallPaper wallPaper, + final String inputInvoiceSlug, final String theme, final String voicechat, final String livestream, final int state, final int videoTimestamp, final String setAsAttachBot, - final String attachMenuBotToOpen) { + final String attachMenuBotToOpen, + final String attachMenuBotChoose) { if (state == 0 && UserConfig.getActivatedAccountsCount() >= 2 && auth != null) { AlertsCreator.createAccountSelectDialog(this, account -> { if (account != intentAccount) { switchToAccount(account, true); } - runLinkRequest(account, username, group, sticker, botUser, botChat, botChatAdminParams, message, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, loginToken, wallPaper, theme, voicechat, livestream, 1, videoTimestamp, setAsAttachBot, attachMenuBotToOpen); + runLinkRequest(account, username, group, sticker, botUser, botChat, botChannel, botChatAdminParams, message, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, loginToken, wallPaper, inputInvoiceSlug, theme, voicechat, livestream, 1, videoTimestamp, setAsAttachBot, attachMenuBotToOpen, attachMenuBotChoose); }).show(); return; } else if (code != null) { @@ -2879,7 +2965,31 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar final int[] requestId = new int[]{0}; Runnable cancelRunnable = null; - if (username != null) { + if (inputInvoiceSlug != null) { + TLRPC.TL_payments_getPaymentForm req = new TLRPC.TL_payments_getPaymentForm(); + TLRPC.TL_inputInvoiceSlug invoiceSlug = new TLRPC.TL_inputInvoiceSlug(); + invoiceSlug.slug = inputInvoiceSlug; + req.invoice = invoiceSlug; + requestId[0] = ConnectionsManager.getInstance(intentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + if (error != null) { + BulletinFactory.of(mainFragmentsStack.get(mainFragmentsStack.size() - 1)).createErrorBulletin(LocaleController.getString(R.string.PaymentInvoiceLinkInvalid)).show(); + } else if (!LaunchActivity.this.isFinishing()) { + if (response instanceof TLRPC.TL_payments_paymentForm) { + TLRPC.TL_payments_paymentForm form = (TLRPC.TL_payments_paymentForm) response; + MessagesController.getInstance(intentAccount).putUsers(form.users, false); + presentFragment(new PaymentFormActivity(form, inputInvoiceSlug, getActionBarLayout().getLastFragment())); + } else if (response instanceof TLRPC.TL_payments_paymentReceipt) { + presentFragment(new PaymentFormActivity((TLRPC.TL_payments_paymentReceipt) response)); + } + } + + try { + progressDialog.dismiss(); + } catch (Exception e) { + FileLog.e(e); + } + })); + } else if (username != null) { TLObject req; if (AndroidUtilities.isNumeric(username)) { TLRPC.TL_contacts_resolvePhone resolvePhone = new TLRPC.TL_contacts_resolvePhone(); @@ -2904,14 +3014,63 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar if (user.bot_attach_menu) { TLRPC.TL_messages_getAttachMenuBot getAttachMenuBot = new TLRPC.TL_messages_getAttachMenuBot(); getAttachMenuBot.bot = MessagesController.getInstance(intentAccount).getInputUser(res.peer.user_id); - ConnectionsManager.getInstance(intentAccount).sendRequest(getAttachMenuBot, (response1, error1) -> AndroidUtilities.runOnUIThread(()->{ + ConnectionsManager.getInstance(intentAccount).sendRequest(getAttachMenuBot, (response1, error1) -> AndroidUtilities.runOnUIThread(() -> { if (response1 instanceof TLRPC.TL_attachMenuBotsBot) { TLRPC.TL_attachMenuBotsBot attachMenuBotsBot = (TLRPC.TL_attachMenuBotsBot) response1; MessagesController.getInstance(intentAccount).putUsers(attachMenuBotsBot.users, false); TLRPC.TL_attachMenuBot attachMenuBot = attachMenuBotsBot.bot; BaseFragment lastFragment = mainFragmentsStack.get(mainFragmentsStack.size() - 1); + + List chooserTargets = new ArrayList<>(); + if (!TextUtils.isEmpty(attachMenuBotChoose)) { + for (String target : attachMenuBotChoose.split(" ")) { + if (MediaDataController.canShowAttachMenuBotForTarget(attachMenuBot, target)) { + chooserTargets.add(target); + } + } + } + DialogsActivity dialogsActivity; + + if (!chooserTargets.isEmpty()) { + Bundle args = new Bundle(); + args.putInt("dialogsType", DialogsActivity.DIALOGS_TYPE_START_ATTACH_BOT); + args.putBoolean("onlySelect", true); + + args.putBoolean("allowGroups", chooserTargets.contains("groups")); + args.putBoolean("allowUsers", chooserTargets.contains("users")); + args.putBoolean("allowChannels", chooserTargets.contains("channels")); + args.putBoolean("allowBots", chooserTargets.contains("bots")); + + dialogsActivity = new DialogsActivity(args); + dialogsActivity.setDelegate((fragment, dids, message1, param) -> { + long did = dids.get(0); + + Bundle args1 = new Bundle(); + args1.putBoolean("scrollToTopOnResume", true); + if (DialogObject.isEncryptedDialog(did)) { + args1.putInt("enc_id", DialogObject.getEncryptedChatId(did)); + } else if (DialogObject.isUserDialog(did)) { + args1.putLong("user_id", did); + } else { + args1.putLong("chat_id", -did); + } + args1.putString("attach_bot", user.username); + if (setAsAttachBot != null) { + args1.putString("attach_bot_start_command", setAsAttachBot); + } + if (MessagesController.getInstance(intentAccount).checkCanOpenChat(args1, fragment)) { + NotificationCenter.getInstance(intentAccount).postNotificationName(NotificationCenter.closeChats); + actionBarLayout.presentFragment(new ChatActivity(args1), true, false, true, false); + } + }); + } else { + dialogsActivity = null; + } + if (!attachMenuBot.inactive) { - if (lastFragment instanceof ChatActivity) { + if (dialogsActivity != null) { + presentFragment(dialogsActivity); + } else if (lastFragment instanceof ChatActivity) { ((ChatActivity) lastFragment).openAttachBotLayout(user.id, setAsAttachBot); } else { BulletinFactory.of(lastFragment).createErrorBulletin(LocaleController.getString(R.string.BotAlreadyAddedToAttachMenu)).show(); @@ -2929,10 +3088,12 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar botRequest.bot = MessagesController.getInstance(intentAccount).getInputUser(res.peer.user_id); botRequest.enabled = true; ConnectionsManager.getInstance(intentAccount).sendRequest(botRequest, (response2, error2) -> AndroidUtilities.runOnUIThread(() -> { - if (error2 == null) { + if (response2 instanceof TLRPC.TL_boolTrue) { MediaDataController.getInstance(intentAccount).loadAttachMenuBots(false, true); - if (lastFragment instanceof ChatActivity) { + if (dialogsActivity != null) { + presentFragment(dialogsActivity); + } else if (lastFragment instanceof ChatActivity) { ((ChatActivity) lastFragment).openAttachBotLayout(user.id, setAsAttachBot); } } @@ -3010,7 +3171,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } else { drawerLayoutContainer.setAllowOpenDrawer(true, false); } - } else if (botChat != null) { + } else if (botChat != null || botChannel != null) { final TLRPC.User user = !res.users.isEmpty() ? res.users.get(0) : null; if (user == null || user.bot && user.bot_nochats) { try { @@ -3027,6 +3188,9 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar args.putInt("dialogsType", 2); args.putBoolean("resetDelegate", false); args.putBoolean("closeFragment", false); + args.putBoolean("allowGroups", botChat != null); + args.putBoolean("allowChannels", botChannel != null); + final String botHash = TextUtils.isEmpty(botChat) ? (TextUtils.isEmpty(botChannel) ? null : botChannel) : botChat; // args.putString("addToGroupAlertString", LocaleController.formatString("AddToTheGroupAlertText", R.string.AddToTheGroupAlertText, UserObject.getUserName(user), "%1$s")); DialogsActivity fragment = new DialogsActivity(args); fragment.setDelegate((fragment12, dids, message1, param) -> { @@ -3074,6 +3238,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar requestingRights.manage_call = true; break; case "manage_chat": + case "other": requestingRights.other = true; break; case "anonymous": @@ -3103,18 +3268,35 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar editRights.other = requestingRights.other || editRights.other; } } - ChatRightsEditActivity editRightsActivity = new ChatRightsEditActivity(user.id, -did, editRights, null, null, currentRank, ChatRightsEditActivity.TYPE_ADD_BOT, true, !isInChatAlready, null); - editRightsActivity.setDelegate(new ChatRightsEditActivity.ChatRightsEditActivityDelegate() { - @Override - public void didSetRights(int rights, TLRPC.TL_chatAdminRights rightsAdmin, TLRPC.TL_chatBannedRights rightsBanned, String rank) { - fragment.removeSelfFromStack(); + if (isInChatAlready && requestingRights == null && !TextUtils.isEmpty(botHash)) { + Runnable onFinish = () -> { NotificationCenter.getInstance(intentAccount).postNotificationName(NotificationCenter.closeChats); - } - @Override - public void didChangeOwner(TLRPC.User user) {} - }); - actionBarLayout.presentFragment(editRightsActivity, false); + Bundle args1 = new Bundle(); + args1.putBoolean("scrollToTopOnResume", true); + args1.putLong("chat_id", chat.id); + if (!MessagesController.getInstance(currentAccount).checkCanOpenChat(args1, fragment)) { + return; + } + ChatActivity chatActivity = new ChatActivity(args1); + presentFragment(chatActivity, true, false); + }; + MessagesController.getInstance(currentAccount).addUserToChat(chat.id, user, 0, botHash, fragment, true, onFinish, null); + } else { + ChatRightsEditActivity editRightsActivity = new ChatRightsEditActivity(user.id, -did, editRights, null, null, currentRank, ChatRightsEditActivity.TYPE_ADD_BOT, true, !isInChatAlready, botHash); + editRightsActivity.setDelegate(new ChatRightsEditActivity.ChatRightsEditActivityDelegate() { + @Override + public void didSetRights(int rights, TLRPC.TL_chatAdminRights rightsAdmin, TLRPC.TL_chatBannedRights rightsBanned, String rank) { + fragment.removeSelfFromStack(); + NotificationCenter.getInstance(intentAccount).postNotificationName(NotificationCenter.closeChats); + } + + @Override + public void didChangeOwner(TLRPC.User user) { + } + }); + actionBarLayout.presentFragment(editRightsActivity, false); + } })); } else { AlertDialog.Builder builder = new AlertDialog.Builder(this); @@ -3129,7 +3311,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar ChatActivity chatActivity = new ChatActivity(args12); NotificationCenter.getInstance(intentAccount).postNotificationName(NotificationCenter.closeChats); - MessagesController.getInstance(intentAccount).addUserToChat(-did, user, 0, TextUtils.isEmpty(botChat) ? null : botChat, chatActivity, null); + MessagesController.getInstance(intentAccount).addUserToChat(-did, user, 0, botHash, chatActivity, null); actionBarLayout.presentFragment(chatActivity, true, false, true, false); }); builder.show(); @@ -3151,6 +3333,10 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar args.putString("botUser", botUser); isBot = true; } + if (navigateToPremiumBot) { + navigateToPremiumBot = false; + args.putBoolean("premium_bot", true); + } if (messageId != null) { args.putInt("message_id", messageId); } @@ -3192,7 +3378,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar voipLastFragment = lastFragment; } - AndroidUtilities.runOnUIThread(()->{ + AndroidUtilities.runOnUIThread(() -> { if (livestream != null) { AccountInstance accountInstance = AccountInstance.getInstance(currentAccount); ChatObject.Call cachedCall = accountInstance.getMessagesController().getGroupCall(-dialog_id, false); @@ -3241,6 +3427,8 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar BaseFragment fragment = mainFragmentsStack.get(mainFragmentsStack.size() - 1); if (error != null && error.text != null && error.text.startsWith("FLOOD_WAIT")) { BulletinFactory.of(fragment).createErrorBulletin(LocaleController.getString("FloodWait", R.string.FloodWait)).show(); + } else if (AndroidUtilities.isNumeric(username)) { + BulletinFactory.of(fragment).createErrorBulletin(LocaleController.getString("NoPhoneFound", R.string.NoPhoneFound)).show(); } else { BulletinFactory.of(fragment).createErrorBulletin(LocaleController.getString("NoUsernameFound", R.string.NoUsernameFound)).show(); } @@ -3314,7 +3502,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } } else { BaseFragment fragment = mainFragmentsStack.get(mainFragmentsStack.size() - 1); - fragment.showDialog(new JoinGroupAlert(LaunchActivity.this, invite, group, fragment)); + fragment.showDialog(new JoinGroupAlert(LaunchActivity.this, invite, group, fragment, (fragment instanceof ChatActivity ? ((ChatActivity) fragment).themeDelegate : null))); } } else { AlertDialog.Builder builder = new AlertDialog.Builder(LaunchActivity.this); @@ -3584,7 +3772,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar TLRPC.TL_wallPaper object; if (settings.wallpaper instanceof TLRPC.TL_wallPaper) { object = (TLRPC.TL_wallPaper) settings.wallpaper; - File path = FileLoader.getPathToAttach(object.document, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(object.document, true); if (!path.exists()) { loadingThemeProgressDialog = progressDialog; loadingThemeAccent = true; @@ -3888,7 +4076,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar createUpdateUI(); updateSizeTextView.setText(AndroidUtilities.formatFileSize(SharedConfig.pendingAppUpdate.document.size)); String fileName = FileLoader.getAttachFileName(SharedConfig.pendingAppUpdate.document); - File path = FileLoader.getPathToAttach(SharedConfig.pendingAppUpdate.document, true); + File path = FileLoader.getInstance(currentAccount).getPathToAttach(SharedConfig.pendingAppUpdate.document, true); boolean showSize; if (path.exists()) { updateLayoutIcon.setIcon(MediaActionDrawable.ICON_UPDATE, true, false); @@ -4061,7 +4249,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar public void showBulletin(Function createBulletin) { BaseFragment topFragment = null; if (!layerFragmentsStack.isEmpty()) { - topFragment = layerFragmentsStack.get(layerFragmentsStack.size() - 1); + topFragment = layerFragmentsStack.get(layerFragmentsStack.size() - 1); } else if (!rightFragmentsStack.isEmpty()) { topFragment = rightFragmentsStack.get(rightFragmentsStack.size() - 1); } else if (!mainFragmentsStack.isEmpty()) { @@ -4072,8 +4260,12 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } } + public void setNavigateToPremiumBot(boolean val) { + navigateToPremiumBot = val; + } + @Override - protected void onNewIntent(Intent intent) { + public void onNewIntent(Intent intent) { super.onNewIntent(intent); handleIntent(intent, true, false, false); } @@ -4288,6 +4480,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.groupCallUpdated); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.stickersImportComplete); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.newSuggestionsAvailable); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.currentUserShowLimitReachedDialog); } NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.needShowAlert); @@ -4516,6 +4709,14 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar onFinish(); } + @Override + protected void onUserLeaveHint() { + for (Runnable callback : onUserLeaveHintListeners) { + callback.run(); + } + actionBarLayout.onUserLeaveHint(); + } + @Override protected void onResume() { super.onResume(); @@ -4788,7 +4989,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar if (args.length > 1) { checkNavigationBarColor = (boolean) args[1]; } - checkSystemBarColors(true, checkNavigationBarColor && !isNavigationBarColorFrozen); + checkSystemBarColors(args.length > 2 && (boolean) args[2], true, checkNavigationBarColor && !isNavigationBarColorFrozen && !actionBarLayout.isTransitionAnimationInProgress()); } else if (id == NotificationCenter.needSetDayNightTheme) { boolean instant = false; if (Build.VERSION.SDK_INT >= 21 && args[2] != null) { @@ -4804,11 +5005,21 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar if (!toDark) { darkThemeView.setVisibility(View.INVISIBLE); } + rippleAbove = null; + if (args.length > 6) { + rippleAbove = (View) args[6]; + } isNavigationBarColorFrozen = true; invalidateCachedViews(drawerLayoutContainer); + if (rippleAbove != null && rippleAbove.getBackground() != null) { + rippleAbove.getBackground().setAlpha(0); + } Bitmap bitmap = AndroidUtilities.snapshotView(drawerLayoutContainer); + if (rippleAbove != null && rippleAbove.getBackground() != null) { + rippleAbove.getBackground().setAlpha(255); + } frameLayout.removeView(themeSwitchImageView); if (toDark) { frameLayout.addView(themeSwitchImageView, 0, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); @@ -4832,6 +5043,9 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { + rippleAbove = null; + drawerLayoutContainer.invalidate(); + themeSwitchImageView.invalidate(); themeSwitchImageView.setImageDrawable(null); themeSwitchImageView.setVisibility(View.GONE); themeSwitchSunView.setVisibility(View.GONE); @@ -4842,7 +5056,13 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar DrawerProfileCell.switchingTheme = false; } }); - AndroidUtilities.runOnUIThread(()->{ + if (rippleAbove != null) { + ValueAnimator invalidateAnimator = ValueAnimator.ofFloat(0, 1); + invalidateAnimator.addUpdateListener(a -> frameLayout.invalidate()); + invalidateAnimator.setDuration(anim.getDuration()); + invalidateAnimator.start(); + } + AndroidUtilities.runOnUIThread(() -> { if (isNavigationBarColorFrozen) { isNavigationBarColorFrozen = false; checkSystemBarColors(false, true); @@ -4864,12 +5084,12 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar DrawerProfileCell.switchingTheme = false; } Theme.ThemeInfo theme = (Theme.ThemeInfo) args[0]; - boolean nigthTheme = (Boolean) args[1]; + boolean nightTheme = (Boolean) args[1]; int accentId = (Integer) args[3]; - actionBarLayout.animateThemedValues(theme, accentId, nigthTheme, instant); + actionBarLayout.animateThemedValues(theme, accentId, nightTheme, instant); if (AndroidUtilities.isTablet()) { - layersActionBarLayout.animateThemedValues(theme, accentId, nigthTheme, instant); - rightActionBarLayout.animateThemedValues(theme, accentId, nigthTheme, instant); + layersActionBarLayout.animateThemedValues(theme, accentId, nightTheme, instant); + rightActionBarLayout.animateThemedValues(theme, accentId, nightTheme, instant); } } else if (id == NotificationCenter.notificationsCountUpdated) { if (sideMenu != null) { @@ -4981,7 +5201,8 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar onPasscodePause(); } } else if (id == NotificationCenter.needCheckSystemBarColors) { - checkSystemBarColors(); + boolean useCurrentFragment = args.length > 0 && (boolean) args[0]; + checkSystemBarColors(useCurrentFragment); } else if (id == NotificationCenter.historyImportProgressChanged) { if (args.length > 1 && !mainFragmentsStack.isEmpty()) { AlertsCreator.processError(currentAccount, (TLRPC.TL_error) args[2], mainFragmentsStack.get(mainFragmentsStack.size() - 1), (TLObject) args[1]); @@ -5004,33 +5225,58 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar fragment = mainFragmentsStack.get(mainFragmentsStack.size() - 1); } - if (type == Bulletin.TYPE_NAME_CHANGED) { - long peerId = (long) args[1]; - String text = peerId > 0 ? LocaleController.getString("YourNameChanged", R.string.YourNameChanged) : LocaleController.getString("CannelTitleChanged", R.string.ChannelTitleChanged); - (container != null ? BulletinFactory.of(container, null) : BulletinFactory.of(fragment)).createErrorBulletin(text).show(); - } else if (type == Bulletin.TYPE_BIO_CHANGED) { - long peerId = (long) args[1]; - String text = peerId > 0 ? LocaleController.getString("YourBioChanged", R.string.YourBioChanged) : LocaleController.getString("CannelDescriptionChanged", R.string.ChannelDescriptionChanged); - (container != null ? BulletinFactory.of(container, null) : BulletinFactory.of(fragment)).createErrorBulletin(text).show(); - } else if (type == Bulletin.TYPE_STICKER) { - TLRPC.Document sticker = (TLRPC.Document) args[1]; - StickerSetBulletinLayout layout = new StickerSetBulletinLayout(this, null, (int) args[2], sticker, null); - if (fragment != null) { - Bulletin.make(fragment, layout, Bulletin.DURATION_SHORT).show(); - } else { - Bulletin.make(container, layout, Bulletin.DURATION_SHORT).show(); + switch (type) { + case Bulletin.TYPE_NAME_CHANGED: { + long peerId = (long) args[1]; + String text = peerId > 0 ? LocaleController.getString("YourNameChanged", R.string.YourNameChanged) : LocaleController.getString("CannelTitleChanged", R.string.ChannelTitleChanged); + (container != null ? BulletinFactory.of(container, null) : BulletinFactory.of(fragment)).createErrorBulletin(text).show(); + break; } - } else if (type == Bulletin.TYPE_ERROR) { - if (fragment != null) { - BulletinFactory.of(fragment).createErrorBulletin((String) args[1]).show(); - } else { - BulletinFactory.of(container, null).createErrorBulletin((String) args[1]).show(); + case Bulletin.TYPE_BIO_CHANGED: { + long peerId = (long) args[1]; + String text = peerId > 0 ? LocaleController.getString("YourBioChanged", R.string.YourBioChanged) : LocaleController.getString("CannelDescriptionChanged", R.string.ChannelDescriptionChanged); + (container != null ? BulletinFactory.of(container, null) : BulletinFactory.of(fragment)).createErrorBulletin(text).show(); + break; } - } if (type == Bulletin.TYPE_ERROR_SUBTITLE) { - if (fragment != null) { - BulletinFactory.of(fragment).createErrorBulletinSubtitle((String) args[1], (String) args[2], fragment.getResourceProvider()).show(); - } else { - BulletinFactory.of(container, null).createErrorBulletinSubtitle((String) args[1], (String) args[2], null).show(); + case Bulletin.TYPE_STICKER: { + TLRPC.Document sticker = (TLRPC.Document) args[1]; + int bulletinType = (int) args[2]; + StickerSetBulletinLayout layout = new StickerSetBulletinLayout(this, null, bulletinType, sticker, null); + int duration = Bulletin.DURATION_SHORT; + if (bulletinType == StickerSetBulletinLayout.TYPE_REPLACED_TO_FAVORITES || bulletinType == StickerSetBulletinLayout.TYPE_REPLACED_TO_FAVORITES_GIFS) { + duration = 3500; + } + if (fragment != null) { + Bulletin.make(fragment, layout, duration).show(); + } else { + Bulletin.make(container, layout, duration).show(); + } + break; + } + case Bulletin.TYPE_ERROR: + if (fragment != null) { + BulletinFactory.of(fragment).createErrorBulletin((String) args[1]).show(); + } else { + BulletinFactory.of(container, null).createErrorBulletin((String) args[1]).show(); + } + break; + case Bulletin.TYPE_ERROR_SUBTITLE: + if (fragment != null) { + BulletinFactory.of(fragment).createErrorBulletinSubtitle((String) args[1], (String) args[2], fragment.getResourceProvider()).show(); + } else { + BulletinFactory.of(container, null).createErrorBulletinSubtitle((String) args[1], (String) args[2], null).show(); + } + break; + case Bulletin.TYPE_APP_ICON: { + LauncherIconController.LauncherIcon icon = (LauncherIconController.LauncherIcon) args[1]; + AppIconBulletinLayout layout = new AppIconBulletinLayout(this, icon, null); + int duration = Bulletin.DURATION_SHORT; + if (fragment != null) { + Bulletin.make(fragment, layout, duration).show(); + } else { + Bulletin.make(container, layout, duration).show(); + } + break; } } } @@ -5050,6 +5296,13 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } } else if (id == NotificationCenter.appUpdateAvailable) { updateAppUpdateViews(mainFragmentsStack.size() == 1); + } else if (id == NotificationCenter.currentUserShowLimitReachedDialog) { + if (!mainFragmentsStack.isEmpty()) { + BaseFragment fragment = mainFragmentsStack.get(mainFragmentsStack.size() - 1); + if (fragment.getParentActivity() != null) { + fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), (int) args[0], currentAccount)); + } + } } } @@ -5254,6 +5507,25 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar } } + private int[] tempLocation; + private void drawRippleAbove(Canvas canvas, View parent) { + if (parent == null || rippleAbove == null || rippleAbove.getBackground() == null) { + return; + } + if (tempLocation == null) { + tempLocation = new int[2]; + } + rippleAbove.getLocationInWindow(tempLocation); + int x = tempLocation[0], y = tempLocation[1]; + parent.getLocationInWindow(tempLocation); + x -= tempLocation[0]; + y -= tempLocation[1]; + canvas.save(); + canvas.translate(x, y); + rippleAbove.getBackground().draw(canvas); + canvas.restore(); + } + private void showLanguageAlert(boolean force) { if (!UserConfig.getInstance(currentAccount).isClientActivated()) { return; @@ -5525,7 +5797,9 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar finish(); return; } - if (SecretMediaViewer.hasInstance() && SecretMediaViewer.getInstance().isVisible()) { + if (ContentPreviewViewer.hasInstance() && ContentPreviewViewer.getInstance().isVisible()) { + ContentPreviewViewer.getInstance().closeWithMenu(); + } if (SecretMediaViewer.hasInstance() && SecretMediaViewer.getInstance().isVisible()) { SecretMediaViewer.getInstance().closePhoto(true, false); } else if (PhotoViewer.hasInstance() && PhotoViewer.getInstance().isVisible()) { PhotoViewer.getInstance().closePhoto(true, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LauncherIconController.java b/TMessagesProj/src/main/java/org/telegram/ui/LauncherIconController.java new file mode 100644 index 000000000..6451e336e --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/LauncherIconController.java @@ -0,0 +1,71 @@ +package org.telegram.ui; + +import android.content.ComponentName; +import android.content.Context; +import android.content.pm.PackageManager; + +import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.R; + +public class LauncherIconController { + public static void tryFixLauncherIconIfNeeded() { + for (LauncherIcon icon : LauncherIcon.values()) { + if (isEnabled(icon)) { + return; + } + } + + setIcon(LauncherIcon.DEFAULT); + } + + public static boolean isEnabled(LauncherIcon icon) { + Context ctx = ApplicationLoader.applicationContext; + int i = ctx.getPackageManager().getComponentEnabledSetting(icon.getComponentName(ctx)); + return i == PackageManager.COMPONENT_ENABLED_STATE_ENABLED || i == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT && icon == LauncherIcon.DEFAULT; + } + + public static void setIcon(LauncherIcon icon) { + Context ctx = ApplicationLoader.applicationContext; + PackageManager pm = ctx.getPackageManager(); + for (LauncherIcon i : LauncherIcon.values()) { + pm.setComponentEnabledSetting(i.getComponentName(ctx), i == icon ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); + } + } + + public enum LauncherIcon { + DEFAULT("DefaultIcon", R.drawable.icon_background_sa, R.mipmap.icon_foreground_sa, R.string.AppIconDefault), + VINTAGE("VintageIcon", R.drawable.icon_6_background_sa, R.mipmap.icon_6_foreground_sa, R.string.AppIconVintage), + AQUA("AquaIcon", R.drawable.icon_4_background_sa, R.mipmap.icon_foreground_sa, R.string.AppIconAqua), + PREMIUM("PremiumIcon", R.drawable.icon_3_background_sa, R.mipmap.icon_3_foreground_sa, R.string.AppIconPremium, true), + TURBO("TurboIcon", R.drawable.icon_5_background_sa, R.mipmap.icon_5_foreground_sa, R.string.AppIconTurbo, true), + NOX("NoxIcon", R.drawable.icon_2_background_sa, R.mipmap.icon_foreground_sa, R.string.AppIconNox, true); + + public final String key; + public final int background; + public final int foreground; + public final int title; + public final boolean premium; + + private ComponentName componentName; + + public ComponentName getComponentName(Context ctx) { + if (componentName == null) { + componentName = new ComponentName(ctx.getPackageName(), "org.telegram.messenger." + key); + } + return componentName; + } + + LauncherIcon(String key, int background, int foreground, int title) { + this(key, background, foreground, title, false); + } + + LauncherIcon(String key, int background, int foreground, int title, boolean premium) { + this.key = key; + this.background = background; + this.foreground = foreground; + this.title = title; + this.premium = premium; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java index 49f293649..d7669c35e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java @@ -53,13 +53,16 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; -import android.widget.Toast; + +import androidx.collection.LongSparseArray; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapView; - import com.google.android.gms.maps.MapsInitializer; import com.google.android.gms.maps.Projection; import com.google.android.gms.maps.model.BitmapDescriptorFactory; @@ -76,24 +79,23 @@ import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.gms.maps.model.PatternItem; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.ChatObject; import org.telegram.messenger.DialogObject; -import org.telegram.messenger.FileLoader; -import org.telegram.messenger.ImageLocation; -import org.telegram.messenger.LocationController; -import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; -import org.telegram.messenger.MessagesController; -import org.telegram.messenger.UserObject; -import org.telegram.tgnet.TLRPC; +import org.telegram.messenger.LocationController; import org.telegram.messenger.MessageObject; +import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; +import org.telegram.messenger.UserObject; +import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; import org.telegram.ui.ActionBar.AlertDialog; +import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; import org.telegram.ui.Adapters.LocationActivityAdapter; @@ -108,7 +110,6 @@ import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Cells.SharingLiveLocationCell; import org.telegram.ui.Components.AlertsCreator; import org.telegram.ui.Components.AvatarDrawable; -import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.CombinedDrawable; import org.telegram.ui.Components.CubicBezierInterpolator; @@ -127,11 +128,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; -import androidx.collection.LongSparseArray; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class LocationActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { private ImageView locationButton; @@ -577,7 +573,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter otherItem = menu.addItem(0, R.drawable.ic_ab_other); otherItem.addSubItem(open_in, R.drawable.msg_openin, LocaleController.getString("OpenInExternalApp", R.string.OpenInExternalApp)); if (!getLocationController().isSharingLocation(dialogId)) { - otherItem.addSubItem(share_live_location, R.drawable.menu_location, LocaleController.getString("SendLiveLocationMenu", R.string.SendLiveLocationMenu)); + otherItem.addSubItem(share_live_location, R.drawable.msg_location, LocaleController.getString("SendLiveLocationMenu", R.string.SendLiveLocationMenu)); } otherItem.setContentDescription(LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions)); } @@ -763,7 +759,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter }); } mapTypeButton.setBackgroundDrawable(drawable); - mapTypeButton.setIcon(R.drawable.location_type); + mapTypeButton.setIcon(R.drawable.msg_map_type); mapViewClip.addView(mapTypeButton, LayoutHelper.createFrame(Build.VERSION.SDK_INT >= 21 ? 40 : 44, Build.VERSION.SDK_INT >= 21 ? 40 : 44, Gravity.RIGHT | Gravity.TOP, 0, 12, 12, 0)); mapTypeButton.setOnClickListener(v -> mapTypeButton.toggleSubMenu()); mapTypeButton.setDelegate(id -> { @@ -801,7 +797,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter }); } locationButton.setBackgroundDrawable(drawable); - locationButton.setImageResource(R.drawable.location_current); + locationButton.setImageResource(R.drawable.msg_current_location); locationButton.setScaleType(ImageView.ScaleType.CENTER); locationButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_location_actionActiveIcon), PorterDuff.Mode.MULTIPLY)); locationButton.setTag(Theme.key_location_actionActiveIcon); @@ -1389,7 +1385,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter RectF bitmapRect = new RectF(); canvas.save(); if (photo != null) { - File path = FileLoader.getPathToAttach(photo, true); + File path = getFileLoader().getPathToAttach(photo, true); Bitmap bitmap = BitmapFactory.decodeFile(path.toString()); if (bitmap != null) { BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java index 2bb9eb6f2..995cac92f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java @@ -103,6 +103,7 @@ import org.telegram.messenger.Utilities; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.RequestDelegate; import org.telegram.tgnet.SerializedData; +import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.AlertDialog; @@ -164,6 +165,10 @@ public class LoginActivity extends BaseFragment { AUTH_TYPE_CALL = 4, AUTH_TYPE_MISSED_CALL = 11; + private final static int MODE_LOGIN = 0, + MODE_CANCEL_ACCOUNT_DELETION = 1, + MODE_CHANGE_PHONE_NUMBER = 2; + private final static int VIEW_PHONE_INPUT = 0, VIEW_CODE_MESSAGE = 1, VIEW_CODE_SMS = 2, @@ -191,6 +196,14 @@ public class LoginActivity extends BaseFragment { }) public @interface AuthType {} + @Retention(RetentionPolicy.SOURCE) + @IntDef({ + MODE_LOGIN, + MODE_CANCEL_ACCOUNT_DELETION, + MODE_CHANGE_PHONE_NUMBER + }) + public @interface ActivityMode {} + @Retention(RetentionPolicy.SOURCE) @IntDef({ VIEW_PHONE_INPUT, @@ -232,7 +245,9 @@ public class LoginActivity extends BaseFragment { private boolean syncContacts = true; private boolean testBackend = false; - private boolean cancelAccountDeletionMode = false; + @ActivityMode + private int activityMode = MODE_LOGIN; + private String cancelDeletionPhone; private Bundle cancelDeletionParams; private TLRPC.TL_auth_sentCode cancelDeletionCode; @@ -360,10 +375,19 @@ public class LoginActivity extends BaseFragment { cancelDeletionPhone = phone; cancelDeletionParams = params; cancelDeletionCode = sentCode; - cancelAccountDeletionMode = true; + activityMode = MODE_CANCEL_ACCOUNT_DELETION; return this; } + public LoginActivity changePhoneNumber() { + activityMode = MODE_CHANGE_PHONE_NUMBER; + return this; + } + + private boolean isInCancelAccountDeletionMode() { + return activityMode == MODE_CANCEL_ACCOUNT_DELETION; + } + @Override public void onFragmentDestroy() { super.onFragmentDestroy(); @@ -509,7 +533,7 @@ public class LoginActivity extends BaseFragment { slideViewsContainer.addView(views[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER, AndroidUtilities.isTablet() ? 26 : 18, 30, AndroidUtilities.isTablet() ? 26 : 18, 0)); } - Bundle savedInstanceState = loadCurrentState(newAccount); + Bundle savedInstanceState = activityMode == MODE_LOGIN ? loadCurrentState(newAccount) : null; if (savedInstanceState != null) { currentViewNum = savedInstanceState.getInt("currentViewNum", 0); syncContacts = savedInstanceState.getInt("syncContacts", 1) == 1; @@ -610,7 +634,7 @@ public class LoginActivity extends BaseFragment { } } if (currentViewNum == a) { - backButtonView.setVisibility(v.needBackButton() || newAccount ? View.VISIBLE : View.GONE); + backButtonView.setVisibility(v.needBackButton() || newAccount || activityMode == MODE_CHANGE_PHONE_NUMBER ? View.VISIBLE : View.GONE); v.setVisibility(View.VISIBLE); v.onShow(); @@ -634,7 +658,7 @@ public class LoginActivity extends BaseFragment { updateColors(); - if (cancelAccountDeletionMode) { + if (isInCancelAccountDeletionMode()) { fillNextCodeParams(cancelDeletionParams, cancelDeletionCode, false); } @@ -1301,7 +1325,7 @@ public class LoginActivity extends BaseFragment { } private void needShowProgress(int requestId, boolean animated) { - if (cancelAccountDeletionMode && requestId == 0) { + if (isInCancelAccountDeletionMode() && requestId == 0) { if (cancelDeleteProgressDialog != null || getParentActivity() == null || getParentActivity().isFinishing()) { return; } @@ -1328,7 +1352,7 @@ public class LoginActivity extends BaseFragment { progressRequestId = 0; } - if (cancelAccountDeletionMode && cancelDeleteProgressDialog != null) { + if (isInCancelAccountDeletionMode() && cancelDeleteProgressDialog != null) { cancelDeleteProgressDialog.dismiss(); cancelDeleteProgressDialog = null; } @@ -1576,13 +1600,13 @@ public class LoginActivity extends BaseFragment { titleView = new TextView(context); titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); titleView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - titleView.setText(LocaleController.getString(R.string.YourNumber)); + titleView.setText(LocaleController.getString(activityMode == MODE_CHANGE_PHONE_NUMBER ? R.string.ChangePhoneNewNumber : R.string.YourNumber)); titleView.setGravity(Gravity.CENTER); titleView.setLineSpacing(AndroidUtilities.dp(2), 1.0f); addView(titleView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 32, 0, 32, 0)); subtitleView = new TextView(context); - subtitleView.setText(LocaleController.getString("StartText", R.string.StartText)); + subtitleView.setText(LocaleController.getString(activityMode == MODE_CHANGE_PHONE_NUMBER ? R.string.ChangePhoneHelp : R.string.StartText)); subtitleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); subtitleView.setGravity(Gravity.CENTER); subtitleView.setLineSpacing(AndroidUtilities.dp(2), 1.0f); @@ -1914,7 +1938,7 @@ public class LoginActivity extends BaseFragment { }); int bottomMargin = 72; - if (newAccount) { + if (newAccount && activityMode == MODE_LOGIN) { syncContactsBox = new CheckBoxCell(context, 2); syncContactsBox.setText(LocaleController.getString("SyncContacts", R.string.SyncContacts), "", syncContacts, false); addView(syncContactsBox, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 16, 0, 16 + (LocaleController.isRTL && AndroidUtilities.isSmallScreen() ? Build.VERSION.SDK_INT >= 21 ? 56 : 60 : 0), 0)); @@ -1934,7 +1958,7 @@ public class LoginActivity extends BaseFragment { }); } - if (BuildVars.DEBUG_PRIVATE_VERSION) { + if (BuildVars.DEBUG_PRIVATE_VERSION && activityMode == MODE_LOGIN) { testBackendCheckBox = new CheckBoxCell(context, 2); testBackendCheckBox.setText("Test Backend", "", testBackend, false); addView(testBackendCheckBox, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 16, 0, 16 + (LocaleController.isRTL && AndroidUtilities.isSmallScreen() ? Build.VERSION.SDK_INT >= 21 ? 56 : 60 : 0), 0)); @@ -2041,6 +2065,27 @@ public class LoginActivity extends BaseFragment { } } } + + if (activityMode == MODE_CHANGE_PHONE_NUMBER) { + String number = PhoneFormat.stripExceptNumbers(UserConfig.getInstance(currentAccount).getClientPhone()); + boolean ok = false; + if (!TextUtils.isEmpty(number)) { + if (number.length() > 4) { + for (int a = 4; a >= 1; a--) { + String sub = number.substring(0, a); + CountrySelectActivity.Country country2 = codesMap.get(sub); + if (country2 != null) { + ok = true; + codeField.setText(sub); + break; + } + } + if (!ok) { + codeField.setText(number.substring(0, 1)); + } + } + } + } } }); }, ConnectionsManager.RequestFlagWithoutLogin | ConnectionsManager.RequestFlagFailOnServerErrors); @@ -2199,7 +2244,6 @@ public class LoginActivity extends BaseFragment { return; } String phoneNumber = "+" + codeField.getText() + " " + phoneField.getText(); - String phoneCode = codeField.getText().toString(); if (!confirmedNumber) { if (AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y && !isCustomKeyboardVisible() && sizeNotifierFrameLayout.measureKeyboardHeight() > AndroidUtilities.dp(20)) { keyboardHideCallback = () -> postDelayed(()-> onNextPressed(code), 200); @@ -2372,86 +2416,103 @@ public class LoginActivity extends BaseFragment { return; } String phone = PhoneFormat.stripExceptNumbers("" + codeField.getText() + phoneField.getText()); - boolean testBackend = BuildVars.DEBUG_PRIVATE_VERSION && getConnectionsManager().isTestBackend(); - if (testBackend != LoginActivity.this.testBackend) { - getConnectionsManager().switchBackend(false); - testBackend = LoginActivity.this.testBackend; - } - if (getParentActivity() instanceof LaunchActivity) { - for (int a = 0; a < UserConfig.MAX_ACCOUNT_COUNT; a++) { - UserConfig userConfig = UserConfig.getInstance(a); - if (!userConfig.isClientActivated()) { - continue; - } - String userPhone = userConfig.getCurrentUser().phone; - if (PhoneNumberUtils.compare(phone, userPhone) && ConnectionsManager.getInstance(a).isTestBackend() == testBackend) { - final int num = a; - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setTitle(LocaleController.getString(R.string.AppName)); - builder.setMessage(LocaleController.getString("AccountAlreadyLoggedIn", R.string.AccountAlreadyLoggedIn)); - builder.setPositiveButton(LocaleController.getString("AccountSwitch", R.string.AccountSwitch), (dialog, which) -> { - if (UserConfig.selectedAccount != num) { - ((LaunchActivity) getParentActivity()).switchToAccount(num, false); - } - finishFragment(); - }); - builder.setNegativeButton(LocaleController.getString("OK", R.string.OK), null); - showDialog(builder.create()); - needHideProgress(false); - return; + if (activityMode == MODE_LOGIN) { + boolean testBackend = BuildVars.DEBUG_PRIVATE_VERSION && getConnectionsManager().isTestBackend(); + if (testBackend != LoginActivity.this.testBackend) { + getConnectionsManager().switchBackend(false); + testBackend = LoginActivity.this.testBackend; + } + + if (getParentActivity() instanceof LaunchActivity) { + for (int a = 0; a < UserConfig.MAX_ACCOUNT_COUNT; a++) { + UserConfig userConfig = UserConfig.getInstance(a); + if (!userConfig.isClientActivated()) { + continue; + } + String userPhone = userConfig.getCurrentUser().phone; + if (PhoneNumberUtils.compare(phone, userPhone) && ConnectionsManager.getInstance(a).isTestBackend() == testBackend) { + final int num = a; + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString(R.string.AppName)); + builder.setMessage(LocaleController.getString("AccountAlreadyLoggedIn", R.string.AccountAlreadyLoggedIn)); + builder.setPositiveButton(LocaleController.getString("AccountSwitch", R.string.AccountSwitch), (dialog, which) -> { + if (UserConfig.selectedAccount != num) { + ((LaunchActivity) getParentActivity()).switchToAccount(num, false); + } + finishFragment(); + }); + builder.setNegativeButton(LocaleController.getString("OK", R.string.OK), null); + showDialog(builder.create()); + needHideProgress(false); + return; + } } } } - ConnectionsManager.getInstance(currentAccount).cleanup(false); - final TLRPC.TL_auth_sendCode req = new TLRPC.TL_auth_sendCode(); - req.api_hash = BuildVars.APP_HASH; - req.api_id = BuildVars.APP_ID; - req.phone_number = phone; - req.settings = new TLRPC.TL_codeSettings(); - req.settings.allow_flashcall = simcardAvailable && allowCall && allowCancelCall && allowReadCallLog; - req.settings.allow_missed_call = simcardAvailable && allowCall; - req.settings.allow_app_hash = ApplicationLoader.hasPlayServices; + TLRPC.TL_codeSettings settings = new TLRPC.TL_codeSettings(); + settings.allow_flashcall = simcardAvailable && allowCall && allowCancelCall && allowReadCallLog; + settings.allow_missed_call = simcardAvailable && allowCall; + settings.allow_app_hash = ApplicationLoader.hasPlayServices; + ArrayList tokens = MessagesController.getSavedLogOutTokens(); if (tokens != null) { for (int i = 0; i < tokens.size(); i++) { - if (req.settings.logout_tokens == null) { - req.settings.logout_tokens = new ArrayList<>(); + if (settings.logout_tokens == null) { + settings.logout_tokens = new ArrayList<>(); } - req.settings.logout_tokens.add(tokens.get(i).future_auth_token); + settings.logout_tokens.add(tokens.get(i).future_auth_token); } MessagesController.saveLogOutTokens(tokens); } - if (req.settings.logout_tokens != null) { - req.settings.flags |= 64; + if (settings.logout_tokens != null) { + settings.flags |= 64; } SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); - if (req.settings.allow_app_hash) { + if (settings.allow_app_hash) { preferences.edit().putString("sms_hash", BuildVars.SMS_HASH).apply(); } else { preferences.edit().remove("sms_hash").apply(); } - if (req.settings.allow_flashcall) { + if (settings.allow_flashcall) { try { String number = tm.getLine1Number(); if (!TextUtils.isEmpty(number)) { - req.settings.current_number = PhoneNumberUtils.compare(phone, number); - if (!req.settings.current_number) { - req.settings.allow_flashcall = false; + settings.current_number = PhoneNumberUtils.compare(phone, number); + if (!settings.current_number) { + settings.allow_flashcall = false; } } else { if (UserConfig.getActivatedAccountsCount() > 0) { - req.settings.allow_flashcall = false; + settings.allow_flashcall = false; } else { - req.settings.current_number = false; + settings.current_number = false; } } } catch (Exception e) { - req.settings.allow_flashcall = false; + settings.allow_flashcall = false; FileLog.e(e); } } - final Bundle params = new Bundle(); + + TLObject req; + if (activityMode == MODE_CHANGE_PHONE_NUMBER) { + TLRPC.TL_account_sendChangePhoneCode changePhoneCode = new TLRPC.TL_account_sendChangePhoneCode(); + changePhoneCode.phone_number = phone; + changePhoneCode.settings = settings; + req = changePhoneCode; + } else { + ConnectionsManager.getInstance(currentAccount).cleanup(false); + + TLRPC.TL_auth_sendCode sendCode = new TLRPC.TL_auth_sendCode(); + sendCode.api_hash = BuildVars.APP_HASH; + sendCode.api_id = BuildVars.APP_ID; + sendCode.phone_number = phone; + sendCode.settings = settings; + req = sendCode; + } + + Bundle params = new Bundle(); params.putString("phone", "+" + codeField.getText() + " " + phoneField.getText()); try { params.putString("ephone", "+" + PhoneFormat.stripExceptNumbers(codeField.getText().toString()) + " " + PhoneFormat.stripExceptNumbers(phoneField.getText().toString())); @@ -2493,13 +2554,13 @@ public class LoginActivity extends BaseFragment { } }), ConnectionsManager.RequestFlagFailOnServerErrors | ConnectionsManager.RequestFlagWithoutLogin); } else if (error.text.contains("PHONE_NUMBER_INVALID")) { - needShowInvalidAlert(LoginActivity.this, req.phone_number, phoneInputData, false); + needShowInvalidAlert(LoginActivity.this, phone, phoneInputData, false); } else if (error.text.contains("PHONE_PASSWORD_FLOOD")) { needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), LocaleController.getString("FloodWait", R.string.FloodWait)); } else if (error.text.contains("PHONE_NUMBER_FLOOD")) { needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), LocaleController.getString("PhoneNumberFlood", R.string.PhoneNumberFlood)); } else if (error.text.contains("PHONE_NUMBER_BANNED")) { - needShowInvalidAlert(LoginActivity.this, req.phone_number, phoneInputData, true); + needShowInvalidAlert(LoginActivity.this, phone, phoneInputData, true); } else if (error.text.contains("PHONE_CODE_EMPTY") || error.text.contains("PHONE_CODE_INVALID")) { needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), LocaleController.getString("InvalidCode", R.string.InvalidCode)); } else if (error.text.contains("PHONE_CODE_EXPIRED")) { @@ -2507,7 +2568,7 @@ public class LoginActivity extends BaseFragment { } else if (error.text.startsWith("FLOOD_WAIT")) { needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), LocaleController.getString("FloodWait", R.string.FloodWait)); } else if (error.code != -1000) { - needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), error.text); + AlertsCreator.processError(currentAccount, error, LoginActivity.this, req, phoneInputData.phoneNumber); } } } @@ -2518,7 +2579,7 @@ public class LoginActivity extends BaseFragment { private boolean numberFilled; public void fillNumber() { - if (numberFilled) { + if (numberFilled || activityMode != MODE_LOGIN) { return; } try { @@ -2764,7 +2825,16 @@ public class LoginActivity extends BaseFragment { titleTextView.setLineSpacing(AndroidUtilities.dp(2), 1.0f); titleTextView.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); - String overrideTitle = cancelAccountDeletionMode ? LocaleController.getString(R.string.CancelAccountReset) : null; + String overrideTitle; + switch (activityMode) { + default: + case MODE_LOGIN: + overrideTitle = null; + break; + case MODE_CANCEL_ACCOUNT_DELETION: + overrideTitle = LocaleController.getString(R.string.CancelAccountReset); + break; + } FrameLayout centerContainer = null; if (currentType == AUTH_TYPE_MISSED_CALL) { titleTextView.setText(overrideTitle != null ? overrideTitle : LocaleController.getString("MissedCallDescriptionTitle", R.string.MissedCallDescriptionTitle)); @@ -2895,12 +2965,19 @@ public class LoginActivity extends BaseFragment { } else { timeText.setText(LocaleController.getString("SendingSms", R.string.SendingSms)); } + Bundle params = new Bundle(); + params.putString("phone", phone); + params.putString("ephone", emailPhone); + params.putString("phoneFormated", requestPhone); + createCodeTimer(); TLRPC.TL_auth_resendCode req = new TLRPC.TL_auth_resendCode(); req.phone_number = requestPhone; req.phone_code_hash = phoneHash; ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> { - if (error != null && error.text != null) { + if (response != null) { + AndroidUtilities.runOnUIThread(() -> fillNextCodeParams(params, (TLRPC.TL_auth_sentCode) response)); + } else if (error != null && error.text != null) { AndroidUtilities.runOnUIThread(() -> lastError = error.text); } }, ConnectionsManager.RequestFlagFailOnServerErrors | ConnectionsManager.RequestFlagWithoutLogin); @@ -2966,7 +3043,7 @@ public class LoginActivity extends BaseFragment { if (nextPressed) { return; } - boolean email = nextType == AUTH_TYPE_CALL && currentType == AUTH_TYPE_SMS || nextType == 0; + boolean email = nextType == 0; if (!email) { if (radialProgressView.getTag() != null) { return; @@ -3000,7 +3077,7 @@ public class LoginActivity extends BaseFragment { @Override public void updateColors() { - confirmTextView.setTextColor(Theme.getColor(cancelAccountDeletionMode ? Theme.key_windowBackgroundWhiteBlackText : Theme.key_windowBackgroundWhiteGrayText6)); + confirmTextView.setTextColor(Theme.getColor(isInCancelAccountDeletionMode() ? Theme.key_windowBackgroundWhiteBlackText : Theme.key_windowBackgroundWhiteGrayText6)); confirmTextView.setLinkTextColor(Theme.getColor(Theme.key_chats_actionBackground)); titleTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); @@ -3083,6 +3160,19 @@ public class LoginActivity extends BaseFragment { tryShowProgress(reqId); } + @Override + protected void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + + if (codeFieldContainer != null && codeFieldContainer.codeField != null) { + for (CodeNumberField f : codeFieldContainer.codeField) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + f.setShowSoftInputOnFocusCompat(!(hasCustomKeyboard() && !isCustomKeyboardForceDisabled())); + } + } + } + } + private void tryShowProgress(int reqId) { tryShowProgress(reqId, true); } @@ -3224,7 +3314,7 @@ public class LoginActivity extends BaseFragment { String number = PhoneFormat.getInstance().format(phone); CharSequence str = ""; - if (cancelAccountDeletionMode) { + if (isInCancelAccountDeletionMode()) { SpannableStringBuilder spanned = new SpannableStringBuilder(AndroidUtilities.replaceTags(LocaleController.formatString("CancelAccountResetInfo2", R.string.CancelAccountResetInfo2, PhoneFormat.getInstance().format("+" + number)))); int startIndex = TextUtils.indexOf(spanned, '*'); @@ -3477,121 +3567,52 @@ public class LoginActivity extends BaseFragment { } waitingForEvent = false; - if (cancelAccountDeletionMode) { - requestPhone = cancelDeletionPhone; - final TLRPC.TL_account_confirmPhone req = new TLRPC.TL_account_confirmPhone(); - req.phone_code = code; - req.phone_code_hash = phoneHash; - destroyTimer(); + switch (activityMode) { + case MODE_CHANGE_PHONE_NUMBER: { + TLRPC.TL_account_changePhone req = new TLRPC.TL_account_changePhone(); + req.phone_number = requestPhone; + req.phone_code = code; + req.phone_code_hash = phoneHash; + destroyTimer(); - codeFieldContainer.isFocusSuppressed = true; - for (CodeNumberField f : codeFieldContainer.codeField) { - f.animateFocusedProgress(0); - } - - int reqId = ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { - tryHideProgress(false); - nextPressed = false; - if (error == null) { - animateSuccess(()-> new AlertDialog.Builder(getParentActivity()) - .setTitle(LocaleController.getString(R.string.CancelLinkSuccessTitle)) - .setMessage(LocaleController.formatString("CancelLinkSuccess", R.string.CancelLinkSuccess, PhoneFormat.getInstance().format("+" + phone))) - .setPositiveButton(LocaleController.getString(R.string.Close), null) - .setOnDismissListener(dialog -> finishFragment()) - .show()); - } else { - lastError = error.text; - if (currentType == AUTH_TYPE_FLASH_CALL && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_SMS) || currentType == AUTH_TYPE_SMS && - (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_FLASH_CALL) || currentType == AUTH_TYPE_CALL && nextType == AUTH_TYPE_SMS) { - createTimer(); - } - if (currentType == AUTH_TYPE_SMS) { - AndroidUtilities.setWaitingForSms(true); - NotificationCenter.getGlobalInstance().addObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveSmsCode); - } else if (currentType == AUTH_TYPE_FLASH_CALL) { - AndroidUtilities.setWaitingForCall(true); - NotificationCenter.getGlobalInstance().addObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveCall); - } - waitingForEvent = true; - if (currentType != AUTH_TYPE_FLASH_CALL) { - AlertsCreator.processError(currentAccount, error, LoginActivity.this, req); - } - if (error.text.contains("PHONE_CODE_EMPTY") || error.text.contains("PHONE_CODE_INVALID")) { - shakeWrongCode(); - } else if (error.text.contains("PHONE_CODE_EXPIRED")) { - onBackPressed(true); - setPage(VIEW_PHONE_INPUT, true, null, true); - } + codeFieldContainer.isFocusSuppressed = true; + for (CodeNumberField f : codeFieldContainer.codeField) { + f.animateFocusedProgress(0); } - }), ConnectionsManager.RequestFlagFailOnServerErrors); - tryShowProgress(reqId); - } else { - final TLRPC.TL_auth_signIn req = new TLRPC.TL_auth_signIn(); - req.phone_number = requestPhone; - req.phone_code = code; - req.phone_code_hash = phoneHash; - destroyTimer(); - codeFieldContainer.isFocusSuppressed = true; - for (CodeNumberField f : codeFieldContainer.codeField) { - f.animateFocusedProgress(0); - } - - int reqId = ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { - tryHideProgress(false, true); - - boolean ok = false; - - if (error == null) { + int reqId = ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + tryHideProgress(false, true); nextPressed = false; - ok = true; - showDoneButton(false, true); - destroyTimer(); - destroyCodeTimer(); - if (response instanceof TLRPC.TL_auth_authorizationSignUpRequired) { - TLRPC.TL_auth_authorizationSignUpRequired authorization = (TLRPC.TL_auth_authorizationSignUpRequired) response; - if (authorization.terms_of_service != null) { - currentTermsOfService = authorization.terms_of_service; - } - Bundle params = new Bundle(); - params.putString("phoneFormated", requestPhone); - params.putString("phoneHash", phoneHash); - params.putString("code", req.phone_code); - - animateSuccess(() -> setPage(VIEW_REGISTER, true, params, false)); - } else { - animateSuccess(() -> onAuthSuccess((TLRPC.TL_auth_authorization) response)); - } - } else { - lastError = error.text; - if (error.text.contains("SESSION_PASSWORD_NEEDED")) { - ok = true; - TLRPC.TL_account_getPassword req2 = new TLRPC.TL_account_getPassword(); - ConnectionsManager.getInstance(currentAccount).sendRequest(req2, (response1, error1) -> AndroidUtilities.runOnUIThread(() -> { - nextPressed = false; - showDoneButton(false, true); - if (error1 == null) { - TLRPC.TL_account_password password = (TLRPC.TL_account_password) response1; - if (!TwoStepVerificationActivity.canHandleCurrentPassword(password, true)) { - AlertsCreator.showUpdateAppAlert(getParentActivity(), LocaleController.getString("UpdateAppAlert", R.string.UpdateAppAlert), true); - return; - } - Bundle bundle = new Bundle(); - SerializedData data = new SerializedData(password.getObjectSize()); - password.serializeToStream(data); - bundle.putString("password", Utilities.bytesToHex(data.toByteArray())); - bundle.putString("phoneFormated", requestPhone); - bundle.putString("phoneHash", phoneHash); - bundle.putString("code", req.phone_code); - - animateSuccess(() -> setPage(VIEW_PASSWORD, true, bundle, false)); - } else { - needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), error1.text); - } - }), ConnectionsManager.RequestFlagFailOnServerErrors | ConnectionsManager.RequestFlagWithoutLogin); + if (error == null) { + TLRPC.User user = (TLRPC.User) response; destroyTimer(); destroyCodeTimer(); + UserConfig.getInstance(currentAccount).setCurrentUser(user); + UserConfig.getInstance(currentAccount).saveConfig(true); + ArrayList users = new ArrayList<>(); + users.add(user); + MessagesStorage.getInstance(currentAccount).putUsersAndChats(users, null, true, true); + MessagesController.getInstance(currentAccount).putUser(user, false); + NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.mainUserInfoChanged); + getMessagesController().removeSuggestion(0, "VALIDATE_PHONE_NUMBER"); + + if (currentType == AUTH_TYPE_FLASH_CALL) { + AndroidUtilities.endIncomingCall(); + } + + animateSuccess(()-> { + try { + fragmentView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); + } catch (Exception ignored) {} + new AlertDialog.Builder(getContext()) + .setTitle(LocaleController.getString(R.string.YourPasswordSuccess)) + .setMessage(LocaleController.getString(R.string.ChangePhoneNumberSuccess)) + .setPositiveButton(LocaleController.getString(R.string.OK), null) + .setOnDismissListener(dialog -> finishFragment()) + .show(); + }); } else { + lastError = error.text; nextPressed = false; showDoneButton(false, true); if (currentType == AUTH_TYPE_FLASH_CALL && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_SMS) || currentType == AUTH_TYPE_SMS && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_FLASH_CALL) || currentType == AUTH_TYPE_CALL && nextType == AUTH_TYPE_SMS) { @@ -3632,15 +3653,179 @@ public class LoginActivity extends BaseFragment { } } } + }), ConnectionsManager.RequestFlagFailOnServerErrors); + tryShowProgress(reqId, true); + showDoneButton(true, true); + break; + } + case MODE_CANCEL_ACCOUNT_DELETION: { + requestPhone = cancelDeletionPhone; + TLRPC.TL_account_confirmPhone req = new TLRPC.TL_account_confirmPhone(); + req.phone_code = code; + req.phone_code_hash = phoneHash; + destroyTimer(); + + codeFieldContainer.isFocusSuppressed = true; + for (CodeNumberField f : codeFieldContainer.codeField) { + f.animateFocusedProgress(0); } - if (ok) { - if (currentType == AUTH_TYPE_FLASH_CALL) { - AndroidUtilities.endIncomingCall(); + + int reqId = ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + tryHideProgress(false); + nextPressed = false; + if (error == null) { + animateSuccess(() -> new AlertDialog.Builder(getParentActivity()) + .setTitle(LocaleController.getString(R.string.CancelLinkSuccessTitle)) + .setMessage(LocaleController.formatString("CancelLinkSuccess", R.string.CancelLinkSuccess, PhoneFormat.getInstance().format("+" + phone))) + .setPositiveButton(LocaleController.getString(R.string.Close), null) + .setOnDismissListener(dialog -> finishFragment()) + .show()); + } else { + lastError = error.text; + if (currentType == AUTH_TYPE_FLASH_CALL && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_SMS) || currentType == AUTH_TYPE_SMS && + (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_FLASH_CALL) || currentType == AUTH_TYPE_CALL && nextType == AUTH_TYPE_SMS) { + createTimer(); + } + if (currentType == AUTH_TYPE_SMS) { + AndroidUtilities.setWaitingForSms(true); + NotificationCenter.getGlobalInstance().addObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveSmsCode); + } else if (currentType == AUTH_TYPE_FLASH_CALL) { + AndroidUtilities.setWaitingForCall(true); + NotificationCenter.getGlobalInstance().addObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveCall); + } + waitingForEvent = true; + if (currentType != AUTH_TYPE_FLASH_CALL) { + AlertsCreator.processError(currentAccount, error, LoginActivity.this, req); + } + if (error.text.contains("PHONE_CODE_EMPTY") || error.text.contains("PHONE_CODE_INVALID")) { + shakeWrongCode(); + } else if (error.text.contains("PHONE_CODE_EXPIRED")) { + onBackPressed(true); + setPage(VIEW_PHONE_INPUT, true, null, true); + } } + }), ConnectionsManager.RequestFlagFailOnServerErrors); + tryShowProgress(reqId); + break; + } + default: { + TLRPC.TL_auth_signIn req = new TLRPC.TL_auth_signIn(); + req.phone_number = requestPhone; + req.phone_code = code; + req.phone_code_hash = phoneHash; + destroyTimer(); + + codeFieldContainer.isFocusSuppressed = true; + for (CodeNumberField f : codeFieldContainer.codeField) { + f.animateFocusedProgress(0); } - }), ConnectionsManager.RequestFlagFailOnServerErrors | ConnectionsManager.RequestFlagWithoutLogin); - tryShowProgress(reqId, true); - showDoneButton(true, true); + + int reqId = ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + tryHideProgress(false, true); + + boolean ok = false; + + if (error == null) { + nextPressed = false; + ok = true; + showDoneButton(false, true); + destroyTimer(); + destroyCodeTimer(); + if (response instanceof TLRPC.TL_auth_authorizationSignUpRequired) { + TLRPC.TL_auth_authorizationSignUpRequired authorization = (TLRPC.TL_auth_authorizationSignUpRequired) response; + if (authorization.terms_of_service != null) { + currentTermsOfService = authorization.terms_of_service; + } + Bundle params = new Bundle(); + params.putString("phoneFormated", requestPhone); + params.putString("phoneHash", phoneHash); + params.putString("code", req.phone_code); + + animateSuccess(() -> setPage(VIEW_REGISTER, true, params, false)); + } else { + animateSuccess(() -> onAuthSuccess((TLRPC.TL_auth_authorization) response)); + } + } else { + lastError = error.text; + if (error.text.contains("SESSION_PASSWORD_NEEDED")) { + ok = true; + TLRPC.TL_account_getPassword req2 = new TLRPC.TL_account_getPassword(); + ConnectionsManager.getInstance(currentAccount).sendRequest(req2, (response1, error1) -> AndroidUtilities.runOnUIThread(() -> { + nextPressed = false; + showDoneButton(false, true); + if (error1 == null) { + TLRPC.TL_account_password password = (TLRPC.TL_account_password) response1; + if (!TwoStepVerificationActivity.canHandleCurrentPassword(password, true)) { + AlertsCreator.showUpdateAppAlert(getParentActivity(), LocaleController.getString("UpdateAppAlert", R.string.UpdateAppAlert), true); + return; + } + Bundle bundle = new Bundle(); + SerializedData data = new SerializedData(password.getObjectSize()); + password.serializeToStream(data); + bundle.putString("password", Utilities.bytesToHex(data.toByteArray())); + bundle.putString("phoneFormated", requestPhone); + bundle.putString("phoneHash", phoneHash); + bundle.putString("code", req.phone_code); + + animateSuccess(() -> setPage(VIEW_PASSWORD, true, bundle, false)); + } else { + needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), error1.text); + } + }), ConnectionsManager.RequestFlagFailOnServerErrors | ConnectionsManager.RequestFlagWithoutLogin); + destroyTimer(); + destroyCodeTimer(); + } else { + nextPressed = false; + showDoneButton(false, true); + if (currentType == AUTH_TYPE_FLASH_CALL && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_SMS) || currentType == AUTH_TYPE_SMS && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_FLASH_CALL) || currentType == AUTH_TYPE_CALL && nextType == AUTH_TYPE_SMS) { + createTimer(); + } + if (currentType == AUTH_TYPE_SMS) { + AndroidUtilities.setWaitingForSms(true); + NotificationCenter.getGlobalInstance().addObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveSmsCode); + } else if (currentType == AUTH_TYPE_FLASH_CALL) { + AndroidUtilities.setWaitingForCall(true); + NotificationCenter.getGlobalInstance().addObserver(LoginActivitySmsView.this, NotificationCenter.didReceiveCall); + } + waitingForEvent = true; + if (currentType != AUTH_TYPE_FLASH_CALL) { + boolean isWrongCode = false; + if (error.text.contains("PHONE_NUMBER_INVALID")) { + needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), LocaleController.getString("InvalidPhoneNumber", R.string.InvalidPhoneNumber)); + } else if (error.text.contains("PHONE_CODE_EMPTY") || error.text.contains("PHONE_CODE_INVALID")) { + shakeWrongCode(); + isWrongCode = true; + } else if (error.text.contains("PHONE_CODE_EXPIRED")) { + onBackPressed(true); + setPage(VIEW_PHONE_INPUT, true, null, true); + needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), LocaleController.getString("CodeExpired", R.string.CodeExpired)); + } else if (error.text.startsWith("FLOOD_WAIT")) { + needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), LocaleController.getString("FloodWait", R.string.FloodWait)); + } else { + needShowAlert(LocaleController.getString(R.string.RestorePasswordNoEmailTitle), LocaleController.getString("ErrorOccurred", R.string.ErrorOccurred) + "\n" + error.text); + } + + if (!isWrongCode) { + for (int a = 0; a < codeFieldContainer.codeField.length; a++) { + codeFieldContainer.codeField[a].setText(""); + } + + codeFieldContainer.isFocusSuppressed = false; + codeFieldContainer.codeField[0].requestFocus(); + } + } + } + } + if (ok) { + if (currentType == AUTH_TYPE_FLASH_CALL) { + AndroidUtilities.endIncomingCall(); + } + } + }), ConnectionsManager.RequestFlagFailOnServerErrors | ConnectionsManager.RequestFlagWithoutLogin); + tryShowProgress(reqId, true); + showDoneButton(true, true); + break; + } } } @@ -3694,7 +3879,7 @@ public class LoginActivity extends BaseFragment { @Override public boolean onBackPressed(boolean force) { - if (cancelAccountDeletionMode) { + if (activityMode != MODE_LOGIN) { finishFragment(); return false; } @@ -5199,7 +5384,6 @@ public class LoginActivity extends BaseFragment { avatarBig = null; showAvatarProgress(false, true); avatarImage.setImage(null, null, avatarDrawable, null); - avatarEditor.setImageResource(R.drawable.actions_setphoto); avatarEditor.setAnimation(cameraDrawable); cameraDrawable.setCurrentFrame(0); isCameraWaitAnimationAllowed = true; @@ -6022,6 +6206,10 @@ public class LoginActivity extends BaseFragment { } private void show() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + ObjectAnimator.ofFloat(fabContainer, View.TRANSLATION_Z, fabContainer.getTranslationZ(), 0).setDuration(150).start(); + } + ValueAnimator anim = ValueAnimator.ofFloat(0, 1).setDuration(250); anim.addListener(new AnimatorListenerAdapter() { @Override @@ -6104,6 +6292,10 @@ public class LoginActivity extends BaseFragment { if (getParent() instanceof ViewGroup) { ((ViewGroup) getParent()).removeView(PhoneNumberConfirmView.this); } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + ObjectAnimator.ofFloat(fabContainer, View.TRANSLATION_Z, 0, AndroidUtilities.dp(2)).setDuration(150).start(); + } fabContainer.setVisibility(VISIBLE); } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LogoutActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LogoutActivity.java index bd6ffe226..9d47cf04f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LogoutActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LogoutActivity.java @@ -134,29 +134,32 @@ public class LogoutActivity extends BaseFragment { } else if (position == phoneRow) { presentFragment(new ActionIntroActivity(ActionIntroActivity.ACTION_TYPE_CHANGE_PHONE_NUMBER)); } else if (position == supportRow) { - showDialog(AlertsCreator.createSupportAlert(LogoutActivity.this)); + showDialog(AlertsCreator.createSupportAlert(LogoutActivity.this, null)); } else if (position == logoutRow) { if (getParentActivity() == null) { return; } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - UserConfig userConfig = getUserConfig(); - builder.setMessage(LocaleController.getString("AreYouSureLogout", R.string.AreYouSureLogout)); - builder.setTitle(LocaleController.getString("LogOut", R.string.LogOut)); - builder.setPositiveButton(LocaleController.getString("LogOut", R.string.LogOut), (dialogInterface, i) -> MessagesController.getInstance(currentAccount).performLogout(1)); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - AlertDialog alertDialog = builder.create(); - showDialog(alertDialog); - TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); - if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); - } + showDialog(makeLogOutDialog(getParentActivity(), currentAccount)); } }); return fragmentView; } + public static AlertDialog makeLogOutDialog(Context context, int currentAccount) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setMessage(LocaleController.getString("AreYouSureLogout", R.string.AreYouSureLogout)); + builder.setTitle(LocaleController.getString("LogOut", R.string.LogOut)); + builder.setPositiveButton(LocaleController.getString("LogOut", R.string.LogOut), (dialogInterface, i) -> MessagesController.getInstance(currentAccount).performLogout(1)); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + AlertDialog alertDialog = builder.create(); + TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); + if (button != null) { + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + } + return alertDialog; + } + @Override protected void onDialogDismiss(Dialog dialog) { DownloadController.getInstance(currentAccount).checkAutodownloadSettings(); @@ -196,15 +199,15 @@ public class LogoutActivity extends BaseFragment { case 1: { TextDetailSettingsCell view = (TextDetailSettingsCell) holder.itemView; if (position == addAccountRow) { - view.setTextAndValueAndIcon(LocaleController.getString("AddAnotherAccount", R.string.AddAnotherAccount), LocaleController.getString("AddAnotherAccountInfo", R.string.AddAnotherAccountInfo), R.drawable.actions_addmember2, true); + view.setTextAndValueAndIcon(LocaleController.getString("AddAnotherAccount", R.string.AddAnotherAccount), LocaleController.getString("AddAnotherAccountInfo", R.string.AddAnotherAccountInfo), R.drawable.msg_contact_add, true); } else if (position == passcodeRow) { - view.setTextAndValueAndIcon(LocaleController.getString("SetPasscode", R.string.SetPasscode), LocaleController.getString("SetPasscodeInfo", R.string.SetPasscodeInfo), R.drawable.menu_passcode, true); + view.setTextAndValueAndIcon(LocaleController.getString("SetPasscode", R.string.SetPasscode), LocaleController.getString("SetPasscodeInfo", R.string.SetPasscodeInfo), R.drawable.msg_permissions, true); } else if (position == cacheRow) { - view.setTextAndValueAndIcon(LocaleController.getString("ClearCache", R.string.ClearCache), LocaleController.getString("ClearCacheInfo", R.string.ClearCacheInfo), R.drawable.menu_clearcache, true); + view.setTextAndValueAndIcon(LocaleController.getString("ClearCache", R.string.ClearCache), LocaleController.getString("ClearCacheInfo", R.string.ClearCacheInfo), R.drawable.msg_clearcache, true); } else if (position == phoneRow) { - view.setTextAndValueAndIcon(LocaleController.getString("ChangePhoneNumber", R.string.ChangePhoneNumber), LocaleController.getString("ChangePhoneNumberInfo", R.string.ChangePhoneNumberInfo), R.drawable.menu_newphone, true); + view.setTextAndValueAndIcon(LocaleController.getString("ChangePhoneNumber", R.string.ChangePhoneNumber), LocaleController.getString("ChangePhoneNumberInfo", R.string.ChangePhoneNumberInfo), R.drawable.msg_newphone, true); } else if (position == supportRow) { - view.setTextAndValueAndIcon(LocaleController.getString("ContactSupport", R.string.ContactSupport), LocaleController.getString("ContactSupportInfo", R.string.ContactSupportInfo), R.drawable.menu_support, false); + view.setTextAndValueAndIcon(LocaleController.getString("ContactSupport", R.string.ContactSupport), LocaleController.getString("ContactSupportInfo", R.string.ContactSupportInfo), R.drawable.msg_help, false); } break; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessageSeenView.java b/TMessagesProj/src/main/java/org/telegram/ui/MessageSeenView.java index de84bb8d4..0b8e2ab92 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessageSeenView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessageSeenView.java @@ -10,6 +10,7 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -247,7 +248,19 @@ public class MessageSeenView extends FrameLayout { } public RecyclerListView createListView() { - RecyclerListView recyclerListView = new RecyclerListView(getContext()); + RecyclerListView recyclerListView = new RecyclerListView(getContext()) { + @Override + protected void onMeasure(int widthSpec, int heightSpec) { + int height = MeasureSpec.getSize(heightSpec); + int listViewTotalHeight = AndroidUtilities.dp(8) + AndroidUtilities.dp(44) * getAdapter().getItemCount(); + + if (listViewTotalHeight > height) { + listViewTotalHeight = height; + } + + super.onMeasure(widthSpec, MeasureSpec.makeMeasureSpec(listViewTotalHeight, MeasureSpec.EXACTLY)); + } + }; recyclerListView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerListView.addItemDecoration(new RecyclerView.ItemDecoration() { @Override @@ -305,6 +318,7 @@ public class MessageSeenView extends FrameLayout { nameView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); nameView.setLines(1); nameView.setEllipsize(TextUtils.TruncateAt.END); + nameView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); addView(nameView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.CENTER_VERTICAL, 59, 0, 13, 0)); nameView.setTextColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem)); @@ -323,5 +337,11 @@ public class MessageSeenView extends FrameLayout { nameView.setText(ContactsController.formatName(user.first_name, user.last_name)); } } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setText(LocaleController.formatString("AccDescrPersonHasSeen", R.string.AccDescrPersonHasSeen, nameView.getText())); + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/NewContactActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/NewContactActivity.java index 2b00ddd47..6fc1f988f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/NewContactActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/NewContactActivity.java @@ -16,7 +16,6 @@ import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.content.Context; import android.content.Intent; -import android.graphics.Rect; import android.net.Uri; import android.os.Vibrator; import android.telephony.TelephonyManager; @@ -188,7 +187,7 @@ public class NewContactActivity extends BaseFragment implements AdapterView.OnIt avatarDrawable.setInfo(5, "", ""); ActionBarMenu menu = actionBar.createMenu(); - editDoneItem = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); + editDoneItem = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56)); editDoneItem.setContentDescription(LocaleController.getString("Done", R.string.Done)); editDoneItemProgress = new ContextProgressView(context, 1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsCustomSettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsCustomSettingsActivity.java index eb7bd5b74..c58a91638 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsCustomSettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsCustomSettingsActivity.java @@ -40,6 +40,7 @@ import org.telegram.messenger.DialogObject; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.NotificationsController; import org.telegram.messenger.R; @@ -64,6 +65,8 @@ import org.telegram.ui.Cells.TextColorCell; import org.telegram.ui.Cells.TextSettingsCell; import org.telegram.ui.Cells.UserCell; import org.telegram.ui.Components.AlertsCreator; +import org.telegram.ui.Components.BulletinFactory; +import org.telegram.ui.Components.ChatNotificationsPopupWrapper; import org.telegram.ui.Components.EmptyTextProgressView; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RecyclerListView; @@ -267,8 +270,93 @@ public class NotificationsCustomSettingsActivity extends BaseFragment implements return; } - AlertsCreator.showCustomNotificationsDialog(NotificationsCustomSettingsActivity.this, exception.did, -1, null, currentAccount, null, param -> { - if (param == 0) { + long did = exception.did; + boolean defaultEnabled = NotificationsController.getInstance(currentAccount).isGlobalNotificationsEnabled(did); + ChatNotificationsPopupWrapper chatNotificationsPopupWrapper = new ChatNotificationsPopupWrapper(context, currentAccount, null, true, true, new ChatNotificationsPopupWrapper.Callback() { + @Override + public void toggleSound() { + SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); + boolean enabled = !preferences.getBoolean("sound_enabled_" + did, true); + preferences.edit().putBoolean("sound_enabled_" + did, enabled).apply(); + if (BulletinFactory.canShowBulletin(NotificationsCustomSettingsActivity.this)) { + BulletinFactory.createSoundEnabledBulletin(NotificationsCustomSettingsActivity.this, enabled ? NotificationsController.SETTING_SOUND_ON : NotificationsController.SETTING_SOUND_OFF, getResourceProvider()).show(); + } + } + + @Override + public void muteFor(int timeInSeconds) { + if (timeInSeconds == 0) { + if (getMessagesController().isDialogMuted(did)) { + toggleMute(); + } + if (BulletinFactory.canShowBulletin(NotificationsCustomSettingsActivity.this)) { + BulletinFactory.createMuteBulletin(NotificationsCustomSettingsActivity.this, NotificationsController.SETTING_MUTE_UNMUTE, timeInSeconds, getResourceProvider()).show(); + } + } else { + getNotificationsController().muteUntil(did, timeInSeconds); + if (BulletinFactory.canShowBulletin(NotificationsCustomSettingsActivity.this)) { + BulletinFactory.createMuteBulletin(NotificationsCustomSettingsActivity.this, NotificationsController.SETTING_MUTE_CUSTOM, timeInSeconds, getResourceProvider()).show(); + } + } + update(); + } + + @Override + public void showCustomize() { + if (did != 0) { + Bundle args = new Bundle(); + args.putLong("dialog_id", did); + ProfileNotificationsActivity fragment = new ProfileNotificationsActivity(args); + fragment.setDelegate(new ProfileNotificationsActivity.ProfileNotificationsActivityDelegate() { + @Override + public void didCreateNewException(NotificationsSettingsActivity.NotificationException exception) {} + + @Override + public void didRemoveException(long dialog_id) { + setDefault(); + } + }); + presentFragment(fragment); + } + } + + @Override + public void toggleMute() { + boolean muted = getMessagesController().isDialogMuted(did); + getNotificationsController().muteDialog(did, !muted); + BulletinFactory.createMuteBulletin(NotificationsCustomSettingsActivity.this, getMessagesController().isDialogMuted(did), null).show(); + update(); + } + + private void update() { + if (getMessagesController().isDialogMuted(did) != defaultEnabled) { + setDefault(); + } else { + setNotDefault(); + } + } + + private void setNotDefault() { + SharedPreferences preferences = getNotificationsSettings(); + exception.hasCustom = preferences.getBoolean("custom_" + exception.did, false); + exception.notify = preferences.getInt("notify2_" + exception.did, 0); + if (exception.notify != 0) { + int time = preferences.getInt("notifyuntil_" + exception.did, -1); + if (time != -1) { + exception.muteUntil = time; + } + } + if (newException) { + exceptions.add(exception); + exceptionsDict.put(exception.did, exception); + updateRows(true); + } else { + listView.getAdapter().notifyItemChanged(position); + } + actionBar.closeSearchField(); + } + + private void setDefault() { if (newException) { return; } @@ -291,29 +379,13 @@ public class NotificationsCustomSettingsActivity extends BaseFragment implements checkRowsEnabled(); } else { updateRows(true); - searchAdapter.notifyDataSetChanged(); - } - actionBar.closeSearchField(); - } else { - SharedPreferences preferences = getNotificationsSettings(); - exception.hasCustom = preferences.getBoolean("custom_" + exception.did, false); - exception.notify = preferences.getInt("notify2_" + exception.did, 0); - if (exception.notify != 0) { - int time = preferences.getInt("notifyuntil_" + exception.did, -1); - if (time != -1) { - exception.muteUntil = time; - } - } - if (newException) { - exceptions.add(exception); - exceptionsDict.put(exception.did, exception); - updateRows(true); - } else { - listView.getAdapter().notifyItemChanged(position); + searchAdapter.notifyItemChanged(position); } actionBar.closeSearchField(); } - }); + }, getResourceProvider()); + chatNotificationsPopupWrapper.update(did); + chatNotificationsPopupWrapper.showAsOptions(NotificationsCustomSettingsActivity.this, view, x, y); return; } if (position == exceptionsAddRow) { @@ -332,7 +404,7 @@ public class NotificationsCustomSettingsActivity extends BaseFragment implements Bundle args2 = new Bundle(); args2.putLong("dialog_id", dids.get(0)); args2.putBoolean("exception", true); - ProfileNotificationsActivity profileNotificationsActivity = new ProfileNotificationsActivity(args2); + ProfileNotificationsActivity profileNotificationsActivity = new ProfileNotificationsActivity(args2, getResourceProvider()); profileNotificationsActivity.setDelegate(exception -> { exceptions.add(0, exception); updateRows(true); @@ -438,7 +510,7 @@ public class NotificationsCustomSettingsActivity extends BaseFragment implements try { Bundle bundle = new Bundle(); bundle.putInt("type", currentType); - presentFragment(new NotificationsSoundActivity(bundle)); + presentFragment(new NotificationsSoundActivity(bundle, getResourceProvider())); // SharedPreferences preferences = getNotificationsSettings(); // Intent tmpIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); // tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); @@ -1357,7 +1429,7 @@ public class NotificationsCustomSettingsActivity extends BaseFragment implements case 7: { TextCell textCell = (TextCell) holder.itemView; if (position == exceptionsAddRow) { - textCell.setTextAndIcon(LocaleController.getString("NotificationsAddAnException", R.string.NotificationsAddAnException), R.drawable.actions_addmember2, exceptionsStartRow != -1); + textCell.setTextAndIcon(LocaleController.getString("NotificationsAddAnException", R.string.NotificationsAddAnException), R.drawable.msg_contact_add, exceptionsStartRow != -1); textCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); } else if (position == deleteAllRow) { textCell.setText(LocaleController.getString("NotificationsDeleteAllException", R.string.NotificationsDeleteAllException), false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSoundActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSoundActivity.java index b0d42f4f6..33c495aa2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSoundActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSoundActivity.java @@ -78,6 +78,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta NumberTextView selectedTonesCountTextView; RecyclerListView listView; Adapter adapter; + Theme.ResourcesProvider resourcesProvider; int rowCount; int serverTonesHeaderRow; @@ -114,7 +115,12 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta private final int tonesStreamType = AudioManager.STREAM_ALARM; public NotificationsSoundActivity(Bundle args) { + this(args, null); + } + + public NotificationsSoundActivity(Bundle args, Theme.ResourcesProvider resourcesProvider) { super(args); + this.resourcesProvider = resourcesProvider; } @Override @@ -157,8 +163,15 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta return super.onFragmentCreate(); } + @Override + public Theme.ResourcesProvider getResourceProvider() { + return resourcesProvider; + } + @Override public View createView(final Context context) { + actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_avatar_actionBarSelectorBlue, resourcesProvider), false); + actionBar.setItemsColor(Theme.getColor(Theme.key_actionBarDefaultIcon, resourcesProvider), false); actionBar.setBackButtonDrawable(new BackDrawable(false)); actionBar.setAllowOverlayTitle(false); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @@ -171,7 +184,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta finishFragment(); } } else if (id == deleteId) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder.setTitle(LocaleController.formatPluralString("DeleteTones", selectedTones.size())); builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatPluralString("DeleteTonesMessage", selectedTones.size()))); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), (dialog, which) -> { @@ -184,7 +197,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta AlertDialog dialog = builder.show(); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2, resourcesProvider)); } } else if (id == shareId) { if (selectedTones.size() == 1) { @@ -274,7 +287,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta actionBar.setTitle(LocaleController.getString("NotificationsSoundChannels", R.string.NotificationsSoundChannels)); } } else { - avatarContainer = new ChatAvatarContainer(context, null, false); + avatarContainer = new ChatAvatarContainer(context, null, false, resourcesProvider); avatarContainer.setOccupyStatusBar(!AndroidUtilities.isTablet()); actionBar.addView(avatarContainer, 0, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, !inPreviewMode ? 56 : 0, 0, 40, 0)); if (dialogId < 0) { @@ -296,7 +309,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta selectedTonesCountTextView = new NumberTextView(actionMode.getContext()); selectedTonesCountTextView.setTextSize(18); selectedTonesCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - selectedTonesCountTextView.setTextColor(Theme.getColor(Theme.key_actionBarActionModeDefaultIcon)); + selectedTonesCountTextView.setTextColor(Theme.getColor(Theme.key_actionBarActionModeDefaultIcon, resourcesProvider)); actionMode.addView(selectedTonesCountTextView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 72, 0, 0, 0)); selectedTonesCountTextView.setOnTouchListener((v, event) -> true); @@ -305,7 +318,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta fragmentView = new FrameLayout(context); FrameLayout frameLayout = (FrameLayout) fragmentView; - frameLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); + frameLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray, resourcesProvider)); listView = new RecyclerListView(context); frameLayout.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); @@ -317,7 +330,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta listView.setLayoutManager(new LinearLayoutManager(context)); listView.setOnItemClickListener((view, position) -> { if (position == uploadRow) { - chatAttachAlert = new ChatAttachAlert(context, NotificationsSoundActivity.this, false, false); + chatAttachAlert = new ChatAttachAlert(context, NotificationsSoundActivity.this, false, false, resourcesProvider); chatAttachAlert.setSoundPicker(); chatAttachAlert.init(); chatAttachAlert.show(); @@ -331,35 +344,39 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta if (lastPlayedRingtone != null) { lastPlayedRingtone.stop(); } - if (cell.tone.isSystemDefault) { - Ringtone r = RingtoneManager.getRingtone(context.getApplicationContext(), RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); - r.setStreamType(tonesStreamType); - lastPlayedRingtone = r; - r.play(); - } else if (cell.tone.uri != null && !cell.tone.fromServer) { - Ringtone r = RingtoneManager.getRingtone(context.getApplicationContext(), Uri.parse(cell.tone.uri)); - r.setStreamType(tonesStreamType); - lastPlayedRingtone = r; - r.play(); - } else if (cell.tone.fromServer) { - File file = null; - if (!TextUtils.isEmpty(cell.tone.uri)) { - File localUriFile = new File(cell.tone.uri); - if (localUriFile.exists()) { - file = localUriFile; - } - } - if (file == null) { - file = FileLoader.getPathToAttach(cell.tone.document); - } - if (file != null && file.exists()) { - Ringtone r = RingtoneManager.getRingtone(context.getApplicationContext(), Uri.parse(file.toString())); + try { + if (cell.tone.isSystemDefault) { + Ringtone r = RingtoneManager.getRingtone(context.getApplicationContext(), RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); r.setStreamType(tonesStreamType); lastPlayedRingtone = r; r.play(); - } else { - getFileLoader().loadFile(cell.tone.document, cell.tone.document, 2, 0); + } else if (cell.tone.uri != null && !cell.tone.fromServer) { + Ringtone r = RingtoneManager.getRingtone(context.getApplicationContext(), Uri.parse(cell.tone.uri)); + r.setStreamType(tonesStreamType); + lastPlayedRingtone = r; + r.play(); + } else if (cell.tone.fromServer) { + File file = null; + if (!TextUtils.isEmpty(cell.tone.uri)) { + File localUriFile = new File(cell.tone.uri); + if (localUriFile.exists()) { + file = localUriFile; + } + } + if (file == null) { + file = getFileLoader().getPathToAttach(cell.tone.document); + } + if (file != null && file.exists()) { + Ringtone r = RingtoneManager.getRingtone(context.getApplicationContext(), Uri.parse(file.toString())); + r.setStreamType(tonesStreamType); + lastPlayedRingtone = r; + r.play(); + } else { + getFileLoader().loadFile(cell.tone.document, cell.tone.document, 2, 0); + } } + } catch (Exception e) { + FileLog.e(e); } startSelectedTone = null; selectedTone = cell.tone; @@ -569,22 +586,22 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta Context context = parent.getContext(); switch (viewType) { case 0: - view = new ToneCell(context); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + view = new ToneCell(context, resourcesProvider); + view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite, resourcesProvider)); break; default: case 1: - view = new HeaderCell(context); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + view = new HeaderCell(context, resourcesProvider); + view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite, resourcesProvider)); break; case 2: - CreationTextCell creationTextCell = new CreationTextCell(context); + CreationTextCell creationTextCell = new CreationTextCell(context, resourcesProvider); creationTextCell.startPadding = 61; view = creationTextCell; - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite, resourcesProvider)); break; case 3: - view = new ShadowSectionCell(context); + view = new ShadowSectionCell(context, resourcesProvider); break; } view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT)); @@ -627,8 +644,8 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta CreationTextCell textCell = (CreationTextCell) holder.itemView; Drawable drawable1 = textCell.getContext().getResources().getDrawable(R.drawable.poll_add_circle); Drawable drawable2 = textCell.getContext().getResources().getDrawable(R.drawable.poll_add_plus); - drawable1.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_switchTrackChecked), PorterDuff.Mode.MULTIPLY)); - drawable2.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_checkboxCheck), PorterDuff.Mode.MULTIPLY)); + drawable1.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_switchTrackChecked, resourcesProvider), PorterDuff.Mode.MULTIPLY)); + drawable2.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_checkboxCheck, resourcesProvider), PorterDuff.Mode.MULTIPLY)); CombinedDrawable combinedDrawable = new CombinedDrawable(drawable1, drawable2); textCell.setTextAndIcon(LocaleController.getString("UploadSound", R.string.UploadSound), combinedDrawable, false); break; @@ -670,16 +687,16 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta Tone tone; - public ToneCell(Context context) { + public ToneCell(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); radioButton = new RadioButton(context); radioButton.setSize(AndroidUtilities.dp(20)); - radioButton.setColor(Theme.getColor(Theme.key_radioBackground), Theme.getColor(Theme.key_radioBackgroundChecked)); + radioButton.setColor(Theme.getColor(Theme.key_radioBackground, resourcesProvider), Theme.getColor(Theme.key_radioBackgroundChecked, resourcesProvider)); addView(radioButton, LayoutHelper.createFrame(22, 22, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL, (LocaleController.isRTL ? 0 : 20), 0, (LocaleController.isRTL ? 20 : 0), 0)); - checkBox = new CheckBox2(context, 24); + checkBox = new CheckBox2(context, 24, resourcesProvider); checkBox.setColor(null, Theme.key_windowBackgroundWhite, Theme.key_checkboxCheck); checkBox.setDrawUnchecked(false); checkBox.setDrawBackgroundAsArc(3); @@ -687,7 +704,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta checkBox.setChecked(true, false); textView = new TextView(context); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); @@ -731,6 +748,11 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta getNotificationCenter().removeObserver(this, NotificationCenter.onUserRingtonesUpdated); } + @Override + public int getNavigationBarColor() { + return getThemedColor(Theme.key_windowBackgroundGray); + } + @Override public void didReceivedNotification(int id, int account, Object... args) { if (id == NotificationCenter.onUserRingtonesUpdated) { @@ -933,7 +955,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta File file = new File(AndroidUtilities.getCacheDir(), fileName); if (!file.exists()) { try { - AndroidUtilities.copyFile(FileLoader.getPathToAttach(document), file); + AndroidUtilities.copyFile(FileLoader.getInstance(currentAccount).getPathToAttach(document), file); } catch (IOException e) { e.printStackTrace(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PasscodeActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PasscodeActivity.java index 74582949e..e581224ac 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PasscodeActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PasscodeActivity.java @@ -420,6 +420,7 @@ public class PasscodeActivity extends BaseFragment implements NotificationCenter frameLayout.addView(innerLinearLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); lockImageView = new RLottieImageView(context); + lockImageView.setFocusable(false); lockImageView.setAnimation(R.raw.tsv_setup_intro, 120, 120); lockImageView.setAutoRepeat(false); lockImageView.playAnimation(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PassportActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PassportActivity.java index 0f8f6bfdb..163e8dcd4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PassportActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PassportActivity.java @@ -588,7 +588,7 @@ public class PassportActivity extends BaseFragment implements NotificationCenter public void updateButtonState(boolean animated) { String fileName = FileLoader.getAttachFileName(currentSecureDocument); - File path = FileLoader.getPathToAttach(currentSecureDocument); + File path = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(currentSecureDocument); boolean fileExists = path.exists(); if (TextUtils.isEmpty(fileName)) { radialProgress.setBackground(null, false, false); @@ -1287,7 +1287,7 @@ public class PassportActivity extends BaseFragment implements NotificationCenter if (currentActivityType != TYPE_REQUEST && currentActivityType != TYPE_MANAGE) { ActionBarMenu menu = actionBar.createMenu(); - doneItem = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); + doneItem = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); progressView = new ContextProgressView(context, 1); progressView.setAlpha(0.0f); progressView.setScaleX(0.1f); @@ -1989,7 +1989,7 @@ public class PassportActivity extends BaseFragment implements NotificationCenter actionBar.setTitle(LocaleController.getString("TelegramPassport", R.string.TelegramPassport)); - actionBar.createMenu().addItem(info_item, R.drawable.profile_info); + actionBar.createMenu().addItem(info_item, R.drawable.msg_info); if (botUser != null) { FrameLayout avatarContainer = new FrameLayout(context); @@ -2419,7 +2419,7 @@ public class PassportActivity extends BaseFragment implements NotificationCenter actionBar.setTitle(LocaleController.getString("TelegramPassport", R.string.TelegramPassport)); - actionBar.createMenu().addItem(info_item, R.drawable.profile_info); + actionBar.createMenu().addItem(info_item, R.drawable.msg_info); headerCell = new HeaderCell(context); headerCell.setText(LocaleController.getString("PassportProvidedInformation", R.string.PassportProvidedInformation)); @@ -5521,9 +5521,9 @@ public class PassportActivity extends BaseFragment implements NotificationCenter } private void renameFile(SecureDocument oldDocument, TLRPC.TL_secureFile newSecureFile) { - File oldFile = FileLoader.getPathToAttach(oldDocument); + File oldFile = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(oldDocument); String oldKey = oldDocument.secureFile.dc_id + "_" + oldDocument.secureFile.id; - File newFile = FileLoader.getPathToAttach(newSecureFile); + File newFile = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(newSecureFile); String newKey = newSecureFile.dc_id + "_" + newSecureFile.id; oldFile.renameTo(newFile); ImageLoader.getInstance().replaceImageInCache(oldKey, newKey, null, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java index f348b4d8e..cafd7a086 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java @@ -22,6 +22,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Canvas; +import android.graphics.Paint; import android.graphics.Typeface; import android.net.Uri; import android.os.AsyncTask; @@ -31,6 +32,7 @@ import android.telephony.TelephonyManager; import android.text.Editable; import android.text.InputFilter; import android.text.InputType; +import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextPaint; @@ -40,6 +42,7 @@ import android.text.method.PasswordTransformationMethod; import android.text.style.ClickableSpan; import android.util.TypedValue; import android.view.Gravity; +import android.view.HapticFeedbackConstants; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -60,6 +63,11 @@ import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.dynamicanimation.animation.FloatValueHolder; +import androidx.dynamicanimation.animation.SpringAnimation; +import androidx.dynamicanimation.animation.SpringForce; + import com.google.android.gms.common.api.Status; import com.google.android.gms.tasks.Task; import com.google.android.gms.wallet.AutoResolveHelper; @@ -112,6 +120,7 @@ import org.telegram.ui.Cells.EditTextSettingsCell; import org.telegram.ui.Cells.HeaderCell; import org.telegram.ui.Cells.PaymentInfoCell; import org.telegram.ui.Cells.RadioCell; +import org.telegram.ui.Cells.RecurrentPaymentsAcceptCell; import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Cells.TextCheckCell; import org.telegram.ui.Cells.TextDetailSettingsCell; @@ -123,6 +132,8 @@ import org.telegram.ui.Components.ContextProgressView; import org.telegram.ui.Components.EditTextBoldCursor; import org.telegram.ui.Components.HintEditText; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.TypefaceSpan; +import org.telegram.ui.Components.URLSpanNoUnderline; import org.telegram.ui.Components.UndoView; import java.io.BufferedReader; @@ -139,10 +150,18 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Locale; +import java.util.Objects; import java.util.Optional; import java.util.Scanner; public class PaymentFormActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + private final static int STEP_SHIPPING_INFORMATION = 0, + STEP_SHIPPING_METHODS = 1, + STEP_PAYMENT_INFO = 2, + STEP_CONFIRM_PASSWORD = 3, + STEP_CHECKOUT = 4, + STEP_RECEIPT = 5, + STEP_SET_PASSWORD_EMAIL = 6; private final static int FIELD_CARD = 0; private final static int FIELD_EXPIRE_DATE = 1; @@ -191,6 +210,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen private boolean shouldNavigateBack; private ScrollView scrollView; + private boolean recurrentAccepted; private boolean swipeBackEnabled = true; private TextView textView; @@ -210,10 +230,13 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen private PaymentFormActivityDelegate delegate; private TextView payTextView; - private FrameLayout bottomLayout; + private RecurrentPaymentsAcceptCell recurrentAcceptCell; + private BottomFrameLayout bottomLayout; private PaymentInfoCell paymentInfoCell; private TextDetailSettingsCell[] detailSettingsCell = new TextDetailSettingsCell[7]; + private boolean isAcceptTermsChecked; + private TLRPC.TL_account_password currentPassword; private boolean waitingForEmail; private int emailCodeLength = 6; @@ -260,6 +283,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen private String googlePayCountryCode; private JSONObject googlePayParameters; private MessageObject messageObject; + private String invoiceSlug; private boolean donePressed; private boolean canceled; @@ -270,10 +294,28 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen private boolean saveShippingInfo; private boolean saveCardInfo; + private boolean isCheckoutPreview; + private boolean needPayAfterTransition; + + private Theme.ResourcesProvider resourcesProvider; + private PaymentFormCallback paymentFormCallback; + private boolean paymentStatusSent; + private final static int done_button = 1; private static final int LOAD_PAYMENT_DATA_REQUEST_CODE = 991; + public enum InvoiceStatus { + PAID, + CANCELLED, + PENDING, + FAILED + } + + public interface PaymentFormCallback { + void onInvoiceStatusChanged(InvoiceStatus status); + } + private interface PaymentFormActivityDelegate { default boolean didSelectNewCard(String tokenJson, String card, boolean saveCard, TLRPC.TL_inputPaymentCredentialsGooglePay googlePay) { return false; @@ -329,7 +371,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } public PaymentFormActivity(TLRPC.TL_payments_paymentReceipt receipt) { - currentStep = 5; + currentStep = STEP_RECEIPT; paymentForm = new TLRPC.TL_payments_paymentForm(); paymentReceipt = receipt; paymentForm.bot_id = receipt.bot_id; @@ -349,36 +391,40 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen currentItemName = receipt.title; if (receipt.info != null) { validateRequest = new TLRPC.TL_payments_validateRequestedInfo(); - validateRequest.peer = getMessagesController().getInputPeer(receipt.bot_id); + + if (messageObject != null) { + TLRPC.TL_inputInvoiceMessage inputInvoice = new TLRPC.TL_inputInvoiceMessage(); + inputInvoice.peer = getMessagesController().getInputPeer(receipt.bot_id); + validateRequest.invoice = inputInvoice; + } else { + TLRPC.TL_inputInvoiceSlug inputInvoice = new TLRPC.TL_inputInvoiceSlug(); + inputInvoice.slug = invoiceSlug; + validateRequest.invoice = inputInvoice; + } validateRequest.info = receipt.info; } cardName = receipt.credentials_title; } - public PaymentFormActivity(TLRPC.TL_payments_paymentForm form, MessageObject message, BaseFragment parentFragment) { - int step; - if (form.invoice.shipping_address_requested || form.invoice.email_requested || form.invoice.name_requested || form.invoice.phone_requested) { - step = 0; - } else if (form.saved_credentials != null) { - if (UserConfig.getInstance(currentAccount).tmpPassword != null) { - if (UserConfig.getInstance(currentAccount).tmpPassword.valid_until < ConnectionsManager.getInstance(currentAccount).getCurrentTime() + 60) { - UserConfig.getInstance(currentAccount).tmpPassword = null; - UserConfig.getInstance(currentAccount).saveConfig(false); - } - } - if (UserConfig.getInstance(currentAccount).tmpPassword != null) { - step = 4; - } else { - step = 3; - } - } else { - step = 2; - } - init(form, message, step, null, null, null, null, null, null, false, null, parentFragment); + public PaymentFormActivity(TLRPC.TL_payments_paymentForm form, String invoiceSlug, BaseFragment parentFragment) { + this(form, null, invoiceSlug, parentFragment); } - private PaymentFormActivity(TLRPC.TL_payments_paymentForm form, MessageObject message, int step, TLRPC.TL_payments_validatedRequestedInfo validatedRequestedInfo, TLRPC.TL_shippingOption shipping, Long tips, String tokenJson, String card, TLRPC.TL_payments_validateRequestedInfo request, boolean saveCard, TLRPC.TL_inputPaymentCredentialsGooglePay googlePay, BaseFragment parent) { - init(form, message, step, validatedRequestedInfo, shipping, tips, tokenJson, card, request, saveCard, googlePay, parent); + public PaymentFormActivity(TLRPC.TL_payments_paymentForm form, MessageObject message, BaseFragment parentFragment) { + this(form, message, null, parentFragment); + } + + public PaymentFormActivity(TLRPC.TL_payments_paymentForm form, MessageObject message, String invoiceSlug, BaseFragment parentFragment) { + isCheckoutPreview = true; + init(form, message, invoiceSlug, STEP_CHECKOUT, null, null, null, null, null, null, false, null, parentFragment); + } + + private PaymentFormActivity(TLRPC.TL_payments_paymentForm form, MessageObject message, String invoiceSlug, int step, TLRPC.TL_payments_validatedRequestedInfo validatedRequestedInfo, TLRPC.TL_shippingOption shipping, Long tips, String tokenJson, String card, TLRPC.TL_payments_validateRequestedInfo request, boolean saveCard, TLRPC.TL_inputPaymentCredentialsGooglePay googlePay, BaseFragment parent) { + init(form, message, invoiceSlug, step, validatedRequestedInfo, shipping, tips, tokenJson, card, request, saveCard, googlePay, parent); + } + + public void setPaymentFormCallback(PaymentFormCallback callback) { + paymentFormCallback = callback; } private void setCurrentPassword(TLRPC.TL_account_password password) { @@ -397,8 +443,17 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen private void setDelegate(PaymentFormActivityDelegate paymentFormActivityDelegate) { delegate = paymentFormActivityDelegate; } + + public void setResourcesProvider(Theme.ResourcesProvider provider) { + resourcesProvider = provider; + } - private void init(TLRPC.TL_payments_paymentForm form, MessageObject message, int step, TLRPC.TL_payments_validatedRequestedInfo validatedRequestedInfo, TLRPC.TL_shippingOption shipping, Long tips, String tokenJson, String card, TLRPC.TL_payments_validateRequestedInfo request, boolean saveCard, TLRPC.TL_inputPaymentCredentialsGooglePay googlePay, BaseFragment parent) { + @Override + public Theme.ResourcesProvider getResourceProvider() { + return resourcesProvider; + } + + private void init(TLRPC.TL_payments_paymentForm form, MessageObject message, String slug, int step, TLRPC.TL_payments_validatedRequestedInfo validatedRequestedInfo, TLRPC.TL_shippingOption shipping, Long tips, String tokenJson, String card, TLRPC.TL_payments_validateRequestedInfo request, boolean saveCard, TLRPC.TL_inputPaymentCredentialsGooglePay googlePay, BaseFragment parent) { currentStep = step; parentFragment = parent; paymentJson = tokenJson; @@ -408,6 +463,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen shippingOption = shipping; tipAmount = tips; messageObject = message; + invoiceSlug = slug; saveCardInfo = saveCard; isWebView = !"stripe".equals(paymentForm.native_provider) && !"smartglocal".equals(paymentForm.native_provider); botUser = getMessagesController().getUser(form.bot_id); @@ -416,10 +472,10 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } else { currentBotName = ""; } - currentItemName = message.messageOwner.media.title; + currentItemName = form.title; validateRequest = request; saveShippingInfo = true; - if (saveCard || currentStep == 4) { + if (saveCard || currentStep == STEP_CHECKOUT) { saveCardInfo = saveCard; } else { saveCardInfo = paymentForm.saved_credentials != null; @@ -439,7 +495,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen AndroidUtilities.requestAdjustResize(getParentActivity(), classGuid); if (Build.VERSION.SDK_INT >= 23) { try { - if ((currentStep == 2 || currentStep == 6) && !paymentForm.invoice.test) { + if ((currentStep == STEP_PAYMENT_INFO || currentStep == STEP_SET_PASSWORD_EMAIL) && !paymentForm.invoice.test) { getParentActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); } else if (SharedConfig.passcodeHash.length() == 0 || SharedConfig.allowScreenCapture) { getParentActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); @@ -453,28 +509,36 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen @SuppressLint({"SetJavaScriptEnabled", "AddJavascriptInterface"}) @Override public View createView(Context context) { - if (currentStep == 0) { - actionBar.setTitle(LocaleController.getString("PaymentShippingInfo", R.string.PaymentShippingInfo)); - } else if (currentStep == 1) { - actionBar.setTitle(LocaleController.getString("PaymentShippingMethod", R.string.PaymentShippingMethod)); - } else if (currentStep == 2) { - actionBar.setTitle(LocaleController.getString("PaymentCardInfo", R.string.PaymentCardInfo)); - } else if (currentStep == 3) { - actionBar.setTitle(LocaleController.getString("PaymentCardInfo", R.string.PaymentCardInfo)); - } else if (currentStep == 4) { - if (paymentForm.invoice.test) { - actionBar.setTitle("Test " + LocaleController.getString("PaymentCheckout", R.string.PaymentCheckout)); - } else { - actionBar.setTitle(LocaleController.getString("PaymentCheckout", R.string.PaymentCheckout)); - } - } else if (currentStep == 5) { - if (paymentForm.invoice.test) { - actionBar.setTitle("Test " + LocaleController.getString("PaymentReceipt", R.string.PaymentReceipt)); - } else { - actionBar.setTitle(LocaleController.getString("PaymentReceipt", R.string.PaymentReceipt)); - } - } else if (currentStep == 6) { - actionBar.setTitle(LocaleController.getString("PaymentPassword", R.string.PaymentPassword)); + switch (currentStep) { + case STEP_SHIPPING_INFORMATION: + actionBar.setTitle(LocaleController.getString("PaymentShippingInfo", R.string.PaymentShippingInfo)); + break; + case STEP_SHIPPING_METHODS: + actionBar.setTitle(LocaleController.getString("PaymentShippingMethod", R.string.PaymentShippingMethod)); + break; + case STEP_PAYMENT_INFO: + actionBar.setTitle(LocaleController.getString("PaymentCardInfo", R.string.PaymentCardInfo)); + break; + case STEP_CONFIRM_PASSWORD: + actionBar.setTitle(LocaleController.getString("PaymentCardInfo", R.string.PaymentCardInfo)); + break; + case STEP_CHECKOUT: + if (paymentForm.invoice.test) { + actionBar.setTitle("Test " + LocaleController.getString("PaymentCheckout", R.string.PaymentCheckout)); + } else { + actionBar.setTitle(LocaleController.getString("PaymentCheckout", R.string.PaymentCheckout)); + } + break; + case STEP_RECEIPT: + if (paymentForm.invoice.test) { + actionBar.setTitle("Test " + LocaleController.getString("PaymentReceipt", R.string.PaymentReceipt)); + } else { + actionBar.setTitle(LocaleController.getString("PaymentReceipt", R.string.PaymentReceipt)); + } + break; + case STEP_SET_PASSWORD_EMAIL: + actionBar.setTitle(LocaleController.getString("PaymentPassword", R.string.PaymentPassword)); + break; } actionBar.setBackButtonImage(R.drawable.ic_ab_back); @@ -492,26 +556,32 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen if (donePressed) { return; } - if (currentStep != 3) { + if (currentStep != STEP_CONFIRM_PASSWORD) { AndroidUtilities.hideKeyboard(getParentActivity().getCurrentFocus()); } - if (currentStep == 0) { - setDonePressed(true); - sendForm(); - } else if (currentStep == 1) { - for (int a = 0; a < radioCells.length; a++) { - if (radioCells[a].isChecked()) { - shippingOption = requestedInfo.shipping_options.get(a); - break; + switch (currentStep) { + case STEP_SHIPPING_INFORMATION: + setDonePressed(true); + sendForm(); + break; + case STEP_SHIPPING_METHODS: + for (int a = 0; a < radioCells.length; a++) { + if (radioCells[a].isChecked()) { + shippingOption = requestedInfo.shipping_options.get(a); + break; + } } - } - goToNextStep(); - } else if (currentStep == 2) { - sendCardData(); - } else if (currentStep == 3) { - checkPassword(); - } else if (currentStep == 6) { - sendSavePassword(false); + goToNextStep(); + break; + case STEP_PAYMENT_INFO: + sendCardData(); + break; + case STEP_CONFIRM_PASSWORD: + checkPassword(); + break; + case STEP_SET_PASSWORD_EMAIL: + sendSavePassword(false); + break; } } } @@ -519,31 +589,38 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen ActionBarMenu menu = actionBar.createMenu(); - if (currentStep == 0 || currentStep == 1 || currentStep == 2 || currentStep == 3 || currentStep == 4 || currentStep == 6) { - doneItem = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); - progressView = new ContextProgressView(context, 1); - progressView.setAlpha(0.0f); - progressView.setScaleX(0.1f); - progressView.setScaleY(0.1f); - progressView.setVisibility(View.INVISIBLE); - doneItem.addView(progressView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + switch (currentStep) { + case STEP_SHIPPING_INFORMATION: + case STEP_SHIPPING_METHODS: + case STEP_PAYMENT_INFO: + case STEP_CONFIRM_PASSWORD: + case STEP_CHECKOUT: + case STEP_SET_PASSWORD_EMAIL: + doneItem = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); + progressView = new ContextProgressView(context, 1); + progressView.setAlpha(0.0f); + progressView.setScaleX(0.1f); + progressView.setScaleY(0.1f); + progressView.setVisibility(View.INVISIBLE); + doneItem.addView(progressView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + break; } fragmentView = new FrameLayout(context); FrameLayout frameLayout = (FrameLayout) fragmentView; - fragmentView.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); + fragmentView.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundGray)); scrollView = new ScrollView(context); scrollView.setFillViewport(true); - AndroidUtilities.setScrollViewEdgeEffectColor(scrollView, Theme.getColor(Theme.key_actionBarDefault)); - frameLayout.addView(scrollView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 0, 0, 0, currentStep == 4 ? 48 : 0)); + AndroidUtilities.setScrollViewEdgeEffectColor(scrollView, getThemedColor(Theme.key_actionBarDefault)); + frameLayout.addView(scrollView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 0, 0, 0, currentStep == STEP_CHECKOUT ? 48 : 0)); linearLayout2 = new LinearLayout(context); linearLayout2.setOrientation(LinearLayout.VERTICAL); linearLayout2.setClipChildren(false); scrollView.addView(linearLayout2, new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); - if (currentStep == 0) { + if (currentStep == STEP_SHIPPING_INFORMATION) { HashMap languageMap = new HashMap<>(); HashMap countryMap = new HashMap<>(); try { @@ -570,16 +647,16 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen inputFields = new EditTextBoldCursor[FIELDS_COUNT_ADDRESS]; for (int a = 0; a < FIELDS_COUNT_ADDRESS; a++) { if (a == FIELD_STREET1) { - headerCell[0] = new HeaderCell(context); - headerCell[0].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + headerCell[0] = new HeaderCell(context, resourcesProvider); + headerCell[0].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); headerCell[0].setText(LocaleController.getString("PaymentShippingAddress", R.string.PaymentShippingAddress)); linearLayout2.addView(headerCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } else if (a == FIELD_NAME) { - sectionCell[0] = new ShadowSectionCell(context); + sectionCell[0] = new ShadowSectionCell(context, resourcesProvider); linearLayout2.addView(sectionCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - headerCell[1] = new HeaderCell(context); - headerCell[1].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + headerCell[1] = new HeaderCell(context, resourcesProvider); + headerCell[1].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); headerCell[1].setText(LocaleController.getString("PaymentShippingReceiver", R.string.PaymentShippingReceiver)); linearLayout2.addView(headerCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } @@ -589,14 +666,14 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen container.setClipChildren(false); ((LinearLayout) container).setOrientation(LinearLayout.HORIZONTAL); linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50)); - container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + container.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); } else if (a == FIELD_PHONE) { container = (ViewGroup) inputFields[FIELD_PHONECODE].getParent(); } else { container = new FrameLayout(context); container.setClipChildren(false); linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50)); - container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + container.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); boolean allowDivider = a != FIELD_POSTCODE; if (allowDivider) { @@ -613,7 +690,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(20), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(20) : 0), getMeasuredHeight() - 1, Theme.dividerPaint); } }; - divider.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + divider.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); dividers.add(divider); container.addView(divider, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1, Gravity.LEFT | Gravity.BOTTOM)); } @@ -626,10 +703,10 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } inputFields[a].setTag(a); inputFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - inputFields[a].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - inputFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[a].setHintTextColor(getThemedColor(Theme.key_windowBackgroundWhiteHintText)); + inputFields[a].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); inputFields[a].setBackgroundDrawable(null); - inputFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[a].setCursorColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); inputFields[a].setCursorSize(AndroidUtilities.dp(20)); inputFields[a].setCursorWidth(1.5f); if (a == FIELD_COUNTRY) { @@ -714,7 +791,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen if (a == FIELD_PHONECODE) { textView = new TextView(context); textView.setText("+"); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + textView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); container.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 21, 12, 0, 6)); @@ -913,7 +990,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen providerName = ""; } - bottomCell[1] = new TextInfoPrivacyCell(context); + bottomCell[1] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[1].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); linearLayout2.addView(bottomCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); if (paymentForm.invoice.email_to_provider && paymentForm.invoice.phone_to_provider) { @@ -924,11 +1001,11 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen bottomCell[1].setText(LocaleController.formatString("PaymentPhoneToProvider", R.string.PaymentPhoneToProvider, providerName)); } } else { - sectionCell[1] = new ShadowSectionCell(context); + sectionCell[1] = new ShadowSectionCell(context, resourcesProvider); linearLayout2.addView(sectionCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } - checkCell1 = new TextCheckCell(context); + checkCell1 = new TextCheckCell(context, resourcesProvider); checkCell1.setBackgroundDrawable(Theme.getSelectorDrawable(true)); checkCell1.setTextAndCheck(LocaleController.getString("PaymentShippingSave", R.string.PaymentShippingSave), saveShippingInfo, false); linearLayout2.addView(checkCell1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -937,7 +1014,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen checkCell1.setChecked(saveShippingInfo); }); - bottomCell[0] = new TextInfoPrivacyCell(context); + bottomCell[0] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); bottomCell[0].setText(LocaleController.getString("PaymentShippingSaveInfo", R.string.PaymentShippingSaveInfo)); linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -1009,7 +1086,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } } } - } else if (currentStep == 2) { + } else if (currentStep == STEP_PAYMENT_INFO) { if (paymentForm.native_params != null) { try { JSONObject jsonObject = new JSONObject(paymentForm.native_params.data); @@ -1081,10 +1158,10 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen linearLayout2.addView(webView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - sectionCell[2] = new ShadowSectionCell(context); + sectionCell[2] = new ShadowSectionCell(context, resourcesProvider); linearLayout2.addView(sectionCell[2], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - checkCell1 = new TextCheckCell(context); + checkCell1 = new TextCheckCell(context, resourcesProvider); checkCell1.setBackgroundDrawable(Theme.getSelectorDrawable(true)); checkCell1.setTextAndCheck(LocaleController.getString("PaymentCardSavePaymentInformation", R.string.PaymentCardSavePaymentInformation), saveCardInfo, false); linearLayout2.addView(checkCell1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -1093,7 +1170,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen checkCell1.setChecked(saveCardInfo); }); - bottomCell[0] = new TextInfoPrivacyCell(context); + bottomCell[0] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); updateSavePaymentField(); linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -1138,13 +1215,13 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen inputFields = new EditTextBoldCursor[FIELDS_COUNT_CARD]; for (int a = 0; a < FIELDS_COUNT_CARD; a++) { if (a == FIELD_CARD) { - headerCell[0] = new HeaderCell(context); - headerCell[0].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + headerCell[0] = new HeaderCell(context, resourcesProvider); + headerCell[0].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); headerCell[0].setText(LocaleController.getString("PaymentCardTitle", R.string.PaymentCardTitle)); linearLayout2.addView(headerCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } else if (a == FIELD_CARD_COUNTRY) { - headerCell[1] = new HeaderCell(context); - headerCell[1].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + headerCell[1] = new HeaderCell(context, resourcesProvider); + headerCell[1].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); headerCell[1].setText(LocaleController.getString("PaymentBillingAddress", R.string.PaymentBillingAddress)); linearLayout2.addView(headerCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } @@ -1152,17 +1229,17 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen boolean allowDivider = a != FIELD_CVV && a != FIELD_CARD_POSTCODE && !(a == FIELD_CARD_COUNTRY && !need_card_postcode); ViewGroup container = new FrameLayout(context); container.setClipChildren(false); - container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + container.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50)); View.OnTouchListener onTouchListener = null; inputFields[a] = new EditTextBoldCursor(context); inputFields[a].setTag(a); inputFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - inputFields[a].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - inputFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[a].setHintTextColor(getThemedColor(Theme.key_windowBackgroundWhiteHintText)); + inputFields[a].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); inputFields[a].setBackgroundDrawable(null); - inputFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[a].setCursorColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); inputFields[a].setCursorSize(AndroidUtilities.dp(20)); inputFields[a].setCursorWidth(1.5f); if (a == FIELD_CVV) { @@ -1339,7 +1416,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen if (builder.length() == maxLength) { inputFields[FIELD_EXPIRE_DATE].requestFocus(); } - phoneField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + phoneField.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); for (int a = 0; a < builder.length(); a++) { if (a < hint.length()) { if (hint.charAt(a) == ' ') { @@ -1358,7 +1435,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } } } else { - phoneField.setTextColor(builder.length() > 0 ? Theme.getColor(Theme.key_windowBackgroundWhiteRedText4) : Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + phoneField.setTextColor(builder.length() > 0 ? getThemedColor(Theme.key_windowBackgroundWhiteRedText4) : getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); } if (!builder.toString().equals(editable.toString())) { editable.replace(0, editable.length(), builder); @@ -1420,7 +1497,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } } ignoreOnCardChange = true; - inputFields[FIELD_EXPIRE_DATE].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[FIELD_EXPIRE_DATE].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); if (builder.length() > 4) { builder.setLength(4); } @@ -1441,13 +1518,13 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen int currentYear = rightNow.get(Calendar.YEAR); int currentMonth = rightNow.get(Calendar.MONTH) + 1; if (year < currentYear || year == currentYear && month < currentMonth) { - inputFields[FIELD_EXPIRE_DATE].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText4)); + inputFields[FIELD_EXPIRE_DATE].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteRedText4)); isError = true; } } else { int value = Utilities.parseInt(args[0]); if (value > 12 || value == 0) { - inputFields[FIELD_EXPIRE_DATE].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText4)); + inputFields[FIELD_EXPIRE_DATE].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteRedText4)); isError = true; } } @@ -1461,7 +1538,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } else if (builder.length() == 2) { int value = Utilities.parseInt(builder.toString()); if (value > 12 || value == 0) { - inputFields[FIELD_EXPIRE_DATE].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText4)); + inputFields[FIELD_EXPIRE_DATE].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteRedText4)); isError = true; } start++; @@ -1511,13 +1588,13 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen return false; }); if (a == FIELD_CVV) { - sectionCell[0] = new ShadowSectionCell(context); + sectionCell[0] = new ShadowSectionCell(context, resourcesProvider); linearLayout2.addView(sectionCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } else if (a == FIELD_CARD_POSTCODE) { - sectionCell[2] = new ShadowSectionCell(context); + sectionCell[2] = new ShadowSectionCell(context, resourcesProvider); linearLayout2.addView(sectionCell[2], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - checkCell1 = new TextCheckCell(context); + checkCell1 = new TextCheckCell(context, resourcesProvider); checkCell1.setBackgroundDrawable(Theme.getSelectorDrawable(true)); checkCell1.setTextAndCheck(LocaleController.getString("PaymentCardSavePaymentInformation", R.string.PaymentCardSavePaymentInformation), saveCardInfo, false); linearLayout2.addView(checkCell1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -1526,7 +1603,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen checkCell1.setChecked(saveCardInfo); }); - bottomCell[0] = new TextInfoPrivacyCell(context); + bottomCell[0] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); updateSavePaymentField(); linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -1542,7 +1619,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(20), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(20) : 0), getMeasuredHeight() - 1, Theme.dividerPaint); } }; - divider.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + divider.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); dividers.add(divider); container.addView(divider, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1, Gravity.LEFT | Gravity.BOTTOM)); } @@ -1561,7 +1638,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen inputFields[FIELD_CVV].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI); } } - } else if (currentStep == 1) { + } else if (currentStep == STEP_SHIPPING_METHODS) { int count = requestedInfo.shipping_options.size(); radioCells = new RadioCell[count]; for (int a = 0; a < count; a++) { @@ -1578,15 +1655,15 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen }); linearLayout2.addView(radioCells[a]); } - bottomCell[0] = new TextInfoPrivacyCell(context); + bottomCell[0] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - } else if (currentStep == 3) { + } else if (currentStep == STEP_CONFIRM_PASSWORD) { inputFields = new EditTextBoldCursor[FIELDS_COUNT_SAVEDCARD]; for (int a = 0; a < FIELDS_COUNT_SAVEDCARD; a++) { if (a == FIELD_SAVEDCARD) { - headerCell[0] = new HeaderCell(context); - headerCell[0].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + headerCell[0] = new HeaderCell(context, resourcesProvider); + headerCell[0].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); headerCell[0].setText(LocaleController.getString("PaymentCardTitle", R.string.PaymentCardTitle)); linearLayout2.addView(headerCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } @@ -1594,7 +1671,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen ViewGroup container = new FrameLayout(context); container.setClipChildren(false); linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50)); - container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + container.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); boolean allowDivider = a != FIELD_SAVEDPASSWORD; if (allowDivider) { @@ -1611,7 +1688,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(20), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(20) : 0), getMeasuredHeight() - 1, Theme.dividerPaint); } }; - divider.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + divider.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); dividers.add(divider); container.addView(divider, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1, Gravity.LEFT | Gravity.BOTTOM)); } @@ -1619,10 +1696,10 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen inputFields[a] = new EditTextBoldCursor(context); inputFields[a].setTag(a); inputFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - inputFields[a].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - inputFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[a].setHintTextColor(getThemedColor(Theme.key_windowBackgroundWhiteHintText)); + inputFields[a].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); inputFields[a].setBackgroundDrawable(null); - inputFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[a].setCursorColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); inputFields[a].setCursorSize(AndroidUtilities.dp(20)); inputFields[a].setCursorWidth(1.5f); if (a == FIELD_SAVEDCARD) { @@ -1655,12 +1732,12 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen return false; }); if (a == FIELD_SAVEDPASSWORD) { - bottomCell[0] = new TextInfoPrivacyCell(context); + bottomCell[0] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[0].setText(LocaleController.formatString("PaymentConfirmationMessage", R.string.PaymentConfirmationMessage, paymentForm.saved_credentials.title)); bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - settingsCell[0] = new TextSettingsCell(context); + settingsCell[0] = new TextSettingsCell(context, resourcesProvider); settingsCell[0].setBackgroundDrawable(Theme.getSelectorDrawable(true)); settingsCell[0].setText(LocaleController.getString("PaymentConfirmationNewCard", R.string.PaymentConfirmationNewCard), false); linearLayout2.addView(settingsCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -1669,22 +1746,24 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen goToNextStep(); }); - bottomCell[1] = new TextInfoPrivacyCell(context); + bottomCell[1] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[1].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); linearLayout2.addView(bottomCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } } - } else if (currentStep == 4 || currentStep == 5) { + } else if (currentStep == STEP_CHECKOUT || currentStep == STEP_RECEIPT) { paymentInfoCell = new PaymentInfoCell(context); - paymentInfoCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + paymentInfoCell.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); if (messageObject != null) { paymentInfoCell.setInvoice((TLRPC.TL_messageMediaInvoice) messageObject.messageOwner.media, currentBotName); } else if (paymentReceipt != null) { paymentInfoCell.setReceipt(paymentReceipt, currentBotName); + } else if (invoiceSlug != null) { + paymentInfoCell.setInfo(paymentForm.title, paymentForm.description, paymentForm.photo, currentBotName, paymentForm); } linearLayout2.addView(paymentInfoCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - sectionCell[0] = new ShadowSectionCell(context); + sectionCell[0] = new ShadowSectionCell(context, resourcesProvider); linearLayout2.addView(sectionCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); prices = new ArrayList<>(paymentForm.invoice.prices); @@ -1697,27 +1776,27 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen TLRPC.TL_labeledPrice price = prices.get(a); TextPriceCell priceCell = new TextPriceCell(context); - priceCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + priceCell.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); priceCell.setTextAndValue(price.label, LocaleController.getInstance().formatCurrencyString(price.amount, paymentForm.invoice.currency), false); linearLayout2.addView(priceCell); } - if (currentStep == 5 && tipAmount != null) { + if (currentStep == STEP_RECEIPT && tipAmount != null) { TextPriceCell priceCell = new TextPriceCell(context); - priceCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + priceCell.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); priceCell.setTextAndValue(LocaleController.getString("PaymentTip", R.string.PaymentTip), LocaleController.getInstance().formatCurrencyString(tipAmount, paymentForm.invoice.currency), false); linearLayout2.addView(priceCell); } totalCell = new TextPriceCell(context); - totalCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + totalCell.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); totalPrice[0] = getTotalPriceString(prices); totalCell.setTextAndValue(LocaleController.getString("PaymentTransactionTotal", R.string.PaymentTransactionTotal), totalPrice[0], true); - if (currentStep == 4 && (paymentForm.invoice.flags & 256) != 0) { + if (currentStep == STEP_CHECKOUT && (paymentForm.invoice.flags & 256) != 0) { ViewGroup container = new FrameLayout(context); container.setClipChildren(false); - container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + container.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, paymentForm.invoice.suggested_tip_amounts.isEmpty() ? 40 : 78)); container.setOnClickListener(v -> { inputFields[0].requestFocus(); @@ -1725,7 +1804,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen }); TextPriceCell cell = new TextPriceCell(context); - cell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + cell.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); cell.setTextAndValue(LocaleController.getString("PaymentTipOptional", R.string.PaymentTipOptional), "", false); container.addView(cell); @@ -1733,10 +1812,10 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen inputFields[0] = new EditTextBoldCursor(context); inputFields[0].setTag(0); inputFields[0].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - inputFields[0].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); - inputFields[0].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); + inputFields[0].setHintTextColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText2)); + inputFields[0].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText2)); inputFields[0].setBackgroundDrawable(null); - inputFields[0].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[0].setCursorColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); inputFields[0].setCursorSize(AndroidUtilities.dp(20)); inputFields[0].setCursorWidth(1.5f); inputFields[0].setInputType(InputType.TYPE_CLASS_PHONE); @@ -1944,7 +2023,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen }; tipLayout.setOrientation(LinearLayout.HORIZONTAL); scrollView.addView(tipLayout, LayoutHelper.createScroll(LayoutHelper.MATCH_PARENT, 30, Gravity.LEFT | Gravity.TOP)); - int color = Theme.getColor(Theme.key_contacts_inviteBackground); + int color = getThemedColor(Theme.key_contacts_inviteBackground); for (int a = 0; a < N; a++) { long amount; if (LocaleController.isRTL) { @@ -1961,7 +2040,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen valueTextView.setMaxLines(1); valueTextView.setText(text); valueTextView.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), 0); - valueTextView.setTextColor(Theme.getColor(Theme.key_chats_secretName)); + valueTextView.setTextColor(getThemedColor(Theme.key_chats_secretName)); valueTextView.setBackground(Theme.createRoundRectDrawable(AndroidUtilities.dp(15), color & 0x1fffffff)); valueTextView.setSingleLine(true); valueTextView.setGravity(Gravity.CENTER); @@ -1989,15 +2068,20 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen linearLayout2.addView(totalCell); - sectionCell[2] = new ShadowSectionCell(context); + sectionCell[2] = new ShadowSectionCell(context, resourcesProvider); sectionCell[2].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); linearLayout2.addView(sectionCell[2], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); detailSettingsCell[0] = new TextDetailSettingsCell(context); detailSettingsCell[0].setBackgroundDrawable(Theme.getSelectorDrawable(true)); - detailSettingsCell[0].setTextAndValueAndIcon(cardName != null && cardName.length() > 1 ? cardName.substring(0, 1).toUpperCase() + cardName.substring(1) : cardName, LocaleController.getString("PaymentCheckoutMethod", R.string.PaymentCheckoutMethod), R.drawable.payment_card, true); + detailSettingsCell[0].setTextAndValueAndIcon(cardName != null && cardName.length() > 1 ? cardName.substring(0, 1).toUpperCase() + cardName.substring(1) : cardName, LocaleController.getString("PaymentCheckoutMethod", R.string.PaymentCheckoutMethod), R.drawable.msg_payment_card, true); + int cardInfoVisibility = View.VISIBLE; + if (isCheckoutPreview) { + cardInfoVisibility = cardName != null && cardName.length() > 1 ? View.VISIBLE : View.GONE; + } + detailSettingsCell[0].setVisibility(cardInfoVisibility); linearLayout2.addView(detailSettingsCell[0]); - if (currentStep == 4) { + if (currentStep == STEP_CHECKOUT) { detailSettingsCell[0].setOnClickListener(v -> { if (getParentActivity() == null) { return; @@ -2005,9 +2089,9 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity()); builder.setTitle(LocaleController.getString("PaymentCheckoutMethod", R.string.PaymentCheckoutMethod), true); builder.setItems(new CharSequence[]{cardName, LocaleController.getString("PaymentCheckoutMethodNewCard", R.string.PaymentCheckoutMethodNewCard)}, - new int[]{R.drawable.payment_card, R.drawable.msg_addbot}, (dialog, which) -> { + new int[]{R.drawable.msg_payment_card, R.drawable.msg_addbot}, (dialog, which) -> { if (which == 1) { - PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 2, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); + PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, STEP_PAYMENT_INFO, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); activity.setDelegate(new PaymentFormActivityDelegate() { @Override public boolean didSelectNewCard(String tokenJson, String card, boolean saveCard, TLRPC.TL_inputPaymentCredentialsGooglePay googlePay) { @@ -2038,115 +2122,178 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen if (providerUser != null) { detailSettingsCell[1] = new TextDetailSettingsCell(context); detailSettingsCell[1].setBackgroundDrawable(Theme.getSelectorDrawable(true)); - detailSettingsCell[1].setTextAndValueAndIcon(providerName = ContactsController.formatName(providerUser.first_name, providerUser.last_name), LocaleController.getString("PaymentCheckoutProvider", R.string.PaymentCheckoutProvider), R.drawable.payment_provider, validateRequest != null && (validateRequest.info.shipping_address != null || shippingOption != null)); + detailSettingsCell[1].setTextAndValueAndIcon(providerName = ContactsController.formatName(providerUser.first_name, providerUser.last_name), LocaleController.getString("PaymentCheckoutProvider", R.string.PaymentCheckoutProvider), R.drawable.msg_payment_provider, validateRequest != null && (validateRequest.info.shipping_address != null || shippingOption != null) || paymentForm.saved_info != null && (paymentForm.saved_info.shipping_address != null)); + detailSettingsCell[1].setVisibility(cardInfoVisibility); linearLayout2.addView(detailSettingsCell[1]); } else { providerName = ""; } - if (validateRequest != null) { - if (validateRequest.info.shipping_address != null) { - detailSettingsCell[2] = new TextDetailSettingsCell(context); - linearLayout2.addView(detailSettingsCell[2]); - if (currentStep == 4) { + if (validateRequest != null || isCheckoutPreview && paymentForm != null && paymentForm.saved_info != null) { + TLRPC.TL_paymentRequestedInfo info = validateRequest != null ? validateRequest.info : paymentForm.saved_info; + + detailSettingsCell[2] = new TextDetailSettingsCell(context); + detailSettingsCell[2].setVisibility(View.GONE); + linearLayout2.addView(detailSettingsCell[2]); + if (info.shipping_address != null) { + detailSettingsCell[2].setVisibility(View.VISIBLE); + if (currentStep == STEP_CHECKOUT) { detailSettingsCell[2].setBackgroundDrawable(Theme.getSelectorDrawable(true)); detailSettingsCell[2].setOnClickListener(v -> { - PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 0, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); + PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, STEP_SHIPPING_INFORMATION, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); activity.setDelegate(new PaymentFormActivityDelegate() { @Override public void didSelectNewAddress(TLRPC.TL_payments_validateRequestedInfo validateRequested) { validateRequest = validateRequested; - setAddressFields(); + setAddressFields(validateRequest.info); } }); presentFragment(activity); }); } else { - detailSettingsCell[2].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + detailSettingsCell[2].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); } } - if (validateRequest.info.name != null) { - detailSettingsCell[3] = new TextDetailSettingsCell(context); - linearLayout2.addView(detailSettingsCell[3]); - if (currentStep == 4) { + detailSettingsCell[3] = new TextDetailSettingsCell(context); + detailSettingsCell[3].setVisibility(View.GONE); + linearLayout2.addView(detailSettingsCell[3]); + if (info.name != null) { + detailSettingsCell[3].setVisibility(View.VISIBLE); + if (currentStep == STEP_CHECKOUT) { detailSettingsCell[3].setBackgroundDrawable(Theme.getSelectorDrawable(true)); detailSettingsCell[3].setOnClickListener(v -> { - PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 0, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); + PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, STEP_SHIPPING_INFORMATION, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); activity.setDelegate(new PaymentFormActivityDelegate() { @Override public void didSelectNewAddress(TLRPC.TL_payments_validateRequestedInfo validateRequested) { validateRequest = validateRequested; - setAddressFields(); + setAddressFields(validateRequest.info); } }); presentFragment(activity); }); } else { - detailSettingsCell[3].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + detailSettingsCell[3].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); } } - if (validateRequest.info.phone != null) { - detailSettingsCell[4] = new TextDetailSettingsCell(context); - linearLayout2.addView(detailSettingsCell[4]); - if (currentStep == 4) { + detailSettingsCell[4] = new TextDetailSettingsCell(context); + detailSettingsCell[4].setVisibility(View.GONE); + linearLayout2.addView(detailSettingsCell[4]); + if (info.phone != null) { + detailSettingsCell[4].setVisibility(View.VISIBLE); + if (currentStep == STEP_CHECKOUT) { detailSettingsCell[4].setBackgroundDrawable(Theme.getSelectorDrawable(true)); detailSettingsCell[4].setOnClickListener(v -> { - PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 0, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); + PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, STEP_SHIPPING_INFORMATION, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); activity.setDelegate(new PaymentFormActivityDelegate() { @Override public void didSelectNewAddress(TLRPC.TL_payments_validateRequestedInfo validateRequested) { validateRequest = validateRequested; - setAddressFields(); + setAddressFields(validateRequest.info); } }); presentFragment(activity); }); } else { - detailSettingsCell[4].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + detailSettingsCell[4].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); } } - if (validateRequest.info.email != null) { - detailSettingsCell[5] = new TextDetailSettingsCell(context); - linearLayout2.addView(detailSettingsCell[5]); - if (currentStep == 4) { + detailSettingsCell[5] = new TextDetailSettingsCell(context); + detailSettingsCell[5].setVisibility(View.GONE); + linearLayout2.addView(detailSettingsCell[5]); + if (info.email != null) { + detailSettingsCell[5].setVisibility(View.VISIBLE); + if (currentStep == STEP_CHECKOUT) { detailSettingsCell[5].setBackgroundDrawable(Theme.getSelectorDrawable(true)); detailSettingsCell[5].setOnClickListener(v -> { - PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 0, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); + PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, STEP_SHIPPING_INFORMATION, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment); activity.setDelegate(new PaymentFormActivityDelegate() { @Override public void didSelectNewAddress(TLRPC.TL_payments_validateRequestedInfo validateRequested) { validateRequest = validateRequested; - setAddressFields(); + setAddressFields(validateRequest.info); } }); presentFragment(activity); }); } else { - detailSettingsCell[5].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + detailSettingsCell[5].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); } } if (shippingOption != null) { detailSettingsCell[6] = new TextDetailSettingsCell(context); - detailSettingsCell[6].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); - detailSettingsCell[6].setTextAndValueAndIcon(shippingOption.title, LocaleController.getString("PaymentCheckoutShippingMethod", R.string.PaymentCheckoutShippingMethod), R.drawable.payment_delivery, false); + detailSettingsCell[6].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); + detailSettingsCell[6].setTextAndValueAndIcon(shippingOption.title, LocaleController.getString("PaymentCheckoutShippingMethod", R.string.PaymentCheckoutShippingMethod), R.drawable.msg_payment_delivery, false); linearLayout2.addView(detailSettingsCell[6]); } - setAddressFields(); + setAddressFields(info); } - if (currentStep == 4) { - bottomLayout = new FrameLayout(context); + if (currentStep == STEP_CHECKOUT) { + recurrentAccepted = isAcceptTermsChecked = !isCheckoutPreview; + bottomLayout = new BottomFrameLayout(context, paymentForm); if (Build.VERSION.SDK_INT >= 21) { - bottomLayout.setBackgroundDrawable(Theme.getSelectorDrawable(Theme.getColor(Theme.key_listSelector), Theme.key_contacts_inviteBackground)); - } else { - bottomLayout.setBackgroundColor(Theme.getColor(Theme.key_contacts_inviteBackground)); + View selectorView = new View(context); + selectorView.setBackground(Theme.getSelectorDrawable(getThemedColor(Theme.key_listSelector), false)); + bottomLayout.addView(selectorView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); } frameLayout.addView(bottomLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM)); bottomLayout.setOnClickListener(v -> { + if (paymentForm.invoice.recurring && !recurrentAccepted) { + AndroidUtilities.shakeViewSpring(recurrentAcceptCell.getTextView(), 4.5f); + try { + recurrentAcceptCell.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); + } catch (Exception ignored) {} + return; + } + + if (isCheckoutPreview && paymentForm.saved_info != null && validateRequest == null) { + setDonePressed(true); + + sendSavedForm(()->{ + setDonePressed(false); + v.callOnClick(); + }); + return; + } + + if (isCheckoutPreview && (paymentForm.saved_info == null && (paymentForm.invoice.shipping_address_requested || paymentForm.invoice.email_requested || paymentForm.invoice.name_requested || paymentForm.invoice.phone_requested) || paymentForm.saved_credentials == null || shippingOption == null && paymentForm.invoice.flexible)) { + int step; + if (paymentForm.saved_info == null && (paymentForm.invoice.shipping_address_requested || paymentForm.invoice.email_requested || paymentForm.invoice.name_requested || paymentForm.invoice.phone_requested)) { + step = STEP_SHIPPING_INFORMATION; + } else if (paymentForm.saved_credentials == null) { + step = STEP_PAYMENT_INFO; + } else { + step = STEP_SHIPPING_METHODS; + } + paymentStatusSent = true; + presentFragment(new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, step, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment)); + return; + } + + if (!paymentForm.password_missing && paymentForm.saved_credentials != null) { + if (UserConfig.getInstance(currentAccount).tmpPassword != null) { + if (UserConfig.getInstance(currentAccount).tmpPassword.valid_until < ConnectionsManager.getInstance(currentAccount).getCurrentTime() + 60) { + UserConfig.getInstance(currentAccount).tmpPassword = null; + UserConfig.getInstance(currentAccount).saveConfig(false); + } + } + + if (UserConfig.getInstance(currentAccount).tmpPassword == null) { + needPayAfterTransition = true; + presentFragment(new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, STEP_CONFIRM_PASSWORD, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment)); + needPayAfterTransition = false; + return; + } else if (isCheckoutPreview) { + isCheckoutPreview = false; + NotificationCenter.getInstance(currentAccount).removeObserver(PaymentFormActivity.this, NotificationCenter.paymentFinished); + } + } + if (botUser != null && !botUser.verified) { String botKey = "payment_warning_" + botUser.id; SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); @@ -2165,7 +2312,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } }); payTextView = new TextView(context); - payTextView.setTextColor(Theme.getColor(Theme.key_contacts_inviteText)); + payTextView.setTextColor(getThemedColor(Theme.key_contacts_inviteText)); payTextView.setText(LocaleController.formatString("PaymentCheckoutPay", R.string.PaymentCheckoutPay, totalPrice[0])); payTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); payTextView.setGravity(Gravity.CENTER); @@ -2174,10 +2321,13 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen progressViewButton = new ContextProgressView(context, 0); progressViewButton.setVisibility(View.INVISIBLE); - int color = Theme.getColor(Theme.key_contacts_inviteText); + int color = getThemedColor(Theme.key_contacts_inviteText); progressViewButton.setColors(color & 0x2fffffff, color); bottomLayout.addView(progressViewButton, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + bottomLayout.setChecked(!paymentForm.invoice.recurring || isAcceptTermsChecked); + payTextView.setAlpha(paymentForm.invoice.recurring && !isAcceptTermsChecked ? 0.8f : 1f); + doneItem.setEnabled(false); doneItem.getContentView().setVisibility(View.INVISIBLE); @@ -2237,17 +2387,55 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } }); + if (paymentForm.invoice.recurring) { + recurrentAcceptCell = new RecurrentPaymentsAcceptCell(context, getResourceProvider()); + recurrentAcceptCell.setChecked(paymentForm.invoice.recurring && isAcceptTermsChecked); + String str = LocaleController.getString(R.string.PaymentCheckoutAcceptRecurrent); + SpannableStringBuilder sb = new SpannableStringBuilder(str); + int firstIndex = str.indexOf('*'), lastIndex = str.lastIndexOf('*'); + if (firstIndex != -1 && lastIndex != -1) { + SpannableString acceptTerms = new SpannableString(str.substring(firstIndex + 1, lastIndex)); + acceptTerms.setSpan(new URLSpanNoUnderline(paymentForm.invoice.recurring_terms_url), 0, acceptTerms.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + sb.replace(firstIndex, lastIndex + 1, acceptTerms); + str = str.substring(0, firstIndex) + acceptTerms + str.substring(lastIndex + 1); + } + String format = "%1$s"; + int botIndex = str.indexOf(format); + if (botIndex != -1) { + sb.replace(botIndex, botIndex + format.length(), currentBotName); + sb.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf")), botIndex, botIndex + currentBotName.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + + recurrentAcceptCell.setText(sb); + + recurrentAcceptCell.setBackground(Theme.createSelectorWithBackgroundDrawable(getThemedColor(Theme.key_windowBackgroundWhite), getThemedColor(Theme.key_listSelector))); + recurrentAcceptCell.setOnClickListener(v -> { + if (donePressed) { + return; + } + + recurrentAccepted = !recurrentAccepted; + recurrentAcceptCell.setChecked(recurrentAccepted); + + bottomLayout.setChecked(recurrentAccepted); + }); + frameLayout.addView(recurrentAcceptCell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM, 0, 0, 0, 48)); + } + frameLayout.addView(webView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); webView.setVisibility(View.GONE); } - sectionCell[1] = new ShadowSectionCell(context); + sectionCell[1] = new ShadowSectionCell(context, resourcesProvider); sectionCell[1].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + if (cardInfoVisibility != View.VISIBLE && currentStep == STEP_CHECKOUT && validateRequest == null && (paymentForm == null || paymentForm.saved_info == null)) { + sectionCell[1].setVisibility(cardInfoVisibility); + } linearLayout2.addView(sectionCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - } else if (currentStep == 6) { + } else if (currentStep == STEP_SET_PASSWORD_EMAIL) { codeFieldCell = new EditTextSettingsCell(context); codeFieldCell.setTextAndHint("", LocaleController.getString("PasswordCode", R.string.PasswordCode), false); - codeFieldCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + codeFieldCell.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); EditTextBoldCursor editText = codeFieldCell.getTextView(); editText.setInputType(InputType.TYPE_CLASS_PHONE); editText.setImeOptions(EditorInfo.IME_ACTION_DONE); @@ -2278,14 +2466,14 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen }); linearLayout2.addView(codeFieldCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - bottomCell[2] = new TextInfoPrivacyCell(context); + bottomCell[2] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[2].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); linearLayout2.addView(bottomCell[2], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - settingsCell[1] = new TextSettingsCell(context); + settingsCell[1] = new TextSettingsCell(context, resourcesProvider); settingsCell[1].setBackgroundDrawable(Theme.getSelectorDrawable(true)); settingsCell[1].setTag(Theme.key_windowBackgroundWhiteBlackText); - settingsCell[1].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + settingsCell[1].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); settingsCell[1].setText(LocaleController.getString("ResendCode", R.string.ResendCode), true); linearLayout2.addView(settingsCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); settingsCell[1].setOnClickListener(v -> { @@ -2300,10 +2488,10 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen showDialog(builder.create()); }); - settingsCell[0] = new TextSettingsCell(context); + settingsCell[0] = new TextSettingsCell(context, resourcesProvider); settingsCell[0].setBackgroundDrawable(Theme.getSelectorDrawable(true)); settingsCell[0].setTag(Theme.key_windowBackgroundWhiteRedText3); - settingsCell[0].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText3)); + settingsCell[0].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteRedText3)); settingsCell[0].setText(LocaleController.getString("AbortPassword", R.string.AbortPassword), false); linearLayout2.addView(settingsCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); settingsCell[0].setOnClickListener(v -> { @@ -2320,20 +2508,20 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); } }); inputFields = new EditTextBoldCursor[FIELDS_COUNT_PASSWORD]; for (int a = 0; a < FIELDS_COUNT_PASSWORD; a++) { if (a == FIELD_ENTERPASSWORD) { - headerCell[0] = new HeaderCell(context); - headerCell[0].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + headerCell[0] = new HeaderCell(context, resourcesProvider); + headerCell[0].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); headerCell[0].setText(LocaleController.getString("PaymentPasswordTitle", R.string.PaymentPasswordTitle)); linearLayout2.addView(headerCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } else if (a == FIELD_ENTERPASSWORDEMAIL) { - headerCell[1] = new HeaderCell(context); - headerCell[1].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + headerCell[1] = new HeaderCell(context, resourcesProvider); + headerCell[1].setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); headerCell[1].setText(LocaleController.getString("PaymentPasswordEmailTitle", R.string.PaymentPasswordEmailTitle)); linearLayout2.addView(headerCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } @@ -2341,7 +2529,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen ViewGroup container = new FrameLayout(context); container.setClipChildren(false); linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50)); - container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + container.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); if (a == FIELD_ENTERPASSWORD) { View divider = new View(context) { @@ -2350,7 +2538,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(20), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(20) : 0), getMeasuredHeight() - 1, Theme.dividerPaint); } }; - divider.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + divider.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); dividers.add(divider); container.addView(divider, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1, Gravity.LEFT | Gravity.BOTTOM)); } @@ -2358,10 +2546,10 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen inputFields[a] = new EditTextBoldCursor(context); inputFields[a].setTag(a); inputFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - inputFields[a].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText)); - inputFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[a].setHintTextColor(getThemedColor(Theme.key_windowBackgroundWhiteHintText)); + inputFields[a].setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); inputFields[a].setBackgroundDrawable(null); - inputFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + inputFields[a].setCursorColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); inputFields[a].setCursorSize(AndroidUtilities.dp(20)); inputFields[a].setCursorWidth(1.5f); @@ -2406,12 +2594,12 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen return false; }); if (a == FIELD_REENTERPASSWORD) { - bottomCell[0] = new TextInfoPrivacyCell(context); + bottomCell[0] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[0].setText(LocaleController.getString("PaymentPasswordInfo", R.string.PaymentPasswordInfo)); bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } else if (a == FIELD_ENTERPASSWORDEMAIL) { - bottomCell[1] = new TextInfoPrivacyCell(context); + bottomCell[1] = new TextInfoPrivacyCell(context, resourcesProvider); bottomCell[1].setText(LocaleController.getString("PaymentPasswordEmailInfo", R.string.PaymentPasswordEmailInfo)); bottomCell[1].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); linearLayout2.addView(bottomCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -2422,23 +2610,27 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen return fragmentView; } - private void setAddressFields() { - if (validateRequest.info.shipping_address != null) { - String address = String.format("%s %s, %s, %s, %s, %s", validateRequest.info.shipping_address.street_line1, validateRequest.info.shipping_address.street_line2, validateRequest.info.shipping_address.city, validateRequest.info.shipping_address.state, validateRequest.info.shipping_address.country_iso2, validateRequest.info.shipping_address.post_code); - detailSettingsCell[2].setTextAndValueAndIcon(address, LocaleController.getString("PaymentShippingAddress", R.string.PaymentShippingAddress), R.drawable.payment_address, true); + private void setAddressFields(TLRPC.TL_paymentRequestedInfo info) { + if (info.shipping_address != null) { + String address = String.format("%s %s, %s, %s, %s, %s", info.shipping_address.street_line1, info.shipping_address.street_line2, info.shipping_address.city, info.shipping_address.state, info.shipping_address.country_iso2, info.shipping_address.post_code); + detailSettingsCell[2].setTextAndValueAndIcon(address, LocaleController.getString("PaymentShippingAddress", R.string.PaymentShippingAddress), R.drawable.msg_payment_address, true); } + detailSettingsCell[2].setVisibility(info.shipping_address != null ? View.VISIBLE : View.GONE); - if (validateRequest.info.name != null) { - detailSettingsCell[3].setTextAndValueAndIcon(validateRequest.info.name, LocaleController.getString("PaymentCheckoutName", R.string.PaymentCheckoutName), R.drawable.payment_name, true); + if (info.name != null) { + detailSettingsCell[3].setTextAndValueAndIcon(info.name, LocaleController.getString("PaymentCheckoutName", R.string.PaymentCheckoutName), R.drawable.msg_contacts, true); } + detailSettingsCell[3].setVisibility(info.name != null ? View.VISIBLE : View.GONE); - if (validateRequest.info.phone != null) { - detailSettingsCell[4].setTextAndValueAndIcon(PhoneFormat.getInstance().format(validateRequest.info.phone), LocaleController.getString("PaymentCheckoutPhoneNumber", R.string.PaymentCheckoutPhoneNumber), R.drawable.payment_phone, validateRequest.info.email != null || shippingOption != null); + if (info.phone != null) { + detailSettingsCell[4].setTextAndValueAndIcon(PhoneFormat.getInstance().format(info.phone), LocaleController.getString("PaymentCheckoutPhoneNumber", R.string.PaymentCheckoutPhoneNumber), R.drawable.msg_calls, info.email != null || shippingOption != null); } + detailSettingsCell[4].setVisibility(info.phone != null ? View.VISIBLE : View.GONE); - if (validateRequest.info.email != null) { - detailSettingsCell[5].setTextAndValueAndIcon(validateRequest.info.email, LocaleController.getString("PaymentCheckoutEmail", R.string.PaymentCheckoutEmail), R.drawable.payment_email, shippingOption != null); + if (info.email != null) { + detailSettingsCell[5].setTextAndValueAndIcon(info.email, LocaleController.getString("PaymentCheckoutEmail", R.string.PaymentCheckoutEmail), R.drawable.msg_mention, shippingOption != null); } + detailSettingsCell[5].setVisibility(info.email != null ? View.VISIBLE : View.GONE); } private void updateTotalPrice() { @@ -2448,15 +2640,15 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen payTextView.setText(LocaleController.formatString("PaymentCheckoutPay", R.string.PaymentCheckoutPay, totalPrice[0])); } if (tipLayout != null) { - int color = Theme.getColor(Theme.key_contacts_inviteBackground); + int color = getThemedColor(Theme.key_contacts_inviteBackground); for (int b = 0, N2 = tipLayout.getChildCount(); b < N2; b++) { TextView child = (TextView) tipLayout.getChildAt(b); if (child.getTag().equals(tipAmount)) { Theme.setDrawableColor(child.getBackground(), color); - child.setTextColor(Theme.getColor(Theme.key_contacts_inviteText)); + child.setTextColor(getThemedColor(Theme.key_contacts_inviteText)); } else { Theme.setDrawableColor(child.getBackground(), color & 0x1fffffff); - child.setTextColor(Theme.getColor(Theme.key_chats_secretName)); + child.setTextColor(getThemedColor(Theme.key_chats_secretName)); } child.invalidate(); } @@ -2564,7 +2756,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } private void updatePasswordFields() { - if (currentStep != 6 || bottomCell[2] == null) { + if (currentStep != STEP_SET_PASSWORD_EMAIL || bottomCell[2] == null) { return; } doneItem.setVisibility(View.VISIBLE); @@ -2774,20 +2966,42 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen public boolean onFragmentCreate() { NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.twoStepPasswordChanged); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.didRemoveTwoStepPassword); - if (currentStep != 4) { + if (currentStep != STEP_CHECKOUT || isCheckoutPreview) { NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.paymentFinished); } return super.onFragmentCreate(); } + public int getOtherSameFragmentDiff() { + if (parentLayout == null || parentLayout.fragmentsStack == null) { + return 0; + } + int cur = parentLayout.fragmentsStack.indexOf(this); + if (cur == -1) { + cur = parentLayout.fragmentsStack.size(); + } + int i = cur; + for (int a = 0; a < parentLayout.fragmentsStack.size(); a++) { + BaseFragment fragment = parentLayout.fragmentsStack.get(a); + if (fragment instanceof PaymentFormActivity) { + i = a; + break; + } + } + return i - cur; + } + @Override public void onFragmentDestroy() { if (delegate != null) { delegate.onFragmentDestroyed(); } + if (!paymentStatusSent && paymentFormCallback != null && getOtherSameFragmentDiff() == 0) { + paymentFormCallback.onInvoiceStatusChanged(InvoiceStatus.CANCELLED); + } NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.twoStepPasswordChanged); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.didRemoveTwoStepPassword); - if (currentStep != 4) { + if (currentStep != STEP_CHECKOUT || isCheckoutPreview) { NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.paymentFinished); } if (webView != null) { @@ -2806,7 +3020,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } } try { - if ((currentStep == 2 || currentStep == 6) && Build.VERSION.SDK_INT >= 23 && (SharedConfig.passcodeHash.length() == 0 || SharedConfig.allowScreenCapture)) { + if ((currentStep == STEP_PAYMENT_INFO || currentStep == STEP_SET_PASSWORD_EMAIL) && Build.VERSION.SDK_INT >= 23 && (SharedConfig.passcodeHash.length() == 0 || SharedConfig.allowScreenCapture)) { getParentActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); } } catch (Throwable e) { @@ -2816,26 +3030,38 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen canceled = true; } + @Override + protected void onBecomeFullyVisible() { + super.onBecomeFullyVisible(); + + if (currentStep == STEP_CHECKOUT) { + if (needPayAfterTransition) { + needPayAfterTransition = false; + bottomLayout.callOnClick(); + } + } + } + @Override protected void onTransitionAnimationEnd(boolean isOpen, boolean backward) { if (isOpen && !backward) { if (webView != null) { - if (currentStep != 4) { + if (currentStep != STEP_CHECKOUT) { webView.loadUrl(webViewUrl = paymentForm.url); } - } else if (currentStep == 2) { + } else if (currentStep == STEP_PAYMENT_INFO) { AndroidUtilities.runOnUIThread(() -> { inputFields[FIELD_CARD].requestFocus(); AndroidUtilities.showKeyboard(inputFields[FIELD_CARD]); }, 100); - } else if (currentStep == 3) { + } else if (currentStep == STEP_CONFIRM_PASSWORD) { inputFields[FIELD_SAVEDPASSWORD].requestFocus(); AndroidUtilities.showKeyboard(inputFields[FIELD_SAVEDPASSWORD]); - } else if (currentStep == 4) { + } else if (currentStep == STEP_CHECKOUT) { if (inputFields != null) { inputFields[0].requestFocus(); } - } else if (currentStep == 6) { + } else if (currentStep == STEP_SET_PASSWORD_EMAIL) { if (!waitingForEmail) { inputFields[FIELD_ENTERPASSWORD].requestFocus(); AndroidUtilities.showKeyboard(inputFields[FIELD_ENTERPASSWORD]); @@ -2855,6 +3081,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen paymentForm.can_save_credentials = false; updateSavePaymentField(); } else if (id == NotificationCenter.paymentFinished) { + paymentStatusSent = true; removeSelfFromStack(); } } @@ -2912,15 +3139,36 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } private void goToNextStep() { - if (currentStep == 0) { - if (delegate != null) { - delegate.didSelectNewAddress(validateRequest); - finishFragment(); - } else { + switch (currentStep) { + case STEP_SHIPPING_INFORMATION: + if (delegate != null) { + delegate.didSelectNewAddress(validateRequest); + finishFragment(); + } else { + int nextStep; + if (paymentForm.invoice.flexible) { + nextStep = STEP_SHIPPING_METHODS; + } else if (paymentForm.saved_credentials != null) { + if (UserConfig.getInstance(currentAccount).tmpPassword != null) { + if (UserConfig.getInstance(currentAccount).tmpPassword.valid_until < ConnectionsManager.getInstance(currentAccount).getCurrentTime() + 60) { + UserConfig.getInstance(currentAccount).tmpPassword = null; + UserConfig.getInstance(currentAccount).saveConfig(false); + } + } + if (UserConfig.getInstance(currentAccount).tmpPassword != null) { + nextStep = STEP_CHECKOUT; + } else { + nextStep = STEP_CONFIRM_PASSWORD; + } + } else { + nextStep = STEP_PAYMENT_INFO; + } + presentFragment(new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, nextStep, requestedInfo, null, null, null, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), isWebView); + } + break; + case STEP_SHIPPING_METHODS: { int nextStep; - if (paymentForm.invoice.flexible) { - nextStep = 1; - } else if (paymentForm.saved_credentials != null) { + if (paymentForm.saved_credentials != null) { if (UserConfig.getInstance(currentAccount).tmpPassword != null) { if (UserConfig.getInstance(currentAccount).tmpPassword.valid_until < ConnectionsManager.getInstance(currentAccount).getCurrentTime() + 60) { UserConfig.getInstance(currentAccount).tmpPassword = null; @@ -2928,85 +3176,89 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } } if (UserConfig.getInstance(currentAccount).tmpPassword != null) { - nextStep = 4; + nextStep = STEP_CHECKOUT; } else { - nextStep = 3; + nextStep = STEP_CONFIRM_PASSWORD; } } else { - nextStep = 2; + nextStep = STEP_PAYMENT_INFO; } - presentFragment(new PaymentFormActivity(paymentForm, messageObject, nextStep, requestedInfo, null, null, null, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), isWebView); + presentFragment(new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, nextStep, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), isWebView); + break; } - } else if (currentStep == 1) { - int nextStep; - if (paymentForm.saved_credentials != null) { - if (UserConfig.getInstance(currentAccount).tmpPassword != null) { - if (UserConfig.getInstance(currentAccount).tmpPassword.valid_until < ConnectionsManager.getInstance(currentAccount).getCurrentTime() + 60) { - UserConfig.getInstance(currentAccount).tmpPassword = null; - UserConfig.getInstance(currentAccount).saveConfig(false); - } - } - if (UserConfig.getInstance(currentAccount).tmpPassword != null) { - nextStep = 4; + case STEP_PAYMENT_INFO: + if (paymentForm.password_missing && saveCardInfo) { + passwordFragment = new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, STEP_SET_PASSWORD_EMAIL, requestedInfo, shippingOption, tipAmount, paymentJson, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment); + passwordFragment.setCurrentPassword(currentPassword); + passwordFragment.setDelegate(new PaymentFormActivityDelegate() { + @Override + public boolean didSelectNewCard(String tokenJson, String card, boolean saveCard, TLRPC.TL_inputPaymentCredentialsGooglePay googlePay) { + if (delegate != null) { + delegate.didSelectNewCard(tokenJson, card, saveCard, googlePay); + } + if (isWebView) { + removeSelfFromStack(); + } + return delegate != null; + } + + @Override + public void onFragmentDestroyed() { + passwordFragment = null; + } + + @Override + public void currentPasswordUpdated(TLRPC.TL_account_password password) { + currentPassword = password; + } + }); + presentFragment(passwordFragment, isWebView); } else { - nextStep = 3; + if (delegate != null) { + delegate.didSelectNewCard(paymentJson, cardName, saveCardInfo, googlePayCredentials); + finishFragment(); + } else { + presentFragment(new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, STEP_CHECKOUT, requestedInfo, shippingOption, tipAmount, paymentJson, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), isWebView); + } } - } else { - nextStep = 2; + break; + case STEP_CONFIRM_PASSWORD: { + int nextStep; + if (passwordOk) { + nextStep = STEP_CHECKOUT; + } else { + nextStep = STEP_PAYMENT_INFO; + } + presentFragment(new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, nextStep, requestedInfo, shippingOption, tipAmount, paymentJson, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), true); + break; } - presentFragment(new PaymentFormActivity(paymentForm, messageObject, nextStep, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), isWebView); - } else if (currentStep == 2) { - if (paymentForm.password_missing && saveCardInfo) { - passwordFragment = new PaymentFormActivity(paymentForm, messageObject, 6, requestedInfo, shippingOption, tipAmount, paymentJson, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment); - passwordFragment.setCurrentPassword(currentPassword); - passwordFragment.setDelegate(new PaymentFormActivityDelegate() { - @Override - public boolean didSelectNewCard(String tokenJson, String card, boolean saveCard, TLRPC.TL_inputPaymentCredentialsGooglePay googlePay) { - if (delegate != null) { - delegate.didSelectNewCard(tokenJson, card, saveCard, googlePay); + case STEP_CHECKOUT: + NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.paymentFinished); + if (botUser.username != null && botUser.username.equalsIgnoreCase(getMessagesController().premiumBotUsername) || Objects.equals(invoiceSlug, getMessagesController().premiumInvoiceSlug)) { + for (BaseFragment fragment : new ArrayList<>(getParentLayout().fragmentsStack)) { + if (fragment instanceof ChatActivity || fragment instanceof PremiumPreviewFragment) { + fragment.removeSelfFromStack(); } - if (isWebView) { - removeSelfFromStack(); - } - return delegate != null; } - @Override - public void onFragmentDestroyed() { - passwordFragment = null; + presentFragment(new PremiumPreviewFragment(null).setForcePremium(), true); + if (getParentActivity() instanceof LaunchActivity) { + try { + fragmentView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); + } catch (Exception ignored) {} + ((LaunchActivity) getParentActivity()).getFireworksOverlay().start(); } - - @Override - public void currentPasswordUpdated(TLRPC.TL_account_password password) { - currentPassword = password; - } - }); - presentFragment(passwordFragment, isWebView); - } else { - if (delegate != null) { - delegate.didSelectNewCard(paymentJson, cardName, saveCardInfo, googlePayCredentials); + } else { finishFragment(); - } else { - presentFragment(new PaymentFormActivity(paymentForm, messageObject, 4, requestedInfo, shippingOption, tipAmount, paymentJson, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), isWebView); } - } - } else if (currentStep == 3) { - int nextStep; - if (passwordOk) { - nextStep = 4; - } else { - nextStep = 2; - } - presentFragment(new PaymentFormActivity(paymentForm, messageObject, nextStep, requestedInfo, shippingOption, tipAmount, paymentJson, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), true); - } else if (currentStep == 4) { - NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.paymentFinished); - finishFragment(); - } else if (currentStep == 6) { - if (!delegate.didSelectNewCard(paymentJson, cardName, saveCardInfo, googlePayCredentials)) { - presentFragment(new PaymentFormActivity(paymentForm, messageObject, 4, requestedInfo, shippingOption, tipAmount, paymentJson, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), true); - } else { - finishFragment(); - } + break; + case STEP_SET_PASSWORD_EMAIL: + if (!delegate.didSelectNewCard(paymentJson, cardName, saveCardInfo, googlePayCredentials)) { + presentFragment(new PaymentFormActivity(paymentForm, messageObject, invoiceSlug, STEP_CHECKOUT, requestedInfo, shippingOption, tipAmount, paymentJson, cardName, validateRequest, saveCardInfo, googlePayCredentials, parentFragment), true); + } else { + finishFragment(); + } + break; } } @@ -3423,15 +3675,63 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen return rBody; } + private void sendSavedForm(Runnable callback) { + if (canceled) { + return; + } + showEditDoneProgress(true, true); + validateRequest = new TLRPC.TL_payments_validateRequestedInfo(); + if (messageObject != null) { + TLRPC.TL_inputInvoiceMessage inputInvoice = new TLRPC.TL_inputInvoiceMessage(); + inputInvoice.peer = getMessagesController().getInputPeer(messageObject.messageOwner.peer_id); + inputInvoice.msg_id = messageObject.getId(); + validateRequest.invoice = inputInvoice; + } else { + TLRPC.TL_inputInvoiceSlug inputInvoice = new TLRPC.TL_inputInvoiceSlug(); + inputInvoice.slug = invoiceSlug; + validateRequest.invoice = inputInvoice; + } + validateRequest.save = true; + validateRequest.info = paymentForm.saved_info; + + TLObject req = validateRequest; + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> { + if (response instanceof TLRPC.TL_payments_validatedRequestedInfo) { + AndroidUtilities.runOnUIThread(() -> { + requestedInfo = (TLRPC.TL_payments_validatedRequestedInfo) response; + callback.run(); + setDonePressed(false); + showEditDoneProgress(true, false); + }); + } else { + AndroidUtilities.runOnUIThread(() -> { + setDonePressed(false); + showEditDoneProgress(true, false); + if (error != null) { + AlertsCreator.processError(currentAccount, error, PaymentFormActivity.this, req); + } + }); + } + }, ConnectionsManager.RequestFlagFailOnServerErrors); + } + private void sendForm() { if (canceled) { return; } showEditDoneProgress(true, true); validateRequest = new TLRPC.TL_payments_validateRequestedInfo(); - validateRequest.peer = getMessagesController().getInputPeer(messageObject.messageOwner.peer_id); + if (messageObject != null) { + TLRPC.TL_inputInvoiceMessage inputInvoice = new TLRPC.TL_inputInvoiceMessage(); + inputInvoice.peer = getMessagesController().getInputPeer(messageObject.messageOwner.peer_id); + inputInvoice.msg_id = messageObject.getId(); + validateRequest.invoice = inputInvoice; + } else { + TLRPC.TL_inputInvoiceSlug inputInvoice = new TLRPC.TL_inputInvoiceSlug(); + inputInvoice.slug = invoiceSlug; + validateRequest.invoice = inputInvoice; + } validateRequest.save = saveShippingInfo; - validateRequest.msg_id = messageObject.getId(); validateRequest.info = new TLRPC.TL_paymentRequestedInfo(); if (paymentForm.invoice.name_requested) { validateRequest.info.name = inputFields[FIELD_NAME].getText().toString(); @@ -3455,7 +3755,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen validateRequest.info.shipping_address.post_code = inputFields[FIELD_POSTCODE].getText().toString(); validateRequest.info.flags |= 8; } - final TLObject req = validateRequest; + TLObject req = validateRequest; ConnectionsManager.getInstance(currentAccount).sendRequest(validateRequest, (response, error) -> { if (response instanceof TLRPC.TL_payments_validatedRequestedInfo) { AndroidUtilities.runOnUIThread(() -> { @@ -3519,9 +3819,17 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen return; } showEditDoneProgress(false, true); - final TLRPC.TL_payments_sendPaymentForm req = new TLRPC.TL_payments_sendPaymentForm(); - req.msg_id = messageObject.getId(); - req.peer = getMessagesController().getInputPeer(messageObject.messageOwner.peer_id); + TLRPC.TL_payments_sendPaymentForm req = new TLRPC.TL_payments_sendPaymentForm(); + if (messageObject != null) { + TLRPC.TL_inputInvoiceMessage inputInvoice = new TLRPC.TL_inputInvoiceMessage(); + inputInvoice.peer = getMessagesController().getInputPeer(messageObject.messageOwner.peer_id); + inputInvoice.msg_id = messageObject.getId(); + req.invoice = inputInvoice; + } else { + TLRPC.TL_inputInvoiceSlug inputInvoice = new TLRPC.TL_inputInvoiceSlug(); + inputInvoice.slug = invoiceSlug; + req.invoice = inputInvoice; + } req.form_id = paymentForm.form_id; if (UserConfig.getInstance(currentAccount).tmpPassword != null && paymentForm.saved_credentials != null) { req.credentials = new TLRPC.TL_inputPaymentCredentialsSaved(); @@ -3564,6 +3872,11 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } getMessagesController().processUpdates(updates, false); AndroidUtilities.runOnUIThread(() -> { + paymentStatusSent = true; + if (paymentFormCallback != null) { + paymentFormCallback.onInvoiceStatusChanged(InvoiceStatus.PAID); + } + goToNextStep(); if (parentFragment instanceof ChatActivity) { CharSequence info = AndroidUtilities.replaceTags(LocaleController.formatString("PaymentInfoHint", R.string.PaymentInfoHint, totalPrice[0], currentItemName)); @@ -3587,6 +3900,11 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen webView.setVisibility(View.VISIBLE); webView.loadUrl(webViewUrl = ((TLRPC.TL_payments_paymentVerificationNeeded) response).url); } + + paymentStatusSent = true; + if (paymentFormCallback != null) { + paymentFormCallback.onInvoiceStatusChanged(InvoiceStatus.PENDING); + } }); } } else { @@ -3594,6 +3912,11 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen AlertsCreator.processError(currentAccount, error, PaymentFormActivity.this, req); setDonePressed(false); showEditDoneProgress(false, false); + + paymentStatusSent = true; + if (paymentFormCallback != null) { + paymentFormCallback.onInvoiceStatusChanged(InvoiceStatus.FAILED); + } }); } }, ConnectionsManager.RequestFlagFailOnServerErrors); @@ -3750,10 +4073,13 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen doneItemAnimation.playTogether( ObjectAnimator.ofFloat(progressView, View.SCALE_X, 0.1f), ObjectAnimator.ofFloat(progressView, View.SCALE_Y, 0.1f), - ObjectAnimator.ofFloat(progressView, View.ALPHA, 0.0f), - ObjectAnimator.ofFloat(doneItem.getContentView(), View.SCALE_X, 1.0f), - ObjectAnimator.ofFloat(doneItem.getContentView(), View.SCALE_Y, 1.0f), - ObjectAnimator.ofFloat(doneItem.getContentView(), View.ALPHA, 1.0f)); + ObjectAnimator.ofFloat(progressView, View.ALPHA, 0.0f)); + + if (!isFinishing()) { + doneItemAnimation.playTogether(ObjectAnimator.ofFloat(doneItem.getContentView(), View.SCALE_X, 1.0f), + ObjectAnimator.ofFloat(doneItem.getContentView(), View.SCALE_Y, 1.0f), + ObjectAnimator.ofFloat(doneItem.getContentView(), View.ALPHA, 1.0f)); + } } } doneItemAnimation.addListener(new AnimatorListenerAdapter() { @@ -3825,6 +4151,27 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen } } + @Override + public boolean presentFragment(BaseFragment fragment) { + onPresentFragment(fragment); + return super.presentFragment(fragment); + } + + @Override + public boolean presentFragment(BaseFragment fragment, boolean removeLast) { + onPresentFragment(fragment); + return super.presentFragment(fragment, removeLast); + } + + private void onPresentFragment(BaseFragment fragment) { + AndroidUtilities.hideKeyboard(fragmentView); + if (fragment instanceof PaymentFormActivity) { + ((PaymentFormActivity) fragment).paymentFormCallback = paymentFormCallback; + ((PaymentFormActivity) fragment).resourcesProvider = resourcesProvider; + ((PaymentFormActivity) fragment).needPayAfterTransition = needPayAfterTransition; + } + } + @Override public boolean onBackPressed() { if (shouldNavigateBack) { @@ -3937,4 +4284,53 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen return arrayList; } + + private class BottomFrameLayout extends FrameLayout { + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + float progress; + SpringAnimation springAnimation; + + public BottomFrameLayout(@NonNull Context context, TLRPC.TL_payments_paymentForm paymentForm) { + super(context); + + progress = paymentForm.invoice.recurring && !isAcceptTermsChecked ? 0f : 1f; + setWillNotDraw(false); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + canvas.drawColor(getThemedColor(Theme.key_switchTrackBlue)); + paint.setColor(getThemedColor(Theme.key_contacts_inviteBackground)); + canvas.drawCircle(LocaleController.isRTL ? getWidth() - AndroidUtilities.dp(28) : AndroidUtilities.dp(28), -AndroidUtilities.dp(28), Math.max(getWidth(), getHeight()) * progress, paint); + } + + public void setChecked(boolean checked) { + if (springAnimation != null) { + springAnimation.cancel(); + } + float to = checked ? 1f : 0f; + if (progress == to) { + return; + } + springAnimation = new SpringAnimation(new FloatValueHolder(progress * 100f)) + .setSpring(new SpringForce(to * 100f) + .setStiffness(checked ? 500f : 650f) + .setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY)); + springAnimation.addUpdateListener((animation, value, velocity) -> { + progress = value / 100f; + if (payTextView != null) { + payTextView.setAlpha(0.8f + 0.2f * progress); + } + invalidate(); + }); + springAnimation.addEndListener((animation, canceled1, value, velocity) -> { + if (animation == springAnimation) { + springAnimation = null; + } + }); + springAnimation.start(); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PeopleNearbyActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PeopleNearbyActivity.java index 1d7a50805..abdd67d33 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PeopleNearbyActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PeopleNearbyActivity.java @@ -1006,13 +1006,13 @@ public class PeopleNearbyActivity extends BaseFragment implements NotificationCe ManageChatTextCell actionCell = (ManageChatTextCell) holder.itemView; actionCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); if (position == chatsCreateRow) { - actionCell.setText(LocaleController.getString("NearbyCreateGroup", R.string.NearbyCreateGroup), null, R.drawable.groups_create, chatsStartRow != -1); + actionCell.setText(LocaleController.getString("NearbyCreateGroup", R.string.NearbyCreateGroup), null, R.drawable.msg_groups_create, chatsStartRow != -1); } else if (position == showMeRow) { if (showingMe = (getUserConfig().sharingMyLocationUntil > getConnectionsManager().getCurrentTime())) { - actionCell.setText(LocaleController.getString("StopShowingMe", R.string.StopShowingMe), null, R.drawable.actions_nearby_off, usersStartRow != -1); + actionCell.setText(LocaleController.getString("StopShowingMe", R.string.StopShowingMe), null, R.drawable.msg_nearby_off, usersStartRow != -1); actionCell.setColors(Theme.key_windowBackgroundWhiteRedText5, Theme.key_windowBackgroundWhiteRedText5); } else { - actionCell.setText(LocaleController.getString("MakeMyselfVisible", R.string.MakeMyselfVisible), null, R.drawable.actions_nearby_on, usersStartRow != -1); + actionCell.setText(LocaleController.getString("MakeMyselfVisible", R.string.MakeMyselfVisible), null, R.drawable.msg_nearby, usersStartRow != -1); } } else if (position == showMoreRow) { actionCell.setText(LocaleController.formatPluralString("ShowVotes", users.size() - 5), null, R.drawable.arrow_more, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java index f8b279d27..3949eac00 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java @@ -38,12 +38,15 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; -import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.R; import org.telegram.messenger.SendMessagesHelper; import org.telegram.messenger.SharedConfig; @@ -71,9 +74,6 @@ import org.telegram.ui.Components.SizeNotifierFrameLayout; import java.util.ArrayList; import java.util.HashMap; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class PhotoAlbumPickerActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { public interface PhotoAlbumPickerActivityDelegate { @@ -464,7 +464,7 @@ public class PhotoAlbumPickerActivity extends BaseFragment implements Notificati sendPopupWindow.dismiss(); } }); - sendPopupLayout.setShownFromBotton(false); + sendPopupLayout.setShownFromBottom(false); itemCells = new ActionBarMenuSubItem[2]; for (int a = 0; a < 2; a++) { @@ -475,9 +475,9 @@ public class PhotoAlbumPickerActivity extends BaseFragment implements Notificati itemCells[a] = new ActionBarMenuSubItem(getParentActivity(), a == 0, a == 1); if (num == 0) { if (UserObject.isUserSelf(user)) { - itemCells[a].setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_schedule); + itemCells[a].setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_calendar2); } else { - itemCells[a].setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_schedule); + itemCells[a].setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_calendar2); } } else { itemCells[a].setTextAndIcon(LocaleController.getString("SendWithoutSound", R.string.SendWithoutSound), R.drawable.input_notify_off); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java index 99269da11..040675ad4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java @@ -441,7 +441,7 @@ public class PhotoCropActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); + menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); fragmentView = view = new PhotoCropView(context); ((PhotoCropView) fragmentView).freeform = getArguments().getBoolean("freeform", false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java index 3da384b43..1ffccb82c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java @@ -23,6 +23,7 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.RectF; +import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Build; import android.text.Editable; @@ -30,6 +31,7 @@ import android.text.InputFilter; import android.text.TextPaint; import android.text.TextUtils; import android.text.TextWatcher; +import android.util.TypedValue; import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.KeyEvent; @@ -47,6 +49,9 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.ChatObject; @@ -55,26 +60,25 @@ import org.telegram.messenger.FileLoader; import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; +import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; import org.telegram.messenger.UserConfig; import org.telegram.messenger.UserObject; import org.telegram.messenger.VideoEditedInfo; -import org.telegram.messenger.R; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; -import org.telegram.messenger.MessageObject; +import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; import org.telegram.ui.ActionBar.ActionBarMenuSubItem; import org.telegram.ui.ActionBar.ActionBarPopupWindow; -import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.BaseFragment; -import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; import org.telegram.ui.Cells.DividerCell; @@ -86,19 +90,17 @@ import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.CombinedDrawable; import org.telegram.ui.Components.EditTextBoldCursor; import org.telegram.ui.Components.EditTextEmoji; -import org.telegram.ui.Components.EmptyTextProgressView; +import org.telegram.ui.Components.FlickerLoadingView; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RadialProgressView; import org.telegram.ui.Components.RecyclerListView; import org.telegram.ui.Components.RecyclerViewItemRangeSelector; import org.telegram.ui.Components.SizeNotifierFrameLayout; +import org.telegram.ui.Components.StickerEmptyView; import java.util.ArrayList; import java.util.HashMap; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class PhotoPickerActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { public interface PhotoPickerActivityDelegate { @@ -145,7 +147,8 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen private RecyclerListView listView; private ListAdapter listAdapter; private GridLayoutManager layoutManager; - private EmptyTextProgressView emptyView; + private StickerEmptyView emptyView; + private FlickerLoadingView flickerView; private ActionBarMenuItem searchItem; private ActionBarMenuSubItem showAsListItem; private int itemSize = 100; @@ -553,11 +556,17 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen ConnectionsManager.getInstance(currentAccount).cancelRequest(imageReqId, true); imageReqId = 0; } - emptyView.setText(LocaleController.getString("NoRecentSearches", R.string.NoRecentSearches)); + emptyView.title.setText(LocaleController.getString("NoRecentSearches", R.string.NoRecentSearches)); + emptyView.showProgress(false); updateSearchInterface(); + } else { + AndroidUtilities.cancelRunOnUIThread(updateSearch); + AndroidUtilities.runOnUIThread(updateSearch, 1200); } } + Runnable updateSearch = () -> processSearch(searchItem.getSearchField()); + @Override public void onSearchPressed(EditText editText) { processSearch(editText); @@ -900,18 +909,36 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen listView.addOnItemTouchListener(itemRangeSelector); } - emptyView = new EmptyTextProgressView(context); - emptyView.setTextColor(0xff93999d); - emptyView.setProgressBarColor(0xff527da3); + flickerView = new FlickerLoadingView(context, getResourceProvider()) { + @Override + public int getViewType() { + return PHOTOS_TYPE; + } + + @Override + public int getColumnsCount() { + return 3; + } + }; + flickerView.setAlpha(0); + flickerView.setVisibility(View.GONE); + + emptyView = new StickerEmptyView(context, flickerView, StickerEmptyView.STICKER_TYPE_SEARCH, getResourceProvider()); + emptyView.setAnimateLayoutChange(true); + emptyView.title.setTypeface(Typeface.DEFAULT); + emptyView.title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + emptyView.title.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText)); + emptyView.addView(flickerView, 0); if (selectedAlbum != null) { - emptyView.setShowAtCenter(false); - emptyView.setText(LocaleController.getString("NoPhotos", R.string.NoPhotos)); +// emptyView.setShowAtCenter(false); + emptyView.title.setText(LocaleController.getString("NoPhotos", R.string.NoPhotos)); } else { - emptyView.setShowAtTop(true); - emptyView.setPadding(0, AndroidUtilities.dp(200), 0, 0); - emptyView.setText(LocaleController.getString("NoRecentSearches", R.string.NoRecentSearches)); +// emptyView.setShowAtTop(true); +// emptyView.setPadding(0, AndroidUtilities.dp(200), 0, 0); + emptyView.title.setText(LocaleController.getString("NoRecentSearches", R.string.NoRecentSearches)); } - sizeNotifierFrameLayout.addView(emptyView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 0, 0, 0, selectPhotoType != PhotoAlbumPickerActivity.SELECT_TYPE_ALL ? 0 : 48)); + emptyView.showProgress(false, false); + sizeNotifierFrameLayout.addView(emptyView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 0, 126, 0, 0)); listView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override @@ -1071,7 +1098,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen sendPopupWindow.dismiss(); } }); - sendPopupLayout.setShownFromBotton(false); + sendPopupLayout.setShownFromBottom(false); itemCells = new ActionBarMenuSubItem[2]; for (int a = 0; a < 2; a++) { @@ -1082,9 +1109,9 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen itemCells[a] = new ActionBarMenuSubItem(getParentActivity(), a == 0, a == 1); if (num == 0) { if (UserObject.isUserSelf(user)) { - itemCells[a].setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_schedule); + itemCells[a].setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_calendar2); } else { - itemCells[a].setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_schedule); + itemCells[a].setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_calendar2); } } else { itemCells[a].setTextAndIcon(LocaleController.getString("SendWithoutSound", R.string.SendWithoutSound), R.drawable.input_notify_off); @@ -1161,6 +1188,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen allowIndices = (selectedAlbum != null || type == 0 || type == 1) && allowOrder; listView.setEmptyView(emptyView); + listView.setAnimateEmptyView(true, 0); updatePhotosButton(0); return fragmentView; @@ -1174,10 +1202,10 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen if (commentTextView.isPopupShowing()) { fragmentView.setTranslationY(y); listView.setTranslationY(0); - emptyView.setTranslationY(0); +// emptyView.setTranslationY(0); } else { listView.setTranslationY(y); - emptyView.setTranslationY(y); +// emptyView.setTranslationY(y); } } @@ -1227,6 +1255,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen if (listAdapter != null) { listAdapter.notifyDataSetChanged(); } + emptyView.showProgress(false); saveRecentSearch(); } @@ -1299,23 +1328,26 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen } } + private void addToRecentSearches(String query) { + for (int a = 0, N = recentSearches.size(); a < N; a++) { + String str = recentSearches.get(a); + if (str.equalsIgnoreCase(query)) { + recentSearches.remove(a); + break; + } + } + recentSearches.add(0, query); + while (recentSearches.size() > 20) { + recentSearches.remove(recentSearches.size() - 1); + } + saveRecentSearch(); + } + private void processSearch(EditText editText) { if (editText.getText().length() == 0) { return; } String text = editText.getText().toString(); - for (int a = 0, N = recentSearches.size(); a < N; a++) { - String str = recentSearches.get(a); - if (str.equalsIgnoreCase(text)) { - recentSearches.remove(a); - break; - } - } - recentSearches.add(0, text); - while (recentSearches.size() > 20) { - recentSearches.remove(recentSearches.size() - 1); - } - saveRecentSearch(); searchResult.clear(); searchResultKeys.clear(); imageSearchEndReached = true; @@ -1323,9 +1355,9 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen lastSearchString = text; if (lastSearchString.length() == 0) { lastSearchString = null; - emptyView.setText(LocaleController.getString("NoRecentSearches", R.string.NoRecentSearches)); + emptyView.title.setText(LocaleController.getString("NoRecentSearches", R.string.NoRecentSearches)); } else { - emptyView.setText(LocaleController.getString("NoResult", R.string.NoResult)); + emptyView.title.setText(LocaleController.formatString("NoResultFoundFor", R.string.NoResultFoundFor, lastSearchString)); } updateSearchInterface(); } @@ -1541,10 +1573,10 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen if (listAdapter != null) { listAdapter.notifyDataSetChanged(); } - if (searching && searchResult.isEmpty()) { - emptyView.showProgress(); + if (searching || recentSearches.size() > 0 && (lastSearchString == null || TextUtils.isEmpty(lastSearchString))) { + emptyView.showProgress(true); } else { - emptyView.showTextView(); + emptyView.showProgress(false); } } @@ -1609,6 +1641,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen final int token = ++lastSearchToken; imageReqId = ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + addToRecentSearches(query); if (token != lastSearchToken) { return; } @@ -1702,10 +1735,8 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen } else if (imageSearchEndReached) { listAdapter.notifyItemRemoved(searchResult.size() - 1); } - if (searching && searchResult.isEmpty()) { - emptyView.showProgress(); - } else { - emptyView.showTextView(); + if (searchResult.size() <= 0) { + emptyView.showProgress(false); } })); ConnectionsManager.getInstance(currentAccount).bindRequestToGuid(imageReqId, classGuid); @@ -1907,9 +1938,9 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen case 3: { TextCell cell = (TextCell) holder.itemView; if (position < recentSearches.size()) { - cell.setTextAndIcon(recentSearches.get(position), R.drawable.menu_recent, false); + cell.setTextAndIcon(recentSearches.get(position), R.drawable.msg_recent, false); } else { - cell.setTextAndIcon(LocaleController.getString("ClearRecentHistory", R.string.ClearRecentHistory), R.drawable.menu_clear_recent, false); + cell.setTextAndIcon(LocaleController.getString("ClearRecentHistory", R.string.ClearRecentHistory), R.drawable.msg_clear_recent, false); } break; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerSearchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerSearchActivity.java index c5e3fa681..16590290e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerSearchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerSearchActivity.java @@ -8,6 +8,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.drawable.Drawable; +import android.os.Build; import android.view.Gravity; import android.view.MotionEvent; import android.view.VelocityTracker; @@ -357,9 +358,8 @@ public class PhotoPickerSearchActivity extends BaseFragment { @Override protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); - if (parentLayout != null) { - parentLayout.drawHeaderShadow(canvas, actionBar.getMeasuredHeight() + (int) actionBar.getTranslationY()); - } + float y = actionBar.getMeasuredHeight() + (int) actionBar.getTranslationY(); + canvas.drawLine(0, y, getWidth(), y, Theme.dividerPaint); } @Override @@ -651,7 +651,7 @@ public class PhotoPickerSearchActivity extends BaseFragment { sizeNotifierFrameLayout.addView(actionBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - sizeNotifierFrameLayout.addView(imagesSearch.shadow, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.BOTTOM | Gravity.LEFT, 0, 0, 0, 48)); +// sizeNotifierFrameLayout.addView(imagesSearch.shadow, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.BOTTOM | Gravity.LEFT, 0, 0, 0, 48)); sizeNotifierFrameLayout.addView(imagesSearch.frameLayout2, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.BOTTOM)); sizeNotifierFrameLayout.addView(imagesSearch.writeButtonContainer, LayoutHelper.createFrame(60, 60, Gravity.RIGHT | Gravity.BOTTOM, 0, 0, 12, 10)); sizeNotifierFrameLayout.addView(imagesSearch.selectedCountView, LayoutHelper.createFrame(42, 24, Gravity.RIGHT | Gravity.BOTTOM, 0, 0, -2, 9)); @@ -660,6 +660,13 @@ public class PhotoPickerSearchActivity extends BaseFragment { switchToCurrentSelectedMode(false); swipeBackEnabled = scrollSlidingTextTabStrip.getCurrentTabId() == scrollSlidingTextTabStrip.getFirstTabId(); + int statusBarBackground = Theme.getColor(Theme.key_dialogBackground); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && AndroidUtilities.computePerceivedBrightness(statusBarBackground) >= 0.721f) { + fragmentView.setSystemUiVisibility( + fragmentView.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + ); + } + return fragmentView; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index dfb031039..33b15ab4f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -12,7 +12,9 @@ import android.Manifest; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; +import android.animation.ArgbEvaluator; import android.animation.ObjectAnimator; +import android.animation.TimeInterpolator; import android.animation.ValueAnimator; import android.annotation.SuppressLint; import android.app.Activity; @@ -106,6 +108,7 @@ import androidx.annotation.Keep; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.collection.ArrayMap; +import androidx.collection.LongSparseArray; import androidx.core.content.ContextCompat; import androidx.core.content.FileProvider; import androidx.core.graphics.ColorUtils; @@ -216,6 +219,7 @@ import org.telegram.ui.Components.PlayPauseDrawable; import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.RadialProgressView; import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.Components.ShareAlert; import org.telegram.ui.Components.SizeNotifierFrameLayoutPhoto; import org.telegram.ui.Components.StickersAlert; import org.telegram.ui.Components.TextViewSwitcher; @@ -348,6 +352,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private ImageReceiver sideImage; private boolean isCurrentVideo; + private Runnable onUserLeaveHintListener = this::onUserLeaveHint; + private float currentVideoSpeed; private long lastPhotoSetTime; @@ -487,6 +493,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private boolean textureUploaded; private boolean videoSizeSet; private boolean isInline; + private boolean pipVideoOverlayAnimateFlag = true; private boolean switchingInlineMode; private boolean videoCrossfadeStarted; private float videoCrossfadeAlpha; @@ -517,6 +524,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat protected void onRewindCanceled() { onTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0)); videoForwardDrawable.setShowing(false); + + PipVideoOverlay.onRewindCanceled(); } @Override @@ -526,6 +535,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat videoPlayerSeekbar.setProgress(progress); videoPlayerSeekbarView.invalidate(); } + + PipVideoOverlay.onUpdateRewindProgressUi(timeDiff, progress, rewindByBackSeek); } @Override @@ -534,6 +545,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat videoForwardDrawable.setLeftSide(!rewindForward); videoForwardDrawable.setShowing(true); containerView.invalidate(); + + PipVideoOverlay.onRewindStart(rewindForward); } }; @@ -627,7 +640,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private void onLinkLongPress(URLSpan link, TextView widget, Runnable onDismiss) { int timestamp = -1; - BottomSheet.Builder builder = new BottomSheet.Builder(parentActivity, false, resourcesProvider); + BottomSheet.Builder builder = new BottomSheet.Builder(parentActivity, false, resourcesProvider, 0xff1C2229); if (link.getURL().startsWith("video?")) { try { String timestampStr = link.getURL().substring(link.getURL().indexOf('?') + 1); @@ -714,7 +727,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat bottomSheet.setBackgroundColor(0xff1C2229); bottomSheet.setTitleColor(0xff8A8A8A); bottomSheet.setCalcMandatoryInsets(true); - bottomSheet.setOverlayNavBarColor(0xff1C2229); AndroidUtilities.setNavigationBarColor(bottomSheet.getWindow(), 0xff1C2229, false); AndroidUtilities.setLightNavigationBar(bottomSheet.getWindow(), false); bottomSheet.scrollNavBar = true; @@ -829,22 +841,23 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } updateVideoPlayerTime(); } - if (firstFrameView != null) { - firstFrameView.updateAlpha(); - if (!videoPlayer.isLooping() && videoPlayer.getDuration() != C.TIME_UNSET) { - if (videoPlayer.getCurrentPosition() > videoPlayer.getDuration() - FirstFrameView.fadeDuration) { - if (!shownControlsByEnd) { - actionBarWasShownBeforeByEnd = isActionBarVisible; - shownControlsByEnd = true; - toggleActionBar(true, true); - checkProgress(0, false, false); - } else { - shownControlsByEnd = false; - actionBarWasShownBeforeByEnd = false; - } - } - } - } +// if (!videoPlayer.isLooping() && videoPlayer.getDuration() != C.TIME_UNSET) { +// if (videoPlayer.getCurrentPosition() > videoPlayer.getDuration() - FirstFrameView.fadeDuration) { +// if (!shownControlsByEnd) { +// actionBarWasShownBeforeByEnd = isActionBarVisible; +// shownControlsByEnd = true; +// toggleActionBar(true, true); +// checkProgress(0, false, false); +// } else { +// shownControlsByEnd = false; +// actionBarWasShownBeforeByEnd = false; +// } +// } +// } +// } + } + if (firstFrameView != null) { + firstFrameView.updateAlpha(); } if (isPlaying) { AndroidUtilities.runOnUIThread(updateProgressRunnable, 17); @@ -891,9 +904,11 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat isInline = true; changedTextureView = new TextureView(parentActivity); - if (PipVideoOverlay.show(false, parentActivity, changedTextureView, videoWidth, videoHeight, true)) { + if (PipVideoOverlay.show(false, parentActivity, changedTextureView, videoWidth, videoHeight, pipVideoOverlayAnimateFlag)) { PipVideoOverlay.setPhotoViewer(PhotoViewer.this); } + pipVideoOverlayAnimateFlag = true; + changedTextureView.setVisibility(View.INVISIBLE); aspectRatioFrameLayout.removeView(videoTextureView); } @@ -1113,9 +1128,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private float translationX; private float translationY; private float scale = 1; + private float rotate = 0; + private float mirror = 0; private float animateToX; private float animateToY; private float animateToScale; + private float animateToRotate; + private float animateToMirror; private float animationValue; private boolean applying; private long animationStartTime; @@ -1161,7 +1180,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private SparseArray[] imagesByIds = new SparseArray[] {new SparseArray<>(), new SparseArray<>()}; private ArrayList imagesArrLocations = new ArrayList<>(); private ArrayList imagesArrLocationsVideo = new ArrayList<>(); - private ArrayList imagesArrLocationsSizes = new ArrayList<>(); + private ArrayList imagesArrLocationsSizes = new ArrayList<>(); private ArrayList imagesArrMessages = new ArrayList<>(); private ArrayList secureDocuments = new ArrayList<>(); private ArrayList avatarsArr = new ArrayList<>(); @@ -1185,7 +1204,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat Object getParentObject(); } - private android.graphics.Rect hitRect = new android.graphics.Rect(); + private Rect hitRect = new Rect(); private final static int gallery_menu_save = 1; private final static int gallery_menu_showall = 2; @@ -1489,7 +1508,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat playPauseDrawable = new PlayPauseDrawable(28); playPauseDrawable.setDuration(200); - final Drawable circleDrawable = ContextCompat.getDrawable(parentActivity, R.drawable.circle_big); + Drawable circleDrawable = ContextCompat.getDrawable(parentActivity, R.drawable.circle_big); playDrawable = new CombinedDrawable(circleDrawable.mutate(), playPauseDrawable); } @@ -1562,10 +1581,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return; } if (playPauseDrawable != null) { - boolean animatePlayPause = animateIcon && (backgroundState == 3 || backgroundState == 4); - if (state == 3) { + boolean animatePlayPause = animateIcon && (backgroundState == PROGRESS_PLAY || backgroundState == PROGRESS_PAUSE); + if (state == PROGRESS_PLAY) { playPauseDrawable.setPause(false, animatePlayPause); - } else if (state == 4) { + } else if (state == PROGRESS_PAUSE) { playPauseDrawable.setPause(true, animatePlayPause); } playPauseDrawable.setParent(parent); @@ -1721,7 +1740,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat public ImageReceiver.BitmapHolder thumb; public long dialogId; public int index; - public int size; + public long size; public int[] radius; public int clipBottomAddition; public int clipTopAddition; @@ -1904,6 +1923,16 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat public void onApplyCaption(CharSequence caption) { } + + @Override + public void onOpen() { + + } + + @Override + public void onClose() { + + } } public interface PhotoViewerProvider { @@ -1941,6 +1970,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat boolean closeKeyboard(); boolean validateGroupId(long groupId); void onApplyCaption(CharSequence caption); + + void onOpen(); + void onClose(); } private class FrameLayoutDrawer extends SizeNotifierFrameLayoutPhoto { @@ -1949,7 +1981,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private boolean ignoreLayout; private boolean captionAbove; - AdjustPanLayoutHelper adjustPanLayoutHelper = new AdjustPanLayoutHelper(this) { + AdjustPanLayoutHelper adjustPanLayoutHelper = new AdjustPanLayoutHelper(this, false) { @Override protected void onPanTranslationUpdate(float y, float progress, boolean keyboardVisible) { currentPanTranslationY = y; @@ -2000,6 +2032,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat photoPaintView.setTranslationY(0); photoPaintView.getColorPicker().setTranslationY(y); photoPaintView.getToolsView().setTranslationY(y); + photoPaintView.getColorPickerBackground().setTranslationY(y); photoPaintView.getCurtainView().setTranslationY(y); } } else { @@ -2056,7 +2089,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat @Override protected void onTransitionEnd() { super.onTransitionEnd(); - navigationBar.setVisibility(currentEditMode == EDIT_MODE_NONE || currentEditMode == EDIT_MODE_CROP ? View.VISIBLE : View.INVISIBLE); + navigationBar.setVisibility(currentEditMode != EDIT_MODE_FILTER ? View.VISIBLE : View.INVISIBLE); if (captionEditText.getTag() == null) { captionEditText.setVisibility(View.GONE); } @@ -2317,6 +2350,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + if (child == leftPaintingOverlay || child == rightPaintingOverlay) { + return false; + } if (child != navigationBar) { canvas.save(); canvas.clipRect(0, 0, getWidth(), getHeight()); @@ -2364,7 +2400,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } else if (child == checkImageView || child == photosCounterView) { if (captionEditText.getTag() != null) { bottomTouchEnabled = false; - return child.getAlpha() > 0; + if (child.getAlpha() < 0) { + return false; + } } else { bottomTouchEnabled = true; } @@ -2433,7 +2471,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private static final Property VPC_PROGRESS; static { - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { VPC_PROGRESS = new FloatProperty("progress") { @Override public void setValue(VideoPlayerControlFrameLayout object, float value) { @@ -2499,7 +2537,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int extraWidth; ignoreLayout = true; - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) videoPlayerTime.getLayoutParams(); + LayoutParams layoutParams = (LayoutParams) videoPlayerTime.getLayoutParams(); if (parentWidth > parentHeight) { if (exitFullscreenButton.getVisibility() != VISIBLE) { exitFullscreenButton.setVisibility(VISIBLE); @@ -3476,10 +3514,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } if (f == null) { - f = FileLoader.getPathToMessage(currentMessageObject.messageOwner); + f = FileLoader.getInstance(currentAccount).getPathToMessage(currentMessageObject.messageOwner); } } else if (currentFileLocationVideo != null) { - f = FileLoader.getPathToAttach(getFileLocation(currentFileLocationVideo), getFileLocationExt(currentFileLocationVideo), avatarsDialogId != 0 || isEvent); + f = FileLoader.getInstance(currentAccount).getPathToAttach(getFileLocation(currentFileLocationVideo), getFileLocationExt(currentFileLocationVideo), avatarsDialogId != 0 || isEvent); } else if (pageBlocksAdapter != null) { f = pageBlocksAdapter.getFile(currentIndex); } @@ -3545,7 +3583,11 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat centerImage.setCurrentAccount(currentAccount); leftImage.setCurrentAccount(currentAccount); rightImage.setCurrentAccount(currentAccount); + if (captionEditText != null) { + captionEditText.currentAccount = UserConfig.selectedAccount; + } if (parentActivity == activity || activity == null) { + updateColors(); return; } inBubbleMode = activity instanceof BubbleActivity; @@ -3554,7 +3596,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat touchSlop = ViewConfiguration.get(parentActivity).getScaledTouchSlop(); if (progressDrawables == null) { - final Drawable circleDrawable = ContextCompat.getDrawable(parentActivity, R.drawable.circle_big); + Drawable circleDrawable = ContextCompat.getDrawable(parentActivity, R.drawable.circle_big); progressDrawables = new Drawable[] { circleDrawable, // PROGRESS_EMPTY ContextCompat.getDrawable(parentActivity, R.drawable.cancel_big), // PROGRESS_CANCEL @@ -3836,6 +3878,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat paintingOverlay = new PaintingOverlay(parentActivity); containerView.addView(paintingOverlay, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); + leftPaintingOverlay = new PaintingOverlay(parentActivity); + containerView.addView(leftPaintingOverlay, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); + rightPaintingOverlay = new PaintingOverlay(parentActivity); + containerView.addView(rightPaintingOverlay, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); actionBar = new ActionBar(activity) { @Override @@ -3874,13 +3920,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (currentMessageObject != null) { if (currentMessageObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage && currentMessageObject.messageOwner.media.webpage != null && currentMessageObject.messageOwner.media.webpage.document == null) { TLObject fileLocation = getFileLocation(currentIndex, null); - f = FileLoader.getPathToAttach(fileLocation, true); + f = FileLoader.getInstance(currentAccount).getPathToAttach(fileLocation, true); } else { - f = FileLoader.getPathToMessage(currentMessageObject.messageOwner); + f = FileLoader.getInstance(currentAccount).getPathToMessage(currentMessageObject.messageOwner); } isVideo = currentMessageObject.isVideo(); } else if (currentFileLocationVideo != null) { - f = FileLoader.getPathToAttach(getFileLocation(currentFileLocationVideo), getFileLocationExt(currentFileLocationVideo), avatarsDialogId != 0 || isEvent); + f = FileLoader.getInstance(currentAccount).getPathToAttach(getFileLocation(currentFileLocationVideo), getFileLocationExt(currentFileLocationVideo), avatarsDialogId != 0 || isEvent); isVideo = false; } else if (pageBlocksAdapter != null) { f = pageBlocksAdapter.getFile(currentIndex); @@ -3942,53 +3988,110 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (currentMessageObject == null || !(parentActivity instanceof LaunchActivity)) { return; } - ((LaunchActivity) parentActivity).switchToAccount(currentMessageObject.currentAccount, true); - Bundle args = new Bundle(); - args.putBoolean("onlySelect", true); - args.putInt("dialogsType", 3); - DialogsActivity fragment = new DialogsActivity(args); - final ArrayList fmessages = new ArrayList<>(); - fmessages.add(currentMessageObject); - final ChatActivity parentChatActivityFinal = parentChatActivity; - fragment.setDelegate((fragment1, dids, message, param) -> { - if (dids.size() > 1 || dids.get(0) == UserConfig.getInstance(currentAccount).getClientUserId() || message != null) { - for (int a = 0; a < dids.size(); a++) { - long did = dids.get(a); - if (message != null) { - SendMessagesHelper.getInstance(currentAccount).sendMessage(message.toString(), did, null, null, null, true, null, null, null, true, 0, null); - } - SendMessagesHelper.getInstance(currentAccount).sendMessage(fmessages, did, false, false, true, 0); - } - fragment1.finishFragment(); - if (parentChatActivityFinal != null) { - if (dids.size() == 1) { - parentChatActivityFinal.getUndoView().showWithAction(dids.get(0), UndoView.ACTION_FWD_MESSAGES, fmessages.size()); - } else { - parentChatActivityFinal.getUndoView().showWithAction(0, UndoView.ACTION_FWD_MESSAGES, fmessages.size(), dids.size(), null, null); - } - } - } else { - long did = dids.get(0); - Bundle args1 = new Bundle(); - args1.putBoolean("scrollToTopOnResume", true); - if (DialogObject.isEncryptedDialog(did)) { - args1.putInt("enc_id", DialogObject.getEncryptedChatId(did)); - } else if (DialogObject.isUserDialog(did)) { - args1.putLong("user_id", did); - } else { - args1.putLong("chat_id", -did); - } - NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.closeChats); - ChatActivity chatActivity = new ChatActivity(args1); - if (((LaunchActivity) parentActivity).presentFragment(chatActivity, true, false)) { - chatActivity.showFieldPanelForForward(true, fmessages); - } else { - fragment1.finishFragment(); - } + boolean isChannel = false; + if (!currentMessageObject.scheduled) { + long dialogId = currentMessageObject.getDialogId(); + if (DialogObject.isChatDialog(dialogId)) { + TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(-dialogId); + isChannel = ChatObject.isChannelAndNotMegaGroup(chat); } - }); - ((LaunchActivity) parentActivity).presentFragment(fragment, false, true); - closePhoto(false, false); + } + ((LaunchActivity) parentActivity).switchToAccount(currentMessageObject.currentAccount, true); + if (isChannel) { + ArrayList msgs = new ArrayList<>(1); + MessageObject.GroupedMessages group = parentChatActivity != null ? parentChatActivity.getGroup(currentMessageObject.getGroupId()) : null; + if (group != null) { + msgs.addAll(group.messages); + } else { + msgs.add(currentMessageObject); + } + + if (msgs.size() <= 1) { + showShareAlert(msgs); + } else { + boolean photos = true; + for (int i = 0; i < msgs.size(); ++i) { + if (!msgs.get(i).isPhoto() || msgs.get(i).isVideo()) { + photos = false; + break; + } + } + + AlertDialog dialog = new AlertDialog.Builder(parentActivity, resourcesProvider) + .setTitle(LocaleController.getString("ForwardGroupMedia", R.string.ForwardGroupMedia)) + .setMessage(LocaleController.getString("ForwardGroupMediaMessage", R.string.ForwardGroupMediaMessage)) + .setDialogButtonColorKey(Theme.key_voipgroup_listeningText) + .setNegativeButton((photos ? LocaleController.getString("ThisPhoto", R.string.ThisPhoto) : LocaleController.getString("ThisMedia", R.string.ThisMedia)), (di, a) -> { + ArrayList singleMessage = new ArrayList<>(1); + singleMessage.add(currentMessageObject); + showShareAlert(singleMessage); + }) + .setPositiveButton(photos ? LocaleController.formatPluralString("AllNPhotos", msgs.size()) : LocaleController.formatPluralString("AllNMedia", msgs.size()), (di, a) -> { + showShareAlert(msgs); + }) + .setNeutralButton(LocaleController.getString("Cancel", R.string.Cancel), (di, a) -> { + di.dismiss(); + }).create(); + dialog.setBackgroundColor(getThemedColor(Theme.key_voipgroup_dialogBackground)); + dialog.show(); + View neutralButton = dialog.getButton(Dialog.BUTTON_NEUTRAL); + if (neutralButton instanceof TextView) { + ((TextView) neutralButton).setTextColor(getThemedColor(Theme.key_dialogTextRed)); + neutralButton.setBackground(Theme.getRoundRectSelectorDrawable(getThemedColor(Theme.key_dialogTextRed))); + if (dialog.getButtonsLayout() instanceof LinearLayout && ((LinearLayout) dialog.getButtonsLayout()).getOrientation() == LinearLayout.VERTICAL) { + neutralButton.bringToFront(); + } + } + dialog.setTextColor(getThemedColor(Theme.key_voipgroup_actionBarItems)); + } + } else { + Bundle args = new Bundle(); + args.putBoolean("onlySelect", true); + args.putInt("dialogsType", 3); + DialogsActivity fragment = new DialogsActivity(args); + final ArrayList fmessages = new ArrayList<>(); + fmessages.add(currentMessageObject); + final ChatActivity parentChatActivityFinal = parentChatActivity; + fragment.setDelegate((fragment1, dids, message, param) -> { + if (dids.size() > 1 || dids.get(0) == UserConfig.getInstance(currentAccount).getClientUserId() || message != null) { + for (int a = 0; a < dids.size(); a++) { + long did = dids.get(a); + if (message != null) { + SendMessagesHelper.getInstance(currentAccount).sendMessage(message.toString(), did, null, null, null, true, null, null, null, true, 0, null); + } + SendMessagesHelper.getInstance(currentAccount).sendMessage(fmessages, did, false, false, true, 0); + } + fragment1.finishFragment(); + if (parentChatActivityFinal != null) { + if (dids.size() == 1) { + parentChatActivityFinal.getUndoView().showWithAction(dids.get(0), UndoView.ACTION_FWD_MESSAGES, fmessages.size()); + } else { + parentChatActivityFinal.getUndoView().showWithAction(0, UndoView.ACTION_FWD_MESSAGES, fmessages.size(), dids.size(), null, null); + } + } + } else { + long did = dids.get(0); + Bundle args1 = new Bundle(); + args1.putBoolean("scrollToTopOnResume", true); + if (DialogObject.isEncryptedDialog(did)) { + args1.putInt("enc_id", DialogObject.getEncryptedChatId(did)); + } else if (DialogObject.isUserDialog(did)) { + args1.putLong("user_id", did); + } else { + args1.putLong("chat_id", -did); + } + NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.closeChats); + ChatActivity chatActivity = new ChatActivity(args1); + if (((LaunchActivity) parentActivity).presentFragment(chatActivity, true, false)) { + chatActivity.showFieldPanelForForward(true, fmessages); + } else { + fragment1.finishFragment(); + } + } + }); + ((LaunchActivity) parentActivity).presentFragment(fragment, false, true); + closePhoto(false, false); + } } else if (id == gallery_menu_delete) { if (parentActivity == null || placeProvider == null) { return; @@ -4260,14 +4363,14 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (parentChatActivity != null && parentChatActivity.chatActivityEnterView != null) { parentChatActivity.chatActivityEnterView.addRecentGif(document); } else { - MediaDataController.getInstance(currentAccount).addRecentGif(document, (int) (System.currentTimeMillis() / 1000)); + MediaDataController.getInstance(currentAccount).addRecentGif(document, (int) (System.currentTimeMillis() / 1000), true); } MessagesController.getInstance(currentAccount).saveGif(currentMessageObject, document); } else if (pageBlocksAdapter != null) { TLObject object = pageBlocksAdapter.getMedia(currentIndex); if (object instanceof TLRPC.Document) { TLRPC.Document document = (TLRPC.Document) object; - MediaDataController.getInstance(currentAccount).addRecentGif(document, (int) (System.currentTimeMillis() / 1000)); + MediaDataController.getInstance(currentAccount).addRecentGif(document, (int) (System.currentTimeMillis() / 1000), true); MessagesController.getInstance(currentAccount).saveGif(pageBlocksAdapter.getParentObject(), document); } } else { @@ -4347,7 +4450,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat imagesArrLocationsVideo.remove(currentIndex); imagesArrLocationsVideo.add(0, location); - Integer size = imagesArrLocationsSizes.get(currentIndex); + Long size = imagesArrLocationsSizes.get(currentIndex); imagesArrLocationsSizes.remove(currentIndex); imagesArrLocationsSizes.add(0, size); @@ -4368,11 +4471,11 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat menuItem.hideSubItem(gallery_menu_set_as_main); }, 300); } else if (id == gallery_menu_edit_avatar) { - File f = FileLoader.getPathToAttach(getFileLocation(currentFileLocationVideo), getFileLocationExt(currentFileLocationVideo), true); + File f = FileLoader.getInstance(currentAccount).getPathToAttach(getFileLocation(currentFileLocationVideo), getFileLocationExt(currentFileLocationVideo), true); boolean isVideo = currentFileLocationVideo.imageType == FileLoader.IMAGE_TYPE_ANIMATION; String thumb; if (isVideo) { - thumb = FileLoader.getPathToAttach(getFileLocation(currentFileLocation), getFileLocationExt(currentFileLocation), true).getAbsolutePath(); + thumb = FileLoader.getInstance(currentAccount).getPathToAttach(getFileLocation(currentFileLocation), getFileLocationExt(currentFileLocation), true).getAbsolutePath(); } else { thumb = null; } @@ -4385,7 +4488,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (currentMessageObject != null || currentSecureDocument != null) { return true; } else if (currentFileLocationVideo != null) { - File f = FileLoader.getPathToAttach(getFileLocation(currentFileLocationVideo), getFileLocationExt(currentFileLocationVideo), avatarsDialogId != 0 || isEvent); + File f = FileLoader.getInstance(currentAccount).getPathToAttach(getFileLocation(currentFileLocationVideo), getFileLocationExt(currentFileLocationVideo), avatarsDialogId != 0 || isEvent); return f.exists(); } else if (pageBlocksAdapter != null) { return true; @@ -4451,11 +4554,12 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat menuItem.addSubItem(gallery_menu_share, R.drawable.msg_shareout, LocaleController.getString("ShareFile", R.string.ShareFile)).setColors(0xfffafafa, 0xfffafafa); menuItem.addSubItem(gallery_menu_save, R.drawable.msg_gallery, LocaleController.getString("SaveToGallery", R.string.SaveToGallery)).setColors(0xfffafafa, 0xfffafafa); //menuItem.addSubItem(gallery_menu_edit_avatar, R.drawable.photo_paint, LocaleController.getString("EditPhoto", R.string.EditPhoto)).setColors(0xfffafafa, 0xfffafafa); - menuItem.addSubItem(gallery_menu_set_as_main, R.drawable.menu_private, LocaleController.getString("SetAsMain", R.string.SetAsMain)).setColors(0xfffafafa, 0xfffafafa); + menuItem.addSubItem(gallery_menu_set_as_main, R.drawable.msg_openprofile, LocaleController.getString("SetAsMain", R.string.SetAsMain)).setColors(0xfffafafa, 0xfffafafa); menuItem.addSubItem(gallery_menu_delete, R.drawable.msg_delete, LocaleController.getString("Delete", R.string.Delete)).setColors(0xfffafafa, 0xfffafafa); menuItem.addSubItem(gallery_menu_cancel_loading, R.drawable.msg_cancel, LocaleController.getString("StopDownload", R.string.StopDownload)).setColors(0xfffafafa, 0xfffafafa); menuItem.redrawPopup(0xf9222222); setMenuItemIcon(); + menuItem.setPopupItemsSelectorColor(0x0fffffff); menuItem.setSubMenuDelegate(new ActionBarMenuItem.ActionBarSubMenuItemDelegate() { @Override @@ -4655,7 +4759,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat bottomLayout.addView(bottomButtonsLayout, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.RIGHT)); paintButton = new ImageView(containerView.getContext()); - paintButton.setImageResource(R.drawable.photo_paint); + paintButton.setImageResource(R.drawable.msg_photo_draw); paintButton.setScaleType(ImageView.ScaleType.CENTER); paintButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); bottomButtonsLayout.addView(paintButton, LayoutHelper.createFrame(50, LayoutHelper.MATCH_PARENT)); @@ -4912,7 +5016,18 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private void seekTo(float progress) { seekTo = (int) (videoDuration * progress); - if (seekToRunnable == null) { + if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_HIGH) { + if (videoPlayer != null) { + videoPlayer.seekTo(seekTo); + } + if (sendPhotoType == SELECT_TYPE_AVATAR) { + needCaptureFrameReadyAtTime = seekTo; + if (captureFrameReadyAtTime != needCaptureFrameReadyAtTime) { + captureFrameReadyAtTime = -1; + } + } + seekToRunnable = null; + } else if (seekToRunnable == null) { AndroidUtilities.runOnUIThread(seekToRunnable = () -> { if (videoPlayer != null) { videoPlayer.seekTo(seekTo); @@ -5087,7 +5202,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat sendPopupWindow.dismiss(); } }); - sendPopupLayout.setShownFromBotton(false); + sendPopupLayout.setShownFromBottom(false); sendPopupLayout.setBackgroundColor(0xf9222222); final boolean canReplace = placeProvider != null && placeProvider.canReplace(currentIndex); @@ -5132,16 +5247,16 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ActionBarMenuSubItem cell = new ActionBarMenuSubItem(parentActivity, a == 0, a == 3, resourcesProvider); if (a == 0) { if (UserObject.isUserSelf(user)) { - cell.setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_schedule); + cell.setTextAndIcon(LocaleController.getString("SetReminder", R.string.SetReminder), R.drawable.msg_calendar2); } else { - cell.setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_schedule); + cell.setTextAndIcon(LocaleController.getString("ScheduleMessage", R.string.ScheduleMessage), R.drawable.msg_calendar2); } } else if (a == 1) { cell.setTextAndIcon(LocaleController.getString("SendWithoutSound", R.string.SendWithoutSound), R.drawable.input_notify_off); } else if (a == 2) { cell.setTextAndIcon(LocaleController.getString("ReplacePhoto", R.string.ReplacePhoto), R.drawable.msg_replace); } else if (a == 3) { - cell.setTextAndIcon(LocaleController.getString("SendAsNewPhoto", R.string.SendAsNewPhoto), R.drawable.msg_sendphoto); + cell.setTextAndIcon(LocaleController.getString("SendAsNewPhoto", R.string.SendAsNewPhoto), R.drawable.msg_send); } else if (a == 4) { cell.setTextAndIcon(LocaleController.getString("SendWithoutCompression", R.string.SendWithoutCompression), R.drawable.msg_sendfile); } @@ -5248,7 +5363,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat cropItem = new ImageView(parentActivity); cropItem.setScaleType(ImageView.ScaleType.CENTER); - cropItem.setImageResource(R.drawable.photo_crop); + cropItem.setImageResource(R.drawable.msg_photo_crop); cropItem.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); itemsLayout.addView(cropItem, LayoutHelper.createLinear(48, 48)); cropItem.setOnClickListener(v -> { @@ -5274,41 +5389,23 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat rotateItem = new ImageView(parentActivity); rotateItem.setScaleType(ImageView.ScaleType.CENTER); - rotateItem.setImageResource(R.drawable.tool_rotate); + rotateItem.setImageResource(R.drawable.msg_photo_rotate); rotateItem.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); itemsLayout.addView(rotateItem, LayoutHelper.createLinear(48, 48)); - rotateItem.setOnClickListener(v -> { - if (photoCropView == null) { - return; - } - if (photoCropView.rotate()) { - rotateItem.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); - } else { - rotateItem.setColorFilter(null); - } - }); + rotateItem.setOnClickListener(v -> cropRotate(-90)); rotateItem.setContentDescription(LocaleController.getString("AccDescrRotate", R.string.AccDescrRotate)); mirrorItem = new ImageView(parentActivity); mirrorItem.setScaleType(ImageView.ScaleType.CENTER); - mirrorItem.setImageResource(R.drawable.photo_flip); + mirrorItem.setImageResource(R.drawable.msg_photo_flip); mirrorItem.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); itemsLayout.addView(mirrorItem, LayoutHelper.createLinear(48, 48)); - mirrorItem.setOnClickListener(v -> { - if (photoCropView == null) { - return; - } - if (photoCropView.mirror()) { - mirrorItem.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); - } else { - mirrorItem.setColorFilter(null); - } - }); + mirrorItem.setOnClickListener(v -> cropMirror()); mirrorItem.setContentDescription(LocaleController.getString("AccDescrMirror", R.string.AccDescrMirror)); paintItem = new ImageView(parentActivity); paintItem.setScaleType(ImageView.ScaleType.CENTER); - paintItem.setImageResource(R.drawable.photo_paint); + paintItem.setImageResource(R.drawable.msg_photo_draw); paintItem.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); itemsLayout.addView(paintItem, LayoutHelper.createLinear(48, 48)); paintItem.setOnClickListener(v -> { @@ -5369,7 +5466,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat tuneItem = new ImageView(parentActivity); tuneItem.setScaleType(ImageView.ScaleType.CENTER); - tuneItem.setImageResource(R.drawable.photo_tools); + tuneItem.setImageResource(R.drawable.msg_photo_settings); tuneItem.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); itemsLayout.addView(tuneItem, LayoutHelper.createLinear(48, 48)); tuneItem.setOnClickListener(v -> { @@ -5430,7 +5527,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat timeItem = new ImageView(parentActivity); timeItem.setScaleType(ImageView.ScaleType.CENTER); - timeItem.setImageResource(R.drawable.photo_timer); + timeItem.setImageResource(R.drawable.msg_autodelete); timeItem.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); timeItem.setContentDescription(LocaleController.getString("SetTimer", R.string.SetTimer)); itemsLayout.addView(timeItem, LayoutHelper.createLinear(48, 48)); @@ -5438,7 +5535,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (parentActivity == null || captionEditText.getTag() != null) { return; } - BottomSheet.Builder builder = new BottomSheet.Builder(parentActivity, false, resourcesProvider); + BottomSheet.Builder builder = new BottomSheet.Builder(parentActivity, false, resourcesProvider, 0xff000000); builder.setUseHardwareLayer(false); LinearLayout linearLayout = new LinearLayout(parentActivity); linearLayout.setOrientation(LinearLayout.VERTICAL); @@ -5468,9 +5565,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat titleView.setOnTouchListener((v12, event) -> true); final BottomSheet bottomSheet = builder.create(); - bottomSheet.setCalcMandatoryInsets(true); - bottomSheet.setOverlayNavBarColor(0xff000000); - bottomSheet.scrollNavBar = true; final NumberPicker numberPicker = new NumberPicker(parentActivity, resourcesProvider); numberPicker.setMinValue(0); numberPicker.setMaxValue(28); @@ -5575,8 +5669,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat textView.setPadding(AndroidUtilities.dp(10), 0, AndroidUtilities.dp(10), 0); buttonsLayout.addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, 36, Gravity.TOP | Gravity.RIGHT)); textView.setOnClickListener(v14 -> bottomSheet.dismiss()); - bottomSheet.show(); bottomSheet.setBackgroundColor(0xff000000); + bottomSheet.show(); AndroidUtilities.setNavigationBarColor(bottomSheet.getWindow(), 0xff000000, false); AndroidUtilities.setLightNavigationBar(bottomSheet.getWindow(), false); }); @@ -5587,8 +5681,36 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat editorDoneLayout.setVisibility(View.GONE); containerView.addView(editorDoneLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.BOTTOM)); editorDoneLayout.cancelButton.setOnClickListener(view -> { - cropTransform.setViewTransform(previousHasTransform, previousCropPx, previousCropPy, previousCropRotation, previousCropOrientation, previousCropScale, 1.0f, 1.0f, previousCropPw, previousCropPh, 0, 0, previousCropMirrored); - switchToEditMode(EDIT_MODE_NONE); + if (imageMoveAnimation != null) { + return; + } + Runnable onEnd = () -> { + cropTransform.setViewTransform(previousHasTransform, previousCropPx, previousCropPy, previousCropRotation, previousCropOrientation, previousCropScale, 1.0f, 1.0f, previousCropPw, previousCropPh, 0, 0, previousCropMirrored); +// if (previousHasTransform) { +// editState.cropState = new MediaController.CropState(); +// editState.cropState.cropPx = previousCropPx; +// editState.cropState.cropPy = previousCropPy; +// editState.cropState.cropRotate = previousCropRotation; +// editState.cropState.transformRotation = previousCropOrientation; +// editState.cropState.cropScale = previousCropScale; +// editState.cropState.cropPw = previousCropPw; +// editState.cropState.cropPh = previousCropPh; +// editState.cropState.mirrored = previousCropMirrored; +// editState.cropState.freeform = sendPhotoType != SELECT_TYPE_AVATAR; +// } else { +// editState.cropState = null; +// } + switchToEditMode(EDIT_MODE_NONE); + }; + if (!previousHasTransform) { + float backRotate = previousCropOrientation - photoCropView.cropView.getStateOrientation(); + if (Math.abs(backRotate) > 180) { + backRotate = backRotate < 0 ? 360 + backRotate : -(360 - backRotate); + } + cropRotate(backRotate, photoCropView.cropView.getStateMirror(), onEnd); + } else { + onEnd.run(); + } }); editorDoneLayout.doneButton.setOnClickListener(view -> { if (currentEditMode == EDIT_MODE_CROP && !photoCropView.isReady()) { @@ -5599,6 +5721,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat }); resetButton = new TextView(activityContext); + resetButton.setClickable(false); resetButton.setVisibility(View.GONE); resetButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); resetButton.setTextColor(0xffffffff); @@ -5608,7 +5731,15 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat resetButton.setText(LocaleController.getString("Reset", R.string.CropReset).toUpperCase()); resetButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); editorDoneLayout.addView(resetButton, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.CENTER)); - resetButton.setOnClickListener(v -> photoCropView.reset()); + resetButton.setOnClickListener(v -> { + float backRotate = -photoCropView.cropView.getStateOrientation(); + if (Math.abs(backRotate) > 180) { + backRotate = backRotate < 0 ? 360 + backRotate : -(360 - backRotate); + } + cropRotate(backRotate, photoCropView.cropView.getStateMirror(), () -> { + photoCropView.reset(true); + }); + }); gestureDetector = new GestureDetector2(containerView.getContext(), this); gestureDetector.setIsLongpressEnabled(false); @@ -5806,7 +5937,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat @Override public void onEmojiViewCloseStart() { - navigationBar.setVisibility(currentEditMode == EDIT_MODE_NONE || currentEditMode == EDIT_MODE_CROP ? View.VISIBLE : View.INVISIBLE); + navigationBar.setVisibility(currentEditMode != EDIT_MODE_FILTER ? View.VISIBLE : View.INVISIBLE); animateNavBarColorTo(0xff000000); setOffset(captionEditText.getEmojiPadding()); if (captionEditText.getTag() != null) { @@ -5881,6 +6012,11 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat containerView.addView(mentionListView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 110, Gravity.LEFT | Gravity.BOTTOM)); mentionListView.setAdapter(mentionsAdapter = new MentionsAdapter(activityContext, true, 0, 0, new MentionsAdapter.MentionsAdapterDelegate() { + @Override + public void onItemCountUpdate(int oldCount, int newCount) { + + } + @Override public void needChangePanelVisibility(boolean show) { if (show) { @@ -6005,8 +6141,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat hintView.setColors(0xf9222222, 0xffffffff); containerView.addView(hintView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.LEFT, 8, 0, 8, 8)); - AccessibilityManager am = (AccessibilityManager) activityContext.getSystemService(Context.ACCESSIBILITY_SERVICE); - if (am.isEnabled()) { + if (AndroidUtilities.isAccessibilityScreenReaderEnabled()) { playButtonAccessibilityOverlay = new View(activityContext); playButtonAccessibilityOverlay.setContentDescription(LocaleController.getString("AccActionPlay", R.string.AccActionPlay)); playButtonAccessibilityOverlay.setFocusable(true); @@ -6096,6 +6231,54 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } + private void showShareAlert(ArrayList messages) { + final FrameLayout photoContainerView = containerView; + requestAdjustToNothing(); + boolean openKeyboardOnShareAlertClose = false; + if (parentChatActivity != null && parentChatActivity.getChatActivityEnterView() != null && parentChatActivity.getFragmentView() != null) { + boolean keyboardVisible = parentChatActivity.getChatActivityEnterView().isKeyboardVisible(); + if (keyboardVisible) { + parentChatActivity.getChatActivityEnterView().showEmojiView(); + openKeyboardOnShareAlertClose = true; + } + AndroidUtilities.setAdjustResizeToNothing(parentChatActivity.getParentActivity(), classGuid); + parentChatActivity.getFragmentView().requestLayout(); + } + final boolean finalOpenKeyboardOnShareAlertClose = openKeyboardOnShareAlertClose; + ShareAlert alert = new ShareAlert(parentActivity, parentChatActivity, messages, null, null, false, null, null, false, true, null) { + @Override + protected void onSend(LongSparseArray dids, int count) { + AndroidUtilities.runOnUIThread(() -> { + BulletinFactory.createForwardedBulletin(parentActivity, photoContainerView, dids.size(), dids.size() == 1 ? dids.valueAt(0).id : 0, count, 0xf9222222, 0xffffffff).show(); + }, 250); + } + + @Override + public void dismissInternal() { + super.dismissInternal(); + if (finalOpenKeyboardOnShareAlertClose) { + AndroidUtilities.runOnUIThread(() -> { + if (parentChatActivity != null && parentChatActivity.getChatActivityEnterView() != null) { + parentChatActivity.getChatActivityEnterView().openKeyboard(); + } + }, 50); + } + requestAdjust(); + } + }; + alert.setFocusable(false); + alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING); + AndroidUtilities.runOnUIThread(() -> { + if (alert != null && alert.getWindow() != null) { + alert.setFocusable(true); + if (parentChatActivity != null && parentChatActivity.getChatActivityEnterView() != null) { + parentChatActivity.getChatActivityEnterView().hidePopup(false); + } + } + }, AdjustPanLayoutHelper.keyboardDuration); + alert.show(); + } + private void setMenuItemIcon() { if (speedItem.getVisibility() != View.VISIBLE) { menuItem.setIcon(R.drawable.ic_ab_other); @@ -6120,6 +6303,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat chooseSpeedLayout.update(currentVideoSpeed); } + public float getCurrentVideoSpeed() { + return currentVideoSpeed; + } + private boolean checkInlinePermissions() { if (parentActivity == null) { return false; @@ -6291,6 +6478,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); wm.removeView(windowView); + onHideView(); } } catch (Exception e) { FileLog.e(e); @@ -6397,13 +6585,17 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat valueAnimator.addUpdateListener(animation -> { float xValue = (float) animation.getAnimatedValue(); float yValue = interpolator == null ? xValue : interpolator.getInterpolation(xValue); - textureImageView.setTranslationX(fromX * (1f - xValue) + toX * xValue); - textureImageView.setTranslationY(fromY2 * (1f - yValue) + toY * yValue); - textureImageView.invalidateOutline(); + if (textureImageView != null) { + textureImageView.setTranslationX(fromX * (1f - xValue) + toX * xValue); + textureImageView.setTranslationY(fromY2 * (1f - yValue) + toY * yValue); + textureImageView.invalidateOutline(); + } - videoTextureView.setTranslationX(fromX * (1f - xValue) + (toX2) * xValue); - videoTextureView.setTranslationY(fromY * (1f - yValue) + (toY2) * yValue); - videoTextureView.invalidateOutline(); + if (videoTextureView != null) { + videoTextureView.setTranslationX(fromX * (1f - xValue) + (toX2) * xValue); + videoTextureView.setTranslationY(fromY * (1f - yValue) + (toY2) * yValue); + videoTextureView.invalidateOutline(); + } if (firstFrameView != null) { firstFrameView.setTranslationX(videoTextureView.getTranslationX()); @@ -6457,6 +6649,117 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } + private boolean cropMirror() { + if (imageMoveAnimation != null || photoCropView == null) { + return false; + } + mirror = 0; + animateToMirror = 1; + animationStartTime = System.currentTimeMillis(); + imageMoveAnimation = new AnimatorSet(); + imageMoveAnimation.playTogether(ObjectAnimator.ofFloat(PhotoViewer.this, AnimationProperties.PHOTO_VIEWER_ANIMATION_VALUE, 0, 1)); + imageMoveAnimation.setDuration(250); + imageMoveAnimation.setInterpolator(CubicBezierInterpolator.DEFAULT); + imageMoveAnimation.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + imageMoveAnimation = null; + if (photoCropView == null) { + return; + } + if (photoCropView.mirror()) { + mirrorItem.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); + } else { + mirrorItem.setColorFilter(null); + } + mirror = animateToMirror = 0; + containerView.invalidate(); + } + }); + imageMoveAnimation.start(); + return !photoCropView.cropView.isMirrored(); + } + + private boolean cropRotate(float diff) { + return cropRotate(diff, false, null); + } + + private boolean cropRotate(final float diff, boolean restoreMirror, Runnable onEnd) { + if (imageMoveAnimation != null) { + return false; + } + if (photoCropView == null) { + return false; + } + photoCropView.cropView.maximize(true); + rotate = 0; + animateToRotate = rotate + diff; + if (restoreMirror) { + mirror = 0; + animateToMirror = 1; + } + animationStartTime = System.currentTimeMillis(); + imageMoveAnimation = new AnimatorSet(); + if (centerImage != null) { + int bitmapWidth = centerImage.getBitmapWidth(), bitmapHeight = centerImage.getBitmapHeight(); + if (Math.abs((int) photoCropView.cropView.getStateOrientation() / 90 % 2) == 1) { + int temp = bitmapWidth; + bitmapWidth = bitmapHeight; + bitmapHeight = temp; + } + if (editState.cropState != null) { + bitmapWidth *= editState.cropState.cropPw; + bitmapHeight *= editState.cropState.cropPh; + } + float oldScale = Math.min(getContainerViewWidth(EDIT_MODE_CROP) / (float) bitmapWidth, getContainerViewHeight(EDIT_MODE_CROP) / (float) bitmapHeight); + float newScale = oldScale; + if (Math.abs(diff / 90 % 2) == 1) { + newScale = Math.min(getContainerViewWidth(EDIT_MODE_CROP) / (float) bitmapHeight, getContainerViewHeight(EDIT_MODE_CROP) / (float) bitmapWidth); + } + animateToScale = newScale / oldScale; + } + ValueAnimator areaRotateAnimator = ValueAnimator.ofFloat(0, 1f); + final float wasRotation = photoCropView.wheelView.getRotation(); + areaRotateAnimator.addUpdateListener(a -> { + photoCropView.cropView.areaView.setRotationScaleTranslation((float) a.getAnimatedValue() * diff, scale + (animateToScale - scale) * animationValue, 0, 0); + photoCropView.wheelView.setRotation(AndroidUtilities.lerp(wasRotation, 0, (float) a.getAnimatedValue()), false); + }); + imageMoveAnimation.playTogether( + ObjectAnimator.ofFloat(PhotoViewer.this, AnimationProperties.PHOTO_VIEWER_ANIMATION_VALUE, 0, 1), + areaRotateAnimator + ); + imageMoveAnimation.setDuration(250); + imageMoveAnimation.setInterpolator(CubicBezierInterpolator.DEFAULT); + imageMoveAnimation.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + imageMoveAnimation = null; + rotate = animateToRotate = 0; + mirror = animateToMirror = 0; + scale = animateToScale = 1; + containerView.invalidate(); + photoCropView.cropView.areaView.setRotationScaleTranslation(0, 1, 0, 0); + photoCropView.wheelView.setRotated(false); + if (Math.abs(diff) > 0) { + if (photoCropView.rotate(diff)) { + rotateItem.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); + } else { + rotateItem.setColorFilter(null); + } + } + if (editState.cropState != null) { + editState.cropState.cropPx = editState.cropState.cropPy = 0; + editState.cropState.cropPw = editState.cropState.cropPh = 1; + } + if (onEnd != null) { + onEnd.run(); + } + } + }); + imageMoveAnimation.start(); + return Math.abs(photoCropView.cropView.getStateOrientation() + diff) > 0.01f; + } + public VideoPlayer getVideoPlayer() { return videoPlayer; } @@ -6545,6 +6848,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat isVisible = true; WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); wm.addView(windowView, windowLayoutParams); + onShowView(); if (currentPlaceObject != null) { currentPlaceObject.imageReceiver.setVisible(false, false); } @@ -6557,6 +6861,47 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } + private void onShowView() { + if (parentActivity instanceof LaunchActivity) { + LaunchActivity launchActivity = (LaunchActivity) parentActivity; + launchActivity.addOnUserLeaveHintListener(onUserLeaveHintListener); + } + } + + private void onHideView() { + if (parentActivity instanceof LaunchActivity) { + LaunchActivity launchActivity = (LaunchActivity) parentActivity; + launchActivity.removeOnUserLeaveHintListener(onUserLeaveHintListener); + } + } + + private void onUserLeaveHint() { + if (pipItem.getAlpha() != 1.0f || !AndroidUtilities.checkInlinePermissions(parentActivity) || PipVideoOverlay.isVisible()) { + return; + } + if (isEmbedVideo) { + if (photoViewerWebView != null && !photoViewerWebView.isInAppOnly() && photoViewerWebView.openInPip()) { + pipVideoOverlayAnimateFlag = false; + + if (PipInstance != null) { + PipInstance.destroyPhotoViewer(); + } + isInline = true; + PipInstance = Instance; + Instance = null; + isVisible = false; + if (currentPlaceObject != null && !currentPlaceObject.imageReceiver.getVisible()) { + currentPlaceObject.imageReceiver.setVisible(true, true); + } + dismissInternal(); + } + } else { + pipVideoOverlayAnimateFlag = false; + + switchToPip(false); + } + } + private void updateVideoSeekPreviewPosition() { int x = videoPlayerSeekbar.getThumbX() + AndroidUtilities.dp(2) - videoPreviewFrame.getMeasuredWidth() / 2; int min = AndroidUtilities.dp(10); @@ -7214,6 +7559,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } PipVideoOverlay.updatePlayButton(); + videoPlayerSeekbar.updateTimestamps(currentMessageObject, videoPlayer == null ? 0L : videoPlayer.getDuration()); updateVideoPlayerTime(); } @@ -7390,6 +7736,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat textureUploaded = true; containerView.invalidate(); } + if (firstFrameView != null && (videoPlayer == null || !videoPlayer.isLooping())) { + AndroidUtilities.runOnUIThread(() -> firstFrameView.updateAlpha(), 64); + } } @Override @@ -7399,6 +7748,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat needCaptureFrameReadyAtTime = -1; captureCurrentFrame(); } + if (firstFrameView != null && (videoPlayer == null || !videoPlayer.isLooping())) { + AndroidUtilities.runOnUIThread(() -> firstFrameView.updateAlpha(), 64); + } } @Override @@ -7719,7 +8071,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat firstFrameView.setPivotX(0); firstFrameView.setPivotY(0); firstFrameView.setScaleType(ImageView.ScaleType.FIT_XY); - firstFrameView.setAlpha(0f); aspectRatioFrameLayout.addView(firstFrameView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER)); if (sendPhotoType == SELECT_TYPE_AVATAR) { @@ -8051,7 +8402,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat MediaController.MediaEditState entry = (MediaController.MediaEditState) imagesArrLocals.get(currentIndex); if (currentEditMode == EDIT_MODE_CROP || currentEditMode == EDIT_MODE_NONE && sendPhotoType == SELECT_TYPE_AVATAR) { photoCropView.makeCrop(entry); - if (entry.cropState == null) { + if (entry.cropState == null && currentEditMode != EDIT_MODE_CROP) { return; } if (isCurrentVideo) { @@ -8098,54 +8449,56 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat editState.croppedPaintPath = entry.croppedPaintPath; editState.croppedMediaEntities = entry.croppedMediaEntities; - Bitmap croppedBitmap = createCroppedBitmap(bitmap, entry.cropState, orientation, true); - if (entry.paintPath != null) { - Bitmap paintBitmap = BitmapFactory.decodeFile(entry.fullPaintPath); - Bitmap croppedPaintBitmap = createCroppedBitmap(paintBitmap, entry.cropState, null, false); + if (entry.cropState != null) { + Bitmap croppedBitmap = createCroppedBitmap(bitmap, entry.cropState, orientation, true); + if (entry.paintPath != null) { + Bitmap paintBitmap = BitmapFactory.decodeFile(entry.fullPaintPath); + Bitmap croppedPaintBitmap = createCroppedBitmap(paintBitmap, entry.cropState, null, false); - if (!isCurrentVideo) { - if (hasAnimatedMediaEntities()) { - TLRPC.PhotoSize size = ImageLoader.scaleAndSaveImage(croppedBitmap, Bitmap.CompressFormat.JPEG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); - entry.imagePath = currentImagePath = FileLoader.getPathToAttach(size, true).toString(); - } else { - File f = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), SharedConfig.getLastLocalId() + "_temp.jpg"); - mergeImages(entry.imagePath = f.getAbsolutePath(), null, croppedPaintBitmap, croppedBitmap, AndroidUtilities.getPhotoSize(), true); + if (!isCurrentVideo) { + if (hasAnimatedMediaEntities()) { + TLRPC.PhotoSize size = ImageLoader.scaleAndSaveImage(croppedBitmap, Bitmap.CompressFormat.JPEG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); + entry.imagePath = currentImagePath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); + } else { + File f = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), SharedConfig.getLastLocalId() + "_temp.jpg"); + mergeImages(entry.imagePath = f.getAbsolutePath(), null, croppedPaintBitmap, croppedBitmap, AndroidUtilities.getPhotoSize(), true); + } } + File f = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), SharedConfig.getLastLocalId() + "_temp.jpg"); + mergeImages(entry.thumbPath = f.getAbsolutePath(), null, croppedPaintBitmap, croppedBitmap, thumbSize, true); + if (croppedPaintBitmap != null) { + croppedPaintBitmap.recycle(); + } + if (paintBitmap != null) { + paintBitmap.recycle(); + } + } else { + if (!isCurrentVideo) { + TLRPC.PhotoSize size = ImageLoader.scaleAndSaveImage(croppedBitmap, Bitmap.CompressFormat.JPEG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); + entry.imagePath = currentImagePath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); + } + TLRPC.PhotoSize size = ImageLoader.scaleAndSaveImage(croppedBitmap, thumbSize, thumbSize, 70, false, 101, 101); + entry.thumbPath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); } - File f = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), SharedConfig.getLastLocalId() + "_temp.jpg"); - mergeImages(entry.thumbPath = f.getAbsolutePath(), null, croppedPaintBitmap, croppedBitmap, thumbSize, true); - if (croppedPaintBitmap != null) { - croppedPaintBitmap.recycle(); + if (currentEditMode == EDIT_MODE_NONE && isCurrentVideo) { + bitmap.recycle(); + bitmap = croppedBitmap; } - if (paintBitmap != null) { - paintBitmap.recycle(); - } - } else { - if (!isCurrentVideo) { - TLRPC.PhotoSize size = ImageLoader.scaleAndSaveImage(croppedBitmap, Bitmap.CompressFormat.JPEG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); - entry.imagePath = currentImagePath = FileLoader.getPathToAttach(size, true).toString(); - } - TLRPC.PhotoSize size = ImageLoader.scaleAndSaveImage(croppedBitmap, thumbSize, thumbSize, 70, false, 101, 101); - entry.thumbPath = FileLoader.getPathToAttach(size, true).toString(); - } - if (currentEditMode == EDIT_MODE_NONE && isCurrentVideo) { - bitmap.recycle(); - bitmap = croppedBitmap; } } else if (currentEditMode == EDIT_MODE_FILTER) { if (entry.filterPath != null) { new File(entry.filterPath).delete(); } TLRPC.PhotoSize size = ImageLoader.scaleAndSaveImage(bitmap, Bitmap.CompressFormat.JPEG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); - entry.filterPath = FileLoader.getPathToAttach(size, true).toString(); + entry.filterPath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); Bitmap b = entry.cropState != null ? createCroppedBitmap(bitmap, entry.cropState, null, true) : bitmap; if (entry.paintPath == null) { if (!isCurrentVideo) { size = ImageLoader.scaleAndSaveImage(b, Bitmap.CompressFormat.JPEG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); - entry.imagePath = currentImagePath = FileLoader.getPathToAttach(size, true).toString(); + entry.imagePath = currentImagePath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); } size = ImageLoader.scaleAndSaveImage(b, Bitmap.CompressFormat.JPEG, thumbSize, thumbSize, 83, false, 101, 101); - entry.thumbPath = FileLoader.getPathToAttach(size, true).toString(); + entry.thumbPath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); } else { String path = entry.fullPaintPath; Bitmap fullPaintBitmap = entry.paintPath.equals(entry.fullPaintPath) ? paintingOverlay.getThumb() : null; @@ -8167,7 +8520,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (!isCurrentVideo) { if (hasAnimatedMediaEntities()) { size = ImageLoader.scaleAndSaveImage(b, Bitmap.CompressFormat.JPEG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); - entry.imagePath = currentImagePath = FileLoader.getPathToAttach(size, true).toString(); + entry.imagePath = currentImagePath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); } else { File f = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), SharedConfig.getLastLocalId() + "_temp.jpg"); mergeImages(entry.imagePath = f.getAbsolutePath(), path, paintBitmap, b, AndroidUtilities.getPhotoSize(), true); @@ -8192,12 +8545,12 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat TLRPC.PhotoSize size = ImageLoader.scaleAndSaveImage(bitmap, Bitmap.CompressFormat.PNG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); entry.stickers = stickers; - entry.paintPath = editState.paintPath = FileLoader.getPathToAttach(size, true).toString(); + entry.paintPath = editState.paintPath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); paintingOverlay.setEntities(entry.mediaEntities = editState.mediaEntities = entities == null || entities.isEmpty() ? null : entities, isCurrentVideo, true); entry.averageDuration = editState.averageDuration = photoPaintView.getLcm(); if (entry.mediaEntities != null && paintThumbBitmap[0] != null) { size = ImageLoader.scaleAndSaveImage(paintThumbBitmap[0], Bitmap.CompressFormat.PNG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); - entry.fullPaintPath = FileLoader.getPathToAttach(size, true).toString(); + entry.fullPaintPath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); } else { entry.fullPaintPath = entry.paintPath; } @@ -8278,7 +8631,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (!isCurrentVideo) { if (hasAnimatedMediaEntities()) { size = ImageLoader.scaleAndSaveImage(croppedBitmap, Bitmap.CompressFormat.JPEG, AndroidUtilities.getPhotoSize(), AndroidUtilities.getPhotoSize(), 87, false, 101, 101); - entry.imagePath = currentImagePath = FileLoader.getPathToAttach(size, true).toString(); + entry.imagePath = currentImagePath = FileLoader.getInstance(currentAccount).getPathToAttach(size, true).toString(); } else { File f = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), SharedConfig.getLastLocalId() + "_temp.jpg"); mergeImages(entry.imagePath = f.getAbsolutePath(), null, croppedBitmap, paintBitmap, AndroidUtilities.getPhotoSize(), false); @@ -8310,7 +8663,11 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } if (currentEditMode == EDIT_MODE_CROP) { entry.isCropped = true; - cropItem.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); + if (entry.isCropped) { + cropItem.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); + } else { + cropItem.setColorFilter(null); + } } else if (currentEditMode == EDIT_MODE_FILTER) { entry.isFiltered = true; tuneItem.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogFloatingButton), PorterDuff.Mode.MULTIPLY)); @@ -8384,6 +8741,24 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } + private void updateResetButtonVisibility(final boolean show) { + boolean isShown = resetButton.isClickable(); + if (isShown != show) { + resetButton.setClickable(show); + resetButton.setVisibility(View.VISIBLE); + resetButton.clearAnimation(); + resetButton.animate() + .alpha(show ? 1f : 0f) + .setInterpolator(CubicBezierInterpolator.DEFAULT) + .setDuration(150) + .withEndAction(() -> { + if (!show) { + resetButton.setVisibility(View.GONE); + } + }); + } + } + private void createCropView() { if (photoCropView != null) { return; @@ -8396,7 +8771,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat photoCropView.setDelegate(new PhotoCropView.PhotoCropViewDelegate() { @Override public void onChange(boolean reset) { - resetButton.setVisibility(reset ? View.GONE : View.VISIBLE); + updateResetButtonVisibility(!reset); } @Override @@ -8430,6 +8805,16 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat }, 860); } + @Override + public boolean rotate() { + return cropRotate(-90); + } + + @Override + public boolean mirror() { + return cropMirror(); + } + @Override public int getVideoThumbX() { return (int) (AndroidUtilities.dp(16) + (videoTimelineView.getMeasuredWidth() - AndroidUtilities.dp(32)) * avatarStartProgress); @@ -8509,9 +8894,20 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (currentEditMode == mode || (isCurrentVideo && photoProgressViews[0].backgroundState != 3) && !isCurrentVideo && (centerImage.getBitmap() == null || photoProgressViews[0].backgroundState != -1) || changeModeAnimation != null || imageMoveAnimation != null || captionEditText.getTag() != null) { return; } - windowView.setClipChildren(mode != EDIT_MODE_NONE && mode != EDIT_MODE_CROP); - navigationBar.setBackgroundColor(mode == EDIT_MODE_CROP ? 0xcc000000 : 0x7f000000); - navigationBar.setVisibility(mode == EDIT_MODE_NONE || mode == EDIT_MODE_CROP ? View.VISIBLE : View.INVISIBLE); + windowView.setClipChildren(mode == EDIT_MODE_FILTER); + int navigationBarColorFrom = 0x7f000000; + if (navigationBar.getBackground() instanceof ColorDrawable) { + navigationBarColorFrom = ((ColorDrawable) navigationBar.getBackground()).getColor(); + } + int navigationBarColorTo; + if (mode == EDIT_MODE_CROP) { + navigationBarColorTo = 0xcc000000; + } else if (mode == EDIT_MODE_PAINT) { + navigationBarColorTo = 0xff000000; + } else { + navigationBarColorTo = 0x7f000000; + } + navigationBar.setVisibility(mode != EDIT_MODE_FILTER ? View.VISIBLE : View.INVISIBLE); switchingToMode = mode; if (mode == EDIT_MODE_NONE) { Bitmap bitmap = centerImage.getBitmap(); @@ -8522,7 +8918,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat float newScale; float oldScale; if (currentEditMode == EDIT_MODE_PAINT) { - if (sendPhotoType != SELECT_TYPE_AVATAR) { + if (sendPhotoType == SELECT_TYPE_AVATAR) { if (cropTransform.getOrientation() == 90 || cropTransform.getOrientation() == 270) { int temp = bitmapWidth; bitmapWidth = bitmapHeight; @@ -8540,7 +8936,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } newScale = Math.min(getContainerViewWidth(0) / (float) bitmapWidth, getContainerViewHeight(0) / (float) bitmapHeight); - oldScale = Math.min(getContainerViewWidth() / (float) bitmapWidth, getContainerViewHeight() / (float) bitmapHeight); + oldScale = Math.min(getContainerViewWidth(3) / (float) bitmapWidth, getContainerViewHeight(3) / (float) bitmapHeight); } else { if (currentEditMode != EDIT_MODE_CROP && editState.cropState != null && (editState.cropState.transformRotation == 90 || editState.cropState.transformRotation == 270)) { float scaleToFitX = getContainerViewWidth() / (float) bitmapHeight; @@ -8611,6 +9007,16 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat animators.add(ObjectAnimator.ofFloat(editorDoneLayout, View.TRANSLATION_Y, AndroidUtilities.dp(48))); animators.add(ObjectAnimator.ofFloat(PhotoViewer.this, AnimationProperties.PHOTO_VIEWER_ANIMATION_VALUE, 0, 1)); animators.add(ObjectAnimator.ofFloat(photoCropView, View.ALPHA, 0)); + ValueAnimator scaleAnimator = ValueAnimator.ofFloat(0, 1); + scaleAnimator.addUpdateListener(a -> { + photoCropView.cropView.areaView.setRotationScaleTranslation( + 0, + AndroidUtilities.lerp(scale, animateToScale, animationValue), + AndroidUtilities.lerp(translationX, animateToX, animationValue), + AndroidUtilities.lerp(translationY, animateToY, animationValue) + ); + }); + animators.add(scaleAnimator); } else if (currentEditMode == EDIT_MODE_FILTER) { photoFilterView.shutdown(); animators.add(ObjectAnimator.ofFloat(photoFilterView.getToolsView(), View.TRANSLATION_Y, AndroidUtilities.dp(186))); @@ -8622,9 +9028,11 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat containerView.invalidate(); photoPaintView.shutdown(); animators.add(ObjectAnimator.ofFloat(photoPaintView.getToolsView(), View.TRANSLATION_Y, AndroidUtilities.dp(126))); + animators.add(ObjectAnimator.ofFloat(photoPaintView.getColorPickerBackground(), View.TRANSLATION_Y, AndroidUtilities.dp(126))); animators.add(ObjectAnimator.ofFloat(photoPaintView.getColorPicker(), View.TRANSLATION_Y, AndroidUtilities.dp(126))); animators.add(ObjectAnimator.ofFloat(PhotoViewer.this, AnimationProperties.PHOTO_VIEWER_ANIMATION_VALUE, 0, 1)); } + animators.add(ObjectAnimator.ofObject(navigationBar, "backgroundColor", new ArgbEvaluator(), navigationBarColorFrom, navigationBarColorTo)); imageMoveAnimation.playTogether(animators); imageMoveAnimation.setDuration(200); imageMoveAnimation.addListener(new AnimatorListenerAdapter() { @@ -8635,6 +9043,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat photoCropView.onHide(); editorDoneLayout.setVisibility(View.GONE); photoCropView.setVisibility(View.GONE); + photoCropView.cropView.areaView.setRotationScaleTranslation(0, 1, 0, 0); } else if (currentEditMode == EDIT_MODE_FILTER) { try { containerView.removeView(photoFilterView); @@ -8744,6 +9153,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat arrayList.add(ObjectAnimator.ofFloat(pickerView, View.TRANSLATION_Y, 0, AndroidUtilities.dp(isCurrentVideo ? 154 : 96))); arrayList.add(ObjectAnimator.ofFloat(pickerViewSendButton, View.TRANSLATION_Y, 0, AndroidUtilities.dp(isCurrentVideo ? 154 : 96))); arrayList.add(ObjectAnimator.ofFloat(actionBar, View.TRANSLATION_Y, 0, -actionBar.getHeight())); + arrayList.add(ObjectAnimator.ofObject(navigationBar, "backgroundColor", new ArgbEvaluator(), navigationBarColorFrom, navigationBarColorTo)); if (needCaptionLayout) { arrayList.add(ObjectAnimator.ofFloat(captionTextViewSwitcher, View.TRANSLATION_Y, 0, AndroidUtilities.dp(isCurrentVideo ? 154 : 96))); } @@ -8938,6 +9348,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (muteItem.getTag() != null) { arrayList.add(ObjectAnimator.ofFloat(muteItem, View.ALPHA, 1, 0)); } + arrayList.add(ObjectAnimator.ofObject(navigationBar, "backgroundColor", new ArgbEvaluator(), navigationBarColorFrom, navigationBarColorTo)); changeModeAnimation.playTogether(arrayList); changeModeAnimation.setDuration(200); changeModeAnimation.addListener(new AnimatorListenerAdapter() { @@ -9031,7 +9442,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat arrayList.add(ObjectAnimator.ofFloat(pickerView, View.TRANSLATION_Y, AndroidUtilities.dp(isCurrentVideo ? 154 : 96))); arrayList.add(ObjectAnimator.ofFloat(pickerViewSendButton, View.TRANSLATION_Y, AndroidUtilities.dp(isCurrentVideo ? 154 : 96))); arrayList.add(ObjectAnimator.ofFloat(actionBar, View.TRANSLATION_Y, -actionBar.getHeight())); - + arrayList.add(ObjectAnimator.ofObject(navigationBar, "backgroundColor", new ArgbEvaluator(), navigationBarColorFrom, navigationBarColorTo)); if (needCaptionLayout) { arrayList.add(ObjectAnimator.ofFloat(captionTextViewSwitcher, View.TRANSLATION_Y, AndroidUtilities.dp(isCurrentVideo ? 154 : 96))); } @@ -9128,6 +9539,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat photoPaintView.getCancelTextView().setOnClickListener(v -> closePaintMode()); photoPaintView.getColorPicker().setTranslationY(AndroidUtilities.dp(126)); photoPaintView.getToolsView().setTranslationY(AndroidUtilities.dp(126)); + photoPaintView.getColorPickerBackground().setTranslationY(AndroidUtilities.dp(126)); } } @@ -9159,6 +9571,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } Bitmap bitmap = centerImage.getBitmap(); + final float finalScale = scale; if (bitmap != null) { int bitmapWidth = centerImage.getBitmapWidth(); int bitmapHeight = centerImage.getBitmapHeight(); @@ -9186,7 +9599,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } oldScale = Math.min(getContainerViewWidth() / (float) bitmapWidth, getContainerViewHeight() / (float) bitmapHeight); newScale = Math.min(getContainerViewWidth(3) / (float) bitmapWidth, getContainerViewHeight(3) / (float) bitmapHeight); - animateToScale = newScale / oldScale; + animateToScale = newScale / oldScale; // * finalScale; animateToX = getLeftInset() / 2 - getRightInset() / 2; animationStartTime = System.currentTimeMillis(); zoomAnimation = true; @@ -9198,7 +9611,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat imageMoveAnimation.playTogether( ObjectAnimator.ofFloat(PhotoViewer.this, AnimationProperties.PHOTO_VIEWER_ANIMATION_VALUE, 0, 1), ObjectAnimator.ofFloat(photoPaintView.getColorPicker(), View.TRANSLATION_Y, AndroidUtilities.dp(126), 0), - ObjectAnimator.ofFloat(photoPaintView.getToolsView(), View.TRANSLATION_Y, AndroidUtilities.dp(126), 0) + ObjectAnimator.ofFloat(photoPaintView.getToolsView(), View.TRANSLATION_Y, AndroidUtilities.dp(126), 0), + ObjectAnimator.ofFloat(photoPaintView.getColorPickerBackground(), View.TRANSLATION_Y, AndroidUtilities.dp(126), 0) ); imageMoveAnimation.setDuration(200); imageMoveAnimation.addListener(new AnimatorListenerAdapter() { @@ -9214,10 +9628,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat imageMoveAnimation = null; currentEditMode = EDIT_MODE_PAINT; switchingToMode = -1; - animateToScale = 1; + animateToScale = scale = 1; animateToX = 0; animateToY = 0; - scale = 1; updateMinMax(scale); padImageForHorizontalInsets = true; containerView.invalidate(); @@ -9354,7 +9767,11 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat toggleActionBar(show, animated, ActionBarToggleParams.DEFAULT); } - private void toggleActionBar(final boolean show, final boolean animated, @NonNull final ActionBarToggleParams params) { + private void toggleActionBar(boolean show, final boolean animated, @NonNull final ActionBarToggleParams params) { + if (currentEditMode != EDIT_MODE_NONE || switchingToMode != EDIT_MODE_NONE && switchingToMode != -1) { + return; + } + final boolean finalShow = show; if (actionBarAnimator != null) { actionBarAnimator.cancel(); } @@ -9456,7 +9873,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat @Override public void onAnimationEnd(Animator animation) { if (animation.equals(actionBarAnimator)) { - if (!show) { + if (!finalShow) { actionBar.setVisibility(View.INVISIBLE); if (bottomLayout.getTag() != null) { bottomLayout.setVisibility(View.INVISIBLE); @@ -9627,7 +10044,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return null; } - private ImageLocation getImageLocation(int index, int[] size) { + private ImageLocation getImageLocation(int index, long[] size) { if (index < 0) { return null; } @@ -9708,7 +10125,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return null; } - private TLObject getFileLocation(int index, int[] size) { + private TLObject getFileLocation(int index, long[] size) { if (index < 0) { return null; } @@ -10270,9 +10687,12 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private void setImages() { if (animationInProgress == 0) { - setIndexToImage(centerImage, currentIndex, null, paintingOverlay); - setIndexToImage(rightImage, currentIndex + 1, rightCropTransform, rightPaintingOverlay); - setIndexToImage(leftImage, currentIndex - 1, leftCropTransform, leftPaintingOverlay); + setIndexToImage(centerImage, currentIndex, null); + setIndexToPaintingOverlay(currentIndex, paintingOverlay); + setIndexToImage(rightImage, currentIndex + 1, rightCropTransform); + setIndexToPaintingOverlay(currentIndex + 1, rightPaintingOverlay); + setIndexToImage(leftImage, currentIndex - 1, leftCropTransform); + setIndexToPaintingOverlay(currentIndex - 1, leftPaintingOverlay); } } @@ -10982,10 +11402,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (object instanceof TLRPC.BotInlineResult) { TLRPC.BotInlineResult botInlineResult = currentBotInlineResult = ((TLRPC.BotInlineResult) object); if (botInlineResult.document != null) { - currentPathObject = FileLoader.getPathToAttach(botInlineResult.document).getAbsolutePath(); + currentPathObject = FileLoader.getInstance(currentAccount).getPathToAttach(botInlineResult.document).getAbsolutePath(); isVideo = MessageObject.isVideoDocument(botInlineResult.document); } else if (botInlineResult.photo != null) { - currentPathObject = FileLoader.getPathToAttach(FileLoader.getClosestPhotoSizeWithSize(botInlineResult.photo.sizes, AndroidUtilities.getPhotoSize())).getAbsolutePath(); + currentPathObject = FileLoader.getInstance(currentAccount).getPathToAttach(FileLoader.getClosestPhotoSizeWithSize(botInlineResult.photo.sizes, AndroidUtilities.getPhotoSize())).getAbsolutePath(); } else if (botInlineResult.content instanceof TLRPC.TL_webDocument) { currentPathObject = botInlineResult.content.url; isVideo = botInlineResult.type.equals("video"); @@ -11107,6 +11527,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat animateToX = 0; animateToY = 0; animateToScale = 1; + animateToRotate = 0; animationStartTime = 0; zoomAnimation = false; imageMoveAnimation = null; @@ -11143,10 +11564,11 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } if (!imagesArrLocals.isEmpty()) { - paintingOverlay.setVisibility(View.VISIBLE); - paintingOverlay.setData(editState.paintPath, editState.mediaEntities, isCurrentVideo, false); +// paintingOverlay.setVisibility(View.VISIBLE); +// paintingOverlay.setData(editState.paintPath, editState.mediaEntities, isCurrentVideo, false); } else { - paintingOverlay.setVisibility(View.GONE); +// paintingOverlay.reset(); +// paintingOverlay.setVisibility(View.GONE); editState.reset(); } @@ -11154,7 +11576,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (prevIndex == -1) { setImages(); - for (int a = 0; a < 3; a++) { checkProgress(a, false, false); } @@ -11180,7 +11601,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat fullscreenButton[0].setTranslationY(tmp.getTranslationY()); leftCropState = null; - setIndexToImage(leftImage, currentIndex - 1, leftCropTransform, leftPaintingOverlay); + setIndexToPaintingOverlay(currentIndex - 1, leftPaintingOverlay); + setIndexToPaintingOverlay(currentIndex, paintingOverlay); + setIndexToPaintingOverlay(currentIndex + 1, rightPaintingOverlay); + setIndexToImage(leftImage, currentIndex - 1, leftCropTransform); updateAccessibilityOverlayVisibility(); checkProgress(1, true, false); @@ -11205,7 +11629,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat fullscreenButton[0].setTranslationY(tmp.getTranslationY()); rightCropState = null; - setIndexToImage(rightImage, currentIndex + 1, rightCropTransform, rightPaintingOverlay); + setIndexToPaintingOverlay(currentIndex - 1, leftPaintingOverlay); + setIndexToPaintingOverlay(currentIndex, paintingOverlay); + setIndexToPaintingOverlay(currentIndex + 1, rightPaintingOverlay); + setIndexToImage(rightImage, currentIndex + 1, rightCropTransform); updateAccessibilityOverlayVisibility(); checkProgress(1, true, false); @@ -11468,10 +11895,15 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (currentFileNames[a] != null) { File f1 = null; File f2 = null; + boolean fileExist = false; + FileLoader.FileResolver f2Resolver = null; boolean isVideo = false; boolean canStream = false; boolean canAutoPlay = false; MessageObject messageObject = null; + if (a == 0 && currentIndex == 0 && currentAnimation != null) { + fileExist = currentAnimation.hasBitmap(); + } if (currentMessageObject != null) { if (index < 0 || index >= imagesArr.size()) { photoProgressViews[a].setBackgroundState(PROGRESS_NONE, animated, true); @@ -11488,9 +11920,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage && messageObject.messageOwner.media.webpage != null && messageObject.messageOwner.media.webpage.document == null) { TLObject fileLocation = getFileLocation(index, null); - f2 = FileLoader.getPathToAttach(fileLocation, true); + f2Resolver = () -> FileLoader.getInstance(currentAccount).getPathToAttach(fileLocation, true); } else { - f2 = FileLoader.getPathToMessage(messageObject.messageOwner); + TLRPC.Message finalMessage = messageObject.messageOwner; + f2Resolver = () -> FileLoader.getInstance(currentAccount).getPathToMessage(finalMessage); } if (messageObject.isVideo()) { canStream = SharedConfig.streamMedia && messageObject.canStreamVideo() && !DialogObject.isEncryptedDialog(messageObject.getDialogId()); @@ -11504,7 +11937,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat TLRPC.BotInlineResult botInlineResult = (TLRPC.BotInlineResult) imagesArrLocals.get(index); if (botInlineResult.type.equals("video") || MessageObject.isVideoDocument(botInlineResult.document)) { if (botInlineResult.document != null) { - f1 = FileLoader.getPathToAttach(botInlineResult.document); + f1 = FileLoader.getInstance(currentAccount).getPathToAttach(botInlineResult.document); } else if (botInlineResult.content instanceof TLRPC.TL_webDocument) { f1 = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), Utilities.MD5(botInlineResult.content.url) + "." + ImageLoader.getHttpUrlExtension(botInlineResult.content.url, "mp4")); } @@ -11521,14 +11954,14 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return; } ImageLocation location = imagesArrLocationsVideo.get(index); - f1 = FileLoader.getPathToAttach(location.location, getFileLocationExt(location), avatarsDialogId != 0 || isEvent); + f1 = FileLoader.getInstance(currentAccount).getPathToAttach(location.location, getFileLocationExt(location), avatarsDialogId != 0 || isEvent); } else if (currentSecureDocument != null) { if (index < 0 || index >= secureDocuments.size()) { photoProgressViews[a].setBackgroundState(PROGRESS_NONE, animated, true); return; } SecureDocument location = secureDocuments.get(index); - f1 = FileLoader.getPathToAttach(location, true); + f1 = FileLoader.getInstance(currentAccount).getPathToAttach(location, true); } else if (currentPathObject != null) { f1 = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_DOCUMENT), currentFileNames[a]); f2 = new File(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE), currentFileNames[a]); @@ -11539,17 +11972,24 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } File f1Final = f1; File f2Final = f2; + FileLoader.FileResolver finalF2Resolver = f2Resolver; MessageObject messageObjectFinal = messageObject; boolean canStreamFinal = canStream; boolean canAutoPlayFinal = !(a == 0 && dontAutoPlay) && canAutoPlay; boolean isVideoFinal = isVideo; + + boolean finalFileExist = fileExist; Utilities.globalQueue.postRunnable(() -> { - boolean exists = false; - if (f1Final != null) { + boolean exists = finalFileExist; + if (!exists && f1Final != null) { exists = f1Final.exists(); } - if (!exists && f2Final != null) { - exists = f2Final.exists(); + File f2Local = f2Final; + if (f2Local == null && finalF2Resolver != null) { + f2Local = finalF2Resolver.getFile(); + } + if (!exists && f2Local != null) { + exists = f2Local.exists(); } if (!exists && a != 0 && messageObjectFinal != null && canStreamFinal) { if (DownloadController.getInstance(currentAccount).canDownloadMedia(messageObjectFinal.messageOwner) != 0) { @@ -11562,12 +12002,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } boolean existsFinal = exists; + File finalF2Local = f2Local; AndroidUtilities.runOnUIThread(() -> { if (shownControlsByEnd && !actionBarWasShownBeforeByEnd && isPlaying) { photoProgressViews[a].setBackgroundState(PROGRESS_PLAY, false, false); return; } - if ((f1Final != null || f2Final != null) && (existsFinal || canStreamFinal)) { + if ((f1Final != null || finalF2Local != null) && (existsFinal || canStreamFinal)) { if (a != 0 || !isPlaying) { if (isVideoFinal && (!canAutoPlayFinal || a == 0 && playerWasPlaying)) { photoProgressViews[a].setBackgroundState(PROGRESS_PLAY, animated, true); @@ -11628,7 +12069,33 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return captionEditText != null ? captionEditText.getSelectionLength() : 0; } - private void setIndexToImage(ImageReceiver imageReceiver, int index, CropTransform cropTransform, PaintingOverlay paintingOverlay) { + private void setIndexToPaintingOverlay(int index, PaintingOverlay paintingOverlay) { + if (paintingOverlay == null) { + return; + } + paintingOverlay.reset(); + paintingOverlay.setVisibility(View.GONE); + if (!imagesArrLocals.isEmpty() && index >= 0 && index < imagesArrLocals.size()) { + Object object = imagesArrLocals.get(index); + boolean isVideo = false; + String paintPath = null; + ArrayList mediaEntities = null; + if (object instanceof MediaController.PhotoEntry) { + MediaController.PhotoEntry photoEntry = (MediaController.PhotoEntry) object; + isVideo = photoEntry.isVideo; + paintPath = photoEntry.paintPath; + mediaEntities = photoEntry.mediaEntities; + } else if (object instanceof MediaController.SearchImage) { + MediaController.SearchImage photoEntry = (MediaController.SearchImage) object; + paintPath = photoEntry.paintPath; + mediaEntities = photoEntry.mediaEntities; + } + paintingOverlay.setVisibility(View.VISIBLE); + paintingOverlay.setData(paintPath, mediaEntities, isVideo, false); + } + } + + private void setIndexToImage(ImageReceiver imageReceiver, int index, CropTransform cropTransform) { imageReceiver.setOrientation(0, false); if (!secureDocuments.isEmpty()) { if (index >= 0 && index < secureDocuments.size()) { @@ -11642,7 +12109,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat placeHolder = placeProvider.getThumbForPhoto(null, null, index); } SecureDocument document = secureDocuments.get(index); - int imageSize = document.secureFile.size; + long imageSize = document.secureFile.size; imageReceiver.setImage(ImageLocation.getForSecureDocument(document), "d", null, null, placeHolder != null ? new BitmapDrawable(placeHolder.bitmap) : null, imageSize, null, null, 0); } } else if (!imagesArrLocals.isEmpty()) { @@ -11663,7 +12130,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat TLRPC.PhotoSize photo = null; TLObject photoObject = null; MediaController.CropState cropState = null; - int imageSize = 0; + long imageSize = 0; String filter = null; boolean isVideo = false; int cacheType = 0; @@ -11874,7 +12341,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return; } } - int[] size = new int[1]; + long[] size = new long[1]; ImageLocation imageLocation = getImageLocation(index, size); TLObject fileLocation = getFileLocation(index, size); imageReceiver.setNeedsQualityThumb(true); @@ -11899,6 +12366,15 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (thumbLocation != null && thumbLocation == fileLocation) { thumbLocation = null; } + if (thumbLocation == null && imageLocation.photo != null && imageLocation.photo.sizes != null) { + for (int i = 0; i < imageLocation.photo.sizes.size(); ++i) { + if (imageLocation.photo.sizes.get(i) instanceof TLRPC.TL_photoStrippedSize) { + thumbLocation = imageLocation.photo.sizes.get(i); + photoObject = imageLocation.photo; + break; + } + } + } boolean cacheOnly = messageObject != null && messageObject.isWebpage() || avatarsDialogId != 0 || isEvent; Object parentObject; ImageLocation videoThumb = null; @@ -11917,6 +12393,12 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } else { parentObject = MessagesController.getInstance(currentAccount).getChat(-avatarsDialogId); } + if (photoObject != null) { + parentObject = photoObject; + } + if (placeHolder == null && thumbLocation instanceof TLRPC.TL_photoStrippedSize) { + placeHolder = new ImageReceiver.BitmapHolder(ImageLoader.getStrippedPhotoBitmap(thumbLocation.bytes, "b")); + } } else { parentObject = null; } @@ -12125,7 +12607,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } if (file == null) { - file = FileLoader.getPathToMessage(currentMessageObject.messageOwner); + file = FileLoader.getInstance(currentAccount).getPathToMessage(currentMessageObject.messageOwner); } } @@ -12320,6 +12802,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (attachedToWindow) { try { wm.removeView(windowView); + onHideView(); } catch (Exception e) { //don't promt } @@ -12347,6 +12830,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat windowView.setFocusable(false); containerView.setFocusable(false); wm.addView(windowView, windowLayoutParams); + onShowView(); } catch (Exception e) { FileLog.e(e); return false; @@ -12585,6 +13069,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } animationInProgress = 0; transitionAnimationStartTime = 0; + leftCropState = null; + leftCropTransform.setViewTransform(false); + rightCropState = null; + rightCropTransform.setViewTransform(false); setImages(); setCropBitmap(); containerView.invalidate(); @@ -12609,6 +13097,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (isEmbedVideo) { initEmbedVideo(embedSeekTime); } + + if (provider != null) { + provider.onOpen(); + } }; if (!openedFullScreenVideo) { @@ -12742,6 +13234,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (isEmbedVideo) { initEmbedVideo(embedSeekTime); } + + if (provider != null) { + provider.onOpen(); + } } }); animatorSet.start(); @@ -12814,6 +13310,26 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat containerView.setFocusable(true); } + private void requestAdjustToNothing() { + windowLayoutParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING; + WindowManager wm1 = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); + try { + wm1.updateViewLayout(windowView, windowLayoutParams); + } catch (Exception e) { + FileLog.e(e); + } + } + + private void requestAdjust() { + windowLayoutParams.softInputMode = (useSmoothKeyboard ? WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN : WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) | WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION; + WindowManager wm1 = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); + try { + wm1.updateViewLayout(windowView, windowLayoutParams); + } catch (Exception e) { + FileLog.e(e); + } + } + public void injectVideoPlayerToMediaController() { if (videoPlayer.isPlaying()) { if (playerLooping) { @@ -13227,6 +13743,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (windowView.getParent() != null) { WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); wm.removeViewImmediate(windowView); + onHideView(); } windowView = null; } catch (Exception e) { @@ -13245,6 +13762,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } else { Instance = null; } + onHideView(); } private void onPhotoClosed(PlaceProviderObject object) { @@ -13301,6 +13819,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (windowView.getParent() != null) { WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); wm.removeView(windowView); + onHideView(); } } catch (Exception e) { FileLog.e(e); @@ -13310,6 +13829,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat placeProvider.willHidePhotoViewer(); } groupedPhotosListView.clear(); + if (placeProvider != null) { + placeProvider.onClose(); + } placeProvider = null; selectedPhotosAdapter.notifyDataSetChanged(); pageBlocksAdapter = null; @@ -13829,11 +14351,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat float ts = scale + (animateToScale - scale) * animationValue; float tx = translationX + (animateToX - translationX) * animationValue; float ty = translationY + (animateToY - translationY) * animationValue; + float tr = rotate + (animateToRotate - rotate) * animationValue; imageMoveAnimation.cancel(); scale = ts; translationX = tx; translationY = ty; animationStartTime = 0; + rotate = tr; updateMinMax(scale); zoomAnimation = false; containerView.invalidate(); @@ -13934,7 +14458,32 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat @SuppressLint({"NewApi", "DrawAllocation"}) private void onDraw(Canvas canvas) { - if (animationInProgress == 1 || animationInProgress == 3 || !isVisible && animationInProgress != 2 && !pipAnimationInProgress) { + if (animationInProgress == 1) { + float alpha = 1f; + if (padImageForHorizontalInsets) { + canvas.save(); + canvas.translate(getLeftInset() / 2 - getRightInset() / 2, 0); + } + if (animatingImageView != null) { + canvas.save(); + canvas.translate( + animatingImageView.getCenterX() - canvas.getWidth() / 2, + animatingImageView.getCenterY() - canvas.getHeight() / 2 + ); + float t = animatingImageView.getAnimationProgress(); + float scale = alpha = animationInProgress == 1 ? t : 1f - t; + canvas.scale(scale, scale, canvas.getWidth() / 2, canvas.getHeight() / 2); + } + drawProgress(canvas, 0, 1, 0, alpha); + if (animatingImageView != null) { + canvas.restore(); + } + if (padImageForHorizontalInsets) { + canvas.restore(); + } + return; + } + if (animationInProgress == 3 || !isVisible && animationInProgress != 2 && !pipAnimationInProgress) { return; } @@ -13946,6 +14495,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat float currentTranslationY; float currentTranslationX; float currentScale; + float currentRotation; + float currentMirror; float aty = -1; long newUpdateTime = System.currentTimeMillis(); long dt = newUpdateTime - videoCrossfadeAlphaLastTime; @@ -13960,13 +14511,17 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } float ts = scale + (animateToScale - scale) * animationValue; + float tr = rotate + (animateToRotate - rotate) * animationValue; float tx = translationX + (animateToX - translationX) * animationValue; float ty = translationY + (animateToY - translationY) * animationValue; + float tm = mirror + (animateToMirror - mirror) * animationValue; if (animateToScale == 1 && scale == 1 && translationX == 0) { aty = ty; } + currentMirror = tm; currentScale = ts; + currentRotation = tr; currentTranslationY = ty; currentTranslationX = tx; updateMinMax(currentScale); @@ -14007,6 +14562,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat switchImageAfterAnimation = 0; } currentScale = scale; + currentMirror = mirror; + currentRotation = rotate; currentTranslationY = translationY; currentTranslationX = translationX; if (!moving) { @@ -14100,8 +14657,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat canvas.scale(1.0f - scaleDiff, 1.0f - scaleDiff); int bitmapWidth = sideImage.getBitmapWidth(); int bitmapHeight = sideImage.getBitmapHeight(); - if (!rightImageIsVideo && rightCropTransform.hasViewTransform()) { - applyCrop(canvas, containerWidth, containerHeight, bitmapWidth, bitmapHeight, currentScale, rightCropTransform, rightCropState); + if (!rightImageIsVideo && rightCropState != null && rightCropTransform.hasViewTransform()) { + applyCrop(canvas, containerWidth, containerHeight, bitmapWidth, bitmapHeight, 1f, rightCropTransform, rightCropState); } float scaleX = containerWidth / (float) bitmapWidth; @@ -14110,10 +14667,34 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat int width = (int) (bitmapWidth * scale); int height = (int) (bitmapHeight * scale); + boolean mirror = false; + if (!imagesArrLocals.isEmpty()) { + if (currentEditMode == EDIT_MODE_CROP || sendPhotoType == SELECT_TYPE_AVATAR) { + mirror = rightCropTransform.isMirrored(); + } else { + mirror = rightCropState != null && rightCropState.mirrored; + } + } + if (mirror) { + canvas.scale(-1, 1); + } + sideImage.setAlpha(alpha); sideImage.setImageCoords(-width / 2, -height / 2, width, height); sideImage.draw(canvas); + if (rightPaintingOverlay != null && rightPaintingOverlay.getVisibility() == View.VISIBLE) { + canvas.clipRect(-width/2, -height/2, width/2, height/2); + if (rightPaintingOverlay.getMeasuredWidth() != bitmapWidth || rightPaintingOverlay.getMeasuredHeight() != bitmapHeight) { + rightPaintingOverlay.measure(View.MeasureSpec.makeMeasureSpec(bitmapWidth, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(bitmapHeight, View.MeasureSpec.EXACTLY)); + rightPaintingOverlay.layout(0, 0, bitmapWidth, bitmapHeight); + } + canvas.scale(scale, scale); + canvas.translate(-bitmapWidth/2, -bitmapHeight/2); + rightPaintingOverlay.setAlpha(1.0f); + rightPaintingOverlay.draw(canvas); + } + canvas.restore(); } groupedPhotosListView.setMoveProgress(-alpha); @@ -14151,6 +14732,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat canvas.translate(containerWidth / 2 + getAdditionX(), containerHeight / 2 + getAdditionY()); canvas.translate(translateX, currentTranslationY + (currentEditMode != EDIT_MODE_PAINT ? currentPanTranslationY : currentPanTranslationY / 2)); canvas.scale(currentScale - scaleDiff, currentScale - scaleDiff); + canvas.rotate(currentRotation); if (currentEditMode == EDIT_MODE_PAINT && keyboardSize > AndroidUtilities.dp(20)) { int trueH = getContainerViewHeight(true, 0); int h = getContainerViewHeight(false, 0); @@ -14208,10 +14790,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat boolean applyCrop; float scaleToFitX = 1.0f; if (!imagesArrLocals.isEmpty()) { - if (currentEditMode == EDIT_MODE_PAINT || switchingToMode == 3) { + if (currentEditMode == EDIT_MODE_PAINT || switchingToMode == EDIT_MODE_PAINT) { applyCrop = true; } else if (sendPhotoType == SELECT_TYPE_AVATAR) { - applyCrop = (switchingToMode == 0 || currentEditMode != EDIT_MODE_PAINT && currentEditMode != EDIT_MODE_FILTER); + applyCrop = (switchingToMode == EDIT_MODE_NONE || currentEditMode != EDIT_MODE_PAINT && currentEditMode != EDIT_MODE_FILTER); } else { applyCrop = imageMoveAnimation != null && switchingToMode != -1 || currentEditMode == EDIT_MODE_NONE || currentEditMode == EDIT_MODE_CROP || switchingToMode != -1; } @@ -14232,18 +14814,18 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat rotatedHeight = temp; } float cropAnimationValue; - if (sendPhotoType != SELECT_TYPE_AVATAR && (currentEditMode == 3 || switchingToMode == 3)) { + if (sendPhotoType != SELECT_TYPE_AVATAR && (currentEditMode == EDIT_MODE_PAINT || switchingToMode == EDIT_MODE_PAINT)) { cropAnimationValue = 1.0f; } else if (imageMoveAnimation != null && switchingToMode != -1) { - if (currentEditMode == 1 || switchingToMode == 1 || (currentEditMode == 2 || currentEditMode == 3) && switchingToMode == -1) { + if (currentEditMode == EDIT_MODE_CROP || switchingToMode == EDIT_MODE_CROP || (currentEditMode == EDIT_MODE_FILTER || currentEditMode == EDIT_MODE_PAINT) && switchingToMode == -1) { cropAnimationValue = 1.0f; - } else if (switchingToMode == 0) { + } else if (switchingToMode == EDIT_MODE_NONE) { cropAnimationValue = animationValue; } else { cropAnimationValue = 1.0f - animationValue; } } else { - cropAnimationValue = currentEditMode == 2 || currentEditMode == 3 ? 0.0f : 1.0f; + cropAnimationValue = currentEditMode == EDIT_MODE_FILTER || currentEditMode == EDIT_MODE_PAINT ? 0.0f : 1.0f; } float cropPw = cropTransform.getCropPw(); float cropPh = cropTransform.getCropPh(); @@ -14253,7 +14835,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (scaleToFitX * bitmapHeight > containerHeight) { scaleToFitX = containerHeight / (float) bitmapHeight; } - if (sendPhotoType != SELECT_TYPE_AVATAR && (currentEditMode != 1 || switchingToMode == 0) && editState.cropState != null) { + if (sendPhotoType != SELECT_TYPE_AVATAR && (currentEditMode != 1 || switchingToMode == EDIT_MODE_NONE) && editState.cropState != null) { float startW = bitmapWidth * scaleToFitX; float startH = bitmapHeight * scaleToFitX; float originalScaleToFitX = containerWidth / (float) originalWidth; @@ -14270,7 +14852,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } if (sendPhotoType == SELECT_TYPE_AVATAR || cropTransform.hasViewTransform()) { float cropScale; - if (currentEditMode == 1 || sendPhotoType == SELECT_TYPE_AVATAR) { + if (currentEditMode == EDIT_MODE_CROP || sendPhotoType == SELECT_TYPE_AVATAR) { if (videoTextureView != null) { videoTextureView.setScaleX(cropTransform.isMirrored() ? -1.0f : 1.0f); if (firstFrameView != null) { @@ -14285,9 +14867,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } cropScale *= scaleToFit / scale; if (sendPhotoType == SELECT_TYPE_AVATAR) { - if (currentEditMode == 3 || switchingToMode == 3) { + if (currentEditMode == EDIT_MODE_PAINT || switchingToMode == EDIT_MODE_PAINT) { cropScale /= 1.0f + (cropTransform.getMinScale() - 1.0f) * (1.0f - cropAnimationValue); - } else if (switchingToMode == 0) { + } else if (switchingToMode == EDIT_MODE_NONE) { cropScale /= cropTransform.getMinScale(); } } @@ -14310,7 +14892,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (rotation > 180) { rotation -= 360; } - if (sendPhotoType == SELECT_TYPE_AVATAR && (currentEditMode == 3 || switchingToMode == 3)) { + if (sendPhotoType == SELECT_TYPE_AVATAR && (currentEditMode == EDIT_MODE_PAINT || switchingToMode == EDIT_MODE_PAINT)) { canvas.rotate(rotation); } else { canvas.rotate(rotation * cropAnimationValue); @@ -14340,17 +14922,34 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat mirror = editState.cropState != null && editState.cropState.mirrored; } } + boolean restore = false; if (mirror) { canvas.save(); canvas.scale(-1, 1); + restore = true; + } + if (currentMirror > 0) { + if (!restore) { + canvas.save(); + restore = true; + } + canvas.scale(1 - currentMirror * 2, 1f); + canvas.skew(0, 4 * currentMirror * (1f - currentMirror) * .25f); } if (photoViewerWebView == null || !photoViewerWebView.isLoaded()) { centerImage.draw(canvas); } - if (mirror) { + if (restore) { canvas.restore(); } } + boolean restoreMirror = false; + if (currentMirror > 0) { + canvas.save(); + canvas.scale(1 - currentMirror * 2, 1f); + canvas.skew(0, 4 * currentMirror * (1f - currentMirror) * .25f); + restoreMirror = true; + } canvas.translate(-width / 2, -height / 2); if (drawTextureView || paintingOverlay.getVisibility() == View.VISIBLE) { canvas.scale(scale, scale); @@ -14377,6 +14976,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } paintingOverlay.setAlpha(alpha); } + if (restoreMirror) { + canvas.restore(); + canvas.translate(-width / 2, -height / 2); + if (drawTextureView || paintingOverlay.getVisibility() == View.VISIBLE) { + canvas.scale(scale, scale); + } + } if (paintingOverlay.getVisibility() == View.VISIBLE && (isCurrentVideo || currentEditMode != EDIT_MODE_FILTER || switchingToMode != -1)) { canvas.clipRect(0, 0, paintingOverlay.getMeasuredWidth(), paintingOverlay.getMeasuredHeight()); paintingOverlay.draw(canvas); @@ -14411,43 +15017,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } } - boolean drawProgress; - if (isCurrentVideo) { - drawProgress = (videoTimelineView == null || !videoTimelineView.isDragging()) && (sendPhotoType != SELECT_TYPE_AVATAR || manuallyPaused) && (videoPlayer == null || !videoPlayer.isPlaying()); - } else { - drawProgress = true; - } - boolean drawMiniProgress = miniProgressView.getVisibility() == View.VISIBLE || miniProgressAnimator != null; - if (drawProgress) { - final float tx = !zoomAnimation && -translateX > maxX ? translateX + maxX : 0; - float ty = currentScale == 1.0f ? currentTranslationY : 0; - float progressAlpha = alpha; - if (drawMiniProgress) { - progressAlpha *= 1f - miniProgressView.getAlpha(); - } - if (pipAnimationInProgress) { - progressAlpha *= actionBar.getAlpha(); - } else if (photoProgressViews[0].backgroundState == PROGRESS_PAUSE) { - ty += AndroidUtilities.dpf2(8) * (1f - actionBar.getAlpha()); - } - canvas.save(); - canvas.translate(tx, ty); - photoProgressViews[0].setScale(1.0f - scaleDiff); - photoProgressViews[0].setAlpha(progressAlpha); - photoProgressViews[0].onDraw(canvas); - - if (isActionBarVisible && allowShowFullscreenButton && fullscreenButton[0].getTag() == null) { - fullscreenButton[0].setAlpha(Math.min(fullscreenButton[0].getAlpha(), alpha)); - } - - canvas.restore(); - } - if (drawMiniProgress && !pipAnimationInProgress) { - canvas.save(); - canvas.translate(miniProgressView.getLeft() + translateX, miniProgressView.getTop() + currentTranslationY / currentScale); - miniProgressView.draw(canvas); - canvas.restore(); - } + drawProgress(canvas, translateX, currentScale, currentTranslationY, alpha); if (sideImage == leftImage) { if (sideImage.hasBitmapImage()) { @@ -14456,7 +15026,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat canvas.translate(-(containerWidth * (scale + 1) + AndroidUtilities.dp(30)) / 2 + currentTranslationX, 0); int bitmapWidth = sideImage.getBitmapWidth(); int bitmapHeight = sideImage.getBitmapHeight(); - if (!leftImageIsVideo && leftCropTransform.hasViewTransform()) { + if (!leftImageIsVideo && leftCropState != null && leftCropTransform.hasViewTransform()) { applyCrop(canvas, containerWidth, containerHeight, bitmapWidth, bitmapHeight, currentScale, leftCropTransform, leftCropState); } float scaleX = containerWidth / (float) bitmapWidth; @@ -14465,10 +15035,34 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat int width = (int) (bitmapWidth * scale); int height = (int) (bitmapHeight * scale); + boolean mirror = false; + if (!imagesArrLocals.isEmpty()) { + if (currentEditMode == EDIT_MODE_CROP || sendPhotoType == SELECT_TYPE_AVATAR) { + mirror = leftCropTransform.isMirrored(); + } else { + mirror = leftCropState != null && leftCropState.mirrored; + } + } + if (mirror) { + canvas.scale(-1, 1); + } + sideImage.setAlpha(1.0f); sideImage.setImageCoords(-width / 2, -height / 2, width, height); sideImage.draw(canvas); + if (leftPaintingOverlay != null && leftPaintingOverlay.getVisibility() == View.VISIBLE) { + canvas.clipRect(-width/2, -height/2, width/2, height/2); + if (leftPaintingOverlay.getMeasuredWidth() != bitmapWidth || leftPaintingOverlay.getMeasuredHeight() != bitmapHeight) { + leftPaintingOverlay.measure(View.MeasureSpec.makeMeasureSpec(bitmapWidth, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(bitmapHeight, View.MeasureSpec.EXACTLY)); + leftPaintingOverlay.layout(0, 0, bitmapWidth, bitmapHeight); + } + canvas.scale(scale, scale); + canvas.translate(-bitmapWidth/2, -bitmapHeight/2); + leftPaintingOverlay.setAlpha(1.0f); + leftPaintingOverlay.draw(canvas); + } + canvas.restore(); } groupedPhotosListView.setMoveProgress(1.0f - alpha); @@ -14528,6 +15122,46 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } + private void drawProgress(Canvas canvas, float translateX, float currentScale, float currentTranslationY, float alpha) { + boolean drawProgress; + if (isCurrentVideo) { + drawProgress = (videoTimelineView == null || !videoTimelineView.isDragging()) && (sendPhotoType != SELECT_TYPE_AVATAR || manuallyPaused) && (videoPlayer == null || !videoPlayer.isPlaying()); + } else { + drawProgress = true; + } + boolean drawMiniProgress = miniProgressView.getVisibility() == View.VISIBLE || miniProgressAnimator != null; + if (drawProgress) { + final float tx = !zoomAnimation && -translateX > maxX ? translateX + maxX : 0; + float ty = currentScale == 1.0f ? currentTranslationY : 0; + float progressAlpha = alpha; + if (drawMiniProgress) { + progressAlpha *= 1f - miniProgressView.getAlpha(); + } + if (pipAnimationInProgress) { + progressAlpha *= actionBar.getAlpha(); + } else if (photoProgressViews[0].backgroundState == PROGRESS_PAUSE) { + ty += AndroidUtilities.dpf2(8) * (1f - actionBar.getAlpha()); + } + canvas.save(); + canvas.translate(tx, ty); + photoProgressViews[0].setScale(1.0f); + photoProgressViews[0].setAlpha(progressAlpha); + photoProgressViews[0].onDraw(canvas); + + if (isActionBarVisible && allowShowFullscreenButton && fullscreenButton[0].getTag() == null) { + fullscreenButton[0].setAlpha(Math.min(fullscreenButton[0].getAlpha(), alpha)); + } + + canvas.restore(); + } + if (drawMiniProgress && !pipAnimationInProgress) { + canvas.save(); + canvas.translate(miniProgressView.getLeft() + translateX, miniProgressView.getTop() + currentTranslationY / currentScale); + miniProgressView.draw(canvas); + canvas.restore(); + } + } + private int[] tempInt = new int[2]; private int[] applyCrop(Canvas canvas, int containerWidth, int containerHeight, int bitmapWidth, int bitmapHeight, float currentScale, CropTransform cropTransform, MediaController.CropState cropState) { @@ -14550,9 +15184,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (sendPhotoType != SELECT_TYPE_AVATAR && (currentEditMode == EDIT_MODE_PAINT || switchingToMode == EDIT_MODE_PAINT)) { cropAnimationValue = 1.0f; } else if (imageMoveAnimation != null && switchingToMode != -1) { - if (currentEditMode == 1 || switchingToMode == 1 || (currentEditMode == EDIT_MODE_FILTER || currentEditMode == EDIT_MODE_PAINT) && switchingToMode == -1) { + if (currentEditMode == EDIT_MODE_CROP || switchingToMode == EDIT_MODE_CROP || (currentEditMode == EDIT_MODE_FILTER || currentEditMode == EDIT_MODE_PAINT) && switchingToMode == -1) { cropAnimationValue = 1.0f; - } else if (switchingToMode == 0) { + } else if (switchingToMode == EDIT_MODE_NONE) { cropAnimationValue = animationValue; } else { cropAnimationValue = 1.0f - animationValue; @@ -14594,9 +15228,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } cropScale *= scaleToFit / scale; if (sendPhotoType == SELECT_TYPE_AVATAR) { - if (currentEditMode == 3 || switchingToMode == 3) { + if (currentEditMode == EDIT_MODE_PAINT || switchingToMode == EDIT_MODE_PAINT) { cropScale /= 1.0f + (cropTransform.getMinScale() - 1.0f) * (1.0f - cropAnimationValue); - } else if (switchingToMode == 0) { + } else if (switchingToMode == EDIT_MODE_NONE) { cropScale /= cropTransform.getMinScale(); } } @@ -14613,7 +15247,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (rotation > 180) { rotation -= 360; } - if (sendPhotoType == SELECT_TYPE_AVATAR && (currentEditMode == 3 || switchingToMode == 3)) { + if (sendPhotoType == SELECT_TYPE_AVATAR && (currentEditMode == EDIT_MODE_PAINT || switchingToMode == EDIT_MODE_PAINT)) { canvas.rotate(rotation); } else { canvas.rotate(rotation * cropAnimationValue); @@ -14639,7 +15273,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } if (file == null) { - file = FileLoader.getPathToMessage(currentMessageObject.messageOwner); + file = FileLoader.getInstance(currentAccount).getPathToMessage(currentMessageObject.messageOwner); if (!file.exists()) { file = null; if (SharedConfig.streamMedia && !DialogObject.isEncryptedDialog(currentMessageObject.getDialogId()) && currentMessageObject.isVideo() && currentMessageObject.canStreamVideo()) { @@ -14667,7 +15301,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } else if (currentBotInlineResult != null) { if (currentBotInlineResult.document != null) { - file = FileLoader.getPathToAttach(currentBotInlineResult.document); + file = FileLoader.getInstance(currentAccount).getPathToAttach(currentBotInlineResult.document); if (!file.exists()) { file = null; } @@ -14832,6 +15466,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } + public VideoPlayerRewinder getVideoPlayerRewinder() { + return videoPlayerRewinder; + } + @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (scale != 1) { @@ -15419,7 +16057,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } private void showQualityView(final boolean show) { - if (show && textureUploaded && videoSizeSet && !changingTextureView) { + if (show && textureUploaded && videoSizeSet && !changingTextureView && videoTextureView != null) { videoFrameBitmap = videoTextureView.getBitmap(); } @@ -15662,9 +16300,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private void updateAccessibilityOverlayVisibility() { if (playButtonAccessibilityOverlay != null) { final int state = photoProgressViews[0].backgroundState; - if (photoProgressViews[0].isVisible() && (state == PROGRESS_PLAY || state == PROGRESS_PAUSE)) { + if (photoProgressViews[0].isVisible() && (state == PROGRESS_PLAY || state == PROGRESS_PAUSE || state == PROGRESS_LOAD || state == PROGRESS_CANCEL)) { if (state == PROGRESS_PLAY) { playButtonAccessibilityOverlay.setContentDescription(LocaleController.getString("AccActionPlay", R.string.AccActionPlay)); + } else if (state == PROGRESS_LOAD) { + playButtonAccessibilityOverlay.setContentDescription(LocaleController.getString("AccActionDownload", R.string.AccActionDownload)); + } else if (state == PROGRESS_CANCEL) { + playButtonAccessibilityOverlay.setContentDescription(LocaleController.getString("AccActionCancelDownload", R.string.AccActionCancelDownload)); } else { playButtonAccessibilityOverlay.setContentDescription(LocaleController.getString("AccActionPause", R.string.AccActionPause)); } @@ -15706,7 +16348,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat int num = placeProvider.setPhotoChecked(idx, getCurrentVideoEditedInfo()); boolean checked = placeProvider.isPhotoChecked(idx); if (idx == currentIndex) { - checkImageView.setChecked(-1, false, true); + checkImageView.setChecked(-1, checked, true); } if (num >= 0) { selectedPhotosAdapter.notifyItemRemoved(num); @@ -15777,6 +16419,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private class FirstFrameView extends ImageView { public FirstFrameView(Context context) { super(context); + setAlpha(0f); } public void clear() { @@ -15802,7 +16445,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (videoPlayer != null) { long timeToEnd = videoPlayer.getDuration() - videoPlayer.getCurrentPosition(); - if (!hasFrame && !gotError && !gettingFrame && timeToEnd < 1000 * 5) { // 5 seconds to get the first frame + if (!hasFrame && !gotError && !gettingFrame && timeToEnd < 1000 * 5 + fadeDuration) { // 5 seconds to get the first frame final Uri uri = videoPlayer.getCurrentUri(); final int index = ++gettingFrameIndex; Utilities.globalQueue.postRunnable(() -> { @@ -15835,11 +16478,44 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return hasFrame; } - public final static float fadeDuration = 200; + public final static float fadeDuration = 250; + private final TimeInterpolator fadeInterpolator = CubicBezierInterpolator.EASE_IN; + + private ValueAnimator fadeAnimator; private void updateAlpha() { - if (videoPlayer != null && firstFrameView != null && videoPlayer.getDuration() != C.TIME_UNSET) { - long toDuration = videoPlayer.getDuration() - videoPlayer.getCurrentPosition(); - firstFrameView.setAlpha(1f - Math.max(Math.min(toDuration / fadeDuration, 1), 0)); + if (videoPlayer == null || videoPlayer.getDuration() == C.TIME_UNSET) { + if (fadeAnimator != null) { + fadeAnimator.cancel(); + fadeAnimator = null; + } + setAlpha(0f); + return; + } + long toDuration = Math.max(0, videoPlayer.getDuration() - videoPlayer.getCurrentPosition()); + float alpha = 1f - Math.max(Math.min(toDuration / fadeDuration, 1), 0); + if (alpha <= 0) { + if (fadeAnimator != null) { + fadeAnimator.cancel(); + fadeAnimator = null; + } + setAlpha(0f); + } else if (videoPlayer.isPlaying()) { + if (fadeAnimator == null) { + fadeAnimator = ValueAnimator.ofFloat(alpha, 1f); + fadeAnimator.addUpdateListener(a -> { + setAlpha((float) a.getAnimatedValue()); + }); + fadeAnimator.setDuration(toDuration); + fadeAnimator.setInterpolator(fadeInterpolator); + fadeAnimator.start(); + setAlpha(alpha); + } + } else { + if (fadeAnimator != null) { + fadeAnimator.cancel(); + fadeAnimator = null; + } + setAlpha(alpha); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java index 78dc3c712..995e334e6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java @@ -896,7 +896,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC if (currentPhotoObject != null) { boolean photoExist = true; if (messageObject.type == 1) { - File cacheFile = FileLoader.getPathToMessage(messageObject.messageOwner); + File cacheFile = FileLoader.getInstance(UserConfig.selectedAccount).getPathToMessage(messageObject.messageOwner); if (!cacheFile.exists()) { photoExist = false; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PremiumFeatureCell.java b/TMessagesProj/src/main/java/org/telegram/ui/PremiumFeatureCell.java new file mode 100644 index 000000000..54668ef93 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/PremiumFeatureCell.java @@ -0,0 +1,72 @@ +package org.telegram.ui; + +import android.content.Context; +import android.graphics.Canvas; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.LayoutHelper; + +public class PremiumFeatureCell extends FrameLayout { + + private final TextView title; + private final TextView description; + public ImageView imageView; + boolean drawDivider; + public PremiumPreviewFragment.PremiumFeatureData data; + + public PremiumFeatureCell(Context context) { + super(context); + + LinearLayout linearLayout = new LinearLayout(context); + linearLayout.setOrientation(LinearLayout.VERTICAL); + + title = new TextView(context); + title.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + title.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + linearLayout.addView(title, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + + description = new TextView(context); + description.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + description.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText)); + description.setLineSpacing(AndroidUtilities.dp(2), 1f); + linearLayout.addView(description, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 0, 1, 0, 0)); + + addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 62, 8, 48, 9)); + + imageView = new ImageView(context); + imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); + addView(imageView, LayoutHelper.createFrame(28, 28, 0, 18, 12, 0, 0)); + + ImageView nextIcon = new ImageView(context); + nextIcon.setScaleType(ImageView.ScaleType.CENTER_INSIDE); + nextIcon.setImageResource(R.drawable.msg_arrowright); + nextIcon.setColorFilter(Theme.getColor(Theme.key_switchTrack)); + addView(nextIcon, LayoutHelper.createFrame(24, 24, Gravity.RIGHT | Gravity.CENTER_VERTICAL, 0, 0, 18, 0)); + } + + + public void setData(PremiumPreviewFragment.PremiumFeatureData data, boolean drawDivider) { + this.data = data; + title.setText(data.title); + description.setText(data.description); + imageView.setImageResource(data.icon); + this.drawDivider = drawDivider; + } + + @Override + protected void dispatchDraw(Canvas canvas) { + super.dispatchDraw(canvas); + if (drawDivider) { + canvas.drawRect(AndroidUtilities.dp(62), getMeasuredHeight() - 1, getMeasuredWidth(), getMeasuredHeight(), Theme.dividerPaint); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PremiumPreviewFragment.java b/TMessagesProj/src/main/java/org/telegram/ui/PremiumPreviewFragment.java new file mode 100644 index 000000000..3648d2ce3 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/PremiumPreviewFragment.java @@ -0,0 +1,1148 @@ +package org.telegram.ui; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.LinearGradient; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.Rect; +import android.graphics.Shader; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Build; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.TextUtils; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.HapticFeedbackConstants; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.ScrollView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.graphics.ColorUtils; +import androidx.recyclerview.widget.RecyclerView; + +import com.android.billingclient.api.BillingClient; +import com.android.billingclient.api.BillingFlowParams; +import com.android.billingclient.api.ProductDetails; + +import org.telegram.PhoneFormat.PhoneFormat; +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.BillingController; +import org.telegram.messenger.BuildVars; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; +import org.telegram.messenger.MessagesController; +import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.messenger.Utilities; +import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.ActionBar.ThemeDescription; +import org.telegram.ui.Cells.ShadowSectionCell; +import org.telegram.ui.Cells.TextInfoPrivacyCell; +import org.telegram.ui.Components.AlertsCreator; +import org.telegram.ui.Components.CombinedDrawable; +import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.FillLastLinearLayoutManager; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.AboutPremiumView; +import org.telegram.ui.Components.Premium.DoubledLimitsBottomSheet; +import org.telegram.ui.Components.Premium.GLIcon.GLIconRenderer; +import org.telegram.ui.Components.Premium.GLIcon.GLIconTextureView; +import org.telegram.ui.Components.Premium.PremiumButtonView; +import org.telegram.ui.Components.Premium.PremiumFeatureBottomSheet; +import org.telegram.ui.Components.Premium.PremiumGradient; +import org.telegram.ui.Components.Premium.PremiumNotAvailableBottomSheet; +import org.telegram.ui.Components.Premium.StarParticlesView; +import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.Components.SimpleThemeDescription; +import org.telegram.ui.Components.TextStyleSpan; +import org.telegram.ui.Components.URLSpanBotCommand; +import org.telegram.ui.Components.URLSpanBrowser; +import org.telegram.ui.Components.URLSpanMono; +import org.telegram.ui.Components.URLSpanNoUnderline; +import org.telegram.ui.Components.URLSpanReplacement; +import org.telegram.ui.Components.URLSpanUserMention; + +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Currency; +import java.util.List; + +public class PremiumPreviewFragment extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + RecyclerListView listView; + ArrayList premiumFeatures = new ArrayList<>(); + + int rowCount; + int paddingRow; + int featuresStartRow; + int featuresEndRow; + int sectionRow; + int helpUsRow; + int statusRow; + int privacyRow; + int lastPaddingRow; + Drawable shadowDrawable; + private FrameLayout buttonContainer; + private View buttonDivider; + + PremiumFeatureCell dummyCell; + int totalGradientHeight; + + FillLastLinearLayoutManager layoutManager; + //icons + Shader shader; + Matrix matrix = new Matrix(); + Paint gradientPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + BackgroundView backgroundView; + StarParticlesView particlesView; + boolean isLandscapeMode; + + public final static int PREMIUM_FEATURE_LIMITS = 0; + public final static int PREMIUM_FEATURE_UPLOAD_LIMIT = 1; + public final static int PREMIUM_FEATURE_DOWNLOAD_SPEED = 2; + public final static int PREMIUM_FEATURE_ADS = 3; + public final static int PREMIUM_FEATURE_REACTIONS = 4; + public final static int PREMIUM_FEATURE_STICKERS = 5; + public final static int PREMIUM_FEATURE_PROFILE_BADGE = 6; + public final static int PREMIUM_FEATURE_ANIMATED_AVATARS = 7; + public final static int PREMIUM_FEATURE_VOICE_TO_TEXT = 8; + public final static int PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT = 9; + public final static int PREMIUM_FEATURE_APPLICATION_ICONS = 10; + private int statusBarHeight; + private int firstViewHeight; + private boolean isDialogVisible; + + boolean inc; + float progress; + private int currentYOffset; + private FrameLayout contentView; + private PremiumButtonView premiumButtonView; + float totalProgress; + private String source; + + final Bitmap gradientTextureBitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); + final Canvas gradientCanvas = new Canvas(gradientTextureBitmap); + PremiumGradient.GradientTools gradientTools = new PremiumGradient.GradientTools(Theme.key_premiumGradientBackground1, Theme.key_premiumGradientBackground2, Theme.key_premiumGradientBackground3, Theme.key_premiumGradientBackground4); + + private boolean forcePremium; + float progressToFull; + + public static int severStringToFeatureType(String s) { + switch (s) { + case "double_limits": + return PREMIUM_FEATURE_LIMITS; + case "more_upload": + return PREMIUM_FEATURE_UPLOAD_LIMIT; + case "faster_download": + return PREMIUM_FEATURE_DOWNLOAD_SPEED; + case "voice_to_text": + return PREMIUM_FEATURE_VOICE_TO_TEXT; + case "no_ads": + return PREMIUM_FEATURE_ADS; + case "unique_reactions": + return PREMIUM_FEATURE_REACTIONS; + case "premium_stickers": + return PREMIUM_FEATURE_STICKERS; + case "advanced_chat_management": + return PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT; + case "profile_badge": + return PREMIUM_FEATURE_PROFILE_BADGE; + case "animated_userpics": + return PREMIUM_FEATURE_ANIMATED_AVATARS; + case "app_icons": + return PREMIUM_FEATURE_APPLICATION_ICONS; + } + return -1; + } + + public static String featureTypeToServerString(int type) { + switch (type) { + case PREMIUM_FEATURE_LIMITS: + return "double_limits"; + case PREMIUM_FEATURE_UPLOAD_LIMIT: + return "more_upload"; + case PREMIUM_FEATURE_DOWNLOAD_SPEED: + return "faster_download"; + case PREMIUM_FEATURE_VOICE_TO_TEXT: + return "voice_to_text"; + case PREMIUM_FEATURE_ADS: + return "no_ads"; + case PREMIUM_FEATURE_REACTIONS: + return "unique_reactions"; + case PREMIUM_FEATURE_STICKERS: + return "premium_stickers"; + case PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT: + return "advanced_chat_management"; + case PREMIUM_FEATURE_PROFILE_BADGE: + return "profile_badge"; + case PREMIUM_FEATURE_ANIMATED_AVATARS: + return "animated_userpics"; + case PREMIUM_FEATURE_APPLICATION_ICONS: + return "app_icons"; + } + return null; + } + + public PremiumPreviewFragment setForcePremium() { + this.forcePremium = true; + return this; + } + + public PremiumPreviewFragment(String source) { + super(); + this.source = source; + } + + @SuppressLint("NotifyDataSetChanged") + @Override + public View createView(Context context) { + hasOwnBackground = true; + shader = new LinearGradient(0, 0, 0, 100, new int[]{0xffF38926, 0xffDB5C9D, 0xffA767FF, 0xff55A5FF}, new float[]{0f, 0.32f, 0.5f, 1f}, Shader.TileMode.CLAMP); + shader.setLocalMatrix(matrix); + gradientPaint.setShader(shader); + + dummyCell = new PremiumFeatureCell(context); + + premiumFeatures.clear(); + fillPremiumFeaturesList(premiumFeatures, currentAccount); + + Rect padding = new Rect(); + shadowDrawable = context.getResources().getDrawable(R.drawable.sheet_shadow_round).mutate(); + shadowDrawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_dialogBackground), PorterDuff.Mode.MULTIPLY)); + shadowDrawable.getPadding(padding); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + statusBarHeight = AndroidUtilities.statusBarHeight; + } + + contentView = new FrameLayout(context) { + + int lastSize; + boolean iconInterceptedTouch; + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + float iconX = backgroundView.getX() + backgroundView.imageView.getX(); + float iconY = backgroundView.getY() + backgroundView.imageView.getY(); + AndroidUtilities.rectTmp.set(iconX, iconY, iconX + backgroundView.imageView.getMeasuredWidth(), iconY + backgroundView.imageView.getMeasuredHeight()); + if (AndroidUtilities.rectTmp.contains(ev.getX(), ev.getY()) || iconInterceptedTouch) { + ev.offsetLocation(-iconX, -iconY); + if (ev.getAction() == MotionEvent.ACTION_DOWN || ev.getAction() == MotionEvent.ACTION_MOVE) { + iconInterceptedTouch = true; + } else if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) { + iconInterceptedTouch = false; + } + backgroundView.imageView.dispatchTouchEvent(ev); + return true; + } + return super.dispatchTouchEvent(ev); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (MeasureSpec.getSize(widthMeasureSpec) > MeasureSpec.getSize(heightMeasureSpec)) { + isLandscapeMode = true; + } else { + isLandscapeMode = false; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + statusBarHeight = AndroidUtilities.statusBarHeight; + } + backgroundView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); + particlesView.getLayoutParams().height = backgroundView.getMeasuredHeight(); + int buttonHeight = (getUserConfig().isPremium() || forcePremium ? 0 : AndroidUtilities.dp(68)); + layoutManager.setAdditionalHeight(buttonHeight + statusBarHeight - AndroidUtilities.dp(16)); + layoutManager.setMinimumLastViewHeight(buttonHeight); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int size = getMeasuredHeight() + getMeasuredWidth() << 16; + if (lastSize != size) { + updateBackgroundImage(); + } + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + backgroundView.imageView.mRenderer.gradientScaleX = backgroundView.imageView.getMeasuredWidth() / (float) getMeasuredWidth(); + backgroundView.imageView.mRenderer.gradientScaleY = backgroundView.imageView.getMeasuredHeight() / (float) getMeasuredHeight(); + backgroundView.imageView.mRenderer.gradientStartX = (backgroundView.getX() + backgroundView.imageView.getX()) / getMeasuredWidth(); + backgroundView.imageView.mRenderer.gradientStartY = (backgroundView.getY() + backgroundView.imageView.getY()) / getMeasuredHeight(); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + measureGradient(w, h); + } + + @Override + protected void dispatchDraw(Canvas canvas) { + if (!isDialogVisible) { + if (inc) { + progress += 16f / 1000f; + if (progress > 3) { + inc = false; + } + } else { + progress -= 16f / 1000f; + if (progress < 1) { + inc = true; + } + } + } + View firstView = null; + if (listView.getLayoutManager() != null) { + firstView = listView.getLayoutManager().findViewByPosition(0); + } + + currentYOffset = firstView == null ? 0 : firstView.getBottom(); + int h = actionBar.getBottom() + AndroidUtilities.dp(16); + totalProgress = (1f - (currentYOffset - h) / (float) (firstViewHeight - h)); + totalProgress = Utilities.clamp(totalProgress, 1f, 0f); + + int maxTop = actionBar.getBottom() + AndroidUtilities.dp(16); + if (currentYOffset < maxTop) { + currentYOffset = maxTop; + } + + float oldProgress = progressToFull; + progressToFull = 0; + if (currentYOffset < maxTop + AndroidUtilities.dp(30)) { + progressToFull = (maxTop + AndroidUtilities.dp(30) - currentYOffset) / (float) AndroidUtilities.dp(30); + } + + if (isLandscapeMode) { + progressToFull = 1f; + totalProgress = 1f; + } + if (oldProgress != progressToFull) { + listView.invalidate(); + } + float fromTranslation = currentYOffset - (actionBar.getMeasuredHeight() + backgroundView.getMeasuredHeight() - statusBarHeight) + AndroidUtilities.dp(16); + float toTranslation = ((actionBar.getMeasuredHeight() - statusBarHeight - backgroundView.titleView.getMeasuredHeight()) / 2f) + statusBarHeight - backgroundView.getTop() - backgroundView.titleView.getTop(); + + float translationsY = Math.max(toTranslation, fromTranslation); + float iconTranslationsY = -translationsY / 4f + AndroidUtilities.dp(16); + backgroundView.setTranslationY(translationsY); + + backgroundView.imageView.setTranslationY(iconTranslationsY + AndroidUtilities.dp(16)); + float s = 0.6f + (1f - totalProgress) * 0.4f; + float alpha = 1f - (totalProgress > 0.5f ? (totalProgress - 0.5f) / 0.5f : 0f); + backgroundView.imageView.setScaleX(s); + backgroundView.imageView.setScaleY(s); + backgroundView.imageView.setAlpha(alpha); + backgroundView.subtitleView.setAlpha(alpha); + particlesView.setAlpha(1f - totalProgress); + + particlesView.setTranslationY(-(particlesView.getMeasuredHeight() - backgroundView.imageView.getMeasuredWidth()) / 2f + backgroundView.getY() + backgroundView.imageView.getY()); + float toX = AndroidUtilities.dp(72) - backgroundView.titleView.getLeft(); + float f = totalProgress > 0.3f ? (totalProgress - 0.3f) / 0.7f : 0f; + backgroundView.titleView.setTranslationX(toX * (1f - CubicBezierInterpolator.EASE_OUT_QUINT.getInterpolation(1 - f))); + + backgroundView.imageView.mRenderer.gradientStartX = (backgroundView.getX() + backgroundView.imageView.getX() + getMeasuredWidth() * 0.1f * progress) / getMeasuredWidth(); + backgroundView.imageView.mRenderer.gradientStartY = (backgroundView.getY() + backgroundView.imageView.getY()) / getMeasuredHeight(); + + if (!isDialogVisible) { + invalidate(); + } + gradientTools.gradientMatrix(0, 0, getMeasuredWidth(), getMeasuredHeight(), -getMeasuredWidth() * 0.1f * progress, 0); + canvas.drawRect(0, 0, getMeasuredWidth(), currentYOffset + AndroidUtilities.dp(20), gradientTools.paint); + + super.dispatchDraw(canvas); + } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + if (child == listView) { + canvas.save(); + canvas.clipRect(0, actionBar.getBottom(), getMeasuredWidth(), getMeasuredHeight()); + super.drawChild(canvas, child, drawingTime); + canvas.restore(); + return true; + } + return super.drawChild(canvas, child, drawingTime); + } + }; + contentView.setFitsSystemWindows(true); + + listView = new RecyclerListView(context) { + @Override + public void onDraw(Canvas canvas) { + shadowDrawable.setBounds((int) (-padding.left - AndroidUtilities.dp(16) * progressToFull), currentYOffset - padding.top - AndroidUtilities.dp(16), (int) (getMeasuredWidth() + padding.right + AndroidUtilities.dp(16) * progressToFull), getMeasuredHeight()); + shadowDrawable.draw(canvas); + super.onDraw(canvas); + } + }; + listView.setLayoutManager(layoutManager = new FillLastLinearLayoutManager(context, AndroidUtilities.dp(68) + statusBarHeight - AndroidUtilities.dp(16), listView)); + layoutManager.setFixedLastItemHeight(); + + listView.setAdapter(new Adapter()); + listView.addOnScrollListener(new RecyclerView.OnScrollListener() { + + @Override + public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + if (newState == RecyclerView.SCROLL_STATE_IDLE) { + int maxTop = actionBar.getBottom() + AndroidUtilities.dp(16); + if (totalProgress > 0.5f) { + listView.smoothScrollBy(0, currentYOffset - maxTop); + } else { + View firstView = null; + if (listView.getLayoutManager() != null) { + firstView = listView.getLayoutManager().findViewByPosition(0); + } + if (firstView != null && firstView.getTop() < 0) { + listView.smoothScrollBy(0, firstView.getTop()); + } + } + } + checkButtonDivider(); + } + + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + contentView.invalidate(); + checkButtonDivider(); + } + }); + + backgroundView = new BackgroundView(context) { + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + return true; + } + }; + particlesView = new StarParticlesView(context); + backgroundView.imageView.setStarParticlesView(particlesView); + contentView.addView(particlesView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + contentView.addView(backgroundView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + + listView.setOnItemClickListener((view, position) -> { + if (view instanceof PremiumFeatureCell) { + PremiumFeatureCell cell = (PremiumFeatureCell) view; + PremiumPreviewFragment.sentShowFeaturePreview(currentAccount, cell.data.type); + if (cell.data.type == PREMIUM_FEATURE_LIMITS) { + DoubledLimitsBottomSheet bottomSheet = new DoubledLimitsBottomSheet(PremiumPreviewFragment.this, currentAccount); + bottomSheet.setParentFragment(PremiumPreviewFragment.this); + showDialog(bottomSheet); + } else { + showDialog(new PremiumFeatureBottomSheet(PremiumPreviewFragment.this, cell.data.type, false)); + } + } + }); + contentView.addView(listView); + + premiumButtonView = new PremiumButtonView(context, false); + premiumButtonView.setButton(getPremiumButtonText(currentAccount), v -> { + buyPremium(this); + }); + buttonContainer = new FrameLayout(context); + + buttonDivider = new View(context); + buttonDivider.setBackgroundColor(Theme.getColor(Theme.key_divider)); + buttonContainer.addView(buttonDivider, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 1)); + buttonDivider.getLayoutParams().height = 1; + AndroidUtilities.updateViewVisibilityAnimated(buttonDivider, true, 1f, false); + + buttonContainer.addView(premiumButtonView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.CENTER_VERTICAL, 16, 0, 16, 0)); + buttonContainer.setBackgroundColor(getThemedColor(Theme.key_dialogBackground)); + contentView.addView(buttonContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 68, Gravity.BOTTOM)); + + fragmentView = contentView; + actionBar.setBackground(null); + actionBar.setCastShadows(false); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { + @Override + public void onItemClick(int id) { + if (id == -1) { + finishFragment(); + } + } + }); + actionBar.setForceSkipTouches(true); + + updateColors(); + updateRows(); + + backgroundView.imageView.startEnterAnimation(-180, 200); + if (forcePremium) { + AndroidUtilities.runOnUIThread(() -> getMediaDataController().loadPremiumPromo(false), 400); + } + MediaDataController.getInstance(currentAccount).preloadPremiumPreviewStickers(); + + sentShowScreenStat(source); + return fragmentView; + } + + public static void buyPremium(BaseFragment fragment) { + buyPremium(fragment, "settings"); + } + + public static void fillPremiumFeaturesList(ArrayList premiumFeatures, int currentAccount) { + MessagesController messagesController = MessagesController.getInstance(currentAccount); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_LIMITS, R.drawable.msg_premium_limits, LocaleController.getString("PremiumPreviewLimits", R.string.PremiumPreviewLimits), LocaleController.formatString("PremiumPreviewLimitsDescription", R.string.PremiumPreviewLimitsDescription, + messagesController.channelsLimitPremium, messagesController.dialogFiltersLimitPremium, messagesController.dialogFiltersPinnedLimitPremium, messagesController.publicLinksLimitPremium, 4))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_UPLOAD_LIMIT, R.drawable.msg_premium_uploads, LocaleController.getString("PremiumPreviewUploads", R.string.PremiumPreviewUploads), LocaleController.getString("PremiumPreviewUploadsDescription", R.string.PremiumPreviewUploadsDescription))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_DOWNLOAD_SPEED, R.drawable.msg_premium_speed, LocaleController.getString("PremiumPreviewDownloadSpeed", R.string.PremiumPreviewDownloadSpeed), LocaleController.getString("PremiumPreviewDownloadSpeedDescription", R.string.PremiumPreviewDownloadSpeedDescription))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_VOICE_TO_TEXT, R.drawable.msg_premium_voice, LocaleController.getString("PremiumPreviewVoiceToText", R.string.PremiumPreviewVoiceToText), LocaleController.getString("PremiumPreviewVoiceToTextDescription", R.string.PremiumPreviewVoiceToTextDescription))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_ADS, R.drawable.msg_premium_ads, LocaleController.getString("PremiumPreviewNoAds", R.string.PremiumPreviewNoAds), LocaleController.getString("PremiumPreviewNoAdsDescription", R.string.PremiumPreviewNoAdsDescription))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_REACTIONS, R.drawable.msg_premium_reactions, LocaleController.getString("PremiumPreviewReactions", R.string.PremiumPreviewReactions), LocaleController.getString("PremiumPreviewReactionsDescription", R.string.PremiumPreviewReactionsDescription))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_STICKERS, R.drawable.msg_premium_stickers, LocaleController.getString("PremiumPreviewStickers", R.string.PremiumPreviewStickers), LocaleController.getString("PremiumPreviewStickersDescription", R.string.PremiumPreviewStickersDescription))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT, R.drawable.msg_premium_tools, LocaleController.getString("PremiumPreviewAdvancedChatManagement", R.string.PremiumPreviewAdvancedChatManagement), LocaleController.getString("PremiumPreviewAdvancedChatManagementDescription", R.string.PremiumPreviewAdvancedChatManagementDescription))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_PROFILE_BADGE, R.drawable.msg_premium_badge, LocaleController.getString("PremiumPreviewProfileBadge", R.string.PremiumPreviewProfileBadge), LocaleController.getString("PremiumPreviewProfileBadgeDescription", R.string.PremiumPreviewProfileBadgeDescription))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_ANIMATED_AVATARS, R.drawable.msg_premium_avatar, LocaleController.getString("PremiumPreviewAnimatedProfiles", R.string.PremiumPreviewAnimatedProfiles), LocaleController.getString("PremiumPreviewAnimatedProfilesDescription", R.string.PremiumPreviewAnimatedProfilesDescription))); + premiumFeatures.add(new PremiumFeatureData(PREMIUM_FEATURE_APPLICATION_ICONS, R.drawable.msg_premium_icons, LocaleController.getString("PremiumPreviewAppIcon", R.string.PremiumPreviewAppIcon), LocaleController.getString("PremiumPreviewAppIconDescription", R.string.PremiumPreviewAppIconDescription))); + + if (messagesController.premiumFeaturesTypesToPosition.size() > 0) { + for (int i = 0; i < premiumFeatures.size(); i++) { + if (messagesController.premiumFeaturesTypesToPosition.get(premiumFeatures.get(i).type, -1) == -1) { + premiumFeatures.remove(i); + i--; + } + } + } + + Collections.sort(premiumFeatures, (o1, o2) -> { + int type1 = messagesController.premiumFeaturesTypesToPosition.get(o1.type, Integer.MAX_VALUE); + int type2 = messagesController.premiumFeaturesTypesToPosition.get(o2.type, Integer.MAX_VALUE); + return type1 - type2; + }); + } + + private void updateBackgroundImage() { + if (contentView.getMeasuredWidth() == 0 || contentView.getMeasuredHeight() == 0) { + return; + } + gradientTools.gradientMatrix(0, 0, contentView.getMeasuredWidth(), contentView.getMeasuredHeight(), 0, 0); + gradientCanvas.save(); + gradientCanvas.scale(100f / contentView.getMeasuredWidth(), 100f / contentView.getMeasuredHeight()); + gradientCanvas.drawRect(0, 0, contentView.getMeasuredWidth(), contentView.getMeasuredHeight(), gradientTools.paint); + gradientCanvas.restore(); + backgroundView.imageView.setBackgroundBitmap(gradientTextureBitmap); + } + + private void checkButtonDivider() { + AndroidUtilities.updateViewVisibilityAnimated(buttonDivider, listView.canScrollVertically(1), 1f, true); + } + + public static void buyPremium(BaseFragment fragment, String source) { + if (BuildVars.IS_BILLING_UNAVAILABLE) { + fragment.showDialog(new PremiumNotAvailableBottomSheet(fragment)); + return; + } + + PremiumPreviewFragment.sentPremiumButtonClick(); + + if (BuildVars.useInvoiceBilling()) { + Activity activity = fragment.getParentActivity(); + if (activity instanceof LaunchActivity) { + LaunchActivity launchActivity = (LaunchActivity) activity; + if (!TextUtils.isEmpty(fragment.getMessagesController().premiumBotUsername)) { + launchActivity.setNavigateToPremiumBot(true); + launchActivity.onNewIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("https://t.me/" + fragment.getMessagesController().premiumBotUsername + "?start=" + source))); + } else if (!TextUtils.isEmpty(fragment.getMessagesController().premiumInvoiceSlug)) { + launchActivity.onNewIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("https://t.me/$" + fragment.getMessagesController().premiumInvoiceSlug))); + } + } + return; + } + + if (BillingController.PREMIUM_PRODUCT_DETAILS == null) { + return; + } + + List offerDetails = BillingController.PREMIUM_PRODUCT_DETAILS.getSubscriptionOfferDetails(); + if (offerDetails.isEmpty()) { + return; + } + + BillingController.getInstance().addResultListener(BillingController.PREMIUM_PRODUCT_ID, billingResult -> { + if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) { + if (fragment instanceof PremiumPreviewFragment) { + PremiumPreviewFragment premiumPreviewFragment = (PremiumPreviewFragment) fragment; + premiumPreviewFragment.setForcePremium(); + premiumPreviewFragment.getMediaDataController().loadPremiumPromo(false); + + premiumPreviewFragment.listView.smoothScrollToPosition(0); + } else { + fragment.presentFragment(new PremiumPreviewFragment(null).setForcePremium()); + } + if (fragment.getParentActivity() instanceof LaunchActivity) { + try { + fragment.getFragmentView().performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); + } catch (Exception ignored) {} + ((LaunchActivity) fragment.getParentActivity()).getFireworksOverlay().start(); + } + } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) { + sentPremiumBuyCanceled(); + } + }); + + TLRPC.TL_payments_canPurchasePremium req = new TLRPC.TL_payments_canPurchasePremium(); + fragment.getConnectionsManager().sendRequest(req, (response, error) -> { + AndroidUtilities.runOnUIThread(() -> { + if (response instanceof TLRPC.TL_boolTrue) { + BillingController.getInstance().launchBillingFlow(fragment.getParentActivity(), Collections.singletonList( + BillingFlowParams.ProductDetailsParams.newBuilder() + .setProductDetails(BillingController.PREMIUM_PRODUCT_DETAILS) + .setOfferToken(offerDetails.get(0).getOfferToken()) + .build() + )); + } else { + AlertsCreator.processError(fragment.getCurrentAccount(), error, fragment, req); + } + }); + }); + } + + public static String getPremiumButtonText(int currentAccount) { + if (BuildVars.IS_BILLING_UNAVAILABLE) { + return LocaleController.getString(R.string.SubscribeToPremiumNotAvailable); + } + + if (BuildVars.useInvoiceBilling()) { + TLRPC.TL_help_premiumPromo premiumPromo = MediaDataController.getInstance(currentAccount).getPremiumPromo(); + if (premiumPromo != null) { + Currency currency = Currency.getInstance(premiumPromo.currency); + if (currency != null) { + NumberFormat numberFormat = NumberFormat.getCurrencyInstance(); + numberFormat.setCurrency(currency); + + return LocaleController.formatString(R.string.SubscribeToPremium, numberFormat.format(premiumPromo.monthly_amount / 100f)); + } + } + + return LocaleController.getString(R.string.SubscribeToPremiumNoPrice); + } + + String price = null; + if (BillingController.PREMIUM_PRODUCT_DETAILS != null) { + List details = BillingController.PREMIUM_PRODUCT_DETAILS.getSubscriptionOfferDetails(); + if (!details.isEmpty()) { + ProductDetails.SubscriptionOfferDetails offerDetails = details.get(0); + for (ProductDetails.PricingPhase phase : offerDetails.getPricingPhases().getPricingPhaseList()) { + if (phase.getBillingPeriod().equals("P1M")) { // Once per month + price = phase.getFormattedPrice(); + break; + } + } + } + } + + if (price == null) { + return LocaleController.getString(R.string.Loading); + } + + return LocaleController.formatString(R.string.SubscribeToPremium, price); + } + + private void measureGradient(int w, int h) { + int yOffset = 0; + for (int i = 0; i < premiumFeatures.size(); i++) { + dummyCell.setData(premiumFeatures.get(i), false); + dummyCell.measure(View.MeasureSpec.makeMeasureSpec(w, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(h, View.MeasureSpec.AT_MOST)); + premiumFeatures.get(i).yOffset = yOffset; + yOffset += dummyCell.getMeasuredHeight(); + } + + totalGradientHeight = yOffset; + } + + private void updateRows() { + rowCount = 0; + sectionRow = -1; + statusRow = -1; + privacyRow = -1; + + paddingRow = rowCount++; + featuresStartRow = rowCount; + rowCount += premiumFeatures.size(); + featuresEndRow = rowCount; + statusRow = rowCount++; + lastPaddingRow = rowCount++; + if (getUserConfig().isPremium() || forcePremium) { + buttonContainer.setVisibility(View.GONE); + } else { + buttonContainer.setVisibility(View.VISIBLE); + } + + int buttonHeight = buttonContainer.getVisibility() == View.VISIBLE ? AndroidUtilities.dp(64) : 0; + layoutManager.setAdditionalHeight(buttonHeight + statusBarHeight - AndroidUtilities.dp(16)); + layoutManager.setMinimumLastViewHeight(buttonHeight); + } + + @Override + public boolean isSwipeBackEnabled(MotionEvent event) { + return true; + } + + @Override + public boolean onFragmentCreate() { + if (getMessagesController().premiumLocked) { + return false; + } + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.billingProductDetailsUpdated); + NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + getNotificationCenter().addObserver(this, NotificationCenter.premiumPromoUpdated); + + return super.onFragmentCreate(); + } + + @Override + public void onFragmentDestroy() { + super.onFragmentDestroy(); + + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.billingProductDetailsUpdated); + NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + getNotificationCenter().removeObserver(this, NotificationCenter.premiumPromoUpdated); + } + + @SuppressLint("NotifyDataSetChanged") + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.billingProductDetailsUpdated || id == NotificationCenter.premiumPromoUpdated) { + premiumButtonView.buttonTextView.setText(getPremiumButtonText(currentAccount)); + } + if (id == NotificationCenter.currentUserPremiumStatusChanged || id == NotificationCenter.premiumPromoUpdated) { + backgroundView.updateText(); + updateRows(); + listView.getAdapter().notifyDataSetChanged(); + } + } + + private class Adapter extends RecyclerListView.SelectionAdapter { + private final static int TYPE_PADDING = 0, + TYPE_FEATURE = 1, + TYPE_SHADOW_SECTION = 2, + TYPE_BUTTON = 3, + TYPE_HELP_US = 4, + TYPE_STATUS_TEXT = 5, + TYPE_BOTTOM_PADDING = 6; + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view; + Context context = parent.getContext(); + switch (viewType) { + default: + case TYPE_PADDING: + view = new View(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (isLandscapeMode) { + firstViewHeight = statusBarHeight + actionBar.getMeasuredHeight() - AndroidUtilities.dp(16); + } else { + int h = AndroidUtilities.dp(300) + statusBarHeight; + if (backgroundView.getMeasuredHeight() + AndroidUtilities.dp(24) > h) { + h = backgroundView.getMeasuredHeight() + AndroidUtilities.dp(24); + } + firstViewHeight = h; + } + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(firstViewHeight, MeasureSpec.EXACTLY)); + } + }; + break; + case TYPE_STATUS_TEXT: + view = new TextInfoPrivacyCell(context); + break; + case TYPE_FEATURE: + view = new PremiumFeatureCell(context) { + @Override + protected void dispatchDraw(Canvas canvas) { + AndroidUtilities.rectTmp.set(imageView.getLeft(), imageView.getTop(), imageView.getRight(), imageView.getBottom()); + matrix.reset(); + matrix.postScale(1f, totalGradientHeight / 100f, 0, 0); + matrix.postTranslate(0, -data.yOffset); + shader.setLocalMatrix(matrix); + canvas.drawRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), gradientPaint); + super.dispatchDraw(canvas); + } + }; + break; + case TYPE_SHADOW_SECTION: + ShadowSectionCell shadowSectionCell = new ShadowSectionCell(context, 12, Theme.getColor(Theme.key_windowBackgroundGray)); + Drawable shadowDrawable = Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.getColor(Theme.key_windowBackgroundGrayShadow)); + Drawable background = new ColorDrawable(Theme.getColor(Theme.key_windowBackgroundGray)); + CombinedDrawable combinedDrawable = new CombinedDrawable(background, shadowDrawable, 0, 0); + combinedDrawable.setFullsize(true); + shadowSectionCell.setBackgroundDrawable(combinedDrawable); + view = shadowSectionCell; + break; + case TYPE_HELP_US: + view = new AboutPremiumView(context); + break; + case TYPE_BOTTOM_PADDING: + view = new View(context); + view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); + break; + } + view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + return new RecyclerListView.Holder(view); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (position >= featuresStartRow && position < featuresEndRow) { + ((PremiumFeatureCell) holder.itemView).setData(premiumFeatures.get(position - featuresStartRow), position != featuresEndRow - 1); + } else if (position == statusRow || position == privacyRow) { + TextInfoPrivacyCell privacyCell = (TextInfoPrivacyCell) holder.itemView; + + Drawable shadowDrawable = Theme.getThemedDrawable(privacyCell.getContext(), R.drawable.greydivider, Theme.getColor(Theme.key_windowBackgroundGrayShadow)); + Drawable background = new ColorDrawable(Theme.getColor(Theme.key_windowBackgroundGray)); + CombinedDrawable combinedDrawable = new CombinedDrawable(background, shadowDrawable, 0, 0); + combinedDrawable.setFullsize(true); + privacyCell.setBackground(combinedDrawable); + + if (position == statusRow) { + TLRPC.TL_help_premiumPromo premiumPromo = getMediaDataController().getPremiumPromo(); + if (premiumPromo == null) { + return; + } + + SpannableString spannableString = new SpannableString(premiumPromo.status_text); + MediaDataController.addTextStyleRuns(premiumPromo.status_entities, premiumPromo.status_text, spannableString); + byte t = 0; + for (TextStyleSpan span : spannableString.getSpans(0, spannableString.length(), TextStyleSpan.class)) { + TextStyleSpan.TextStyleRun run = span.getTextStyleRun(); + boolean setRun = false; + String url = run.urlEntity != null ? TextUtils.substring(premiumPromo.status_text, run.urlEntity.offset, run.urlEntity.offset + run.urlEntity.length) : null; + if (run.urlEntity instanceof TLRPC.TL_messageEntityBotCommand) { + spannableString.setSpan(new URLSpanBotCommand(url, t, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (run.urlEntity instanceof TLRPC.TL_messageEntityHashtag || run.urlEntity instanceof TLRPC.TL_messageEntityMention || run.urlEntity instanceof TLRPC.TL_messageEntityCashtag) { + spannableString.setSpan(new URLSpanNoUnderline(url, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (run.urlEntity instanceof TLRPC.TL_messageEntityEmail) { + spannableString.setSpan(new URLSpanReplacement("mailto:" + url, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (run.urlEntity instanceof TLRPC.TL_messageEntityUrl) { + String lowerCase = url.toLowerCase(); + if (!lowerCase.contains("://")) { + spannableString.setSpan(new URLSpanBrowser("http://" + url, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else { + spannableString.setSpan(new URLSpanBrowser(url, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + } else if (run.urlEntity instanceof TLRPC.TL_messageEntityBankCard) { + spannableString.setSpan(new URLSpanNoUnderline("card:" + url, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (run.urlEntity instanceof TLRPC.TL_messageEntityPhone) { + String tel = PhoneFormat.stripExceptNumbers(url); + if (url.startsWith("+")) { + tel = "+" + tel; + } + spannableString.setSpan(new URLSpanBrowser("tel:" + tel, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (run.urlEntity instanceof TLRPC.TL_messageEntityTextUrl) { + URLSpanReplacement spanReplacement = new URLSpanReplacement(run.urlEntity.url, run); + spanReplacement.setNavigateToPremiumBot(true); + spannableString.setSpan(spanReplacement, run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (run.urlEntity instanceof TLRPC.TL_messageEntityMentionName) { + spannableString.setSpan(new URLSpanUserMention("" + ((TLRPC.TL_messageEntityMentionName) run.urlEntity).user_id, t, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (run.urlEntity instanceof TLRPC.TL_inputMessageEntityMentionName) { + spannableString.setSpan(new URLSpanUserMention("" + ((TLRPC.TL_inputMessageEntityMentionName) run.urlEntity).user_id.user_id, t, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if ((run.flags & TextStyleSpan.FLAG_STYLE_MONO) != 0) { + spannableString.setSpan(new URLSpanMono(spannableString, run.start, run.end, t, run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } else { + setRun = true; + spannableString.setSpan(new TextStyleSpan(run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + if (!setRun && (run.flags & TextStyleSpan.FLAG_STYLE_SPOILER) != 0) { + spannableString.setSpan(new TextStyleSpan(run), run.start, run.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + } + privacyCell.setText(spannableString); + } + } + } + + @Override + public int getItemCount() { + return rowCount; + } + + @Override + public int getItemViewType(int position) { + if (position == paddingRow) { + return TYPE_PADDING; + } else if (position >= featuresStartRow && position < featuresEndRow) { + return TYPE_FEATURE; + } else if (position == sectionRow) { + return TYPE_SHADOW_SECTION; + } else if (position == helpUsRow) { + return TYPE_HELP_US; + } else if (position == statusRow || position == privacyRow) { + return TYPE_STATUS_TEXT; + } else if (position == lastPaddingRow) { + return TYPE_BOTTOM_PADDING; + } + return TYPE_PADDING; + } + + @Override + public boolean isEnabled(RecyclerView.ViewHolder holder) { + return holder.getItemViewType() == TYPE_FEATURE; + } + } + + public static class PremiumFeatureData { + public final int type; + public final int icon; + public final String title; + public final String description; + public int yOffset; + + public PremiumFeatureData(int type, int icon, String title, String description) { + this.type = type; + this.icon = icon; + this.title = title; + this.description = description; + } + } + + FrameLayout settingsView; + + private class BackgroundView extends LinearLayout { + + TextView titleView; + private final TextView subtitleView; + private final GLIconTextureView imageView; + + public BackgroundView(Context context) { + super(context); + setOrientation(VERTICAL); + imageView = new GLIconTextureView(context, GLIconRenderer.FRAGMENT_STYLE) { + @Override + public void onLongPress() { + super.onLongPress(); + if (settingsView != null && !BuildVars.DEBUG_PRIVATE_VERSION) { + return; + } + + settingsView = new FrameLayout(context); + ScrollView scrollView = new ScrollView(context); + + LinearLayout linearLayout = new GLIconSettingsView(context, imageView.mRenderer); + scrollView.addView(linearLayout); + settingsView.addView(scrollView); + settingsView.setBackgroundColor(Theme.getColor(Theme.key_dialogBackground)); + contentView.addView(settingsView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.BOTTOM)); + ((MarginLayoutParams) settingsView.getLayoutParams()).topMargin = currentYOffset; + + settingsView.setTranslationY(AndroidUtilities.dp(1000)); + settingsView.animate().translationY(1).setDuration(300); + } + }; + addView(imageView, LayoutHelper.createLinear(190, 190, Gravity.CENTER_HORIZONTAL)); + + titleView = new TextView(context); + titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 22); + titleView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + titleView.setGravity(Gravity.CENTER_HORIZONTAL); + addView(titleView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, Gravity.CENTER_HORIZONTAL, 16, 20, 16, 0)); + + subtitleView = new TextView(context); + subtitleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + subtitleView.setLineSpacing(AndroidUtilities.dp(2), 1f); + subtitleView.setGravity(Gravity.CENTER_HORIZONTAL); + addView(subtitleView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 16, 7, 16, 0)); + + updateText(); + } + + public void updateText() { + titleView.setText(LocaleController.getString(forcePremium ? R.string.TelegramPremiumSubscribedTitle : R.string.TelegramPremium)); + subtitleView.setText(AndroidUtilities.replaceTags(LocaleController.getString(getUserConfig().isPremium() || forcePremium ? R.string.TelegramPremiumSubscribedSubtitle : R.string.TelegramPremiumSubtitle))); + } + } + + @Override + public boolean isLightStatusBar() { + return false; + } + + @Override + public void onResume() { + super.onResume(); + backgroundView.imageView.setPaused(false); + backgroundView.imageView.setDialogVisible(false); + particlesView.setPaused(false); + } + + @Override + public void onPause() { + super.onPause(); + backgroundView.imageView.setDialogVisible(true); + particlesView.setPaused(true); + } + + @Override + public boolean canBeginSlide() { + return !backgroundView.imageView.touched; + } + + @Override + public ArrayList getThemeDescriptions() { + return SimpleThemeDescription.createThemeDescriptions(this::updateColors, + Theme.key_premiumGradient1, Theme.key_premiumGradient2, Theme.key_premiumGradient3, Theme.key_premiumGradient4, + Theme.key_premiumGradientBackground1, Theme.key_premiumGradientBackground2, Theme.key_premiumGradientBackground3, Theme.key_premiumGradientBackground4, + Theme.key_premiumGradientBackgroundOverlay, Theme.key_premiumStartGradient1, Theme.key_premiumStartGradient2, Theme.key_premiumStartSmallStarsColor, Theme.key_premiumStartSmallStarsColor2 + ); + } + + private void updateColors() { + if (backgroundView == null || actionBar == null) { + return; + } + actionBar.setItemsColor(Theme.getColor(Theme.key_premiumGradientBackgroundOverlay), false); + actionBar.setItemsBackgroundColor(ColorUtils.setAlphaComponent(Theme.getColor(Theme.key_premiumGradientBackgroundOverlay), 60), false); + backgroundView.titleView.setTextColor(Theme.getColor(Theme.key_premiumGradientBackgroundOverlay)); + backgroundView.subtitleView.setTextColor(Theme.getColor(Theme.key_premiumGradientBackgroundOverlay)); + particlesView.drawable.updateColors(); + if (backgroundView.imageView.mRenderer != null) { + backgroundView.imageView.mRenderer.updateColors(); + } + updateBackgroundImage(); + } + + @Override + public boolean onBackPressed() { + if (settingsView != null) { + closeSetting(); + return false; + } + return super.onBackPressed(); + } + + private void closeSetting() { + settingsView.animate().translationY(AndroidUtilities.dp(1000)).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + contentView.removeView(settingsView); + settingsView = null; + super.onAnimationEnd(animation); + } + }); + } + + @Override + public Dialog showDialog(Dialog dialog) { + Dialog d = super.showDialog(dialog); + updateDialogVisibility(d != null); + return d; + } + + @Override + protected void onDialogDismiss(Dialog dialog) { + super.onDialogDismiss(dialog); + updateDialogVisibility(false); + } + + private void updateDialogVisibility(boolean isVisible) { + if (isVisible != isDialogVisible) { + isDialogVisible = isVisible; + backgroundView.imageView.setDialogVisible(isVisible); + particlesView.setPaused(isVisible); + contentView.invalidate(); + } + } + + private void sentShowScreenStat() { + if (source == null) { + return; + } + sentShowScreenStat(source); + source = null; + } + + public static void sentShowScreenStat(String source) { + ConnectionsManager connectionsManager = ConnectionsManager.getInstance(UserConfig.selectedAccount); + TLRPC.TL_help_saveAppLog req = new TLRPC.TL_help_saveAppLog(); + TLRPC.TL_inputAppEvent event = new TLRPC.TL_inputAppEvent(); + event.time = connectionsManager.getCurrentTime(); + event.type = "premium.promo_screen_show"; + TLRPC.TL_jsonObject data = new TLRPC.TL_jsonObject(); + event.data = data; + + TLRPC.TL_jsonObjectValue sourceObj = new TLRPC.TL_jsonObjectValue(); + TLRPC.TL_jsonString jsonString = new TLRPC.TL_jsonString(); + jsonString.value = source; + + sourceObj.key = "source"; + sourceObj.value = jsonString; + + data.value.add(sourceObj); + req.events.add(event); + + connectionsManager.sendRequest(req, (response, error) -> { + + }); + } + + public static void sentPremiumButtonClick() { + TLRPC.TL_help_saveAppLog req = new TLRPC.TL_help_saveAppLog(); + TLRPC.TL_inputAppEvent event = new TLRPC.TL_inputAppEvent(); + event.time = ConnectionsManager.getInstance(UserConfig.selectedAccount).getCurrentTime(); + event.type = "premium.promo_screen_accept"; + event.data = new TLRPC.TL_jsonNull(); + req.events.add(event); + + ConnectionsManager.getInstance(UserConfig.selectedAccount).sendRequest(req, (response, error) -> { + + }); + } + + public static void sentPremiumBuyCanceled() { + TLRPC.TL_help_saveAppLog req = new TLRPC.TL_help_saveAppLog(); + TLRPC.TL_inputAppEvent event = new TLRPC.TL_inputAppEvent(); + event.time = ConnectionsManager.getInstance(UserConfig.selectedAccount).getCurrentTime(); + event.type = "premium.promo_screen_fail"; + event.data = new TLRPC.TL_jsonNull(); + req.events.add(event); + + ConnectionsManager.getInstance(UserConfig.selectedAccount).sendRequest(req, (response, error) -> { + + }); + } + + public static void sentShowFeaturePreview(int currentAccount, int type) { + TLRPC.TL_help_saveAppLog req = new TLRPC.TL_help_saveAppLog(); + TLRPC.TL_inputAppEvent event = new TLRPC.TL_inputAppEvent(); + event.time = ConnectionsManager.getInstance(currentAccount).getCurrentTime(); + event.type = "premium.promo_screen_tap"; + TLRPC.TL_jsonObject data = new TLRPC.TL_jsonObject(); + event.data = data; + TLRPC.TL_jsonObjectValue item = new TLRPC.TL_jsonObjectValue(); + TLRPC.TL_jsonString jsonString = new TLRPC.TL_jsonString(); + jsonString.value = PremiumPreviewFragment.featureTypeToServerString(type); + item.key = "item"; + item.value = jsonString; + data.value.add(item); + req.events.add(event); + event.data = data; + + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> { + + }); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PrivacyControlActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PrivacyControlActivity.java index 7f9b6e183..b77d8ed10 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PrivacyControlActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PrivacyControlActivity.java @@ -59,6 +59,7 @@ import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Cells.TextInfoPrivacyCell; import org.telegram.ui.Cells.TextSettingsCell; import org.telegram.ui.Components.BackgroundGradientDrawable; +import org.telegram.ui.Components.Bulletin; import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.CombinedDrawable; import org.telegram.ui.Components.HintView; @@ -337,7 +338,7 @@ public class PrivacyControlActivity extends BaseFragment implements Notification }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done)); boolean hasChanges = hasChanges(); doneButton.setAlpha(hasChanges ? 1.0f : 0.0f); doneButton.setScaleX(hasChanges ? 1.0f : 0.0f); @@ -1020,9 +1021,7 @@ public class PrivacyControlActivity extends BaseFragment implements Notification android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); android.content.ClipData clip = android.content.ClipData.newPlainText("label", phoneLinkStr); clipboard.setPrimaryClip(clip); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { - BulletinFactory.of(PrivacyControlActivity.this).createCopyBulletin(LocaleController.getString("PhoneCopied", R.string.PhoneCopied)).show(); - } + BulletinFactory.of(PrivacyControlActivity.this).createCopyLinkBulletin(LocaleController.getString("LinkCopied", R.string.LinkCopied), getResourceProvider()).show(); } }, 0, phoneLinkStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java index da6fd8467..4f39cf67a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java @@ -523,7 +523,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio passwordRow = rowCount++; sessionsRow = rowCount++; sessionsDetailRow = rowCount++; - if (getMessagesController().autoarchiveAvailable) { + if (getMessagesController().autoarchiveAvailable || getUserConfig().isPremium()) { newChatsHeaderRow = rowCount++; newChatsRow = rowCount++; newChatsSectionRow = rowCount++; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PrivacyUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PrivacyUsersActivity.java index 83bdb80e8..9f6962196 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PrivacyUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PrivacyUsersActivity.java @@ -15,14 +15,19 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.messenger.DialogObject; import org.telegram.messenger.LocaleController; -import org.telegram.tgnet.TLRPC; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.AlertDialog; +import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; import org.telegram.ui.Cells.HeaderCell; @@ -30,17 +35,12 @@ import org.telegram.ui.Cells.ManageChatTextCell; import org.telegram.ui.Cells.ManageChatUserCell; import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Cells.TextInfoPrivacyCell; -import org.telegram.ui.ActionBar.ActionBar; -import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.Components.EmptyTextProgressView; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RecyclerListView; import java.util.ArrayList; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class PrivacyUsersActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, ContactsActivity.ContactsActivityDelegate { private RecyclerListView listView; @@ -471,9 +471,9 @@ public class PrivacyUsersActivity extends BaseFragment implements NotificationCe ManageChatTextCell actionCell = (ManageChatTextCell) holder.itemView; actionCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); if (currentType == TYPE_BLOCKED) { - actionCell.setText(LocaleController.getString("BlockUser", R.string.BlockUser), null, R.drawable.actions_addmember2, false); + actionCell.setText(LocaleController.getString("BlockUser", R.string.BlockUser), null, R.drawable.msg_contact_add, false); } else { - actionCell.setText(LocaleController.getString("PrivacyAddAnException", R.string.PrivacyAddAnException), null, R.drawable.actions_addmember2, false); + actionCell.setText(LocaleController.getString("PrivacyAddAnException", R.string.PrivacyAddAnException), null, R.drawable.msg_contact_add, false); } break; case 3: diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index 6214f7946..a5ccbb109 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -8,6 +8,8 @@ package org.telegram.ui; +import static org.telegram.messenger.ContactsController.PRIVACY_RULES_TYPE_ADDED_BY_PHONE; + import android.Manifest; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -45,6 +47,7 @@ import android.text.Spanned; import android.text.TextPaint; import android.text.TextUtils; import android.text.style.ForegroundColorSpan; +import android.text.util.Linkify; import android.util.Property; import android.util.SparseIntArray; import android.util.TypedValue; @@ -60,7 +63,6 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.webkit.WebStorage; -import android.webkit.WebView; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageView; @@ -93,11 +95,13 @@ import org.telegram.messenger.ChatObject; import org.telegram.messenger.ChatThemeController; import org.telegram.messenger.ContactsController; import org.telegram.messenger.DialogObject; +import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLoader; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; +import org.telegram.messenger.LanguageDetector; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.MediaDataController; @@ -158,6 +162,9 @@ import org.telegram.ui.Components.HintView; import org.telegram.ui.Components.IdenticonDrawable; import org.telegram.ui.Components.ImageUpdater; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.PremiumGradient; +import org.telegram.ui.Components.Premium.PremiumPreviewBottomSheet; +import org.telegram.ui.Components.Premium.ProfilePremiumCell; import org.telegram.ui.Components.ProfileGalleryView; import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.RLottieImageView; @@ -168,6 +175,7 @@ import org.telegram.ui.Components.SharedMediaLayout; import org.telegram.ui.Components.SizeNotifierFrameLayout; import org.telegram.ui.Components.StickerEmptyView; import org.telegram.ui.Components.TimerDrawable; +import org.telegram.ui.Components.TranslateAlert; import org.telegram.ui.Components.UndoView; import org.telegram.ui.Components.voip.VoIPHelper; @@ -197,6 +205,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private ListAdapter listAdapter; private SearchAdapter searchAdapter; private SimpleTextView[] nameTextView = new SimpleTextView[2]; + private String nameTextViewRightDrawableContentDescription = null; private SimpleTextView[] onlineTextView = new SimpleTextView[2]; private AudioPlayerAlert.ClippingTextViewSwitcher mediaCounterTextView; private RLottieImageView writeButton; @@ -204,8 +213,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private AnimatorSet qrItemAnimation; private Drawable lockIconDrawable; private Drawable verifiedDrawable; + private Drawable premiumStarDrawable; private Drawable verifiedCheckDrawable; private CrossfadeDrawable verifiedCrossfadeDrawable; + private CrossfadeDrawable premuimCrossfadeDrawable; private ScamDrawable scamDrawable; private UndoView undoView; private OverlaysView overlaysView; @@ -243,6 +254,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. }; private Paint actionBarBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private ActionBarPopupWindow scrimPopupWindow; + private Theme.ResourcesProvider resourcesProvider; private int overlayCountVisible; @@ -333,7 +345,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private TLRPC.ChatFull chatInfo; private TLRPC.UserFull userInfo; - private String currentBio; + private CharSequence currentBio; private long selectedUser; private int onlineCount = -1; @@ -400,6 +412,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private int dataRow; private int chatRow; private int filtersRow; + private int stickersRow; private int devicesRow; private int devicesSectionRow; private int helpHeaderRow; @@ -428,6 +441,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private int reportRow; private int addToGroupButtonRow; private int addToGroupInfoRow; + private int premiumRow; + private int premiumSectionsRow; private int settingsTimerRow; private int settingsKeyRow; @@ -456,7 +471,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private boolean firstLayout = true; private boolean invalidateScroll = true; - private boolean isQrItemVisible; + private boolean isQrItemVisible = true; PinchToZoomHelper pinchToZoomHelper; @@ -689,7 +704,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. canvas.drawRect(0, 0, getMeasuredWidth(), y1, paint); } if (y1 != v) { - int color = Theme.getColor(Theme.key_windowBackgroundWhite); + int color = getThemedColor(Theme.key_windowBackgroundWhite); paint.setColor(color); AndroidUtilities.rectTmp2.set(0, y1, getMeasuredWidth(), (int) v); contentView.drawBlurRect(canvas, getY(), AndroidUtilities.rectTmp2, paint, true); @@ -743,15 +758,15 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. selectedBarPaint = new Paint(Paint.ANTI_ALIAS_FLAG); selectedBarPaint.setColor(0xffffffff); - topOverlayGradient = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[] {0x42000000, 0}); + topOverlayGradient = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{0x42000000, 0}); topOverlayGradient.setShape(GradientDrawable.RECTANGLE); - bottomOverlayGradient = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, new int[] {0x42000000, 0}); + bottomOverlayGradient = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, new int[]{0x42000000, 0}); bottomOverlayGradient.setShape(GradientDrawable.RECTANGLE); for (int i = 0; i < 2; i++) { final GradientDrawable.Orientation orientation = i == 0 ? GradientDrawable.Orientation.LEFT_RIGHT : GradientDrawable.Orientation.RIGHT_LEFT; - pressedOverlayGradient[i] = new GradientDrawable(orientation, new int[] {0x32000000, 0}); + pressedOverlayGradient[i] = new GradientDrawable(orientation, new int[]{0x32000000, 0}); pressedOverlayGradient[i].setShape(GradientDrawable.RECTANGLE); } @@ -1384,6 +1399,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. getNotificationCenter().addObserver(this, NotificationCenter.blockedUsersDidLoad); getNotificationCenter().addObserver(this, NotificationCenter.botInfoDidLoad); getNotificationCenter().addObserver(this, NotificationCenter.userInfoDidLoad); + getNotificationCenter().addObserver(this, NotificationCenter.privacyRulesUpdated); NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.reloadInterface); userBlocked = getMessagesController().blockePeers.indexOfKey(userId) >= 0; @@ -1496,6 +1512,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. getNotificationCenter().removeObserver(this, NotificationCenter.blockedUsersDidLoad); getNotificationCenter().removeObserver(this, NotificationCenter.botInfoDidLoad); getNotificationCenter().removeObserver(this, NotificationCenter.userInfoDidLoad); + getNotificationCenter().removeObserver(this, NotificationCenter.privacyRulesUpdated); NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.reloadInterface); getMessagesController().cancelLoadFullUser(userId); } else if (chatId != 0) { @@ -1516,8 +1533,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. @Override protected ActionBar createActionBar(Context context) { - ActionBar actionBar = new ActionBar(context) { - + BaseFragment lastFragment = parentLayout.getLastFragment(); + if (lastFragment instanceof ChatActivity && ((ChatActivity) lastFragment).themeDelegate != null && ((ChatActivity) lastFragment).themeDelegate.getCurrentTheme() != null) { + resourcesProvider = lastFragment.getResourceProvider(); + } + ActionBar actionBar = new ActionBar(context, resourcesProvider) { @Override public boolean onTouchEvent(MotionEvent event) { avatarContainer.getHitRect(rect); @@ -1535,9 +1555,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } } }; + actionBar.setForceSkipTouches(true); actionBar.setBackgroundColor(Color.TRANSPARENT); - actionBar.setItemsBackgroundColor(AvatarDrawable.getButtonColorForId(userId != 0 || ChatObject.isChannel(chatId, currentAccount) && !currentChat.megagroup ? 5 : chatId), false); - actionBar.setItemsColor(Theme.getColor(Theme.key_actionBarDefaultIcon), false); + actionBar.setItemsBackgroundColor(getThemedColor(Theme.key_avatar_actionBarSelectorBlue), false); + actionBar.setItemsColor(getThemedColor(Theme.key_actionBarDefaultIcon), false); actionBar.setBackButtonDrawable(new BackDrawable(false)); actionBar.setCastShadows(false); actionBar.setAddToContainer(false); @@ -1545,7 +1566,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. actionBar.setOccupyStatusBar(Build.VERSION.SDK_INT >= 21 && !AndroidUtilities.isTablet() && !inBubbleMode); ImageView backButton = actionBar.getBackButton(); backButton.setOnLongClickListener(e -> { - ActionBarPopupWindow menu = BackButtonMenu.show(this, backButton, getDialogId()); + ActionBarPopupWindow menu = BackButtonMenu.show(this, backButton, getDialogId(), resourcesProvider); if (menu != null) { menu.setOnDismissListener(() -> dimBehindView(false)); dimBehindView(backButton, 0.3f); @@ -1564,7 +1585,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. public View createView(Context context) { Theme.createProfileResources(context); Theme.createChatResources(context, false); - + BaseFragment lastFragment = parentLayout.getLastFragment(); + if (lastFragment instanceof ChatActivity && ((ChatActivity) lastFragment).themeDelegate != null && ((ChatActivity) lastFragment).themeDelegate.getCurrentTheme() != null) { + resourcesProvider = lastFragment.getResourceProvider(); + } searchTransitionOffset = 0; searchTransitionProgress = 1f; searchMode = false; @@ -1600,9 +1624,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else { getNotificationCenter().postNotificationName(NotificationCenter.peerSettingsDidLoad, userId); } - }, null); + }, resourcesProvider); } else { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder.setTitle(LocaleController.getString("BlockUser", R.string.BlockUser)); builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("AreYouSureBlockContact2", R.string.AreYouSureBlockContact2, ContactsController.formatName(user.first_name, user.last_name)))); builder.setPositiveButton(LocaleController.getString("BlockContact", R.string.BlockContact), (dialogInterface, i) -> { @@ -1616,7 +1640,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); } } } @@ -1634,7 +1658,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. Bundle args = new Bundle(); args.putLong("user_id", user.id); args.putBoolean("addContact", true); - presentFragment(new ContactAddActivity(args)); + presentFragment(new ContactAddActivity(args, resourcesProvider)); } else if (id == share_contact) { Bundle args = new Bundle(); args.putBoolean("onlySelect", true); @@ -1647,13 +1671,13 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else if (id == edit_contact) { Bundle args = new Bundle(); args.putLong("user_id", userId); - presentFragment(new ContactAddActivity(args)); + presentFragment(new ContactAddActivity(args, resourcesProvider)); } else if (id == delete_contact) { final TLRPC.User user = getMessagesController().getUser(userId); if (user == null || getParentActivity() == null) { return; } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder.setTitle(LocaleController.getString("DeleteContact", R.string.DeleteContact)); builder.setMessage(LocaleController.getString("AreYouSureDeleteContact", R.string.AreYouSureDeleteContact)); builder.setPositiveButton(LocaleController.getString("Delete", R.string.Delete), (dialogInterface, i) -> { @@ -1666,7 +1690,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); } } else if (id == leave_group) { leaveChatPressed(); @@ -1705,12 +1729,13 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } @Override - public void didChangeOwner(TLRPC.User user) {} + public void didChangeOwner(TLRPC.User user) { + } }); presentFragment(editRightsActivity); })); } else { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder.setTitle(LocaleController.getString("AddBot", R.string.AddBot)); String chatName = chat == null ? "" : chat.title; builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("AddMembersAlertNamesText", R.string.AddMembersAlertNamesText, UserObject.getUserName(user), chatName))); @@ -1818,7 +1843,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else if (id == view_discussion) { openDiscussion(); } else if (id == start_secret_chat) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder.setTitle(LocaleController.getString("AreYouSureSecretChatTitle", R.string.AreYouSureSecretChatTitle)); builder.setMessage(LocaleController.getString("AreYouSureSecretChat", R.string.AreYouSureSecretChat)); builder.setPositiveButton(LocaleController.getString("Start", R.string.Start), (dialogInterface, i) -> { @@ -1840,7 +1865,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return; } final boolean isVideo = location.imageType == FileLoader.IMAGE_TYPE_ANIMATION; - File f = FileLoader.getPathToAttach(location.location, isVideo ? "mp4" : null, true); + File f = FileLoader.getInstance(currentAccount).getPathToAttach(location.location, isVideo ? "mp4" : null, true); if (f.exists()) { MediaController.saveFile(f.toString(), getParentActivity(), 0, null, null, () -> { if (getParentActivity() == null) { @@ -1850,7 +1875,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. }); } } else if (id == edit_name) { - presentFragment(new ChangeNameActivity()); + presentFragment(new ChangeNameActivity(resourcesProvider)); } else if (id == logout) { presentFragment(new LogoutActivity()); } else if (id == set_as_main) { @@ -1905,18 +1930,18 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return; } - File f = FileLoader.getPathToAttach(PhotoViewer.getFileLocation(location), PhotoViewer.getFileLocationExt(location), true); + File f = FileLoader.getInstance(currentAccount).getPathToAttach(PhotoViewer.getFileLocation(location), PhotoViewer.getFileLocationExt(location), true); boolean isVideo = location.imageType == FileLoader.IMAGE_TYPE_ANIMATION; String thumb; if (isVideo) { ImageLocation imageLocation = avatarsViewPager.getRealImageLocation(position); - thumb = FileLoader.getPathToAttach(PhotoViewer.getFileLocation(imageLocation), PhotoViewer.getFileLocationExt(imageLocation), true).getAbsolutePath(); + thumb = FileLoader.getInstance(currentAccount).getPathToAttach(PhotoViewer.getFileLocation(imageLocation), PhotoViewer.getFileLocationExt(imageLocation), true).getAbsolutePath(); } else { thumb = null; } imageUpdater.openPhotoForEdit(f.getAbsolutePath(), thumb, 0, isVideo); } else if (id == delete_avatar) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); ImageLocation location = avatarsViewPager.getImageLocation(avatarsViewPager.getRealPosition()); if (location == null) { return; @@ -1963,15 +1988,17 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); } } else if (id == add_photo) { onWriteButtonClick(); } else if (id == qr_button) { - Bundle args = new Bundle(); - args.putLong("chat_id", chatId); - args.putLong("user_id", userId); - presentFragment(new QrActivity(args)); + if (qrItem != null && qrItem.getAlpha() > 0) { + Bundle args = new Bundle(); + args.putLong("chat_id", chatId); + args.putLong("user_id", userId); + presentFragment(new QrActivity(args)); + } } } }); @@ -2016,13 +2043,13 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int actionBarHeight = ActionBar.getCurrentActionBarHeight() + (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0); if (listView != null) { - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); + LayoutParams layoutParams = (LayoutParams) listView.getLayoutParams(); if (layoutParams.topMargin != actionBarHeight) { layoutParams.topMargin = actionBarHeight; } } if (searchListView != null) { - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) searchListView.getLayoutParams(); + LayoutParams layoutParams = (LayoutParams) searchListView.getLayoutParams(); if (layoutParams.topMargin != actionBarHeight) { layoutParams.topMargin = actionBarHeight; } @@ -2083,7 +2110,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. allowPullingDown = true; isPulledDown = true; - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors, true); if (otherItem != null) { if (!getMessagesController().isChatNoForwards(currentChat)) { otherItem.showSubItem(gallery_menu_save); @@ -2219,9 +2246,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. @Override protected void dispatchDraw(Canvas canvas) { - whitePaint.setColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + whitePaint.setColor(getThemedColor(Theme.key_windowBackgroundWhite)); if (listView.getVisibility() == VISIBLE) { - grayPaint.setColor(Theme.getColor(Theme.key_windowBackgroundGray)); + grayPaint.setColor(getThemedColor(Theme.key_windowBackgroundGray)); if (transitionAnimationInProress) { whitePaint.setAlpha((int) (255 * listView.getAlpha())); } @@ -2325,7 +2352,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. int r = Math.max(scrimView.getMeasuredWidth(), scrimView.getMeasuredHeight()) / 2; int wasAlpha = actionBarBackgroundPaint.getAlpha(); actionBarBackgroundPaint.setAlpha((int) (wasAlpha * (scrimPaint.getAlpha() / 255f) / 0.3f)); - canvas.drawCircle(r, r, r * 0.8f, actionBarBackgroundPaint); + canvas.drawCircle(r, r, r * 0.7f, actionBarBackgroundPaint); actionBarBackgroundPaint.setAlpha(wasAlpha); } scrimView.draw(canvas); @@ -2343,7 +2370,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. }; ArrayList users = chatInfo != null && chatInfo.participants != null && chatInfo.participants.participants.size() > 5 ? sortedUsers : null; - sharedMediaLayout = new SharedMediaLayout(context, did, sharedMediaPreloader, userInfo != null ? userInfo.common_chats_count : 0, sortedUsers, chatInfo, users != null, this, this, SharedMediaLayout.VIEW_TYPE_PROFILE_ACTIVITY) { + sharedMediaLayout = new SharedMediaLayout(context, did, sharedMediaPreloader, userInfo != null ? userInfo.common_chats_count : 0, sortedUsers, chatInfo, users != null, this, this, SharedMediaLayout.VIEW_TYPE_PROFILE_ACTIVITY, resourcesProvider) { @Override protected void onSelectedTabChanged() { updateSelectedMediaTabText(); @@ -2393,8 +2420,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (userId == getUserConfig().clientUserId) { qrItem = menu.addItem(qr_button, R.drawable.msg_qr_mini, getResourceProvider()); - qrItem.setVisibility(isQrNeedVisible() ? View.VISIBLE : View.GONE); - qrItem.setContentDescription(LocaleController.getString("AuthAnotherClientScan", R.string.AuthAnotherClientScan)); + qrItem.setContentDescription(LocaleController.getString("GetQRCode", R.string.GetQRCode)); + updateQrItemVisibility(false); + if (ContactsController.getInstance(currentAccount).getPrivacyRules(PRIVACY_RULES_TYPE_ADDED_BY_PHONE) == null) { + ContactsController.getInstance(currentAccount).loadPrivacySettings(); + } } if (imageUpdater != null) { searchItem = menu.addItem(search_button, R.drawable.ic_ab_search).setIsSearchField(true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() { @@ -2439,9 +2469,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } editItem = menu.addItem(edit_channel, R.drawable.group_edit_profile); editItem.setContentDescription(LocaleController.getString("Edit", R.string.Edit)); - otherItem = menu.addItem(10, R.drawable.ic_ab_other); + otherItem = menu.addItem(10, R.drawable.ic_ab_other, resourcesProvider); ttlIconView = new ImageView(context); - ttlIconView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_actionBarDefaultIcon), PorterDuff.Mode.MULTIPLY)); + ttlIconView.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_actionBarDefaultIcon), PorterDuff.Mode.MULTIPLY)); AndroidUtilities.updateViewVisibilityAnimated(ttlIconView, false, 0.8f, false); ttlIconView.setImageResource(R.drawable.msg_mini_autodelete_timer); otherItem.addView(ttlIconView, LayoutHelper.createFrame(12, 12, Gravity.CENTER_VERTICAL | Gravity.LEFT, 8, 2, 0, 0)); @@ -2548,7 +2578,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. @Override public boolean drawChild(Canvas canvas, View child, long drawingTime) { - if (getItemAnimator().isRunning() && child.getBackground() == null && child.getTranslationY() != 0) { + if (getItemAnimator().isRunning() && child.getBackground() == null && child.getTranslationY() != 0) { boolean useAlpha = listView.getChildAdapterPosition(child) == sharedMediaRow && child.getAlpha() != 1f; if (useAlpha) { whitePaint.setAlpha((int) (255 * listView.getAlpha() * child.getAlpha())); @@ -2635,7 +2665,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. final int canScroll = view.getTop() - AndroidUtilities.dp(88); if (!allowPullingDown && canScroll > dy) { dy = canScroll; - if (avatarsViewPager.hasImages() && avatarImage.getImageReceiver().hasNotThumb() && !isInLandscapeMode && !AndroidUtilities.isTablet()) { + if (avatarsViewPager.hasImages() && avatarImage.getImageReceiver().hasNotThumb() && !AndroidUtilities.isAccessibilityScreenReaderEnabled() && !isInLandscapeMode && !AndroidUtilities.isTablet()) { allowPullingDown = avatarBig == null; } } else if (allowPullingDown) { @@ -2668,7 +2698,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. args.putInt("chat_id", DialogObject.getEncryptedChatId(dialogId)); presentFragment(new IdenticonActivity(args)); } else if (position == settingsTimerRow) { - showDialog(AlertsCreator.createTTLAlert(getParentActivity(), currentEncryptedChat, null).create()); + showDialog(AlertsCreator.createTTLAlert(getParentActivity(), currentEncryptedChat, resourcesProvider).create()); } else if (position == notificationsRow) { if (LocaleController.isRTL && x <= AndroidUtilities.dp(76) || !LocaleController.isRTL && x >= view.getMeasuredWidth() - AndroidUtilities.dp(76)) { NotificationsCheckCell checkCell = (NotificationsCheckCell) view; @@ -2722,11 +2752,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return; } ChatNotificationsPopupWrapper chatNotificationsPopupWrapper = new ChatNotificationsPopupWrapper(context, currentAccount, null, true, true, new ChatNotificationsPopupWrapper.Callback() { - @Override - public void dismiss() { - - } - @Override public void toggleSound() { SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); @@ -2762,7 +2787,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (did != 0) { Bundle args = new Bundle(); args.putLong("dialog_id", did); - presentFragment(new ProfileNotificationsActivity(args)); + presentFragment(new ProfileNotificationsActivity(args, resourcesProvider)); } } @@ -2770,7 +2795,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. public void toggleMute() { boolean muted = getMessagesController().isDialogMuted(did); getNotificationsController().muteDialog(did, !muted); - BulletinFactory.createMuteBulletin(ProfileActivity.this, getMessagesController().isDialogMuted(dialogId), null).show(); + BulletinFactory.createMuteBulletin(ProfileActivity.this, !muted, null).show(); if (notificationsRow >= 0) { listAdapter.notifyItemChanged(notificationsRow); } @@ -2792,7 +2817,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else if (position == sendMessageRow) { onWriteButtonClick(); } else if (position == reportRow) { - AlertsCreator.createReportAlert(getParentActivity(), getDialogId(), 0, ProfileActivity.this, null); + AlertsCreator.createReportAlert(getParentActivity(), getDialogId(), 0, ProfileActivity.this, resourcesProvider, null); } else if (position >= membersStartRow && position < membersEndRow) { TLRPC.ChatParticipant participant; if (!sortedUsers.isEmpty()) { @@ -2804,20 +2829,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else if (position == addMemberRow) { openAddMember(); } else if (position == usernameRow) { - if (currentChat != null) { - try { - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType("text/plain"); - if (!TextUtils.isEmpty(chatInfo.about)) { - intent.putExtra(Intent.EXTRA_TEXT, currentChat.title + "\n" + chatInfo.about + "\nhttps://" + getMessagesController().linkPrefix + "/" + currentChat.username); - } else { - intent.putExtra(Intent.EXTRA_TEXT, currentChat.title + "\nhttps://" + getMessagesController().linkPrefix + "/" + currentChat.username); - } - getParentActivity().startActivityForResult(Intent.createChooser(intent, LocaleController.getString("BotShare", R.string.BotShare)), 500); - } catch (Exception e) { - FileLog.e(e); - } - } + processOnClickOrPress(position, view); } else if (position == locationRow) { if (chatInfo.location instanceof TLRPC.TL_channelLocation) { LocationActivity fragment = new LocationActivity(LocationActivity.LOCATION_TYPE_GROUP_VIEW); @@ -2861,10 +2873,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC)); } else if (position == filtersRow) { presentFragment(new FiltersSetupActivity()); + } else if (position == stickersRow) { + presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE)); } else if (position == devicesRow) { presentFragment(new SessionsActivity(0)); } else if (position == questionRow) { - showDialog(AlertsCreator.createSupportAlert(ProfileActivity.this)); + showDialog(AlertsCreator.createSupportAlert(ProfileActivity.this, resourcesProvider)); } else if (position == faqRow) { Browser.openUrl(getParentActivity(), LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl)); } else if (position == policyRow) { @@ -2879,7 +2893,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (getParentActivity() == null) { return; } - AlertDialog.Builder builder1 = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder1 = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder1.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure)); builder1.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder1.setPositiveButton(LocaleController.getString("OK", R.string.OK), (dialogInterface, i) -> { @@ -2902,6 +2916,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. presentFragment(new ActionIntroActivity(ActionIntroActivity.ACTION_TYPE_CHANGE_PHONE_NUMBER)); } else if (position == setAvatarRow) { onWriteButtonClick(); + } else if (position == premiumRow) { + presentFragment(new PremiumPreviewFragment("settings")); } else { processOnClickOrPress(position, view); } @@ -2916,7 +2932,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (position == versionRow) { pressCount++; if (pressCount >= 2 || BuildVars.DEBUG_PRIVATE_VERSION) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder.setTitle(LocaleController.getString("DebugMenu", R.string.DebugMenu)); CharSequence[] items; items = new CharSequence[]{ @@ -2939,7 +2955,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. BuildVars.DEBUG_PRIVATE_VERSION ? "Reset suggestions" : null, BuildVars.DEBUG_PRIVATE_VERSION ? LocaleController.getString(SharedConfig.forceRtmpStream ? R.string.DebugMenuDisableForceRtmpStreamFlag : R.string.DebugMenuEnableForceRtmpStreamFlag) : null, BuildVars.DEBUG_PRIVATE_VERSION ? LocaleController.getString(R.string.DebugMenuClearWebViewCache) : null, - Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT ? LocaleController.getString(R.string.DebugMenuEnableWebViewDebug) : null + Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT ? LocaleController.getString(SharedConfig.debugWebView ? R.string.DebugMenuDisableWebViewDebug : R.string.DebugMenuEnableWebViewDebug) : null }; builder.setItems(items, (dialog, which) -> { if (which == 0) { @@ -3017,10 +3033,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. ApplicationLoader.applicationContext.deleteDatabase("webviewCache.db"); WebStorage.getInstance().deleteAllData(); } else if (which == 19) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - WebView.setWebContentsDebuggingEnabled(true); - Toast.makeText(getParentActivity(), LocaleController.getString(R.string.DebugMenuWebViewDebugEnabled), Toast.LENGTH_SHORT).show(); - } + SharedConfig.toggleDebugWebView(); + Toast.makeText(getParentActivity(), LocaleController.getString(SharedConfig.debugWebView ? R.string.DebugMenuWebViewDebugEnabled : R.string.DebugMenuWebViewDebugDisabled), Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); @@ -3051,12 +3065,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. searchListView = new RecyclerListView(context); searchListView.setVerticalScrollBarEnabled(false); searchListView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)); - searchListView.setGlowColor(Theme.getColor(Theme.key_avatar_backgroundActionBarBlue)); + searchListView.setGlowColor(getThemedColor(Theme.key_avatar_backgroundActionBarBlue)); searchListView.setAdapter(searchAdapter); searchListView.setItemAnimator(null); searchListView.setVisibility(View.GONE); searchListView.setLayoutAnimation(null); - searchListView.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + searchListView.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); frameLayout.addView(searchListView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT)); searchListView.setOnItemClickListener((view, position) -> { if (position < 0) { @@ -3102,7 +3116,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (searchAdapter.isSearchWas() || searchAdapter.recentSearches.isEmpty()) { return false; } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setMessage(LocaleController.getString("ClearSearch", R.string.ClearSearch)); builder.setPositiveButton(LocaleController.getString("ClearButton", R.string.ClearButton).toUpperCase(), (dialogInterface, i) -> searchAdapter.clearRecent()); @@ -3170,7 +3184,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. }); TextView textView = new TextView(context); - textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText)); + textView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteRedText)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); textView.setGravity(Gravity.CENTER); textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -3184,7 +3198,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } topView = new TopView(context); - topView.setBackgroundColor(Theme.getColor(Theme.key_avatar_backgroundActionBarBlue)); + topView.setBackgroundColor(getThemedColor(Theme.key_avatar_backgroundActionBarBlue)); frameLayout.addView(topView); contentView.blurBehindViews.add(topView); @@ -3196,7 +3210,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (transitionOnlineText != null) { canvas.save(); canvas.translate(onlineTextView[0].getX(), onlineTextView[0].getY()); - canvas.saveLayerAlpha(0 ,0, transitionOnlineText.getMeasuredWidth(), transitionOnlineText.getMeasuredHeight(), (int) (255 * (1f - animationProgress)), Canvas.ALL_SAVE_FLAG); + canvas.saveLayerAlpha(0, 0, transitionOnlineText.getMeasuredWidth(), transitionOnlineText.getMeasuredHeight(), (int) (255 * (1f - animationProgress)), Canvas.ALL_SAVE_FLAG); transitionOnlineText.draw(canvas); canvas.restore(); canvas.restore(); @@ -3233,7 +3247,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (avatarBig != null) { return; } - if (!AndroidUtilities.isTablet() && !isInLandscapeMode && avatarImage.getImageReceiver().hasNotThumb()) { + if (!AndroidUtilities.isTablet() && !isInLandscapeMode && avatarImage.getImageReceiver().hasNotThumb() && !AndroidUtilities.isAccessibilityScreenReaderEnabled()) { openingAvatar = true; allowPullingDown = true; View child = null; @@ -3266,6 +3280,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. avatarProgressView = new RadialProgressView(context) { private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + { paint.setColor(0x55000000); } @@ -3308,15 +3323,35 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. frameLayout.addView(actionBar); + float rightMargin = (54 + ((callItemVisible && userId != 0) ? 54 : 0)); + int initialTitleWidth = LayoutHelper.WRAP_CONTENT; + if (parentLayout != null && parentLayout.getLastFragment() instanceof ChatActivity) { + ChatAvatarContainer avatarContainer = ((ChatActivity) parentLayout.getLastFragment()).getAvatarContainer(); + if (avatarContainer != null && avatarContainer.getLayoutParams() != null && avatarContainer.getTitleTextView() != null) { + rightMargin = + (((ViewGroup.MarginLayoutParams) avatarContainer.getLayoutParams()).rightMargin + + (avatarContainer.getWidth() - avatarContainer.getTitleTextView().getRight())) / AndroidUtilities.density; + initialTitleWidth = (int) (avatarContainer.getTitleTextView().getWidth() / AndroidUtilities.density); + } + } + for (int a = 0; a < nameTextView.length; a++) { if (playProfileAnimation == 0 && a == 0) { continue; } - nameTextView[a] = new SimpleTextView(context); + nameTextView[a] = new SimpleTextView(context) { + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (isFocusable() && nameTextViewRightDrawableContentDescription != null) { + info.setText(getText() + ", " + nameTextViewRightDrawableContentDescription); + } + } + }; if (a == 1) { - nameTextView[a].setTextColor(Theme.getColor(Theme.key_profile_title)); + nameTextView[a].setTextColor(getThemedColor(Theme.key_profile_title)); } else { - nameTextView[a].setTextColor(Theme.getColor(Theme.key_actionBarDefaultTitle)); + nameTextView[a].setTextColor(getThemedColor(Theme.key_actionBarDefaultTitle)); } nameTextView[a].setTextSize(18); nameTextView[a].setGravity(Gravity.LEFT); @@ -3329,27 +3364,26 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. nameTextView[a].setScrollNonFitText(true); nameTextView[a].setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); } - int rightMargin = a == 0 - ? (48 + ((callItemVisible && userId != 0) ? 48 : 0)) - : 0; - avatarContainer2.addView(nameTextView[a], LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 118, 0, rightMargin, 0)); + nameTextView[a].setFocusable(a == 0); + avatarContainer2.addView(nameTextView[a], LayoutHelper.createFrame(a == 0 ? initialTitleWidth : LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 118, 0, a == 0 ? rightMargin : 0, 0)); } for (int a = 0; a < onlineTextView.length; a++) { onlineTextView[a] = new SimpleTextView(context); - onlineTextView[a].setTextColor(Theme.getColor(Theme.key_avatar_subtitleInProfileBlue)); + onlineTextView[a].setTextColor(getThemedColor(Theme.key_avatar_subtitleInProfileBlue)); onlineTextView[a].setTextSize(14); onlineTextView[a].setGravity(Gravity.LEFT); onlineTextView[a].setAlpha(a == 0 || a == 2 ? 0.0f : 1.0f); if (a > 0) { onlineTextView[a].setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); } - avatarContainer2.addView(onlineTextView[a], LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 118, 0, a == 0 ? 48 : 8, 0)); + onlineTextView[a].setFocusable(a == 0); + avatarContainer2.addView(onlineTextView[a], LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 118, 0, a == 0 ? rightMargin : 8, 0)); } mediaCounterTextView = new AudioPlayerAlert.ClippingTextViewSwitcher(context) { @Override protected TextView createTextView() { TextView textView = new TextView(context); - textView.setTextColor(Theme.getColor(Theme.key_player_actionBarSubtitle)); + textView.setTextColor(getThemedColor(Theme.key_player_actionBarSubtitle)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); textView.setSingleLine(true); textView.setEllipsize(TextUtils.TruncateAt.END); @@ -3366,7 +3400,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. Drawable shadowDrawable = context.getResources().getDrawable(R.drawable.floating_shadow_profile).mutate(); shadowDrawable.setColorFilter(new PorterDuffColorFilter(Color.BLACK, PorterDuff.Mode.MULTIPLY)); CombinedDrawable combinedDrawable = new CombinedDrawable(shadowDrawable, - Theme.createSimpleSelectorCircleDrawable(AndroidUtilities.dp(56), Theme.getColor(Theme.key_profile_actionBackground), Theme.getColor(Theme.key_profile_actionPressedBackground)), + Theme.createSimpleSelectorCircleDrawable(AndroidUtilities.dp(56), getThemedColor(Theme.key_profile_actionBackground), getThemedColor(Theme.key_profile_actionPressedBackground)), 0, 0); combinedDrawable.setIconSize(AndroidUtilities.dp(56), AndroidUtilities.dp(56)); writeButton.setBackground(combinedDrawable); @@ -3386,7 +3420,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. writeButton.setImageResource(R.drawable.profile_discuss); writeButton.setContentDescription(LocaleController.getString("ViewDiscussion", R.string.ViewDiscussion)); } - writeButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_profile_actionIcon), PorterDuff.Mode.MULTIPLY)); + writeButton.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_profile_actionIcon), PorterDuff.Mode.MULTIPLY)); writeButton.setScaleType(ImageView.ScaleType.CENTER); frameLayout.addView(writeButton, LayoutHelper.createFrame(60, 60, Gravity.RIGHT | Gravity.TOP, 0, 0, 16, 0)); @@ -3437,7 +3471,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } }); - undoView = new UndoView(context); + undoView = new UndoView(context, null, false, resourcesProvider); frameLayout.addView(undoView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.LEFT, 8, 0, 8, 8)); expandAnimator = ValueAnimator.ofFloat(0f, 1f); @@ -3469,17 +3503,21 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } if (scamDrawable != null) { - scamDrawable.setColor(ColorUtils.blendARGB(Theme.getColor(Theme.key_avatar_subtitleInProfileBlue), Color.argb(179, 255, 255, 255), value)); + scamDrawable.setColor(ColorUtils.blendARGB(getThemedColor(Theme.key_avatar_subtitleInProfileBlue), Color.argb(179, 255, 255, 255), value)); } if (lockIconDrawable != null) { - lockIconDrawable.setColorFilter(ColorUtils.blendARGB(Theme.getColor(Theme.key_chat_lockIcon), Color.WHITE, value), PorterDuff.Mode.MULTIPLY); + lockIconDrawable.setColorFilter(ColorUtils.blendARGB(getThemedColor(Theme.key_chat_lockIcon), Color.WHITE, value), PorterDuff.Mode.MULTIPLY); } if (verifiedCrossfadeDrawable != null) { verifiedCrossfadeDrawable.setProgress(value); } + if (premuimCrossfadeDrawable != null) { + premuimCrossfadeDrawable.setProgress(value); + } + final float k = AndroidUtilities.dpf2(8f); final float nameTextViewXEnd = AndroidUtilities.dpf2(16f) - nameTextView[1].getLeft(); @@ -3505,9 +3543,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. final Object onlineTextViewTag = onlineTextView[1].getTag(); int statusColor; if (onlineTextViewTag instanceof String) { - statusColor = Theme.getColor((String) onlineTextViewTag); + statusColor = getThemedColor((String) onlineTextViewTag); } else { - statusColor = Theme.getColor(Theme.key_avatar_subtitleInProfileBlue); + statusColor = getThemedColor(Theme.key_avatar_subtitleInProfileBlue); } onlineTextView[1].setTextColor(ColorUtils.blendARGB(statusColor, Color.argb(179, 255, 255, 255), value)); if (extraHeight > AndroidUtilities.dp(88f)) { @@ -3518,8 +3556,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. needLayoutText(Math.min(1f, extraHeight / AndroidUtilities.dp(88f))); - nameTextView[1].setTextColor(ColorUtils.blendARGB(Theme.getColor(Theme.key_profile_title), Color.WHITE, value)); - actionBar.setItemsColor(ColorUtils.blendARGB(Theme.getColor(Theme.key_actionBarDefaultIcon), Color.WHITE, value), false); + nameTextView[1].setTextColor(ColorUtils.blendARGB(getThemedColor(Theme.key_profile_title), Color.WHITE, value)); + actionBar.setItemsColor(ColorUtils.blendARGB(getThemedColor(Theme.key_actionBarDefaultIcon), Color.WHITE, value), false); avatarImage.setForegroundAlpha(value); @@ -3538,7 +3576,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. @Override public void onAnimationEnd(Animator animation) { - actionBar.setItemsBackgroundColor(isPulledDown ? Theme.ACTION_BAR_WHITE_SELECTOR_COLOR : Theme.getColor(Theme.key_avatar_actionBarSelectorBlue), false); + actionBar.setItemsBackgroundColor(isPulledDown ? Theme.ACTION_BAR_WHITE_SELECTOR_COLOR : getThemedColor(Theme.key_avatar_actionBarSelectorBlue), false); avatarImage.clearForeground(); doNotSetForeground = false; } @@ -3561,6 +3599,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. pinchToZoomHelper = new PinchToZoomHelper(decorView, frameLayout) { Paint statusBarPaint; + @Override protected void invalidateViews() { super.invalidateViews(); @@ -3622,13 +3661,13 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } Bitmap bitmap = pinchToZoomHelper.getPhotoImage() == null ? null : pinchToZoomHelper.getPhotoImage().getBitmap(); if (bitmap != null) { - topView.setBackgroundColor(ColorUtils.blendARGB(AndroidUtilities.calcBitmapColor(bitmap), Theme.getColor(Theme.key_windowBackgroundWhite), 0.1f)); + topView.setBackgroundColor(ColorUtils.blendARGB(AndroidUtilities.calcBitmapColor(bitmap), getThemedColor(Theme.key_windowBackgroundWhite), 0.1f)); } } }); avatarsViewPager.setPinchToZoomHelper(pinchToZoomHelper); scrimPaint.setAlpha(0); - actionBarBackgroundPaint.setColor(Theme.getColor(Theme.key_listSelector)); + actionBarBackgroundPaint.setColor(getThemedColor(Theme.key_listSelector)); contentView.blurBehindViews.add(sharedMediaLayout); updateTtlIcon(); return fragmentView; @@ -3662,6 +3701,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. public TLRPC.Chat getCurrentChat() { return currentChat; } + public TLRPC.UserFull getUserInfo() { return userInfo; } @@ -3834,7 +3874,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return true; } items.add(editingAdmin ? LocaleController.getString("EditAdminRights", R.string.EditAdminRights) : LocaleController.getString("SetAsAdmin", R.string.SetAsAdmin)); - icons.add(R.drawable.actions_addadmin); + icons.add(R.drawable.msg_admins); actions.add(0); } if (canRestrict) { @@ -3842,7 +3882,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return true; } items.add(LocaleController.getString("ChangePermissions", R.string.ChangePermissions)); - icons.add(R.drawable.actions_permissions); + icons.add(R.drawable.msg_permissions); actions.add(1); } if (allowKick) { @@ -3850,7 +3890,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return true; } items.add(LocaleController.getString("KickFromGroup", R.string.KickFromGroup)); - icons.add(R.drawable.actions_remove_user); + icons.add(R.drawable.msg_remove); actions.add(2); hasRemove = true; } @@ -3861,14 +3901,14 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (items.isEmpty()) { return false; } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder.setItems(items.toArray(new CharSequence[0]), AndroidUtilities.toIntArray(icons), (dialogInterface, i) -> { if (actions.get(i) == 2) { kickUser(selectedUser, participant); } else { int action = actions.get(i); if (action == 1 && (channelParticipant instanceof TLRPC.TL_channelParticipantAdmin || participant instanceof TLRPC.TL_chatParticipantAdmin)) { - AlertDialog.Builder builder2 = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder2 = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder2.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder2.setMessage(LocaleController.formatString("AdminWillBeRemoved", R.string.AdminWillBeRemoved, ContactsController.formatName(user.first_name, user.last_name))); builder2.setPositiveButton(LocaleController.getString("OK", R.string.OK), (dialog, which) -> { @@ -3892,7 +3932,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. AlertDialog alertDialog = builder.create(); showDialog(alertDialog); if (hasRemove) { - alertDialog.setItemColor(items.size() - 1, Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogRedIcon)); + alertDialog.setItemColor(items.size() - 1, getThemedColor(Theme.key_dialogTextRed2), getThemedColor(Theme.key_dialogRedIcon)); } } else { if (participant.user_id == getUserConfig().getClientUserId()) { @@ -4012,28 +4052,21 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else { return false; } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setItems(new CharSequence[]{LocaleController.getString("Copy", R.string.Copy)}, (dialogInterface, i) -> { - if (i == 0) { - try { - android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - String text; - if (userId != 0) { - text = "@" + username; - BulletinFactory.of(this).createCopyBulletin(LocaleController.getString("UsernameCopied", R.string.UsernameCopied)).show(); - } else { - text = "https://" + MessagesController.getInstance(UserConfig.selectedAccount).linkPrefix + "/" + username; - BulletinFactory.of(this).createCopyBulletin(LocaleController.getString("LinkCopied", R.string.LinkCopied)).show(); - } - android.content.ClipData clip = android.content.ClipData.newPlainText("label", text); - clipboard.setPrimaryClip(clip); - - } catch (Exception e) { - FileLog.e(e); - } + try { + android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + String text; + if (userId != 0) { + text = "@" + username; + BulletinFactory.of(this).createCopyBulletin(LocaleController.getString("UsernameCopied", R.string.UsernameCopied), resourcesProvider).show(); + } else { + text = "https://" + MessagesController.getInstance(UserConfig.selectedAccount).linkPrefix + "/" + username; + BulletinFactory.of(this).createCopyLinkBulletin(LocaleController.getString("LinkCopied", R.string.LinkCopied), resourcesProvider).show(); } - }); - showDialog(builder.create()); + android.content.ClipData clip = android.content.ClipData.newPlainText("label", text); + clipboard.setPrimaryClip(clip); + } catch (Exception e) { + FileLog.e(e); + } return true; } else if (position == phoneRow || position == numberRow) { final TLRPC.User user = getMessagesController().getUser(userId); @@ -4041,7 +4074,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return false; } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); ArrayList items = new ArrayList<>(); final ArrayList actions = new ArrayList<>(); if (position == phoneRow) { @@ -4092,44 +4125,84 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (view instanceof AboutLinkCell && ((AboutLinkCell) view).onClick()) { return false; } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setItems(new CharSequence[]{LocaleController.getString("Copy", R.string.Copy)}, (dialogInterface, i) -> { - try { - String about; - if (position == locationRow) { - about = chatInfo != null && chatInfo.location instanceof TLRPC.TL_channelLocation ? ((TLRPC.TL_channelLocation) chatInfo.location).address : null; - } else if (position == channelInfoRow) { - about = chatInfo != null ? chatInfo.about : null; - } else { - about = userInfo != null ? userInfo.about : null; - } - if (TextUtils.isEmpty(about)) { - return; - } - AndroidUtilities.addToClipboard(about); - if (position == bioRow) { - BulletinFactory.of(this).createCopyBulletin(LocaleController.getString("BioCopied", R.string.BioCopied)).show(); - } else { - BulletinFactory.of(this).createCopyBulletin(LocaleController.getString("TextCopied", R.string.TextCopied)).show(); - } - } catch (Exception e) { - FileLog.e(e); + String text; + if (position == locationRow) { + text = chatInfo != null && chatInfo.location instanceof TLRPC.TL_channelLocation ? ((TLRPC.TL_channelLocation) chatInfo.location).address : null; + } else if (position == channelInfoRow) { + text = chatInfo != null ? chatInfo.about : null; + } else { + text = userInfo != null ? userInfo.about : null; + } + final String finalText = text; + if (TextUtils.isEmpty(finalText)) { + return false; + } + final String[] fromLanguage = new String[1]; + fromLanguage[0] = "und"; + final boolean translateButtonEnabled = MessagesController.getGlobalMainSettings().getBoolean("translate_button", false); + final boolean[] withTranslate = new boolean[1]; + withTranslate[0] = position == bioRow || position == channelInfoRow || position == userInfoRow; + final String toLang = LocaleController.getInstance().getCurrentLocale().getLanguage(); + Runnable showMenu = () -> { + if (getParentActivity() == null) { + return; } - }); - showDialog(builder.create()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity(), resourcesProvider); + builder.setItems(withTranslate[0] ? new CharSequence[]{LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("TranslateMessage", R.string.TranslateMessage)} : new CharSequence[]{LocaleController.getString("Copy", R.string.Copy)}, (dialogInterface, i) -> { + try { + if (i == 0) { + AndroidUtilities.addToClipboard(finalText); + if (position == bioRow) { + BulletinFactory.of(this).createCopyBulletin(LocaleController.getString("BioCopied", R.string.BioCopied)).show(); + } else { + BulletinFactory.of(this).createCopyBulletin(LocaleController.getString("TextCopied", R.string.TextCopied)).show(); + } + } else if (i == 1) { + TranslateAlert.showAlert(fragmentView.getContext(), this, fromLanguage[0], toLang, finalText, false, span -> { + if (span != null) { + openUrl(span.getURL()); + return true; + } + return false; + }, null); + } + } catch (Exception e) { + FileLog.e(e); + } + }); + showDialog(builder.create()); + }; + if (withTranslate[0]) { + if (LanguageDetector.hasSupport()) { + LanguageDetector.detectLanguage(finalText, (fromLang) -> { + fromLanguage[0] = fromLang; + withTranslate[0] = fromLang != null && (!fromLang.equals(toLang) || fromLang.equals("und")) && ( + translateButtonEnabled && !RestrictedLanguagesSelectActivity.getRestrictedLanguages().contains(fromLang) || + (currentChat != null && (currentChat.has_link || currentChat.username != null)) && ("uk".equals(fromLang) || "ru".equals(fromLang))); + showMenu.run(); + }, (error) -> { + FileLog.e("mlkit: failed to detect language in selection", error); + showMenu.run(); + }); + } else { + showMenu.run(); + } + } else { + showMenu.run(); + } return !(view instanceof AboutLinkCell); } return false; } private void leaveChatPressed() { - AlertsCreator.createClearOrDeleteDialogAlert(ProfileActivity.this, false, currentChat, null, false, true, (param) -> { + AlertsCreator.createClearOrDeleteDialogAlert(ProfileActivity.this, false, currentChat, null, false, false, true, (param) -> { playProfileAnimation = 0; getNotificationCenter().removeObserver(ProfileActivity.this, NotificationCenter.closeChats); getNotificationCenter().postNotificationName(NotificationCenter.closeChats); finishFragment(); getNotificationCenter().postNotificationName(NotificationCenter.needDeleteDialog, -currentChat.id, null, currentChat, param); - }); + }, resourcesProvider); } private void getChannelParticipants(boolean reload) { @@ -4189,44 +4262,50 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. mediaHeaderAnimationProgress = value; topView.invalidate(); - int color1 = Theme.getColor(Theme.key_profile_title); - int color2 = Theme.getColor(Theme.key_player_actionBarTitle); + int color1 = getThemedColor(Theme.key_profile_title); + int color2 = getThemedColor(Theme.key_player_actionBarTitle); int c = AndroidUtilities.getOffsetColor(color1, color2, value, 1.0f); nameTextView[1].setTextColor(c); if (lockIconDrawable != null) { lockIconDrawable.setColorFilter(c, PorterDuff.Mode.MULTIPLY); } if (scamDrawable != null) { - color1 = Theme.getColor(Theme.key_avatar_subtitleInProfileBlue); + color1 = getThemedColor(Theme.key_avatar_subtitleInProfileBlue); scamDrawable.setColor(AndroidUtilities.getOffsetColor(color1, color2, value, 1.0f)); } - color1 = Theme.getColor(Theme.key_actionBarDefaultIcon); - color2 = Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2); + color1 = getThemedColor(Theme.key_actionBarDefaultIcon); + color2 = getThemedColor(Theme.key_windowBackgroundWhiteGrayText2); actionBar.setItemsColor(AndroidUtilities.getOffsetColor(color1, color2, value, 1.0f), false); - color1 = Theme.getColor(Theme.key_avatar_actionBarSelectorBlue); - color2 = Theme.getColor(Theme.key_actionBarActionModeDefaultSelector); + color1 = getThemedColor(Theme.key_avatar_actionBarSelectorBlue); + color2 = getThemedColor(Theme.key_actionBarActionModeDefaultSelector); actionBar.setItemsBackgroundColor(AndroidUtilities.getOffsetColor(color1, color2, value, 1.0f), false); topView.invalidate(); - otherItem.setIconColor(Theme.getColor(Theme.key_actionBarDefaultIcon)); - callItem.setIconColor(Theme.getColor(Theme.key_actionBarDefaultIcon)); - videoCallItem.setIconColor(Theme.getColor(Theme.key_actionBarDefaultIcon)); - editItem.setIconColor(Theme.getColor(Theme.key_actionBarDefaultIcon)); + otherItem.setIconColor(getThemedColor(Theme.key_actionBarDefaultIcon)); + callItem.setIconColor(getThemedColor(Theme.key_actionBarDefaultIcon)); + videoCallItem.setIconColor(getThemedColor(Theme.key_actionBarDefaultIcon)); + editItem.setIconColor(getThemedColor(Theme.key_actionBarDefaultIcon)); if (verifiedDrawable != null) { - color1 = Theme.getColor(Theme.key_profile_verifiedBackground); - color2 = Theme.getColor(Theme.key_player_actionBarTitle); + color1 = getThemedColor(Theme.key_profile_verifiedBackground); + color2 = getThemedColor(Theme.key_player_actionBarTitle); verifiedDrawable.setColorFilter(AndroidUtilities.getOffsetColor(color1, color2, value, 1.0f), PorterDuff.Mode.MULTIPLY); } if (verifiedCheckDrawable != null) { - color1 = Theme.getColor(Theme.key_profile_verifiedCheck); - color2 = Theme.getColor(Theme.key_windowBackgroundWhite); + color1 = getThemedColor(Theme.key_profile_verifiedCheck); + color2 = getThemedColor(Theme.key_windowBackgroundWhite); verifiedCheckDrawable.setColorFilter(AndroidUtilities.getOffsetColor(color1, color2, value, 1.0f), PorterDuff.Mode.MULTIPLY); } + if (premiumStarDrawable != null) { + color1 = getThemedColor(Theme.key_profile_verifiedBackground); + color2 = getThemedColor(Theme.key_player_actionBarTitle); + premiumStarDrawable.setColorFilter(AndroidUtilities.getOffsetColor(color1, color2, value, 1.0f), PorterDuff.Mode.MULTIPLY); + } + if (avatarsViewPagerIndicatorView.getSecondaryMenuItem() != null && (videoCallItemVisible || editItemVisible || callItemVisible)) { needLayoutText(Math.min(1f, extraHeight / AndroidUtilities.dp(88f))); } @@ -4272,6 +4351,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } } + if (actionBar != null) { + actionBar.createMenu().requestLayout(); + } + ArrayList animators = new ArrayList<>(); animators.add(ObjectAnimator.ofFloat(callItem, View.ALPHA, visible ? 0.0f : 1.0f)); @@ -4302,15 +4385,15 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (headerAnimatorSet != null) { if (mediaHeaderVisible) { if (callItemVisible) { - callItem.setVisibility(View.INVISIBLE); + callItem.setVisibility(View.GONE); } if (videoCallItemVisible) { - videoCallItem.setVisibility(View.INVISIBLE); + videoCallItem.setVisibility(View.GONE); } if (editItemVisible) { - editItem.setVisibility(View.INVISIBLE); + editItem.setVisibility(View.GONE); } - otherItem.setVisibility(View.INVISIBLE); + otherItem.setVisibility(View.GONE); } else { if (sharedMediaLayout.isSearchItemVisible()) { mediaSearchItem.setVisibility(View.VISIBLE); @@ -4340,7 +4423,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. }); headerAnimatorSet.setDuration(150); headerAnimatorSet.start(); - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors, true); } private void openAddMember() { @@ -4548,42 +4631,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } if (qrItem != null) { - boolean setQrVisible = diff > 0.5f; - if (setQrVisible != isQrItemVisible) { - isQrItemVisible = setQrVisible; - if (qrItemAnimation != null) { - qrItemAnimation.cancel(); - qrItemAnimation = null; - } - if (animated) { - qrItemAnimation = new AnimatorSet(); - if (setQrVisible) { - qrItemAnimation.setInterpolator(new DecelerateInterpolator()); - qrItemAnimation.playTogether( - ObjectAnimator.ofFloat(qrItem, View.ALPHA, 1.0f), - ObjectAnimator.ofFloat(qrItem, View.SCALE_Y, 1f), - ObjectAnimator.ofFloat(avatarsViewPagerIndicatorView, View.TRANSLATION_X, -AndroidUtilities.dp(48)) - ); - } else { - qrItemAnimation.setInterpolator(new AccelerateInterpolator()); - qrItemAnimation.playTogether( - ObjectAnimator.ofFloat(qrItem, View.ALPHA, 0.0f), - ObjectAnimator.ofFloat(qrItem, View.SCALE_Y, 0f), - ObjectAnimator.ofFloat(avatarsViewPagerIndicatorView, View.TRANSLATION_X, 0) - ); - } - qrItemAnimation.setDuration(150); - qrItemAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - qrItemAnimation = null; - } - }); - qrItemAnimation.start(); - } else { - qrItem.setAlpha(setQrVisible ? 1.0f : 0.0f); - float translation = AndroidUtilities.dp(48) * qrItem.getAlpha(); - qrItem.setTranslationX(translation); + updateQrItemVisibility(animated); + if (!animated) { + float translation = AndroidUtilities.dp(48) * qrItem.getAlpha(); + qrItem.setTranslationX(translation); + if (avatarsViewPagerIndicatorView != null) { avatarsViewPagerIndicatorView.setTranslationX(translation - AndroidUtilities.dp(48)); } } @@ -4621,7 +4673,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. searchItem.setEnabled(false); } isPulledDown = true; - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors, true); overlaysView.setOverlaysVisible(true, durationFactor); avatarsViewPagerIndicatorView.refreshVisibility(durationFactor); avatarsViewPager.setCreateThumbFromParent(true); @@ -4668,7 +4720,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else { if (isPulledDown) { isPulledDown = false; - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors); + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needCheckSystemBarColors, true); if (otherItem != null) { otherItem.hideSubItem(gallery_menu_save); if (imageUpdater != null) { @@ -4697,7 +4749,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else { expandAnimator.setDuration(0); } - topView.setBackgroundColor(Theme.getColor(Theme.key_avatar_backgroundActionBarBlue)); + topView.setBackgroundColor(getThemedColor(Theme.key_avatar_backgroundActionBarBlue)); if (!doNotSetForeground) { BackupImageView imageView = avatarsViewPager.getCurrentItemView(); @@ -4753,18 +4805,22 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. avatarContainer.setScaleY(avatarScale); overlaysView.setAlphaValue(animationProgress, false); - actionBar.setItemsColor(ColorUtils.blendARGB(Theme.getColor(Theme.key_actionBarDefaultIcon), Color.WHITE, animationProgress), false); + actionBar.setItemsColor(ColorUtils.blendARGB(getThemedColor(Theme.key_actionBarDefaultIcon), Color.WHITE, animationProgress), false); if (scamDrawable != null) { - scamDrawable.setColor(ColorUtils.blendARGB(Theme.getColor(Theme.key_avatar_subtitleInProfileBlue), Color.argb(179, 255, 255, 255), animationProgress)); + scamDrawable.setColor(ColorUtils.blendARGB(getThemedColor(Theme.key_avatar_subtitleInProfileBlue), Color.argb(179, 255, 255, 255), animationProgress)); } if (lockIconDrawable != null) { - lockIconDrawable.setColorFilter(ColorUtils.blendARGB(Theme.getColor(Theme.key_chat_lockIcon), Color.WHITE, animationProgress), PorterDuff.Mode.MULTIPLY); + lockIconDrawable.setColorFilter(ColorUtils.blendARGB(getThemedColor(Theme.key_chat_lockIcon), Color.WHITE, animationProgress), PorterDuff.Mode.MULTIPLY); } if (verifiedCrossfadeDrawable != null) { verifiedCrossfadeDrawable.setProgress(animationProgress); nameTextView[1].invalidate(); } + if (premuimCrossfadeDrawable != null) { + premuimCrossfadeDrawable.setProgress(animationProgress); + nameTextView[1].invalidate(); + } final FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) avatarContainer.getLayoutParams(); params.width = params.height = (int) AndroidUtilities.lerp(AndroidUtilities.dpf2(42f), (extraHeight + newTop) / avatarScale, animationProgress); @@ -4819,6 +4875,57 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } } + public void updateQrItemVisibility(boolean animated) { + if (qrItem == null) { + return; + } + boolean setQrVisible = isQrNeedVisible() && Math.min(1f, extraHeight / AndroidUtilities.dp(88f)) > .5f && searchTransitionProgress > .5f; + if (animated) { + if (setQrVisible != isQrItemVisible) { + isQrItemVisible = setQrVisible; + if (qrItemAnimation != null) { + qrItemAnimation.cancel(); + qrItemAnimation = null; + } + qrItemAnimation = new AnimatorSet(); + if (!(qrItem.getVisibility() == View.GONE && !setQrVisible)) { + qrItem.setVisibility(View.VISIBLE); + } + if (setQrVisible) { + qrItemAnimation.setInterpolator(new DecelerateInterpolator()); + qrItemAnimation.playTogether( + ObjectAnimator.ofFloat(qrItem, View.ALPHA, 1.0f), + ObjectAnimator.ofFloat(qrItem, View.SCALE_Y, 1f), + ObjectAnimator.ofFloat(avatarsViewPagerIndicatorView, View.TRANSLATION_X, -AndroidUtilities.dp(48)) + ); + } else { + qrItemAnimation.setInterpolator(new AccelerateInterpolator()); + qrItemAnimation.playTogether( + ObjectAnimator.ofFloat(qrItem, View.ALPHA, 0.0f), + ObjectAnimator.ofFloat(qrItem, View.SCALE_Y, 0f), + ObjectAnimator.ofFloat(avatarsViewPagerIndicatorView, View.TRANSLATION_X, 0) + ); + } + qrItemAnimation.setDuration(150); + qrItemAnimation.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + qrItemAnimation = null; + } + }); + qrItemAnimation.start(); + } + } else { + if (qrItemAnimation != null) { + qrItemAnimation.cancel(); + qrItemAnimation = null; + } + isQrItemVisible = setQrVisible; + qrItem.setAlpha(setQrVisible ? 1.0f : 0.0f); + qrItem.setVisibility(setQrVisible ? View.VISIBLE : View.GONE); + } + } + private void setForegroundImage(boolean secondParent) { Drawable drawable = avatarImage.getImageReceiver().getDrawable(); if (drawable instanceof AnimatedFileDrawable) { @@ -4831,7 +4938,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. ImageLocation location = avatarsViewPager.getImageLocation(0); String filter; if (location != null && location.imageType == FileLoader.IMAGE_TYPE_ANIMATION) { - filter = ImageLoader.AUTOPLAY_FILTER; + filter = "avatar"; } else { filter = null; } @@ -5098,6 +5205,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. updateAutoDeleteItem(); updateTtlIcon(); } + } else if (id == NotificationCenter.privacyRulesUpdated) { + if (qrItem != null) { + updateQrItemVisibility(true); + } } else if (id == NotificationCenter.didReceiveNewMessages) { boolean scheduled = (Boolean) args[2]; if (scheduled) { @@ -5207,7 +5318,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } invalidateIsInLandscapeMode(); if (listAdapter != null) { - // saveScrollPosition(); + // saveScrollPosition(); firstLayout = true; listAdapter.notifyDataSetChanged(); } @@ -5364,10 +5475,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (playProfileAnimation == 2 && avatarColor != 0) { color = avatarColor; } else { - color = AvatarDrawable.getProfileBackColorForId(userId != 0 || ChatObject.isChannel(chatId, currentAccount) && !currentChat.megagroup ? 5 : chatId); + color = AvatarDrawable.getProfileBackColorForId(userId != 0 || ChatObject.isChannel(chatId, currentAccount) && !currentChat.megagroup ? 5 : chatId, resourcesProvider); } - int actionBarColor = actionBarAnimationColorFrom != 0 ? actionBarAnimationColorFrom : Theme.getColor(Theme.key_actionBarDefault); + int actionBarColor = actionBarAnimationColorFrom != 0 ? actionBarAnimationColorFrom : getThemedColor(Theme.key_actionBarDefault); int actionBarColor2 = actionBarColor; if (SharedConfig.chatBlurEnabled()) { actionBarColor = ColorUtils.setAlphaComponent(actionBarColor, 0); @@ -5375,12 +5486,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. topView.setBackgroundColor(ColorUtils.blendARGB(actionBarColor, color, progress)); timerDrawable.setBackgroundColor(ColorUtils.blendARGB(actionBarColor2, color, progress)); - color = AvatarDrawable.getIconColorForId(userId != 0 || ChatObject.isChannel(chatId, currentAccount) && !currentChat.megagroup ? 5 : chatId); - int iconColor = Theme.getColor(Theme.key_actionBarDefaultIcon); + color = AvatarDrawable.getIconColorForId(userId != 0 || ChatObject.isChannel(chatId, currentAccount) && !currentChat.megagroup ? 5 : chatId, resourcesProvider); + int iconColor = getThemedColor(Theme.key_actionBarDefaultIcon); actionBar.setItemsColor(ColorUtils.blendARGB(iconColor, color, progress), false); - color = Theme.getColor(Theme.key_profile_title); - int titleColor = Theme.getColor(Theme.key_actionBarDefaultTitle); + color = getThemedColor(Theme.key_profile_title); + int titleColor = getThemedColor(Theme.key_actionBarDefaultTitle); for (int i = 0; i < 2; i++) { if (nameTextView[i] == null || i == 1 && playProfileAnimation == 2) { continue; @@ -5388,8 +5499,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. nameTextView[i].setTextColor(ColorUtils.blendARGB(titleColor, color, progress)); } - color = isOnline[0] ? Theme.getColor(Theme.key_profile_status) : AvatarDrawable.getProfileTextColorForId(userId != 0 || ChatObject.isChannel(chatId, currentAccount) && !currentChat.megagroup ? 5 : chatId); - int subtitleColor = Theme.getColor(isOnline[0] ? Theme.key_chat_status : Theme.key_actionBarDefaultSubtitle); + color = isOnline[0] ? getThemedColor(Theme.key_profile_status) : AvatarDrawable.getProfileTextColorForId(userId != 0 || ChatObject.isChannel(chatId, currentAccount) && !currentChat.megagroup ? 5 : chatId, resourcesProvider); + int subtitleColor = getThemedColor(isOnline[0] ? Theme.key_chat_status : Theme.key_actionBarDefaultSubtitle); for (int i = 0; i < 2; i++) { if (onlineTextView[i] == null || i == 1 && playProfileAnimation == 2) { @@ -5398,7 +5509,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. onlineTextView[i].setTextColor(ColorUtils.blendARGB(subtitleColor, color, progress)); } extraHeight = initialAnimationExtraHeight * progress; - color = AvatarDrawable.getProfileColorForId(userId != 0 ? userId : chatId); + color = AvatarDrawable.getProfileColorForId(userId != 0 ? userId : chatId, resourcesProvider); int color2 = AvatarDrawable.getColorForId(userId != 0 ? userId : chatId); if (color != color2) { avatarDrawable.setColor(ColorUtils.blendARGB(color2, color, progress)); @@ -5420,6 +5531,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } } + @Override + public int getNavigationBarColor() { + return Theme.getColor(Theme.key_windowBackgroundGray, resourcesProvider); + } + boolean profileTransitionInProgress; @Override @@ -5521,7 +5637,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. BaseFragment previousFragment = parentLayout.fragmentsStack.size() > 1 ? parentLayout.fragmentsStack.get(parentLayout.fragmentsStack.size() - 2) : null; if (previousFragment instanceof ChatActivity) { ChatAvatarContainer avatarContainer = ((ChatActivity) previousFragment).getAvatarContainer(); - if (avatarContainer.getSubtitleTextView().getLeftDrawable() != null) { + if (avatarContainer.getSubtitleTextView().getLeftDrawable() != null || avatarContainer.statusMadeShorter[0]) { transitionOnlineText = avatarContainer.getSubtitleTextView(); avatarContainer2.invalidate(); onlineTextCrosafade = true; @@ -5574,12 +5690,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (ttlIconView != null) { animators.add(ObjectAnimator.ofFloat(ttlIconView, View.ALPHA, ttlIconView.getAlpha(), 0.0f)); } - boolean crossfadeOnlineText = false; BaseFragment previousFragment = parentLayout.fragmentsStack.size() > 1 ? parentLayout.fragmentsStack.get(parentLayout.fragmentsStack.size() - 2) : null; if (previousFragment instanceof ChatActivity) { ChatAvatarContainer avatarContainer = ((ChatActivity) previousFragment).getAvatarContainer(); - if (avatarContainer.getSubtitleTextView().getLeftDrawable() != null) { + if (avatarContainer.getSubtitleTextView().getLeftDrawable() != null || avatarContainer.statusMadeShorter[0]) { transitionOnlineText = avatarContainer.getSubtitleTextView(); avatarContainer2.invalidate(); crossfadeOnlineText = true; @@ -5785,10 +5900,13 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. settingsSectionRow2 = -1; notificationRow = -1; languageRow = -1; + premiumRow = -1; + premiumSectionsRow = -1; privacyRow = -1; dataRow = -1; chatRow = -1; filtersRow = -1; + stickersRow = -1; devicesRow = -1; devicesSectionRow = -1; helpHeaderRow = -1; @@ -5883,12 +6001,17 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. privacyRow = rowCount++; dataRow = rowCount++; chatRow = rowCount++; + stickersRow = rowCount++; if (getMessagesController().filtersEnabled || !getMessagesController().dialogFilters.isEmpty()) { filtersRow = rowCount++; } devicesRow = rowCount++; languageRow = rowCount++; devicesSectionRow = rowCount++; + if (!getMessagesController().premiumLocked) { + premiumRow = rowCount++; + premiumSectionsRow = rowCount++; + } helpHeaderRow = rowCount++; questionRow = rowCount++; faqRow = rowCount++; @@ -5941,7 +6064,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } } - if (user != null && isBot && !user.bot_nochats) { // TODO(dkaraush): and had invite button sent + if (user != null && isBot && !user.bot_nochats) { addToGroupButtonRow = rowCount++; addToGroupInfoRow = rowCount++; } @@ -6080,7 +6203,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private Drawable getScamDrawable(int type) { if (scamDrawable == null) { scamDrawable = new ScamDrawable(11, type); - scamDrawable.setColor(Theme.getColor(Theme.key_avatar_subtitleInProfileBlue)); + scamDrawable.setColor(getThemedColor(Theme.key_avatar_subtitleInProfileBlue)); } return scamDrawable; } @@ -6101,6 +6224,16 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return verifiedCrossfadeDrawable; } + + private Drawable getPremiumCrossfadeDrawable() { + if (premuimCrossfadeDrawable == null) { + premiumStarDrawable = ContextCompat.getDrawable(getParentActivity(), R.drawable.msg_premium_liststar).mutate(); + premiumStarDrawable.setColorFilter(getThemedColor(Theme.key_profile_verifiedBackground), PorterDuff.Mode.MULTIPLY); + premuimCrossfadeDrawable = new CrossfadeDrawable(premiumStarDrawable, ContextCompat.getDrawable(getParentActivity(), R.drawable.msg_premium_prolfilestar).mutate()); + } + return premuimCrossfadeDrawable; + } + private void updateProfileData() { if (avatarContainer == null || nameTextView == null) { return; @@ -6132,16 +6265,16 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. final ImageLocation imageLocation = ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_BIG); final ImageLocation thumbLocation = ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_SMALL); + final ImageLocation videoThumbLocation = ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_VIDEO_THUMB); final ImageLocation videoLocation = avatarsViewPager.getCurrentVideoLocation(thumbLocation, imageLocation); avatarsViewPager.initIfEmpty(imageLocation, thumbLocation); - String filter; - if (videoLocation != null && videoLocation.imageType == FileLoader.IMAGE_TYPE_ANIMATION) { - filter = ImageLoader.AUTOPLAY_FILTER; - } else { - filter = null; - } if (avatarBig == null) { - avatarImage.setImage(videoLocation, filter, thumbLocation, "50_50", avatarDrawable, user); + if (videoThumbLocation != null) { + avatarImage.getImageReceiver().setVideoThumbIsSame(true); + avatarImage.setImage(videoLocation, ImageLoader.AUTOPLAY_FILTER, videoThumbLocation, "avatar", avatarDrawable, user); + } else { + avatarImage.setImage(videoLocation, ImageLoader.AUTOPLAY_FILTER, thumbLocation, "50_50", avatarDrawable, user); + } } if (thumbLocation != null && setAvatarRow != -1 || thumbLocation == null && setAvatarRow == -1) { updateListAnimated(false); @@ -6152,7 +6285,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. getFileLoader().loadFile(imageLocation, user, null, 0, 1); } - String newString = UserObject.getUserName(user); + CharSequence newString = UserObject.getUserName(user); String newString2; if (user.id == getUserConfig().getClientUserId()) { newString2 = LocaleController.getString("Online", R.string.Online); @@ -6169,10 +6302,14 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. String key = isOnline[0] ? Theme.key_profile_status : Theme.key_avatar_subtitleInProfileBlue; onlineTextView[1].setTag(key); if (!isPulledDown) { - onlineTextView[1].setTextColor(Theme.getColor(key)); + onlineTextView[1].setTextColor(getThemedColor(key)); } } } + try { + newString = Emoji.replaceEmoji(newString, nameTextView[1].getPaint().getFontMetricsInt(), AndroidUtilities.dp(24), false); + } catch (Exception ignore) { + } for (int a = 0; a < 2; a++) { if (nameTextView[a] == null) { continue; @@ -6191,19 +6328,53 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } Drawable leftIcon = currentEncryptedChat != null ? getLockIconDrawable() : null; Drawable rightIcon = null; + boolean rightIconIsPremium = false; if (a == 0) { if (user.scam || user.fake) { rightIcon = getScamDrawable(user.scam ? 0 : 1); + nameTextViewRightDrawableContentDescription = LocaleController.getString("ScamMessage", R.string.ScamMessage); + } else if (user.verified) { + rightIcon = getVerifiedCrossfadeDrawable(); + nameTextViewRightDrawableContentDescription = LocaleController.getString("AccDescrVerified", R.string.AccDescrVerified); + } else if (getMessagesController().isPremiumUser(user)) { + rightIconIsPremium = true; + rightIcon = getPremiumCrossfadeDrawable(); + nameTextViewRightDrawableContentDescription = LocaleController.getString("AccDescrPremium", R.string.AccDescrPremium); + } else if (getMessagesController().isDialogMuted(dialogId != 0 ? dialogId : userId)) { + rightIcon = getThemedDrawable(Theme.key_drawable_muteIconDrawable); + nameTextViewRightDrawableContentDescription = LocaleController.getString("NotificationsMuted", R.string.NotificationsMuted); } else { - rightIcon = getMessagesController().isDialogMuted(dialogId != 0 ? dialogId : userId) ? Theme.chat_muteIconDrawable : null; + rightIcon = null; + nameTextViewRightDrawableContentDescription = null; } } else if (user.scam || user.fake) { rightIcon = getScamDrawable(user.scam ? 0 : 1); } else if (user.verified) { rightIcon = getVerifiedCrossfadeDrawable(); + } else if (getMessagesController().isPremiumUser(user)) { + rightIconIsPremium = true; + rightIcon = getPremiumCrossfadeDrawable(); } nameTextView[a].setLeftDrawable(leftIcon); nameTextView[a].setRightDrawable(rightIcon); + if (a == 0) { + nameTextView[a].setCanHideRightDrawable(rightIconIsPremium); + } + if (!user.self && getMessagesController().isPremiumUser(user)) { + final SimpleTextView textView = nameTextView[a]; + nameTextView[a].setRightDrawableOnClick(v -> { + PremiumPreviewBottomSheet premiumPreviewBottomSheet = new PremiumPreviewBottomSheet(ProfileActivity.this, currentAccount, user); + int[] coords = new int[2]; + textView.getLocationOnScreen(coords); + premiumPreviewBottomSheet.startEnterFromX = textView.rightDrawableX; + premiumPreviewBottomSheet.startEnterFromY = textView.rightDrawableY; + premiumPreviewBottomSheet.startEnterFromScale = textView.getScaleX(); + premiumPreviewBottomSheet.startEnterFromX1 = textView.getLeft(); + premiumPreviewBottomSheet.startEnterFromY1 = textView.getTop(); + premiumPreviewBottomSheet.startEnterFromView = textView; + showDialog(premiumPreviewBottomSheet); + }); + } } avatarImage.getImageReceiver().setVisible(!PhotoViewer.isShowingImage(photoBig), false); @@ -6283,7 +6454,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. continue; } if (chat.title != null) { - if (nameTextView[a].setText(chat.title)) { + CharSequence title = chat.title; + try { + title = Emoji.replaceEmoji(title, nameTextView[a].getPaint().getFontMetricsInt(), AndroidUtilities.dp(24), false); + } catch (Exception ignore) { + } + if (nameTextView[a].setText(title)) { changed = true; } } @@ -6291,16 +6467,23 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (a != 0) { if (chat.scam || chat.fake) { nameTextView[a].setRightDrawable(getScamDrawable(chat.scam ? 0 : 1)); + nameTextViewRightDrawableContentDescription = LocaleController.getString("ScamMessage", R.string.ScamMessage); } else if (chat.verified) { nameTextView[a].setRightDrawable(getVerifiedCrossfadeDrawable()); + nameTextViewRightDrawableContentDescription = LocaleController.getString("AccDescrVerified", R.string.AccDescrVerified); } else { nameTextView[a].setRightDrawable(null); + nameTextViewRightDrawableContentDescription = null; } } else { if (chat.scam || chat.fake) { nameTextView[a].setRightDrawable(getScamDrawable(chat.scam ? 0 : 1)); + } else if (chat.verified) { + nameTextView[a].setRightDrawable(getVerifiedCrossfadeDrawable()); + } else if (getMessagesController().isDialogMuted(-chatId)) { + nameTextView[a].setRightDrawable(getThemedDrawable(Theme.key_drawable_muteIconDrawable)); } else { - nameTextView[a].setRightDrawable(getMessagesController().isDialogMuted(-chatId) ? Theme.chat_muteIconDrawable : null); + nameTextView[a].setRightDrawable(null); } } if (a == 0 && onlineTextOverride != null) { @@ -6367,7 +6550,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } if (qrItem != null) { - qrItem.setVisibility(searchTransitionProgress > 0.5f && isQrNeedVisible() ? View.VISIBLE : View.GONE); + updateQrItemVisibility(true); } } @@ -6407,9 +6590,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. createAutoDeleteItem(context); } if (isBot) { - if (!user.bot_nochats) { - otherItem.addSubItem(invite_to_group, R.drawable.msg_addbot, LocaleController.getString("BotInvite", R.string.BotInvite)); - } +// if (!user.bot_nochats) { +// otherItem.addSubItem(invite_to_group, R.drawable.msg_addbot, LocaleController.getString("BotInvite", R.string.BotInvite)); +// } otherItem.addSubItem(share, R.drawable.msg_share, LocaleController.getString("BotShare", R.string.BotShare)); } else { otherItem.addSubItem(add_contact, R.drawable.msg_addcontact, LocaleController.getString("AddContact", R.string.AddContact)); @@ -6436,7 +6619,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. otherItem.addSubItem(delete_contact, R.drawable.msg_delete, LocaleController.getString("DeleteContact", R.string.DeleteContact)); } if (!UserObject.isDeleted(user) && !isBot && currentEncryptedChat == null && !userBlocked && userId != 333000 && userId != 777000 && userId != 42777) { - otherItem.addSubItem(start_secret_chat, R.drawable.msg_start_secret, LocaleController.getString("StartEncryptedChat", R.string.StartEncryptedChat)); + otherItem.addSubItem(start_secret_chat, R.drawable.msg_secret, LocaleController.getString("StartEncryptedChat", R.string.StartEncryptedChat)); } otherItem.addSubItem(add_shortcut, R.drawable.msg_home, LocaleController.getString("AddShortcut", R.string.AddShortcut)); } @@ -6501,7 +6684,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (imageUpdater != null) { otherItem.addSubItem(add_photo, R.drawable.msg_addphoto, LocaleController.getString("AddPhoto", R.string.AddPhoto)); - otherItem.addSubItem(set_as_main, R.drawable.menu_private, LocaleController.getString("SetAsMain", R.string.SetAsMain)); + otherItem.addSubItem(set_as_main, R.drawable.msg_openprofile, LocaleController.getString("SetAsMain", R.string.SetAsMain)); otherItem.addSubItem(gallery_menu_save, R.drawable.msg_gallery, LocaleController.getString("SaveToGallery", R.string.SaveToGallery)); //otherItem.addSubItem(edit_avatar, R.drawable.photo_paint, LocaleController.getString("EditPhoto", R.string.EditPhoto)); otherItem.addSubItem(delete_avatar, R.drawable.msg_delete, LocaleController.getString("Delete", R.string.Delete)); @@ -6599,7 +6782,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. public void setAutoDeleteHistory(int time, int action) { ProfileActivity.this.setAutoDeleteHistory(time, action); } - }, false, getResourceProvider()); + }, false, resourcesProvider); int ttl = 0; if (userInfo != null || chatInfo != null) { ttl = userInfo != null ? userInfo.ttl_period : chatInfo.ttl_period; @@ -6610,6 +6793,21 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. updateAutoDeleteItem(); } + @Override + public Theme.ResourcesProvider getResourceProvider() { + return resourcesProvider; + } + + public int getThemedColor(String key) { + return Theme.getColor(key, resourcesProvider); + } + + @Override + public Drawable getThemedDrawable(String drawableKey) { + Drawable drawable = resourcesProvider != null ? resourcesProvider.getDrawable(drawableKey) : null; + return drawable != null ? drawable : super.getThemedDrawable(drawableKey); + } + private void setAutoDeleteHistory(int time, int action) { long did = getDialogId(); getMessagesController().setDialogHistoryTTL(did, time); @@ -6737,7 +6935,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. otherItem.setVisibility(itemVisibility); } if (qrItem != null) { - qrItem.setVisibility(isQrNeedVisible() && searchTransitionProgress > 0.5f ? View.VISIBLE : View.GONE); + updateQrItemVisibility(false); } searchItem.setVisibility(itemVisibility); @@ -6790,7 +6988,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } if (qrItem != null) { qrItem.setAlpha(progressHalf); - qrItem.setVisibility(searchTransitionProgress > 0.5f && isQrNeedVisible() ? View.VISIBLE : View.GONE); + updateQrItemVisibility(false); } searchItem.setVisibility(visibility); @@ -6934,20 +7132,20 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } if (small != null && avatar != null) { - File destFile = FileLoader.getPathToAttach(small, true); - File src = FileLoader.getPathToAttach(avatar, true); + File destFile = FileLoader.getInstance(currentAccount).getPathToAttach(small, true); + File src = FileLoader.getInstance(currentAccount).getPathToAttach(avatar, true); src.renameTo(destFile); String oldKey = avatar.volume_id + "_" + avatar.local_id + "@50_50"; String newKey = small.location.volume_id + "_" + small.location.local_id + "@50_50"; ImageLoader.getInstance().replaceImageInCache(oldKey, newKey, ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_SMALL), false); } if (big != null && avatarBig != null) { - File destFile = FileLoader.getPathToAttach(big, true); - File src = FileLoader.getPathToAttach(avatarBig, true); + File destFile = FileLoader.getInstance(currentAccount).getPathToAttach(big, true); + File src = FileLoader.getInstance(currentAccount).getPathToAttach(avatarBig, true); src.renameTo(destFile); } if (videoSize != null && videoPath != null) { - File destFile = FileLoader.getPathToAttach(videoSize, "mp4", true); + File destFile = FileLoader.getInstance(currentAccount).getPathToAttach(videoSize, "mp4", true); File src = new File(videoPath); src.renameTo(destFile); } @@ -6958,7 +7156,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. getMessagesStorage().putUsersAndChats(users, null, false, true); } - allowPullingDown = !AndroidUtilities.isTablet() && !isInLandscapeMode && avatarImage.getImageReceiver().hasNotThumb(); + allowPullingDown = !AndroidUtilities.isTablet() && !isInLandscapeMode && avatarImage.getImageReceiver().hasNotThumb() && !AndroidUtilities.isAccessibilityScreenReaderEnabled(); avatar = null; avatarBig = null; avatarsViewPager.setCreateThumbFromParent(false); @@ -7165,7 +7363,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. VIEW_TYPE_SHARED_MEDIA = 13, VIEW_TYPE_VERSION = 14, VIEW_TYPE_SUGGESTION = 15, - VIEW_TYPE_ADDTOGROUP_INFO = 17; + VIEW_TYPE_ADDTOGROUP_INFO = 17, + VIEW_TYPE_PREMIUM_TEXT_CELL = 18; private Context mContext; @@ -7178,35 +7377,21 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. View view; switch (viewType) { case VIEW_TYPE_HEADER: { - view = new HeaderCell(mContext, 23); + view = new HeaderCell(mContext, 23, resourcesProvider); break; } case VIEW_TYPE_TEXT_DETAIL: { - final TextDetailCell textDetailCell = new TextDetailCell(mContext); + final TextDetailCell textDetailCell = new TextDetailCell(mContext, resourcesProvider); textDetailCell.setContentDescriptionValueFirst(true); textDetailCell.setImageClickListener(ProfileActivity.this::onTextDetailCellImageClicked); view = textDetailCell; break; } case VIEW_TYPE_ABOUT_LINK: { - view = aboutLinkCell = new AboutLinkCell(mContext, ProfileActivity.this) { + view = aboutLinkCell = new AboutLinkCell(mContext, ProfileActivity.this, resourcesProvider) { @Override protected void didPressUrl(String url) { - if (url.startsWith("@")) { - getMessagesController().openByUserName(url.substring(1), ProfileActivity.this, 0); - } else if (url.startsWith("#")) { - DialogsActivity fragment = new DialogsActivity(null); - fragment.setSearchString(url); - presentFragment(fragment); - } else if (url.startsWith("/")) { - if (parentLayout.fragmentsStack.size() > 1) { - BaseFragment previousFragment = parentLayout.fragmentsStack.get(parentLayout.fragmentsStack.size() - 2); - if (previousFragment instanceof ChatActivity) { - finishFragment(); - ((ChatActivity) previousFragment).chatActivityEnterView.setCommand(null, url, false, false); - } - } - } + openUrl(url); } @Override @@ -7222,24 +7407,24 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. break; } case VIEW_TYPE_TEXT: { - view = new TextCell(mContext); + view = new TextCell(mContext, resourcesProvider); break; } case VIEW_TYPE_DIVIDER: { - view = new DividerCell(mContext); + view = new DividerCell(mContext, resourcesProvider); view.setPadding(AndroidUtilities.dp(20), AndroidUtilities.dp(4), 0, 0); break; } case VIEW_TYPE_NOTIFICATIONS_CHECK: { - view = new NotificationsCheckCell(mContext, 23, 70, false); + view = new NotificationsCheckCell(mContext, 23, 70, false, resourcesProvider); break; } case VIEW_TYPE_SHADOW: { - view = new ShadowSectionCell(mContext); + view = new ShadowSectionCell(mContext, resourcesProvider); break; } case VIEW_TYPE_USER: { - view = new UserCell(mContext, addMemberRow == -1 ? 9 : 6, 0, true); + view = new UserCell(mContext, addMemberRow == -1 ? 9 : 6, 0, true, resourcesProvider); break; } case VIEW_TYPE_EMPTY: { @@ -7297,14 +7482,14 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. break; } case VIEW_TYPE_ADDTOGROUP_INFO: { - view = new TextInfoPrivacyCell(mContext); + view = new TextInfoPrivacyCell(mContext, resourcesProvider); break; } case VIEW_TYPE_VERSION: default: { - TextInfoPrivacyCell cell = new TextInfoPrivacyCell(mContext, 10); + TextInfoPrivacyCell cell = new TextInfoPrivacyCell(mContext, 10, resourcesProvider); cell.getTextView().setGravity(Gravity.CENTER_HORIZONTAL); - cell.getTextView().setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText3)); + cell.getTextView().setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText3)); cell.getTextView().setMovementMethod(null); try { PackageInfo pInfo = ApplicationLoader.applicationContext.getPackageManager().getPackageInfo(ApplicationLoader.applicationContext.getPackageName(), 0); @@ -7312,22 +7497,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. String abi = ""; switch (pInfo.versionCode % 10) { case 1: - case 3: - abi = "arm-v7a"; - break; case 2: - case 4: - abi = "x86"; + abi = "store bundled " + Build.CPU_ABI + " " + Build.CPU_ABI2; break; - case 5: - case 7: - abi = "arm64-v8a"; - break; - case 6: - case 8: - abi = "x86_64"; - break; - case 0: + default: case 9: if (BuildVars.isStandaloneApp()) { abi = "direct " + Build.CPU_ABI + " " + Build.CPU_ABI2; @@ -7342,11 +7515,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } cell.getTextView().setPadding(0, AndroidUtilities.dp(14), 0, AndroidUtilities.dp(14)); view = cell; - view.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + view.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, getThemedColor(Theme.key_windowBackgroundGrayShadow))); break; } case VIEW_TYPE_SUGGESTION: { - view = new SettingsSuggestionCell(mContext) { + view = new SettingsSuggestionCell(mContext, resourcesProvider) { @Override protected void onYesClick(int type) { getNotificationCenter().removeObserver(ProfileActivity.this, NotificationCenter.newSuggestionsAvailable); @@ -7367,6 +7540,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. }; break; } + case VIEW_TYPE_PREMIUM_TEXT_CELL: + view = new ProfilePremiumCell(mContext, resourcesProvider); + break; } if (viewType != VIEW_TYPE_SHARED_MEDIA) { view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT)); @@ -7415,8 +7591,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. TextDetailCell detailCell = (TextDetailCell) holder.itemView; if (position == usernameRow) { Drawable drawable = ContextCompat.getDrawable(detailCell.getContext(), R.drawable.msg_qr_mini); - drawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_switch2TrackChecked), PorterDuff.Mode.MULTIPLY)); - detailCell.setImage(drawable); + drawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_switch2TrackChecked), PorterDuff.Mode.MULTIPLY)); + detailCell.setImage(drawable, LocaleController.getString("GetQRCode", R.string.GetQRCode)); } else { detailCell.setImage(null); } @@ -7468,34 +7644,43 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } detailCell.setTextAndValue(value, LocaleController.getString("Username", R.string.Username), true); detailCell.setContentDescriptionValueFirst(true); - } else if (position == bioRow) { - String value; - if (userInfo == null || !TextUtils.isEmpty(userInfo.about)) { - value = userInfo == null ? LocaleController.getString("Loading", R.string.Loading) : userInfo.about; - detailCell.setTextWithEmojiAndValue(value, LocaleController.getString("UserBio", R.string.UserBio), false); - detailCell.setContentDescriptionValueFirst(true); - currentBio = userInfo != null ? userInfo.about : null; - } else { - detailCell.setTextAndValue(LocaleController.getString("UserBio", R.string.UserBio), LocaleController.getString("UserBioDetail", R.string.UserBioDetail), false); - detailCell.setContentDescriptionValueFirst(false); - currentBio = null; - } } detailCell.setTag(position); break; case VIEW_TYPE_ABOUT_LINK: AboutLinkCell aboutLinkCell = (AboutLinkCell) holder.itemView; if (position == userInfoRow) { - aboutLinkCell.setTextAndValue(userInfo.about, LocaleController.getString("UserBio", R.string.UserBio), isBot); + TLRPC.User user = userInfo.user != null ? userInfo.user : getMessagesController().getUser(userInfo.id); + boolean addlinks = isBot || (user != null && user.premium && userInfo.about != null); + aboutLinkCell.setTextAndValue(userInfo.about, LocaleController.getString("UserBio", R.string.UserBio), addlinks); } else if (position == channelInfoRow) { String text = chatInfo.about; while (text.contains("\n\n\n")) { text = text.replace("\n\n\n", "\n\n"); } aboutLinkCell.setText(text, ChatObject.isChannel(currentChat) && !currentChat.megagroup); + } else if (position == bioRow) { + String value; + if (userInfo == null || !TextUtils.isEmpty(userInfo.about)) { + value = userInfo == null ? LocaleController.getString("Loading", R.string.Loading) : userInfo.about; + aboutLinkCell.setTextAndValue(value, LocaleController.getString("UserBio", R.string.UserBio), getUserConfig().isPremium()); + currentBio = userInfo != null ? userInfo.about : null; + } else { + aboutLinkCell.setTextAndValue(LocaleController.getString("UserBio", R.string.UserBio), LocaleController.getString("UserBioDetail", R.string.UserBioDetail), false); + currentBio = null; + } + } + if (position == bioRow) { + aboutLinkCell.setOnClickListener(e -> { + if (userInfo != null) { + presentFragment(new ChangeBioActivity()); + } + }); + } else { + aboutLinkCell.setOnClickListener(e -> processOnClickOrPress(position, aboutLinkCell)); } - aboutLinkCell.setOnClickListener(e -> processOnClickOrPress(position, aboutLinkCell)); break; + case VIEW_TYPE_PREMIUM_TEXT_CELL: case VIEW_TYPE_TEXT: TextCell textCell = (TextCell) holder.itemView; textCell.setColors(Theme.key_windowBackgroundWhiteGrayIcon, Theme.key_windowBackgroundWhiteBlackText); @@ -7527,59 +7712,62 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else if (position == subscribersRow) { if (chatInfo != null) { if (ChatObject.isChannel(currentChat) && !currentChat.megagroup) { - textCell.setTextAndValueAndIcon(LocaleController.getString("ChannelSubscribers", R.string.ChannelSubscribers), String.format("%d", chatInfo.participants_count), R.drawable.actions_viewmembers, position != membersSectionRow - 1); + textCell.setTextAndValueAndIcon(LocaleController.getString("ChannelSubscribers", R.string.ChannelSubscribers), String.format("%d", chatInfo.participants_count), R.drawable.msg_groups, position != membersSectionRow - 1); } else { - textCell.setTextAndValueAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), String.format("%d", chatInfo.participants_count), R.drawable.actions_viewmembers, position != membersSectionRow - 1); + textCell.setTextAndValueAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), String.format("%d", chatInfo.participants_count), R.drawable.msg_groups, position != membersSectionRow - 1); } } else { if (ChatObject.isChannel(currentChat) && !currentChat.megagroup) { - textCell.setTextAndIcon(LocaleController.getString("ChannelSubscribers", R.string.ChannelSubscribers), R.drawable.actions_viewmembers, position != membersSectionRow - 1); + textCell.setTextAndIcon(LocaleController.getString("ChannelSubscribers", R.string.ChannelSubscribers), R.drawable.msg_groups, position != membersSectionRow - 1); } else { - textCell.setTextAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), R.drawable.actions_viewmembers, position != membersSectionRow - 1); + textCell.setTextAndIcon(LocaleController.getString("ChannelMembers", R.string.ChannelMembers), R.drawable.msg_groups, position != membersSectionRow - 1); } } } else if (position == subscribersRequestsRow) { if (chatInfo != null) { - textCell.setTextAndValueAndIcon(LocaleController.getString("SubscribeRequests", R.string.SubscribeRequests), String.format("%d", chatInfo.requests_pending), R.drawable.actions_requests, position != membersSectionRow - 1); + textCell.setTextAndValueAndIcon(LocaleController.getString("SubscribeRequests", R.string.SubscribeRequests), String.format("%d", chatInfo.requests_pending), R.drawable.msg_requests, position != membersSectionRow - 1); } } else if (position == administratorsRow) { if (chatInfo != null) { - textCell.setTextAndValueAndIcon(LocaleController.getString("ChannelAdministrators", R.string.ChannelAdministrators), String.format("%d", chatInfo.admins_count), R.drawable.actions_addadmin, position != membersSectionRow - 1); + textCell.setTextAndValueAndIcon(LocaleController.getString("ChannelAdministrators", R.string.ChannelAdministrators), String.format("%d", chatInfo.admins_count), R.drawable.msg_admins, position != membersSectionRow - 1); } else { - textCell.setTextAndIcon(LocaleController.getString("ChannelAdministrators", R.string.ChannelAdministrators), R.drawable.actions_addadmin, position != membersSectionRow - 1); + textCell.setTextAndIcon(LocaleController.getString("ChannelAdministrators", R.string.ChannelAdministrators), R.drawable.msg_admins, position != membersSectionRow - 1); } } else if (position == blockedUsersRow) { if (chatInfo != null) { - textCell.setTextAndValueAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), String.format("%d", Math.max(chatInfo.banned_count, chatInfo.kicked_count)), R.drawable.actions_removed, position != membersSectionRow - 1); + textCell.setTextAndValueAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), String.format("%d", Math.max(chatInfo.banned_count, chatInfo.kicked_count)), R.drawable.msg_user_remove, position != membersSectionRow - 1); } else { - textCell.setTextAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), R.drawable.actions_removed, position != membersSectionRow - 1); + textCell.setTextAndIcon(LocaleController.getString("ChannelBlacklist", R.string.ChannelBlacklist), R.drawable.msg_user_remove, position != membersSectionRow - 1); } } else if (position == addMemberRow) { textCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); - textCell.setTextAndIcon(LocaleController.getString("AddMember", R.string.AddMember), R.drawable.actions_addmember2, membersSectionRow == -1); + textCell.setTextAndIcon(LocaleController.getString("AddMember", R.string.AddMember), R.drawable.msg_contact_add, membersSectionRow == -1); } else if (position == sendMessageRow) { textCell.setText(LocaleController.getString("SendMessageLocation", R.string.SendMessageLocation), true); } else if (position == reportRow) { textCell.setText(LocaleController.getString("ReportUserLocation", R.string.ReportUserLocation), false); textCell.setColors(null, Theme.key_windowBackgroundWhiteRedText5); } else if (position == languageRow) { - textCell.setTextAndIcon(LocaleController.getString("Language", R.string.Language), R.drawable.menu_language, false); + textCell.setTextAndIcon(LocaleController.getString("Language", R.string.Language), R.drawable.msg_language, false); + textCell.setImageLeft(23); } else if (position == notificationRow) { - textCell.setTextAndIcon(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, true); + textCell.setTextAndIcon(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, true); } else if (position == privacyRow) { - textCell.setTextAndIcon(LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, true); + textCell.setTextAndIcon(LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, true); } else if (position == dataRow) { - textCell.setTextAndIcon(LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, true); + textCell.setTextAndIcon(LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, true); } else if (position == chatRow) { - textCell.setTextAndIcon(LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, true); + textCell.setTextAndIcon(LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, true); } else if (position == filtersRow) { - textCell.setTextAndIcon(LocaleController.getString("Filters", R.string.Filters), R.drawable.menu_folders, true); + textCell.setTextAndIcon(LocaleController.getString("Filters", R.string.Filters), R.drawable.msg_folders, true); + } else if (position == stickersRow) { + textCell.setTextAndIcon(LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, true); } else if (position == questionRow) { - textCell.setTextAndIcon(LocaleController.getString("AskAQuestion", R.string.AskAQuestion), R.drawable.menu_support2, true); + textCell.setTextAndIcon(LocaleController.getString("AskAQuestion", R.string.AskAQuestion), R.drawable.msg_ask_question, true); } else if (position == faqRow) { - textCell.setTextAndIcon(LocaleController.getString("TelegramFAQ", R.string.TelegramFAQ), R.drawable.menu_help, true); + textCell.setTextAndIcon(LocaleController.getString("TelegramFAQ", R.string.TelegramFAQ), R.drawable.msg_help, true); } else if (position == policyRow) { - textCell.setTextAndIcon(LocaleController.getString("PrivacyPolicy", R.string.PrivacyPolicy), R.drawable.menu_policy, false); + textCell.setTextAndIcon(LocaleController.getString("PrivacyPolicy", R.string.PrivacyPolicy), R.drawable.msg_policy, false); } else if (position == sendLogsRow) { textCell.setText(LocaleController.getString("DebugSendLogs", R.string.DebugSendLogs), true); } else if (position == sendLastLogsRow) { @@ -7599,8 +7787,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. textCell.setImageLeft(12); setAvatarCell = textCell; } else if (position == addToGroupButtonRow) { - textCell.setTextAndIcon(LocaleController.getString("AddToGroupOrChannel", R.string.AddToGroupOrChannel), R.drawable.groups_create, false); // TODO(dkaraush): text! icon! + textCell.setTextAndIcon(LocaleController.getString("AddToGroupOrChannel", R.string.AddToGroupOrChannel), R.drawable.msg_groups_create, false); textCell.setColors(Theme.key_windowBackgroundWhiteBlueIcon, Theme.key_windowBackgroundWhiteBlueButton); + } else if (position == premiumRow) { + textCell.setTextAndIcon(LocaleController.getString("TelegramPremium", R.string.TelegramPremium), PremiumGradient.getInstance().premiumStarMenuDrawable, false); + textCell.setImageLeft(23); } break; case VIEW_TYPE_NOTIFICATIONS_CHECK: @@ -7668,9 +7859,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. sectionCell.setTag(position); Drawable drawable; if (position == infoSectionRow && lastSectionRow == -1 && secretSettingsSectionRow == -1 && sharedMediaRow == -1 && membersSectionRow == -1 || position == secretSettingsSectionRow || position == lastSectionRow || position == membersSectionRow && lastSectionRow == -1 && sharedMediaRow == -1) { - sectionCell.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + sectionCell.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, getThemedColor(Theme.key_windowBackgroundGrayShadow))); } else { - sectionCell.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); + sectionCell.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider, getThemedColor(Theme.key_windowBackgroundGrayShadow))); } break; case VIEW_TYPE_USER: @@ -7723,8 +7914,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. break; case VIEW_TYPE_ADDTOGROUP_INFO: TextInfoPrivacyCell addToGroupInfo = (TextInfoPrivacyCell) holder.itemView; - addToGroupInfo.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); - addToGroupInfo.setText("This bot is able to manage a group or channel."); // TODO(dkaraush): text! + addToGroupInfo.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider, getThemedColor(Theme.key_windowBackgroundGrayShadow))); + addToGroupInfo.setText(LocaleController.getString("BotAddToGroupOrChannelInfo", R.string.BotAddToGroupOrChannelInfo)); break; } } @@ -7743,9 +7934,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return position == notificationRow || position == numberRow || position == privacyRow || position == languageRow || position == setUsernameRow || position == bioRow || position == versionRow || position == dataRow || position == chatRow || - position == questionRow || position == devicesRow || position == filtersRow || + position == questionRow || position == devicesRow || position == filtersRow || position == stickersRow || position == faqRow || position == policyRow || position == sendLogsRow || position == sendLastLogsRow || - position == clearLogsRow || position == switchBackendRow || position == setAvatarRow || position == addToGroupButtonRow; + position == clearLogsRow || position == switchBackendRow || position == setAvatarRow || position == addToGroupButtonRow || position == premiumRow; } if (holder.itemView instanceof UserCell) { UserCell userCell = (UserCell) holder.itemView; @@ -7774,16 +7965,16 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. position == numberSectionRow || position == helpHeaderRow || position == debugHeaderRow) { return VIEW_TYPE_HEADER; } else if (position == phoneRow || position == usernameRow || position == locationRow || - position == numberRow || position == setUsernameRow || position == bioRow) { + position == numberRow || position == setUsernameRow) { return VIEW_TYPE_TEXT_DETAIL; - } else if (position == userInfoRow || position == channelInfoRow) { + } else if (position == userInfoRow || position == channelInfoRow || position == bioRow) { return VIEW_TYPE_ABOUT_LINK; } else if (position == settingsTimerRow || position == settingsKeyRow || position == reportRow || position == subscribersRow || position == subscribersRequestsRow || position == administratorsRow || position == blockedUsersRow || position == addMemberRow || position == joinRow || position == unblockRow || position == sendMessageRow || position == notificationRow || position == privacyRow || position == languageRow || position == dataRow || position == chatRow || - position == questionRow || position == devicesRow || position == filtersRow || + position == questionRow || position == devicesRow || position == filtersRow || position == stickersRow || position == faqRow || position == policyRow || position == sendLogsRow || position == sendLastLogsRow || position == clearLogsRow || position == switchBackendRow || position == setAvatarRow || position == addToGroupButtonRow) { return VIEW_TYPE_TEXT; @@ -7794,7 +7985,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else if (position == infoSectionRow || position == lastSectionRow || position == membersSectionRow || position == secretSettingsSectionRow || position == settingsSectionRow || position == devicesSectionRow || position == helpSectionCell || position == setAvatarSectionRow || position == passwordSuggestionSectionRow || - position == phoneSuggestionSectionRow) { + position == phoneSuggestionSectionRow || position == premiumSectionsRow) { return VIEW_TYPE_SHADOW; } else if (position >= membersStartRow && position < membersEndRow) { return VIEW_TYPE_USER; @@ -7810,6 +8001,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return VIEW_TYPE_SUGGESTION; } else if (position == addToGroupInfoRow) { return VIEW_TYPE_ADDTOGROUP_INFO; + } else if (position == premiumRow) { + return VIEW_TYPE_PREMIUM_TEXT_CELL; } return 0; } @@ -7877,7 +8070,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } private SearchResult[] searchArray = new SearchResult[]{ - new SearchResult(500, LocaleController.getString("EditName", R.string.EditName), 0, () -> presentFragment(new ChangeNameActivity())), + new SearchResult(500, LocaleController.getString("EditName", R.string.EditName), 0, () -> presentFragment(new ChangeNameActivity(resourcesProvider))), new SearchResult(501, LocaleController.getString("ChangePhoneNumber", R.string.ChangePhoneNumber), 0, () -> presentFragment(new ActionIntroActivity(ActionIntroActivity.ACTION_TYPE_CHANGE_PHONE_NUMBER))), new SearchResult(502, LocaleController.getString("AddAnotherAccount", R.string.AddAnotherAccount), 0, () -> { int freeAccount = -1; @@ -7897,90 +8090,90 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } }), - new SearchResult(1, LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsSettingsActivity())), - new SearchResult(2, LocaleController.getString("NotificationsPrivateChats", R.string.NotificationsPrivateChats), LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsCustomSettingsActivity(NotificationsController.TYPE_PRIVATE, new ArrayList<>(), true))), - new SearchResult(3, LocaleController.getString("NotificationsGroups", R.string.NotificationsGroups), LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsCustomSettingsActivity(NotificationsController.TYPE_GROUP, new ArrayList<>(), true))), - new SearchResult(4, LocaleController.getString("NotificationsChannels", R.string.NotificationsChannels), LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsCustomSettingsActivity(NotificationsController.TYPE_CHANNEL, new ArrayList<>(), true))), - new SearchResult(5, LocaleController.getString("VoipNotificationSettings", R.string.VoipNotificationSettings), "callsSectionRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsSettingsActivity())), - new SearchResult(6, LocaleController.getString("BadgeNumber", R.string.BadgeNumber), "badgeNumberSection", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsSettingsActivity())), - new SearchResult(7, LocaleController.getString("InAppNotifications", R.string.InAppNotifications), "inappSectionRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsSettingsActivity())), - new SearchResult(8, LocaleController.getString("ContactJoined", R.string.ContactJoined), "contactJoinedRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsSettingsActivity())), - new SearchResult(9, LocaleController.getString("PinnedMessages", R.string.PinnedMessages), "pinnedMessageRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsSettingsActivity())), - new SearchResult(10, LocaleController.getString("ResetAllNotifications", R.string.ResetAllNotifications), "resetNotificationsRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.menu_notifications, () -> presentFragment(new NotificationsSettingsActivity())), + new SearchResult(1, LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsSettingsActivity())), + new SearchResult(2, LocaleController.getString("NotificationsPrivateChats", R.string.NotificationsPrivateChats), LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsCustomSettingsActivity(NotificationsController.TYPE_PRIVATE, new ArrayList<>(), true))), + new SearchResult(3, LocaleController.getString("NotificationsGroups", R.string.NotificationsGroups), LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsCustomSettingsActivity(NotificationsController.TYPE_GROUP, new ArrayList<>(), true))), + new SearchResult(4, LocaleController.getString("NotificationsChannels", R.string.NotificationsChannels), LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsCustomSettingsActivity(NotificationsController.TYPE_CHANNEL, new ArrayList<>(), true))), + new SearchResult(5, LocaleController.getString("VoipNotificationSettings", R.string.VoipNotificationSettings), "callsSectionRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsSettingsActivity())), + new SearchResult(6, LocaleController.getString("BadgeNumber", R.string.BadgeNumber), "badgeNumberSection", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsSettingsActivity())), + new SearchResult(7, LocaleController.getString("InAppNotifications", R.string.InAppNotifications), "inappSectionRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsSettingsActivity())), + new SearchResult(8, LocaleController.getString("ContactJoined", R.string.ContactJoined), "contactJoinedRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsSettingsActivity())), + new SearchResult(9, LocaleController.getString("PinnedMessages", R.string.PinnedMessages), "pinnedMessageRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsSettingsActivity())), + new SearchResult(10, LocaleController.getString("ResetAllNotifications", R.string.ResetAllNotifications), "resetNotificationsRow", LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, () -> presentFragment(new NotificationsSettingsActivity())), - new SearchResult(100, LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(101, LocaleController.getString("BlockedUsers", R.string.BlockedUsers), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacyUsersActivity())), - new SearchResult(105, LocaleController.getString("PrivacyPhone", R.string.PrivacyPhone), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_PHONE, true))), - new SearchResult(102, LocaleController.getString("PrivacyLastSeen", R.string.PrivacyLastSeen), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_LASTSEEN, true))), - new SearchResult(103, LocaleController.getString("PrivacyProfilePhoto", R.string.PrivacyProfilePhoto), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_PHOTO, true))), - new SearchResult(104, LocaleController.getString("PrivacyForwards", R.string.PrivacyForwards), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_FORWARDS, true))), - new SearchResult(122, LocaleController.getString("PrivacyP2P", R.string.PrivacyP2P), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_P2P, true))), - new SearchResult(106, LocaleController.getString("Calls", R.string.Calls), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_CALLS, true))), - new SearchResult(107, LocaleController.getString("GroupsAndChannels", R.string.GroupsAndChannels), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_INVITE, true))), - new SearchResult(108, LocaleController.getString("Passcode", R.string.Passcode), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(PasscodeActivity.determineOpenFragment())), - new SearchResult(109, LocaleController.getString("TwoStepVerification", R.string.TwoStepVerification), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new TwoStepVerificationActivity())), - new SearchResult(110, LocaleController.getString("SessionsTitle", R.string.SessionsTitle), R.drawable.menu_secret, () -> presentFragment(new SessionsActivity(0))), - getMessagesController().autoarchiveAvailable ? new SearchResult(121, LocaleController.getString("ArchiveAndMute", R.string.ArchiveAndMute), "newChatsRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacySettingsActivity())) : null, - new SearchResult(112, LocaleController.getString("DeleteAccountIfAwayFor2", R.string.DeleteAccountIfAwayFor2), "deleteAccountRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(113, LocaleController.getString("PrivacyPaymentsClear", R.string.PrivacyPaymentsClear), "paymentsClearRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(114, LocaleController.getString("WebSessionsTitle", R.string.WebSessionsTitle), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new SessionsActivity(1))), - new SearchResult(115, LocaleController.getString("SyncContactsDelete", R.string.SyncContactsDelete), "contactsDeleteRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(116, LocaleController.getString("SyncContacts", R.string.SyncContacts), "contactsSyncRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(117, LocaleController.getString("SuggestContacts", R.string.SuggestContacts), "contactsSuggestRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(118, LocaleController.getString("MapPreviewProvider", R.string.MapPreviewProvider), "secretMapRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(119, LocaleController.getString("SecretWebPage", R.string.SecretWebPage), "secretWebpageRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.menu_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(120, LocaleController.getString("Devices", R.string.Devices), R.drawable.menu_secret, () -> presentFragment(new SessionsActivity(0))), + new SearchResult(100, LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(101, LocaleController.getString("BlockedUsers", R.string.BlockedUsers), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacyUsersActivity())), + new SearchResult(105, LocaleController.getString("PrivacyPhone", R.string.PrivacyPhone), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_PHONE, true))), + new SearchResult(102, LocaleController.getString("PrivacyLastSeen", R.string.PrivacyLastSeen), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_LASTSEEN, true))), + new SearchResult(103, LocaleController.getString("PrivacyProfilePhoto", R.string.PrivacyProfilePhoto), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_PHOTO, true))), + new SearchResult(104, LocaleController.getString("PrivacyForwards", R.string.PrivacyForwards), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_FORWARDS, true))), + new SearchResult(122, LocaleController.getString("PrivacyP2P", R.string.PrivacyP2P), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_P2P, true))), + new SearchResult(106, LocaleController.getString("Calls", R.string.Calls), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_CALLS, true))), + new SearchResult(107, LocaleController.getString("GroupsAndChannels", R.string.GroupsAndChannels), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_INVITE, true))), + new SearchResult(108, LocaleController.getString("Passcode", R.string.Passcode), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(PasscodeActivity.determineOpenFragment())), + new SearchResult(109, LocaleController.getString("TwoStepVerification", R.string.TwoStepVerification), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new TwoStepVerificationActivity())), + new SearchResult(110, LocaleController.getString("SessionsTitle", R.string.SessionsTitle), R.drawable.msg_secret, () -> presentFragment(new SessionsActivity(0))), + getMessagesController().autoarchiveAvailable ? new SearchResult(121, LocaleController.getString("ArchiveAndMute", R.string.ArchiveAndMute), "newChatsRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())) : null, + new SearchResult(112, LocaleController.getString("DeleteAccountIfAwayFor2", R.string.DeleteAccountIfAwayFor2), "deleteAccountRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(113, LocaleController.getString("PrivacyPaymentsClear", R.string.PrivacyPaymentsClear), "paymentsClearRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(114, LocaleController.getString("WebSessionsTitle", R.string.WebSessionsTitle), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new SessionsActivity(1))), + new SearchResult(115, LocaleController.getString("SyncContactsDelete", R.string.SyncContactsDelete), "contactsDeleteRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(116, LocaleController.getString("SyncContacts", R.string.SyncContacts), "contactsSyncRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(117, LocaleController.getString("SuggestContacts", R.string.SuggestContacts), "contactsSuggestRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(118, LocaleController.getString("MapPreviewProvider", R.string.MapPreviewProvider), "secretMapRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(119, LocaleController.getString("SecretWebPage", R.string.SecretWebPage), "secretWebpageRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(120, LocaleController.getString("Devices", R.string.Devices), R.drawable.msg_secret, () -> presentFragment(new SessionsActivity(0))), - new SearchResult(200, LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(201, LocaleController.getString("DataUsage", R.string.DataUsage), "usageSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(202, LocaleController.getString("StorageUsage", R.string.StorageUsage), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new CacheControlActivity())), - new SearchResult(203, LocaleController.getString("KeepMedia", R.string.KeepMedia), "keepMediaRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.menu_data, () -> presentFragment(new CacheControlActivity())), - new SearchResult(204, LocaleController.getString("ClearMediaCache", R.string.ClearMediaCache), "cacheRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.menu_data, () -> presentFragment(new CacheControlActivity())), - new SearchResult(205, LocaleController.getString("LocalDatabase", R.string.LocalDatabase), "databaseRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.menu_data, () -> presentFragment(new CacheControlActivity())), - new SearchResult(206, LocaleController.getString("NetworkUsage", R.string.NetworkUsage), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataUsageActivity())), - new SearchResult(207, LocaleController.getString("AutomaticMediaDownload", R.string.AutomaticMediaDownload), "mediaDownloadSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(208, LocaleController.getString("WhenUsingMobileData", R.string.WhenUsingMobileData), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataAutoDownloadActivity(0))), - new SearchResult(209, LocaleController.getString("WhenConnectedOnWiFi", R.string.WhenConnectedOnWiFi), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataAutoDownloadActivity(1))), - new SearchResult(210, LocaleController.getString("WhenRoaming", R.string.WhenRoaming), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataAutoDownloadActivity(2))), - new SearchResult(211, LocaleController.getString("ResetAutomaticMediaDownload", R.string.ResetAutomaticMediaDownload), "resetDownloadRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(212, LocaleController.getString("AutoplayMedia", R.string.AutoplayMedia), "autoplayHeaderRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(213, LocaleController.getString("AutoplayGIF", R.string.AutoplayGIF), "autoplayGifsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(214, LocaleController.getString("AutoplayVideo", R.string.AutoplayVideo), "autoplayVideoRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(215, LocaleController.getString("Streaming", R.string.Streaming), "streamSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(216, LocaleController.getString("EnableStreaming", R.string.EnableStreaming), "enableStreamRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(217, LocaleController.getString("Calls", R.string.Calls), "callsSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(218, LocaleController.getString("VoipUseLessData", R.string.VoipUseLessData), "useLessDataForCallsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(219, LocaleController.getString("VoipQuickReplies", R.string.VoipQuickReplies), "quickRepliesRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(220, LocaleController.getString("ProxySettings", R.string.ProxySettings), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new ProxyListActivity())), - new SearchResult(221, LocaleController.getString("UseProxyForCalls", R.string.UseProxyForCalls), "callsRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("ProxySettings", R.string.ProxySettings), R.drawable.menu_data, () -> presentFragment(new ProxyListActivity())), - new SearchResult(111, LocaleController.getString("PrivacyDeleteCloudDrafts", R.string.PrivacyDeleteCloudDrafts), "clearDraftsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.menu_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(200, LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(201, LocaleController.getString("DataUsage", R.string.DataUsage), "usageSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(202, LocaleController.getString("StorageUsage", R.string.StorageUsage), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new CacheControlActivity())), + new SearchResult(203, LocaleController.getString("KeepMedia", R.string.KeepMedia), "keepMediaRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.msg_data, () -> presentFragment(new CacheControlActivity())), + new SearchResult(204, LocaleController.getString("ClearMediaCache", R.string.ClearMediaCache), "cacheRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.msg_data, () -> presentFragment(new CacheControlActivity())), + new SearchResult(205, LocaleController.getString("LocalDatabase", R.string.LocalDatabase), "databaseRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.msg_data, () -> presentFragment(new CacheControlActivity())), + new SearchResult(206, LocaleController.getString("NetworkUsage", R.string.NetworkUsage), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataUsageActivity())), + new SearchResult(207, LocaleController.getString("AutomaticMediaDownload", R.string.AutomaticMediaDownload), "mediaDownloadSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(208, LocaleController.getString("WhenUsingMobileData", R.string.WhenUsingMobileData), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataAutoDownloadActivity(0))), + new SearchResult(209, LocaleController.getString("WhenConnectedOnWiFi", R.string.WhenConnectedOnWiFi), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataAutoDownloadActivity(1))), + new SearchResult(210, LocaleController.getString("WhenRoaming", R.string.WhenRoaming), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataAutoDownloadActivity(2))), + new SearchResult(211, LocaleController.getString("ResetAutomaticMediaDownload", R.string.ResetAutomaticMediaDownload), "resetDownloadRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(212, LocaleController.getString("AutoplayMedia", R.string.AutoplayMedia), "autoplayHeaderRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(213, LocaleController.getString("AutoplayGIF", R.string.AutoplayGIF), "autoplayGifsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(214, LocaleController.getString("AutoplayVideo", R.string.AutoplayVideo), "autoplayVideoRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(215, LocaleController.getString("Streaming", R.string.Streaming), "streamSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(216, LocaleController.getString("EnableStreaming", R.string.EnableStreaming), "enableStreamRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(217, LocaleController.getString("Calls", R.string.Calls), "callsSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(218, LocaleController.getString("VoipUseLessData", R.string.VoipUseLessData), "useLessDataForCallsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(219, LocaleController.getString("VoipQuickReplies", R.string.VoipQuickReplies), "quickRepliesRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(220, LocaleController.getString("ProxySettings", R.string.ProxySettings), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new ProxyListActivity())), + new SearchResult(221, LocaleController.getString("UseProxyForCalls", R.string.UseProxyForCalls), "callsRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("ProxySettings", R.string.ProxySettings), R.drawable.msg_data, () -> presentFragment(new ProxyListActivity())), + new SearchResult(111, LocaleController.getString("PrivacyDeleteCloudDrafts", R.string.PrivacyDeleteCloudDrafts), "clearDraftsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(300, LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(301, LocaleController.getString("TextSizeHeader", R.string.TextSizeHeader), "textSizeHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(302, LocaleController.getString("ChatBackground", R.string.ChatBackground), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_ALL))), - new SearchResult(303, LocaleController.getString("SetColor", R.string.SetColor), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("ChatBackground", R.string.ChatBackground), R.drawable.menu_chats, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_COLOR))), - new SearchResult(304, LocaleController.getString("ResetChatBackgrounds", R.string.ResetChatBackgrounds), "resetRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("ChatBackground", R.string.ChatBackground), R.drawable.menu_chats, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_ALL))), - new SearchResult(305, LocaleController.getString("AutoNightTheme", R.string.AutoNightTheme), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_NIGHT))), - new SearchResult(306, LocaleController.getString("ColorTheme", R.string.ColorTheme), "themeHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(307, LocaleController.getString("ChromeCustomTabs", R.string.ChromeCustomTabs), "customTabsRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(308, LocaleController.getString("DirectShare", R.string.DirectShare), "directShareRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(309, LocaleController.getString("EnableAnimations", R.string.EnableAnimations), "enableAnimationsRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(310, LocaleController.getString("RaiseToSpeak", R.string.RaiseToSpeak), "raiseToSpeakRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(311, LocaleController.getString("SendByEnter", R.string.SendByEnter), "sendByEnterRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(312, LocaleController.getString("SaveToGallerySettings", R.string.SaveToGallerySettings), "saveToGalleryRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(318, LocaleController.getString("DistanceUnits", R.string.DistanceUnits), "distanceRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(313, LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.menu_chats, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE))), - new SearchResult(314, LocaleController.getString("SuggestStickers", R.string.SuggestStickers), "suggestRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.menu_chats, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE))), - new SearchResult(315, LocaleController.getString("FeaturedStickers", R.string.FeaturedStickers), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.menu_chats, () -> presentFragment(new FeaturedStickersActivity())), - new SearchResult(316, LocaleController.getString("Masks", R.string.Masks), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.menu_chats, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_MASK))), - new SearchResult(317, LocaleController.getString("ArchivedStickers", R.string.ArchivedStickers), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.menu_chats, () -> presentFragment(new ArchivedStickersActivity(MediaDataController.TYPE_IMAGE))), - new SearchResult(317, LocaleController.getString("ArchivedMasks", R.string.ArchivedMasks), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.menu_chats, () -> presentFragment(new ArchivedStickersActivity(MediaDataController.TYPE_MASK))), + new SearchResult(300, LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(301, LocaleController.getString("TextSizeHeader", R.string.TextSizeHeader), "textSizeHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(302, LocaleController.getString("ChatBackground", R.string.ChatBackground), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_ALL))), + new SearchResult(303, LocaleController.getString("SetColor", R.string.SetColor), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("ChatBackground", R.string.ChatBackground), R.drawable.msg_msgbubble3, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_COLOR))), + new SearchResult(304, LocaleController.getString("ResetChatBackgrounds", R.string.ResetChatBackgrounds), "resetRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("ChatBackground", R.string.ChatBackground), R.drawable.msg_msgbubble3, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_ALL))), + new SearchResult(305, LocaleController.getString("AutoNightTheme", R.string.AutoNightTheme), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_NIGHT))), + new SearchResult(306, LocaleController.getString("ColorTheme", R.string.ColorTheme), "themeHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(307, LocaleController.getString("ChromeCustomTabs", R.string.ChromeCustomTabs), "customTabsRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(308, LocaleController.getString("DirectShare", R.string.DirectShare), "directShareRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(309, LocaleController.getString("EnableAnimations", R.string.EnableAnimations), "enableAnimationsRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(310, LocaleController.getString("RaiseToSpeak", R.string.RaiseToSpeak), "raiseToSpeakRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(311, LocaleController.getString("SendByEnter", R.string.SendByEnter), "sendByEnterRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(312, LocaleController.getString("SaveToGallerySettings", R.string.SaveToGallerySettings), "saveToGalleryRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(318, LocaleController.getString("DistanceUnits", R.string.DistanceUnits), "distanceRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(313, LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE))), + new SearchResult(314, LocaleController.getString("SuggestStickers", R.string.SuggestStickers), "suggestRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.msg_msgbubble3, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE))), + new SearchResult(315, LocaleController.getString("FeaturedStickers", R.string.FeaturedStickers), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.msg_msgbubble3, () -> presentFragment(new FeaturedStickersActivity())), + new SearchResult(316, LocaleController.getString("Masks", R.string.Masks), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.msg_msgbubble3, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_MASK))), + new SearchResult(317, LocaleController.getString("ArchivedStickers", R.string.ArchivedStickers), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.msg_msgbubble3, () -> presentFragment(new ArchivedStickersActivity(MediaDataController.TYPE_IMAGE))), + new SearchResult(317, LocaleController.getString("ArchivedMasks", R.string.ArchivedMasks), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), R.drawable.msg_msgbubble3, () -> presentFragment(new ArchivedStickersActivity(MediaDataController.TYPE_MASK))), - new SearchResult(400, LocaleController.getString("Language", R.string.Language), R.drawable.menu_language, () -> presentFragment(new LanguageSelectActivity())), + new SearchResult(400, LocaleController.getString("Language", R.string.Language), R.drawable.msg_language, () -> presentFragment(new LanguageSelectActivity())), - new SearchResult(402, LocaleController.getString("AskAQuestion", R.string.AskAQuestion), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.menu_help, () -> showDialog(AlertsCreator.createSupportAlert(ProfileActivity.this))), - new SearchResult(403, LocaleController.getString("TelegramFAQ", R.string.TelegramFAQ), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.menu_help, () -> Browser.openUrl(getParentActivity(), LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl))), - new SearchResult(404, LocaleController.getString("PrivacyPolicy", R.string.PrivacyPolicy), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.menu_help, () -> Browser.openUrl(getParentActivity(), LocaleController.getString("PrivacyPolicyUrl", R.string.PrivacyPolicyUrl))), + new SearchResult(402, LocaleController.getString("AskAQuestion", R.string.AskAQuestion), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.msg_help, () -> showDialog(AlertsCreator.createSupportAlert(ProfileActivity.this, null))), + new SearchResult(403, LocaleController.getString("TelegramFAQ", R.string.TelegramFAQ), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.msg_help, () -> Browser.openUrl(getParentActivity(), LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl))), + new SearchResult(404, LocaleController.getString("PrivacyPolicy", R.string.PrivacyPolicy), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.msg_help, () -> Browser.openUrl(getParentActivity(), LocaleController.getString("PrivacyPolicyUrl", R.string.PrivacyPolicyUrl))), }; private ArrayList faqSearchArray = new ArrayList<>(); @@ -8313,7 +8506,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (stringBuilder == null) { stringBuilder = new SpannableStringBuilder(result.searchTitle); } - stringBuilder.setSpan(new ForegroundColorSpan(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText4)), index, index + searchString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + stringBuilder.setSpan(new ForegroundColorSpan(getThemedColor(Theme.key_windowBackgroundWhiteBlueText4)), index, index + searchString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } else { break; } @@ -8353,7 +8546,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (stringBuilder == null) { stringBuilder = new SpannableStringBuilder(result.title); } - stringBuilder.setSpan(new ForegroundColorSpan(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText4)), index, index + searchString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + stringBuilder.setSpan(new ForegroundColorSpan(getThemedColor(Theme.key_windowBackgroundWhiteBlueText4)), index, index + searchString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } else { break; } @@ -8389,19 +8582,41 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } } + private void openUrl(String url) { + if (url.startsWith("@")) { + getMessagesController().openByUserName(url.substring(1), ProfileActivity.this, 0); + } else if (url.startsWith("#")) { + DialogsActivity fragment = new DialogsActivity(null); + fragment.setSearchString(url); + presentFragment(fragment); + } else if (url.startsWith("/")) { + if (parentLayout.fragmentsStack.size() > 1) { + BaseFragment previousFragment = parentLayout.fragmentsStack.get(parentLayout.fragmentsStack.size() - 2); + if (previousFragment instanceof ChatActivity) { + finishFragment(); + ((ChatActivity) previousFragment).chatActivityEnterView.setCommand(null, url, false, false); + } + } + } + } + private void dimBehindView(View view, boolean enable) { scrimView = view; dimBehindView(enable); } + private void dimBehindView(View view, float value) { scrimView = view; dimBehindView(value); } + private void dimBehindView(boolean enable) { dimBehindView(enable ? 0.2f : 0); } + private AnimatorSet scrimAnimatorSet = null; + private void dimBehindView(float value) { boolean enable = value > 0; fragmentView.invalidate(); @@ -8435,6 +8650,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. @Override public ArrayList getThemeDescriptions() { + if (resourcesProvider != null) { + return null; + } ThemeDescription.ThemeDescriptionDelegate themeDelegate = () -> { if (listView != null) { int count = listView.getChildCount(); @@ -8449,23 +8667,23 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (onlineTextView[1] != null) { final Object onlineTextViewTag = onlineTextView[1].getTag(); if (onlineTextViewTag instanceof String) { - onlineTextView[1].setTextColor(Theme.getColor((String) onlineTextViewTag)); + onlineTextView[1].setTextColor(getThemedColor((String) onlineTextViewTag)); } else { - onlineTextView[1].setTextColor(Theme.getColor(Theme.key_avatar_subtitleInProfileBlue)); + onlineTextView[1].setTextColor(getThemedColor(Theme.key_avatar_subtitleInProfileBlue)); } } if (lockIconDrawable != null) { - lockIconDrawable.setColorFilter(Theme.getColor(Theme.key_chat_lockIcon), PorterDuff.Mode.MULTIPLY); + lockIconDrawable.setColorFilter(getThemedColor(Theme.key_chat_lockIcon), PorterDuff.Mode.MULTIPLY); } if (scamDrawable != null) { - scamDrawable.setColor(Theme.getColor(Theme.key_avatar_subtitleInProfileBlue)); + scamDrawable.setColor(getThemedColor(Theme.key_avatar_subtitleInProfileBlue)); } if (nameTextView[1] != null) { - nameTextView[1].setTextColor(Theme.getColor(Theme.key_profile_title)); + nameTextView[1].setTextColor(getThemedColor(Theme.key_profile_title)); } if (actionBar != null) { - actionBar.setItemsColor(Theme.getColor(Theme.key_actionBarDefaultIcon), false); - actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_avatar_actionBarSelectorBlue), false); + actionBar.setItemsColor(getThemedColor(Theme.key_actionBarDefaultIcon), false); + actionBar.setItemsBackgroundColor(getThemedColor(Theme.key_avatar_actionBarSelectorBlue), false); } } }; @@ -8671,15 +8889,37 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. Drawable shadowDrawable = fragmentView.getContext().getResources().getDrawable(R.drawable.floating_shadow_profile).mutate(); shadowDrawable.setColorFilter(new PorterDuffColorFilter(Color.BLACK, PorterDuff.Mode.MULTIPLY)); CombinedDrawable combinedDrawable = new CombinedDrawable(shadowDrawable, - Theme.createSimpleSelectorCircleDrawable(AndroidUtilities.dp(56), Theme.getColor(Theme.key_profile_actionBackground), Theme.getColor(Theme.key_profile_actionPressedBackground)), + Theme.createSimpleSelectorCircleDrawable(AndroidUtilities.dp(56), getThemedColor(Theme.key_profile_actionBackground), getThemedColor(Theme.key_profile_actionPressedBackground)), 0, 0); combinedDrawable.setIconSize(AndroidUtilities.dp(56), AndroidUtilities.dp(56)); writeButton.setBackground(combinedDrawable); - } catch (Exception e) {} + } catch (Exception e) { + } } private boolean isQrNeedVisible() { - return !TextUtils.isEmpty(getUserConfig().getCurrentUser().username); + if (!TextUtils.isEmpty(getUserConfig().getCurrentUser().username)) { + return true; + } + final ArrayList privacyRules = ContactsController.getInstance(currentAccount).getPrivacyRules(ContactsController.PRIVACY_RULES_TYPE_PHONE); + if (privacyRules == null) { + return false; + } + int type = 2; + for (int i = 0; i < privacyRules.size(); ++i) { + TLRPC.PrivacyRule rule = privacyRules.get(i); + if (rule instanceof TLRPC.TL_privacyValueAllowAll) { + type = 0; + break; + } else if (rule instanceof TLRPC.TL_privacyValueDisallowAll) { + type = 2; + break; + } else if (rule instanceof TLRPC.TL_privacyValueAllowContacts) { + type = 1; + break; + } + } + return type == 0 || type == 1; } private class DiffCallback extends DiffUtil.Callback { @@ -8750,10 +8990,13 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. put(++pointer, settingsSectionRow2, sparseIntArray); put(++pointer, notificationRow, sparseIntArray); put(++pointer, languageRow, sparseIntArray); + put(++pointer, premiumRow, sparseIntArray); + put(++pointer, premiumSectionsRow, sparseIntArray); put(++pointer, privacyRow, sparseIntArray); put(++pointer, dataRow, sparseIntArray); put(++pointer, chatRow, sparseIntArray); put(++pointer, filtersRow, sparseIntArray); + put(++pointer, stickersRow, sparseIntArray); put(++pointer, devicesRow, sparseIntArray); put(++pointer, devicesSectionRow, sparseIntArray); put(++pointer, helpHeaderRow, sparseIntArray); @@ -8812,11 +9055,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return false; } if (actionBar.isActionModeShowed()) { - color = Theme.getColor(Theme.key_actionBarActionModeDefault); + color = getThemedColor(Theme.key_actionBarActionModeDefault); } else if (mediaHeaderVisible) { - color = Theme.getColor(Theme.key_windowBackgroundWhite); + color = getThemedColor(Theme.key_windowBackgroundWhite); } else { - color = Theme.getColor(Theme.key_actionBarDefault); + color = getThemedColor(Theme.key_actionBarDefault); } return ColorUtils.calculateLuminance(color) > 0.7f; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java index 6947ba75e..f854a711c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java @@ -11,8 +11,10 @@ package org.telegram.ui; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.media.Ringtone; @@ -25,7 +27,9 @@ import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; +import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -44,6 +48,7 @@ import org.telegram.messenger.R; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; @@ -68,20 +73,18 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi private RecyclerListView listView; private ListAdapter adapter; private AnimatorSet animatorSet; + private Theme.ResourcesProvider resourcesProvider; private long dialogId; private boolean addingException; - private boolean customEnabled; private boolean notificationsEnabled; private ProfileNotificationsActivityDelegate delegate; ChatAvatarContainer avatarContainer; - private int customRow; - private int customInfoRow; private int generalRow; private int avatarRow; private int avatarSectionRow; @@ -103,33 +106,40 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi private int ledRow; private int colorRow; private int ledInfoRow; + private int customResetRow; + private int customResetShadowRow; private int rowCount; + private boolean needReset; + private final static int done_button = 1; public interface ProfileNotificationsActivityDelegate { void didCreateNewException(NotificationsSettingsActivity.NotificationException exception); + default void didRemoveException(long dialog_id) {} } public ProfileNotificationsActivity(Bundle args) { + this(args, null); + } + + public ProfileNotificationsActivity(Bundle args, Theme.ResourcesProvider resourcesProvider) { super(args); + this.resourcesProvider = resourcesProvider; dialogId = args.getLong("dialog_id"); addingException = args.getBoolean("exception", false); } + @Override public boolean onFragmentCreate() { rowCount = 0; if (addingException) { avatarRow = rowCount++; avatarSectionRow = rowCount++; - customRow = -1; - customInfoRow = -1; } else { avatarRow = -1; avatarSectionRow = -1; - customRow = rowCount++; - customInfoRow = rowCount++; } generalRow = rowCount++; if (addingException) { @@ -190,23 +200,35 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi colorRow = rowCount++; ledInfoRow = rowCount++; - SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - customEnabled = preferences.getBoolean("custom_" + dialogId, false) || addingException; - - boolean hasOverride = preferences.contains("notify2_" + dialogId); - int value = preferences.getInt("notify2_" + dialogId, 0); - if (value == 0) { - if (hasOverride) { - notificationsEnabled = true; - } else { - notificationsEnabled = NotificationsController.getInstance(currentAccount).isGlobalNotificationsEnabled(dialogId); - } - } else if (value == 1) { - notificationsEnabled = true; - } else if (value == 2) { - notificationsEnabled = false; + if (!addingException) { + customResetRow = rowCount++; + customResetShadowRow = rowCount++; } else { - notificationsEnabled = false; + customResetRow = -1; + customResetShadowRow = -1; + } + + boolean defaultEnabled = NotificationsController.getInstance(currentAccount).isGlobalNotificationsEnabled(dialogId); + if (addingException) { + notificationsEnabled = !defaultEnabled; + } else { + SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); + + boolean hasOverride = preferences.contains("notify2_" + dialogId); + int value = preferences.getInt("notify2_" + dialogId, 0); + if (value == 0) { + if (hasOverride) { + notificationsEnabled = true; + } else { + notificationsEnabled = NotificationsController.getInstance(currentAccount).isGlobalNotificationsEnabled(dialogId); + } + } else if (value == 1) { + notificationsEnabled = true; + } else if (value == 2) { + notificationsEnabled = false; + } else { + notificationsEnabled = false; + } } NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.notificationsSettingsUpdated); @@ -216,26 +238,35 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi @Override public void onFragmentDestroy() { super.onFragmentDestroy(); + if (!needReset) { + MessagesController.getNotificationsSettings(currentAccount).edit().putBoolean("custom_" + dialogId, true).apply(); + } NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.notificationsSettingsUpdated); } + @Override + public Theme.ResourcesProvider getResourceProvider() { + return resourcesProvider; + } + @Override public View createView(final Context context) { + actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_avatar_actionBarSelectorBlue, resourcesProvider), false); + actionBar.setItemsColor(Theme.getColor(Theme.key_actionBarDefaultIcon, resourcesProvider), false); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { - if (!addingException && notificationsEnabled && customEnabled) { + if (!addingException && notificationsEnabled) { SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - preferences.edit().putInt("notify2_" + dialogId, 0).commit(); + preferences.edit().putInt("notify2_" + dialogId, 0).apply(); } } else if (id == done_button) { SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("custom_" + dialogId, true); - TLRPC.Dialog dialog = MessagesController.getInstance(currentAccount).dialogs_dict.get(dialogId); if (notificationsEnabled) { editor.putInt("notify2_" + dialogId, 0); @@ -253,7 +284,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi } } - editor.commit(); + editor.apply(); NotificationsController.getInstance(currentAccount).updateServerNotificationsSettings(dialogId); if (delegate != null) { NotificationsSettingsActivity.NotificationException exception = new NotificationsSettingsActivity.NotificationException(); @@ -270,7 +301,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi } }); - avatarContainer = new ChatAvatarContainer(context, null, false); + avatarContainer = new ChatAvatarContainer(context, null, false, resourcesProvider); avatarContainer.setOccupyStatusBar(!AndroidUtilities.isTablet()); actionBar.addView(avatarContainer, 0, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, !inPreviewMode ? 56 : 0, 0, 40, 0)); @@ -296,7 +327,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi fragmentView = new FrameLayout(context); FrameLayout frameLayout = (FrameLayout) fragmentView; - frameLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); + frameLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray, resourcesProvider)); listView = new RecyclerListView(context); frameLayout.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); @@ -309,135 +340,132 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi return false; } }); - listView.setOnItemClickListener(new RecyclerListView.OnItemClickListener() { - @Override - public void onItemClick(View view, int position) { - if (position == customRow && view instanceof TextCheckCell) { + listView.setOnItemClickListener((view, position) -> { + if (!view.isEnabled()) { + return; + } + if (position == customResetRow) { + AlertDialog dialog = new AlertDialog.Builder(context, resourcesProvider) + .setTitle(LocaleController.getString(R.string.ResetCustomNotificationsAlertTitle)) + .setMessage(LocaleController.getString(R.string.ResetCustomNotificationsAlert)) + .setPositiveButton(LocaleController.getString(R.string.Reset), (d, w) -> { + needReset = true; + + MessagesController.getNotificationsSettings(currentAccount).edit().putBoolean("custom_" + dialogId, false).remove("notify2_" + dialogId).apply(); + finishFragment(); + if (delegate != null) { + delegate.didRemoveException(dialogId); + } + }) + .setNegativeButton(LocaleController.getString(R.string.Cancel), null) + .create(); + showDialog(dialog); + TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); + if (button != null) { + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + } + } else if (position == soundRow) { + Bundle bundle = new Bundle(); + bundle.putLong("dialog_id", dialogId); + presentFragment(new NotificationsSoundActivity(bundle, resourcesProvider)); + } else if (position == ringtoneRow) { + try { + Intent tmpIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); + tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE); + tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); + tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true); + tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)); SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - customEnabled = !customEnabled; - notificationsEnabled = customEnabled; - preferences.edit().putBoolean("custom_" + dialogId, customEnabled).apply(); - TextCheckCell cell = (TextCheckCell) view; - cell.setChecked(customEnabled); - int clr = Theme.getColor(customEnabled ? Theme.key_windowBackgroundChecked : Theme.key_windowBackgroundUnchecked); - if (customEnabled) { - cell.setBackgroundColorAnimated(customEnabled, clr); - } else { - cell.setBackgroundColorAnimatedReverse(clr); + Uri currentSound = null; + + String defaultPath = null; + Uri defaultUri = Settings.System.DEFAULT_NOTIFICATION_URI; + if (defaultUri != null) { + defaultPath = defaultUri.getPath(); } - checkRowsEnabled(); - } else if (customEnabled) { - if (!view.isEnabled()) { - return; - } - if (position == soundRow) { - Bundle bundle = new Bundle(); - bundle.putLong("dialog_id", dialogId); - presentFragment(new NotificationsSoundActivity(bundle)); - } else if (position == ringtoneRow) { - try { - Intent tmpIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); - tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE); - tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); - tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true); - tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)); - SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - Uri currentSound = null; - String defaultPath = null; - Uri defaultUri = Settings.System.DEFAULT_NOTIFICATION_URI; - if (defaultUri != null) { - defaultPath = defaultUri.getPath(); - } - - String path = preferences.getString("ringtone_path_" + dialogId, defaultPath); - if (path != null && !path.equals("NoSound")) { - if (path.equals(defaultPath)) { - currentSound = defaultUri; - } else { - currentSound = Uri.parse(path); - } - } - - tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currentSound); - startActivityForResult(tmpIntent, 13); - } catch (Exception e) { - FileLog.e(e); - } - } else if (position == vibrateRow) { - showDialog(AlertsCreator.createVibrationSelectDialog(getParentActivity(), dialogId, false, false, () -> { - if (adapter != null) { - adapter.notifyItemChanged(vibrateRow); - } - })); - } else if (position == enableRow) { - TextCheckCell checkCell = (TextCheckCell) view; - notificationsEnabled = !checkCell.isChecked(); - checkCell.setChecked(notificationsEnabled); - checkRowsEnabled(); - } else if (position == previewRow) { - TextCheckCell checkCell = (TextCheckCell) view; - SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - preferences.edit().putBoolean("content_preview_" + dialogId, !checkCell.isChecked()).commit(); - checkCell.setChecked(!checkCell.isChecked()); - } else if (position == callsVibrateRow) { - showDialog(AlertsCreator.createVibrationSelectDialog(getParentActivity(), dialogId, "calls_vibrate_" + dialogId, () -> { - if (adapter != null) { - adapter.notifyItemChanged(callsVibrateRow); - } - })); - } else if (position == priorityRow) { - showDialog(AlertsCreator.createPrioritySelectDialog(getParentActivity(), dialogId, -1, () -> { - if (adapter != null) { - adapter.notifyItemChanged(priorityRow); - } - })); - } else if (position == smartRow) { - if (getParentActivity() == null) { - return; - } - final Context context1 = getParentActivity(); - SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - int notifyMaxCount = preferences.getInt("smart_max_count_" + dialogId, 2); - int notifyDelay = preferences.getInt("smart_delay_" + dialogId, 3 * 60); - if (notifyMaxCount == 0) { - notifyMaxCount = 2; - } - AlertsCreator.createSoundFrequencyPickerDialog(getParentActivity(), notifyMaxCount, notifyDelay, (time, minute) -> { - MessagesController.getNotificationsSettings(currentAccount).edit() - .putInt("smart_max_count_" + dialogId, time) - .putInt("smart_delay_" + dialogId, minute) - .apply(); - if (adapter != null) { - adapter.notifyItemChanged(smartRow); - } - }); - } else if (position == colorRow) { - if (getParentActivity() == null) { - return; - } - showDialog(AlertsCreator.createColorSelectDialog(getParentActivity(), dialogId, -1, () -> { - if (adapter != null) { - adapter.notifyItemChanged(colorRow); - } - })); - } else if (position == popupEnabledRow) { - SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - preferences.edit().putInt("popup_" + dialogId, 1).commit(); - ((RadioCell) view).setChecked(true, true); - view = listView.findViewWithTag(2); - if (view != null) { - ((RadioCell) view).setChecked(false, true); - } - } else if (position == popupDisabledRow) { - SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - preferences.edit().putInt("popup_" + dialogId, 2).commit(); - ((RadioCell) view).setChecked(true, true); - view = listView.findViewWithTag(1); - if (view != null) { - ((RadioCell) view).setChecked(false, true); + String path = preferences.getString("ringtone_path_" + dialogId, defaultPath); + if (path != null && !path.equals("NoSound")) { + if (path.equals(defaultPath)) { + currentSound = defaultUri; + } else { + currentSound = Uri.parse(path); } } + + tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currentSound); + startActivityForResult(tmpIntent, 13); + } catch (Exception e) { + FileLog.e(e); + } + } else if (position == vibrateRow) { + showDialog(AlertsCreator.createVibrationSelectDialog(getParentActivity(), dialogId, false, false, () -> { + if (adapter != null) { + adapter.notifyItemChanged(vibrateRow); + } + }, resourcesProvider)); + } else if (position == enableRow) { + TextCheckCell checkCell = (TextCheckCell) view; + notificationsEnabled = !checkCell.isChecked(); + checkCell.setChecked(notificationsEnabled); + checkRowsEnabled(); + } else if (position == previewRow) { + TextCheckCell checkCell = (TextCheckCell) view; + MessagesController.getNotificationsSettings(currentAccount).edit().putBoolean("content_preview_" + dialogId, !checkCell.isChecked()).apply(); + checkCell.setChecked(!checkCell.isChecked()); + } else if (position == callsVibrateRow) { + showDialog(AlertsCreator.createVibrationSelectDialog(getParentActivity(), dialogId, "calls_vibrate_" + dialogId, () -> { + if (adapter != null) { + adapter.notifyItemChanged(callsVibrateRow); + } + }, resourcesProvider)); + } else if (position == priorityRow) { + showDialog(AlertsCreator.createPrioritySelectDialog(getParentActivity(), dialogId, -1, () -> { + if (adapter != null) { + adapter.notifyItemChanged(priorityRow); + } + }, resourcesProvider)); + } else if (position == smartRow) { + if (getParentActivity() == null) { + return; + } + SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); + int notifyMaxCount = preferences.getInt("smart_max_count_" + dialogId, 2); + int notifyDelay = preferences.getInt("smart_delay_" + dialogId, 3 * 60); + if (notifyMaxCount == 0) { + notifyMaxCount = 2; + } + AlertsCreator.createSoundFrequencyPickerDialog(getParentActivity(), notifyMaxCount, notifyDelay, (time, minute) -> { + MessagesController.getNotificationsSettings(currentAccount).edit() + .putInt("smart_max_count_" + dialogId, time) + .putInt("smart_delay_" + dialogId, minute) + .apply(); + if (adapter != null) { + adapter.notifyItemChanged(smartRow); + } + }, resourcesProvider); + } else if (position == colorRow) { + if (getParentActivity() == null) { + return; + } + showDialog(AlertsCreator.createColorSelectDialog(getParentActivity(), dialogId, -1, () -> { + if (adapter != null) { + adapter.notifyItemChanged(colorRow); + } + }, resourcesProvider)); + } else if (position == popupEnabledRow) { + MessagesController.getNotificationsSettings(currentAccount).edit().putInt("popup_" + dialogId, 1).apply(); + ((RadioCell) view).setChecked(true, true); + view = listView.findViewWithTag(2); + if (view != null) { + ((RadioCell) view).setChecked(false, true); + } + } else if (position == popupDisabledRow) { + MessagesController.getNotificationsSettings(currentAccount).edit().putInt("popup_" + dialogId, 2).apply(); + ((RadioCell) view).setChecked(true, true); + view = listView.findViewWithTag(1); + if (view != null) { + ((RadioCell) view).setChecked(false, true); } } }); @@ -494,21 +522,20 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi editor.putString("ringtone_path_" + dialogId, "NoSound"); } } - editor.commit(); + editor.apply(); if (adapter != null) { adapter.notifyItemChanged(requestCode == 13 ? ringtoneRow : soundRow); } } } + @SuppressLint("NotifyDataSetChanged") @Override public void didReceivedNotification(int id, int account, Object... args) { if (id == NotificationCenter.notificationsSettingsUpdated) { try { adapter.notifyDataSetChanged(); - } catch (Exception e) { - - } + } catch (Exception ignored) {} } } @@ -524,37 +551,37 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi RecyclerListView.Holder holder = (RecyclerListView.Holder) listView.getChildViewHolder(child); int type = holder.getItemViewType(); int position = holder.getAdapterPosition(); - if (position != customRow && position != enableRow) { + if (position != enableRow && position != customResetRow) { switch (type) { - case 0: { + case ListAdapter.VIEW_TYPE_HEADER: { HeaderCell textCell = (HeaderCell) holder.itemView; - textCell.setEnabled(customEnabled && notificationsEnabled, animators); + textCell.setEnabled(notificationsEnabled, animators); break; } - case 1: { + case ListAdapter.VIEW_TYPE_TEXT_SETTINGS: { TextSettingsCell textCell = (TextSettingsCell) holder.itemView; - textCell.setEnabled(customEnabled && notificationsEnabled, animators); + textCell.setEnabled(notificationsEnabled, animators); break; } - case 2: { + case ListAdapter.VIEW_TYPE_INFO: { TextInfoPrivacyCell textCell = (TextInfoPrivacyCell) holder.itemView; - textCell.setEnabled(customEnabled && notificationsEnabled, animators); + textCell.setEnabled(notificationsEnabled, animators); break; } - case 3: { + case ListAdapter.VIEW_TYPE_TEXT_COLOR: { TextColorCell textCell = (TextColorCell) holder.itemView; - textCell.setEnabled(customEnabled && notificationsEnabled, animators); + textCell.setEnabled(notificationsEnabled, animators); break; } - case 4: { + case ListAdapter.VIEW_TYPE_RADIO: { RadioCell radioCell = (RadioCell) holder.itemView; - radioCell.setEnabled(customEnabled && notificationsEnabled, animators); + radioCell.setEnabled(notificationsEnabled, animators); break; } - case 8: { + case ListAdapter.VIEW_TYPE_TEXT_CHECK: { if (position == previewRow) { TextCheckCell checkCell = (TextCheckCell) holder.itemView; - checkCell.setEnabled(customEnabled && notificationsEnabled, animators); + checkCell.setEnabled(notificationsEnabled, animators); } break; } @@ -581,6 +608,14 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi } private class ListAdapter extends RecyclerListView.SelectionAdapter { + private final static int VIEW_TYPE_HEADER = 0, + VIEW_TYPE_TEXT_SETTINGS = 1, + VIEW_TYPE_INFO = 2, + VIEW_TYPE_TEXT_COLOR = 3, + VIEW_TYPE_RADIO = 4, + VIEW_TYPE_USER = 5, + VIEW_TYPE_SHADOW = 6, + VIEW_TYPE_TEXT_CHECK = 7; private Context context; @@ -595,71 +630,65 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi @Override public boolean isEnabled(RecyclerView.ViewHolder holder) { + if (holder.getAdapterPosition() == previewRow) { + return notificationsEnabled; + } else if (holder.getAdapterPosition() == customResetRow) { + return true; + } switch (holder.getItemViewType()) { - case 1: - case 3: - case 4: { - return customEnabled && notificationsEnabled; + case VIEW_TYPE_TEXT_SETTINGS: + case VIEW_TYPE_TEXT_COLOR: + case VIEW_TYPE_RADIO: { + return notificationsEnabled; } - case 0: - case 2: - case 6: - case 7: { + case VIEW_TYPE_HEADER: + case VIEW_TYPE_INFO: + case VIEW_TYPE_USER: + case VIEW_TYPE_SHADOW: { return false; } - case 8: { - TextCheckCell checkCell = (TextCheckCell) holder.itemView; - if (holder.getAdapterPosition() == previewRow) { - return customEnabled && notificationsEnabled; - } else { - return true; - } + case VIEW_TYPE_TEXT_CHECK: { + return true; } } return true; } + @NonNull @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view; switch (viewType) { - case 0: - view = new HeaderCell(context); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + case VIEW_TYPE_HEADER: + view = new HeaderCell(context, resourcesProvider); + view.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); break; - case 1: - view = new TextSettingsCell(context); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + case VIEW_TYPE_TEXT_SETTINGS: + view = new TextSettingsCell(context, resourcesProvider); + view.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); break; - case 2: - view = new TextInfoPrivacyCell(context); + case VIEW_TYPE_INFO: + view = new TextInfoPrivacyCell(context, resourcesProvider); break; - case 3: - view = new TextColorCell(context); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + case VIEW_TYPE_TEXT_COLOR: + view = new TextColorCell(context, resourcesProvider); + view.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); break; - case 4: - view = new RadioCell(context); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + case VIEW_TYPE_RADIO: + view = new RadioCell(context, resourcesProvider); + view.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); break; - case 5: - TextCheckCell checkBoxCell = new TextCheckCell(context); - checkBoxCell.setHeight(56); - checkBoxCell.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - checkBoxCell.setColors(Theme.key_windowBackgroundCheckText, Theme.key_switchTrackBlue, Theme.key_switchTrackBlueChecked, Theme.key_switchTrackBlueThumb, Theme.key_switchTrackBlueThumbChecked); - view = checkBoxCell; + case VIEW_TYPE_USER: + view = new UserCell2(context, 4, 0, resourcesProvider); + view.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); break; - case 6: - view = new UserCell2(context, 4, 0); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + case VIEW_TYPE_SHADOW: + view = new ShadowSectionCell(context, resourcesProvider); break; - case 7: - view = new ShadowSectionCell(context); - break; - case 8: + case VIEW_TYPE_TEXT_CHECK: default: - view = new TextCheckCell(context); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + view = new TextCheckCell(context, resourcesProvider); + view.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); break; } view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT)); @@ -669,7 +698,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (holder.getItemViewType()) { - case 0: { + case VIEW_TYPE_HEADER: { HeaderCell headerCell = (HeaderCell) holder.itemView; if (position == generalRow) { headerCell.setText(LocaleController.getString("General", R.string.General)); @@ -682,103 +711,106 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi } break; } - case 1: { + case VIEW_TYPE_TEXT_SETTINGS: { TextSettingsCell textCell = (TextSettingsCell) holder.itemView; SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); - if (position == soundRow) { - String value = preferences.getString("sound_" + dialogId, LocaleController.getString("SoundDefault", R.string.SoundDefault)); - long documentId = preferences.getLong("sound_document_id_" + dialogId, 0); - if (documentId != 0) { - TLRPC.Document document = getMediaDataController().ringtoneDataStore.getDocument(documentId); - if (document == null) { - value = LocaleController.getString("CustomSound", R.string.CustomSound); - } else { - value = NotificationsSoundActivity.trimTitle(document, document.file_name_fixed); + if (position == customResetRow) { + textCell.setText(LocaleController.getString(R.string.ResetCustomNotifications), false); + textCell.setTextColor(getThemedColor(Theme.key_dialogTextRed)); + } else { + textCell.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); + if (position == soundRow) { + String value = preferences.getString("sound_" + dialogId, LocaleController.getString("SoundDefault", R.string.SoundDefault)); + long documentId = preferences.getLong("sound_document_id_" + dialogId, 0); + if (documentId != 0) { + TLRPC.Document document = getMediaDataController().ringtoneDataStore.getDocument(documentId); + if (document == null) { + value = LocaleController.getString("CustomSound", R.string.CustomSound); + } else { + value = NotificationsSoundActivity.trimTitle(document, document.file_name_fixed); + } + } else if (value.equals("NoSound")) { + value = LocaleController.getString("NoSound", R.string.NoSound); + } else if (value.equals("Default")) { + value = LocaleController.getString("SoundDefault", R.string.SoundDefault); + } + textCell.setTextAndValue(LocaleController.getString("Sound", R.string.Sound), value, true); + } else if (position == ringtoneRow) { + String value = preferences.getString("ringtone_" + dialogId, LocaleController.getString("DefaultRingtone", R.string.DefaultRingtone)); + if (value.equals("NoSound")) { + value = LocaleController.getString("NoSound", R.string.NoSound); + } + textCell.setTextAndValue(LocaleController.getString("VoipSettingsRingtone", R.string.VoipSettingsRingtone), value, false); + } else if (position == vibrateRow) { + int value = preferences.getInt("vibrate_" + dialogId, 0); + if (value == 0 || value == 4) { + textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("VibrationDefault", R.string.VibrationDefault), smartRow != -1 || priorityRow != -1); + } else if (value == 1) { + textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("Short", R.string.Short), smartRow != -1 || priorityRow != -1); + } else if (value == 2) { + textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("VibrationDisabled", R.string.VibrationDisabled), smartRow != -1 || priorityRow != -1); + } else if (value == 3) { + textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("Long", R.string.Long), smartRow != -1 || priorityRow != -1); + } + } else if (position == priorityRow) { + int value = preferences.getInt("priority_" + dialogId, 3); + if (value == 0) { + textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPriorityHigh", R.string.NotificationsPriorityHigh), false); + } else if (value == 1 || value == 2) { + textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPriorityUrgent", R.string.NotificationsPriorityUrgent), false); + } else if (value == 3) { + textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPrioritySettings", R.string.NotificationsPrioritySettings), false); + } else if (value == 4) { + textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPriorityLow", R.string.NotificationsPriorityLow), false); + } else if (value == 5) { + textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPriorityMedium", R.string.NotificationsPriorityMedium), false); + } + } else if (position == smartRow) { + int notifyMaxCount = preferences.getInt("smart_max_count_" + dialogId, 2); + int notifyDelay = preferences.getInt("smart_delay_" + dialogId, 3 * 60); + if (notifyMaxCount == 0) { + textCell.setTextAndValue(LocaleController.getString("SmartNotifications", R.string.SmartNotifications), LocaleController.getString("SmartNotificationsDisabled", R.string.SmartNotificationsDisabled), priorityRow != -1); + } else { + String minutes = LocaleController.formatPluralString("Minutes", notifyDelay / 60); + textCell.setTextAndValue(LocaleController.getString("SmartNotifications", R.string.SmartNotifications), LocaleController.formatString("SmartNotificationsInfo", R.string.SmartNotificationsInfo, notifyMaxCount, minutes), priorityRow != -1); + } + } else if (position == callsVibrateRow) { + int value = preferences.getInt("calls_vibrate_" + dialogId, 0); + if (value == 0 || value == 4) { + textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("VibrationDefault", R.string.VibrationDefault), true); + } else if (value == 1) { + textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("Short", R.string.Short), true); + } else if (value == 2) { + textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("VibrationDisabled", R.string.VibrationDisabled), true); + } else if (value == 3) { + textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("Long", R.string.Long), true); } - } else if (value.equals("NoSound")) { - value = LocaleController.getString("NoSound", R.string.NoSound); - } else if (value.equals("Default")) { - value = LocaleController.getString("SoundDefault", R.string.SoundDefault); - } - textCell.setTextAndValue(LocaleController.getString("Sound", R.string.Sound), value, true); - } else if (position == ringtoneRow) { - String value = preferences.getString("ringtone_" + dialogId, LocaleController.getString("DefaultRingtone", R.string.DefaultRingtone)); - if (value.equals("NoSound")) { - value = LocaleController.getString("NoSound", R.string.NoSound); - } - textCell.setTextAndValue(LocaleController.getString("VoipSettingsRingtone", R.string.VoipSettingsRingtone), value, false); - } else if (position == vibrateRow) { - int value = preferences.getInt("vibrate_" + dialogId, 0); - if (value == 0 || value == 4) { - textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("VibrationDefault", R.string.VibrationDefault), smartRow != -1 || priorityRow != -1); - } else if (value == 1) { - textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("Short", R.string.Short), smartRow != -1 || priorityRow != -1); - } else if (value == 2) { - textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("VibrationDisabled", R.string.VibrationDisabled), smartRow != -1 || priorityRow != -1); - } else if (value == 3) { - textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("Long", R.string.Long), smartRow != -1 || priorityRow != -1); - } - } else if (position == priorityRow) { - int value = preferences.getInt("priority_" + dialogId, 3); - if (value == 0) { - textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPriorityHigh", R.string.NotificationsPriorityHigh), false); - } else if (value == 1 || value == 2) { - textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPriorityUrgent", R.string.NotificationsPriorityUrgent), false); - } else if (value == 3) { - textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPrioritySettings", R.string.NotificationsPrioritySettings), false); - } else if (value == 4) { - textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPriorityLow", R.string.NotificationsPriorityLow), false); - } else if (value == 5) { - textCell.setTextAndValue(LocaleController.getString("NotificationsImportance", R.string.NotificationsImportance), LocaleController.getString("NotificationsPriorityMedium", R.string.NotificationsPriorityMedium), false); - } - } else if (position == smartRow) { - int notifyMaxCount = preferences.getInt("smart_max_count_" + dialogId, 2); - int notifyDelay = preferences.getInt("smart_delay_" + dialogId, 3 * 60); - if (notifyMaxCount == 0) { - textCell.setTextAndValue(LocaleController.getString("SmartNotifications", R.string.SmartNotifications), LocaleController.getString("SmartNotificationsDisabled", R.string.SmartNotificationsDisabled), priorityRow != -1); - } else { - String minutes = LocaleController.formatPluralString("Minutes", notifyDelay / 60); - textCell.setTextAndValue(LocaleController.getString("SmartNotifications", R.string.SmartNotifications), LocaleController.formatString("SmartNotificationsInfo", R.string.SmartNotificationsInfo, notifyMaxCount, minutes), priorityRow != -1); - } - } else if (position == callsVibrateRow) { - int value = preferences.getInt("calls_vibrate_" + dialogId, 0); - if (value == 0 || value == 4) { - textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("VibrationDefault", R.string.VibrationDefault), true); - } else if (value == 1) { - textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("Short", R.string.Short), true); - } else if (value == 2) { - textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("VibrationDisabled", R.string.VibrationDisabled), true); - } else if (value == 3) { - textCell.setTextAndValue(LocaleController.getString("Vibrate", R.string.Vibrate), LocaleController.getString("Long", R.string.Long), true); } } break; } - case 2: { + case VIEW_TYPE_INFO: { TextInfoPrivacyCell textCell = (TextInfoPrivacyCell) holder.itemView; if (position == popupInfoRow) { textCell.setText(LocaleController.getString("ProfilePopupNotificationInfo", R.string.ProfilePopupNotificationInfo)); - textCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); + textCell.setBackground(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); } else if (position == ledInfoRow) { textCell.setText(LocaleController.getString("NotificationsLedInfo", R.string.NotificationsLedInfo)); - textCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + textCell.setBackground(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); } else if (position == priorityInfoRow) { if (priorityRow == -1) { textCell.setText(""); } else { textCell.setText(LocaleController.getString("PriorityInfo", R.string.PriorityInfo)); } - textCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); - } else if (position == customInfoRow) { - textCell.setText(null); - textCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); + textCell.setBackground(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); } else if (position == ringtoneInfoRow) { textCell.setText(LocaleController.getString("VoipRingtoneInfo", R.string.VoipRingtoneInfo)); - textCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); + textCell.setBackground(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); } break; } - case 3: { + case VIEW_TYPE_TEXT_COLOR: { TextColorCell textCell = (TextColorCell) holder.itemView; SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); int color; @@ -800,7 +832,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi textCell.setTextAndColor(LocaleController.getString("NotificationsLedColor", R.string.NotificationsLedColor), color, false); break; } - case 4: { + case VIEW_TYPE_RADIO: { RadioCell radioCell = (RadioCell) holder.itemView; SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); int popup = preferences.getInt("popup_" + dialogId, 0); @@ -821,13 +853,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi } break; } - case 5: { - TextCheckCell cell = (TextCheckCell) holder.itemView; - cell.setBackgroundColor(Theme.getColor(customEnabled && notificationsEnabled ? Theme.key_windowBackgroundChecked : Theme.key_windowBackgroundUnchecked)); - cell.setTextAndCheck(LocaleController.getString("NotificationsEnableCustom", R.string.NotificationsEnableCustom), customEnabled && notificationsEnabled, false); - break; - } - case 6: { + case VIEW_TYPE_USER: { UserCell2 userCell2 = (UserCell2) holder.itemView; TLObject object; if (DialogObject.isUserDialog(dialogId)) { @@ -838,7 +864,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi userCell2.setData(object, null, null, 0); break; } - case 8: { + case VIEW_TYPE_TEXT_CHECK: { TextCheckCell checkCell = (TextCheckCell) holder.itemView; SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); if (position == enableRow) { @@ -854,35 +880,39 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi @Override public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) { switch (holder.getItemViewType()) { - case 0: { + case VIEW_TYPE_HEADER: { HeaderCell textCell = (HeaderCell) holder.itemView; - textCell.setEnabled(customEnabled && notificationsEnabled, null); + textCell.setEnabled(notificationsEnabled, null); break; } - case 1: { + case VIEW_TYPE_TEXT_SETTINGS: { TextSettingsCell textCell = (TextSettingsCell) holder.itemView; - textCell.setEnabled(customEnabled && notificationsEnabled, null); + if (holder.getAdapterPosition() == customResetRow) { + textCell.setEnabled(true, null); + } else { + textCell.setEnabled(notificationsEnabled, null); + } break; } - case 2: { + case VIEW_TYPE_INFO: { TextInfoPrivacyCell textCell = (TextInfoPrivacyCell) holder.itemView; - textCell.setEnabled(customEnabled && notificationsEnabled, null); + textCell.setEnabled(notificationsEnabled, null); break; } - case 3: { + case VIEW_TYPE_TEXT_COLOR: { TextColorCell textCell = (TextColorCell) holder.itemView; - textCell.setEnabled(customEnabled && notificationsEnabled, null); + textCell.setEnabled(notificationsEnabled, null); break; } - case 4: { + case VIEW_TYPE_RADIO: { RadioCell radioCell = (RadioCell) holder.itemView; - radioCell.setEnabled(customEnabled && notificationsEnabled, null); + radioCell.setEnabled(notificationsEnabled, null); break; } - case 8: { + case VIEW_TYPE_TEXT_CHECK: { TextCheckCell checkCell = (TextCheckCell) holder.itemView; if (holder.getAdapterPosition() == previewRow) { - checkCell.setEnabled(customEnabled && notificationsEnabled, null); + checkCell.setEnabled(notificationsEnabled, null); } else { checkCell.setEnabled(true, null); } @@ -893,28 +923,31 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi @Override public int getItemViewType(int position) { if (position == generalRow || position == popupRow || position == ledRow || position == callsRow) { - return 0; - } else if (position == soundRow || position == vibrateRow || position == priorityRow || position == smartRow || position == ringtoneRow || position == callsVibrateRow) { - return 1; - } else if (position == popupInfoRow || position == ledInfoRow || position == priorityInfoRow || position == customInfoRow || position == ringtoneInfoRow) { - return 2; + return VIEW_TYPE_HEADER; + } else if (position == soundRow || position == vibrateRow || position == priorityRow || position == smartRow || position == ringtoneRow || position == callsVibrateRow || position == customResetRow) { + return VIEW_TYPE_TEXT_SETTINGS; + } else if (position == popupInfoRow || position == ledInfoRow || position == priorityInfoRow || position == ringtoneInfoRow) { + return VIEW_TYPE_INFO; } else if (position == colorRow) { - return 3; + return VIEW_TYPE_TEXT_COLOR; } else if (position == popupEnabledRow || position == popupDisabledRow) { - return 4; - } else if (position == customRow) { - return 5; + return VIEW_TYPE_RADIO; } else if (position == avatarRow) { - return 6; - } else if (position == avatarSectionRow) { - return 7; + return VIEW_TYPE_USER; + } else if (position == avatarSectionRow || position == customResetShadowRow) { + return VIEW_TYPE_SHADOW; } else if (position == enableRow || position == previewRow) { - return 8; + return VIEW_TYPE_TEXT_CHECK; } - return 0; + return VIEW_TYPE_HEADER; } } + @Override + public int getNavigationBarColor() { + return getThemedColor(Theme.key_windowBackgroundGray); + } + @Override public ArrayList getThemeDescriptions() { ArrayList themeDescriptions = new ArrayList<>(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProxyListActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProxyListActivity.java index 45a285237..ba192280a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProxyListActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProxyListActivity.java @@ -25,6 +25,11 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DownloadController; import org.telegram.messenger.LocaleController; @@ -46,11 +51,6 @@ import org.telegram.ui.Cells.TextSettingsCell; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RecyclerListView; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import java.util.ArrayList; import java.util.List; @@ -112,7 +112,7 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, (LocaleController.isRTL ? 56 : 21), 35, (LocaleController.isRTL ? 21 : 56), 0)); checkImageView = new ImageView(context); - checkImageView.setImageResource(R.drawable.profile_info); + checkImageView.setImageResource(R.drawable.msg_info); checkImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText3), PorterDuff.Mode.MULTIPLY)); checkImageView.setScaleType(ImageView.ScaleType.CENTER); checkImageView.setContentDescription(LocaleController.getString("Edit", R.string.Edit)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProxySettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProxySettingsActivity.java index 5b5241bb2..d8b77088c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProxySettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProxySettingsActivity.java @@ -249,7 +249,7 @@ public class ProxySettingsActivity extends BaseFragment { } }); - doneItem = actionBar.createMenu().addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); + doneItem = actionBar.createMenu().addItemWithWidth(done_button, R.drawable.ic_ab_done, AndroidUtilities.dp(56)); doneItem.setContentDescription(LocaleController.getString("Done", R.string.Done)); fragmentView = new FrameLayout(context); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/QrActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/QrActivity.java index 830d1ff8e..eb3da7d2a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/QrActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/QrActivity.java @@ -38,7 +38,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.Window; -import android.view.animation.DecelerateInterpolator; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -66,6 +66,7 @@ import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.SvgHelper; +import org.telegram.messenger.UserObject; import org.telegram.tgnet.ResultCallback; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBarLayout; @@ -260,12 +261,19 @@ public class QrActivity extends BaseFragment { AvatarDrawable avatarDrawable = null; String username = null; + boolean isPhone = false; + String userfullname = null; ImageLocation imageLocationSmall = null; ImageLocation imageLocation = null; if (userId != 0) { TLRPC.User user = getMessagesController().getUser(userId); if (user != null) { username = user.username; + if (username == null) { + userfullname = UserObject.getUserName(user); + username = user.phone; + isPhone = true; + } avatarDrawable = new AvatarDrawable(user); imageLocationSmall = ImageLocation.getForUser(user, ImageLocation.TYPE_SMALL); imageLocation = ImageLocation.getForUser(user, ImageLocation.TYPE_BIG); @@ -283,7 +291,7 @@ public class QrActivity extends BaseFragment { String link = "https://" + MessagesController.getInstance(currentAccount).linkPrefix + "/" + username; qrView = new QrView(context); qrView.setColors(0xFF71B654, 0xFF2C9077, 0xFF9ABB3E, 0xFF68B55E); - qrView.setData(link, username); + qrView.setData(link, userfullname != null ? userfullname : username, isPhone); qrView.setCenterChangedListener((left, top, right, bottom) -> { logoRect.set(left, top, right, bottom); qrView.requestLayout(); @@ -476,7 +484,7 @@ public class QrActivity extends BaseFragment { private void onPatternLoaded(Bitmap bitmap, int intensity, boolean withAnimation) { if (bitmap != null) { - currMotionDrawable.setPatternBitmap(intensity, bitmap); + currMotionDrawable.setPatternBitmap(intensity, bitmap, true); if (patternIntensityAnimator != null) { patternIntensityAnimator.cancel(); } @@ -491,34 +499,6 @@ public class QrActivity extends BaseFragment { } } - @Override - protected AnimatorSet onCustomTransitionAnimation(boolean isOpen, Runnable callback) { - if (isOpen) { - fragmentView.setAlpha(0f); - fragmentView.setTranslationX(AndroidUtilities.dp(48)); - } - - AnimatorSet animator = new AnimatorSet(); - animator.playTogether( - ObjectAnimator.ofFloat(fragmentView, View.TRANSLATION_X, isOpen ? 0 : AndroidUtilities.dp(48)), - ObjectAnimator.ofFloat(fragmentView, View.ALPHA, isOpen ? 1f : 0f) - ); - if (!isOpen) - animator.setInterpolator(new DecelerateInterpolator(1.5f)); - else - animator.setInterpolator(CubicBezierInterpolator.EASE_IN); - animator.setDuration(isOpen ? 200 : 150); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animator) { - if (callback != null) - callback.run(); - } - }); - animator.start(); - return animator; - } - private void onItemSelected(EmojiThemes newTheme, int position, boolean withAnimation) { selectedPosition = position; final EmojiThemes prevTheme = currentTheme; @@ -562,7 +542,12 @@ public class QrActivity extends BaseFragment { } }); } else { - currMotionDrawable.setPatternBitmap(34, SvgHelper.getBitmap(R.raw.default_pattern, backgroundView.getWidth(), backgroundView.getHeight(), Color.BLACK)); + ChatThemeController.chatThemeQueue.postRunnable(() -> { + final Bitmap bitmap = SvgHelper.getBitmap(R.raw.default_pattern, backgroundView.getWidth(), backgroundView.getHeight(), Color.BLACK); + AndroidUtilities.runOnUIThread(() -> { + onPatternLoaded(bitmap, 34, true); + }); + }); } currMotionDrawable.setPatternColorFilter(currMotionDrawable.getPatternColor()); @@ -729,6 +714,7 @@ public class QrActivity extends BaseFragment { private Bitmap backgroundBitmap; private Bitmap contentBitmap; private String username; + private boolean isPhone; private String link; QrView(Context context) { @@ -781,8 +767,9 @@ public class QrActivity extends BaseFragment { this.centerChangedListener = centerChangedListener; } - void setData(String link, String username) { + void setData(String link, String username, boolean isPhone) { this.username = username; + this.isPhone = isPhone; this.link = link; prepareContent(getWidth(), getHeight()); invalidate(); @@ -832,8 +819,10 @@ public class QrActivity extends BaseFragment { drawable.setColorFilter(new PorterDuffColorFilter(qrColor, PorterDuff.Mode.SRC_IN)); } - SpannableStringBuilder string = new SpannableStringBuilder(" " + username.toUpperCase()); - string.setSpan(new SettingsSearchCell.VerticalImageSpan(drawable), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + SpannableStringBuilder string = new SpannableStringBuilder(" " + (isPhone ? username : username.toUpperCase())); + if (!isPhone) { + string.setSpan(new SettingsSearchCell.VerticalImageSpan(drawable), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } float textWidth = textPaint.measureText(string, 1, string.length()) + drawable.getBounds().width(); if (i <= 1 && textWidth > textMaxWidth) { continue; @@ -1045,7 +1034,17 @@ public class QrActivity extends BaseFragment { darkThemeDrawable.setPlayInDirectionOfCustomEndFrame(true); darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(drawableColor, PorterDuff.Mode.MULTIPLY)); - darkThemeView = new RLottieImageView(context); + darkThemeView = new RLottieImageView(context) { + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (isCurrentThemeDark) { + info.setText(LocaleController.getString("AccDescrSwitchToDayTheme", R.string.AccDescrSwitchToDayTheme)); + } else { + info.setText(LocaleController.getString("AccDescrSwitchToNightTheme", R.string.AccDescrSwitchToNightTheme)); + } + } + }; darkThemeView.setAnimation(darkThemeDrawable); darkThemeView.setScaleType(ImageView.ScaleType.CENTER); darkThemeView.setOnClickListener(view -> { @@ -1094,7 +1093,7 @@ public class QrActivity extends BaseFragment { rootLayout.addView(bottomShadow); shareButton = new TextView(context); - shareButton.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(6), fragment.getThemedColor(Theme.key_featuredStickers_addButton), fragment.getThemedColor(Theme.key_featuredStickers_addButtonPressed))); + shareButton.setBackground(Theme.AdaptiveRipple.filledRect(fragment.getThemedColor(Theme.key_featuredStickers_addButton), 6)); shareButton.setEllipsize(TextUtils.TruncateAt.END); shareButton.setGravity(Gravity.CENTER); shareButton.setLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SecretMediaViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/SecretMediaViewer.java index 03b6032d9..9a6b36d90 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SecretMediaViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SecretMediaViewer.java @@ -792,7 +792,7 @@ public class SecretMediaViewer implements NotificationCenter.NotificationCenterD if (f.exists()) { preparePlayer(f); } else { - File file = FileLoader.getPathToMessage(messageObject.messageOwner); + File file = FileLoader.getInstance(currentAccount).getPathToMessage(messageObject.messageOwner); File encryptedFile = new File(file.getAbsolutePath() + ".enc"); if (encryptedFile.exists()) { file = encryptedFile; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SessionBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/SessionBottomSheet.java index fe6906984..a628e04d5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SessionBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SessionBottomSheet.java @@ -10,6 +10,7 @@ import android.os.Build; import android.util.TypedValue; import android.view.Gravity; import android.view.View; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; @@ -47,6 +48,7 @@ public class SessionBottomSheet extends BottomSheet { Context context = fragment.getParentActivity(); this.session = session; this.parentFragment = fragment; + fixNavigationBar(); LinearLayout linearLayout = new LinearLayout(context); linearLayout.setOrientation(LinearLayout.VERTICAL); @@ -120,7 +122,7 @@ public class SessionBottomSheet extends BottomSheet { if (session.country.length() != 0) { ItemView locationItemView = new ItemView(context, false); locationItemView.valueText.setText(session.country); - drawable = ContextCompat.getDrawable(context, R.drawable.menu_location).mutate(); + drawable = ContextCompat.getDrawable(context, R.drawable.msg_location).mutate(); drawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon), PorterDuff.Mode.SRC_IN)); locationItemView.iconView.setImageDrawable(drawable); locationItemView.descriptionText.setText(LocaleController.getString("Location", R.string.Location)); @@ -150,7 +152,7 @@ public class SessionBottomSheet extends BottomSheet { if (session.ip.length() != 0) { ItemView locationItemView = new ItemView(context, false); locationItemView.valueText.setText(session.ip); - drawable = ContextCompat.getDrawable(context, R.drawable.menu_language).mutate(); + drawable = ContextCompat.getDrawable(context, R.drawable.msg_language).mutate(); drawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon), PorterDuff.Mode.SRC_IN)); locationItemView.iconView.setImageDrawable(drawable); locationItemView.descriptionText.setText(LocaleController.getString("IpAddress", R.string.IpAddress)); @@ -183,7 +185,7 @@ public class SessionBottomSheet extends BottomSheet { if (secretChatsEnabled(session)) { ItemView acceptSecretChats = new ItemView(context, true); acceptSecretChats.valueText.setText(LocaleController.getString("AcceptSecretChats", R.string.AcceptSecretChats)); - drawable = ContextCompat.getDrawable(context, R.drawable.menu_secret).mutate(); + drawable = ContextCompat.getDrawable(context, R.drawable.msg_secret).mutate(); drawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon), PorterDuff.Mode.SRC_IN)); acceptSecretChats.iconView.setImageDrawable(drawable); acceptSecretChats.switchView.setChecked(!session.encrypted_requests_disabled, false); @@ -207,7 +209,7 @@ public class SessionBottomSheet extends BottomSheet { ItemView acceptCalls = new ItemView(context, true); acceptCalls.valueText.setText(LocaleController.getString("AcceptCalls", R.string.AcceptCalls)); - drawable = ContextCompat.getDrawable(context, R.drawable.menu_calls).mutate(); + drawable = ContextCompat.getDrawable(context, R.drawable.msg_calls).mutate(); drawable.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_windowBackgroundWhiteGrayIcon), PorterDuff.Mode.SRC_IN)); acceptCalls.iconView.setImageDrawable(drawable); acceptCalls.switchView.setChecked(!session.call_requests_disabled, false); @@ -236,7 +238,7 @@ public class SessionBottomSheet extends BottomSheet { buttonTextView.setText(LocaleController.getString("TerminateSession", R.string.TerminateSession)); buttonTextView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); - buttonTextView.setBackgroundDrawable(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(6), Theme.getColor(Theme.key_chat_attachAudioBackground), ColorUtils.setAlphaComponent(Theme.getColor(Theme.key_windowBackgroundWhite), 120))); + buttonTextView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(6), Theme.getColor(Theme.key_chat_attachAudioBackground), ColorUtils.setAlphaComponent(Theme.getColor(Theme.key_windowBackgroundWhite), 120))); linearLayout.addView(buttonTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, 0, 16, 15, 16, 16)); @@ -408,6 +410,17 @@ public class SessionBottomSheet extends BottomSheet { canvas.drawRect(AndroidUtilities.dp(64), getMeasuredHeight() - 1, getMeasuredWidth(), getMeasuredHeight(), Theme.dividerPaint); } } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (switchView != null) { + info.setClassName("android.widget.Switch"); + info.setCheckable(true); + info.setChecked(switchView.isChecked()); + info.setText(valueText.getText() + "\n" + descriptionText.getText() + "\n" + (switchView.isChecked() ? LocaleController.getString("NotificationsOn", R.string.NotificationsOn) : LocaleController.getString("NotificationsOff", R.string.NotificationsOff))); + } + } } public interface Callback { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SessionsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SessionsActivity.java index d05c111c5..93fc9d02f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SessionsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SessionsActivity.java @@ -13,26 +13,24 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; import android.net.Uri; import android.os.Build; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.util.Base64; +import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; -import android.widget.AbsListView; import android.widget.FrameLayout; -import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -67,24 +65,25 @@ import org.telegram.ui.Cells.TextInfoPrivacyCell; import org.telegram.ui.Cells.TextSettingsCell; import org.telegram.ui.Components.AlertsCreator; import org.telegram.ui.Components.BackupImageView; +import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.ColoredImageSpan; +import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.EmptyTextProgressView; import org.telegram.ui.Components.FlickerLoadingView; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.LinkSpanDrawable; import org.telegram.ui.Components.RecyclerItemsEnterAnimator; import org.telegram.ui.Components.RecyclerListView; import org.telegram.ui.Components.URLSpanNoUnderline; import org.telegram.ui.Components.UndoView; import java.util.ArrayList; +import java.util.Objects; public class SessionsActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { private ListAdapter listAdapter; private RecyclerListView listView; - private ImageView imageView; - private TextView textView1; - private TextView textView2; private EmptyTextProgressView emptyView; private FlickerLoadingView globalFlickerLoadingView; @@ -92,9 +91,8 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter private ArrayList passwordSessions = new ArrayList<>(); private TLRPC.TL_authorization currentSession; private boolean loading; - private LinearLayout emptyLayout; private UndoView undoView; - private RecyclerItemsEnterAnimator itemsEnterAnimator; +// private RecyclerItemsEnterAnimator itemsEnterAnimator; private int ttlDays; private int currentType; @@ -119,6 +117,8 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter private int ttlRow; private int ttlDivideRow; + private int repeatLoad = 0; + public SessionsActivity(int type) { currentType = type; } @@ -165,56 +165,27 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter FrameLayout frameLayout = (FrameLayout) fragmentView; frameLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); - emptyLayout = new LinearLayout(context); - emptyLayout.setOrientation(LinearLayout.VERTICAL); - emptyLayout.setGravity(Gravity.CENTER); - emptyLayout.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); - emptyLayout.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AndroidUtilities.displaySize.y - ActionBar.getCurrentActionBarHeight())); - - imageView = new ImageView(context); - if (currentType == 0) { - imageView.setImageResource(R.drawable.devices); - } else { - imageView.setImageResource(R.drawable.no_apps); - } - imageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_sessions_devicesImage), PorterDuff.Mode.MULTIPLY)); - emptyLayout.addView(imageView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT)); - - textView1 = new TextView(context); - textView1.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); - textView1.setGravity(Gravity.CENTER); - textView1.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17); - textView1.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - if (currentType == 0) { - textView1.setText(LocaleController.getString("NoOtherSessions", R.string.NoOtherSessions)); - } else { - textView1.setText(LocaleController.getString("NoOtherWebSessions", R.string.NoOtherWebSessions)); - } - emptyLayout.addView(textView1, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER, 0, 16, 0, 0)); - - textView2 = new TextView(context); - textView2.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2)); - textView2.setGravity(Gravity.CENTER); - textView2.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17); - textView2.setPadding(AndroidUtilities.dp(20), 0, AndroidUtilities.dp(20), 0); - if (currentType == 0) { - textView2.setText(LocaleController.getString("NoOtherSessionsInfo", R.string.NoOtherSessionsInfo)); - } else { - textView2.setText(LocaleController.getString("NoOtherWebSessionsInfo", R.string.NoOtherWebSessionsInfo)); - } - emptyLayout.addView(textView2, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER, 0, 14, 0, 0)); - emptyView = new EmptyTextProgressView(context); emptyView.showProgress(); frameLayout.addView(emptyView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER)); listView = new RecyclerListView(context); - listView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)); + listView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) { + @Override + public boolean supportsPredictiveItemAnimations() { + return true; + } + }); listView.setVerticalScrollBarEnabled(false); listView.setEmptyView(emptyView); listView.setAnimateEmptyView(true, 0); frameLayout.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); listView.setAdapter(listAdapter); + DefaultItemAnimator itemAnimator = new DefaultItemAnimator(); + itemAnimator.setDurations(150); + itemAnimator.setMoveInterpolator(CubicBezierInterpolator.DEFAULT); + itemAnimator.setTranslationInterpolator(CubicBezierInterpolator.DEFAULT); + listView.setItemAnimator(itemAnimator); listView.setOnItemClickListener((view, position) -> { if (position == ttlRow) { if (getParentActivity() == null) { @@ -301,9 +272,8 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter return; } if (error == null && response instanceof TLRPC.TL_boolTrue) { - Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("TerminateAllSessions", R.string.TerminateAllSessions), Toast.LENGTH_SHORT); - toast.show(); - finishFragment(); + BulletinFactory.of(SessionsActivity.this).createSimpleBulletin(R.raw.contact_check, LocaleController.getString("AllSessionsTerminated", R.string.AllSessionsTerminated)).show(); + loadSessions(false); } }); @@ -325,13 +295,11 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter return; } if (error == null && response instanceof TLRPC.TL_boolTrue) { - Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("TerminateAllWebSessions", R.string.TerminateAllWebSessions), Toast.LENGTH_SHORT); - toast.show(); + BulletinFactory.of(SessionsActivity.this).createSimpleBulletin(R.raw.contact_check, LocaleController.getString("AllWebSessionsTerminated", R.string.AllWebSessionsTerminated)).show(); } else { - Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("UnknownError", R.string.UnknownError), Toast.LENGTH_SHORT); - toast.show(); + BulletinFactory.of(SessionsActivity.this).createSimpleBulletin(R.raw.error, LocaleController.getString("UnknownError", R.string.UnknownError)).show(); } - finishFragment(); + loadSessions(false); })); } }); @@ -491,20 +459,20 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter frameLayout.addView(undoView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.LEFT, 8, 0, 8, 8)); } - itemsEnterAnimator = new RecyclerItemsEnterAnimator(listView, true) { - @Override - public View getProgressView() { - View progressView = null; - for (int i = 0; i < listView.getChildCount(); i++) { - View child = listView.getChildAt(i); - if (listView.getChildAdapterPosition(child) >= 0 && child instanceof SessionCell && ((SessionCell) child).isStub()) { - progressView = child; - } - } - return progressView; - } - }; - itemsEnterAnimator.animateAlphaProgressView = false; +// itemsEnterAnimator = new RecyclerItemsEnterAnimator(listView, true) { +// @Override +// public View getProgressView() { +// View progressView = null; +// for (int i = 0; i < listView.getChildCount(); i++) { +// View child = listView.getChildAt(i); +// if (listView.getChildAdapterPosition(child) >= 0 && child instanceof SessionCell && ((SessionCell) child).isStub()) { +// progressView = child; +// } +// } +// return progressView; +// } +// }; +// itemsEnterAnimator.animateAlphaProgressView = false; updateRows(); return fragmentView; @@ -594,10 +562,17 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter ttlDays = res.authorization_ttl_days; updateRows(); } - itemsEnterAnimator.showItemsAnimated(oldItemsCount + 1); +// itemsEnterAnimator.showItemsAnimated(oldItemsCount + 1); if (listAdapter != null) { listAdapter.notifyDataSetChanged(); } + + if (repeatLoad > 0) { + repeatLoad--; + if (repeatLoad > 0) { + AndroidUtilities.runOnUIThread(() -> loadSessions(silent), 2500); + } + } })); ConnectionsManager.getInstance(currentAccount).bindRequestToGuid(reqId, classGuid); } else { @@ -611,10 +586,17 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter sessions.addAll(res.authorizations); updateRows(); } - itemsEnterAnimator.showItemsAnimated(0); +// itemsEnterAnimator.showItemsAnimated(0); if (listAdapter != null) { listAdapter.notifyDataSetChanged(); } + + if (repeatLoad > 0) { + repeatLoad--; + if (repeatLoad > 0) { + AndroidUtilities.runOnUIThread(() -> loadSessions(silent), 2500); + } + } })); ConnectionsManager.getInstance(currentAccount).bindRequestToGuid(reqId, classGuid); } @@ -641,8 +623,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter ttlRow = -1; ttlDivideRow = -1; - boolean hasQr = currentType == 0 && getMessagesController().qrLoginCamera; - if (hasQr) { + if (currentType == 0 && getMessagesController().qrLoginCamera) { qrCodeRow = rowCount++; qrCodeDividerRow = rowCount++; } @@ -694,12 +675,20 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter } } + private final int VIEW_TYPE_TEXT = 0; + private final int VIEW_TYPE_INFO = 1; + private final int VIEW_TYPE_HEADER = 2; + private final int VIEW_TYPE_SESSION = 4; + private final int VIEW_TYPE_SCANQR = 5; + private final int VIEW_TYPE_SETTINGS = 6; + private class ListAdapter extends RecyclerListView.SelectionAdapter { private Context mContext; public ListAdapter(Context context) { mContext = context; + setHasStableIds(true); } @Override @@ -717,27 +706,25 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view; switch (viewType) { - case 0: + case VIEW_TYPE_TEXT: view = new TextCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 1: + case VIEW_TYPE_INFO: view = new TextInfoPrivacyCell(mContext); break; - case 2: + case VIEW_TYPE_HEADER: view = new HeaderCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 3: - view = emptyLayout; - break; - case 5: + case VIEW_TYPE_SCANQR: view = new ScanQRCodeView(mContext); break; - case 6: + case VIEW_TYPE_SETTINGS: view = new TextSettingsCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; + case VIEW_TYPE_SESSION: default: view = new SessionCell(mContext, currentType); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); @@ -749,7 +736,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (holder.getItemViewType()) { - case 0: + case VIEW_TYPE_TEXT: TextCell textCell = (TextCell) holder.itemView; if (position == terminateAllSessionsRow) { textCell.setColors(Theme.key_windowBackgroundWhiteRedText2, Theme.key_windowBackgroundWhiteRedText2); @@ -765,7 +752,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter textCell.setTextAndIcon(LocaleController.getString("AuthAnotherClient", R.string.AuthAnotherClient), R.drawable.msg_qrcode, !sessions.isEmpty()); } break; - case 1: + case VIEW_TYPE_INFO: TextInfoPrivacyCell privacyCell = (TextInfoPrivacyCell) holder.itemView; privacyCell.setFixedSize(0); if (position == terminateAllSessionsDetailRow) { @@ -799,7 +786,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter privacyCell.setFixedSize(12); } break; - case 2: + case VIEW_TYPE_HEADER: HeaderCell headerCell = (HeaderCell) holder.itemView; if (position == currentSessionSectionRow) { headerCell.setText(LocaleController.getString("CurrentSession", R.string.CurrentSession)); @@ -815,16 +802,9 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter headerCell.setText(LocaleController.getString("TerminateOldSessionHeader", R.string.TerminateOldSessionHeader)); } break; - case 3: - ViewGroup.LayoutParams layoutParams = emptyLayout.getLayoutParams(); - if (layoutParams != null) { - layoutParams.height = Math.max(AndroidUtilities.dp(220), AndroidUtilities.displaySize.y - ActionBar.getCurrentActionBarHeight() - AndroidUtilities.dp(128 + (qrCodeRow == -1 ? 0 : 30)) - (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0)); - emptyLayout.setLayoutParams(layoutParams); - } + case VIEW_TYPE_SCANQR: break; - case 5: - break; - case 6: + case VIEW_TYPE_SETTINGS: TextSettingsCell textSettingsCell = (TextSettingsCell) holder.itemView; String value; if (ttlDays > 30 && ttlDays <= 183) { @@ -834,8 +814,9 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter } else { value = LocaleController.formatPluralString("Weeks", ttlDays / 7); } - textSettingsCell.setTextAndValue(LocaleController.getString("IfInactiveFor", R.string.IfInactiveFor), value, false); + textSettingsCell.setTextAndValue(LocaleController.getString("IfInactiveFor", R.string.IfInactiveFor), value, true, false); break; + case VIEW_TYPE_SESSION: default: SessionCell sessionCell = (SessionCell) holder.itemView; if (position == currentSessionRow) { @@ -853,22 +834,70 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter } } + @Override + public long getItemId(int position) { + if (position == terminateAllSessionsRow) { + return Objects.hash(0, 0); + } else if (position == terminateAllSessionsDetailRow) { + return Objects.hash(0, 1); + } else if (position == otherSessionsTerminateDetail) { + return Objects.hash(0, 2); + } else if (position == passwordSessionsDetailRow) { + return Objects.hash(0, 3); + } else if (position == qrCodeDividerRow) { + return Objects.hash(0, 4); + } else if (position == ttlDivideRow) { + return Objects.hash(0, 5); + } else if (position == noOtherSessionsRow) { + return Objects.hash(0, 6); + } else if (position == currentSessionSectionRow) { + return Objects.hash(0, 7); + } else if (position == otherSessionsSectionRow) { + return Objects.hash(0, 8); + } else if (position == passwordSessionsSectionRow) { + return Objects.hash(0, 9); + } else if (position == ttlHeaderRow) { + return Objects.hash(0, 10); + } else if (position == currentSessionRow) { + return Objects.hash(0, 11); + } else if (position >= otherSessionsStartRow && position < otherSessionsEndRow) { + TLObject session = sessions.get(position - otherSessionsStartRow); + if (session instanceof TLRPC.TL_authorization) { + return Objects.hash(1, ((TLRPC.TL_authorization) session).hash); + } else if (session instanceof TLRPC.TL_webAuthorization) { + return Objects.hash(1, ((TLRPC.TL_webAuthorization) session).hash); + } + } else if (position >= passwordSessionsStartRow && position < passwordSessionsEndRow) { + TLObject session = passwordSessions.get(position - passwordSessionsStartRow); + if (session instanceof TLRPC.TL_authorization) { + return Objects.hash(2, ((TLRPC.TL_authorization) session).hash); + } else if (session instanceof TLRPC.TL_webAuthorization) { + return Objects.hash(2, ((TLRPC.TL_webAuthorization) session).hash); + } + } else if (position == qrCodeRow) { + return Objects.hash(0, 12); + } else if (position == ttlRow) { + return Objects.hash(0, 13); + } + return Objects.hash(0, -1); + } + @Override public int getItemViewType(int position) { if (position == terminateAllSessionsRow) { - return 0; + return VIEW_TYPE_TEXT; } else if (position == terminateAllSessionsDetailRow || position == otherSessionsTerminateDetail || position == passwordSessionsDetailRow || position == qrCodeDividerRow || position == ttlDivideRow || position == noOtherSessionsRow) { - return 1; + return VIEW_TYPE_INFO; } else if (position == currentSessionSectionRow || position == otherSessionsSectionRow || position == passwordSessionsSectionRow || position == ttlHeaderRow) { - return 2; + return VIEW_TYPE_HEADER; } else if (position == currentSessionRow || position >= otherSessionsStartRow && position < otherSessionsEndRow || position >= passwordSessionsStartRow && position < passwordSessionsEndRow) { - return 4; + return VIEW_TYPE_SESSION; } else if (position == qrCodeRow) { - return 5; + return VIEW_TYPE_SCANQR; } else if (position == ttlRow) { - return 6; + return VIEW_TYPE_SETTINGS; } - return 0; + return VIEW_TYPE_TEXT; } } @@ -904,7 +933,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter colors[6] = 0x212020; colors[7] = Theme.getColor(Theme.key_windowBackgroundWhite); - textView = new TextView(context); + textView = new LinkSpanDrawable.LinksTextView(context); addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 36, 152, 36, 0)); textView.setGravity(Gravity.CENTER_HORIZONTAL); textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); @@ -1037,7 +1066,13 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter public void didFindQr(String link) { if (response instanceof TLRPC.TL_authorization) { TLRPC.TL_authorization authorization = (TLRPC.TL_authorization) response; - sessions.add(0, authorization); + if (((TLRPC.TL_authorization) response).password_pending) { + passwordSessions.add(0, authorization); + repeatLoad = 4; + loadSessions(false); + } else { + sessions.add(0, authorization); + } updateRows(); listAdapter.notifyDataSetChanged(); undoView.showWithAction(0, UndoView.ACTION_QR_SESSION_ACCEPTED, response); @@ -1101,9 +1136,6 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{View.class}, Theme.dividerPaint, null, null, Theme.key_divider)); - themeDescriptions.add(new ThemeDescription(imageView, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_sessions_devicesImage)); - themeDescriptions.add(new ThemeDescription(textView1, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText2)); - themeDescriptions.add(new ThemeDescription(textView2, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText2)); themeDescriptions.add(new ThemeDescription(emptyView, ThemeDescription.FLAG_PROGRESSBAR, null, null, null, null, Theme.key_progressCircle)); themeDescriptions.add(new ThemeDescription(listView, ThemeDescription.FLAG_TEXTCOLOR | ThemeDescription.FLAG_CHECKTAG, new Class[]{TextSettingsCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteRedText2)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SponsoredMessageInfoView.java b/TMessagesProj/src/main/java/org/telegram/ui/SponsoredMessageInfoView.java index ebbd1a289..0accce6fa 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SponsoredMessageInfoView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SponsoredMessageInfoView.java @@ -77,7 +77,7 @@ public class SponsoredMessageInfoView extends FrameLayout { button.setPadding(AndroidUtilities.dp(12), 0, AndroidUtilities.dp(12), 0); button.setText(LocaleController.getString("SponsoredMessageAlertLearnMoreUrl", R.string.SponsoredMessageAlertLearnMoreUrl)); button.setTextColor(Theme.getColor(Theme.key_featuredStickers_addButton, resourcesProvider)); - button.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_dialogBackground, resourcesProvider), Theme.getColor(Theme.key_featuredStickers_addButtonPressed, resourcesProvider))); + button.setBackground(Theme.AdaptiveRipple.filledRect(Theme.getColor(Theme.key_dialogBackground, resourcesProvider), 4)); button.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); button.setGravity(Gravity.CENTER_VERTICAL); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/StatisticActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/StatisticActivity.java index 4dfd602a1..9e4311976 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/StatisticActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/StatisticActivity.java @@ -499,7 +499,7 @@ public class StatisticActivity extends BaseFragment implements NotificationCente items.add(LocaleController.getString("ViewMessage", R.string.ViewMessage)); actions.add(1); - icons.add(R.drawable.menu_chats); + icons.add(R.drawable.msg_msgbubble3); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); @@ -2564,10 +2564,10 @@ public class StatisticActivity extends BaseFragment implements NotificationCente } items.add(LocaleController.getString("StatisticOpenProfile", R.string.StatisticOpenProfile)); - icons.add(R.drawable.menu_private); + icons.add(R.drawable.msg_openprofile); actions.add(2); items.add(LocaleController.getString("StatisticSearchUserHistory", R.string.StatisticSearchUserHistory)); - icons.add(R.drawable.menu_chats); + icons.add(R.drawable.msg_msgbubble3); actions.add(1); if (userIsPracticant && currentParticipant == null) { @@ -2643,7 +2643,7 @@ public class StatisticActivity extends BaseFragment implements NotificationCente if (canEditAdmin) { isAdmin = channelParticipant.admin_rights == null; items.add(isAdmin ? LocaleController.getString("SetAsAdmin", R.string.SetAsAdmin) : LocaleController.getString("EditAdminRights", R.string.EditAdminRights)); - icons.add(isAdmin ? R.drawable.actions_addadmin : R.drawable.actions_permissions); + icons.add(isAdmin ? R.drawable.msg_admins : R.drawable.msg_permissions); actions.add(0); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java index 02b78e31c..2162df8ed 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java @@ -23,15 +23,28 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.collection.LongSparseArray; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.DiffUtil; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.ListUpdateCallback; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.MediaDataController; +import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.DocumentObject; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; -import org.telegram.messenger.ApplicationLoader; -import org.telegram.messenger.FileLog; import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; +import org.telegram.messenger.SvgHelper; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; @@ -42,9 +55,12 @@ import org.telegram.ui.ActionBar.BackDrawable; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; +import org.telegram.ui.Cells.FeaturedStickerSetCell2; +import org.telegram.ui.Cells.HeaderCell; import org.telegram.ui.Cells.RadioColorCell; import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Cells.StickerSetCell; +import org.telegram.ui.Cells.TextCell; import org.telegram.ui.Cells.TextCheckCell; import org.telegram.ui.Cells.TextInfoPrivacyCell; import org.telegram.ui.Cells.TextSettingsCell; @@ -65,16 +81,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.collection.LongSparseArray; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.DiffUtil; -import androidx.recyclerview.widget.ItemTouchHelper; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.ListUpdateCallback; -import androidx.recyclerview.widget.RecyclerView; - public class StickersActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { private static final int MENU_ARCHIVE = 0; @@ -96,22 +102,33 @@ public class StickersActivity extends BaseFragment implements NotificationCenter private int activeReorderingRequests; private boolean needReorder; - private final int currentType; + private int currentType; private int suggestRow; private int loopRow; private int loopInfoRow; - private int featuredRow; + private int largeEmojiRow; + private int reactionsDoubleTapRow; private int stickersBotInfo; private int masksRow; private int masksInfoRow; private int archivedRow; private int archivedInfoRow; + + private int featuredStickersHeaderRow; + private int featuredStickersStartRow; + private int featuredStickersEndRow; + private int featuredStickersShowMoreRow; + private int featuredStickersShadowRow; + + private int stickersHeaderRow; private int stickersStartRow; private int stickersEndRow; private int stickersShadowRow; private int rowCount; + private boolean isListeningForFeaturedUpdate; + public class TouchHelperCallback extends ItemTouchHelper.Callback { @Override @@ -120,7 +137,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } @Override - public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { + public int getMovementFlags(@NonNull RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { if (viewHolder.getItemViewType() != 0) { return makeMovementFlags(0, 0); } @@ -128,7 +145,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } @Override - public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) { + public boolean onMove(@NonNull RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) { if (source.getItemViewType() != target.getItemViewType()) { return false; } @@ -137,7 +154,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } @Override - public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { + public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); } @@ -153,12 +170,11 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } @Override - public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { - + public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { } @Override - public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { + public void clearView(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { super.clearView(recyclerView, viewHolder); viewHolder.itemView.setPressed(false); } @@ -192,6 +208,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.featuredStickersDidLoad); } + @SuppressLint("ClickableViewAccessibility") @Override public View createView(Context context) { actionBar.setBackButtonDrawable(new BackDrawable(false)); @@ -221,7 +238,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter }); - final ActionBarMenu actionMode = actionBar.createActionMode(); + ActionBarMenu actionMode = actionBar.createActionMode(); selectedCountTextView = new NumberTextView(actionMode.getContext()); selectedCountTextView.setTextSize(18); selectedCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -233,8 +250,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter archiveMenuItem = actionMode.addItemWithWidth(MENU_ARCHIVE, R.drawable.msg_archive, AndroidUtilities.dp(54)); deleteMenuItem = actionMode.addItemWithWidth(MENU_DELETE, R.drawable.msg_delete, AndroidUtilities.dp(54)); - - listAdapter = new ListAdapter(context, MediaDataController.getInstance(currentAccount).getStickerSets(currentType)); + listAdapter = new ListAdapter(context, MessagesController.getInstance(currentAccount).filterPremiumStickers(MediaDataController.getInstance(currentAccount).getStickerSets(currentType)), MediaDataController.getInstance(currentAccount).getFeaturedStickerSets()); fragmentView = new FrameLayout(context); FrameLayout frameLayout = (FrameLayout) fragmentView; @@ -264,19 +280,14 @@ public class StickersActivity extends BaseFragment implements NotificationCenter frameLayout.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); listView.setAdapter(listAdapter); listView.setOnItemClickListener((view, position) -> { - if (position >= stickersStartRow && position < stickersEndRow && getParentActivity() != null) { - if (!listAdapter.hasSelected()) { - final TLRPC.TL_messages_stickerSet stickerSet = listAdapter.stickerSets.get(position - stickersStartRow); - ArrayList stickers = stickerSet.documents; - if (stickers == null || stickers.isEmpty()) { - return; - } - showDialog(new StickersAlert(getParentActivity(), StickersActivity.this, null, stickerSet, null)); - } else { - listAdapter.toggleSelected(position); - } - } else if (position == featuredRow) { - final TrendingStickersLayout.Delegate trendingDelegate = new TrendingStickersLayout.Delegate() { + if (position >= featuredStickersStartRow && position < featuredStickersEndRow && getParentActivity() != null) { + TLRPC.StickerSetCovered setCovered = listAdapter.featuredStickerSets.get(position - featuredStickersStartRow); + TLRPC.TL_inputStickerSetID inputStickerSetID = new TLRPC.TL_inputStickerSetID(); + inputStickerSetID.id = setCovered.set.id; + inputStickerSetID.access_hash = setCovered.set.access_hash; + showDialog(new StickersAlert(getParentActivity(), StickersActivity.this, inputStickerSetID, null, null)); + } else if (position == featuredStickersShowMoreRow) { + TrendingStickersLayout.Delegate trendingDelegate = new TrendingStickersLayout.Delegate() { @Override public void onStickerSetAdd(TLRPC.StickerSetCovered stickerSet, boolean primary) { MediaDataController.getInstance(currentAccount).toggleStickerSet(getParentActivity(), stickerSet, 2, StickersActivity.this, false, false); @@ -289,6 +300,17 @@ public class StickersActivity extends BaseFragment implements NotificationCenter }; trendingStickersAlert = new TrendingStickersAlert(context, this, new TrendingStickersLayout(context, trendingDelegate), null); trendingStickersAlert.show(); + } else if (position >= stickersStartRow && position < stickersEndRow && getParentActivity() != null) { + if (!listAdapter.hasSelected()) { + TLRPC.TL_messages_stickerSet stickerSet = listAdapter.stickerSets.get(position - stickersStartRow); + ArrayList stickers = stickerSet.documents; + if (stickers == null || stickers.isEmpty()) { + return; + } + showDialog(new StickersAlert(getParentActivity(), StickersActivity.this, null, stickerSet, null)); + } else { + listAdapter.toggleSelected(position); + } } else if (position == archivedRow) { presentFragment(new ArchivedStickersActivity(currentType)); } else if (position == masksRow) { @@ -305,7 +327,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter LocaleController.getString("SuggestStickersNone", R.string.SuggestStickersNone), }; - final LinearLayout linearLayout = new LinearLayout(getParentActivity()); + LinearLayout linearLayout = new LinearLayout(getParentActivity()); linearLayout.setOrientation(LinearLayout.VERTICAL); builder.setView(linearLayout); @@ -327,6 +349,11 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } else if (position == loopRow) { SharedConfig.toggleLoopStickers(); listAdapter.notifyItemChanged(loopRow, ListAdapter.UPDATE_LOOP_STICKERS); + } else if (position == largeEmojiRow) { + SharedConfig.toggleBigEmoji(); + ((TextCheckCell) view).setChecked(SharedConfig.allowBigEmoji); + } else if (position == reactionsDoubleTapRow) { + presentFragment(new ReactionsDoubleTapManageActivity()); } }); listView.setOnItemLongClickListener((view, position) -> { @@ -342,7 +369,6 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } - @Override public boolean onBackPressed() { if (listAdapter.hasSelected()) { @@ -355,16 +381,15 @@ public class StickersActivity extends BaseFragment implements NotificationCenter @Override public void didReceivedNotification(int id, int account, Object... args) { if (id == NotificationCenter.stickersDidLoad) { - final int type = (int) args[0]; + int type = (int) args[0]; if (type == currentType) { + listAdapter.loadingFeaturedStickerSets.clear(); updateRows(); } else if (currentType == MediaDataController.TYPE_IMAGE && type == MediaDataController.TYPE_MASK) { listAdapter.notifyItemChanged(masksRow); } } else if (id == NotificationCenter.featuredStickersDidLoad) { - if (listAdapter != null) { - listAdapter.notifyItemChanged(0); - } + updateRows(); } else if (id == NotificationCenter.archivedStickersCountDidLoad) { if ((Integer) args[0] == currentType) { updateRows(); @@ -389,16 +414,25 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } private void updateRows() { - final MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount); - final List newList = mediaDataController.getStickerSets(currentType); + MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount); + List newList = MessagesController.getInstance(currentAccount).filterPremiumStickers(mediaDataController.getStickerSets(currentType)); + + boolean truncatedFeaturedStickers = false; + List featuredStickerSets = mediaDataController.getFeaturedStickerSets(); + if (featuredStickerSets.size() > 3) { + featuredStickerSets = featuredStickerSets.subList(0, 3); + truncatedFeaturedStickers = true; + } + List featuredStickersList = featuredStickerSets; DiffUtil.DiffResult diffResult = null; + DiffUtil.DiffResult featuredDiffResult = null; if (listAdapter != null) { if (!isPaused) { diffResult = DiffUtil.calculateDiff(new DiffUtil.Callback() { - final List oldList = listAdapter.stickerSets; + List oldList = listAdapter.stickerSets; @Override public int getOldListSize() { @@ -417,31 +451,63 @@ public class StickersActivity extends BaseFragment implements NotificationCenter @Override public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) { - final TLRPC.StickerSet oldSet = oldList.get(oldItemPosition).set; - final TLRPC.StickerSet newSet = newList.get(newItemPosition).set; + TLRPC.StickerSet oldSet = oldList.get(oldItemPosition).set; + TLRPC.StickerSet newSet = newList.get(newItemPosition).set; return TextUtils.equals(oldSet.title, newSet.title) && oldSet.count == newSet.count; } }); + featuredDiffResult = DiffUtil.calculateDiff(new DiffUtil.Callback() { + List oldList = listAdapter.featuredStickerSets; + + @Override + public int getOldListSize() { + return oldList.size(); + } + + @Override + public int getNewListSize() { + return featuredStickersList.size(); + } + + @Override + public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) { + return oldList.get(oldItemPosition).set.id == featuredStickersList.get(newItemPosition).set.id; + } + + @Override + public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) { + TLRPC.StickerSet oldSet = oldList.get(oldItemPosition).set; + TLRPC.StickerSet newSet = featuredStickersList.get(newItemPosition).set; + return TextUtils.equals(oldSet.title, newSet.title) && oldSet.count == newSet.count && oldSet.installed == newSet.installed; + } + }); } listAdapter.setStickerSets(newList); + listAdapter.setFeaturedStickerSets(featuredStickersList); } rowCount = 0; if (currentType == MediaDataController.TYPE_IMAGE) { suggestRow = rowCount++; + largeEmojiRow = rowCount++; loopRow = rowCount++; loopInfoRow = rowCount++; - featuredRow = rowCount++; } else { suggestRow = -1; + largeEmojiRow = -1; loopRow = -1; loopInfoRow = -1; - featuredRow = -1; + } + + if (currentType == MediaDataController.TYPE_IMAGE) { + masksRow = rowCount++; + } else { + masksRow = -1; } if (mediaDataController.getArchivedStickersCount(currentType) != 0) { - final boolean inserted = archivedRow == -1; + boolean inserted = archivedRow == -1; archivedRow = rowCount++; archivedInfoRow = currentType == MediaDataController.TYPE_MASK ? rowCount++ : -1; @@ -450,8 +516,8 @@ public class StickersActivity extends BaseFragment implements NotificationCenter listAdapter.notifyItemRangeInserted(archivedRow, archivedInfoRow != -1 ? 2 : 1); } } else { - final int oldArchivedRow = archivedRow; - final int oldArchivedInfoRow = archivedInfoRow; + int oldArchivedRow = archivedRow; + int oldArchivedInfoRow = archivedInfoRow; archivedRow = -1; archivedInfoRow = -1; @@ -462,15 +528,41 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } if (currentType == MediaDataController.TYPE_IMAGE) { - masksRow = rowCount++; + reactionsDoubleTapRow = rowCount++; stickersBotInfo = rowCount++; } else { - masksRow = -1; + reactionsDoubleTapRow = -1; stickersBotInfo = -1; } - final int stickerSetsCount = newList.size(); + if (!featuredStickersList.isEmpty() && currentType == MediaDataController.TYPE_IMAGE) { + featuredStickersHeaderRow = rowCount++; + featuredStickersStartRow = rowCount; + rowCount += featuredStickersList.size(); + featuredStickersEndRow = rowCount; + + if (truncatedFeaturedStickers) { + featuredStickersShowMoreRow = rowCount++; + } else { + featuredStickersShowMoreRow = -1; + } + featuredStickersShadowRow = rowCount++; + } else { + featuredStickersHeaderRow = -1; + featuredStickersStartRow = -1; + featuredStickersEndRow = -1; + featuredStickersShowMoreRow = -1; + featuredStickersShadowRow = -1; + } + + int stickerSetsCount = newList.size(); if (stickerSetsCount > 0) { + if (featuredStickersHeaderRow != -1) { + stickersHeaderRow = rowCount++; + } else { + stickersHeaderRow = -1; + } + stickersStartRow = rowCount; rowCount += stickerSetsCount; stickersEndRow = rowCount; @@ -483,6 +575,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter stickersShadowRow = -1; } } else { + stickersHeaderRow = -1; stickersStartRow = -1; stickersEndRow = -1; stickersShadowRow = -1; @@ -491,7 +584,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter if (listAdapter != null) { if (diffResult != null) { - final int startRow = stickersStartRow >= 0 ? stickersStartRow : rowCount; + int startRow = stickersStartRow >= 0 ? stickersStartRow : rowCount; listAdapter.notifyItemRangeChanged(0, startRow); diffResult.dispatchUpdatesTo(new ListUpdateCallback() { @Override @@ -508,6 +601,30 @@ public class StickersActivity extends BaseFragment implements NotificationCenter public void onMoved(int fromPosition, int toPosition) { } + @Override + public void onChanged(int position, int count, @Nullable Object payload) { + listAdapter.notifyItemRangeChanged(startRow + position, count); + } + }); + } + if (featuredDiffResult != null) { + int startRow = featuredStickersStartRow >= 0 ? featuredStickersStartRow : rowCount; + listAdapter.notifyItemRangeChanged(0, startRow); + featuredDiffResult.dispatchUpdatesTo(new ListUpdateCallback() { + @Override + public void onInserted(int position, int count) { + listAdapter.notifyItemRangeInserted(startRow + position, count); + } + + @Override + public void onRemoved(int position, int count) { + listAdapter.notifyItemRangeRemoved(startRow + position, count); + } + + @Override + public void onMoved(int fromPosition, int toPosition) { + } + @Override public void onChanged(int position, int count, @Nullable Object payload) { listAdapter.notifyItemRangeChanged(startRow + position, count); @@ -517,6 +634,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } } + @SuppressLint("NotifyDataSetChanged") @Override public void onResume() { super.onResume(); @@ -526,20 +644,46 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } private class ListAdapter extends RecyclerListView.SelectionAdapter { + private final static int TYPE_STICKER_SET = 0, + TYPE_INFO = 1, + TYPE_TEXT_AND_VALUE = 2, + TYPE_SHADOW = 3, + TYPE_SWITCH = 4, + TYPE_DOUBLE_TAP_REACTIONS = 5, + TYPE_HEADER = 6, + TYPE_FEATURED_STICKER_SET = 7; public static final int UPDATE_LOOP_STICKERS = 0; public static final int UPDATE_SELECTION = 1; public static final int UPDATE_REORDERABLE = 2; public static final int UPDATE_DIVIDER = 3; + public static final int UPDATE_FEATURED_ANIMATED = 4; private final LongSparseArray selectedItems = new LongSparseArray<>(); private final List stickerSets = new ArrayList<>(); + private final List featuredStickerSets = new ArrayList<>(); + private final List loadingFeaturedStickerSets = new ArrayList<>(); private Context mContext; - public ListAdapter(Context context, List stickerSets) { + public ListAdapter(Context context, List stickerSets, List featuredStickerSets) { mContext = context; - this.stickerSets.addAll(stickerSets); + setStickerSets(stickerSets); + if (featuredStickerSets.size() > 3) { + setFeaturedStickerSets(featuredStickerSets.subList(0, 3)); + } else { + setFeaturedStickerSets(featuredStickerSets); + } + } + + @SuppressLint("NotifyDataSetChanged") + @Override + public void notifyDataSetChanged() { + super.notifyDataSetChanged(); + + if (isListeningForFeaturedUpdate) { + isListeningForFeaturedUpdate = false; + } } public void setStickerSets(List stickerSets) { @@ -547,6 +691,11 @@ public class StickersActivity extends BaseFragment implements NotificationCenter this.stickerSets.addAll(stickerSets); } + public void setFeaturedStickerSets(List featuredStickerSets) { + this.featuredStickerSets.clear(); + this.featuredStickerSets.addAll(featuredStickerSets); + } + @Override public int getItemCount() { return rowCount; @@ -554,10 +703,10 @@ public class StickersActivity extends BaseFragment implements NotificationCenter @Override public long getItemId(int i) { - if (i >= stickersStartRow && i < stickersEndRow) { + if (i >= featuredStickersStartRow && i < featuredStickersEndRow) { + return featuredStickerSets.get(i - featuredStickersStartRow).set.id; + } else if (i >= stickersStartRow && i < stickersEndRow) { return stickerSets.get(i - stickersStartRow).set.id; - } else if (i == suggestRow || i == loopInfoRow || i == archivedRow || i == archivedInfoRow || i == featuredRow || i == stickersBotInfo || i == masksRow) { - return Integer.MIN_VALUE; } return i; } @@ -566,7 +715,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter if (which == MENU_SHARE) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0, size = stickerSets.size(); i < size; i++) { - final TLRPC.TL_messages_stickerSet stickerSet = stickerSets.get(i); + TLRPC.TL_messages_stickerSet stickerSet = stickerSets.get(i); if (selectedItems.get(stickerSet.set.id, false)) { if (stringBuilder.length() != 0) { stringBuilder.append("\n"); @@ -590,23 +739,23 @@ public class StickersActivity extends BaseFragment implements NotificationCenter }); shareAlert.show(); } else if (which == MENU_ARCHIVE || which == MENU_DELETE) { - final ArrayList stickerSetList = new ArrayList<>(selectedItems.size()); + ArrayList stickerSetList = new ArrayList<>(selectedItems.size()); for (int i = 0, size = stickerSets.size(); i < size; i++) { - final TLRPC.StickerSet stickerSet = stickerSets.get(i).set; + TLRPC.StickerSet stickerSet = stickerSets.get(i).set; if (selectedItems.get(stickerSet.id, false)) { stickerSetList.add(stickerSet); } } - final int count = stickerSetList.size(); + int count = stickerSetList.size(); switch (count) { case 0: break; case 1: for (int i = 0, size = stickerSets.size(); i < size; i++) { - final TLRPC.TL_messages_stickerSet stickerSet = stickerSets.get(i); + TLRPC.TL_messages_stickerSet stickerSet = stickerSets.get(i); if (selectedItems.get(stickerSet.set.id, false)) { processSelectionOption(which, stickerSet); break; @@ -615,9 +764,9 @@ public class StickersActivity extends BaseFragment implements NotificationCenter listAdapter.clearSelected(); break; default: - final AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - final String buttonText; + String buttonText; if (which == MENU_DELETE) { builder.setTitle(LocaleController.formatString("DeleteStickerSetsAlertTitle", R.string.DeleteStickerSetsAlertTitle, LocaleController.formatPluralString("StickerSets", count))); builder.setMessage(LocaleController.formatString("DeleteStickersAlertMessage", R.string.DeleteStickersAlertMessage, count)); @@ -633,10 +782,10 @@ public class StickersActivity extends BaseFragment implements NotificationCenter }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - final AlertDialog dialog = builder.create(); + AlertDialog dialog = builder.create(); showDialog(dialog); if (which == MENU_DELETE) { - final TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); + TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); } @@ -670,7 +819,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter FileLog.e(e); } } else if (which == 4) { - final int index = stickerSets.indexOf(stickerSet); + int index = stickerSets.indexOf(stickerSet); if (index >= 0) { listAdapter.toggleSelected(stickersStartRow + index); } @@ -680,15 +829,51 @@ public class StickersActivity extends BaseFragment implements NotificationCenter @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (holder.getItemViewType()) { - case 0: + case TYPE_HEADER: + HeaderCell headerCell = (HeaderCell) holder.itemView; + if (position == featuredStickersHeaderRow) { + headerCell.setText(LocaleController.getString(R.string.FeaturedStickers)); + } else if (position == stickersHeaderRow) { + headerCell.setText(LocaleController.getString(R.string.ChooseStickerMyStickerSets)); + } + break; + case TYPE_FEATURED_STICKER_SET: { + FeaturedStickerSetCell2 stickerSetCell = (FeaturedStickerSetCell2) holder.itemView; + int row = position - featuredStickersStartRow; + TLRPC.StickerSetCovered setCovered = featuredStickerSets.get(row); + boolean animated = isListeningForFeaturedUpdate || stickerSetCell.getStickerSet() != null && stickerSetCell.getStickerSet().set.id == setCovered.set.id; + stickerSetCell.setStickersSet(setCovered, true, false, false, animated); + stickerSetCell.setDrawProgress(loadingFeaturedStickerSets.contains(setCovered.set.id), animated); + + stickerSetCell.setAddOnClickListener(v -> { + FeaturedStickerSetCell2 cell = (FeaturedStickerSetCell2) v.getParent(); + TLRPC.StickerSetCovered pack = cell.getStickerSet(); + if (loadingFeaturedStickerSets.contains(pack.set.id)) { + return; + } + + isListeningForFeaturedUpdate = true; + loadingFeaturedStickerSets.add(pack.set.id); + + cell.setDrawProgress(true, true); + if (cell.isInstalled()) { + MediaDataController.getInstance(currentAccount).toggleStickerSet(getParentActivity(), pack, 0, StickersActivity.this, false, false); + } else { + MediaDataController.getInstance(currentAccount).toggleStickerSet(getParentActivity(), pack, 2, StickersActivity.this, false, false); + } + }); + + break; + } + case TYPE_STICKER_SET: + StickerSetCell stickerSetCell = (StickerSetCell) holder.itemView; int row = position - stickersStartRow; - final StickerSetCell stickerSetCell = (StickerSetCell) holder.itemView; stickerSetCell.setStickersSet(stickerSets.get(row), row != stickerSets.size() - 1); stickerSetCell.setChecked(selectedItems.get(getItemId(position), false), false); stickerSetCell.setReorderable(hasSelected(), false); break; - case 1: - final TextInfoPrivacyCell infoPrivacyCell = (TextInfoPrivacyCell) holder.itemView; + case TYPE_INFO: + TextInfoPrivacyCell infoPrivacyCell = (TextInfoPrivacyCell) holder.itemView; if (position == stickersBotInfo) { infoPrivacyCell.setText(addStickersBotSpan(LocaleController.getString("StickersBotInfo", R.string.StickersBotInfo))); } else if (position == archivedInfoRow) { @@ -703,52 +888,72 @@ public class StickersActivity extends BaseFragment implements NotificationCenter infoPrivacyCell.setText(LocaleController.getString("MasksInfo", R.string.MasksInfo)); } break; - case 2: - final TextSettingsCell settingsCell = (TextSettingsCell) holder.itemView; - if (position == featuredRow) { - final int count = MediaDataController.getInstance(currentAccount).getFeaturedStickerSets().size(); - settingsCell.setTextAndValue(LocaleController.getString("FeaturedStickers", R.string.FeaturedStickers), count > 0 ? Integer.toString(count) : "", true); - } else if (position == archivedRow) { - final int count = MediaDataController.getInstance(currentAccount).getArchivedStickersCount(currentType); - final String value = count > 0 ? Integer.toString(count) : ""; - if (currentType == MediaDataController.TYPE_IMAGE) { - settingsCell.setTextAndValue(LocaleController.getString("ArchivedStickers", R.string.ArchivedStickers), value, true); - } else { - settingsCell.setTextAndValue(LocaleController.getString("ArchivedMasks", R.string.ArchivedMasks), value, true); + case TYPE_TEXT_AND_VALUE: { + TextCell settingsCell = (TextCell) holder.itemView; + if (position == featuredStickersShowMoreRow) { + settingsCell.setColors(Theme.key_windowBackgroundWhiteBlueText4, Theme.key_windowBackgroundWhiteBlueText4); + settingsCell.setTextAndIcon(LocaleController.getString(R.string.ShowMoreStickers), R.drawable.msg_trending, false); + } else { + settingsCell.setColors(Theme.key_windowBackgroundWhiteGrayIcon, Theme.key_windowBackgroundWhiteBlackText); + if (position == archivedRow) { + int count = MediaDataController.getInstance(currentAccount).getArchivedStickersCount(currentType); + String value = count > 0 ? Integer.toString(count) : ""; + if (currentType == MediaDataController.TYPE_IMAGE) { + settingsCell.setTextAndValueAndIcon(LocaleController.getString(R.string.ArchivedStickers), value, R.drawable.msg_archived_stickers, true); + } else { + settingsCell.setTextAndValue(LocaleController.getString("ArchivedMasks", R.string.ArchivedMasks), value, true); + } + } else if (position == masksRow) { + int type = MediaDataController.TYPE_MASK; + MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount); + int count = MessagesController.getInstance(currentAccount).filterPremiumStickers(mediaDataController.getStickerSets(type)).size() + mediaDataController.getArchivedStickersCount(type); + settingsCell.setTextAndValueAndIcon(LocaleController.getString("Masks", R.string.Masks), count > 0 ? Integer.toString(count) : "", R.drawable.msg_mask, true); + } else if (position == suggestRow) { + String value; + switch (SharedConfig.suggestStickers) { + case 0: + value = LocaleController.getString("SuggestStickersAll", R.string.SuggestStickersAll); + break; + case 1: + value = LocaleController.getString("SuggestStickersInstalled", R.string.SuggestStickersInstalled); + break; + case 2: + default: + value = LocaleController.getString("SuggestStickersNone", R.string.SuggestStickersNone); + break; + } + settingsCell.setTextAndValue(LocaleController.getString("SuggestStickers", R.string.SuggestStickers), value, true); } - } else if (position == masksRow) { - final int type = MediaDataController.TYPE_MASK; - final MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount); - final int count = mediaDataController.getStickerSets(type).size() + mediaDataController.getArchivedStickersCount(type); - settingsCell.setTextAndValue(LocaleController.getString("Masks", R.string.Masks), count > 0 ? Integer.toString(count) : "", false); - } else if (position == suggestRow) { - String value; - switch (SharedConfig.suggestStickers) { - case 0: - value = LocaleController.getString("SuggestStickersAll", R.string.SuggestStickersAll); - break; - case 1: - value = LocaleController.getString("SuggestStickersInstalled", R.string.SuggestStickersInstalled); - break; - case 2: - default: - value = LocaleController.getString("SuggestStickersNone", R.string.SuggestStickersNone); - break; - } - settingsCell.setTextAndValue(LocaleController.getString("SuggestStickers", R.string.SuggestStickers), value, true); } break; - case 3: + } + case TYPE_SHADOW: if (position == stickersShadowRow) { - holder.itemView.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + holder.itemView.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); } break; - case 4: + case TYPE_SWITCH: + TextCheckCell cell = (TextCheckCell) holder.itemView; if (position == loopRow) { - TextCheckCell cell = (TextCheckCell) holder.itemView; - cell.setTextAndCheck(LocaleController.getString("LoopAnimatedStickers", R.string.LoopAnimatedStickers), SharedConfig.loopStickers, true); + cell.setTextAndCheck(LocaleController.getString(R.string.LoopAnimatedStickers), SharedConfig.loopStickers, true); + } else if (position == largeEmojiRow) { + cell.setTextAndCheck(LocaleController.getString(R.string.LargeEmoji), SharedConfig.allowBigEmoji, true); } break; + case TYPE_DOUBLE_TAP_REACTIONS: { + TextSettingsCell settingsCell = (TextSettingsCell) holder.itemView; + settingsCell.setText(LocaleController.getString(R.string.DoubleTapSetting), false); + settingsCell.setIcon(R.drawable.msg_reactions2); + String reaction = MediaDataController.getInstance(currentAccount).getDoubleTapReaction(); + if (reaction != null) { + TLRPC.TL_availableReaction availableReaction = MediaDataController.getInstance(currentAccount).getReactionsMap().get(reaction); + if (availableReaction != null) { + SvgHelper.SvgDrawable svgThumb = DocumentObject.getSvgThumb(availableReaction.static_icon.thumbs, Theme.key_windowBackgroundGray, 1.0f); + settingsCell.getValueBackupImageView().getImageReceiver().setImage(ImageLocation.getForDocument(availableReaction.center_icon), "100_100_lastframe", svgThumb, "webp", availableReaction, 1); + } + } + break; + } } } @@ -758,9 +963,9 @@ public class StickersActivity extends BaseFragment implements NotificationCenter onBindViewHolder(holder, position); } else { switch (holder.getItemViewType()) { - case 0: + case TYPE_STICKER_SET: if (position >= stickersStartRow && position < stickersEndRow) { - final StickerSetCell stickerSetCell = (StickerSetCell) holder.itemView; + StickerSetCell stickerSetCell = (StickerSetCell) holder.itemView; if (payloads.contains(UPDATE_SELECTION)) { stickerSetCell.setChecked(selectedItems.get(getItemId(position), false)); } @@ -772,11 +977,16 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } } break; - case 4: + case TYPE_SWITCH: if (payloads.contains(UPDATE_LOOP_STICKERS) && position == loopRow) { ((TextCheckCell) holder.itemView).setChecked(SharedConfig.loopStickers); } break; + case TYPE_FEATURED_STICKER_SET: + if (payloads.contains(UPDATE_FEATURED_ANIMATED) && position >= featuredStickersStartRow && position <= featuredStickersEndRow) { + ((FeaturedStickerSetCell2) holder.itemView).setStickersSet(featuredStickerSets.get(position - featuredStickersStartRow), true, false, false, true); + } + break; } } } @@ -784,18 +994,24 @@ public class StickersActivity extends BaseFragment implements NotificationCenter @Override public boolean isEnabled(RecyclerView.ViewHolder holder) { int type = holder.getItemViewType(); - return type == 0 || type == 2 || type == 4; + return type == TYPE_STICKER_SET || type == TYPE_FEATURED_STICKER_SET || type == TYPE_TEXT_AND_VALUE || type == TYPE_SWITCH || type == TYPE_DOUBLE_TAP_REACTIONS; } @Override @SuppressLint("ClickableViewAccessibility") - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + @NonNull + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view; switch (viewType) { - case 0: + case TYPE_FEATURED_STICKER_SET: + view = new FeaturedStickerSetCell2(mContext, getResourceProvider()); + view.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); + ((FeaturedStickerSetCell2) view).getTextView().setTypeface(AndroidUtilities.getTypeface(AndroidUtilities.TYPEFACE_ROBOTO_MEDIUM)); + break; + case TYPE_STICKER_SET: view = new StickerSetCell(mContext, 1); - view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); - final StickerSetCell stickerSetCell = (StickerSetCell) view; + view.setBackgroundColor(getThemedColor(Theme.key_windowBackgroundWhite)); + StickerSetCell stickerSetCell = (StickerSetCell) view; stickerSetCell.setOnReorderButtonTouchListener((v, event) -> { if (event.getAction() == MotionEvent.ACTION_DOWN) { itemTouchHelper.startDrag(listView.getChildViewHolder(stickerSetCell)); @@ -804,12 +1020,12 @@ public class StickersActivity extends BaseFragment implements NotificationCenter }); stickerSetCell.setOnOptionsClick(v -> { StickerSetCell cell = (StickerSetCell) v.getParent(); - final TLRPC.TL_messages_stickerSet stickerSet = cell.getStickersSet(); + TLRPC.TL_messages_stickerSet stickerSet = cell.getStickersSet(); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setTitle(stickerSet.set.title); - final int[] options; - final CharSequence[] items; - final int[] icons; + int[] options; + CharSequence[] items; + int[] icons; if (stickerSet.set.official) { options = new int[]{MENU_ARCHIVE, 4}; items = new CharSequence[]{ @@ -836,7 +1052,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } builder.setItems(items, icons, (dialog, which) -> processSelectionOption(options[which], stickerSet)); - final AlertDialog dialog = builder.create(); + AlertDialog dialog = builder.create(); showDialog(dialog); if (options[options.length - 1] == MENU_DELETE) { @@ -844,18 +1060,26 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } }); break; - case 1: + case TYPE_INFO: view = new TextInfoPrivacyCell(mContext); - view.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + view.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); break; - case 2: + case TYPE_TEXT_AND_VALUE: + view = new TextCell(mContext); + view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); + break; + case TYPE_SHADOW: + view = new ShadowSectionCell(mContext); + break; + case TYPE_DOUBLE_TAP_REACTIONS: view = new TextSettingsCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 3: - view = new ShadowSectionCell(mContext); + case TYPE_HEADER: + view = new HeaderCell(mContext); + view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 4: + case TYPE_SWITCH: default: view = new TextCheckCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); @@ -867,18 +1091,24 @@ public class StickersActivity extends BaseFragment implements NotificationCenter @Override public int getItemViewType(int i) { - if (i >= stickersStartRow && i < stickersEndRow) { - return 0; + if (i >= featuredStickersStartRow && i < featuredStickersEndRow) { + return TYPE_FEATURED_STICKER_SET; + } else if (i >= stickersStartRow && i < stickersEndRow) { + return TYPE_STICKER_SET; } else if (i == stickersBotInfo || i == archivedInfoRow || i == loopInfoRow || i == masksInfoRow) { - return 1; - } else if (i == featuredRow || i == archivedRow || i == masksRow || i == suggestRow) { - return 2; - } else if (i == stickersShadowRow) { - return 3; - } else if (i == loopRow) { - return 4; + return TYPE_INFO; + } else if (i == archivedRow || i == masksRow || i == suggestRow || i == featuredStickersShowMoreRow) { + return TYPE_TEXT_AND_VALUE; + } else if (i == stickersShadowRow || i == featuredStickersShadowRow) { + return TYPE_SHADOW; + } else if (i == loopRow || i == largeEmojiRow) { + return TYPE_SWITCH; + } else if (i == reactionsDoubleTapRow) { + return TYPE_DOUBLE_TAP_REACTIONS; + } else if (i == featuredStickersHeaderRow || i == stickersHeaderRow) { + return TYPE_HEADER; } - return 0; + return TYPE_STICKER_SET; } public void swapElements(int fromIndex, int toIndex) { @@ -886,10 +1116,10 @@ public class StickersActivity extends BaseFragment implements NotificationCenter needReorder = true; } - final MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount); + MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount); - final int index1 = fromIndex - stickersStartRow; - final int index2 = toIndex - stickersStartRow; + int index1 = fromIndex - stickersStartRow; + int index2 = toIndex - stickersStartRow; swapListElements(stickerSets, index1, index2); swapListElements(mediaDataController.getStickerSets(currentType), index1, index2); @@ -903,13 +1133,13 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } private void swapListElements(List list, int index1, int index2) { - final TLRPC.TL_messages_stickerSet set1 = list.get(index1); + TLRPC.TL_messages_stickerSet set1 = list.get(index1); list.set(index1, list.get(index2)); list.set(index2, set1); } public void toggleSelected(int position) { - final long id = getItemId(position); + long id = getItemId(position); selectedItems.put(id, !selectedItems.get(id, false)); notifyItemChanged(position, UPDATE_SELECTION); checkActionMode(); @@ -936,8 +1166,8 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } private void checkActionMode() { - final int selectedCount = listAdapter.getSelectedCount(); - final boolean actionModeShowed = actionBar.isActionModeShowed(); + int selectedCount = listAdapter.getSelectedCount(); + boolean actionModeShowed = actionBar.isActionModeShowed(); if (selectedCount > 0) { checkActionModeIcons(); selectedCountTextView.setNumber(selectedCount, actionModeShowed); @@ -946,7 +1176,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter notifyStickersItemsChanged(UPDATE_REORDERABLE); if (!SharedConfig.stickersReorderingHintUsed) { SharedConfig.setStickersReorderingHintUsed(true); - final String stickersReorderHint = LocaleController.getString("StickersReorderHint", R.string.StickersReorderHint); + String stickersReorderHint = LocaleController.getString("StickersReorderHint", R.string.StickersReorderHint); Bulletin.make(parentLayout, new ReorderingBulletinLayout(mContext, stickersReorderHint, null), ReorderingHintDrawable.DURATION * 2 + 250).show(); } } @@ -967,7 +1197,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } } } - final int visibility = canDelete ? View.VISIBLE : View.GONE; + int visibility = canDelete ? View.VISIBLE : View.GONE; if (deleteMenuItem.getVisibility() != visibility) { deleteMenuItem.setVisibility(visibility); } @@ -979,8 +1209,8 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } private CharSequence addStickersBotSpan(String text) { - final String botName = "@stickers"; - final int index = text.indexOf(botName); + String botName = "@stickers"; + int index = text.indexOf(botName); if (index != -1) { try { SpannableStringBuilder stringBuilder = new SpannableStringBuilder(text); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java index 2e23d8cc4..3dfb80bcc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java @@ -40,6 +40,7 @@ import android.widget.FrameLayout; import android.widget.TextView; import androidx.annotation.Keep; +import androidx.annotation.NonNull; import androidx.core.content.FileProvider; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; @@ -48,20 +49,15 @@ import androidx.recyclerview.widget.RecyclerView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.BuildConfig; -import org.telegram.messenger.DocumentObject; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; -import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; -import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; -import org.telegram.messenger.SvgHelper; import org.telegram.messenger.Utilities; import org.telegram.messenger.time.SunDate; -import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; @@ -70,6 +66,7 @@ import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.EmojiThemes; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; +import org.telegram.ui.Cells.AppIconsSelectorCell; import org.telegram.ui.Cells.BrightnessControlCell; import org.telegram.ui.Cells.ChatListCell; import org.telegram.ui.Cells.ChatMessageCell; @@ -90,6 +87,7 @@ import org.telegram.ui.Components.RLottieDrawable; import org.telegram.ui.Components.RecyclerListView; import org.telegram.ui.Components.SeekBarView; import org.telegram.ui.Components.ShareAlert; +import org.telegram.ui.Components.SimpleThemeDescription; import org.telegram.ui.Components.SwipeGestureSettingsView; import org.telegram.ui.Components.ThemeEditorView; @@ -134,17 +132,13 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No private int directShareRow; private int raiseToSpeakRow; private int sendByEnterRow; - private int saveToGalleryRow; private int saveToGalleryOption1Row; private int saveToGalleryOption2Row; private int saveToGallerySectionRow; private int distanceRow; private int enableAnimationsRow; private int settings2Row; - private int stickersRow; - private int stickersSection2Row; - private int emojiRow; private int contactsReimportRow; private int contactsSortRow; @@ -177,7 +171,6 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No private int themeListRow2; private int themeAccentListRow; private int themeInfoRow; - private int reactionsDoubleTapRow; private int chatBlurRow; private int swipeGestureHeaderRow; @@ -189,6 +182,10 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No private int editThemeRow; private int createNewThemeRow; + private int appIconHeaderRow; + private int appIconSelectorRow; + private int appIconShadowRow; + private int rowCount; private boolean updatingLocation; @@ -258,6 +255,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No sizeBar = new SeekBarView(context); sizeBar.setReportChanges(true); +// sizeBar.setSeparatorsCount(endFontSize - startFontSize); sizeBar.setDelegate(new SeekBarView.SeekBarViewDelegate() { @Override public void onSeekBarDrag(boolean stop, float progress) { @@ -341,6 +339,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No sizeBar = new SeekBarView(context); sizeBar.setReportChanges(true); +// sizeBar.setSeparatorsCount(endRadius - startRadius); sizeBar.setDelegate(new SeekBarView.SeekBarViewDelegate() { @Override public void onSeekBarDrag(boolean stop, float progress) { @@ -467,7 +466,6 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No int prevEditThemeRow = editThemeRow; rowCount = 0; - emojiRow = -1; contactsReimportRow = -1; contactsSortRow = -1; scheduleLocationRow = -1; @@ -500,7 +498,6 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No chatListHeaderRow = -1; chatListRow = -1; chatListInfoRow = -1; - reactionsDoubleTapRow = -1; chatBlurRow = -1; textSizeRow = -1; @@ -511,14 +508,11 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No enableAnimationsRow = -1; raiseToSpeakRow = -1; sendByEnterRow = -1; - saveToGalleryRow = -1; saveToGalleryOption1Row = -1; saveToGalleryOption2Row = -1; saveToGallerySectionRow = -1; distanceRow = -1; settings2Row = -1; - stickersRow = -1; - stickersSection2Row = -1; swipeGestureHeaderRow = -1; swipeGestureRow = -1; @@ -529,6 +523,10 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No editThemeRow = -1; createNewThemeRow = -1; + appIconHeaderRow = -1; + appIconSelectorRow = -1; + appIconShadowRow = -1; + defaultThemes.clear(); darkThemes.clear(); for (int a = 0, N = Theme.themes.size(); a < N; a++) { @@ -602,23 +600,22 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No swipeGestureRow = rowCount++; swipeGestureInfoRow = rowCount++; + appIconHeaderRow = rowCount++; + appIconSelectorRow = rowCount++; + appIconShadowRow = rowCount++; + settingsRow = rowCount++; nightThemeRow = rowCount++; customTabsRow = rowCount++; directShareRow = rowCount++; enableAnimationsRow = rowCount++; - emojiRow = rowCount++; raiseToSpeakRow = rowCount++; sendByEnterRow = rowCount++; - saveToGalleryRow = rowCount++; if (SharedConfig.canBlurChat()) { chatBlurRow = rowCount++; } distanceRow = rowCount++; - reactionsDoubleTapRow = rowCount++; settings2Row = rowCount++; - stickersRow = rowCount++; - stickersSection2Row = rowCount++; } else { nightDisabledRow = rowCount++; nightScheduledRow = rowCount++; @@ -855,7 +852,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No menuItem.setContentDescription(LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions)); menuItem.addSubItem(share_theme, R.drawable.msg_share, LocaleController.getString("ShareTheme", R.string.ShareTheme)); menuItem.addSubItem(edit_theme, R.drawable.msg_edit, LocaleController.getString("EditThemeColors", R.string.EditThemeColors)); - menuItem.addSubItem(create_theme, R.drawable.menu_palette, LocaleController.getString("CreateNewThemeMenu", R.string.CreateNewThemeMenu)); + menuItem.addSubItem(create_theme, R.drawable.msg_palette, LocaleController.getString("CreateNewThemeMenu", R.string.CreateNewThemeMenu)); menuItem.addSubItem(reset_settings, R.drawable.msg_reset, LocaleController.getString("ThemeResetToDefaults", R.string.ThemeResetToDefaults)); } else { actionBar.setTitle(LocaleController.getString("AutoNightTheme", R.string.AutoNightTheme)); @@ -1006,11 +1003,6 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No if (view instanceof TextCheckCell) { ((TextCheckCell) view).setChecked(SharedConfig.raiseToSpeak); } - } else if (position == saveToGalleryRow) { - SharedConfig.toggleSaveToGallery(); - if (view instanceof TextCheckCell) { - ((TextCheckCell) view).setChecked(SharedConfig.saveToGallery); - } } else if (position == distanceRow) { if (getParentActivity() == null) { return; @@ -1063,15 +1055,6 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); showDialog(builder.create()); - } else if (position == stickersRow) { - presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE)); - } else if (position == reactionsDoubleTapRow) { - presentFragment(new ReactionsDoubleTapManageActivity()); - } else if (position == emojiRow) { - SharedConfig.toggleBigEmoji(); - if (view instanceof TextCheckCell) { - ((TextCheckCell) view).setChecked(SharedConfig.allowBigEmoji); - } } else if (position == chatBlurRow) { SharedConfig.toggleChatBlur(); if (view instanceof TextCheckCell) { @@ -1601,6 +1584,25 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } private class ListAdapter extends RecyclerListView.SelectionAdapter { + private final static int TYPE_TEXT_SETTING = 1; + private final static int TYPE_TEXT_INFO_PRIVACY = 2; + private final static int TYPE_SHADOW = 3; + private final static int TYPE_THEME_TYPE = 4; + private final static int TYPE_HEADER = 5; + private final static int TYPE_BRIGHTNESS = 6; + private final static int TYPE_TEXT_CHECK = 7; + private final static int TYPE_TEXT_SIZE = 8; + private final static int TYPE_CHAT_LIST = 9; + private final static int TYPE_NIGHT_THEME = 10; + private final static int TYPE_THEME_LIST = 11; + private final static int TYPE_THEME_ACCENT_LIST = 12; + private final static int TYPE_BUBBLE_RADIUS = 13; + private final static int TYPE_TEXT_PREFERENCE = 14; + private final static int TYPE_SWIPE_GESTURE = 15; + private final static int TYPE_THEME_PREVIEW = 16; + private final static int TYPE_DEFAULT_THEMES_PREVIEW = 17; + private final static int TYPE_SAVE_TO_GALLERY = 19; + private final static int TYPE_APP_ICON = 20; private Context mContext; private boolean first = true; @@ -1617,7 +1619,9 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No @Override public boolean isEnabled(RecyclerView.ViewHolder holder) { int type = holder.getItemViewType(); - return type == 0 || type == 1 || type == 4 || type == 7 || type == 10 || type == 11 || type == 12 || type == 14 || type == 18; + return type == 0 || type == TYPE_TEXT_SETTING || type == TYPE_THEME_TYPE || type == TYPE_TEXT_CHECK || + type == TYPE_NIGHT_THEME || type == TYPE_THEME_LIST || type == TYPE_THEME_ACCENT_LIST || + type == TYPE_TEXT_PREFERENCE || type == 18 || type == TYPE_APP_ICON; } private void showOptionsForTheme(Theme.ThemeInfo themeInfo) { @@ -1758,30 +1762,31 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } } + @NonNull @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view; switch (viewType) { - case 1: + case TYPE_TEXT_SETTING: view = new TextSettingsCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 2: + case TYPE_TEXT_INFO_PRIVACY: view = new TextInfoPrivacyCell(mContext); - view.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); + view.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); break; - case 3: + case TYPE_SHADOW: view = new ShadowSectionCell(mContext); break; - case 4: + case TYPE_THEME_TYPE: view = new ThemeTypeCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 5: + case TYPE_HEADER: view = new HeaderCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 6: + case TYPE_BRIGHTNESS: view = new BrightnessControlCell(mContext) { @Override protected void didChangedValue(float value) { @@ -1800,15 +1805,15 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No }; view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 7: + case TYPE_TEXT_CHECK: view = new TextCheckCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 8: + case TYPE_TEXT_SIZE: view = new TextSizeCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 9: + case TYPE_CHAT_LIST: view = new ChatListCell(mContext) { @Override protected void didSelectChatType(boolean threeLines) { @@ -1817,11 +1822,11 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No }; view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 10: + case TYPE_NIGHT_THEME: view = new NotificationsCheckCell(mContext, 21, 64, false); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 11: + case TYPE_THEME_LIST: first = true; themesHorizontalListCell = new ThemesHorizontalListCell(mContext, currentType, defaultThemes, darkThemes) { @Override @@ -1844,7 +1849,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No view = themesHorizontalListCell; view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, AndroidUtilities.dp(148))); break; - case 12: { + case TYPE_THEME_ACCENT_LIST: { RecyclerListView accentsListView = new TintRecyclerListView(mContext) { @Override public boolean onInterceptTouchEvent(MotionEvent e) { @@ -1970,37 +1975,37 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, AndroidUtilities.dp(62))); break; } - case 13: + case TYPE_BUBBLE_RADIUS: view = new BubbleRadiusCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 14: + case TYPE_TEXT_PREFERENCE: default: view = new TextCell(mContext); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); break; - case 15: + case TYPE_SWIPE_GESTURE: view = new SwipeGestureSettingsView(mContext, currentAccount); break; - case 16: + case TYPE_THEME_PREVIEW: ThemePreviewMessagesCell messagesCell = new ThemePreviewMessagesCell(mContext, parentLayout, 0); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { messagesCell.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); } view = messagesCell; break; - case 17: + case TYPE_DEFAULT_THEMES_PREVIEW: DefaultThemesPreviewCell cell = new DefaultThemesPreviewCell(mContext, ThemeActivity.this, currentType); view = cell; cell.setFocusable(false); view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); break; - case 18: - view = new TextSettingsCell(mContext); - break; - case 19: + case TYPE_SAVE_TO_GALLERY: view = new RadioButtonCell(mContext); break; + case TYPE_APP_ICON: + view = new AppIconsSelectorCell(mContext, ThemeActivity.this, currentAccount); + break; } return new RecyclerListView.Holder(view); } @@ -2008,7 +2013,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (holder.getItemViewType()) { - case 1: { + case TYPE_TEXT_SETTING: { TextSettingsCell cell = (TextSettingsCell) holder.itemView; if (position == nightThemeRow) { if (Theme.selectedAutoNightType == Theme.AUTO_NIGHT_TYPE_NONE || Theme.getCurrentNightTheme() == null) { @@ -2040,8 +2045,6 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No cell.setTextAndValue(LocaleController.getString("SortBy", R.string.SortBy), value, true); } else if (position == contactsReimportRow) { cell.setText(LocaleController.getString("ImportContacts", R.string.ImportContacts), true); - } else if (position == stickersRow) { - cell.setText(LocaleController.getString("StickersAndMasks", R.string.StickersAndMasks), false); } else if (position == distanceRow) { String value; if (SharedConfig.distanceSystemType == 0) { @@ -2051,11 +2054,11 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } else { value = LocaleController.getString("DistanceUnitsMiles", R.string.DistanceUnitsMiles); } - cell.setTextAndValue(LocaleController.getString("DistanceUnits", R.string.DistanceUnits), value, true); + cell.setTextAndValue(LocaleController.getString("DistanceUnits", R.string.DistanceUnits), value, false); } break; } - case 2: { + case TYPE_TEXT_INFO_PRIVACY: { TextInfoPrivacyCell cell = (TextInfoPrivacyCell) holder.itemView; if (position == automaticBrightnessInfoRow) { cell.setText(LocaleController.formatString("AutoNightBrightnessInfo", R.string.AutoNightBrightnessInfo, (int) (100 * Theme.autoNightBrighnessThreshold))); @@ -2064,15 +2067,15 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } break; } - case 3: { - if (position == stickersSection2Row || position == nightTypeInfoRow && themeInfoRow == -1 || position == themeInfoRow && nightTypeInfoRow != -1 || position == saveToGallerySectionRow) { + case TYPE_SHADOW: { + if (position == nightTypeInfoRow && themeInfoRow == -1 || position == themeInfoRow && nightTypeInfoRow != -1 || position == saveToGallerySectionRow) { holder.itemView.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); } else { holder.itemView.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); } break; } - case 4: { + case TYPE_THEME_TYPE: { ThemeTypeCell typeCell = (ThemeTypeCell) holder.itemView; if (position == nightDisabledRow) { typeCell.setValue(LocaleController.getString("AutoNightDisabled", R.string.AutoNightDisabled), Theme.selectedAutoNightType == Theme.AUTO_NIGHT_TYPE_NONE, true); @@ -2085,7 +2088,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } break; } - case 5: { + case TYPE_HEADER: { HeaderCell headerCell = (HeaderCell) holder.itemView; if (position == scheduleHeaderRow) { headerCell.setText(LocaleController.getString("AutoNightSchedule", R.string.AutoNightSchedule)); @@ -2111,15 +2114,17 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No headerCell.setText(LocaleController.getString("ChatListSwipeGesture", R.string.ChatListSwipeGesture)); } else if (position == selectThemeHeaderRow) { headerCell.setText(LocaleController.getString("SelectTheme", R.string.SelectTheme)); + } else if (position == appIconHeaderRow) { + headerCell.setText(LocaleController.getString(R.string.AppIcon)); } break; } - case 6: { + case TYPE_BRIGHTNESS: { BrightnessControlCell cell = (BrightnessControlCell) holder.itemView; cell.setProgress(Theme.autoNightBrighnessThreshold); break; } - case 7: { + case TYPE_TEXT_CHECK: { TextCheckCell textCheckCell = (TextCheckCell) holder.itemView; if (position == scheduleLocationRow) { textCheckCell.setTextAndCheck(LocaleController.getString("AutoNightLocation", R.string.AutoNightLocation), Theme.autoNightScheduleByLocation, true); @@ -2129,22 +2134,18 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } else if (position == sendByEnterRow) { SharedPreferences preferences = MessagesController.getGlobalMainSettings(); textCheckCell.setTextAndCheck(LocaleController.getString("SendByEnter", R.string.SendByEnter), preferences.getBoolean("send_by_enter", false), true); - } else if (position == saveToGalleryRow) { - textCheckCell.setTextAndCheck(LocaleController.getString("SaveToGallerySettings", R.string.SaveToGallerySettings), SharedConfig.saveToGallery, true); } else if (position == raiseToSpeakRow) { textCheckCell.setTextAndCheck(LocaleController.getString("RaiseToSpeak", R.string.RaiseToSpeak), SharedConfig.raiseToSpeak, true); } else if (position == customTabsRow) { textCheckCell.setTextAndValueAndCheck(LocaleController.getString("ChromeCustomTabs", R.string.ChromeCustomTabs), LocaleController.getString("ChromeCustomTabsInfo", R.string.ChromeCustomTabsInfo), SharedConfig.customTabs, false, true); } else if (position == directShareRow) { textCheckCell.setTextAndValueAndCheck(LocaleController.getString("DirectShare", R.string.DirectShare), LocaleController.getString("DirectShareInfo", R.string.DirectShareInfo), SharedConfig.directShare, false, true); - } else if (position == emojiRow) { - textCheckCell.setTextAndCheck(LocaleController.getString("LargeEmoji", R.string.LargeEmoji), SharedConfig.allowBigEmoji, true); } else if (position == chatBlurRow) { textCheckCell.setTextAndCheck(LocaleController.getString("BlurInChat", R.string.BlurInChat), SharedConfig.chatBlurEnabled(), true); } break; } - case 10: { + case TYPE_NIGHT_THEME: { NotificationsCheckCell checkCell = (NotificationsCheckCell) holder.itemView; if (position == nightThemeRow) { boolean enabled = Theme.selectedAutoNightType != Theme.AUTO_NIGHT_TYPE_NONE; @@ -2164,14 +2165,14 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } break; } - case 11: { + case TYPE_THEME_LIST: { if (first) { themesHorizontalListCell.scrollToCurrentTheme(listView.getMeasuredWidth(), false); first = false; } break; } - case 12: { + case TYPE_THEME_ACCENT_LIST: { RecyclerListView accentsList = (RecyclerListView) holder.itemView; ThemeAccentsListAdapter adapter = (ThemeAccentsListAdapter) accentsList.getAdapter(); adapter.notifyDataSetChanged(); @@ -2184,7 +2185,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } break; } - case 14: { + case TYPE_TEXT_PREFERENCE: { TextCell cell = (TextCell) holder.itemView; cell.setColors(Theme.key_windowBackgroundWhiteBlueText4, Theme.key_windowBackgroundWhiteBlueText4); if (position == backgroundRow) { @@ -2196,25 +2197,12 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } break; } - case 17: { + case TYPE_DEFAULT_THEMES_PREVIEW: { DefaultThemesPreviewCell cell = (DefaultThemesPreviewCell) holder.itemView; cell.updateDayNightMode(); break; } - case 18:{ - TextSettingsCell settingsCell = (TextSettingsCell) holder.itemView; - settingsCell.setText(LocaleController.getString("DoubleTapSetting", R.string.DoubleTapSetting), false); - String reaction = MediaDataController.getInstance(currentAccount).getDoubleTapReaction(); - if (reaction != null) { - TLRPC.TL_availableReaction availableReaction = MediaDataController.getInstance(currentAccount).getReactionsMap().get(reaction); - if (availableReaction != null) { - SvgHelper.SvgDrawable svgThumb = DocumentObject.getSvgThumb(availableReaction.static_icon.thumbs, Theme.key_windowBackgroundGray, 1.0f); - settingsCell.getValueBackupImageView().getImageReceiver().setImage(ImageLocation.getForDocument(availableReaction.static_icon), "100_100", svgThumb, "webp", availableReaction, 1); - } - } - break; - } - case 19:{ + case TYPE_SAVE_TO_GALLERY: { RadioButtonCell radioCell = (RadioButtonCell) holder.itemView; if (position == saveToGalleryOption1Row) { radioCell.setTextAndValue("save media only from peer chats", "",true, false); @@ -2230,10 +2218,10 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No @Override public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) { int type = holder.getItemViewType(); - if (type == 4) { + if (type == TYPE_THEME_TYPE) { ((ThemeTypeCell) holder.itemView).setTypeChecked(holder.getAdapterPosition() == Theme.selectedAutoNightType); } - if (type != 2 && type != 3) { + if (type != TYPE_TEXT_INFO_PRIVACY && type != TYPE_SHADOW) { holder.itemView.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); } } @@ -2242,52 +2230,53 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No public int getItemViewType(int position) { if (position == scheduleFromRow || position == distanceRow || position == scheduleToRow || position == scheduleUpdateLocationRow || - position == contactsReimportRow || position == contactsSortRow || position == stickersRow) { - return 1; + position == contactsReimportRow || position == contactsSortRow) { + return TYPE_TEXT_SETTING; } else if (position == automaticBrightnessInfoRow || position == scheduleLocationInfoRow) { - return 2; + return TYPE_TEXT_INFO_PRIVACY; } else if (position == themeInfoRow || position == nightTypeInfoRow || position == scheduleFromToInfoRow || - position == stickersSection2Row || position == settings2Row || position == newThemeInfoRow || - position == chatListInfoRow || position == bubbleRadiusInfoRow || position == swipeGestureInfoRow || position == saveToGallerySectionRow) { - return 3; + position == settings2Row || position == newThemeInfoRow || position == chatListInfoRow || position == bubbleRadiusInfoRow || + position == swipeGestureInfoRow || position == saveToGallerySectionRow || position == appIconShadowRow) { + return TYPE_SHADOW; } else if (position == nightDisabledRow || position == nightScheduledRow || position == nightAutomaticRow || position == nightSystemDefaultRow) { - return 4; + return TYPE_THEME_TYPE; } else if (position == scheduleHeaderRow || position == automaticHeaderRow || position == preferedHeaderRow || position == settingsRow || position == themeHeaderRow || position == textSizeHeaderRow || - position == chatListHeaderRow || position == bubbleRadiusHeaderRow || position == swipeGestureHeaderRow || position == selectThemeHeaderRow) { - return 5; + position == chatListHeaderRow || position == bubbleRadiusHeaderRow || position == swipeGestureHeaderRow || + position == selectThemeHeaderRow || position == appIconHeaderRow) { + return TYPE_HEADER; } else if (position == automaticBrightnessRow) { - return 6; + return TYPE_BRIGHTNESS; } else if (position == scheduleLocationRow || position == enableAnimationsRow || position == sendByEnterRow || - position == saveToGalleryRow || position == raiseToSpeakRow || position == customTabsRow || - position == directShareRow || position == emojiRow || position == chatBlurRow) { - return 7; + position == raiseToSpeakRow || position == customTabsRow || + position == directShareRow || position == chatBlurRow) { + return TYPE_TEXT_CHECK; } else if (position == textSizeRow) { - return 8; + return TYPE_TEXT_SIZE; } else if (position == chatListRow) { - return 9; + return TYPE_CHAT_LIST; } else if (position == nightThemeRow) { - return 10; + return TYPE_NIGHT_THEME; } else if (position == themeListRow) { - return 11; + return TYPE_THEME_LIST; } else if (position == themeAccentListRow) { - return 12; + return TYPE_THEME_ACCENT_LIST; } else if (position == bubbleRadiusRow) { - return 13; + return TYPE_BUBBLE_RADIUS; } else if (position == backgroundRow || position == editThemeRow || position == createNewThemeRow) { - return 14; + return TYPE_TEXT_PREFERENCE; } else if (position == swipeGestureRow) { - return 15; + return TYPE_SWIPE_GESTURE; } else if (position == themePreviewRow) { - return 16; + return TYPE_THEME_PREVIEW; } else if (position == themeListRow2) { - return 17; - } else if (position == reactionsDoubleTapRow) { - return 18; + return TYPE_DEFAULT_THEMES_PREVIEW; } else if (position == saveToGalleryOption1Row || position == saveToGalleryOption2Row) { - return 19; + return TYPE_SAVE_TO_GALLERY; + } else if (position == appIconSelectorRow) { + return TYPE_APP_ICON; } - return 1; + return TYPE_TEXT_SETTING; } } @@ -2301,7 +2290,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No public ArrayList getThemeDescriptions() { ArrayList themeDescriptions = new ArrayList<>(); - themeDescriptions.add(new ThemeDescription(listView, ThemeDescription.FLAG_CELLBACKGROUNDCOLOR, new Class[]{TextSettingsCell.class, TextCheckCell.class, HeaderCell.class, BrightnessControlCell.class, ThemeTypeCell.class, TextSizeCell.class, BubbleRadiusCell.class, ChatListCell.class, NotificationsCheckCell.class, ThemesHorizontalListCell.class, TintRecyclerListView.class, TextCell.class, SwipeGestureSettingsView.class, DefaultThemesPreviewCell.class}, null, null, null, Theme.key_windowBackgroundWhite)); + themeDescriptions.add(new ThemeDescription(listView, ThemeDescription.FLAG_CELLBACKGROUNDCOLOR, new Class[]{TextSettingsCell.class, TextCheckCell.class, HeaderCell.class, BrightnessControlCell.class, ThemeTypeCell.class, TextSizeCell.class, BubbleRadiusCell.class, ChatListCell.class, NotificationsCheckCell.class, ThemesHorizontalListCell.class, TintRecyclerListView.class, TextCell.class, SwipeGestureSettingsView.class, DefaultThemesPreviewCell.class, AppIconsSelectorCell.class}, null, null, null, Theme.key_windowBackgroundWhite)); themeDescriptions.add(new ThemeDescription(fragmentView, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_windowBackgroundGray)); themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_actionBarDefault)); @@ -2386,6 +2375,37 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{TextSizeCell.class}, null, null, null, Theme.key_chat_inTimeSelectedText)); themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{TextSizeCell.class}, null, null, null, Theme.key_chat_outTimeSelectedText)); + themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{AppIconsSelectorCell.class}, null, null, null, Theme.key_windowBackgroundWhite)); + themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{AppIconsSelectorCell.class}, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); + themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{AppIconsSelectorCell.class}, null, null, null, Theme.key_windowBackgroundWhiteHintText)); + themeDescriptions.add(new ThemeDescription(listView, 0, new Class[]{AppIconsSelectorCell.class}, null, null, null, Theme.key_windowBackgroundWhiteValueText)); + themeDescriptions.addAll(SimpleThemeDescription.createThemeDescriptions(() -> { + for (int i = 0; i < listView.getChildCount(); i++) { + View ch = listView.getChildAt(i); + if (ch instanceof AppIconsSelectorCell) { + ((AppIconsSelectorCell) ch).getAdapter().notifyDataSetChanged(); + } + } + for (int i = 0; i < listView.getCachedChildCount(); i++) { + View ch = listView.getCachedChildAt(i); + if (ch instanceof AppIconsSelectorCell) { + ((AppIconsSelectorCell) ch).getAdapter().notifyDataSetChanged(); + } + } + for (int i = 0; i < listView.getHiddenChildCount(); i++) { + View ch = listView.getHiddenChildAt(i); + if (ch instanceof AppIconsSelectorCell) { + ((AppIconsSelectorCell) ch).getAdapter().notifyDataSetChanged(); + } + } + for (int i = 0; i < listView.getAttachedScrapChildCount(); i++) { + View ch = listView.getAttachedScrapChildAt(i); + if (ch instanceof AppIconsSelectorCell) { + ((AppIconsSelectorCell) ch).getAdapter().notifyDataSetChanged(); + } + } + }, Theme.key_windowBackgroundWhiteHintText, Theme.key_windowBackgroundWhiteBlackText, Theme.key_windowBackgroundWhiteValueText)); + return themeDescriptions; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ThemePreviewActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ThemePreviewActivity.java index 5cdd2fe4a..6cf34d3af 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ThemePreviewActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ThemePreviewActivity.java @@ -75,7 +75,6 @@ import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; -import org.telegram.messenger.SharedConfig; import org.telegram.messenger.SvgHelper; import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; @@ -368,11 +367,6 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro isMotion = motion; } - @Override - public int getNavigationBarColor() { - return super.getNavigationBarColor(); - } - @SuppressLint("Recycle") @Override public View createView(Context context) { @@ -820,7 +814,7 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro if (applyingTheme.info != null && applyingTheme.info.installs_count > 0) { actionBar2.setSubtitle(LocaleController.formatPluralString("ThemeInstallCount", applyingTheme.info.installs_count)); } else { - actionBar2.setSubtitle(LocaleController.formatDateOnline(System.currentTimeMillis() / 1000 - 60 * 60)); + actionBar2.setSubtitle(LocaleController.formatDateOnline(System.currentTimeMillis() / 1000 - 60 * 60, null)); } } } @@ -1085,7 +1079,7 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro if (!done) { TLRPC.TL_wallPaper wallPaper = (TLRPC.TL_wallPaper) currentWallpaper; - File f = FileLoader.getPathToAttach(wallPaper.document, true); + File f = FileLoader.getInstance(currentAccount).getPathToAttach(wallPaper.document, true); try { done = AndroidUtilities.copyFile(f, toFile); } catch (Exception e) { @@ -1152,7 +1146,7 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro File f; if (wallpaper.photo != null) { TLRPC.PhotoSize image = FileLoader.getClosestPhotoSizeWithSize(wallpaper.photo.sizes, maxWallpaperSize, true); - f = FileLoader.getPathToAttach(image, true); + f = FileLoader.getInstance(currentAccount).getPathToAttach(image, true); } else { f = ImageLoader.getHttpFilePath(wallpaper.imageUrl, "jpg"); } @@ -1213,7 +1207,7 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro MediaController.SearchImage wallPaper = (MediaController.SearchImage) currentWallpaper; if (wallPaper.photo != null) { TLRPC.PhotoSize image = FileLoader.getClosestPhotoSizeWithSize(wallPaper.photo.sizes, maxWallpaperSize, true); - path = FileLoader.getPathToAttach(image, true); + path = FileLoader.getInstance(currentAccount).getPathToAttach(image, true); } else { path = ImageLoader.getHttpFilePath(wallPaper.imageUrl, "jpg"); } @@ -2516,14 +2510,10 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro Theme.setChangingWallpaper(true); } if (screenType != SCREEN_TYPE_PREVIEW || accent != null) { - if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW) { - int w = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); - int h = Math.max(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); - imageFilter = (int) (w / AndroidUtilities.density) + "_" + (int) (h / AndroidUtilities.density) + "_f"; - } else { - imageFilter = (int) (1080 / AndroidUtilities.density) + "_" + (int) (1920 / AndroidUtilities.density) + "_f"; - } - maxWallpaperSize = Math.min(1920, Math.max(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y)); + int w = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); + int h = Math.max(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); + imageFilter = (int) (w / AndroidUtilities.density) + "_" + (int) (h / AndroidUtilities.density) + "_f"; + maxWallpaperSize = Math.max(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.wallpapersNeedReload); NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.wallpapersDidLoad); @@ -3025,7 +3015,7 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro } boolean fileExists; File path; - int size; + long size; String fileName; if (object instanceof TLRPC.TL_wallPaper) { TLRPC.TL_wallPaper wallPaper = (TLRPC.TL_wallPaper) object; @@ -3033,13 +3023,13 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro if (TextUtils.isEmpty(fileName)) { return; } - path = FileLoader.getPathToAttach(wallPaper.document, true); + path = FileLoader.getInstance(currentAccount).getPathToAttach(wallPaper.document, true); size = wallPaper.document.size; } else { MediaController.SearchImage wallPaper = (MediaController.SearchImage) object; if (wallPaper.photo != null) { TLRPC.PhotoSize photoSize = FileLoader.getClosestPhotoSizeWithSize(wallPaper.photo.sizes, maxWallpaperSize, true); - path = FileLoader.getPathToAttach(photoSize, true); + path = FileLoader.getInstance(currentAccount).getPathToAttach(photoSize, true); fileName = FileLoader.getAttachFileName(photoSize); size = photoSize.size; } else { @@ -3587,7 +3577,7 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro } if (!Theme.hasThemeKey(Theme.key_chat_serviceBackground) || backgroundImage.getBackground() instanceof MotionBackgroundDrawable) { Theme.applyChatServiceMessageColor(new int[]{checkColor, checkColor, checkColor, checkColor}, backgroundImage.getBackground()); - } else if (Theme.getCachedWallpaper() instanceof MotionBackgroundDrawable) { + } else if (Theme.getCachedWallpaperNonBlocking() instanceof MotionBackgroundDrawable) { int c = Theme.getColor(Theme.key_chat_serviceBackground); Theme.applyChatServiceMessageColor(new int[]{c, c, c, c}, backgroundImage.getBackground()); } @@ -3767,7 +3757,7 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro backgroundImage.setImage(ImageLocation.getForDocument(selectedPattern.document), imageFilter, null, null, "jpg", selectedPattern.document.size, 1, selectedPattern); } } else { - Drawable backgroundDrawable = Theme.getCachedWallpaper(); + Drawable backgroundDrawable = Theme.getCachedWallpaperNonBlocking(); if (backgroundDrawable != null) { if (backgroundDrawable instanceof MotionBackgroundDrawable) { ((MotionBackgroundDrawable) backgroundDrawable).setParentView(backgroundImage); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/TooManyCommunitiesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/TooManyCommunitiesActivity.java index 06da6e1a6..042e2055a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/TooManyCommunitiesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/TooManyCommunitiesActivity.java @@ -248,7 +248,7 @@ public class TooManyCommunitiesActivity extends BaseFragment { buttonTextView.setGravity(Gravity.CENTER); buttonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); buttonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - buttonTextView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + buttonTextView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); contentView.addView(buttonLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 64, Gravity.BOTTOM)); buttonLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); buttonLayout.addView(buttonTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 0, 16, 12, 16, 12)); @@ -411,7 +411,6 @@ public class TooManyCommunitiesActivity extends BaseFragment { int inactiveChatsEndRow; int endPaddingPosition; - @Override public void notifyDataSetChanged() { updateRows(); @@ -671,7 +670,7 @@ public class TooManyCommunitiesActivity extends BaseFragment { } } - buttonTextView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(4), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + buttonTextView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); progressBar.setProgressColor(Theme.getColor(Theme.key_progressCircle)); }; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationSetupActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationSetupActivity.java index e1084b358..0ea52526e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationSetupActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationSetupActivity.java @@ -447,7 +447,7 @@ public class TwoStepVerificationSetupActivity extends BaseFragment { buttonTextView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); buttonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); buttonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - buttonTextView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(6), Theme.getColor(Theme.key_featuredStickers_addButton), Theme.getColor(Theme.key_featuredStickers_addButtonPressed))); + buttonTextView.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 6)); buttonTextView.setOnClickListener(v -> processNext()); switch (currentType) { @@ -1244,12 +1244,16 @@ public class TwoStepVerificationSetupActivity extends BaseFragment { @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - if (currentType == TYPE_ENTER_HINT && AndroidUtilities.isSmallScreen()) { - imageView.setVisibility(View.GONE); - } else if (!isIntro()) { - imageView.setVisibility(isLandscape() ? View.GONE : View.VISIBLE); + if (imageView != null) { + if (currentType == TYPE_ENTER_HINT && AndroidUtilities.isSmallScreen()) { + imageView.setVisibility(View.GONE); + } else if (!isIntro()) { + imageView.setVisibility(isLandscape() ? View.GONE : View.VISIBLE); + } + } + if (keyboardView != null) { + keyboardView.setVisibility(isCustomKeyboardVisible() ? View.VISIBLE : View.GONE); } - keyboardView.setVisibility(isCustomKeyboardVisible() ? View.VISIBLE : View.GONE); } private void animateSuccess(Runnable callback) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/UnlockPremiumView.java b/TMessagesProj/src/main/java/org/telegram/ui/UnlockPremiumView.java new file mode 100644 index 000000000..d333d6552 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/UnlockPremiumView.java @@ -0,0 +1,63 @@ +package org.telegram.ui; + +import android.content.Context; +import android.text.SpannableStringBuilder; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.ColorUtils; + +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.ColoredImageSpan; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.Premium.PremiumButtonView; + +public class UnlockPremiumView extends FrameLayout { + + public static final int TYPE_STICKERS = 0; + public static final int TYPE_REACTIONS = 1; + public final PremiumButtonView premiumButtonView; + + public UnlockPremiumView(@NonNull Context context, int type, Theme.ResourcesProvider resourcesProvider) { + super(context); + LinearLayout linearLayout = new LinearLayout(context); + addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM)); + linearLayout.setOrientation(LinearLayout.VERTICAL); + + + TextView descriptionTextView = new TextView(context); + descriptionTextView.setTextColor(ColorUtils.setAlphaComponent(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText, resourcesProvider), 100)); + descriptionTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + descriptionTextView.setGravity(Gravity.CENTER); + if (type == TYPE_STICKERS) { + descriptionTextView.setText(LocaleController.getString("UnlockPremiumStickersDescription", R.string.UnlockPremiumStickersDescription)); + } else if (type == TYPE_REACTIONS) { + descriptionTextView.setText(LocaleController.getString("UnlockPremiumReactionsDescription", R.string.UnlockPremiumReactionsDescription)); + } + linearLayout.addView(descriptionTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 16, 17, 17, 16)); + + premiumButtonView = new PremiumButtonView(context, false); + + String text; + if (type == TYPE_STICKERS) { + text = LocaleController.getString("UnlockPremiumStickers", R.string.UnlockPremiumStickers); + } else { + text = LocaleController.getString("UnlockPremiumReactions", R.string.UnlockPremiumReactions); + } + SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); + spannableStringBuilder.append("d ").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.msg_premium_normal)), 0, 1, 0); + spannableStringBuilder.append(text); + premiumButtonView.buttonTextView.setText(spannableStringBuilder); + linearLayout.addView(premiumButtonView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, 0, 16, 0, 16, 16)); + + } + + +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/VoiceMessageEnterTransition.java b/TMessagesProj/src/main/java/org/telegram/ui/VoiceMessageEnterTransition.java index 50c1b223f..f8802c7b6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/VoiceMessageEnterTransition.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/VoiceMessageEnterTransition.java @@ -82,6 +82,10 @@ public class VoiceMessageEnterTransition implements MessageEnterTransitionContai recordCircle.skipDraw = false; } }); + + if (messageView.getSeekBarWaveform() != null) { + messageView.getSeekBarWaveform().setSent(); + } } public void start() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersListActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersListActivity.java index 233f8d0df..7f4ab6f31 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersListActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersListActivity.java @@ -40,6 +40,9 @@ import android.widget.EditText; import android.widget.FrameLayout; import android.widget.TextView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.DialogObject; @@ -82,9 +85,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class WallpapersListActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { private int rowCount; @@ -1811,9 +1811,9 @@ public class WallpapersListActivity extends BaseFragment implements Notification case 0: { TextCell textCell = (TextCell) holder.itemView; if (position == uploadImageRow) { - textCell.setTextAndIcon(LocaleController.getString("SelectFromGallery", R.string.SelectFromGallery), R.drawable.profile_photos, true); + textCell.setTextAndIcon(LocaleController.getString("SelectFromGallery", R.string.SelectFromGallery), R.drawable.msg_photos, true); } else if (position == setColorRow) { - textCell.setTextAndIcon(LocaleController.getString("SetColor", R.string.SetColor), R.drawable.menu_palette, true); + textCell.setTextAndIcon(LocaleController.getString("SetColor", R.string.SetColor), R.drawable.msg_palette, true); } else if (position == resetRow) { textCell.setText(LocaleController.getString("ResetChatBackgrounds", R.string.ResetChatBackgrounds), false); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/vibroslider.java b/TMessagesProj/src/main/java/org/telegram/ui/vibroslider.java new file mode 100644 index 000000000..b1fc1f8af --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/vibroslider.java @@ -0,0 +1,103 @@ +package org.telegram.ui; + +import android.content.Context; +import android.os.VibrationEffect; +import android.os.Vibrator; +import android.view.Gravity; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.TextView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.PopupSwipeBackLayout; +import org.telegram.ui.Components.SeekBarView; +import org.telegram.ui.Components.Switch; + +public class vibroslider extends BaseFragment { + + + private long duration1 = 50, duration2 = 50, duration3 = 50; + private int amplitude1 = 50, amplitude2 = 50, amplitude3 = 50; + + @Override + public View createView(Context context) { + FrameLayout fragmentView = new FrameLayout(context); + LinearLayout ll = new LinearLayout(context); + ll.setOrientation(LinearLayout.VERTICAL); + fragmentView.addView(ll, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP, 16, 16, 16, 16)); + + ll.addView(new Slider(context, 0, 100, 50, a -> duration1 = a), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + ll.addView(new Slider(context, 0, 100, 50, a -> duration2 = a), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + ll.addView(new Slider(context, 0, 100, 50, a -> duration3 = a), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + ll.addView(new Slider(context, 0, 255, 50, a -> amplitude1 = a), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + ll.addView(new Slider(context, 0, 255, 50, a -> amplitude2 = a), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + ll.addView(new Slider(context, 0, 255, 50, a -> amplitude3 = a), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + + FrameLayout button = new FrameLayout(context); + button.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 4)); + button.setOnClickListener(e -> { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + final Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); + VibrationEffect vibrationEffect = VibrationEffect.createWaveform( + new long[] { 100, 20, 10 }, + new int[] { 5, 0, 255 }, + -1 + ); + vibrator.cancel(); + vibrator.vibrate(vibrationEffect); + } + }); + ll.addView(button, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, 4, 80, 4, 4)); + + Switch switchView = new Switch(context); + switchView.setOnClickListener(e -> { + switchView.setChecked(!switchView.isChecked(), true); + }); + ll.addView(switchView); + + return fragmentView; + } + + public class Slider extends FrameLayout { + private int min; + private int max; + private int value; + private PopupSwipeBackLayout.IntCallback onChange; + public Slider(Context context, int min, int max, int initialValue, PopupSwipeBackLayout.IntCallback onChange) { + super(context); + this.min = min; + this.max = max; + this.value = initialValue; + this.onChange = onChange; + + TextView textView = new TextView(context); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.CENTER_VERTICAL)); + + SeekBarView seekBarView = new SeekBarView(context); + seekBarView.setReportChanges(true); + seekBarView.setDelegate(new SeekBarView.SeekBarViewDelegate() { + @Override + public void onSeekBarDrag(boolean stop, float progress) { + value = AndroidUtilities.lerp(min, max, progress); + textView.setText(value + ""); + onChange.run(value); + } + + @Override + public void onSeekBarPressed(boolean pressed) { + + } + }); + textView.setText(value + ""); + seekBarView.setProgress((value - min) / (float) (max - min)); + addView(seekBarView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38, Gravity.FILL_HORIZONTAL | Gravity.CENTER_VERTICAL, 24, 0, 0, 0)); + } + + } +} diff --git a/TMessagesProj/src/main/res/drawable-hdpi/account_add.png b/TMessagesProj/src/main/res/drawable-hdpi/account_add.png deleted file mode 100644 index 28e2a184a63863ed4e8d9a68252bb883dc4d6472..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY7Bp6QcFoXgrrjj7PU`ull%twQC)za z8)Med_;m-F2?)S9?CNYH@06Fsq?(jqegIMxOj-M!syh?Xv+s;!VPZp0F{E+@MD|at z!(xH816MY-gF-!rS~^!H;U3fqC1IP9usO_>FRTr2f&>cK=_Uu)%& zksE_W3tS>LJA66sjPv;jDG!W5;>+*WYpe>W0%a<22P1m$l|`#%@Bjb+07*qoM6N<$ Ef>33VLjV8( diff --git a/TMessagesProj/src/main/res/drawable-hdpi/actions_addadmin.png b/TMessagesProj/src/main/res/drawable-hdpi/actions_addadmin.png deleted file mode 100644 index 26bd0f347b817739b09c8ec8dac27fb465413916..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1335 zcmV-71<3k|P)$_|3v-aBO z;=h8Lm?z0{sgDBC3gB$nJqF-o0H?|^R#P*a+UP0-bPRx506GB70Wd}F-vf9Xzy<)l z08Uimq>_kU0$_opwS?{`0J;FY4&Xp8Vo^kk618c)QPG>NXa@YI2!5dFs}JLY}WF~MRWv=Xe8rEwv&93tRK z=jTg`j%y|PxqSD=ylNA;hCKML5_SqMdv!D};rYEj(K=mE7IbnCfOFjQSpe=UXe0Qn zi#w8thAp8;bz-~EGTrY3ut)b6;nNG)2|h<`OG!mZiM{JzopAup1TYQ2ZCaa#M^rIw zRfHb{@Cty#0Dc58P%sFoM8krP!*A>6ZU8d?G)rt`$~$G#BlsLZDUke7ziLBDaq+B+$onKG z=Gb)_Np`z&&ygIJp!cf!cjY0vNy^E2$T3w3`=X$aD-Pp}hUzQ#u!GKn5= zC&rl>hVA?`Rrmdh$Vx@I55OwTNWXNNG$sv~s(nz0!EBHmO|oBWWqZb&n&V!OZCcYY z4y*7En44j5i*)we+RhWvA=Q+IYqSF;p~babudURuP1~p8JOFc@-t-h(Q{~Ihom3Dd z5jDJ_tF6;JQ*v}E=qWKK;0~AUyHa$9L(^c>|B9XQKPmx$zX4^Ythl@gQF{OY002ovPDHLkV1jGrc&PvY diff --git a/TMessagesProj/src/main/res/drawable-hdpi/actions_addchat.png b/TMessagesProj/src/main/res/drawable-hdpi/actions_addchat.png deleted file mode 100644 index 58c769409ef1bc56a6c826f1e8cd51de49d9038d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1296 zcmV+r1@HQaP)%@M1v;f`-rQ`%#LI>+gSB-#+V{v-jC+pX<33 z?*~7=wZHX!-}=tld#|DH}Fp3@n~W%=Fh?d>n(KLy6aYmWZt8*mj`;V7KU<#JEZ zohKBRgITZ-?n8*2$7wZ;=#)ws=mThla(Rs5GMt3p;7_;#cX0!lB^Lq6TROJ)gmX{}|W>CMvu+I6*Z>5)Fh? zmKpsEbm+Db{|V?3Fj-cuhSWZ?^n_n68(O!ydum{S19_&wO^|428w0}PT?k&LEKW9| zGc8^5S<k=~1}t^0%P}7kdL+1ikJh(XHa$E68%be zWaoPJV7Q@f$TkiVH|se(6VZ$O??N6lqxawf9B1sa=wu<-c8?RuULEUUj8X6d+=3+e zosLDI$*UAPcDu-9mAxIakhd3T<9Ou82vL9Iq**T&jO$#qZoxAXa=r?OTy7~9yA^a~ z%tIfL&jeTwr@=(W$+;!PU|8vTb#xn4(plpLc{G!Lk%ze+T`e8`+QOHB)>nz@X^LXF zm?W!{(q9pIWowX2x7%b34ZTE>=o;q1TanQeWJ!_AhwUSfoQunkeFo_8BH0xAaN%#E??oLoG{~j5TcTn|#ihW$N)D2^e%a{S zTyXfm;5Q0>7>2-I*P&&iPf~(vcH(qPZ3)_%cCja{Mc`)^j4nJrXuaK8^D&*fJqOF7GeJ?P{($=h(XX;z?88APt*Ox8?7qf6 z6HF%feSRB<)R#&A_}TW}8a<;J$I@rd&X1NDyNdc8mV&JY+BME|eGN`QGtX5U`Z$<0 z((td%9;C_N8^;FcT+BnqdXQ-S)BdYJ8a9A^J0IF)^p;l$eFNZ}^Er#w>=vGd zH=VIu-NUdAW>jQLFyPw*bX1e*fHAS$6`MYt&p^eOC^mh=X#z~Nu+ULWq60?I55-S2=@+SXE^WLH^)tX+&`T%L0YiKD$hf4~dxM@yyWKR~ zPe8P~)U{d$YND_$VB4zd)UI<3E`jb?9vUDjiuNv;%}V00%b4mY6q^VAMWk6x6TLX| zp<)6n4E3s+!F5!d30hzCQ1TVZ^$ys}EIvSYN!JY63_JxC+I~HfxT@X&0000 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/actions_addmember2.png b/TMessagesProj/src/main/res/drawable-hdpi/actions_addmember2.png deleted file mode 100644 index 6f1040055b97e84dad0dfade2977c68a48784509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmV-V1F-ywP)$iw;8ZtrvUT5EsL+Iz3H4mon<$nk%o!e=EZ zE0Pm|jldFM4ln|E2HXP90~bODDk>_9PdcI*wDpqOl#DZyrX;OZKs-*gOf&+AJQLTf zeFvrkD}YHh_YhbKy!h81T_EX)`SF#cwUP$KWF|{G=K1R%GAmDFhq?@b{;UeZgGKc0r@pcF@PWc)1mfd#-&pa(dc!sbWdl8xs9!$Jxn zqV;y@PXSd4a?`B;VPPl@o_M;|aBkOd<_YQh<1D9q_4gMJh$;yU`W938eox)o83Jwm8jc}abAnI$6clg zu{j@Z`wrUkLf~-15pW(q0t^OT11CZx3n1yKq%U5JLQb!wud%t)lB&FrGE7pF7ay-n z+8}9~q;ZxI_L-ds4QW&8UkK#qINnRDjx8`z(v_H8hkaO2?A?}fa{Xpty!UD;u*@#g zehWVlnk|pV;lkJ!%lk88Yq;pp1ndEBBsndf>qAA!PGBGK85oni9|dr+aV}72Nuv$8 z2|P}t94A^CkdH2e(;5qWDuJl0m|CorjS$hn-Uo%!sGA>^GA&2wj2)+<2oZf}eS1RC zpA9rvSej)yKMmYDdjs4Cu3DPzPN!LT`$kA=lvH2jcJ7e$sl;ee3@wuC2BN}00Bp0d zOSPBHJDn-@-P$!)Pt@AGj}~R_XI0^^_Po-X;PEtVw4`00y&IB}3!9XNT{gOBM%^#R z%rZ#&ZMR2uQx-()yezXlBa*HSmGsE$o{4iSC6q*%Z+bt0i~Z0qhAyw_pPL2I8tWa= zw;2+}!WCAj{e}JzjRLgnA1O;jzdHs0P@#a|7fza9YnsZuM7Z$w0l1g3-5fb`Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91Dxd=Z1ONa40RR91DgXcg0Mr_#3jhEEK}keGR9Fe^m`i9BK@f(s>nkWe z65{jXK@fxlF(jTsL_{Tr2%;z`h^QBX=t&3?gv3i!#Dkv1g9k4m2NeZH@gyPy5fwpv z9aJQjh*88xP}i?y3X7fTnVy|p<6#PZx~KZDziN7VyJxnpF1LIJ@)@Yg3>2!O5+PD5 zl^Srb2OVG$m#ggQ(%}W0)sEaGSwLpw{Lan~I0}KFvV;1MEsA0GXI=M&o+gcrQK)@mE( zk)$Li0^LAoQuK~{#FQ6#pE&0-W9)_q2evdxKQvBY8~CCMw3QV3fVjqxc;H~H!|0E= zcuqgTbHH08a>7aeo3wl;lZsr3{u`5{D=9~4oM3x24uuG14)|${Y$E27DRQ_>GWn8V zdE5CEh|MfZ z0GomHq_X_jJ|craZDkx8()76TYK^&0i^nFxI@1qz`RtttIRghbQ3Ud1lW(ME7q4PJ zqK!b_*u~_9Vrp73Vy1y1pq6-Gq|Nb%kNQQ;K--%}1b#iZYT{*2Zb_rz%|&<_&_5C6 z6JfhgFuZxdeh$Cqy4@$XVh#y*12y@=JO$>u1Q}ZkUIMjII#pSlNpIe=@AXmG08s8Y z{mbAEkpGfon^^(6!D^uPicS|lwioKCc}uZdfjmNAy9CiW^EEA45`$ylHHfkaoU-w+ zsYN0BI8$j;jI6umK#teXK$gHg9<%gw%V!{;f&Y01egj2y=F!#U<$3@B002ovPDHLk FV1n@PqhSC5 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/actions_nearby_off.png b/TMessagesProj/src/main/res/drawable-hdpi/actions_nearby_off.png deleted file mode 100644 index a13f8f8e36d9c9aa8644a48b9914f95a34929268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1066 zcmV+_1l9YAP)=S>`FGG<-(Pe-0Z?jq*ii;2qPDE z;iZIx8(R{!R*KNJyj>wTHY6{F7@-ha^U`Ls`F!VjPEY?m|8vf^^FO;ezxwR=y!`&Z z-*?Y>&h!7De@;%;vMZ2Xf$R#5_zLv(_2t1%xC1}n9bAIN84*XJC2$qiq*9Q$DbNBw z>tV1al{~|Wp~y9-`j%wLh;4G>AJaYxXQ9IxUzse=u;wXL+CTgM zPl+!k?PJtRD4hAVM${ktgrES%wwZak(ZTu1`V8% zJLD$F%ZSim5ej>SD~`DZPz}f63bcW1jdY?v`aGgbDBSKUp&fRP>l0W7&z<<%V9v<< z6hH0=aGPG?5=2ljJadA}BNu85P&5YLP4OG}(5+&xv7Xpj<~q64c06)Vu>z;?Mirz# z7~zl1^$&+4Hg_l&agBRjAp+(yb{UR1`A#xEV5=}TgBbgKGS-QYwn<@akDuVPge%Sk zrO<6I+#9XZKz54i$<8NS|4=gF8;Cgou|V4ByA;*06&+>Q!CJo%I-$au%bZw>6~TI_ zhu7dUD>|RaP~nj;Da9+`BIwaGnQ41WgI}NrrpyYb;0(|$H)!7&(2w3dupCZ+HHj`a zomQ33bM{fVHPIDj}^m1@fg`xbAkh!8P4b4nY|t-8ObreV*%eG%kc& z;M!qdygQa~<;bMhTic-;Cb<{V?tuI70Q9=+Eqs8V@EbZ|9E=CO3z-PBq0}%RKN)srP}%Ed+}Z)UlkLp;UIB$ ky+PT*>snrDf5a%;e}GvNJ`##q1hYp zlF18E@+37!b+P3N1TwgmLSr10i9nPwYowjYdHrLmV5549iAAZlY%0%MB>+~>5 z>zrDCD$HlVZs;!B&)^MwfEh3c zN+BO4eXuh(H}{-6LnIY&CQ4xD)+l2mMN#Ia<;#M*?W$-!x1mM;&fN0Q6CKA?Ul+$YG4e@5 z71IXmVuO8i#^O!J3u$O0j)XCBWB;F2*LOmMY?6eYO+RVy3xQ*UpEI_(e*Vd9_NYqc z=N-R}q0VcJ*w_3w5$B}uPNm9V7rX~avP!?hrwSIPvwEawip8e0*albyx|U}`7#VAv z;>(K!4ZOwfQ@h)>}5jJSK^gsWDER}RutaTvrfE{O~%Pq`jF`#GUN92Xj0z_J`-Up=u>p%37u)y&#Qea&4l$h zo&=5mg#A#&b5{*b5Tl>A5a%mgfJ%au!5tHH30iN2zWEuSfePoxAZdrBI~^Ze=@#0m z@=cIPt1r7`K&1z+8vn$!e@?_b`~R%-`ULjz|86Fp3UqP?@U1ug$&~g+LLq?O2(9c* z=6!yNEF|26rdx^k{*HpdVx28rso1ZGJ&7=*>=xj|at?4SGph3VJP--IZ242RTj7xyF>* zB)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91Dxd=Z1ONa40RR91DgXcg0Mr_#3jhEEa7jc#R9Fe^m|tj(VI0TL>(4Ok zBqgSqwz7ozlfng-T_KzNsTnE7^|+w8b>l+RZiE}P8)=x-a3$hm#Y9t+KedL9h*A5a zaeRJf&$FKM_MG>9&w0<;Dc)aw_B`+J&-eMAr}wP# zCySvRYM=zP-DT3i?ha^2-bR|NgI}QS29p)G1@RZbes~Akx|qam`8o5kz;gJhRvcv9 z7et)AVz{R2WVi#9gVbh~gLsFmg8hcAnTU|@fZ6PkOzH#YvdA9Lb~gm2bKw7Mo&o2K4D2kaT(DyiQj~W6y}K zN*7mtIS+{Sj}57R!|bTpXjQ6gR#)p()mvM2R*iDg7a?}m5L|D}GoGSXP0h(8XPF->vg)>AJ!VA#$kjb1ds?;CQVvHBVXeDbASq8m^ zXe)E;H#F#C)bD^{rTLk0e$ZNL9s--ed}udwZN0zoS3`wWNI8kiTkQXd(3vNr^df;1;4pSsaYjd-mj zW?+xWUFxOj8$&=&;o9U=*ZLKa)1nIG0Nt(T?qLYWZK(It^Nk}i4}O5yM_6eq!Y>D3 z$z22T#rO(hS0$gZ3}lxZpbpl;Oq*6#KE&!l+ZLM$!RsKmgU#}DQg=7P$|sH0r&{9W z#Pz*vq$a1G{PjFUyY+%xr#qA+jAGkk=pb=N<(y*dhW7#o5c$`5VvHR*W^7a3Tou3E zmv2=3sTs@XJl&3(C!kY^-ck?1`b$V*x{X$ib|Bh;e{To=0yz}?N}HF60ssI207*qoM6N<$f>rI? A0{{R3 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/actions_reactions.png b/TMessagesProj/src/main/res/drawable-hdpi/actions_reactions.png deleted file mode 100644 index 2ea326de9b4b0f96996855fc5fb2ec446e9a4feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1015 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91Dxd=Z1ONa40RR91DgXcg0Mr_#3jhEEVM#Gu2Y&J)AzzRWwgyO;KX-#qWU^ZcLZ+1YnycDACTY~?dhJ_G;P8Av7hxao9y74e&( z9_C;+l}at*V-0OJLDDwEH<&>?k1w22q!UJ90m3%V&Mi3Ls>U&CZ-ZjPrd*@Y>C$@7 zlcX_7hKsccB6e7E#yjCrtSTFzh8sU;_yHdkaUJj@q|>;=Q#%mS_4;V^DQn?lAbg6i@e&e5tk&gc z_@r?HT@CT7B~$JAngn$zIX11pC{9xhbx|-+7J~Wr|w5W9Z74Sr6Ggw)q;Z3XU%Piz?l~o^ngklKC3d z{Zh6r>q@%a7*u;7t(vdV*FjJ#YsG|7UBUOMwVtGQ^Y?1>Zm0`AbxLJNLWPDyWA~6x z_XcFsV2?q!V3|j#Q3Y0W!aE(JqhO|IcTtT(C#)F$xOXvv^{k%^#QJ%*-CLY6klbxx zKLKAdu1k~x!CqJd*)v#~D1k>XIdzjC1KASn^N{6+AUv%Mf!)MAe-`Gd<7dcs&649U z#VZ^Uh_wXng_89#KiCSP9 z%=+>MdQ6g_&ywKZL7RunKST+G#JG(0vrV*Si9er}X123zH~V*xAdySa+9 zA2H5Mih(OxNoG6Ew%sWx!~qIu8R&jzHpF0sD>ujLK(EwhuNbtr;tM)Yp(c22mGSqX zAzFkvz4(oQ*%Jo(1EO?BK{YXI9pImXUZFF_xEW$UjKvq#(}=#-8(^jjM9=LW2(RTk z>^ql7QJb{nG*Af_!DW{@5PQK{zM^}YISg~5ZuQ!HtWbp$-3Q}}(wN>Dwu16b^1^2C lKylLY@$wlcpMg@HfxiY~ARAZ0Y;6Dl002ovPDHLkV1hJN#DM?+ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/actions_remove_user.png b/TMessagesProj/src/main/res/drawable-hdpi/actions_remove_user.png deleted file mode 100644 index 4cc187a0a6a99b9889cadd6f4a7e21489df32d8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmV;#0XzPQP)GEIEZG4f5wmnk;;YHA6Zy zY0_cH+W))2j3#(T$6q?aBy%*E!DQsm+C1n=-t*z_rK03i{BwM2%3=%poKhgG#O$zJ zy}LX}K7}%~%mp{>Zpn#2d{NXoQ&D8cnp`l=0(QJ;hqTNNu!1NlR=_w?ri_6VsYF0b z_b?)f8e&aFP3Qre;Halvpe;uQYFLV|MnUr0`)Z&T^?;@v z)d@mf^4MYbw4w7BHdrHy|HNIEh`1&OE{nVBgZTzxmLt1oK+oDf46E-bc*gu*Hm$&oU u9!uHwSUg|apgFi~+2Z0{*r46;@9_;ZUvj!6SexVk0000c1vgoUNH;D-q_|U}C|VaH5ehEag|s^n zT$q3swWugntoWCef?70EQHtPSVq)T7o^s2X_GU8Qd^edPQutoD-1+7^^Ugcx-h0lu zS0$8CLOv*qvj8E)^CdM{UnS{|r1O$~lk``fV^dZ(K;nNwQ(6VE19-qdyaCPtON(#} zsue^E$tS>tn7rq}W1!c&_X^njzJ!hee)q(j1sZ{BU>qA-&t=aF$OXvs1*PUu5RonFslHL`u|5efjyRHv> zM^S{3%(A{$($zrTi`LJSR5@Hi$6EhZQgo$8fe_A5q$QH-EKa)BeM!<0NoTWq(MRObq1K}jDlAU+Sey+(jn%QA zN$Qhy*FLg6P3QpRHDn3x3*ad5GGV&(04I_n%D;jGJnHiNTuXBVywbH9_ccQ78E4D659n4#F}@qFt&<8}ex0}Fu(z(>HBK(iI$5w?WJ z(Rm50+YvnpXs*B>Ydp1H{B`I9b{3c#bAVfB_ZnDKOz6izyGPz)8D=6-8PLkTm$w>6 zM~t(%fY_P9Q?ohkyq+d>zel(&!{TwhKO&mQiSvadpQsRWY&SY-j6mD$-S`%zG*6df}Oz33sdx zxNRg&emF`BnQ1~@wt1aV&>z;j*!yYhzcjHmcKYIQ!xt3C6G>Oht66Z_Dl4~@StaRQ z0kOyILz-+0Q!Z(gq&Idi3AJ`!03jhEB07*qoM6N<$f)6ds7ytkO diff --git a/TMessagesProj/src/main/res/drawable-hdpi/actions_requests.png b/TMessagesProj/src/main/res/drawable-hdpi/actions_requests.png deleted file mode 100644 index 448317b89003860e7e56565bde982ede7f5d702e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`xTHpSruq7U zRdFydwr4W1fRq5S6c95oFfU+aUP#l82bU+4II}F@*A-0HG4(*t$cokWd~bbqfWKwg8f&HNp)X5kg{mE zeb3b^xgR8In6FKfe3O4h|LKfF#~Wr%u4Pi6)N1*T!Mt&+`pJsS8PWY;`o-^?Xk zolsHqd{c$4rT;;>58+ccTCY<&a`dj4;O?i7+KzpD;&I_{Vr72pAFrjKCjUr3Z29Ps z*0G~=#A|Gh-u^rx>fpkIj3x8EXMa=>-}z)!a{8&GKb;D03;6Bo5P74R_x_=)`1A<< z3;VP)-k9VsPP2@co~pg8s{N6Oq3AT*wY!DtGuM51%XwBXA@@kR<+oS0Hh0}8Pso#a zB=(Otf`R=&X2SIM){hm#oc5(XdBs{F_-6I|m4Cl|tUf7o{?Yzf8}DdUOu6E50d6@a<-ORJ-e0tr(_+JSAEjce6_*vsOPVdC7W>cjQ%jciy^T-S{`@ z|JjNPan0wPMb!tHHk6sAubSWXXhrBz{~yM8cud+3v|X%un8xlRxF_G`>-ELj3Z|30 z&N(mM+4=sQiWO7l?-z=P|DU+F>D>ul&a=`*?EeZp7Cl{N`m1Mw)SPWgnEuE}-SThU z%Jk)xkk0wOwM#e>O=j00>dsKeIwIKtOg0NljX&^LrbSN|+3z(2lyW^?{an^LB{Ts5 Dq$gx# diff --git a/TMessagesProj/src/main/res/drawable-hdpi/actions_setphoto.png b/TMessagesProj/src/main/res/drawable-hdpi/actions_setphoto.png deleted file mode 100644 index 8940ea89e84021c638ac2512f954a74b5e0a72dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmV<10wn#3P)1#AP?uwEN0+v?iV#7u z=%$EplwAl?bl0j2LDvvOTbupSGilB?&9S|@@ZqqXbDp!EJ!g=x@Au~UJ-^TMeLv5S z-}n3dJwY&Qvo^!#IUWAc@A^2up-Y>k#R&hZXghDobVANiEg>OcxmS!JrB$z#xji98KGX}OxB`x zc{U$l8yNMqW=Tm&M{LiduhyVNQc{yP7r`YDL_hE${CvEx=7 z#%s}n6yAyfDAR`{(Sm*)h@4$)vpRciiApf#`p}yH3mS6HRBDq-@0GtDRg*(C*Hye* zFu*EZVdz^1!>dc4C=$S8S3rl2ma4YFXW&l{7YA@0)J?eehEaS`1b|w%@k!2{8L=`x z;3eF)I!l{y3%lb3-p6Hgv$Q47;nVnlkI|h|-HDF)fO=e0m8D(aR~(KHcpAK%rQHHH zWdQ!ddxZh!`vpCgW#mRTx>aNVx(#S9G!I?~`|tYnohSVS)@ErJs>s(5qDsZ#uo0bc zP|`Qx+vvar=xguX~0j-|&H znSgn|0%LAY$=3uy5P04|+DCCGJ?hQ=h6kMtPoz_^r-C2|?1&cRUZ`3xs#kCSB;IiE z_+q8T(BC$I&h&U+@qbpbN_cU@Pqt0(2f*+6XeI#{40vbu$NB$f{{iI8>doS|MaKXD N002ovPDHLkV1gI-WJ>@5 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/actions_viewmembers.png b/TMessagesProj/src/main/res/drawable-hdpi/actions_viewmembers.png deleted file mode 100644 index 6cb63ee7d38813e705267677dfd9526cf7df19d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 867 zcmV-p1DyPcP) zQPCtKGJ8RS5oBd%DrK2|v10Ao?9SO|d#^@=^TFoqyVm;F{_eVaud^>wq)3q>MNY`r zWRkvI3jyo`upYolwLJoG8^BorZ>Hm?$Ye5q8%1c$*g>+F@#xhUUyiKCZ^5q62s8j_ zx6D$(dpchWV58;R3E*5pk>&uH31CQ;oT`eJk?hwxz9+erWXAH#yk32Rk0h7IRIZlf z8ImtF=S`B0B#V8OjzmOYlL{CkS?5W(MPmd99bX>FX3w^HMsigyLS=z#nyfQme@TS| z*OhDRyDd>t`8JY=NZzpQJ#m!{5n4#{ohCXGAoQ>$rbun`NWN8j7s_w#2>^F>z5zhJC$>&wpqvSv59o6ifZ`Z#i52_Zv&J7p?2#o_d-|a5 z$v!AME*tAIcU$NJ;~Vaw3AyTkCHs5a~tm4DWBwJ%YQ=qY_Ybx zF3YzmSD`W*tkWBXK8=ZcY1rIRlAoO%&AB#wcR^_(SM}$T#jmKXEP-22@)F5!j= z_k_HeCUbkTQK&6vB$S}2)b1b$>oI`)0Q!9d^RCZU=s$xIIwN60Y1Y*MDgew55GTF2 z8^8kqeU7g}Z(?JPeN=mI6ek+i-Y6y6LUO=!fP4^ME6D{`&gCQrC&}>&ts?o{Ng}88 zQ@|K|JkzyJF;3u5K96&U|;SB%)002ovPDHLkV1k}4jz|Ci diff --git a/TMessagesProj/src/main/res/drawable-hdpi/add_admin.png b/TMessagesProj/src/main/res/drawable-hdpi/add_admin.png deleted file mode 100644 index b96daee10aff6bd14192ddc5094192487a1fd63c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1313 zcmV++1>X9JP)>&l=A4*7M zWkr_a6cR>Kl38k@y(UdZ)5)osWM+P`X&qSY&N=s-J5vz!!RFpG`&)Z|d+oc|TKkOt zE2v3y0@X^cmvn-pfs%fcv_;bQJ-z5@jdzAj0hnwXuEhD(|yX;QRX zdnK)u^opc4k`7d@I0$vE7jP=@2=E1e$2Y)}z*OVL_GbW(0bixqhQB>woZcz6sVx>d z61W*?1UjP$eg<9!W&wi=PEZG21S|%cQ$&9V+zyN`BlIlult(+T2AB(sDZ2WMb_8%e zuoCz+n&(GbP$8k;Im1oB1Hi;?ipy#z0`~$N+?;#zoZ*EgxEttGa^k?B2J|m!R}0(( zblBY2WN~{%XDWo0W%gMHx7lf)U(&AAB0&-b>a&Qk&`xV*Fig@d#-A%`Y)ShrH)p>x zLfcACbc6H6U`g{z+P7Oq3#iK?#X`HBQ4tK4bYsN3PSThXV|2LWP}rjZWvY`zRIphh z>Gurrc?joWt)wPNZ&zg7scQj-svIA1{?qmk4Te&MZi12X5+-T%D5M#^tA$8fp>uyfb*(}y|K`cF^-H#%Tp%DQtWs%xl0t7aLaIbAVsWZkLJ4%1~R4_fS!xmt+if60ptj9?dD!!o>GD z?hf;CUJBl6+~+C@Z8PGnIRhRKeCY&So57puIAL+8Rq%We+GPBNX&fI%_uJ>VoG7+g z(p~PkD}(3L@Pm@p=ZqD}aD6RSxcmv=X> z#szvMyydt4Bl{d--pRsv=h4?Cy&-9`T@)u;nfRW0IpA3Hn4H~mNzJb9aa-RO^=$PPOfn3Yu%}Ts#188U9b{7oMJG+vR9kMyW=t@9&1f*YI|K{e1RWNR(&A!T3-6xpi$dCB`+KRyRuY=DIW8FlY_y^{ z&nBeSkDX1KI<{(|viDGpQ6OJs_oN!fJ16Akh_|jnJ=&u}lb^!8=!F`#fM@Lj=kXJ8 zXBF?Hx-B$mqpiZn;+SzFeispW2BZR|LA&MCx9TdD9fOo7H!9+K>CY delzc$ey9F@Q#uo$fdSA^22WQ%mvv4FO#n7uF0TLp diff --git a/TMessagesProj/src/main/res/drawable-hdpi/audiosend_pause.png b/TMessagesProj/src/main/res/drawable-hdpi/audiosend_pause.png deleted file mode 100755 index 0d68a49d3438009d91b87005e26e815a896d6151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^#vshZ3?$vp-`EMHcmjMvT>m41uS@xgf#NJBL4Lsu z$NwLUFnP%h_UCTU7$uWTnPxdWMn`pXZ!`fkYya$cS+TMI|Lg%f|XI7_z3Ou9Lb8s|NcgS@ftI59a$L z+0zVDHr=SIsHnQt3SS#`dzT!C$(|jU{xCA*&`TIS>UAY;E=_$pKJ6+bc6zBvd%I2z zcg>7A3tKmrx4Rz0N`}A8jkpGPxw_6;sL9l~$r-O;C6A^C4l-pc;5^TXucP^~ySk=l zweV&%R#N~sne+ExDOOVi)y(-5upO%@flB6lyE?J|17%SDsr-M|bW+ZfNt&ej9h&`I zn*CVKRxZtEtY*@4wC2e~{KdAR5v6HZ&-dt9Pz$&GcbZoheR_Q+5{bkg;2qk@?}>B& R+o1pe002ovPDHLkV1f?KuFL=c diff --git a/TMessagesProj/src/main/res/drawable-hdpi/brightness_high.png b/TMessagesProj/src/main/res/drawable-hdpi/brightness_high.png deleted file mode 100644 index 44e23c974ad16f15f36e4b3fac7a30fa7cbbc660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 831 zcmV-F1Hk-=P)DOghWk14HgkSFj&RH2th$XNs%HVsFi6%P3fO5 zf)G*(3E0F!EG#V4&PFYcXb6ImpjBECL{G31s{}D9=l9Nex!Jp&nccm;Ldb(J^Jd|$^}X9C4ta1yrGC1bsc8T}d?We^QHXOD4z(2lzDyyFx;0^&M59l|^-V3mie}ZZ+s^ccl7<5s@dipX@?h1vw=+3WuO+CmFj6VvEoekJEIH zAs~yo56iG|i|}{CEL6a@bvmyga!%;?J11#1fcOY}hmbuXp*!t-#WV#>Fhc%3=*@eN zUxpRf1H&*5dQM*Aj}?o>KeYK8i`fObGe7ZfK+^*;HUMuyZ93nT7&X-8%&1-WO+r!+ zd^X9ew0*w(Off|D0Kda;+L=aCa>hVyqA~93N50flAAwVb-C9Jygs-=(%$cZa%+oFq zTQ~6&nupdfJcrkY8I46+f-_*7Y;|o>w8yN#*+`+ML(Ph*lY?I~`f~dk?V!f>wrJng zu37=PO-W62*Q|m${2u5vW6SLLM=M@;S+?ty$sv`Gp4fwWh1(-d%eIVsKBUigqwejUO z**mjF|FFh$ZxQc?d9dvl9l1^4>_L24%$as9q95T&sGS?y4wwcxOD zi$ml9=ok8#Ey#EuOu$1Z!&8uNS>yoI9|E=8wni!+1({G6BZAjb37BN+w!s$>Fm^MG zPJ!ZaRiMrOWXw*zz0)7EE~powIk@Z-AU+76;BFwVM9w`p?aOO9#spI!_Pb><1R}rf zGYabO!;Xygk+M7%q&t)UpQ(|hChYL4R(nfCwfz+ck^mDxdXH`V|E002ov JPDHLkV1nTHe~$nF diff --git a/TMessagesProj/src/main/res/drawable-hdpi/brightness_low.png b/TMessagesProj/src/main/res/drawable-hdpi/brightness_low.png deleted file mode 100644 index 4be4aa4c3a8b88a8170151206d294c8bb3263293..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 650 zcmV;50(Jd~P)GDOh$z&mEqnnKR9c(1uv<6ip=#hv75&N(w@W}MgV*40H4tw6K_|9k~J z&x=6{*8fGR6tWDGk7^XuP)rb#H9&oU?}I;XI?IiD%`liXSV@Oq?QjEEFpwLIF(r&c ztbnbH@oSL8bM0mI3DgT;iijMS5(NL1^sJvhGo{Q8^(EdCyur5XNWT?^U=)U-2Qphr zdju|F*_~IFHbL7g5N(~QMRVd~2>rreY5KDzueHkbqsd2gwUe)VvraAdyx^ zatC8>Qu^A$O_0dm;o7U-CV>)ao3t`n#aJ@N>){Y2t2SP-CYWAeJ$kdytbk}8V98Nf z0_@{yFV9PwAN{;|W-Ce)Ams;@O1~j!-6lyQEC}|Fv=?W|{OIS!Gn=c!Ug|v@Kj9Y6 z{7LV=?(}t#GW)aRP$-^bE~CkRsdq-A+teBq0^7Wtko_Q^s*ICB2UhQlM7JsP2wDQh z`rrv9Q#M{RO_F}lJ0sC;(gD_)Q6Y0+#cb8A2n8llCv^Mm3EFyRf@BMWK9u!{>SpGx zWJSdia1yjC`aH9uv?{BR1lb;8A2QoSdjlkT*_$dV!ktX83q?hg*lv*PQm~EhnkM-& zUC^nVK>{woIZT!^AO9B6_MJdiDRayAB~kR9`nT1y@6x7!^AEK*hFXg=?%<|h9QN^2 k+^oneT7hT<{%8fh0W-*;kG3a*r2qf`07*qoM6N<$g0ie5xBvhE diff --git a/TMessagesProj/src/main/res/drawable-hdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-hdpi/broadcast3.png deleted file mode 100755 index 8cbb34bd54646843af76b8d5a98215a461ed3897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|m`aNA7Ln?0Vy`;}|s6c}4fjrNe z-Hp>DjApi|PA*N5;$bUp}>dXt&tW zvFxPakzkc%q0Tuk6(_nVO+NiJt1Tc^NA}CS=6S^dmh8H3=3LN-4V}e!<&xBG0jCL7 zy$gBs-tNtcyd(ed;lJG96OS&PHa9Hd|F2BDlOm6U11<_&20D$w)78&qol`;+08W}x A9RL6T diff --git a/TMessagesProj/src/main/res/drawable-hdpi/broadcast_w.png b/TMessagesProj/src/main/res/drawable-hdpi/broadcast_w.png deleted file mode 100755 index 9bf4aeee9468d3c478539c45b380ab50cb7476b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmV-J0lfZ+P)y(fY`VXU=hSeNS;9(5p08<*h!jzMN$MS z2~ml1LN>C@%Ix6Iw%+N!JNGclGIxY95+Q25^Gee!o@UIy_Wr|R9{9qM-*}c6T=El+ zV6g^602fSA=+DY=t6gy$P(dj{ogefn=mARz2H*@h0}yP20<55b5G_^#0Ee4iqT`xd zG@O;N_mtI_POhq%H18=IA;VAu5Q1xIz9FTol^YhCMq(s6&mPSb55+`SXo1xO}Ws<&}kSt)C1GC#kkoi=sDc>(M8>jHThHK qx{68XkCZhuy#?CTP!|28AEGZOQ<9VQo*9n-0000KVoOJdIg8S;Fe0(P&|%<%#|Wz+#+-n?<~+cIzOrHk+!*LE zp}GVgxMPXDhh2=Zl$ao?VaSdbPC3jPcnXXyopZ`yTtY7K#hDA|vLFLYS2)&|D<>DE z$7HZGt{G4shABZ|__!RBH%iW!kJ(_RH_K`;-tR9}(G%wxp03Io9)EsHh|k0wldT1B8LpN>3NZkcwMxuQ&=e8wj{Pj9Sqe z)xoNhz{tI^0Z1(r+tAQF?a_nR3u6{oGR!=8K{BrIX65Faf7Pd-K6&z^!L4&Mgx)@y zE<0C7+x>Of7G2XOja{kbOIUs1NvxY(bwbpYXTd4q(u^$`#U_kXv^@A~mah2clRhgX zCeHqvntT6lr-jbjwcI&|k0wldT1B8LpYEKu(kP61P2W|P997NnMu9p%! z7?k3Dz-ajbhVKhMss?zJ`u^Z#@kr3P(o|fs^N(Ur!7@|7i&AbDm!B>-_%@^O0fTJg z#^YBGPJFm><;N6@xz0W(V?5UsSa?-&a_;T&Sm+_?A+$JT;Rha-&WYg~QEXBZ81j89 zHl#%@NS(6cFz*V}#K~eGaz4)bkn(mZtI@U;E?1YMm*#pr?9iOKx}%h@Z%$KNTa(Q4 c)8A_uGMA`-`8QWd1L$l9Pgg&ebxsLQ0PNve;{X5v diff --git a/TMessagesProj/src/main/res/drawable-hdpi/devices.png b/TMessagesProj/src/main/res/drawable-hdpi/devices.png deleted file mode 100755 index d72e42b811d4cb6e9231fd6cbc5a3aea022fd89e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^Q9x|Z!2%>t%@9vuU|>w}ba4!+xb^ndUN2@xk)t1z z7sf8y8_VT*#L49Yql#t?!|nv-MN^k9*eb*=Xl*Sh@`Y1m%SYxnLK`M&V3Na}vQt8bRvYY7FM~+*3PdGU=l3qcask zyM#4&O={^g{e1Jnb(xBJ!F5&6=8_Y>Z@4f0%Z>3+mE6VbJ%48weR;9we8!8O^z%iB zn9pl2KdE|}hs|}f%k77MYtIE3n5gcPT|c+C;Dzt=-JdjNeqE5f%hzsK_Fspy|KFlh zFmdKI;Vst0NJX$ AAOHXW diff --git a/TMessagesProj/src/main/res/drawable-hdpi/doc_big.png b/TMessagesProj/src/main/res/drawable-hdpi/doc_big.png deleted file mode 100755 index 3973173e736f3f1ddb7ea47bbf4ea7b0b9efc97f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0cSP)J50L4}Wt6V@)gq%byas(S~M4MC=ik;vU3|OmcE|5crqJ`S23C6Pl7{|B#=M?2_%p}NuaaLpwm!Lm#2)J zN4COeXuXV}ow&j0K_XS-u_f^m*)hQp-}X3oY>)AFpl{Pv(`&UPuGzBGjB(4B zP!jhfKuIu35BULNR^pk;4lG9L4vAqsi8ZBp6nKO5fbWL!APJXvJPR(VLH9Vd(nimE-b1*{3ghrtD)w6&UJH=#KpW$!^7xidF5k% z+*Q?I*p^Q(wEFbf(BJ#$LjSW~NyTJIR?{!M%{Fa~HIpPuLEdz9qZzzLqx~$_R?{{f z!HC8PI2j=RBfcSxS*dq@&EODqG{$42nY^dSy4+f`CF}M?catX?wI{kF2F~pjjGXBO l*mGBHcf-xB29|6HrC-NFxfzRv)EfW*002ovPDHLkV1jq~o6i6M diff --git a/TMessagesProj/src/main/res/drawable-hdpi/emoji_tabs_premium.png b/TMessagesProj/src/main/res/drawable-hdpi/emoji_tabs_premium.png new file mode 100644 index 0000000000000000000000000000000000000000..8aa3f1c3d20ef6f486ed721854c677102924cb62 GIT binary patch literal 1239 zcmV;|1StE7P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91IiLdo1ONa40RR91IRF3v0Jo8fpa1{_K}keGRA>e5noCF)Q5473o>G!z zFN%mVq9SThX^B~zUf`xpL@mOig@{3mHWf)rS5ZWpXwfE;7H-lc=tWP$qD4Uw1W7>; z-B^-}Wxr$J#GSl%zB~7uneTxI{@j^!&OPV+@A5QHh`U=a0~pQqZSsS%6ObOXFY}S10#T z?Cg*Qi@(gv51}L70UZl6$%A|D3k<4*SXkJqbDAXtrhtbQM1ovo{*)+*+Wz`!b5cwh zhB+y$WIO`4fK2590WN_zpjW`z^E;!H_()RpOrop+Ug5e?9;iM2RHv+NlZKf#Mwqcr zx%PDG_?AT(7?%cuC&3UX1Q8ymJd$IbM6nsgV^3K?V+|dB;_Z_g3y7FXWrN&!B%iC6 z0=jExcH((QBe-V1Y4I?b`&5#GI(c}lCwb;&sttOv{^x8c=qS)pz5R|P#K1NB%FOrm-t1(-gSBHcRguMVF zed%N_b?jJJ8(=q@oJc}&F%i!hqsC{ba|!K4l0-*AHclx{B(0x#)D@(YpSYK&o}^`j zgylTx41`G>x|0xGO@eF?6kf6$$V<0S5}G8@w}r|Oy>sY~tP9Dw_rr9{5}IV_?<5~r zIc>~KSBb_hrZ=*5Q=$=Uz_002ovPDHLkV1kn9 B6vY4l literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/floating_camera.png b/TMessagesProj/src/main/res/drawable-hdpi/floating_camera.png deleted file mode 100755 index d03697dafe0a3631e78f292004351c9e95f5b7a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)40*lGsr@w0Nl?Zl(hVU4lrq;sr&_F2pRNkV%Fu*bZHQNg+tl4&P2%(VX0j zUuK8%5IFxu$oL-FlFXL6dDEm1ypxtU?u+mpK3RFCmc%t&Vy?{|7hAYgjjIZO{ZA}z zNH&h~m@{HUbR777Gnn?Uidkk9O)y( zun5Okh~60mIM6{@$)`(V50Tb5GlW>@<2gbE2KEtRoR3Gjc#@A-2(dKq6d}BP9AP24 z94}74X(KGYib^#=h(3oi`iu}xah-QG5Te5jAD=00glL&Pp4OflnnruJ_$)sd!;8Ui z(kCl>BqP?0ncyX#sSGZ)4EDFIq3R28A?!-4H)etT3zRjeRis9HX8-^I07*qoM6N<$ Ef`Ac}X8-^I diff --git a/TMessagesProj/src/main/res/drawable-hdpi/floating_message.png b/TMessagesProj/src/main/res/drawable-hdpi/floating_message.png deleted file mode 100755 index 149d47ab6ebc15cda8f750a014ee37005c5d4f92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX0wgC|rfC8xe@_?3kcwMxuWaN!V8Fxd7|Fta4!^8S#HbX%yQMK_3CyJw_a)Uyqx6MZE2$FlRqBc?q~d> jUAyG5)KnfV$q??m&fUwLuIaY}jb`w4^>bP0l+XkKc$qBg diff --git a/TMessagesProj/src/main/res/drawable-hdpi/folders_archive.png b/TMessagesProj/src/main/res/drawable-hdpi/folders_archive.png deleted file mode 100644 index 7c96dae5e063d1a61833729091afba56c4c6834d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmV+=0^0qFP)LV zozh^zCS2Q~18zWFkSYs>`~;-dX7M>97_QWgB~^)z5DMnFtVjfgh;4F=%&~GZX#=qn zt7i}mIM+4hsWtI*ZD7)0!E~SkuHk*^;Wj!4V6DeD{$=`{tN8q4f2O}We1{cz*>-#9}pu=tMiSQ3XV&)aVkO#Dtw5W5au%DB7>wGotwCVQn#5VH)Pt9Wes-u^1#WPe~2>@9#t z7Y^@2Z3HgjNldN@eDmPmHQ%Q1?RPC8iTi7U^(-)dRGdvxsPk*9AvG09$ceoJMq^Ks zCwZL?-GHR-ELPIMzyBqcHt?2>DcnM&A#LD1T-_OSI1TRM1~>!e{b$r>I1P6rYeg42 n0iA$OKqsIR&WTAr51uST zGk4G3B$Y~#(1Fl_(1Fl_(1Fl_(1Fq&h)VCQvoVh2`7CdRMKB9K!yD+2qG%jFJ%z%z z!$TN@H2H$D8|F@{C!nAXxCMFTJC1vOJVe7sh(e^B4`8iT&{xJ!VF13tYFG#BK}C+z zNsiPNH8fpQd@J;U$_Rt=Am=_I*muAyP#I;gC*jyE1IbTlCFq~9IV(3lZEzP`&rM-o4)ZDByrrj=onkFne}e`(GE`->^T)Z&(E!m4M7w zz#TZ{Ccw4?Zo_HgEAP)IP+8{gnbJ8~@0-l>onL)v(U*-)UQW5pCWLv9SsO>o1t$;O zYiy!+PB<4Bv=s1lT^AZd%va$LGj20l;<~YQO}@HYjo&+?MQJ?Cls$BlBzDl57Pth1 za1~}4C)IKkW*b{C`Z09zP(#M1>KcPb(8Jn$W1Odp=xRJ-ZG-2~51Xv@azla~0b7ns zBnyMYOdaKP}yG0H_HGW<_@ z`#H=7H$t>$Rz%HZnMw@#dOQf%;gD`;EVr^xSuC*$*a;V)8y09j@0#Gdz?axv_g-tw zfK-3e!xQ`>#;Tf0rgDMA^5@|>_zh)5Zg2Y!{leuIzPi&gP(&y8jUfMhsQy-&=4aW4 z7{7p*ytscXdl-fegbsubgbsubgbsubG_wPL0V~i{UKC*X!vFvP07*qoM6N<$f{)RC AlK=n! diff --git a/TMessagesProj/src/main/res/drawable-hdpi/folders_channel.png b/TMessagesProj/src/main/res/drawable-hdpi/folders_channel.png deleted file mode 100644 index e03d510292d352b295c929b72ab36e8e3c535d1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmV+v0_**WP)YQ<5!6ya5%CeMtt__k1?<*Wuuuyt3&Fz1 z2k-#|!OBX+#=>hMSXhW+u`DP$et{VXvq^R*GecJR1BWF4_2lgATxvBLqJStM3Wx%t zfG8jehywpsfhaWdIF6^`um)biNfbptp*i)`AL1im3$#Hx_IpYW9R%A3curYs^G9fI z&i)Xc0p}Xwj-|7J!RhrMpzAEP8eq~;Q#ZBQ9C2OWDI<9|Obcpl8^n5XveoObLt+K! z*DYJ;I8#N47G!Y@Cj9WWQ&fzksb!Fgxz86lxP%tvmSQHQiL;+Di6c7bO0a2j;75D=` WpoxypTt#9400005REQ@ZQSE*&+9|b;Ha&0;WNKRng0;@YM~#- zp%+U0G5<1W<0Hs4`eZW%kHNDq>5zG=jQew&4J+Wy*NAO8?KQ(<54_ug@LfWc7n{ws zD4XDzv6JK{9W@&84?ETZ-H{HEOeSBbnhLD^xwtQ4+JtR0Gp*Zl5|Iw@RcX#z@!NTZ zx&A#(+zH!eW?Hx9#PjiY8~QOy>^!)Jxi>oEbrUh0jYGZ2h^vGXu#HT=X2kAtoJQy7 z5HoNLPp|`nIo_tQ%DEnEp-zE%H3XWcMeZunIvPY%oi<@SNJBNT*k(>DcA_N z5O>Ua%}}Tc9vlVD)2iN!jeVuqremWh?oO{ElGg$XYFhIfr_ z*MjtiJ;0BfP!@<_|N0-nQ6p4u#g1gZ+kDqF`JEBwZ{%EvybbJoF_-4GoT#k|r~;~h lDxeCe0;+&2pbF%l0w0Ao9Nq1c_YeR8002ovPDHLkV1mRz6hHs~ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/folders_mute.png b/TMessagesProj/src/main/res/drawable-hdpi/folders_mute.png deleted file mode 100644 index f8c47a3664c65171a432d2bf66555fcf0056ade0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/gem_s.png b/TMessagesProj/src/main/res/drawable-hdpi/gem_s.png deleted file mode 100644 index cfbe5874a6e3ad818a4a70a395b81c562823010b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1303 zcmV+y1?c*TP)cRQ6H)^o#|zqR$!zQL_kCk2!xP?YjScqCpl+#oy1s? z*uK~`v+rwt`&*a2f&W?9^YA(6%yja{gE~*W4$gAxai$BR-j)3B*sqK+o(pS@q3wek zuDF`~NED@08!Ft@m7WTSqL9lLT-Ol{1~59|oldE#Z%rI$l^@<3e_DCf1w!k!PYazz zU({AsNtKlz6gf;NcLEM8V9;BoOlvs~Y;pkC2UD1y@nLLYk}obTpTWgrpJXo)vlG*a zYdZ={im&XbtCO~FD#ylh5f$r!JToAW1B_aBH0DP06adFJ1Es|RmW3in1(hr;$9AjL zhX(lIx0E3rril&oS>n(QM`5oJ~iFyBoDYXsS-d66t(pEQX=D7PXH*iFgWrUHoF*7x*eg2vRkb> z`je<{dHbuz!wq$%>+Qr`0#zq;&JoiXTviU@afNpIQWy**DO9vaRh1`XQtpodWe$<@ zld&_lMd~(JxLE(_xLXhzyFM~Dg)miwtZ-rvV!#kj0W;AIh)>qh=}j6DO3QLA1%>ir zh(w_iMTR7KtP#055t|DGz2gC>@#IC354GQ0DBWjaCi~tfFM`!Vp)oO7si+rKhEfY~ z;a(!mJOi2Or?9jF_#NACA_214^GGT=}tAu=UVr<~-Hu%Saqm*X71ppN@}UGrKv+<^0k zqFMcaE--d3HO(rK#iOHlyA?l`UX;pECGco$?LVff6c&X+Ay555;L*K)WjPc)9B*&& zWx_($8FiQXQRd8s@Iqm&JqTT@q|fa3f;pAV8OqH$${T5>X(jxmN{A5ug<|U=Ua5) zly~5du9d|oW{7cCd=&G=Pz>II+dVbwY#(O#bB(#n<7v(JuR1M)rLSt|fekzBCD7YK zPrruA-k*K(NaR(tw@{#-FaPR6+U#8OLPA+?@C|j!-f6(=1*QkPWAVsB!+(Jr_Rr11 zDo%qP^J?wE9zn9U#iCKnjoocR`+HrhbY95fo$vRe`NF;zg7u<6{ssc{4y<)Atq=eJ N002ovPDHLkV1gH1XnX(w diff --git a/TMessagesProj/src/main/res/drawable-hdpi/group_addmember.png b/TMessagesProj/src/main/res/drawable-hdpi/group_addmember.png deleted file mode 100644 index 3e8a48077d7cc791214125e2de74727acfcdc81f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+vHP)c}8X00iimwUZxIHK1zDdLV%I?6GJxO+p}~Y4(n} zur1jy)?^cyH3#O=&NJSY1$1P;lwDVmzs=`@{e!lYoy3TgQi@G{1_TW7*+{CFn4^VL z6*QGBJ#4L7k(sjgQRFRCLsO%i4zhQ41D7s6`iz(`qEC-5E{)8yMu}Z+84EQXbHfg$ z^!V0!BwY`zC1Vbml1=ZpGG>*K?3#$56i&#eI|+1|6ZG_3pl1o>Me~+z-7kOGe^Xyw Wsv7$~E=~jh0000g^(HMr~UfJk@eNml; zlNR*M`(WLwdk#buPH5}tI2;jSR?&h+4C0KURofyWoLBTsBL;I;(bEWf{nGQruBgTn zMPL0^bR?>>!!Z}!_uP_CI(}I8)-$tC+aLdk+a9~)rt7Ymbk&p_=1fIB#+4b1I*jY; zr)wd zBTL#+YFqTsq=QkN2{T&Cv`m|b!OZ9yq-#3<#)ucHnzud5m{Z5yD5Il}PL#2xjH diff --git a/TMessagesProj/src/main/res/drawable-hdpi/group_admin_new.png b/TMessagesProj/src/main/res/drawable-hdpi/group_admin_new.png deleted file mode 100755 index dbd6b12a706b6b2cfe5e06b54de944489f2f0aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmV;50d@X~P)a8wrYHqoop`!3Y5@MQv>K0lYL@TZ&JhF~xc*MGZDd z`W$Nm2azMW`3NRGYc!y$)AQHb~t0TU1oxF0IKZKYhKGf?i5*W z9f`8VOC5OS(!uhq(525D^W`kPpDP4PT6RE+d)Irq zl{4z$lxM#2rpg_gCVlHB&Lp!eGEItT@MHjdN5)tpNt_rFBE%Ra&9Dhn;CC)eperA! zU;-WaK!;6$#&~9o`%Fk0KqBlm3~x8xQZOXKI&aPwmo;pEeSDA%8)O(zT{;D%e|wb> zA^Hfl0g)hwg-w|c%Gg-sNVHaEm@L=+?Z9S@upTo{k>ETrr^Dz)Me(Q!J*c3XCREev oqE1v$i3*>}r$VXo7xJ(90di8$EM3;M3jhEB07*qoM6N<$g5v0=aR2}S diff --git a/TMessagesProj/src/main/res/drawable-hdpi/group_ban_new.png b/TMessagesProj/src/main/res/drawable-hdpi/group_ban_new.png deleted file mode 100755 index 9d77314856fcd72b5018530837dd4b70bdaa594c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmV-G0l)r~{Yn%rSw#%$9sVLAXL zte=kfpFJ2E(?t++#@0ElZ|2?^Oq{@{}}kDTWKals3EUFl1G0=@{PNc(e0 z1ib4(haBX|h7z;dQIc9U1bWb%Jc>#LSuFAJaGBvV-`Zz}i?{VN)B3~SSN#CVwq(Oz SfD0x700004Bd{F`Bwyvi z`ii^r`Gl|`XtSX}H3~Mk@0dCnx{=Y4p$;a|k)bXCeUr1@5Dt3)4mcGcyi$c+b0{uB zJ5y*XbxmLf%_V4J1_duK@5;b5N23xntWy4Gp2DgP89bPO=xl1V2mx5oq-F}mB&B30 ztaYK@$6+>Bgz!0jgiiQs(CX`eU8+IRS13}0X7}qCQc}*+8D^Hw?4Ny*b#iScfAeJv hfv34dZ1Jqvu5JRb4Fc&wg@ynC002ovPDHLkV1jN4ZifH> diff --git a/TMessagesProj/src/main/res/drawable-hdpi/group_log.png b/TMessagesProj/src/main/res/drawable-hdpi/group_log.png deleted file mode 100644 index 32eae119b376e0f9ba91eedd429dc27b4d4f6b03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmV-^0)hRBP)0(padn2D1vf@s30Op zz)}#=CI}W1G>uA($^B&DErz|h-I-zTwD1SR?#;}-_wAdRH#7Y6k`zXrqyVk1 zVcP~w0(*c}l{WW#i@omyZrS?|dkz6pz&DTGx4;wNO>=nuMCgp9InVsarSFn1`yy0$ zfF^*aKnv&qA6<3O*Mw;+u+Dm(DvIJxQ-tnW6h2Ful+?;x#w2|(A2T6CR!-LIkvS=* zoHHL?bFAfI+F;MGnTE)x()RigpiWI&F7>osx9qDL0X8K7xdrhlbYX-7tpVD=!33aX z-~wTuDg^jgZ@7P5=iIoVX#o zX`5=JLV<>CNAF5xff@x)=LA{=9s&~yFiXIT(9WSiF6<{QQn7Lg@n>$JQVR({QA$a4 z*cMXvU$-C54GQQ8a2pt|>Eq_jdEmw%fZSPoV?e*13AU4frfo=?B6NRHKwp4sDb7OV z+d9gFf6jw_RXuI{fR=08a;g02PSu{z={tM6tUTHWn3k5nU$Qw zw;woU@9oCkl7=O<`*>?D^;**As(;_j6}wrU1&#u{Ja_w4Ipgnv$9Be^FN!XN|LQH^ YHxsipo2ZLlTmS$707*qoM6N<$f)Su51poj5 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_copy.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_copy.png deleted file mode 100755 index d04909b69de455fcfeaa0f1795bbc92c14299eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/icon_5_background_sa.png b/TMessagesProj/src/main/res/drawable-hdpi/icon_5_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..eafaf8347eab07deb94695a733d16585b4cafab8 GIT binary patch literal 22483 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/icon_background_clip.png b/TMessagesProj/src/main/res/drawable-hdpi/icon_background_clip.png new file mode 100644 index 0000000000000000000000000000000000000000..bbb217620937e3d64497bc7fe778e625bff5f5a2 GIT binary patch literal 2559 zcmdT``8U*iADn-sgPY=e*A+%h}OdLQF{v1OiFe z+F)JzT)7VsA%5)IP*CO*nB;1038KC|vdBMRgS~A-92`Jed@TY3XNH3W_e=Ot;sXQ{ zcmM_o@EN?HdjR>*ZRG=j|LXlhQRxqQ{1|SF#kePcSMGO^-M!>q$KMgLwUN7Q4{yl; zEV7v}L}iBM3)g7OuduH&Ha|hMmp0i&Z~d{-K^YF}LbA?S6w^Blt0V5sl*_iIoDu2W zCQK~g{~EtPmOQb#&E9U0E*mSR$G`nimb*Prn#c{|slC)Umi4{}sn=cS?k+lTOu^(Z zC`!Z|n}s$JC5H+B|H(FZ9xex!Fua=y>;js=GEDXT-| zWJrD5c7%AdG7&^mTi2-M4j^)F`=uYKfzHDxM|un(uGCJh3ib$Q`F#JpXEK$V&H6jp z4Una*Ra?5iW))_L;`&(&?9XqgSvKH7#8Hk@%UyzW3^KoxqJ}($#NWg6pc$vd!1dFv z3=C_pwb|lsv5&dkI3XjQi@s zo3eHe7mNvuehas0l0a{`mDEG)B8u@2hz$~_o$|#|x2Kq(N+HUwb^x6Du|;29gsUY( zm1mlYJ6i<8Um#}&;HvJ?Zr+!_l0%n?J7@X*Lx19NYCdME&=0#>^u;hp)97_Q`g!rL zIonzx+&2zNkH4^$(|aPsP+U@q>;3*UUSS<2<~-|ba4_$25HSXxD*qin?(<1ggKhfF z4qSOoax~HB=7kn+gM)fa5SMinVG*CICS!g$F5fTd2)?W{B??{`S`z<<1D9xL(t1&% zbh^>Pl3O0BjgXq1axu6@n0m(&tDE}Fnn}i%Sh3L00kbCsuVv47C8k6jR_WEQZM zQ$8R^qH~?)tg>gQe2k(-rcPBFnvCjRDdPHO4Lh&>Gz!I$NT9aU<`8GRBW7mz=Uvp!o}a z5n1rgcz~^AA*O3>E!;g<915SF^JzF%4>aorm7SEZW6*WS?&4-_(c>3IS!fRh8aDt8 z#D4h})?iYh{X=1Oti2_^X!(lNrACsaU+-#g(3(!f3u z4WU(UDO_jZ4+V^vfKJD-Q+n#ad)m zfL9Dz9oFaW!#qth{1OJ^%h=Gzp#u>|`o9s@qyqHH(mEV}kB(cWw?1o4-iA^_p0vMeZSPWeCLFG%*jvT%!fqu(^TK z*dG>KyUEFqjntn~H|q2Kv!_N+HSc4jl!ehp6-KH*bZD7x0i6FWEHK@>I*r<OyizAV%bu9O~Zq2~%Oorzre5I-Awj3^$*bZ{CCMK(6IE{9Z^LVM`^-Bo7UD zs0~*{mi|ps+E^%gYE0R19`KjkIFD4wP$C=tnTlP25B9ZyqwKf?K>{N8IWe?TEs+qA8SBO)vi?PJ#-$P91N^H zczJ-$!0c_7PG1#j%3{%pgG8|dyD}~Vr4wZb=b3c)gr)oYh*3g$9n3g-9=_~iQS=$J zw2kQ$onblIyE1%Ei%%+fF@GjDMmIaNoS917V;=yC(xt%o)PbCY~_vquMS9B97@slY@ocUUc+B3;Vqmmd-p?d`DBM$CUC zn0+Wc{@p1sqiw8}cZ%I16Csqoc_LU)=c1y;wj?4DdgDw| z5gMXEyH$}a%=chmr|lKNWbZ!)+i&naFp6sRtu&m@^!x;d?~%5Vay#3JC|oD4{g1WX ZIV4e}`Sqhw?9%?{%NFN|rCJ7F{|9ztcDeun literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/icon_background_clip_round.png b/TMessagesProj/src/main/res/drawable-hdpi/icon_background_clip_round.png new file mode 100644 index 0000000000000000000000000000000000000000..bd3bcdc40771e406918be9acd93e61a2b5ff7d03 GIT binary patch literal 2652 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 N002ovPDHLkV1kK_H~0Vm diff --git a/TMessagesProj/src/main/res/drawable-hdpi/list_bot.png b/TMessagesProj/src/main/res/drawable-hdpi/list_bot.png deleted file mode 100755 index 4d41b59b90151bd7b9c79d8efce5c55f6e05113a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmV+)0pR|LP)P000sQ1ONa41Sh>K0002yNklC`STK&m zFf*mM{PLaR-FHJMjHYYPmRNdmqZ#T)$IR}`bm~A?3>HT2j4Z&XZWU;mV`HG5CT#;7 z%(co%5A+LZAN0z}6dxLewBa4oaC;gG2GfnI2J#z&dPX|5a3<-Fio|Z Z!DiKat2Y@R?164(@O1TaS?83{1OWHnTXO&a diff --git a/TMessagesProj/src/main/res/drawable-hdpi/list_group.png b/TMessagesProj/src/main/res/drawable-hdpi/list_group.png deleted file mode 100755 index c59dd7a27258d6c135946d7770f46b5575cb8edf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmV-60m=S}P)6$6n({jDMzW4g?In(*Q&kN@q$$&693PdyuobU}mm)q&`B29+$IdIbuJ1hn1aZDa0 zi8H={HdlWA)Yft6xZN+&NyGHmmq;4l^W#_j;aZZ|<r4tW{KOp(D3H0dskoKh&0DIru;+&=n1%u?=CzQ#kfTN4POWS2ihh0Q;@B> zqw|#$xMzyiEno)GmfRxmzzgGoYAo2u*3)2|PnMoY+ddlopYVK^Ge)uvJ~TtpZZ{{~ zl{5c_VaoE5{!G(I@`2@Rq?p+`Rn3QkPLoey?M!1Z2423fVi+lQR{k0w9akge!N_Mq zC(v8)FZd>~`qGU|hHf7AIkjehpKNhd4Kdn@9T=E{Ps||EYHTjyr^8@$9FHeutW|-1 z(W{*%#iwHJX-$fmWg? zgf2&aH>v2wv>7WNk!8CdjVq=V&Tq_pj(i0_JY7)wCxlx-naUp}a4y|MV6=FjM?OyV zbZLFt#}hr5TzxWaR|sgIY(2=jn_^O4eU6o5y7 zqU)OZ4jZZ8=~ue-ZO>2NEqn%0U5-ZQ(rL^TP21Lh+(dd@8Tr2H8nyQPXygkAl*NRFvQRcCHbhpwNeM~5OFr^VuHXMUPd(@D%)R%FdyK_>>UZAfdEV#ao%hap z&zs9trMd(E!4Bl}`E}3_(}r|8ETAD;2tz?$^IS3{i=y!ixL#OB{P7cW>pxu-4VS~) z_&V|*1N#JaW2OtEK@IGIUtsbTWg|?6OXiHmJB+QFEQ-P{a4u?O!()_r))0LJ9JI-3 ze8;%bVk$CHZ~;7t8rX0Kr8%hq{ z;S=_gE7Tg9eIudrk59icN5c}$5kA|Jlm3ntbIsy`%(!IU_whql>Fp#`rqC3c$i|>Av zpr1S4WsZb&gCHz=JV+VU^1 zvOXocs3m^!@vnyP2Du+!?VuKrlteLICv+fs(S@zW;?e7&&j+CEK-#W=k6bO)RT_K00000NkvXXu0mjf7yo-y diff --git a/TMessagesProj/src/main/res/drawable-hdpi/lock_open.png b/TMessagesProj/src/main/res/drawable-hdpi/lock_open.png deleted file mode 100644 index 6dcfc864b9e0b10a851ac4d3c3675f36b04a7658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmV-J0lfZ+P)K&xz0003BNkl1+lbDD+vf@i&R#61RFIc&>M(g6Fb3J3WBlN z1ccARu*5~8yNQC3f4cX09}F|Y1VN_Qa^*=^$E`!NLDpDu<8vZw*{C@Wed0|=F9tWV zV9ow;Xwj4zWsl(5LRxCIPpuEs3hqDnv{(qv64hOBofbO>JBjMN9$wO77hpS4E$E{2 zk1$1bbq8OriWX?9s4K=Z(`t_FC#j0aPZL=gzKu(1vNys00&5F}+T*}l@<9*;^6o~* z%5iUVbgUHjN~2?qxYroR0aWGWRL6BSdIKNFn?`ikjeV-!cOk3BXD`U@|ja@m^)sFYfl7Rp z?E8XmdD?Y&0i7D?dSbm-@OHpUBUnE{`z3!4t}QzsSZ^+pmwgGgD!^HJLFNgo7*!4) z8kS3ri16)gRMRE7iT|*)Bws_vV|hJux-ywB6*v2BJ*zK9M1)~gLt5#(gW{Du|0nQy z`tH)l#b8zloqSk^3IaH)6~IxA0G6cpMrOl`wzd@;GB*vJ@qMwW5ewusP t9_=^&Zf1UTN3Ko0dNpzFNVn?V{Q(~r;6H>JvswTE002ovPDHLkV1nV|Y!WO6IIMpz4zFa`sOMB+U@tC70~!G2f=l`sxZ$bF8F zXA~`m4tN1!HpSorI2_i2@irKMC>v%%^~=NZBgaUng+cJOy9igSpgic<*VLyraxr!S zVI7Qsv$q82pdPAWB{acx_zcdp!;N5f`V+^!Z~#`o64(JfFbdAz5NxpP$cPc>RO(bY zyGo$zB-EIzfqn?Heg(%r`bM8(CcB&xe>tkK9Y(I8;>N zLHg)EIUe+V99bU0nLs3WHd0u?3HqEiJv$>yBhsgEH^dLbdfZtsQ+?3yuk1BsKU)Zn zNg3FEy!YKc-%mm9+pZD*xK}>H8z$+3S5lrL>Yq0~`n=OgS_<~j=cISChmhJQ;4jEt zLbXTQjD&>EFafejXqlOfA5o_{sE12_ge|eEk+=tbfb17E$0`&gk>3PAK_&w=mTUefP+_HicTiEl~bwK1HNA`M-(V^2yJsrC=-Q)XM%qN6sV! z=uQQCTry(8FFh`!!6Xjlis;Orj3Zn)zH@cO;n z(a#6Mx3(!y9%~{Kueob6%b#da13pq{^<*>MVoZi}o l`47@Fjg_pl1OM9&`~&;3l!cNdG3>;(UU6oQSfPQgA+ z6w$&$FilXwUJ!z!MzQdffG-q7gjgBSLhymEzi)ERS=43m!^45?hx#jf|wcR(loYkbDd3)>LP3Hd^38 z2=%82KV3pellg(Y(lvxLZg*a5`O;nC4oAt}1w9Dfh~%-fAR7=lO@>C680KUzf-oK< z#bTP{v#OMIk)IQi8^ITma>-Z#-sM=ltr*R8Oy}Avjup{NvJ`wyEDkTmi^eE8WJPr< zB$Lp&nhaw(8$!}3m#{!x_j#xIyoyuQ%;QCz!kveL_^n9CM!94`2#5kp6 zG#Cb7!7(6d{FpWBOz||hDh^t^r=>uEtlT>o=Y`^l}37pUao{R zkS|&3Wb7p7eoiO!T5TkkAV6-!@}c^KlfS|QcZn5iXxZEA`LG<;Z)Y>nG^6!-x^+%YKpt9;aU&kAGKJhbQ5AW2;^-`JLp(o!6G8iT2SuAe8SodgnYaEkBfd zIO(f5T$uRDfH)fFO4~Hh2Shm32!8R00-coy;X$5b8g%RN-4 zzU*hnW^49{qx)2*ah79sk1X!}va~wC>~K%4YRjLTIeKihKHjfxn5XR6ody_MS;_6`TeKfwlyf5sX%!Rz2;_zqGQ`Qd9*R z#N~LFBcG)9xra_No!#etWbzs+y3fVd@L1htwZ(U%$Bb|by_ZYy%lt&K&_#^HKwH8A zFaWY|h?~UjmA-tCO9_kXgIJf;MH{9TPXzm;B`$gFuWJTa0`v!0|CC*(+(7U9>qEsB xWDvcIMuWlH+V5h$I~rraRUmi2c61S%{RW$e@VqctFe?B6002ovPDHLkV1kmO1{(kX diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_bookmarks_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_bookmarks_ny.png deleted file mode 100644 index d8c73f31fa5ae431ed888ad60426cbcd974f930c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 679 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_calls.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_calls.png deleted file mode 100644 index d057db85dea45a72616dc48b48b0f0001ae24b41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmVLV>5ky9B3GV<6RX?cr&)lp!LAsmjhJi@U0C{Swvry?zF5<8;6QaQ9n zS`JE_hyv9Ha3<2SULGA$V53nqM_S7D;Jca#3p~WAb&;NSiM9yWC9+WrjS_>}C0?nD zVkq;*A3at@u{4|TMJ9@;Qa8rziqfzL<1R;OnC~&hZHv-SCx>1uqcrT5cxic*hU*ef zEQ@K>YjRwRRwwPVK4xZtyAn^Wh)JyWz_7_i+)@@ZQQ@A%TMhA>I`1UL4a&(GFe0%f zW@e$R#5YGGB5d$p;ymLog00000NkvXXu0mjfVFu(< diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_calls_14.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_calls_14.png deleted file mode 100644 index 981f012229c27ff3cab2feb070b8238ff939a2b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_camera_av.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_camera_av.png deleted file mode 100644 index be8ec0c659690287ce1818bcfaeda8666e811eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmV+=0^0qFP)iY4e!!y%C+)#)ao>9_Rkv_a4qU_q`hgmv-^ZLj@%zd!d(<6g)@< zn{=8@o)^)n&zMmoUV#l+IWI!b$@u|Z8Zl~2pU%@zEoS{bk;SI#G1U#5Cp2ZVTH>%q zpF+X0ii(P#(lxhD`xPpV!#6%^jEWwERrjQ2Wc27hwItnoWMrfb_zE6HC10?vt?q`k zS;yyScpI-1O~4y$MS~^eYRcR7n=qkYd(HJ6O3~mRreo4(Q?{#J+%cs&rkTdxIdD?e zLeQbZ@M%pd5l(~Uu-k*WbQ!b?mNg{74S}V&9tP#6qm_ z3;3?7UfdP?cpk$&!-1>yXZH>BG29%Ab!Qg@7O@qp-8L4Jv|>2yY{NgJ^BxTU&)luJ zuS?3H74RX^+y#M@LhMu&5}t}62m-BU>{ie0t{JU~&uq2)cRlq)pKCSOYvRhtCi>oG zQH};TFqa57kBw;X9ZGK24ZEd`x6yE~3ijn?tN+!rJS*=26}RL2j60IVj*Qn%{Eob$ na`jGfmX{Uf^p^dz(-AK{$mZn^|9r9W(xS5w4*%f7ML&VC3p|mKME_q0bmb6AT zkqu+nye}`ar-h>VxbV=P=lR>7|8l|k-JRe0egEfw&hMP_i$wlIF-KID%oKg5Dp7O7 z;wnK@Zh|&f6jX-AO;HD075&x~X$5trg#X=(8hRB_8)V^2sZ$?rGGZ zUcH-|wCK>)$L6a`76-vH)y7R)oK|9qnI;*Pc=HT5&I}8!QSG|!IC5_)t^_nHPCsw* z?eqq$N#44FMq@*#t-vGHC9B_~YEYMHAKoV`W2hJut^%=SWp{EV%Cb&j%HcxmWTjMh z_W(EoRkq3H`+%~o?ulDJ{lbsH$ofOoM5#Hv>6c+7l~Nqne&NP#~9~5 zvnq7#ezvIK#udYJG9gTak=2Rv1y zRH+(IL4z>^;{uAzL>E&U=S7p!DYCaX5YPpSoz<*Ur)Fmr2Tb1mc$=)eiif5J=5DAw zd4>k=P1b^IsWS^+*d{OSE0SxgcCbEm^I&{tb-H4YW#*bH$FKx1vrSN7k<}_)j(1|J zgTJ=I%|1cz^-jA7?rCycle?Nd@iIOke#tE>|LlII`6^t{rnle0_|;=kl@;P1Kj zo%8>nGxxrkcYRe=3-%wbK&BF(DVxpKp|cjO1e0JqlgUis|Gm*nBj^CV;3p_#x~{nL z8dL9*B2C~4D8sU1&jl;9}F&oO>qR3=kmoflU_?4erOH??O@gv@z=rXP(qP_c#eHRr~&qi z-&r)dLP6?v0-5U8gvt^;tSo1(p@|g?P^;An;t%=K)&7KWgPYIbp9W%SP5Tg5Jz3r} zIM|$hrAK+Z%+BSf`3wbSsu!~z8f=yU3-C_{$ zJ_}ZZ*kLO8ywd`6o%=3=Q(zld?DLr~16#p4&qq)~0Xxh3ya2zbJT(xkeyc^j|d&u}3_yF{> mW)Qq&6-Mw2wy*-_tiT`JNZ@$E7KI=H0000LAR)1|)kH2buyY#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz07U%-rDgB04C99qG^z!dK3;usRa z`F6&B?_@`TeUUI)CE^ZKQ?n~iVhJ%=YV)skoS{(K+$)&8LP1R4yo2EN3D$5$S+BW^j zNqW@(x?sW`zJqCN*nU)`F~u-l9m zqq0+p&v;*J)9jm^Wt?7i`74u)Tqaour9D5}^tk3pf%UaZ#*=<{6s>%Br>D$sS;^3{S diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_clear_recent.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_clear_recent.png deleted file mode 100644 index 9bde5cc6d03b3157bcfdbe94d7cce586e791f394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmV-|1AY97P)DnY7z|j5A5pZhFoPE_1uH$?n}Hh1?5IX6BvW z`_A0#&g^aqg@!d&ps@nc3KXMS&Pu6NT1Loj*a_>Q9p=Lbe1u`RCyK@5H_DkeCe;PE zU>vg8A4CJtk#}~PSB~U!Nq!oRL9;i|SL#ndt2GJ>L94n27K7P1l}m7(l^io?%_S3S zhZkTrM&$-v2u*2P`m};}iFNPh-o={SZIEe#)81ofPD<>oD{XS}qtQKRn`B@rZK99BMPTPx zZ$c1opg#p>-2q933t^uV>&NT(Nm$zQ??>6<)YlVH^>J8UZLmF|lxdUO=ER>UpM?VJ z;M2ja16-DCaw{fd3NJa$ORiqmg1i$X9CArlhLWePoK5asD5#D;J@RCF+$Btpm~NPG zH)pv(Ws^JP`>78mGK3u)!tR9E-d2JeqO4}n^RY>UnxAp5N~CuV`VPl}ZqidQ*H`ef&L70DllUm@v(V=G^@aZ$^o9QcblGR` zyOqHrV}k484rukVm~=Dy#UIViRTxkY^#h<6(~Y42mCOUJq#oq6|GyFjZCGOk{@WG! Y2hGjv!@3V|KL7v#07*qoM6N<$g2;xg6aWAK diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_clearcache.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_clearcache.png deleted file mode 100644 index 2b66024889a4f79aca54f5817c72995c8e709e18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 877 zcmV-z1CsoSP)_tQk^=KNQIddNI?`)9lR7B1Q9!SjqX8o3c}cmx@thr$X1!Apk<6lW%9P26>7c6PoU=J9c7_t~9im!Q7C%kX=6-p}Xz`~LZTrx5;q z8}Xk&_c-R9%gH+Dm_0+^iPhJkxEf3CY8+bqt-`8jy4!auW_|3BWM`)rY&7R#XV$B9 zDk563cVKUCv?5|^wfBk{-x*T^We?&DXKYqTHJowMK@X^EgSNS)fI;_1y=1@pRgIuv zGiG&CWFK3y5my9y>V9&{dwSXKSL3T#ubqr-*?~IYX`FLfQ{I{=sCvZRIN^v3%aum- zVk*YN8rMX;AH9fpJv&efj^m~^l}}jkiGzxET;Ey@ol|k#%sT3FTv6NSS%Eqd)9Vh@ zW!qD9&*+@M!~&)@qrB}si83pS~rIp*l(8?6NQhu!!wEU z1McyxF_cwN9|oP#N}(4qW)tX=G!SmVdGpv}QyyqrJ$1j4Y8kY?x;AcA&f|Vp9W{j{ z07cuDLARl)N7Bve!|$jDYD#G6q^fUNF@Z{ssgoC4RmNYgWk454yo&a4_xsLFn8d70 z8PIW)DYS;x@@|o>w46BBNKSC@L@NXCUre)N73f8bs9|9R=!WFeg(MFa@+j@3nc7Gr zJeW}P8tLiQ^GqlW?erv@Y0w6tbDF5AW>tO`bjGDrX%k!1_HiRir_Er}L|&y!Yii8a z^jR-?()XsOoEN%~Knn@9v?Qte&~93H^?XxbJ*}yxP_P}N7!}x#ODVpS7upX`1?OE! zx>E}?x(d4ZEzQzvS%E69pmf5`{?_!o+kJ@-mHccTNA2@b8nRaA?VEA$JQWeWcw*@N z^mRm>ijjO%-;btk@urgRbyv7WZ*$mV_;z40%bfbI+biB8o$Ru#qKva1&kEE^t{sj) zhl~%M_$=;R>v+D;0rw^2?{d4~v`;ftuIT>%@qg4miZzGa%-l-s00000NkvXXu0mjf DgDbQd diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_contacts.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_contacts.png deleted file mode 100644 index 9701640c9458baf266a15af1e0b258cedfd677e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 704 zcmV;x0zdtUP);b~>3&ZU0%)I%`n|W_$l_^uE|6M>-X$DRM zMgG+|FaWHNvXe>?Mi&D^Wk_SdXW)nT+bD3fk#MttyB@$Wa2V(W+JSYz1%oZ=V58v9 zc#~eS?XA>rGw{~>y#yB28*U!(+9tdMJ7Ke^VI&nsN| zzWRWLY46swo-3(C(h*5pB(1h6E?VI9OS%zO)7CO+h?9P`hh*>$@wu$8_*4$^4@|@$E&#^T7h2A*x4AlFRF9_ zPtBhDzp)}M+-~5L8M;veuu|E`-|O#Oh#~YU*(zzSovq$fE37Q{_`Gc`o6^Fqvf3rp z$2Ej=dSvzTP^S=Fo7FDLCTqv_Tcvkh@Yx=M8w%Y?CQ>ILjlJpBhUY2vj>BJ?EqCP*X^jgk+kD1ruBq@$B&XlZ#vM~}b%KHu7`eLZ`G3erFP&$qs{ z{%fu8e0!h$?U`EbCH{vyP%ryVjYeY_@$pc)o_f80t4v=dM$O^q#=!=>M9te(@?s4I z7Q=4X2R(jZvN9I-!%!YnzK80o&*HpNiJe0<2+cfhsqEhzj3wV;8T6rc~k7CJh_ zdl~n^(@?j}Y`7Y>Lt!tATi-O@C%d);8qQ!$aN)?rHv}FsQ9noJ4auoF0l)egmY62q zIU+}K&V|~sX?%m9P2@*(gP9+P+Wu~M3|@rVp}*j3P&+yas@{C4-F=Um4;eF{rZ(a% z)D9j)H!l_u90s32;j=hUV4xXL5XyB|(W@^Mv<_YJnl%~kY~5p};F~=y6{La{_10Hw z(t6^>wYhqaoc(W_zHhW1+qo-l6?!!M7w~<15)0rupV9>fH{hs5@E@M2U+BxwIF)IK z^Akk^jxg$hoB{rJco_Z)*JK3Fp?J_qZ_hHP;0&V=R6j#!LZAteI{d~Ij7u}3rf!wf z+|ARN58Yj-{nY$^R3E2N|GLHPo~!YT(m|}FN6-O(B(ky}dZrnEGNWMhac_IM`uq_b zx5GMoJleUztomN~7CN>Hfo2ixf~EJS;z75luowX}`=OxzddMe%bF!iV%ahS+Gjeqj z^c&_zy9@jU#nWl~b$`}uV=RTNwS4HJ{O#WND# zwInxck*^kKB_n7jy4)2O^*d)brDA$pt%^$sb>MqkVDi8_TG+l{ybixOzqN0-C>DqL zb=_dHJ$7(uu{TsaPc6;&^Xq8F*;c))*_+8O%Sw-E7Qmx0@n*~XG87K_9Ok+DlxBC7 z+3cTr=Zmxmx`U{PF@6}P3LOXXb`KkWTxs}EE^q1*f#{bkksfIh%G z@cqcjew+`kSrpp|M?)P=`ujoXVE#HB33o7G5P560b74#m>Z5*w^>5DnC&h-tzoBpr zX3kf9da(9F5B)kl9{UOQ@6g{@QCoaESJg*QU;o4KOKaK)wn-VFZ=M0MDe$|X@xwzu z3HJAl(=$bI;NRi&U3r>>5Ai@~-{vWHXF}j6#Ad*aP&f2Punp>OUd=Z{|BmJ|qlI-6 zSA9YKs+}$fr@}v>piA^z$5~=EZlZdjE<@C3stdO^Nty%iDLY^fW9~ay>uODf@}cS& zRDVv@{Dh9gg-|!MLC>;H@RfwH#YFm$XU{^WQQd_tQp>{>83XNErJ}-h_&Hn#b03=W zhq!dod#K)+^3D~b6dC|m!HX~r-PE_>kMMXHHMg4`Glue2C;fb_xRMeXMfGdc&HOdI z534{r>6O=3Qa%&PJ)$zI90!f`#yS_ygnAA zvt9%xgb+C}2_lFvL~s-p)S#EmD#Ad?Aj%Ac>%INHefBO`6BJu-5PcY|6QOnmg8mA6 zz!XRd>>it4NJjD4;AN|a(He3N6o;*#vZWF8kbzlfL$`*NX@sN4{sr!X4woDf7uKLl zCl@n&f;kr_nO94o0ca{TC4G=;(PpY52{_Xy7Z#yoA(=)ixCY#O`nK`;t7=N`814Zo zyapp-C1-e*%zJizX=0JCBM+lQB>6CYg+;Tqkjsk33gHsSS>ieL8|G(^ZD%WL^nw{M z0wm+$m9YwiC+OdxH?xvW7|kSF0{l_sr1J4=M7LZJTZ2jN-nDq&f^jemR$AOf>v21QIEufse9V{-&{mSH ziiJ{};u$u134#rDCjw<02dUGJza=%fgtHW1^?~}443$U^+z>hqE%O89Wx4rXIk=BMc|D(heB6;Z@!ftTV3{ca)^sX;| ekjr+;4EzPH=R%fZcp$C-0000a?|QkImLm6sGz_y@d&LNvF;4)-S6jIy$tnPfvk7B)1u zCd!6|7-Hn!J6>imFCPoPxpU{f%-s30<2jpio^$&4obx>Ad7cpd%U=*JlDcH%svH?z zl3L2cw)iNHe6*z$)+_@$C8jVsK}K^iE{PxZO!}xI*pE4FW!N4u`-L+Sh!YX zibucD|1Mc9IbaLauI{NtSf^{AXf!Wqq`9*rymU16(4s6Jh0Im zi=FftpDc@ov(Nx;o0ZpW^Ao9fxcwNkrX(nynh^(g5pTw93n2uD&~HH;+y(R$;SS?l zJlsAESzG3^weeihk9&XU3NzIdqy_HVps_Si%&r1wsb_Ag3n2t`+6_lx{0+RfHE-!F z2{n`9PJkP~-^cOjH;l>?%R>mkI-ij-H9OI<$Q_e8GEhL3rpfDEW3SChKSGF(~lx>@g7_u_IcOGBO8+X}< z(R_FLvOU^Vv`e^Z7`O7R!*kFUtM~V_;UEmff*`xoRF XYBMd^g(8z&00000NkvXXu0mjfqO&5q diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_data.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_data.png deleted file mode 100644 index e0a122680e7fb47f967fe713d04ca655cd6fa248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmV+-0^R+IP)WusqS-T{+XLO^PCCcfBf|jJhWg#SyfY0RoR9GL-#>V*!Dv# z8n#VzgX*{JGFg0X&mlOp=R8p_E$izOo1suLD8-oaBL(WHmL?GW?R}c zm~MT~s(_lwyq#TuH9fb~88CB8>9Gbb3}?god;v=-J%vluC2*=Q3-=PdxuZvLAqdvN zY8*D|3Lo`$jO$gwmC+b(3)h}TGErOzf+w!AbvH4niJj=aGjJgYcF;7KmKVWX*SI;b zn3gwDi&c6Ku3rtCX}OI3j1$kqg&^2RIW1OEYKwc6k$sDAX|ah{84I3)uRcV_chtMV zJ(d^sZhrQG7d~fHar5yq9?*zivK-tF8U{MH zfVQx>1%x0NbA?LUpxVHG8Pr%i`&{oBmu;Vkxu1gP9l_e0dsgd-&dYB-S&cC=r?bYG zOdfHP+{7bAh2L@oMMp{YB)4t1Dt)E(sHi!x<+W8M2g%O4w9>^55{xTpWITCF#_w~v khmr@`nff0+$o|#%30t)p7u3e-1ONa407*qoM6N<$f&x+U2><{9 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_date.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_date.png deleted file mode 100644 index 23874f558fb1e13fa9e698887f72b2e259d28c7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk;P)TEG$L1wnAam~SXDw4n{I9$+m#XKsauMU0_%_@LA*Ff6 zbhU0@ykyAj#J!cMnsia1n>YSsnf{+w;C~dj1K24sYsKgY_5c6?07*qoM6N<$f`>k_ ADgXcg diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_expand.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_expand.png deleted file mode 100644 index bae2c6e82a6f9dbb7fadc8b62d868d7523ae9f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^>LAR)1|)kH2buyYmUKs7M+SzC{oH>NSs54@6FglU zLn1iePVx0(b`)q;-+yc=_eX}jm|5~lgPn0o@{Ou{r`x1EFn?)0rhN3fbdqV}^D2+L{B3h% zd^#pLs(oO};L)&p;AMVtzQe5J@J}MC=`DEaN=UDO42zc!};eV>RcrFLlCU*dwVv7pPppbf8Mr$_RdyJ$iY-YxA+p{|0!%X- z1ctMcfZ2AVSq6Ln?g5XJ2<~jnEAF4ci7Snn%(adhYmQYJ1i7z!3v>cKzz@F&z*e9- zqG7+a_VYBv@iPB@R(47nPT2@iaGXb$Bgp3t_7fR6o02v}A=KLf;y?!b6!9@F-g!F3 zu1tQeI8LOvU0%=|NqZ#KN}7?uDs1QNF>ZjJUNxqM@+5M6adnbDoAbFf$}BA=$`)G= zSv}AB34fT0000-i5Qe)I6?_CSLIfX>G3xkW#s@4g(fEj&jR?`Okd@KE z(zwx`abqO7FcA`Cj1P<<1QwEDSU^lv;=&*S86bqHh=u_~9OOAO2-ALl_o-vu+xMR7 z>2~2_D*31CocgOy-SfJ)r&5`a_GX}36jrO%uBHD`a31_ntycdk;&sx;7*`R0AD9L9 zFvcNtMw*Hv=pGnfgXxa>3--={UD71`-T9LyIj@1x3my!30DUjG0!T)|OXOUmhDlLz z8*nZ$LP8(GS1%N;!grDUR|=Vit-)1@={vD611TBAIg=b0j8s(Iah#g9ufT`E2GKwo zI3<7J^fO+>9iej%um|hHel-y1Q{0YVXBAIK@>#bC9%mL4WH^F9b6r|(~&Tqjg z@B-)swv_eswC4kp<@qsV8^$xnLNAPtgaL0R*b?F{1$`QQ7Z__P^}v(C-$3%dA1WWL zB{b1K8dF$?qmX6tG!R({gQvX`w@#j9Z$s7p z`UiF0g{DnJ5BVk;qpUb18!x4GSJ^)L#u3{oZZh$ATaH*973-AU930~*&KL0|@q-~p zW{E;yneyYsd~phiik;Yf6nh7Hs0BO@M{)`D16>hMf``bl1g#5rN&z%W)~`2G4d`l9 z9iM`Kg+#A`c4RaJ>F(0$d%K+^E=KojUHr`1lFG3i_$RX`RA1Z*B0909G3{I#Q>Qb( zBI=t1ZUnc0y7=O3Q_JxLr}bQelKsmQ>V<8E_h4@c3@xX`7xxzJ_ka~MOkOQtlaO~C zosWQ6lb?m(T!h|*g+lTXpgZgsgkDGbKG;8^PX&7cya6x>hCo?im&5N0F}{vQ7nRR* z>#lcdQs7p>Pa$Ry9iJF`edw3!PA0+$=Q+oJy^s%KXCPfbKV3))o%mM-uGBl8OZzG3 z)4Nrtu~6{c1`Y=P2zquI@iCnCeiU&z(Ef@-dpcMROpak_BWHxZFN}azfpaqi8uV#A zD-5%yJz6dhUJ=X53GC0n$KZ1?3{1{qJY1BG{_DX$BL=+<{R#L8Hh-vRjsV4p%4u_Y>aD|ivKoD8m(PqRM&MuFv1 zTkq!a3xT_VM5j?-9~}#MCV{oU#9#iI{QjQHIEd6i(2pI-Uhb&)ZQtl>?=N{SDxZrk z{Xi%!j$oZGTRMO1yS#0iKA->K$Rtb^=Y#CklnL&j(Q$Epx_z<^YHEbCwEC5HI3)6u z&{}Tx-1e|zhtRgXtp&HhBIl-%U#jU6SBki-5WKBo>_+boo4AD`$3^k05m$*i^v>2t zXGO>QYV>!Y8(Y7Ec7r3pUR(e5ej{~Vd~wSddl9|5)O&#L!ah~Gn8rp>CV%4C0aSE9 z*c$c>X6wQ@`d;h<_X8CneLJYn5;`v*s5o7MF9QV#H-VI##5tP+&!k9sALDGIZ(+Va z*H%t_?rRd(HC0U#{R*=}r8Uj^x#r&x-4u6#zLtf&KSS;c0s81X1hg6k6?Bli@q@If zI0#KbVl9aZRI&QTUrCZNf6c>-LXPKYOam%L|BpKzofF2y4E#@K;2)}c98pS2I)MNH N002ovPDHLkV1kYDSaSdX diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_groups_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_groups_hw.png deleted file mode 100644 index 8cf9cb2be4e088cb7d49c708fa81d5b201ceb006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1247 zcmV<51R(o~P);G2wsF@BBll!B*YO3gMLUb zp?kYiL`w=GMZ5`3M2@JG6ey`D#WJA~%+x5*An2f8gnIm&o_C+M_SxUhd^2i>%31Kv zT6?|kT6@nod%kba^y}Bm>h=1Ts9`Vw>;l0eQ3#-alcYct5{MpGGO7s{TH>XcER>mI zH;VmE5_fytx~FQZbqmX7d<}eB=s;377aXvHOT>FKLJ~*Q1mk!S2=}Gj{}40fH>J}+ z3`+^dah);mN&F-*8mt%T`GU|%2@+eI3dccw04|xhi+H-kQPgsvDr}$^5HAF6*10Cq zxv*%)`@x|Mfr9bkD7<{phLF4v(O&mj>lEM>&9U5apl~drHk4aU3Y6#}5&}@6!z?yU#cOE||&xbL@U~t)l zjoch-_-js}d&vXdxaNV0XW(B4k62#ciM_R2ZH0|X9Syr6zDGB!RM3~abyt9k|LT9z zoklxAW>Z%-M*BP{-K1({HnmxkJ+3r=B`qMg0bB(u#HU;)hFc;5_Mj8Qe}Rk1Sp0Ju zE5If=m+?JZeSRisMasc%G>zX){$Z@I*0cEB_Kw+Z*Ocpn$MNbGko4SWWom~e!~*mBSwqI!K@p@}CD=oxpygx&b3oReo9R%86q zl)E)CGp)4Q8o5(GbBW+{=d|=UO;GwIf*T4hfVkhhn4G>TvhcygyDo|Th&}`pf#**W zf6U!fzSO824$+0C=0#zjk<=~wFz`=NhuIOJ9qA@~scC5t@!(P_>Py~TSAfr4hpV`O zZku<DcJl3GENFaKR_{yr<#p35q+frq037b^9U?tgHiNNMlfXX%^Z=4=1FDmS zJ5E(?LyqD$a8O;${=|O-=7B{(3-d_{>+j~9k$VDM5s7^v9;8r{^b%=a(5pZ|d98qkABM+N-@FokD>a?!}^WYh`TEZJ!qZHKeu^lM$c zzA`>_x}_`unnTYV{oei#v}T$dxV@6Eg80(NA4|B^UWk7=V@ z=czL7t9h9s8<3w3bWUhwKSSJCR_nQz@7Ofbk5!#X&w=B7gqhQ|H!SnijwY|;!+CIo zTKT3{SR9Q;QZ*Nh0}li3iz@4eJPma3+R4P36BYfmCEf!0{e6a<{_X0Z<~Y7!VR1CL z7e*U*a-z_?`vqK0a%JKDB=xOM-{@i{{6u1U>tlZp+@rCXw7Qb%O)VRBrHwlR{AI3)G$t zmfr`SKSZz$Y~nIkZeE(|<9P!-1O|W`H9Z0^gZMA-jW+75`xi=Fx)!K<2h{)o002ov JPDHLkV1l?hRkZ*B diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_groups_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_groups_ny.png deleted file mode 100644 index 1d8ab4e69b44359f957c281b87a2d76a7f4e3f4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 790 zcmV+x1L^#UP)KU z7@iO18ls0P1A2*)JZ6p{cgmR+p4)k1)alElz54-g!w0S%i;p+1pOx zn3*v+vmH{_X_d$A(O(G-5q`wF2#XZ)le=RuTIDXvb?cV<*)Cgb^t!KfIBTLR?HZ$p z2Aw!)a$F51o80AnCAkyUx-EKn1Lur3(xSM+%X0hO5d-0(kr5^;%C$rVJ8{&g7{D5r z@Tr@lKa@0?>OCd7q&9k~)rRJ%V7iUgTkS9ks-i!waz(jQ+HuB86HKteX>^(s6^!?p zvJTr~AhR7(c1Vpi%G$Ikdo>0y$|rLBVlb*LvB?tE5fK`+>eFg@3_`Wf(Wxnh=T=K> zw%OCh#1M?NSFSN`4C8$xw=RaJ%KesFZ<9tFyx>veVhF13MafffHDkP}#R(nyJMBwb zJP=oy<~jB1J!zGMcVi$gY1OCXk~YZ&UHWv`<-X`)s_&F_%PovbMru}e#0OTIXPODd zn(RT(c+1zi`ciC>sqCfA*9rmozF$g!Qu~V+Yis)ggA5ips^k;@{?00AU zEz2cbaBuW5-BA?PMf)$I)lzGMP*!vqL*JM40Xgb?VfaYr9-il$oW= zwYzLqgx&f(t}gmm=71zgk|arzBuSDaNs=T<4rqw*m|rCY1qJ7w^s$HIfB#{B0#x(2 UM3x?R^8f$<07*qoM6N<$g5U3Z*Z=?k diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_help.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_help.png deleted file mode 100644 index 8d819687f02650aa78e5039a04d3be05625ba59e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)|OV_p8Ri@je%{4DW z{kQ|Qz?#f~cltD>*fi+#4$L`H4XiN)o7Z0B+II6HU}L(`1ekWPj-VVg4JOhIy1{dY zD&!q5>UY_B%@u&pKz9;Y##^jwt$5T!KT9RD;YLK;VjXW~;&6lDN<`M|6<9Lqfsf!; z#G(%j#Eve$W|p9Im`K z40g7>R9yn+A~vmx7>+tV#X`;ExQkypDx?c|8Wj~VRRipd?|2lG=TL}>wlG!|?6?iA z#rwr5K1W4gF;WHWgg5x&WP)xO-*)hKj(LwYrxLYe*owz4mkM_WKb%g{PQ_zaHM5qm zX>W=)A+w2fSJL(xa@C$hU5jEY?z)n?qAvE{?uxEDdbW)4v$EwhU!!MBjMA3~_gK+~ z1R6?Xlrp|ch@ThWa6;VD_^!mp`S^U&YsgLeVykCY%+M)y7Fa zoEJyyoMic`vsRN?uvXWcoz+z95smJZwt#C@w}6Q%Gqz$!S&i)|V{#VCc9aW$YlDjH ncTcSP?3+ymPyTSf`!~;TRZZ^5CNt@300000NkvXXu0mjff5thh diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_help_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_help_hw.png deleted file mode 100644 index 8a04a4d870eaa40bae22dc4c61fee8c0283f735b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1145 zcmV-<1cv*GP)~LR$r`S~u0*=)_8InO!o%-s9FGjoRxD`!y@jV#F%*r5PCF_|D1wGIfD1X2f-jRm7YS5d$~ zwnQHa4%bHm23;^#s9=Z=x?jR1=BkC+=V3B#sQ}5%wEP)&p0#dNK`1Wq$+d#jAbna_ zBaqGWah;ecd*X@t$edCFC84K{ucV3*+ziBjo49F!SR(8d6J$^Al~NB{?8V~ZS7=?< zi_@$`h~P(NZch{5V=)eMudWid2h0R5;8Cy&^n=Qm+0O~>YhD0%%MVRD#!ZTOO~}cM zsN73HjTXXVL8BIs4F4zMCvp4m)%bC7SwplPd>o1xKMQ0F6o;>Xo=}t9R~PI%YxGTF z7>&+qpwlR8Y7h$S)WcAIpI&Fdw_c&<*dso!ifQmx+@`RMGf%au=J#n4*Xs+rW+CZ^ z{$%b`M%-Z4z3{6*>sGgx>ELT1E4e3SHb?j?DDKesQ^8YSfIl9{nmv}u1zq$!JjVQx zj;fHrRq$nI6Hlnp3SM^K#?3y4KXl*g#A!Q<=lA2B_5sW4KlkCQfuHSaMzh{fMXV3} zr5Jn${1N6;eMBALxiHE22DqgdJPybn3pKfXiq5Ih8jX~X?afsjiYR&^E{&q$aQqkp z9}hLTeF_hNvnqgPXL1)Og%tl1xA^~KOj473Y(3sn0lt>kk=(^ep_+LN_x*6}@!YIp ztP?Day(rq4yEsiqlP+ttEiL~bR`V68c$3eXf$yb}oNfs-zF^xV5n#Ql;jOPcj-T1EqZ8Xcl+u#S_w%8AV zz*iQ$=&_oZW;?9mb#KIYt;IwydOT#}M@y*<1ORF&Qag4S=m00000 LNkvXXu0mjfANnMW diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_help_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_help_ny.png deleted file mode 100644 index 3f324f6686ecfd5f6bd6b5fdd9c00ff70c95edfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 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 Y2R#CAAl7n(N&o-=07*qoM6N<$f)n{N)&Kwi diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_jobtitle.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_jobtitle.png deleted file mode 100644 index a2b7dcc7ad5e87de8c1c48a8a48853b27212b526..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P)9poTaJGxpXrB-ubeox@ww4!j06+8gnzzX1V$`1ap zr*=m~`xCi5wRZ41xd0}>D^Ay=JveAXoNVQCFp%&IIG4svS9s+fh%2MRbu6L0es_es z=W@mM135IZ7Uv#_?wpSCbz}2q?cAlU)M`JYP5ebPAR)ZiC+-CfKY7^+I`A0bRyLuj zv)9VhPe|Y$X#trD9BKB<1TIALPcE_xKjgz5QHHA1Y5ZA4{#y1R0wK9D|gAX z5Zt+tMng%<{Dt06i>||MX4LW5&iAaIbKm)LXXc#ec|*9WODPQoO-Ng@VMW@6K@Dd^ zwfpEmejWIz{dA~0@8S<{*ayGBzKwYQo%_YYx~zf)Jzk42=9V!;UhA;{R&^Bv>lI>VYq diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_location.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_location.png deleted file mode 100644 index 01445efed3ca1a4db7e666a56a3f2ea90bd77d4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmV}FHjjWb{Iba6p1HGWTSS-H8|6OCCI&cu&2Wh6dcy*&bA)6FI z8+Z#wV&bdskAJD?mqd6nxCp%2ky%D^HW(kg*0Ce2{>jk|@+Kt+?g6tW1RJyHi3h|t zlTK|0L}(1SWXkxNji8J(LByv8pL;->4@)K3`XnLhTRMmrK<^j2UHB!6yv1kXxw1k_?Dq$ za+_TJEb&Bf^nW@@TDNuDKTr2cvsV^4zdFS4@vYoPKWiO)E1~i-Av9OwBh<4ah8iMd=!F({4`Y? zg!RHuH=gy$dp$p>=cFFFH;y^a#TH%X!s z%nrtw6#a?+gY|15Z+14JPY(rViRWCbx00i~Cn(&mBwavFSNt=9Gt?;`y`zx76UcU6 zI@OFJ0v$m_M`LbM8#P@T_5cke|J$X zTjzSrp>G;^7j&NC$L5`>st=)^K~(N|RWaj&z7tMkN5;0{X^85r%N}#S5-%FQYmfnd zDfk9tcR_96!Vp{q>=JM@>jv=jcy8A<^{*HlyM__Mr+`^o7HP=4tpVSer6(5$@u@(! zDA^~lAWew+BJc&sUV!KwBTZvOH8xlW?Eb0qaC}UF`~+Z+`QM4x#CSE&vC$D=b~3gB z#nVQ>ABb^ACC6qu$#1yLxB899?{c*(#I^l*`psf78#aL6FvLgvO7ZY(fj`gu6Lm~# zbaD)_2Izc}={oih*jm@a<)gE6MpXvb3_bvF?^z_iglCj4)Z|=X5WO#K1B-!Pl+W>! g^A!Kz{>c&e1=Pg*YLu-v8UO$Q07*qoM6N<$g4CJdq5uE@ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_mail.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_mail.png deleted file mode 100644 index ec9ba527cff0922b738af6afc869c04e13657874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmV;d15^BoP)iON1SH}Eu@Hj>AqZNCf?A|VqbUSI;s*!@ z;|H)Xpk2VqM$)OEv9T~(iNt_tlUS;W5kw_E;(Ptg=FBqp-g7qhuDfEf1OJ>kGyi$) zxsP*ha=E(HSK!~SK)%v)g+gHsu}8rXuo*OiM(_!|29w|sxCKV@`Fw$~wn9^_;5PUH z(#k7{Jz#N`?ozKDiDgwTf#bl&y<`3u$VyFt<)8`3YPJH)eaZYBt2oG59ig$kU;?Oo zLm2@3!Msovd`+MmJOfrFc0njEwVfoL;H$|zh`uRx0*LS%z)3I(RPLiJ%aSL;CAb}E zW8cxcBZQ0-;$6jI7j9Kw%+uSQ~##}|4DgjN${r5gGIGu%9k^XaDT&G8zS+ysK3DjLWM+>{BwMY-*!HK)rQSz;5UelZ<3_K>>UI3mTJU4G!S z(`O7fsd97H>S>kx{(QWm*u;UzyLElsADKg_)q74Fm*dPuAk!tL%y;6W&UEsYWjfvR05>12*kZW=(A#XG20dkra zh#q?ILhTiQsXiFQ7pi)m3s+6)p`n_bgj1HEn?{4}K#w$k{S7g9#f%J^>jX1ECG*!; z#**3SbXDnh>wIG6*t9TP#aVXw!=1@Ufiz$IZwOflwtzig36RbH9$)!Y`FbN)SZK16 z|CKxlXAFB%uUtF@P5S=Jv;m%M;uByM7y)uPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91C!hlW1ONa40RR91CjbBd06sLrr~m*1yh%hsR9Fe^m`g|%Q5eU)rDY zN|QA6_WNJw$eHWRy)$`Jlm77YyuNe3Z_dnlc+=AUYYxspBo)sTjYbzS&RWQWPtYBS zM81>GoCqo%F2V@dQd#xsGZr1rYwd_U^0hM(9D$Tu!8DQI0Xa^pvQhc82Z-ke$9oUy zQab>ZLG@CD-8L#$V;|nLtaB?4tEN7kMJK!VyfR(Tb3c#qD%s!5_&!!@! zDS<`c0T?xt+3)8>Z6F&X^$k5Ce&f698MwlDA(f*AE(4E(Y#dvXm?}KXre4L+jgEs} z(j`Gh#5NbyM`{e(FO(ev8wWL^I$})U8byYBgZ2%3r7_!ru0-o_GUm|7hdydMr9FeP z?sqzc#0W?W$CDKQ#o=@ClD%?cUNI{2GNkTV(69oXtqhn2r3~5zKZ6eLVK+?OL&nOj3$a8yU5P9T$liysHm-S9|#9BCr<#M|jf6^PLjGHWIoSrxQTIXE*M zV;zNIkoq83ZL!r#L3`2}$M_X#3H#O`U$32U0w?&oiSZGqLmue~<;^C%nY{TRuVAbt zA4bP{KwSW|DeEm%k|dmY+1bKp9sMp-w-L6h%>*}~f}@F#-c$~7w3FoZ9wssI2007*qoM6N<$f_e|z9{>OV diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_nearby_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_nearby_ny.png deleted file mode 100644 index 2b15ae21719af6e4d37360e6dc31d05944d96ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1195 zcmV;c1XTNpP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91C!hlW1ONa40RR91CjbBd06sLrr~m*26-h)vR9Fe^mr00KR}hBnjuVa@ zhp4FSlvP}$oghM7C`QqR2rit!g(40RabY$Ih@cA>PDm0L!Ht484oPq#2ns5Km>>#` zsHn8F>7aHy#rfs?pQr4)@14GB?f0H8Ecm+W)TvWd@7#Otz1^zSNBOt|={u0gWIj)i zcn`BQ)ea7W3<(*cBye>2(7_7Kpz!C z_lENze*>5teA`CK-*y4vRJ5inF-5w8o@o+Y)_ykUHU7SE7bLf#ho3KsO_6F<3zGU4AZE4&qIVXh zAxlbu>8{vs=1s|v%O z=-;6|+=C&+N*7KjIL_^WH@C#95U|AuIeT&}zC}KgSHM+QMCLW9h$WUE^sMuu_)lZ; z@8lzy9;!3pM>q=4z+^&NQiAk0F?oui$IdF40MR!~TD~`PES>}hz`igr6SC<|aEif- zO^H>FgGZR#U|h=brrm{vCYIFQVRG`Y_!erxMDN}&noQ5+BG7;9UTPSufYG4S^iIOsN|*&Z;30T9 z&LH~;vE)si8vS#!67;3}i3JD!9DN2ZKrLK>26!CMA=9Ht=-wR&gP;l$#TiR3!}qWw zc2E=$75x%e2D%RlDGx}t6~2M;XmOm;or?vNM7yAO>enz7216y}?kui^Xjd=6MK}q^ z;1s*`0-Y+&ZZ4LEhIOhw1AW5lGIju6_D6wwnkeiiIf*|A`449nkJ50FhJ*kB002ov JPDHLkV1no=8IS+~ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_newfilter.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_newfilter.png deleted file mode 100644 index b4912b288333fb521f7a7ab85cb1df7058eb224a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0cSP)u-yPV$8EOOaUdWi!6rvR+PrO&nYGn>-BeXfmYXqD3%<70hjcco9f;(ZjY|Wah%GWkSnG5WPk(uj?Y>B4E;i& zIQ$qkMuv*|8w(O?5%~k zWB&c2q1&F@UA|UM9WK|Eat}?4&RD+!XD$K~fGz+MqJSvy^9noxqMP3>Y{rJ#00000 LNkvXXu0mjfQzo5c diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_newphone.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_newphone.png deleted file mode 100644 index b5cbf0141f8e8c937f02983a8f117501922f70de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmV;>0WbcEP)Np^E&I_GF%S^_p87+MH7kWi06~ls{iX$T#&|ydTbRPQBs)JPd z>m~&YNHU=#60D}7?=LKVRWOf4DFa%PU?mN0W5e52`RCl~4ayJqFFf88^w3azXr~v? zLxT=U7UDY3_5T|0S11z z;pxtxX$^e)qe^+8qds>LOKe=Y>|~SwBKRs7z67q|Bx+4M2KNMHZYRP;5Ia#TON)Sr_*YnHSkJ|z$!>CI5_hx0TsW-G-0VGkZrn+wT)6~X0xkiU zz`sbq_x*WTNxUqQ1^9-;M9U($1@$`Rhn_?VBeq(%tX+?iDw=N)mB%1&DjR3~qYYAN zelH^{SGD349SgC^v9=Mi9$1P~bSW_XcVVx|di=}$c{A_=VI|M%kY*KEqU(q>laXh1 zqU)lh5(HIp;+ zUBE3o!Uv3iycQQ=4f>#+Dz)>Wz-N#=u#L!~|12=D-35mBz@^1-)7EzyO}}hr`rL31 zK1~e_`l|G7noYOt;>OGHWFVon$RT9ka=cwT118~KGik9eCn!0fL|+WbLJ_{ev?Rq6 zgdLuvm1gKT9K#LBGZ$9!uk8e;JGGG`SjUCP05=gCc{%tX@9v7{d9PeuxddDSE&-Q7 b0uuNE{@EY{Av9b300000NkvXXu0mjf#+mB~ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_notifications.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_notifications.png deleted file mode 100644 index 65bd7c47533cd1293b4fdc26558708916fb9791c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmV;w0YLtVP);WkELpN)FI)NI#m!_dvvYk{QEIN1 zRQv!thT>&?et|_@SM~}P!B2g$x)m_jc7F~m$H`th#ac&Z4JTg3=su$EX-DRnIzGhI zEk!NJ)sT7|!rp?hpl%Gj31L+<3iQjGI)u&O;Lp`<%at5p=3du= z&0=3~P}gf8v-h=Y!6tDOb&ZcO*%|7#iBvJDD@w7cyFF5{4(6l!;yhSyGl+Cq1>1%_ zkH}%$VD;(WfKzuo|ctJbb()SFi>MrRkBcy8-qX z@1eZ>K#MhjFO{T2KJPOA^iILA<&J@>G{_RCk-hiH8Q=t%9S(g9Y|hK{GtP8FyA|;_ zGzL1s!%m^upd>R#gATN)^<0vz0JFlNqjh3kq8D|u(8V(~i_Y8+dk<|vrSd*n4U5$TuwS_{ueyka+)Yx2jF&^8)4=>h z?*cb9$Mv6;SnnI`H#h`ZstI*TjR)D~c4DYS$+{_Sqaw_w&uYS1eYN(NgHYPtDjw$jrDP3i$kskP4T44MVqh9&mS;pko{dl#xu%HwZg}?*-|~Tn@4R`9_XwszIEN1zya~EyZu3% uYd$w3ij)}GtEYE@ebHRga#Q}l5Pt&~l~RZGiyaIA0000^T zaJ<;<$~lf(nJTRcE*`p39XD8VuJ{RBci&ibBSTs02uIgT7akX;vVY8qf{MNuln!Pj zU+8EuQ_2vipF4l&8=cSJ-p>8aSH!u4`M&w@w0+i}_wM|@dbM`+JO?m5P;b~6wR``j zxb^a>?+Y(5rya;x8}_>|UcT)>UV(hew=ReKy8=1|1T7Oq^fuR}pS!;)E_x#ehpV0P zHs&0L!w$K*M=tGUf5YA%!Wrk1x4GW<`E}pAd0&?)-1qmXb6KV9cqcvk$5xdC0uro~ zA24&QRSDvD*pql7-BfShkIc#5vGXoU{acs*+~A=1tc*wVh3yaB{cAaGd7IBi;Tv4< z4t`FGeJAqquENo23bsp*@hj#}VRkKhq<8Ap&G0{`8Mx=@Z~D0X@sT@mO-eyNEY-!l z@;@A`xm)-cwib%jU0V6|#%A_C<*s#)*n_^Seb&$_e>W#v>0R2Vw2lvJJ#N-7JoV2j zrt5o?>&r(uDoYve1Uz{^Ga%dV!AE#`@CKokc45 z&%ct$xWjMuy}$HfnpUB!&W6dkm68YkG96L#I?5qXfA_?;@(=yXBXTw6x@5ZrAHFsE zd*1Znowm=XKLkxbEB|Ag;8i|`oz+*pCaW5*@cg5=d%tq_tZ$7sUawOSJ6E}2+g{~I zTR3B#Czf}*u8(|_?Dy3D?tMXd!Af5#VgB_ukEL{;w^}$^R`A7w|CSQ zJH6M)54AnJt-*ZV${kG}xqdct*5p|xT7=p^-{SV-bh$0h&ppB2T_#R0Z@5(-&u_?^ zod3M|+!Sq{zr|Pf&-9qT3|{Dj~)KNrUoeOej*wAgQZ+rF=} jHB+8{wrNDb8!Z2ryjcqS3J&y{fKslftDnm{r-UW|o;7Ah diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_policy.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_policy.png deleted file mode 100644 index c9d029a3883f25627cbe2cb83e5789ebbc662b5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1133 zcmV-z1d{uSP)r#w7dh`h2f*Zs)(=|6MHk)o0E*zw_Jf|DOLj=T2GK zKP;(I)s{}D#}aD{w7}I=D%D!5*agL*pek4g_rR6U3=YDCf&v%gMA9*^58gvAxq-nF z=uk|~SYLv-hec2ierZIp9!9`aI1FFFm6r^*!=Tti`AiaQunDT*u6$!~9A-dZ?V_uO zjqns)`Oe@J%!GhnqS|oO6F3b&z?CKjo1uS_K-g8lT(}5+xsO6?wtbRV85@k1++UP} z&x5v!1NjW`9R+*fEx2-rK{uayaEQ@#$Llry-7q3(S-6IHU0^M^Z~3mA5pmcFl26bl zr$Z42#4m>{AZhT2YU5Wh?rU^U*hrf~=1Zm`{&#}iGXbmofy0XHX^fiv#=mL&*~D$< zj~`c@j-fvxUrds}QylB54fKlmq1YO@T&4P9Ywnvd3M<_2A33HleFNvf7Iu{Wp%8~I zM)$@)7gt=l-#F=*!j$kVj5aF=NrRn8WT-P@^WsKvd~t1c@;r#st8m}KTI(AH9zeIt$9)7U(@_f--c z14*MN1Os$>YL7LE=wh(c+R$$Yy2V)0v81OMDa>qPJ3G-!FDf5K0@pg$OgpF-m@-c zl_4GMYC%s<@&I~=n1!maO~G@JoC-AxQ)0X$?e}3Ty)%Q;Eg+(PU&r zK91w87wv(>jtLEksi&rwM)D5qH7!{L9FE8n(UvhbnO8C^;w@HSBb$#AbA3vB8}rFaI|}#0$naRkV%67V0Z=+eIvDT`D5pBE(d#J&`qC% zf<7sJ!{8xUSr?l;$t025LY<9Bs~^I-H%uou_6x!Nt-8gTF0M=9j^Lh~+G4bQ1a7Zx zCgv+)KUmRmx6!pJNuQv4{q;lm16X-PXAOA1YQ{QiS3xsac|m7dNs5UILW1FN-DWgx z3+*Nt2y;OHb#moAgSv3U?t+v_1=eBXd>~V?bhk)w99w_H;9%C%GC5 z{-=-97X1s$)=nY1mg^+ZP5J`2-?w(|zifX33AGh7-wOfd00000NkvXXu0mjf362(B diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_private.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_private.png deleted file mode 100644 index 3529d394b7bce66a3a229b1b3ba6014a762de514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1106 zcmV-Y1g-mtP)Erunq0aQ?} z`eT9gsR_SkQ28aQ*L@X3(sDP6K4TDc5jC(4LLz$&985=)Q}F2-G?~x2vt3x)U~M1M zP9GI`HDK};Wfk0Wt@e&U=QeekmQW; z^w3LIyYO_YB^zCM>n&PRKV29Hyr6UF)_>&LL+TM{d=qkdHuD?bb7fSkr}{eOBw~Y6 zXS8KXexG}KNd4%Hr$SE8W`5&)u8iu})A1{j(BPVQUORuRdFC9G+>Yoo2WQgpj33LV zda5f)2iNNIOOg9_-&12mf!DLuY9+{N&--Pwr7g}oZg6^?45W^T0;lHqYD({ON>BU% zu-B!{_HJdISAj`%U$O{@`+h@sxpXH?&YC@K@mw%3?M&+EqQF(+!tYi;t?B`jL`W8@cgAw#a zY&YdYzew{K*j0W&e*s>BZIBnu)M;=Y90jA`DS0lDa}8ZNbzU5ijx4BtOO5;z&~_5W zHVQriiOyX*kapb*RYE++SDZw7ly3^y#=EzZuuC{WplymedfVv&wRt6ST^-GeQ?L`| zEB*~(6$tjfzHFc?<}cHdbHxqL@~K&prgSa->+SvFspmL$uT$hGCZTdg=r?gIZx zwYq}ajK$gh7a7jq_0MMHBL6+} YF90FORj(E`z5oCK07*qoM6N<$f~-3bzyJUM diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_read.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_read.png deleted file mode 100644 index c38b696b1f7bb78fc41abb278c898a211f311fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8LpGEW!BkcwN$2@#ee^w+gm<3U!NP&eCgn!=N_MKNp6@|64ESnpov$d zRnyFNFgTe~DWM4fwsl)k diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_recent.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_recent.png deleted file mode 100644 index 3d8eb78507355a6e6b699304899fd8c2ab6d9ec2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 780 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 IM6N<$g4#&llmGw# diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_secret_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_secret_ny.png deleted file mode 100644 index 25751551f65b185d604180ae8481fcbd91b35617..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533 zcmV+w0_y#VP)Xk=n$NoGKhmM zL~zo@yfKPILf>BpL$vY6B+{keInzB4{5jm`+;gMoIsRc7vT9#N$(DsSZNZk3ihZkw zdVvkvaTlq)v8FO6FTJPj80?Ol1AAh-5^!KLicC5HiCwWhFxMToj4R_&6h)?*otAu1 zYIZagMNwqj6_&f>mT=>3>l}ki5Vxu`Zm`rHH?4ufy-J~ZSM9Zi>0ZqE2G-j;xiQnK ztb=@SgYw$ZU-vZT5|_6Qx9;=Eo9?IqSs9B?Kt-YD;;q{S6>wrvM%KXNHWZz!I(6;w zxOS@QT(P4aHa#siy$az{9Qq<|%MEqZZ9GsuJH&4vLpbVYgMBARg33E}d=KLi!-0BM z6;;`QHY~wj7+3QmP|q}RnSl0E4L`!T)F-2|Z8_lr7bYGkqt>MO8p8bo)j+05g9`lg zK7^ZBf5Mp5&3D?u35tCTN)btit=x2QrT0Ox(#i2VT-^Jhh@Wx)1#UzQYklC>P%{$7 z4J%{2kGad^IJAXs)n z$f8D}4}GX0Kd3>{1Ez;rff|@Zkb)NWAAE$(fx1@46J7>J@}ol0p6%qtH(qB z%sCb|0}ex(ZKOD;x2x*am1Dxon6MMhg)Z0x|A5)$1eb)yQm)>^RyggR#XT7=S2uoA zc0zLfU`@~*!1u{&PFtJF-U}0NE1HD*%%G9e-aKLJSJZ<6RhtH5;4pju-S7h34YH$k z7yWz0W!Ey^JlY?^ZO{gP!3w_e?fB-6fkwa&khLzC*iSsCXjE#$K#THr#5ahK!Th2z za(TpO!xk_*NO0U5A$}8oajtVDf$jnL6})Lo?N_rIk*@g^>UQgae;)cm3oL_AV0^w; zd4@iN;2HP^?gNc^73>1pZ!oxY6a@Mzba%-*p>Ju2lPog+bWId&Vd-#)UNt5D=2CGe zqU!^fLK{qmtKqz6`bvX#1IUg-YqTGQ0iaDT)16srXsR$5vipft%~tdG%F;n7q8Sgi zr{gyVf^lGGM@4jOMEzl%eR&!4RvNCpQu7YuFUiNK5`fFk5Z?y{9-8 zwwnllgRiGziu!7QapFITbtMv`{aUE&KpmSDA_4Vxf>zF61Zqm!Q(R5qlE@J06rz#v zF_^V`1xfp)>wP{JqrK4v!O!#>+IPCzQ@&=g-*dGb&$^#M&p*8i$+GWb!|UnF=HSbm z*JPh4dfhTxX@U2-#i__Ax(;UtaQ031?=ZlH!IwF&IhYapcS)NoB}pxgMd|E%4#nqS zwF9XhmCDx8z8-CKP^X{bV(VwALl)paVl3V5#fD%$m>nW`7S8cKXg_KK`~qL|F|{GE zJ7{%Kr(Vx!x4;*nF1Hur&sPcqL3gK259n4unZ@L#+X*r~auz`93ep}6I%dq~T7T~; z>YIApMEK~9p?!9R6W!|v$;Rle1^?sbC)&$l5v&LQ-livs-(T6`H1~HPTb3&-L1Cn- z!RAFpE{RSHv@2-+yw^efGW2)dav^oSKmHD~j-0>}6u+)X>JRgVZx(3v6>ATE3YtJy zQ|F)#>PC;i+O+7N2D3YCEjf?k9#i38%n43$f;lb%dwOI zS@zUVCP2^z`%Q?~8Tt}*hMaDm4j7SiI?;g6`lXZ{2gJJdKLc6W;{46^F52Yk5D#c( z9rpYz)bfVX4fcjoA=WSXFGGi6OmtR3=T?`WL%+S&CiegIv2@NScTTQSp4dqFF*qOI zXMwNa{e-&9?Z?WuEM_0=Gh-}9&qO_@8kzQM<0Il!FPljRLkAp#nCTe0{bc4XeIPe8 rFbmKd?KnvN+m)|!M>GBZvzmVaZRBlX2T+W(00000NkvXXu0mjfA-sy$ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_settings_14.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_settings_14.png deleted file mode 100644 index 76cd0044967c2f1c8eca511a645b3340cde02db8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1157 zcmV;01bX|4P)L{a1xqX{o=V~*b%-#TZVbN2Ur$6PpB^*d{Sd;Qm5`+T>( z&&kUAUo9GqMxYqZz-#yhZ{aM=gPecz-6`AyDj>)n66{yk2}bIYNWt#p-G)wHeii;E zJcd3n0y=`&Cn$x(*b``KHI34y$Q-HW+2Nof zXtt{mzc@(iiUnR)25d*tIFL&fg{QCpCc{VQ&gJ@ycN+Q42}n*?xB)w$FUW)P46cy> z4xhfsq~IXP)8}Uw(ixHD<9-9s{{xOf=XA!(Lf8*pLYVDMXFvwo7&Z{`_b@nlylmTn zpf$&GM&vSxU4uy=->enP0zG5BXs2U6J<)aiTxbJ%Fc!{(SO>U3eg88^a384ctW8V$ zASh4kDkw?{ISj`!Me$AEIF)Y``*{w>7WumWUVwI(;X zT&^bm+3^Uv9QX-hTQp+7p}i;c45}{0Ge|z2S3&O0E?`Y=@J(j!M7W zk2gGB72bLO(ZANyh&!$MDV|^lcqJ;&F5;(HA;(=ch%dFV{FS7=g~NJXT}d-#F0v>f>={KEuquBpwNGkyo!>3HcLD?fEGc31-}WE@6^P zFmxv@3FxMRbJe5{Skx$5!wXg7<%ygKd5{Y;;T(t^iB$+_ zpxa!l{ykO+ZK=@-#(<7RGg=A$zagXsf^>gO5yc zLyYi>Sc{T|nB)bsvN6g&(Bl*LxX&(@AKc{upUHrqlx1NB@0dKtcrSGp)BNS4esfhZ z)+yq>PNRmymeHY24_lwALabp)X;P6S5*l=|tSZC=Tf|c83Q(g<>?`An@ft^{sR#{1 zeOj{d6fdKq2niY9W94BUuOkE7c#o8adAzm^?BG3A9v1L=B#KZW!+RnNCEhY1)KG*a zLXJ0zF~xUcU1|z&o0Ql$CKX~0OP2Xn%ZO}LS!7H@lxPuK(Fw+R#!a0M zw}@R=5nN$F=!mk4;gHaQieeLo!{Kl^Hgq}t2X3f1TvFECrT_o{07*qoM6N<$f|x$P A4*&oF diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_settings_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_settings_hw.png deleted file mode 100644 index e2a9ccb6bb68d42a2bed19972bc02219394493f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1332 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�a9pn}C)#Aj;u&0A6{5PFH zYmRZ?KO$eJ8SQri%%9N&hXIr5hD-3M5oB93b{Y5{V$zyuTCk%z7B>y=VaPvhzEU&L zU7h{L+1{M#2Hw_+*;SC%*u?X^ZE@4q)2?2LpPWtA(G*?ad_&P6x+93+Nu>l8j^A=$^wD&9Pi*a&>gGp4C2< zu^~MP*ZpM1`4*cC`$(Ve5DA~@-_E%enX$S!aFP6TwYG+9$WTAUHh z+5$V{ozL0@l1?P{NWZ`?`s&eRJuq38b#e;8nr}?>?wsTTgVY}cK81eQ(0=!bSBG>V zBuK4_vkLQ4w>!A62FNd<522<7Vn1N_fxbUyH=UK7LA|cvDlplSJR2rivn&&xc^NmW zNQ6wS@!+wmy)Qz`?IL-FE0E|jFjqxt^#ohNH&^#Cwto@iDp40B=~yU|d7acn(6Y!$Ftb$kG4ev~B({KYYnV>`lL%>F02U5($qKE1%n4EYL5F7ngLIJJj zW1tuDM{o#?24jI2oiHu|t=@ zD&}u79}ToQ>I26_KjK^jo50W(Ym{#xCea6s0bTN~@jvfhuE1~ic!r|Rm4YMy0000< KMNUMnLSTYC>Gq@m diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_switch.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_switch.png deleted file mode 100644 index 89a18439e40d327354e0ec08214a19cae1da225f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmV^3%oAG6fyeUgrC^{sW0JXMU2XUBv~rLc9d!A~RzQ)#eh1cN{}FuxnzFX3 zIEtd!wo%vyp*qMbF#$(Kiw`*xEIaJI%wudW_HxLw=Nj2A!F4bqNp8>&^6XL{Y+Ma; zY&AyEl(~JPcU(-o*&$Jw6ggbSqQBok!aZPiYBp;o;+DWWxCfJ2<5K-dW|G=Z4G;(7 zj)9hE9!e!OPr^emoP$sm{|lg{TvAzyn0_$HMaufxn+emNDX4Dsv`>nVt-|1 za~2;zCdi+HZ<%caz2>K~rAi=UX-dmPXI8=A7?WZI8FjNO`Q0<4I|h*mY=UWR3p#Y* b-*w;zdHUYP22#2nNeW{Vn1YAQBsSFXwj-#MYs}z78TK=Hc|^) zW)y{spnVZp5(UxE!esqXNxF0-yXU_TF z_Z(;D&YY>Dq8#NjP(A~hGmy%(@@S;fY3a7YE?5Eeun0cE5WI!1R4VnEoC$O-92|yi zuCteXox1z(xbTE|BV2-Eh>C8TiNZ>_nM0tlN~_N+Bdmu`_zixH(9sV)@EXS87o4_9 zXt#sKdm5J=YFo5hee8^KCk&Ybc>=oO2rLgXqJNh4)2;(8R`DEa17o$WPh+a7v$4ob z@lp5#7I$fEj1&e6sBbngc}HMqvZ=nnc(XqqdW@h2#+~ph`A}$KL?^m7=b<#;FIQh+ zyv-k=7oCtmK?m5g3f<;G?g_#z!;`~}M zdgfL(NS@sv_g#N!r;c{_7pIrFV(?!o?Y~^2{V<>$Hj}@&1+Hi;thfYyt$41417Y6&;)Y$3 zwm>rx4Q`STVUzibd*_OlajI*=1jXvZe=c52ouBr9)52feQ&&+%-ZQPbxE*`3o9!&M z>C7GcHPxVZsp3xV>SUw%-9Av~i2@-460sbjH5rLj03A!No z)uuBR>mi@(TXCP8b%0I48(RU!da7Rp-N;X%5A=lBD{nDq;!U9E4vPL rnHpdbHK0d{?HXok>he7Q{~7oTO6W|F1ry&x00000NkvXXu0mjfSfsKy diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_wallet.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_wallet.png deleted file mode 100644 index ca810cbf0b4c95cb852fd4c0b7ccff551a859719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607 zcmV-l0-*hgP)Y5Y34g5Gy++ffQ*aD0Y4z`3u@8LjKBCDJ=aBqK*E6 zSSX|og4kM0tgIA4oAV9Kgj;SmH+Q)`qTaw`vvV`^-p<}Fm#ft(t2$71;D2=>NLy|c zMO%p32G-MJb6y`KZxjT_`Rk|%n?Mj0pbwrtIHr`#92di(u{%N8#3p}R%*fKgl~iWr3nR}a0#~|%_Ve+ zqrQ!3zZ2mSZi8*nm=!$1RyI)b3^)L0y3f4{Ws!7ptO7HeH=$5Qog|SFa0$@SGtGLq z*qRoQxW-Q(4PoM<(t+GD*SXN7Aoh;qX<-R-Jxqzf91giB(>kdt?Ng{qfHtU9q1f6w za1FfkSf5Lw5OoS10xLYyTxF$pRHeufRJKq$0d9Z~9#tm-Y4>@KQhmel`t}9Kk>ONM z%I>IARx-?|&{w8wCuy^Ld~W?cY5Y34g5Gy++ffQ*aD0Y4z`3u@8LjKBCDJ=aBqK*E6 zSSX|og4kM0tgIA4oAV9Kgj;SmH+Q)`qTaw`vvV`^-p<}Fm#ft(t2$71;D2=>NLy|c zMO%p32G-MJb6y`KZxjT_`Rk|%n?Mj0pbwrtIHr`#92di(u{%N8#3p}R%*fKgl~iWr3nR}a0#~|%_Ve+ zqrQ!3zZ2mSZi8*nm=!$1RyI)b3^)L0y3f4{Ws!7ptO7HeH=$5Qog|SFa0$@SGtGLq z*qRoQxW-Q(4PoM<(t+GD*SXN7Aoh;qX<-R-Jxqzf91giB(>kdt?Ng{qfHtU9q1f6w za1FfkSf5Lw5OoS10xLYyTxF$pRHeufRJKq$0d9Z~9#tm-Y4>@KQhmel`t}9Kk>ONM z%I>IARx-?|&{w8wCuy^Ld~W?cS5KcrW2>#$j>cNw5AO-QDP|ud+UcPmz3eCOFAP0lbCSITL?`@wvd-bm%-L4xo}x@*YFKWmIyD znjj3rL&c+x=$McbiSvpvAwPdrM(teY^PmGwIM$8x23@_>K$lNr(xX>$NZy4`nRmfLF`F!fsx;0#*%_<#@6(SGiQy; z?{HlgE?;H^ujI@N5Pwg(qRYo|jMLl7zF)^)JBL@!>s8{F99rFl>YFHszWP^^_x$k{ z!C2O_&DfgT_qMvO3zsjGpjUFP>%!&BWQNIqb(MVRQ{Y6sgy;lByh42dWMP!52|}5rkU(KRy5e N002ovPDHLkV1n(KCcgjx diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_actions.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_actions.png index 95c025f0933391f03a295b4433bc239e2a2b3078..8d02cdfcfb4e1169e3820a038b80e05297a96d41 100755 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNx>hN@N42j@; zJ2jSzL6M^+S>CGp`HjP+ywVG&i{3v{l*ppFX#Pv@W!EHB9GF@;J3QR^p4?gax6b#I zSo1UC$IBE{lat+8Y$qO-%wF6S=RU>!nUA-`q3EkxuUf2&PRB4k&EjafGBfvrMDXi| zV>7y@&;H-Xz_a4ob1p}dV~g0)_#Q8Epgr002t~P!j+E08L3mK~#9!?b5joz#tR^Q6ivxBoJ+KG%$|* z8`#X=Dd0tulKWg#CYQsYXwc-XYtRj7YtRX3Y0wC$X;7iFSv0cO^N=3WLwZOL`JWz8 W0>Bd!myLx00000|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxy6oxV7!twx zHr$cxkb!`Y%Lm1) zj%U5pIB~Mu@~_j3v-B1`V6;&QOr8;N7F}A|$F}$M&4~Aj#wF zD%O>yOs&n;yt7r(XGZR7OY=Ju11FR%De2(L|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*;h{&$B+ol zx6^lfF*}O1mG4#H(hSKt;-<~rtf3Uu(K^AYhEaQU!U3b!R{sS_>5Jzo-FU*wqV1TI zvt{E&Cr9q)1qy8%AFWUK`5fA1yn43xM)taAcZ$yKPfyb?oZ~WyQ$={idzL%5K27yn zDt}+cqj}w}3ZJr0tMCVRO7A{eZ>l(%b^U@srM;UPTU0J+h%wgIc~nNbHRW8E^T}YVqL}^W|K&<7|tW<|X!B z2WN#99R1F_;a%3h`juuaeHPsM514CK<-JI~|Gmfm-I|CaX{XC9#DAAmvwxqkW7@eN z$0FGpZLWMdnfNa@ha*)(UqCQv^}J^muh*R3CwDt(bLvLZ&6*-pFDwZwak|_bQv2(Z z$A(EOT9#Q@i$9q3>eD=~$vl;s3hP^zZg8<(wr@~ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_base.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_base.png new file mode 100644 index 0000000000000000000000000000000000000000..acde0918dad2d2163f79960c5e85a1dde0a9d0ca GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxdgSTi7!tvm zoFKuvSkXX=X$vo-Tgl`9|Nrarh-_v_id9H+pT1n_zvP8A#yvef&kJU8miTB1)H5Yj zHN`rdPBD~W6=AVVTW}zE!O@rkcSg%Y4nFTEIDW5@KH=yS5Z-u+M}LZKz!d2dNi&)q zI4c$~-rzN0zi4DG_&U&Rg42xVj;k)krHlELM2;+0G?8*@acY?GCqqh#SJ6q)!9#9Z zTb)pl2m8->1?vR9T|VsGoRN%W%x4^rH?Fc5zT}wvGgjjn^X&ZQ<(%Bbl2-!1|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S+J*zV@L$& z+bR3Km>mV$-yacCWI1S7=BUb5#PyL^=QE4uCjm3FO0IZC{RwKmS{pY6ax}Hp2C=MR z;ckBTiMPezrcR_@%%nq-KW@ytX}^E3{At&Tt(FOVGnk(>SZ=6izht6&fSKnZ_pR#P zqK`Ov9FDg$@HTUQ)o+l3Ej z*rVGIik{}q3yoBlUlDc5y`o**L$Nqz?*y@qQpHM{)XoGR$VtKXP!o%&jJ) zIa-Zs#n-RcUwCM=E;=i-PjivKK$m&=Bwp3@;Jp4S*E6Ea>%M;3cKwmJb^+h_SF3M- zzSrqLb7!v%*FHtT$F)5vE>GN!Rrb6*t*>zX#20y|pV2E{$7~gUDSxvh(DmZ_Q=dHx zS8&9>I2iaM7QekZ8A0#Hex@+SbRX{M?c>ghHI~XpEP(jvm6x6p00i_ I>zopr0I?&szyJUM literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_addbio.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_addbio.png index 67ab5fba86c570d8f61a7f7a6f562c374b9379b1..a55912bc8f4fbc0947876c18623f25c78bfb35be 100644 GIT binary patch delta 944 zcmV;h15f;#2%`v)fq#ujL_t(o3Eh}IXcR#d$L}sN0SytP++*Ys{jDu`4nSY!>{~cifO<+H`1tx$? zz7xC&4uGX|GBOIcf?hBMqR21E=fScl0}Fg)6iQL(BsdP{tD;%#JK!xC17E=+&;r(g zPM~LJ68|(v^GI{(=)zzc!Cj!`I?e_V_#>nzX$R|pJUT7+aAdtj6OvlMYgOqvc1N@- zGi>tKfmf>58-MKZgMwTSo~Q!XuouJ`jLngJFraEa#nwx}Qj0ajewBC;yX503t`Hod zR-dXp5X>|!khiOZVeENjlOhnPR|{kvS=kzx4kHC#8s<29Ng!D@z*`NDidNx36P~Qk zZ$RW7sB@BO*e47l$DAZz5U#w5@*xxv-RPq@U3iBi!GFk}AkqUv_=v7|l6*mUZ6?R6 zHXp_5LaqZ}Ow#=#5)BK1d{srx77Be$4zb*~rk)_LVbvyn1 z#Lt+R?0#OSGtuEPJQjIZOm3eSO(bfy6T`OO5v!w=I0AVX3>G9Y z$_r+sV+9Q%9FvzYFx!q=BDt-H11~fp?|gxSFviuWQIg8%2>9DcGsP~3s zb(oy;9A+i%@k2IPIes`dR^qaNM?e^nTaCBSaXMAjFm}ZUG-`CKnqkaL!4Z{=e&(~= z%xN$BVC<_4$<&h%W*1lvtZc;CWSmnrh?ckRhVt_T{D=HOidJ;UFX#Y=dOaX7{x+u% zvwv#WAXf*}k2WAFLXsR$<6abN$d&bY708`ziyjz$$pP7ql+H=8Zsd%-gP^`j@4^>k zY13C}`RAhTCN)a delta 935 zcmV;Y16cf{2$~3xfq#TaL_t(o3C);KNEA^V$9J_9EebLbD=P3(dXR!Hb*L^uLeL=y zq7s9=bu#GU!45(lyYnCYYo_2VLAg-`)3|H|xyqn{^F; z@Y(n0_x=6en|U*DW;T`DV3sa-KG|$`3$eRkC(OZgI-Opi{C_{j1R9|Wp2Kg5vOjdb zfNs!aD{mxjhI^2KB({Wj0QM%CRqT?HsES0ra0BX{q%+h<;4}PyS=a&1&*MGu08%;R~x|_;2;_KisSR13V)hi)FH}C=NlFQ?j7!kSdg0;btaVR^i znsO92mkdfEAYV0TOR#n(HXKD2=vtA@f!D={t`&Mz#wK?h=o(-aWRp6%G>s-hBIJq+>f9QtLgzR%?hG&fxdCi5R>jy1azgK_}F^-;Z6Q+64jddra z2W3*z9e=4^*XzzKNIq=ZdPoPx(Y*xOSkUWN%ZKHE{UX9DB3r^esg%x;Ju`Oc3N`E2 zX6e2ZCU+;Kr~IZuL8aS_(FWS3qqi6wW#9J1u9)w{3FtLJkvEXe&?{In3D5c_UW3lA zLUmM*D%Nox$Eb0hWADLAP6?`m%D7esRRQv^voR@uO;%FvAuc$a4abTS~I&1*CxyG`&RvAC!t0C+n zxZh^SX`cYu&3uvj&G0+qv~#Dp;xGB30cbGEK6^$AeUWX%+91bm5T#yi%lZt88h~8M zCV!+P1Vw!)4$)uoLlKQ$=1;>@_z9uAmUhtzg{~p@hzQh{& z%H3dXnCoz5!zJ$(91r0e{qD78^~FmP=+B1xpxZKu%_COa9(M%VHK4n%&FxQICxOr3 zF`9(F;X9!|@gM}mE?KE$45$|~{o~OHe;`3iH?@{+g7}SR{{WimL#@U6WibE%002ov JPDHLkV1m~#%)bBt diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_addbot.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_addbot.png index 44bb78f6a2bb3548e19daf4e7563c6c65628e969..885958fbb72e30dac67f636518029d6a72eb75ed 100644 GIT binary patch delta 807 zcmV+?1K9ke2fYT6BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~r%6OXR9Fe^m_2S3K@f#^fXIYMAdrPmfF0Q6WDem39DjfWZm6 z78h6~n-d`MBL`&sB(Tf(W~)Z!-l2O|+F3@3lHT@TRlPUeJu^K!8vVEY3{?5y{OD{p zyMo6paK}79QC?J4HMMsC1tNC97`z2PL2ByL*cj~erikQw;1n!tirMQbthi((+aTEs z@EAn@3GEZ`9)D=5WLml{un%^D+llK-O*xknMZgA#GjmA$YKAvEq*$OFZpy8#(9Li@_DIUZ zZc$|~?tyGY?X$kae~}oF90A>K$Wrr@CEwcZ`8C+>vvU2lc~wxk?^_?gJeSWPktoVWNg}Kr=zZI>MT$ z;T-ZMNX8yo`)5#mpUhPxzla*nhho%*u(f-QurEvEkuatR(<4D1Ga*mDDL1~?1c0-gh(fHpvPU<5E3m<0^- z^c(?J1MmLELmPv)JtS#d6W+{PXGtq0J@MpkNg74om$#JA3V{Ax*^684XkRBtl-Lqe^B@gfV~Z@`W?^+ss# z$+t?_?~aONHl73Y$|K~?jF~n*2i!>{^egC7u-Eo<1%IaH5gH9t+W2${%A14Bz)O>x zm`7+5Q0{&w;6@2XvOMMFJ|@b1@obFq7s|Zx5YNE#h>||Q5};i$pSipO*baOR*4;mI zGNSK=_5Jb)b+Nv|a#M&Ez?R5-2It+4k@-5HC-6C#ueH8Y9-#*73l?c1?pk6DJydRU zG9%%^a(@Z<9?_TC{*g!MjrA3l*{cEt$1KB#q3yh~-n=?0;@w)SkwSE{=RfTD%5U4- zwXxzW24}1$Xmz&cWZy^DV`QA&;WmDdN9c-GdJa=^2*u#*C`**-Z{Bpco=51ReQ$@k zIpt|fVV<4vzpT`a5~>DH*mxkYFwuAx0PXw=w0{U(5G=Q47bw@FTP^W*ko4FR-&09l z6OyGX+&)M;ZP~o3{cF7vWMxYEvCI?LlbG?lNGeO%H^D9h4)-Nhq!4n7k9(vxw@`65 z#JukCRnpYd0u8H!-Ss8IjzkaSwTa%Z;IP`?mqI9eqeq^SGm^%aNW^`Tb&@_7^LQ#D z*M9~|y67o$uHGkUx?iLRt+k{9=7rmyY<=jN7@?GlVn<*bunK7F%|G)linZQFvCD%PDHLkV1l~(z$gF! diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_addfolder.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_addfolder.png index b6edc8122c2f18c48ac27195843822c427c55049..84afef5ee2c0817bffdbce0c9a83217a694aa84f 100644 GIT binary patch delta 770 zcmV+d1O5EQ1)2tsB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000apaTE|000010000a00000Dh}iP z0007nNklkeCO@# z?OdVIwsr^nIuN9lhhaEHya-0Yb&zCx1U?2qu$h$LHI9&5U>UgBG0Br&6H^@9A&8fW zO)L37{1!OT`+qq1n89nBGef6V6&A zXUt4SZQ7oRDPuzh!5YMa1RsE|*rcn$J}#ewaqtK%fPYuOHVDhQw6Yz^|BiV&Kt<=1 z#~0bt1qR2!XYolAh}{PB;7(FbqvLSQ0b}|QxEpw-+w>tFSMdd0;Rs*3|r)mXtGB5(~Hz51L*Mvj9WB0QX z$)2+%zofrc0h8ZilDxff* zw+te0F(N(}L68grug;iG<|W8{I^YYPACnOi*P+PUzyx(at`PkIa^ic<27V*NO)~_w z?D!#zU_NV8M><4~IX@3KZPhlh9Mp_S*KI@bOM77Ki5<=Nj!6Pg(aA0jXps{dK~cO7 zZh|B59>{US`AADmnpGcRC2x`a7(K#D1W~i#RF${FT^{mf{#ZkWylub0SrZjS{su)J zS*<$6^e`qT0`qUAHYMx5Y~cET6tl9o>sr-;b7J~^-nb=pZ2$lO07*qoM6N<$f-J{N AY5)KL delta 686 zcmV;f0#W^%2F3-DB!2{FK}|sb0I`n?{9y$E00MnUL_t(o3GJ9WNE}fVhFv2@i2)O= z#0L?Jpq)W1MAA_yjpAc&wA7FvjbJZvm%lr#YgiDDtf z_51aX>^yd6XXkE2*aIJD=HBzVXRfn%EGsKXsRPM6kjmwr$$w-tHw69A0=aB2nEMW& zQmND-+P+ZCOIU+Aa*nYUkVpboP2d%x4w}e+&<7z|s+sG63b=$`I<uOKS! zghlC);D0J$4~A_P6PS-eRzRY2b$^)To>qGh zoq5wf1B(O1FNaN#=rihx?}Wx+13CAh7S3Q6eu8b$5q1KcgWx>-aVjtgMGe6f{4e=N zqVUfx40_<8$Q4}>UtcQsCj{Rk^R^6Q{Z_R=q$jP{H{xFZ6ZpYn(${WD9&ZP30O9KC Up>0p4JOBUy07*qoM6N<$fw$y&5|+wu9HJwKjv&h!7D|G&;P{-l)S~!9Fd+kZVv)AVa>kAE_>Q{P> zJ6^luO=e^a(wmOhHh;l5D(LT>k>mvM>l(ospgTu*(jd46+6tJXJKvpaW-tVzE|8aC zfM+DA9Sn^}2cI{vHh3u|P5iOrO)traFhJCf>!NdOgJ;2GumH3G6|x;@wpKISqqNgY zxr)U|jDMENX67C3P5wyqYk}?;lOEsiw+V=yAq^HEFkX=Mj70CNf?{ki?7BjFfkbzZ zj(v$>j~&nMh?2x2gIxz%mf~)aFW<$kWjx`0;@#rfsZ`Q}7CTn$nK<$NiEj2{vZMul zb&1-*apL>G#RW$Bk{0yT5wx%eYNN=o>y(*Tj(_z{zjuufW+>3*HkpEnX#*xYO`*@0 zX6(Z*=p|a8BPD`eC-MMTU*ePjN9?Y*B;s`Gndmfa26aG%><3niPS^&^ORY&xT2KSA z10YUR%%Rjp_z4gsDo8oR&H_C^0~d>ysqD-UvmEpTyCVE@k}sK`1zA1V0}g`@un`3J zjDMe}HgQLQB={+-ci9h1BB&xE zVv>Ifge4OFVKCnAL>d2rZWr9R*w@0;3S-uQIeFG}k6(nJXNImS4ZanqZlHfQCVElZ z%le)f(fXjXRr1Ue+@#1Zn~=~@+SLD*Oclg(47w%x99o*-Z5axzpzRV|3qiJmoD)a& Y2UUIIb!}J42LJ#707*qoM6N<$f;c3|?EnA( delta 965 zcmV;$13LVG2-^pcB!2{FK}|sb0I`n?{9y$E00WXqL_t(o3GJ6(XwFd>$KQACPnd<# zN-~+6F@H+Aq1NPYxKNY}MM=tqNFg^%AiQvSD0xxi#bXt7x{ zug~*(&N}aQ&hPho-`?K2@YHwDbDlrn=e*~4e&_rai~W}@t$#owk(doGg7;t$440oc zo`Jm}o~5>K8X9Z@-#}DpA#t*sE!aEamq0X)lDVKjORLeR)gDB*fT!S>`iv^USOY56 zaSvSw5<2cgcf{lI-#QLfOr#dH1D|{$usn!`cp^fff0|uvJ})t1PKaMr0$Z^%J_=!$JI>ryauB*?f;yeoN9cqo?gi$8oa*Xe`KDkSPC0X2 zQl-v(SI`u@Vo4v5NZzOpO<2K-1=ZM(>A8p0oX~HbaT-L~)Q8A3a?nLYuncr-QYX5| zlUGb^4_M@iM}5okA$SaoT)>bMJ9#;yw}LKUWPh!*SrjJ>p(`Xj&S39TqCRvx2>n>oe52%t$Q84jM|xeH@K&JC z0{efonT%!c4FXvVBhvS1azJ4bXaw01`EiE#NScJrDW9Aa*T5vle>HG!I{ZEQLCDPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1lu1NER9FeUm|uw0RTRf}++{ON zF)ImC6DtwYBna#wO^VEi$UlS%NmMI=NDpd?h)PLM384uQK7<94)r#PY7$HTz6oT4H zW`;{!YGql9R?525=R0%G?3p{i`R$Cmb>K7i+;hJ7{O;Vn_xJnF7Fq^r#bR*=C6>T= z_#8S5g~CPJ|Ie7jL|6}9klNn_K7=Qs?LV6p#Ye+(_ze0Wn)<)Rfcd}Dz6lQw$;2qs z4hvxq`~#_Jg|t#yv0?Byya$&dwG#w3z+FvEjsXRj4Ljiir1lemt)RV=Y2-%0GWZ0p zLo}_XR=ER4Wft%tf+wIGQoBgt9e5OmxxSGW{Wy3TjzMbLZ=0dECc!cA7r0%+*$0bZ zcq11dNJE|bL92TPqAjW!OLl%xY{I{-MpP$&b~4;uCtVXptNk_?u7GS?mPjYaP4|?B zi~*xSCrsq;iKL>9p(*b0RQ%iB;X&H-!5_$d34vBq$Zy69CNBD*IH9o?yu_XMstfX3 zzS%A0R|U-~i-l0Gn>!(2p=MTRC7096^cnIMYt(!}G`?gWQ0LZisO1l9a~oD-1cEgt z`j}S8)>y9G%l~Y*^fi~oXN}L&m(evXTwp4lX>e~qvD-m^|JOja7_`#ej5$erD$vDN zP%K)_gepl2>;>78N)U&>j%S{Ax*kzyo{-$!pluD>jUJCH)N8>QQ|N2>5hkdEorit! z9cTp(f!hk4_dzQ;1)c)mo2tBk)@k^icV7&=xQ`R$WR@ntzjIY=RdJc*M)2v6+2z@A?4RIZ;Hv6*j>$ zQ1#6domO%wERS*d#G0Paoea7JGX2cCDJ?pfKJ{`ZRBz+1<)W|Kh4<4gu-FzZ&Ab_R_m%-)(y4wdM}YNisHf59JIkrzoI1xPILE?Ets<70jzQ zm|Wfo9NdKbqFm%5I04agFM1xdd0S{72K||}{40HIY>5xegzSP^tu62;MAM@t{q6o% zoQV7AHrha)s-ZCoj)c|lgB6dB_SqXSGV5x@wb4&Q<_6BZ4`mg~icz$Uxc;3dw9${k g4(?e$)83H%3sc`aF=cTFv;Y7A07*qoM6N<$f(XZB(EtDd literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_admins.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_admins.png new file mode 100644 index 0000000000000000000000000000000000000000..beaa00ac5f7d1d0a004dc58f5b213c2d5c3e16c1 GIT binary patch literal 1302 zcmV+x1?l>UP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1fJsC_R9FeMm}{twX%xrLb{k0w z9h$}*_oAFIB02ehe2{AjB|a;klzgH1V8{rW8E0xlQYe#}(Il7LJ|J>5X~YMYL^`g` z%u$2mu;=&R=UIEN{oeN8j#>3P&wAGSul3&F_t~eet_zmW=cmFRxDRb`5mrI}F0`$! zl#PvqO>h^|>@A67umF12wuLIxG#v=5;R-~pgTP7n2_8k0%wNEdFu96NrAuhg804*z!n%=sS%n!upCZ-&Z4)E zOwPkf=$_h((_>j%+HL*-ke*#9S!Tt!jsA zIYS%6=2Y`C_!i6DlaPED#>6u;FeG19>cm;-4mvY)f_5k4j^NKxPMR>!8e(Uthf~`- z=A(<%(Rc{+c`({B0^g2G2ha?%b)W+~1A1B?Fy3_>&*gHh%+0JvhXslw#r9_2RSe<~ zKLc5|!SskWWC_WgHLXVG`u@qDS=^r?+e;slZZFIPy9DR(e+N5qodvUPIKP0M&H4DV zLh=LS&%w9B-q39pD30u5A-ST zQn)Yll~+zC?cAuw=Hy;Ugz2^@n1353Y?0#$xHBp(a z$RL6PLgKawl6I&c;(8M#jKf0gmgUe-5;kYF+%Ol5x_(WSxI=%s3O!Y6HZCM?u@ht9 z81ojmE?+Tx+ac42lCojCo0+~8qESz=ves6A_nePgH070($?sk2Q1Xc1 zkN}G>JxoUONI}y16h+@hy6zK0-Vd*tY!1ke+C=MbBZ3AeN?#!$TIPhStbvW>R=B*L zpxvOGvtaT=%$`K1`4yJ8k=PGP1Z%W-Y($_{oV}0q^QG(uAM+-74*Q`Y)*u9w3mUyd zr+FRoM$n~{o$|RvACZ3Cne9mwePWQNI^fHpxjw#n04f_o|3O__xuUXyo;^T69L#oB zt_lh&M!*xRWL#5qae|QgZeS0L+Ma{Nr!S$rGem*jF;Bs4J5J3%iKzJsE`ZrpoW7|W z&Pq@?4s>Ih-Nw;6x++7v5PZGfJ!KC{RgJue2BY8-n0>&}V>`s_yiaa8_)Ekz-wd@~ zCg0TiG}1kwpTcjzOizh^%N5@v`1SBT*fIsTuvA&>`+YW_=DM#=Ybz1E!2CC8b8-Dc z;ShZN*>)hU5gVBRhv7XWnRa?YTK)ePXQM-57qq}1a1?9}{Yl&X4-?5CdmAN;1^@s6 M07*qoM6N<$f};3YM*si- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_allowspeak.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_allowspeak.png index b413e57c02bd96f8dde4e5b4dfcf2f99ae99af41..5a62194e23d49f93ea0db118f7619e3e61bd92f8 100644 GIT binary patch delta 922 zcmV;L17-Z62#pAkfq!>NL_t(o3GJ3mNL5h~$KT76>GiQLZYr$iiCHB50A& zCO1Y%L9}Zjv~3sCA_7}fRMaM-O}O&|3=^U@LEm4Zg$fl)W!ddFF>@KO_uh9kg}?^> z%$)!E&zyPZ-gDl~K&p8)ybMfE6YTet||`g>f;s4`f%ug^6o{*;SvD8k6C7rj_yPXaZaV_zc8;fGX1v zuLaVmm^|L_oqr|1DI_L2<(8A^5y?Aa)|x0}0#OYZQ*pc3!d+8dT)oW^?{s{F@rfSs z6-|)GG+}3=iD=HNUfepHCoTscgv7cXpJ&|rhYf-|#)n&Ig!8*J?#bu#y^c=`Z@UT0 z&5=6qa8NK{sCDVq0U8acK=bQ&D(oEGfZPJKl1Qs;~e*;9}d!e#ga!JZrgu%~DSR zq7v{_#h>uSzAEE;IyZn1H-WfQ`A)BojS-dtxq-#xo~elw!b>y$XrJ*q<_-e07Mp`u z3V!OuIe+6*J>oh|5GVJH9BsK}rP+<(2(Xsv$bRV62D+DuQD)iz(a wKF_!U)B`)Jg_ANWX0mq17XHg-*$(^$xDzf^fzIta`2YX_07*qoM6N<$f-qUNCIA2c delta 941 zcmV;e15*5r2%rd%fq#lgL_t(o3GJ9mNL5i3hP@iSw3I-LGLjyHNGj)nG*`hjfQ?S`9Y2~% zrKVgS>TD5hG^}RsMP|%}HkZ-R1O~uw5I5Dt9Sj|awg$WeX4gY|wU|yYXPrg7G@YS? z(N=>YH*Xr>kl2ezi!qxg=mE{3%0aPe;>;q8qNq#q3=D!@{z1vrZ@mwFE+kmv%VO2!U+6jpUcJ&x+Hc3_hgBLfF4~wnR@j^W{tdG1SW2)5yUAl4rGt59`O*3 z8G7MQbA&9CAlE%%*62$q9xwtQzt8SF?yY*t{YDqtK7XV1O&-2b$=CWb%GhUyX!__H z_s0f|yS!dL--2TLzm~ptleWbsPPlwMXR0ROg0ush?Xw`jAM!N*3@dMNL7cPtJp6RN z1&u<8lwDeIL4VtwDvclWJNV_*{TJI1=>tywXQ+JRl_ zr^Kl|vgIjp@K#`-9p8xeF3*t*9EAl80@+t^I4;XMRfskt($jJbYyqL)-TE&61fGL_ zHn~ZBjxk?PS}VAP=2ecsFCgv$Q(&>C8D0MD&^UXB7;uLs|5Y(f{u=xY9JUsnK07Ks zeSa@!A^(S$C&~#~jK4wYbMzdj$Pp$K)Z=>Xla@4nC7~@!(@+UMs}q|9bx}p>nP#|I zxXf(-tQ8+fLyNkcwG~%~v&?I=q4<{IPQ=}=aTdQOxG_PfSwJ&o-3jt6tv9cIj|_7I z&SaTI25#1{8)L^voT>%cUhpVUUAn+#+9ol=CU8oZ?B63xIXmpv{cEZ}_^XJ%NC!Ti P00000NkvXXu0mjf8uG-A diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_archive.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_archive.png index 8a166b183597417ac56a1bc8a23a4b6680ccd093..c13e8d9f3acfdf2557060e8211df49795134bb65 100644 GIT binary patch delta 791 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 NAWv66mvv4FO#o7o)Aj%W literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_arrowright.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_arrowright.png index 8faa67935e7a728577d8232864c18a86c4bc63c9..9395fb7a16ccfb524fb4bb62e1b759d1d4bc4c15 100644 GIT binary patch delta 301 zcmeytc!FtyNGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mo4EMP{kK?=3_9{&MSn><|{Ln1iePK)JgP!MR@%v>_#-Y$pjueYAN z#JcHo3FBuRYvB&nJAJ!L{8% zsr|R7`?b_G;j??@3QWpu>Y3rP+U$huwe^~%e3IV&%ICdSo>qHzT4lk?*W%lF*!E3j d@p!PDCGV`ee_tu{2ThPaJYD@<);T3K0RXn;Vz&SQ delta 220 zcmV<203-j%0{8)tB!2{FK}|sb0I`n?{9y$E006H^L_t(o3GJ5c3VIIellv)axZ8&bmj{^#Iy1-*Mt* zu6lrVGXVHN3f3120D^fai8lxpWEOU4DzFj@{LPfP&c!~uC{>m)wOco9UDOsUP?hxw zJ6fB*Pgw@0wf#^gVL~TQgl1A^G!8q%wI4oE^|r%YC-nb;sBv1@TsrxT255i=3Jly+ W7M%p2S25%O0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0q)9|UR9Fe+m`O-hQ54732Fry_ z6qZ5+WdqV8j9e7736drvTC{1v0ttek7R{R$l@vq~LMlo&yOoJjv z0r~^Hhj(xn>T`2*W9ZBalPG}Aa38v$FVaHLDJaj_j7X-5Y=u@xmR}fTZ-828f-evz z*D$6xF%pzPV^VhY_rrV`5_aX-OJF@*gbpzIO=B+%3LDp>jX|s7E0{c^u>$(_+!0?4 zN8me{+@>+E#|ikI1h27?Xgx36pUrJ$uX(FGPJ#|8QXRYIp5)rOuI2ujgF zu3>Q6<(AT&8XB1n=LGl+5-nFnWN?ZOa^}GWFgX;Niiooogf$; zO-5>$SB}ndpJTD-7=Q+KpSs!&DwpSKmN~7BFu0!1nI(0@<(rOzHY#$ud)VOpxe37>wUs_AX_)V_1 z)aZC|8atd(#{-=P2TZ7E@1k!iYD;#{%|JVP*0u~+BUvqThR2?RS!%;;1<4i9k>v)p z=EN&@|Jj&O4%>0()Uu^_)J(`6-J#AUS5s%M!~+|KiD1XgJJD$}{TupRj-#p~fUiAn} z^eEK8;IIr~#-#+B{g!_aN%Z1e3pz7Bgj#5VcIbjJpl|)Du+UM0Hff`=juXXIGxVw{ zS__gE@HSi872v;8x(T9pNtCqX*bTjZhxup7fLXqbx~(%|3)K7UYWlxIlU!a`-}slI z8u~mDErBNtJV9rJX9zYrFdc+_FcN0Nc+f7bLz_+u`ghD*sAFlmj}vrK5+-yV!sG?U zZD1$Ml=AmwkUhK>yOV|<&QH+jc+Qo+r2T)&A3d@6TcW*)iU0rr07*qoM6N<$g82~F Ag#Z8m literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_autodelete.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_autodelete.png index 33cb8df2c835d8706fd69a05e6f9455824b83cdb..d80d1e9f16b26f5a2c95ce3b5ce8aaf1f5348c02 100644 GIT binary patch delta 835 zcmV-J1HAm82e${1fqx-ML_t(o3GJ9YXca*a$8$;izz;CI5EB&?320#BRbg{P0g8d!mqh4aAz7qSP-2XTc9}Cf$&n6JG;*Tz|PZMsgESJC;cdBoL4l{gn}t z#j(C%21;kADLigO#I2p34WCgX&);<^Huf98%~wgj2OI*+Egr#fAU0(sJpuUg!aWRh z-QqB|F;7{Xf_2YuFIrp@H%#)SmGlItNnRBrQIi=OTw~xoGX*zw2-(l5>AlXqr$KB3 z#RpWtcz?OV``H`Kq~fkq<+N)u*^oA(jVZ_He>#%GH1oz0cZI&2V4IcX*EaeLT{f3p zUNhsCuqOb22)qY_7L8!Tvy57qEx|2`HK;FuU@7a6Z;Zk@nkr?b&NDD$?E_U%f1s^8 zlBK@OtN~1bakc7jmMx^kUtLRX7C((!;-U7*Yr)#+UF~kPI1jsU(!u4Cq z@jPuqe1!LI)be+cVj^7R-w)YWuTMz?Pn-J8VL-VB|L^~y;Lj_8@E37oPzk@t>AL^` N002ovPDHLkV1i?Xf{OqE delta 812 zcmV+{1JnGs2cQR#fqx1~L_t(o3GJ9YXcR#d$FouVj3GfpP|zYDh$zNFi(q3D6%j@4 z1q%y%kx1YWOaz-iihv)Tjje^Kg(AU96q|?FD@x;VY1Y!~STsTJ0io23qvudr1MXNg#sx4Ax?@G)_JT{`E*Of<^YRdIo6&k0^b!kBqO%_&?99Z8hNAtw5fN$VrhR5V}Ae+ww0~7G~gLg`F><9kd zKw2#X=atF1ZMiG0!>D6~EV?1YHo$)f(tFh?N0FBj%dsUBZ`_g2oP@maAcS-?YH%_y z(Zmjv9`dbGksw;|J1JCCq^H1q(R zi)zM_NGR=)kJf6C-qCHTxDf&Ug1b#E@VV$~P!Bm1K)GMQ*0|~c79zTR_Rx=8J52^( z6eS1mDEO=dV_L|iy}fFo+o#VK(5QVR^D1o`dh8H&Xd4cE@8yLMjrwPUX-Ho}zi~&3 qR3(dldvsJO@^}0@#_8$baeo8FM%?PeZ+mC}0000&UCY4D33KeXk zog!L@T4=DjLJ&mMKng*y2-h00P!J2xLJ6paib1eYf&?vs21Jq|p3i&k;Oy@G?%k!( z8+e)d=I7nH$+y|>%VfIpuTP*wt!_&0G~h_*-p_I5dUY;7X-l~Iw~|X0KS8`9LF*2oQI;7&9C4( z?D&Qg3~@$}A=v=-f}^zveM7bKT8+&*0&hF_A9G#8(;3Gow0f&% zd7B>9dc>+UL=y`%F;S}#i>=n5%$`?QcN?lVqV9yc6RI=;z7M0|64+WP?tLBKLu!Nv z-UFAx3)X$UfwAMc?@X?-KNji*7Bm$KWW=shGK zL!vAEaU-`5{J!B=VP0wlzwTxxp4)uo*HRn1+F`vcXFCx6AV&C?qybB{AqT1~xvFJ^ zv)~$d2#TP5FH-?_0km7R!P5zy^n!LaC9cT-Bmd?!+$AI$u{OTGO=(1XW`-Bxb(-S; ayXH3rQh4JN+&=XH000017}45 delta 752 zcmVKM-vEPP)))~eGl5W}iQxw$`Yg5K}~=F&DFo+~w`?kG&b zBUo?iiOtfMTYq5z-hb*3E?N~X94)A`^i}@6^EH>|RHUAFL zgpMw^;0%m0-tHR+$2Dz;i}!QE^X{U}#5zT!TrMxHsDB}Zn_&Rj^Hdp-+mE{hIs{I^ zS;#^Yj4)#kapn$c^z-B!cABWzo3VA*<*YI{t9cfTi3v9HI=itx9m0w68sHmcnh+V z@C^f`-T z-7<>5LpQ?rC4`^gR%|2e1KqYenza`TtY324 z-?HaaeGMuv)BPwsgmjRb47}WX7sm?GZFPlSdubufqC)@6T9|7Gv%3Uda6x1Vk!nF2 zW|8MuPKFhFz6^uykiN8kja&w*Z5h)q+tW!CRI@2*=@F4LJVP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0e@R3^R9Fe^mq}<8K@^5FSzIHA zBr1xD3ThC85HC512pZHF5h3Q1LlA-nTtGqbCWszHP;tkg7YQCTASi<5;EE7MFJ43u zTn4u@&SG=m}VCuE(U7)8n8A(&|zyLdqn1dSHRi@fZ2;Fb#_GXsR;x^oGXEL$Oc#6Nv@oopG=e5*Y5>;^u4s(afx9#{BRR_B zPo##l9!(A5TEQiaG3|}}G&MUpiufmTLt2lfhH;xgCy*@!YHF?qQ7o^9v>;6-fWB2H zOat@q`pzvdvO-2{5ubYSje{tW)_8BNs#oln+UY&Ti&CblTZqjr{Dl`kLX7jN^;jT(}F1a~Eq zJwW%UW#B5v&k)sri~QE*stU0hbO3FW{0*T>a2n_r3yQPd9P?lFpI7(=J2f!3lE3CL P00000NkvXXu0mjff!xEP literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_bell_unmute.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_bell_unmute.png new file mode 100644 index 0000000000000000000000000000000000000000..4142a6961901511678f8e7402c76d84d22a9c70c GIT binary patch literal 901 zcmV;01A6?4P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~?@2^KR9Fe^m%VFLQ4qzmCdL>s zAtIPY!9pw~C;>sRv9L(cGKC5$(+G;-KVYK>Y7@{-Op%C%AP51$KR}F#jYL6==weVo zqoSy2Sbyj3jCpxqcRvdu182{@GiT1dd*9pLw;dg8(dHAVR4SvOY#43xa$$Sh2oyy* z+|i%{`vc$wn98ysKLpN#W#I9L!BCc7IcnFzOK>nxlbM$(_yiQM<09r`U|xlSP<<@k zr!lz&>sf;LChM7VggxMyHU5MTn^_;@SHB;k#)rTUt38K%yq3#| z&Rc_M+%_}7_-QQvp0O_1j<}KLmRH?FeFLsze8LOx1# zoM~W5)lCOQq5e+qVSJ~Wj@Ih;e2NjBGNEW#0(c^pyUDneYRpJT2c-9ya2bhxo`g?( zKE)LM9(k-H^KP&R6#8_8uX)TB{YLA9BA;$AGoMqEnDtzWDeCT5Tv8DpiDuQ8=zdBy z1roH5$2>+{PVS=RmpqqZ1h>E&uvW1!g=KWW;_6 z=Yrw_0Y2f&WBuz2d{i2=`n!NGRQ7)N%hiWAwB9;@=Q`9@@P7Bp?Fwxux3OJ?wGD+% z_P;x!ntmoi@4B9P?g{bTu?3@TX7;Tf(+sWm51Ma=q##98FL(evjups*B}|UH5iH-{ zV3P|FcLD!~W>}f_S~DyknOVrct0q5$Q{DyN1Hmt|T8!mmeoz!Qf_=!2m{{}>H1va- zw~+kI7mA|zZxfO$Ce*X^);!~8^6~}pS6ohdC9mUK6KsHWLcfv?Etu;eP5z3-Dy_V( z`kr9}dcJ)EcCJX;Hd?@WxKt{AiLbC~Ln^Q-{X;kj_JDs6=8Rhv%NWgrt86C!X|YwS zHS3c)p?VBC&1>klCwj`fbDeNQk-VwvHPOG)qlu=O#JsL)vl}|YYM;S=TlEoq&cPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~=t)FDR9Fekm_JMuK@`SsiAtj8 zD3E~H(ij_RNi1l=o{Gla3SviPXsoE!hS;i!K^qzh3mY0^Vk~S$Ljs9^VxmFU-?uxD z%-;T+J=o)3^39u_`M&qw&Ft;YU8gf*7M-S^IF7HP?}15h2==2W`iUQoQNR?q3tob6 zpvW|?dGV%Nsf@rq@E9C}CMLdgTE!r%+%f`<5oI0R2baBwU+KRBAHhD*c4^y`_y)KG zW`Nl*IuF4Ew)CG3Hu4nH1+Rf`FSxh`>OM&1c;fq}c-=;Yh>U0keDET@qd(s`P#S9< zt@LJ!>#tsQSjgkxt*P6@H4 zCRW67ww7n)N8nC^?@lAHuYRq;TXPz@l|lg%JC5`jA9TaPn{yg-bA`eC1{EJDk8G!J zI=SH{nD~=S$MI&4P%(h!3HTvjLCa0S-vlz{oyZUvSk{cQh0J727vx&7g!pAkV>gr@ z_p-m>P10+>Q6A-!S^ka{WG}x1-ZjT5C#>buZ2)cAMwlXHxjY9>WBJodf^7rYUX!5W zqWPUD@dIf0oOau^wnBD2$W!@}6PveKA>Q)EMz(@TtTo z1tBPXb=ZOqemvuIbrY&K%?6}+(HhvbkK zf!Qvdwhw5F#btY=6frtSShq^L;dBT$dq(Fh4*7~>ruac;u4JtskIv5^+dYcvf}#IV zw3nOJk?|Cy$HF=||DV!+Wfax}L;178&s*E4sMi0Esob)<3Mue>|FEhn@GR#41A@s; U#m^^Gs{jB107*qoM6N<$f}#eM1^@s6 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_block.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_block.png index 07a7a945fb73e11936ee37f25a339ce7f0bcaabc..801d8becc7c5011c4eb0fab27e57f27c34a40e5c 100644 GIT binary patch delta 747 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~Y)M2xR9Fe^m_15EK@^4a6as>lX#^|51-Jnln=~#UZGW;M#f_+ig|5NIT0uk$ zJFyU}_?#Tvb)| zq94B05YYuga1P!;lc`QV^6f5N6r>dxfLl;%ic##svr+31MC;%Lc)O=?4EkUP$VX6K zzo||>-o&w9BY!U~K(Ga_9qR-65m-%e$tU;~r8d$>0!~`AW}~cLL{0?H60;VBdVl_56gpjmOb41w+cvqIVg_Ow z#RNgxeRd?A$MLl?j@l7+0w32ZGYTm&MuDHsDVf@8UJ_L90kgglvTe!@OM)XVCTb0S95^ dFaF2~yaRxO1HwF}9%ujn002ovPDHLkV1hW{L7V^p delta 791 zcmV+y1L*vM2CW8=BYy()NklG}H~QDcB>gZS%k#cZ(*8oa{{W`QP{_hbV3&LL8n_8O2Ks@o_Iv@b0$2}h1(v&* zi@*`!OF0=@BB|H?+kQ#=B+W|5Cf24!(pwk*SkmHR87c;}Fa~o*Qe6s=xG#`&AqG{G z6=;g2Yfj`u34b7w&yjRHHm}+x<+1=BbirrKfC<^@a$4WrbxT^HYDpg~D2)Hyaf0cT zv_{f^)2>PbG9oM3v~ylL@SN&*U#_Li$3(@TH}9e2A-`3BJSH{7M2kZw*H!HDrY8Nq-3wd}XxEBms4r;E1Go69f~* ze9s3|5xb8Tmc(V>tOmFOY_j_vU?(t?5Et*a;EPZ8TWOtTf$2^O6UEL*1N6!PH53u7 z1+F@nt_(22>VawbMj{RrwiCm4y`cz9$jn9u)8w`wX{^!O6pyjOc*iE^%RGg#R?>Yp zf$v#W&VN!KD&0o!MiNl)L$1SSClp{GlnE1juhTe?1}H41A1xqk$Y$Cz57Sv9OeiJq zOyj+z*=c}+A9kIelXN!*Grt5FY%3F4Yf@eGfm0=2cfo(kylu2fg*oB0E=#J&0u+3a zq-RcKSWo0;}B_f6#{WDbN=mo-{y{_J0}h8?ZLN V@DN&N7WDuC002ovPDHLkV1giBY8L4p?`u$D#aoJiG?C4X~f1x zM6r<|c!7n5T8OqnkXVR?!4o2ah(a(LNKC|-(`5Zk@@6yp?R&fX?QX!rfq!P+yqW*Z z_ujtmNLkrGCW&JENhXu^a2x=uz*}%5kw|o-3zAq3QM{Zg`#>G&1M9(2U}b+~?=?|VGOH3dN}Xaf_#%0|6PoIl)zHnhc!$I&-IyBmwT zq>23!NsRhSGu}gH(ZtUxs=ic1pKQeDa&r7`ekY)6{(% ztXE`xx$NlGOM`lnw3v;tw$4ipxp&>Asm(G_2{mLBHC9(VsHGrQ$>RbRRiL+%rWK{v#|0$u7M`}AQ?|(tEMP0_PD>R62KRKP~m#oY#^a)T4 zQW9#&w?YTWS^}Zok5VLRFxO3?8phJRiZ;~bno+-QRgg~umsW&G75K`Csj_M$QicE zp2TTy=r7$rkjp>{{=Tx@@W`vJz6w9X_T5%&O1e$LaiFp%eKy_*lKG(1k&U7^#A6_u zq-rqYNM51iU6H9s?k&e7>a3ZHXGVykUw@~0k-^a7ju9M?;o>4J=p& tXiTh delta 999 zcmVl0;B!2{FK}|sb0I`n?{9y$E00Xp1L_t(o3GJ6(Xw6|5$IoGmW{9m7 z6U9oD>_SPSmE=N_v=X6QxWHV93nh2lD3TUywToR4B^O*sE=EeMaA9*{w1gEl(oCCi ze7U4NnkgoYQ%n=cN3SppJL7lw^hqm3iJ4%# zn@sGFCrdo%d=7g0wa6<#$#@Ez79(h*^Z5l|3RZbBKb$<|>0The0euvuGgc7&w+fQX zBEu=LA1naBfq!V2^YHF6;1Yw@9Nnv2I}{CkPJ<;6sbp$@eXaRw{{O1cn;>;cfB zHnMoXpc@zufiKQ!w>ih*mN4zhYL*~0xIneO6%4qs6_j#gu^CRbPHA|8j|&1=(^!iLIch4rLb2 zdE5XVfNszNsx7&3KauHjxfNpEx5p_c9mnKb2)qOA9@7J)w?Hjj@3o|v>YXAqsrjV0 zfCO5Eo_{>i=TVmU>i8hsE>fpTB#BwXKrdYtBYQg#Re_Uf$^GPZ$oAd$vHRq;l&ofi z3AQ2Df%DQqtw2R~WB(}yWQThu@=Z`7C3FCv>*P>gy@pmw86=$Qfl<9Vp;!mz**Ffz z|E?wSc(Y;|&jEu@f5p$2+aceUky%kkW)NSn4u4t1bA)4Vpo@04lXb2#WalHJD5B8k z<@$!ai-ir*6?NLqO&9V#&o5iVIk;unUhzicssSCK3+TM13HdBA+G+YA$E#=sg(e_> z6&P^UJPG+s=9Y!#JB_l;8T8E+O;ldzsu$ZD?Om9aeA+_$_Rf25ay#T7#G1mU9Mk&( z9)G&o_4JM19i?Lh<-k7Vo1`lSk#h$y(#KnTBI>D&?19^U$4`*sNsbEe$>r>aSLV1x z4+&^=!D1Jqy`!zfmw`u0 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_bluetooth.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_bluetooth.png new file mode 100644 index 0000000000000000000000000000000000000000..ae03d7121f5e294c8a5a88e14202beaf8126d9dd GIT binary patch literal 843 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JhPd7srqY z&bQNTGejIkj&J_R%<9O~0kc*)&HDgw7q)v>9ifszphnvXPqrpc#)Q| z+VFgQ=if84ONxJI#6PeOIJ|wIqA1g^tM?ze%rgI`9U$1dcun(0R_~|luH}S3jhho0a=N)T6~1ZyAnG%3QO<^ssoPmBS*n_S-2Nm;1an`KIkxSvcJUI~ zPqml7+_9aaa#C65cj7VD9bONjC%iuW$M1vrw<+C$dloj#HQ-g-9(c{^6<4A?*L{aY zwIvHHL>*b0%9{Rj$X&YLwzk7}c`;jEcn|m6OzG&4(^O_Z==5HecCSR$c|S*#U}s#1 zvUZ${!~~Vs5A9lt&KlRa*$ez~dp$YF)Te^=$E#|q>cy((xqL3My!$bA!T#3VNW02! zOZV*Bnv|2WL3_ppzxwio?)#~tRtZ8i8+re6KVJDGbO(>hZN~QsQ<5c0-g$mmHn%@c z#Pi!hb%UQ7U6U5ex9F!WmhBA_Ian(B`MhcE($)K}+}QPyc}CCTAJ?ZmG8Ot@@uxtt zq{g-&N z$TOeSJ;-3*uzQR5#5}c^N6crMr$*`?Eoq$VZT!MEQ6VQ(yTw=jjNpb)SKa$9Dqq&G z_GgIIpLekM#?)s$wSkUbZa-k0F(trn*-y8P6W`Q3zOV%bY<|Eu7tcAOQ(CG_)V_(W zT5r7Whpd%$;k3C+c1iwPl&t(u+-kMLO-+aYD_=RU*n2HHJFj@nPNt3F59AA9oR8b? Sxj7D$kUd@fT-G@yGywp!!ed?l literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/blur_linear.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_blur_linear.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-hdpi/blur_linear.png rename to TMessagesProj/src/main/res/drawable-hdpi/msg_blur_linear.png diff --git a/TMessagesProj/src/main/res/drawable-hdpi/blur_off.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_blur_off.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-hdpi/blur_off.png rename to TMessagesProj/src/main/res/drawable-hdpi/msg_blur_off.png diff --git a/TMessagesProj/src/main/res/drawable-hdpi/blur_radial.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_blur_radial.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-hdpi/blur_radial.png rename to TMessagesProj/src/main/res/drawable-hdpi/msg_blur_radial.png diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_bots.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_bots.png new file mode 100644 index 0000000000000000000000000000000000000000..9b631b865c73a2c308ef730aff70b74c179bbafe GIT binary patch literal 862 zcmV-k1EKthP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~$Vo&&R9Fe^mb+^eQ4q%W8sh_E zVPQaRgkWryXrmDf_#cRctpxH1qzLKKsUYbjooExm%9IvCqF9PxqoT2jS_tBUsQBRe z`!+i=xx0JLxz{Wx+<}joGmr1gp2zNHSzrFM6=?O^Z@b-A?J;l!94L6+pr3=styZgD z_?lHTG7RRy8mJS+lr!9DH%u@MK7&+I?sPXzC2bj`yCA&|E;#ZJ*el=__yh*QK5!fy z1)lpBr}s~2HQiigliC6B!12u~ zi*adQn`FPE@wT~7W9XKg1iQ@{)5-;>R13x{^8H-7oo`u1VwLL*&W8#xiBuzED-GP|^xZ|CbeJZ>guu=BLDX=SPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~rAb6VR9Fe^n7wOMK@`PzqeM^< ztWqgNNMjK3qqT{J2!=G4k~W=xLnR)Lm+v)tbF|0tZ*SjE$VXFEmte8Dop>a`D^;6bn%#v}= zAit5dQBb1-s^n}zY{7Ju@Q40E6pQ^R-07fo2fPA{0|TWUhznpJyaDHPJjS00sT{`c zf&(CXpUTU|A+7}a@#OXNYb_aSj z9h=}SX$zKmNV^3-TK_ifb#Ti1?`ZFLyWJnwZ@00#rU~|$>y7FRiUEzeZB%nw>7%YQ z8gLx^r8ausZHCT^t! z<2am8^lyT%aKb7P(?Nd(E(6&Pcz)uXk*F=%0dDg9OO3BbTlOr-6kL=W7;rtE{<6j5 zX4%K%Z<+4;k`I_)v=R}g#N8z6dz2_&D;eyxJG3u=`tedK=BB09mg&(hHP00{7+doN z$LFx<2o38ymP1`!8U;<(W3S37N}mI_zw%-%e(bFvJ+lA))4`HxyTS*ScIc0*xYE!~ zH8zCSfb1LSzb5ciqz-!a=Z82zT-jQqf)H2@GRGHv)kiYuTanJ{s3J3n_{UUl?JFY* zK@t~8Lnh6cp|v1Qf!9F4r?bT{p8b)p$)#ah((G^j(1q0z5T65Xb9MQ3<84%WHku^% zqj0&~MnUDXjU$u2(mx-2hQ@z3v{JJbH5tXUaz~Raas(V?By7MZ9A*Fj002ovPDHLk FV1kvPXQcoD literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_brightness_low.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_brightness_low.png new file mode 100644 index 0000000000000000000000000000000000000000..b438294a85055f4911597beb28a3ea1466c1a9ce GIT binary patch literal 596 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`**;Gf$B+ol zx6=&$4jV|cN*{4p?#07%ceUJtg06XsUqy5>ACSlkGIS8v3ocD`NlHj|RH|8jBQR>t zmBN6@UjLRZ|FiM`_cwcX)Zco2w1dxu-S0r7&gr0q!qKV9$_dF=N`ljUS)(3){=vP0 zDfv2^gnn)6nY&Hp8wv`WkM$@_e^*y*a_| z@Z4p+T6tQ0Oz|?etv?;r?_a$AJoKKkUt@2`(K|1$FNp}BRG(eCPDJ?d-^I@_S*-Ot zd--j|ncC|0XHu7MjH`7k{Nw!gmWcGrYv=FnxRRHAWU5^SOa6mnIjp(Kxh#uj=OU(lpPQ_g#D3ER%{Cr2Syht2r8yZSm+_ZDm|3N8B_~qvgxC z=gwObP0l+XkKkUsi_ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_calendar.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_calendar.png index 2d9cf49b7793e5d58c50f62db7536d5fdc993f90..e386d1946ca6ec3d5b3919da9e2348bfe43b4cf8 100644 GIT binary patch delta 792 zcmV+z1Lyp;2CfE>BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~m`OxIR9Fesm%VEhQ4q!R5Rl#RqEP2cib``8zmwx%+W=`IGjO*8FX2?BYHMuEDsojPh#m9dr-%)_ z{W$JPG%iy3pnuoveTWjEU^}=E+O+qGpNSo4vCT<5Z4I@zawteItmql5JNwGI7y^1z z;Hv3s(eafVq~BI>yPP>*7HtjX>{dv{|CRNO^eaUEmpBizuj}_s$p#ZCR)?D{G0>tr z=%&}08~xwiq1>CAt9WFHxuCk7L3Dw4Jn==*>VJv!_B8(PBEB)ldE z+GDEk67{g-IJsl>2l{OF(_x*`%xlZe@@%-H%N1B|))H^B1pmdjN>X10mnag?HIN^& z4HEY_hE3KLa2e=J_c~YtMW&ql8dgoQF~m{u1Ao-Dc_~t)|IDjayvcec+etB?oJ_yA zsVpb8hoGTWz$Xx6`c$5CBKU{FH?Qz1{#}E7-`=u0=xSSAX>uGq_d93&p|{rsbu!d0 z8r=YE;EO@NV#+N6XWa}{bp%Y~54FzTJ?K@X?d83p^pSd?y-qch8RQ%|Tce~~>L2x) W&=Cg2Q`#v20000fI(nMl%|3p7-6zz>#qXafp0}7v<$dz zW^9Txolj_%^?y%+Pemr<@W3415vq+7@}umh^<^25!Ga{`B0uAVqQbt|zLUdH5}|O| zJ5&KR84#-SgJ?8__5nLHAQU9YXHkU8t&Iz!2;BubGI*DB>Vv?f(Gt21oXLQY!+|{S z{f($7%lixd0WO`~2YP^eamU0m%>YC8HE_}Pbvy{Uz<;O*mfE-zc$SY$mV`C|t-wMr z^SkWa4V(ws3MODH4IGZAtPpc$>$y<*@=elUXzrS%X``ta(_)7gNpEf32rLF#fXBAx zeCce~8k#BTy`Aw=(!2}_ZM`$wi~_Rrt#^+9-Cyw8 zJqK0+TTNR@YHC-KUb4?Y&J0t5ZNRCRJ!^ml8$XIYSyHp4;S^V({T3xp@(b)<_V?uUpNptgFX^fk{U}zOAgNB$TuBw7GmnNytsVb41a5%s;k12d z99iL9hwulC#c$XIvM~#o)yI@$Fs_Dx0Z_v?@Gbg7LIgg>I)5CTzJ(LJ?zE??7}&ty z;Zqwq8qFkH0t{f*JNS(s_>7V&ef#*-;u-*V@OuyRf$|nR;nT-)frKcf**fmc7lB}H zBq%pYWOQG(7ut}!jwo;jcm{~CvJx>1_Y z@YFN5>QffpIe%x&q3XVHXQ$9Ip~MT?=~G$*aC&5^gkB-zLo_mTfJdI&rBT?~Em=uO zmq_EHkSd~aQAichxG1EGXsiki9tm_(rr3@h#_3=+p*K&)bMMq<9LCw_!}sOlXKFnU z)kt#(pU16(nn9(D-piOn&yZBOxuS0Oa#T+?VvW1G_8YP*4Kq{V2Vj3Yz>^QG(EtDd M07*qoM6N<$f_;3-od5s; delta 420 zcmV;V0bBl=1e*kqfq#WbL_t(o3GG+0Zo)7S#i%MHGg7y-kBFWGjHLQ`tUpg zLp}okJAdB8eqx*l#6RPCu9W&_ez%FB1lRy=HOiexRg^w55br=-06i(dqwg2F?xEC| zGbaj~7+HSMzW|rcfCht<3wQ-6H?>J^I7sV^s`a>*d>{e&$7YUoF@?0t28OgMl081# z+;*;QYN?>@;D0HM;0lsWsSml`Tf4cZWFgrtO0a}_j$njfVI4-Ra3 zTBebdD!3(!1xd@qeNiE0?6Xj4V=BLr-oTU3=C*THr^WwF+h=Mz zr&pe-b7v7M6XdXN9j2&o?qzl{p%lNl`nsdhUF;KRb{%uIMa4cu1^xi9oQfQg5^*g6 O0000|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Jfc;7srqY z&bQOgcl#zv9Dm+rRHrj#(M1uXDSz~qswk&g>P%_)W6E_Ro7>eed_a^OoC}FVDU! zn~~416?uBH%1y`rnH$7z%whQ_c4t+HR{4jg5=myw`3mRTl2>kAzW%uTQBkQ|vTsjV z{9rw^%`vROa>J~-zY>@)+BD_0ti5>ta>5sRuH+(iX*TOC5fcQThrW2N{PNP3A3fRn zWqXoMyf1Kz*Dij%^um75TOnOs(^b4D)EQZyh`tjOXdmCc@9{I?D^114X^Q<$%NB+l zJG}1it&cmV9Io-Zt`YH8=AeJW{Dtp1_pMBE33lDoI3dFCQ6IDLXU=`LQJ=yZJ%34@ zSavX`SM_B2pL=21i@r_%kt2|}j_anlX=Yr(Bz@-hKD>5bseaiRyHd>>Z-=$UZ!p{U zW!96T{|n!oQu<)@=2CS{{pBT_tOW{HI3~?z2)virI*(g$`ckzUXPvsa{pN)iI-hWQ z)YrtU_|G8yO;ViRH6DXHt~JcR>MlL+d1zVFB=N0lQRD@W4MKYu)4~;JPH(CU{kq<4 zV{5%zeYJQi!>>JaOE~imSO497(T;1)s`~c+=H(BRJ!W_1KXd*$W9J-(?1s=n)e4TX zY{9trDME_Dq4ys*Uwp?ZeV{bq+COvgiPM?`yF0G;^)%=&%on@AX@ZfN#Iuuczc2bf zQ`p1wmCcD??L|iV2HATS9Ne?B^*F~qxjW4Fz8LM}4mn)nEZwuOqDe>Cv+V%$gl$@~ z$q$4s%n5zKV{kjma8bpkH!N0LBDbG%nK8e~`$4JJ)78&qol`;+01EtO AivR!s literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_calls_14.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_calls_14.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6658ecf04287bd87ee8b2f8b754ceb99e7e990 GIT binary patch literal 1101 zcmV-T1hV^yP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0w@E}nR9Fe^mrF=hQ51%~nmrVI zV3P_9?4dQt3@IqeK|zfwA_$9!C<>xUgCBZLf3pIrrtwYaSmLY9GVKyp4HA_m+_Fw$o4 zBDN+{A~b}50VG$AuwSUvPI1m_M*5nhTE^iG4Uj=B1C zK9~)XLQ(@TIhthtS`a#Y4_&}8dQ&vU#&9uk*u_fS2US3QqdL`K8Q2BvU%6oU2@O#K zUIUX47(E`e2$SQX`ah1=-7gqkZzSPLcrojRc(^nl0I96|>YT2SE4!(hVYgg3a9 z4kqZ#BR#)RCR+rm(q+jHZi1-Dmnlc}!Y3+S@pL{C>%b5g0F(U~#=5t3&zPte1QT&( zk(`D2)WC|H>T@HqNooa>L11@JBA0Qq2t=oE571E;WZQ{s_9wz$4@|cBTuz&;CZJy< zxfD&n*O6f2@s>1Pi{m z0RKM6NonV|M`J=`0&2hyAklxlCKTWX`19T&t3&Pq@DoVBgL>mqG~{JPIoX^N;2iMT zddPM+)I)wP@*9CI>YmR9HUZ^8+bFph5NQnfyiZxQ3^nXWX+AyN!-8|E7$+&c5spsu zL*Dn0UxRsSZ8CK5_^{Ux#m@8+o_ls$lNn0)og8awGZwtt# zS(M(j^{Dul$AvzLOoDaz-&=#mqU~kPa~0h5Z~yOB-CxjCoc490r}J1#qc_15&rX{3 zM7wJ=owlt>rmz;Z^~U%TNOa##w;BAt(M`G(;t`nW0zRVOIlE9w@7qBWWACLG&txpl zqBa73>W;POefn^8A)y^IlE4|*x~X-XXPLi1x}Q2amDkys?gG^uFEhRa!4CWZ51(C) T!7zT+00000NkvXXu0mjfJrLPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0c1c7*R9Fe^mrF=gVHAKJvq;TE zlpYj4NC*V!9keOvLG-Y&kf22t1uc3|)IxG42tl;4jV(gMpd{L45Cui{ShQ&2LNMqd zVj_W|puH?}`p)p5;mqyM%)L_yf(O1i=Rf~B=brn|-2cCml{F=kYy~3TexuRoOnh6Q z0ye;0D1;C22HK!C5{Z09|6ie*8W@6fGD5&P_~VBDw!?&iTwoOipTjIy_!+tjhG8+t ziiuWvgi* z%^^F$eh(W#pI%wzB~Xt~>fM8DPz%12s-aPnF~iu_>|ikF9Ia^CHbi7271;{iAPvk1 zl|D7RI>+lU;}ympGufb7-Eqj*yu*>5CiA|{c2}Y9+0&5Dt0FlnXNdyvK z3d53!48k24mjNQNU}6c|&M`MJ6nq zNwWNwdO_r6m~7%#LXRYRlMLc3%k^1`P3O3dLtKB46i zF9}{XcErdHspw&xx&+brAn!LpL>}?j%NSaYjBT(VcEKi)uO}{y4}nUs^NncxgvshO zgS_OIKmqKAc2JQQGx;j~ZbE**O|VqDLd)MMl{xWFQyD~G2YD^M0``3-A&t2+AZK0> zk;YDd>`Nl=5{e}o5I7C4LTR!X>nBdWnof8HmqAu?Ih4ZzXa_%Ov~?!brkl+$V7ij8 z*8cIF(0*bUlLnvzL>eZ(1D`9>$ZWU;`j_1&YRWZ9R^T^Ros#%1t_3HISMTZA;EQ! zsCabT0f`PFN^Xz_mTw|Enk?}H$T*Eh`el1(cK>h3-YC6ZjoN{{4zz8%g~l@G-C1`nuVXgUhbAzWPVI!uno!~|*D;dk?V+{E{a@r>I8UFEnwkoB zAi8C2!6|p9{(rCB(EjJ3!!Hx-iTXqG$B7zAFAXU5*^e=M%m7+iNfd~!nBa6$5-JKL zudSe7Wo;cvAO~>9xN8j~&rbsJrCm{Xu3$_%6$M%Va}C%K6+P(FW(W+@A)WHMO%e|- zdFd|O4HyMsyel;Vb%*4~(=Kvg?A$v~24;kG%(kghS}0}-i3VCNjDKYZHS+5^)(#{( Z@C~@v)mjxi8$JL4002ovPDHLkV1m3(yZ-?RZ02Lc8;&(zuX0x7|tR`oh4E#GYIWzgcoRehJYBjCNK)DR0 zX*!Sg&}_LKHLe1pjXsdHOW$h3pID3mXybE@rY-zh7*1(M0)K;CW*DYVXi;1L@8g_& z0llMBGyulj7DlcH(++a&oIwUfZx8bekbnu)8nP>sUuTT{3^5&Q(R;@7DSHNfB}tNd z|00TGOQ1WZ`5~0?96*F6g$^GgKUi0&xS$8hM$Sv>;Fp(}!foga#88 zNP+3GXA_y-Q&}Pe1|1>49Wu$@NAz9vnFp`3O?CZX5=?|~zB$w@{k}U^d0!UB8MA)U zjce&KD1HPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0?MXyIR9Fekm|ciXQ547LB4Ug| zQ^rRzPd*+fMIwwD9z2j38I1=I9w~n8HL4?HP@jV(`0SAD~+MnhN@VpT5w z0UdQ=VZ$@}q9(GKRwYc%;amm}W3gCQSck0oxatFL1wNy7Tk;}NiRxViMd&eksfHv` z1^Iht^8Zj!6GhnmnUz`)w{b2UhLNeUoV7`I5+of^Y>BY-4eJ6)t@(4VNmh|anfzF- zgqT{HZ_eM29-s3FHB8>uMl+0Og5+X z`PViR*{e?aP=aS%rq}8STCo~OOe3&|Kns}YRVCx3#H!&DtoJk0E`_Hcc?DDaxDt&3 z+qhd4q^)91YHR?GG4Rp?=t~fscV54>__Y@$dKC_Y_Kbx0*T?xFCTUh*(#ptsg+NAxyv?suI@Z}kejZo_M^=)FcZa|kN*VSo|M0x<|HVpO$`8F{X zBWd&fvhiuY8H>`kW3p)K6t-X`+iETwiY9`Q?YBEVHjL-md5iEej!wju{E5R?6 zW@3*lK}Y?@i>x6n$YeTDyFv06%Kc8XE8#x)a*M`%NStqe|E$&vpg*Jr!fUt+7x>#Hw|`2JH7T>?lP1{ko?k)MWOD!BA zToWCa#;cE;et!i#F<oN};(+NY}t1 z@)-XAQ**1*8F3kv&S5p;Q~$0R|`jnAj5CDUaJ;(sM^84V-+vVk%<19^vdng{r? zBkNZO!Wk3?U9GHjIU`VYJG4DPWT%6$ly#~X47?bg!M@sZGY60dXJ?q zHsm_C;)MR?3B9SO*10PCrSR(;KVtv@002ov KPDHLkU;%>NM)A=A delta 554 zcmV+_0@eNf1fKFK6UoEZAY41(%dwH+#z4o;v-buba=bm%E=bj#V?@c8B zm{_g!Q>|8$@N!@hq+Dve;JXCpmSw%W#G`Z3%mTOvLFA64xqs+(cT}SI6et^=RMc90 zCd9Ah10&-o70r^u7iyO`^a>botBgMhR)I7la_W}XmXD(8TIu@7dXQqIZYa(-TK?~R zrN=j;kucsc6K96q%+!;Sea4z4>R6bD`ZWn%GVErinP>7nIbj;|ED~iPZpd$%@r0tB zklb7CNOXS<4u7>Q_*93S++#yQIwLQqIHHa~OP9HAFN&nVEf6Vz8C!zSg8Y3UD#`n# z`-drXpsS$^{tSBt9Qi_W>x;;gv-XS-E68h7Madz$rIEv%1~Ofd8!#B6je07iQJ`<@ z2kdm{A_f6|0chDaLcvU!TZ;XKme*lhLJbR?sG6^6w||$W_Z|kh=$#cVLd_-Bkf>QV zcAuM5`L5B6AOm>^{iyt2O3s;zR}ggLUD^qLT@544#4c zW_H?yYa%a0XH2iQTcI0euIlA^e-n=HomoK s8}2Tf93w)zK;As_UEVt0?)N9~1BmN+L;R{M_y7O^07*qoM6N<$f^3lq9RL6T diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_calls_unpin.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_calls_unpin.png index 40e27cf9de03d22306ff3ae301c609789b854a68..18e4e2c3562e330270caad44fef4409005e722ef 100644 GIT binary patch delta 692 zcmV;l0!#hq2dD;+fPVs#Nkl~2ch!(N4 zPN9WGN*fi62!h(%h^YB5Y%H{}5yeIjG`>PK1W8B}iCKR~=a93rvom+@J`nN1mviPk zzWMI#?!7ma%3o$xUr)2ytdX0qR;xe!ny%>?AwCQCfo+<1et!-B8a#vJyI0Fwve5+C z0PjIPG);aAtb&v+(QrP*Q8)*|X|u~m;ucY?&zXAB@MK{Dp+!P}`I0Pu5`yib@W;2Ifzw8vL=MbJ4zT zL^0bif*R3{a({|tMfFXPi1$RTu|Al(sJ;qvq8_k`+5$n#Ex{K^z0^mx#V3la@0;3g z;wLFlroV8QBgiM++YeD?1wC@=dM+wQ&?$37w}@{fL@k;A2@`i8@?E(M)Ls#66;^!5 zo2T>u=~cVdy^=qh+DE`V>|>UgbxhP4_0OsZf7Q-r$A1u9Fl66|gU>MXF;V-ee=$7e zP6~pb5J5PviTo`PQ3S4iqbv~)Zn8HPmuqqqc)gPkB`J4haNg_rnc(^MnYllny5;H2J} zdhbI-N1y7{JAS8nuLj1HAlY=FqKXI_sHmcX1|}*;P(ajk$yv*J{jhVTV}4~<7@h%5 zuu+<*(_roiDGzfsFsy6!dWY3@8NXtNY;4l)AuT60*Pg9Zx)ucS3$FC0kV_oe@K06O@>fmIoA+KO^Os3BXrAHW;Z67#fj!x5_G57l@qZe89bhh)QXJ>`3wQu} zss9lWkM5#b1^5aiePEic=D7{L1ySTBNlR^gA{&y!rrT}oY7wC;!4nf3!X6BO{9b-y z%uh6kFM>dC>4IlOUj~(Ks3z>^U<;`8HCE%V0h@t_k=(KIL^dQ<;HKD|oJQx@9C~sT zQu6k?+8kQzZhve7NiDeNNTm+NVI+UGscnr@8=4DY19)tRdqR_o0@SQ9bxVrE$sZwY z1n&&_jwo#8kIz7A4*3Q%kp4wo<%UW!(4=ytCf;vsE$$;U>@>bq%s2zthT45Az!`>G zX#-=mlMb|t#sfgdhW4wru@2(v;|#RW7oq#WI*RuX!r|A zUW0m7pu2!SCi<~wStg#_ftRZofrq)RDQiPg2VOYV0d&F7!*jQbNxcG%mXv3$GcVmX zmdJ+boM%Jt3?jk5+vI2yZSZ;6`a(MOC3?#(J{DV3yiF`luAoC-IkAI25v}8<);Gj% z1$w&@9e>OPR~nyJQd2Y!_|y6g_QQERjj{cC-tB23kvDAe5IJpT#+T<5a@FuwJS8X);5doSZ5q#y=apcX17;pK$zy z1|cgibb(CRKY0W{Qk)K=Muj-w_SUP^6@J|}g}P)B() zPa&?yF4!Q`7--N;Y;EHnZ8FH+(cY9ieA|;icb;V_QU0g-cizAspjQ#bd(B+l00000 LNkvXXu0mjfhTWLv diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_camera.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..4c042bf6b5ee95f39598777c6bda1ffb74d3f27c GIT binary patch literal 1002 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_channel.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_channel.png index d10777ff67d3fea4444bced444cf3edf21190bbf..8c404584aff0f82562b0aa6e5af9031d278fcc52 100644 GIT binary patch delta 859 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_channel_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_channel_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdc7b7686da0892d6b1f222631940e48a4645de GIT binary patch literal 1045 zcmV+w1nT>VP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0e@R3^R9Fesm`g}iK^Vuq7EzcL zX=M+gTG&boBci8b1TKmo2#O+Hl&x$L6oiyg(WXrVt!ooS<)R0)Nug3AsGt`G6&Yy{ zGfN`GN^ifvoRRU|bMBqdE7b=-zB%Xn&o|$hIghzFC+B~*WHMO}2Vr`q>p+ta2cRmG zcEoX#cYy3Al*A<>HXojV>^tPfX-9RQ#3waEVBPr2a6-M;Y3HuPOj)TXqLlDSOqI!3b@*Pgtr6k;GZQDiKJ`iK^;X*gj#q2zag8}MKV1ck+YXF zLkJ70>Lx4>U4^dd1+>CL=!DM}J+!C7i~!{+2F>bP2p7=Kxe8|MH9p=b=mr>jO5-?e zfQ&E0_^g8uLJ2u`!7VU$FI^u!J!M9TKMN@{m^Oh!keqrb?DyH4*lq~-fU$Y8!chho zpwJA0ueH;KUs^>b$l7X+$Hd6pWhE}K+BxBZ(k>BKlLt+p_s>>4k=<4-&`6tS$GqBf zZh%3H>PVm_2+QgH5^0KAx|%4F6>qTP;Tf`Hf2HkP&^fAXhHluGreejUkyd@2ZM?G* zAvfa>+`3GC&|N?yyv=upya({@;9U?m<4iaT`rt+yu>v>@<&gr{lO#y{lqnCI{UGay zV=!#lIj#h=)qNB!*7N~FbUd0TbHY7 zdhu~)|6*y26Y2ga2D3@mHbH}A)yS#YxdgHSu!~C_3&ANV18c({fhw4ms&+p^|Anv< zTEN)(aE6qRDar|mF2bgeSUbk&a2K?cA30r1SU_7lMll;~Q;zj4t@@=m ziW&zyKznLE-q|!gmGzJxRYl4Sg++AKRqG|FUmHSgpXJky-U=;&f6T1((~h)^1%-Q2 zp!(=Nqs_co8hI72jlNkz`A-b~0q<;H1yPJ%6S~J-tuNhdxF(6zQA`DV1s~I&4of2w z#+>x|bd-_9=ibqfTGmoET+MmOxYCIv-2y{D1RMr=ho+Hb`{khhHzj`nY4YMPw6|>* P00000NkvXXu0mjfLJqlT literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_chats_add.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_chats_add.png new file mode 100644 index 0000000000000000000000000000000000000000..74075395b15e4f9a421779e8ea1b928c8cc33049 GIT binary patch literal 1149 zcmV-@1cLjCP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0=Sf6CR9Fekm`g}hQ5eS^P0NfP z8<9*R3hB8hN+K#Of-s7Z5L(rupa&8yiijeFHnk9xEfA}MX(U| zz)pwl$mU2S@)emLFp;J39PETcK_5Z);eI%A)MiDoW$+pd!w-zFU<-TJ2Ofw2puumHD{v>A5%#OG=fZM$0=7dN&lxNX%Nx{2QX#x$Rr-Z~8Wsj(nJe5hFq58(J<)aY2Ky-7_RTnw#> zv)KvIq*7lAp;Z$b>2b;FC$Z8KiJ{bTp7J=;G@xHGG`Ft7(+0;;YeI88&NL3_dBN%1 zjm&pjG0@T$+FWA>6#8w9bshLqsg~L3T1oSq{x=+%DbY-$sMBnLq$Z;`b*={B?SRP4 zUrqzPbn0@t#a>04ko`{T$jnqcT})4RLVcFoTq(wAAdptjHkXgv<2r&+lZVs%x=ldFyyEN4jqgA&>3l}rv(NbTXjAWI$+8xjvO8E zLZ2Da41Wy_!y(1Q*1i;;_D_g|(t*y-jbv$6q=IsSr=*f##csCrxXL7Sm^U~Q_axUy zvKNP*nb>Vgl!?CtnrBMePy7m5Nllji#L|bNPO^fUxa$4ZIH2Nxhw-7~h}{isjDDj$aBGX5A;K;Nk6XF=Xl0=nwxACjQW5JgKkL!tbp#mW%3e9VymF}N<|HY z?uchHo_|>3JV}E^@Fmngoy1mFNH;QNP*1OeT~M2z=lH?6j=HyzV;lbgTkf1C*!KRe P00000NkvXXu0mjftAqH# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_chats_remove.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_chats_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..749314093497b8a64078505191e8a558cfb6debb GIT binary patch literal 1097 zcmV-P1h)H$P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0vq?ljR9Fekm`g}hQ5eS^OUtCF zjY#$&3hB8hN+K#OqA-e(kXF^AKnWKuf`}r5Hnk9VIs@nEc8G+GJw;4*bkFNZB`^(0oNf&zGHk1?eG+OVGv?P_5(2d zi4i;wj>A8&@(blE?1dRY-x_-XRKf}90#{zpSsWCX)J9MV+;%ekL_ZB>NdsdB@ejdv zcmh^_pzMlqP29zK3b+Y$E6Ni`q#hw&6FUU@U0K;6{Ss83K z4w_WvDHPs@IB2CDBCUxg#D!wYVrZ=GhXV_jT$CP!|o|$xU^2Wn^r)2Q1={RIT)i$GJ zNrQ50LZ9Fd6vBueqQu7ui$-}XLAi_JBi!Tn^OiP`_6Cg@5`u0;S6=wdkac7l`HJ8u zd^Ndao4Xh)0;@1k?|3f@bjrX;u2Sf5awbysn5v6QjZxdUJ*%|DIb>iUkFHEQlff+_ zI+51ImB4r=Iv)94ALo#!foR>POhsp;slE~zbZpi6MA8izuQ+0Kz)SR-VJN8_^i4<| z+-seXPIRq`v<3f-PP|mTZG1>VznqLb3@pT;4)azH2RbD%667w99SPh#Gyap|ktwF_ zC-N-w9E@_!F+6khbX50>wxtSS59-6`vGI$RqOVQQ%4NR!B|6HJ zNMB3J+CE8i^-&S_W7_Gnm|WPE8581zU+-Q33>%+2hK#|H)En_ zLeL)tZenc(t3bDQE>y!l&>_zg`gM@5JjZdG7i<-bdVvcP-I8Xgg2|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`nUbfAV@L$& z+o`@;hXO=en}y9Eu)R6c$Q`gGAaFHHtCuzhAItPdT6el{7v}x_zxri)ms87x#xFl* z?r_T+zPEjEIpKtv?dv)151#R(L3u^mgpX-lANgb) zwl=QvH&$f(R^*hs@ZIGz)@)@(PA_kL$z0aPsJbY~X`!&ONnK-1RPnd_4x1NUdQ)=g z-2J`okD2})kdpH3ji}%Irub*|>Rq1C|E2Oa{&96ln$=mh$MCyoMAIvl_>Z;f^93)y zKlyd-#m6r^JF+>&7EGGCPng-$S1|ivX@aU%}Z0ePi7C8&3%9mr+cZ++ACyU6Ql+d-k`>FVdQ&MBb@ E0Dz~VXaE2J literal 295 zcmV+?0oeYDP)>X9Vd4VtT;orG zKon@W$qD@T-#wybr7f8xALKYro&E&ou{}s?Z~|o=OGL2>M;XW&8j(emDqtj+B$5MV zMUrNmFDX;p%RsKs@<|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S+%E&V@L$& z+bO%fm;(jcl37e2@U9VQ*%HViD!OJ%fWVrdr5iS#U|zEEli-@18Ww5pjavi+w`|-b zu!hC4#X(8PS%CHW`y<5(9Ma~m^8AdM@1L7<`rLnGo!MTQFIY;LtQhAu?B`^0G++<@ zC&Q82^QNKGe}9@qWyLhYTSHj%vE9tzrLt``x6oOE*;i zzqhzj?uq}~IbRp#oT*~AJ8*QKP5)lERN*tk?*X^nt%sHAjk@)q=Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~kV!;AR9Fe^m)(m^Q5c8MW(G5vkdVv?aj6h;A*IyZh<`MxxuCe6_rPb=3z0cm}SaUINJ^NjIt@nM`Z`SO+ z*E*HTv`yg^NYivPjKId|G7+&D-h*spDhN7X*HXLoM-_yGy`Gq}vBfM!%m)+n4!@tCS66&dYA)iU^~c$lO(xWZ?^f0h$~x8I=l?Y=v_$ z4p}zbHZjaP8}`Ay1`5$WCTJz}>YfC*57DgI53cH8 z7fwpw(ON{BehbHP?@8&E@pezkRu;%`F=mP3Wm=v2g$jhh6gaI)W;(-khcQ|A#Jg{gN*v6JZE1`mop4>%%pTx- zTS+EPU+CYKH-?|lN?vXZg}ULY6_(RSaA#H`jH7zMR;90%X@@2rN! z=<5Lghu>frGimosq>c0wIQvQC1Z)8vz*fRFaHi)jnKS{73Nb+y{1tGMhsTb)4E(=e z6HK-V^lZ5Ym*!u)Kx=NJKd4AwsikFN{ruep%Rn_Qvd2BfPg~np;1AhEu^LzVoAUqw O00{s|MNUMnLSTX&H)ACL delta 710 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 Hu0mjfJynj} literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_close.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_close.png new file mode 100644 index 0000000000000000000000000000000000000000..d4cf96e1724390226b1d5fa92f7bdc267847af39 GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`nUbfAV@L$& z+o^_pO%4LCow8fgA8>pt5eu8wRUr_?tu4&|Ftw+%^`Q9)m6Xk=n+{1$p83RD$NKUA zx-`SnI%gP*56Bp>+Z8X!oV7I}%iQ+pm3bMp>d)NvHOFpgWO`Lpz$SEchTO`?UfnlY z#h(P590T8Y-{s6{JR&l$-2F|kO9T6a32#J?))qcvGIYTwC`1{GZ6%uFrg8i>aoj%($sojX{$jp5+v|p#PS*SR@=Qe!7Z*cm<%gg&*H@Wv% z2-m7E5xRVir-?0|)AOiCWKiI|<4~cVtQjo^)@qhu-|@!v&UI-aL@i6yrUl!YM!osF6*2U FngBk*n}7fS literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_colors.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_colors.png index 0cb63dda5e518e391a96df66948a0f63c6b206fc..4259bc98f5b035480db3c81634395e59eef08e4c 100644 GIT binary patch delta 991 zcmV<510ek42+|0Ufq%S7L_t(o3DuTgXpM0g$9FcHW;L{}FtT<-#6rd{Fw#niq?XI& z0xjagg*z^l`R`^6aY0J{Z)K(De(*^!MD2=9=C7TV~%>aG)0uTd7O-@`VD9&;lzjijN z1Oq_qpmq_;KHN$sXMiKgZsPbrI;W>ZgeFZB9;O#LK`}v*EQMacU*t zw&93t3F74>hktmhwb7DPqHxB5hlVScw>lL!<2<4bW&?5U>4f0Sv-r!>@gvm{t^mDe zgHQOh2OyjchA(bbqz%K!h?RqGQ8l(UjITAg*A4$Iz7gyOo55)1MD{exFQfMYVZ6;p z#Pr#(73o!bPB7j_C&7Wd3Y-Twz$>73m>}jO1aG}IS$}@eiaULD@@Uv^HQC`s7GA^1 zMsVA#<`=~4KryhN(&eE;L2dzR9|)f40{;cf4;8SAaBILZum%)piCE4ty_7pNpX4Fc z1GQ%a6F@#Vu1WkyP?OXgAwhqgrMER@E2O=K_#Hn{iNx+u@5oKjdK6FJY#{w&KS638 ziu!(%fq#abF|6I8UXz;~ahRp_d-2fS5dK z&9-*R7~(GJFy=GVW4L801u0P90)87!`Sn+a@snya95Bt|e1^IUFYxP-{7w-u){n1G z+R!IKqkLGYb-6th+{@QVZs_Zfcm$9~UhNG*W`9p7joX0!#B#j@A5HS^Q0?T3z$kDT zsL2sh<^EG?*EE#^`}0$th|rUix;xZ4a(94Q7eRU2&0PXbmEe)8;9r920lWp|$Ju$- z?ogx>c9p*+HrFerNq%OzG1V>*jCGsI$vGmI(&t9+fS1|FJ&nyk?F2!7z%cR}(Gym< zsegv*l_GZ5)$m@^EZ12~#D-piDnPCf+ybr*8;asgpod?p_DA-Jd^0;83TmdN?>M2g z0r#A$CN~$n2V(LjuMN`j%F!$bme@(Rf!xYOO@+ja>*zS z;1_B$@nRq!^I|e|mDa?wmQz^IE5gL(@>qLE*+OoNP#utA#N;5n3GA~(a)IX&`C70Y z$YDCw)y{a0SQC)%6W8SaYRp(Tn?^RC0gixfa1Y4$(Xj8LZ1n%T-akV|Yj3L8i0J?T N002ovPDHLkV1kl~^2GoE delta 1008 zcmV-Rs_cdWhaz0cnF9wT4<&-blw{lEWO zd+oE=+UFFSRLJV<>jxn<0lWhH3xz^$g{1S#Fq!$F4w&5{=zp1CsR9)Y+z!;(Og#U9 zxN`-D$S1*|bG=DSBHrM&ZxVONr`Sj~1DegN4P zt0Ha+4k+pD48Dc+|1-}ZTWv(Vp0bkBZVpa({RfGgl?as%5bp#&xdBhb>C@K=TyPw@ z(kjOB8VJytek9(WwGnC)|191egX&7ed?t*e<`; zD~X1X#sM>3k-h_3u|1Z=*MOnX%6u*A$9Q_n6RRO@al|k9(j!eAPU9n_5g zZ-DG8=zp6?r*o57*f-G2C(;fl^_*O9pHnV|KN)-kW(!hlV2uVp9s3c!hhIQDoYZ4- z-F!|`3~x5DCrsa;c}d(z9^!gnmSs|RA$N+11P%IE0K3r7#OY5~P_LJ)jle9+q^?75 zAEToc-E2bmw_sGr%haY&kE@v`6?sRd9p1jk+kYYb&B1TPRB$3 zgOs8wa1WT>C+HVWhTJMp?&&j)qXex&jk0ZubiVjU#9`WP!$NY}M`T&P=%?T{>^+*o zC4U;l**<*nCyhTLa#}&#VF?o_^+cW6A-_IXOtIZ_iT!m|+sQ$Z%ly zURQV-TnA>FXzYGOelS=GmVwIs?m}!P(ECYfdR>?ncOjL|#T^Cx8DuFK2J|o3d9aOt e#9re6Kl=snZ*4&xs;m+K0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~&q+i8si!>3t9z2}yuX z9$#$xt(ZlYlZbV22@YBN%2#&thsx)hK2V!+ta23!W;`g%IBME-KZr@Ysk`CzPrx3oyWV@5+rA`==!D2eEOV zlKs6?s_7p$Gqi2UzyzOry;h8$qoK4J)Uty(IE4KZhecf zhyB;_zKqn6E8z^ttMC(cp|L*%#1|oteMG#3q*KOxB|K3HCYV>?EL?>V(AFErnj^}i zAW1^)S~3xV($ru^0=dyUlCkC*;bJH$&M_Ao2kmb#6F4VYd8g$5dI6I#26B1Ijo#vm z_3jZI^iq41RJmE}XJ2L6^st$iGhJfuaEcPU2R4FysiFUUentBR?j*lPe6~@n8^mrW z75L<;I0^5dR+A55L$ZdsMz{qU^(N~ExDIn^@~_A~T_<=>;Ca=_DD&e`hS0|)mt-@v z!xe~4nhHCqxLX3Y!Ecvgm{H!Fnv5LBTs|4(#t%0FF1X-tjGMwE{YrA_lM49*J)Mxi z=dPiOzeK)Wa?0b2tuxO()aptN=PQ}1*7;iVG_=&E{*qZDhk(0C=WEQ<&?{HxWsZ8G v()_u3$eW=HN}*Lkb@j|0+QWkG|2cs_uz|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Cx)Zi(^Ox z=i6!f{Y4x_j^}r7T-bDorBhMtikO&6#Hyvdth}PEs=N!;#ispZ6cZ2@`p>HMLRZH_ zMI|CqLWrxbL#&~wZr`uCy!_3ZjmvkdpWXLlw)yXS-)rxuJj+Y7ntSb*=#IsrFUodr zexUn>b*-yFS|5pVbXxYd!#_kXm~nyJ{x0LasnnTf;r9^_kIr1bmrIk$ zWER_d$D6FHXB1u5jB@o`+ugrxm(aXsN#TE8_n-1uZGL~vbRW~n=wsh(7VbVLJa^xB zq4ZDO_c(u?FngzdE#&fy6W$y6U(GU!3n}kT5sYBpUYb5>_4I31OL8k`9XdK^!aTwC z2ZIG_t9C5f5w^)5PIBu#=ejrYOZM=cZaJN_tTe&${Y7_P-xr4> z;(y&ZTQg^t&#TC5FE^~|KiF1dT>N6?f|d85oBxd4BD+=l!X2(ZjBmH-8ouhN+YCxy Mp00i_>zopr0RKBSR{#J2 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_14.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_14.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0cf5c54c5898d5c38059e12fe41b6beaa30e87 GIT binary patch literal 1222 zcmV;%1UdVOP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1FiAu~R9Fe^mrY0&Q5460QlZu& zp{OXy4`@+sEKq741SKsZA#9UvirQHOwGrC5C(B zVPY+!^7Z@AyJzOkyblM7xAG7FIp?1LIrm)W&D^;KKu)P3^V9RHHnu*%>k%dADUY|c6q6R8{Q$r#YFny zp=45Ge3S7hxE(gbm5!K-NyjJHLD&O#!&116c!WFlTS@+cBy=hWenO2$;56I{55v`P zKKM+L{@78t9JWCH;Y*=#g#|@7g1fUD8b)y%b9vE~*cv!!NzQ)5K8N=l5{GJ&tXdGtUDq73E8v0pJtwC#H zHPObUH)LH9EO0@qfqI~~6_8^g<+$9MnBWc2*Fk$LheL^AJ2X7RsSZWYA%4vz{l;$g zq?juWDo3~$6WxG#HB>J{dn}LW4O6fMKM}<36;$Q@)U@i6xX%Dd9b5WQ+x3h!seoUKlKhPrn8q-7H1-p#oiW zG)dxnGEib{y*{`#M5){|o#2F_C|cShw-WZjKaTS4u9q%GC3gr4_w$ko_5@NkJBwYL zOdz%ezJq6cjj_&2hVa}&AOo+%mvEI|BcIq>s9r)(QddHAAmuJy$ppd&J$cklX1zlEz)loPf2xBg30;{8D2*x$=v(tZIFTxA(4KzH(IS=)T(a$L8Y#jr! z2znFFLfgbr&EY4h*3DsWmFCvJLg_()eugP%c!r~A%s=v$oKU&0MzsdbxuaxZ zF_FRs_}FH0_64>Zw!*wkP%)=|bVo%7T9C=fSV0fj$M=tv5jZzb^_p9f~>u k-sXd8#|wrF_&;~x9{{FAhX)6tdjJ3c07*qoM6N<$f@8xXm;e9( literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..7076969a7b5159b83c33aa704c76ebd0b1c48411 GIT binary patch literal 1217 zcmV;y1U~zTP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1D@jB_R9Fe^ms^NUQ5eVPjQicV z6CspGQj}{H@glceBKJs=H$@>&yqnf2|~ z-e>PK$C;V8`PXmOTHp8W@7rhXwf9<6P*AVzGmy&e&hAa8(_@Gj0gbXme#BRtN~PXp ziK)4Zn^_LI>RPT9^O_;Ks!joABd`L?Q%nty{TCc&5mz6{B<#Z zXctFgYIRJ3t*+QF+9E$W!r6p9FUj>=W!RPW>R8c4IShj1iBgNaBMmpMWDqg9f}RAMI$v1su21D z+KR%$xJX{7p;2;VX&hHAfG#B_vn5W5Dkj|G#yRbk;dNaq-f7jtXL{n?FrQk_b-Vi(RPmJ#>T?GZ*T^ls~ z0=+T%{5KDbIdq6Ggx1gv^ys6~iBk%eNpNQvAA^pWeITln7%D#nByPeF_@w~)npy2h zN~jsu^(ta*Tl%)}SJKzI@}*;mWRp=f(qEG6t&#Mas!$-t1HnF;Q_X>G8u&3p$#r&|XkszbM0W+|Ay{o-ym#bksF1iPqB$ zwFEo=T*wH(fL}?@L(P!$xSDkZTh@Q@^+v71Y7WG$A&q>c%<|v>3L*5jYFy zlj5UxVs(Df$5Of&^#@~|9pICqkUr~nb`D}{qeEW%CqZ>GmPe=t0Xn*x9?|I=3aG(= zTzZVVEII9ooYE1v*}F(@-73)RX{z<8PJteij4@5UqyWj;KogjSOW6(3VJMp5pXe5;RnOt85;_Pxihhw0bjj95} zc4+OD33cr&8Zt%)Bp8NG|14^&xea|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S(B%WV@L$& z+i8Yg&W-|Yo3j=l{sX7^X0YkkHRojU2i|S3OKSTS@;)#n z+w+)R)jjhDJAvE1w%C?X3%Zk2D`oEJ`fnvqe)z4*} HQ$iB})@sk` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_contacts_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4cad11bd7cccc6fa5da29595adfc9dfbe7ec90 GIT binary patch literal 1129 zcmV-v1eW`WP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0(@8`@R9Fe^m|KWVVHC&D5k?uL z#waAoB~vm)L&}t-+{z`M@zdxoG~sBR{i(-uWzkyt+l^zpKtb_RO-K!xdORdt^#C0JNN>IT9i|{ zGoWI?_6Vo}55b=j)v5`bO1ptW-L?S_5WfLFf}xbLB&!DtENQ!VI-UM%c3#m?2DoG( zakISwhrm#7pc*cjg0y(FuaZ09w>9I1Rl{nba$2QGhB-k`H-3ZV%LU`Vg<1_g5)!YS z3LEk#eyE?Be96AAUdwBzhW8y;+9*rClE@8U8t4MIKofW0iT*XwMw(=cWg@N$wEBdE zev7@SSPuD#%lcf854X(62Gk_bs$KEhu*kg1!2dSjN$S4QNk=ie+=e=Wgi8V*Q?@}XIL8J$Vn>Oj ztcKW**W|rvx%W}LHmrlKe2rkFjb9A?rSQQVjJrvE8;k;auun*XYOoV529opKfR2a3 z35i{@%7CH6?=m<7daWe(F7OTXCv7;Y!cMT)gKI#q9+AKcer4`c11?z&Vr=mN^vO8T z2xF_j(;!AvZ-ZxmRxcLpwctCDG`j;{RzsCcc%Td>hm;6D8Jq<_Y`ibk!QfVlUkd+h zLDGu`)sQ8dL;@vuISP5>hUu4RJxljN@*VsVWAA`OE2NV=7VOej$Y(KW7U%?$?!1bw z*SXH~IB9IH>R#{(gra%d!dQzhzag7gM?!xFRA^6_9D6#54^8+~pf^vK__;~UD`=?K zuO|#naGf`PL^Seq)>#t?6%Rn32=J&W{4cOKgHJ%R9G}n6kMwgbwIQ7^l4oFl#Ck3Z zjp`f{BB80LkOniSpjQ|lP!(;+?%MxIwovFxBBNeMbRr+LCPMc)4396Vp>P@XT~q<| z-4x2qz_=Umh|$P#{~R+z#~fR z7@)sv%aT5`eU2CRd8*;3w%6|U)zNAR7N8FYO@+<%^?7uR_~Sswz(mUtDxVYQvD}9V zQZ0$sPK80*t~QYTlpfF64j^d)&qV@R2Up^5pys+jDBCfnfez3Nv{G6bZ>C+G?Txn$ vJ1=zp*Z|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S*fRsV@L$& z+iBK*haCjkl3S*zeaQ?i?l_>Tp{bNNK{()oBA1tn96KYYW=!KWHC|mWjS7y>e@{z^ zy)g}YGEpbh{g>@-&L~LFU)$sTRuKhlT!2idD5l$s%mvJPmc4u7rd03IQNZgt-8y!)n67y z?7ykU6!IZDrTqbm4dcc9>PeCfp({)J4_(}H=;p`pH}loa((mO(d6=7CsO4z=_tUPx z=%jSOn)`Rc_f#)@id6@q!XF5)+}A8q@^o7dC?Y&v{an^LB{Ts5U^vnJ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_copy.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_copy.png index 3adb5299c0a9643a4f61b830924f263f1f6bb1a8..c8061c9d5217fbf908bc64d63232bf692e2b819f 100644 GIT binary patch delta 579 zcmaFEe4Ay0ayMpMyNbG4^bct`J<+s~G zdp!?nZxEeiQPThQghH@-V)(?JuKQWOKVbgxq`aTUsmN#LoW=D$Zxg`iD0@aa+0OOTx0B+}xz)RpbSIpec&}q4W8Q&qDS-|9Hm3VO zFMY-GeudKROoMHf1>!GHk_J}UH_;^&v(zK;tee4ez;v< ze0+Jg@Z%|OkNiGSWiac+&ft2>rE6`<9GJHpU^Y-yC^l{~w z>6@x0su*9snlDuLQ|W={>(f@eny{YPZhvkYTh`=jQ+L{!e%|){=*`EiHCn2!`s=sY z7PkdBJvky5x9@6M%G2=DkRO*@o*Yxybf_maPun?s-T7r*Ud2+AOWS(BFTeD(&_;eu z6WZt?>oj%QD{66k|*1G!g1A?>c|T^4mnlk*PV2K^B=tb_57y}7OU_Bpvd)f L^>bP0l+XkK+N$<{ delta 467 zcmV;^0WAL81ndKlBYy$2NkllT=75sJ)KBb$?*n>=)n=I5FFYYv8Ua zAu4HF(v$7>O43Z+PSZAD56uJJz&o%EoQ1}EfCA8#a=)*@ZK4^HPR%wt7*qms|7`+A4|YEu-{@mk%CIrTF$?|Wz{^W z67!x9k-3$xph_svyP6=#&Dp=HSGk4>s?`gi4_LGh`Ak-@F2lfpJv;ZB5mANCCj8kD zM^N7lx@-TMAJ-}1=B#X)0y|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JguL7srqY z&b!n1d&ve09NX)u&}gEWlawvm)bc~W^%v7crG)gvWC6iXDvNw)HHg_Ytlf9usMkhL z#fTfrJa-9jXx#g=@5z}`o9b`x)|J1nI(gvu%(*j-pWoh`o}TXR_RsxgiB*2f!X4%v zKFpI>)_K~#FlYR%9^3a@`N%XIHtq>C3tQ4sCZE5_wtCYIAqxh3$9X4~&sf^HQSqlv zM)RsgmUZIQMLA!;u&HyJ2iP~c>-}T@rTBwqAM0<4$1D*niw`b)$W@cEHERBxw|QDA z+ZO3sKChCrIdfVgz9VqW^tF2|m%d54_2K4)?Tz=B&Z`vRE^82fTUM&reD2KB(_12K zPw$s}a-*bjO7XTLJ++_AdtxmeO&V)%#ZE4J@~-xz&fZ&UR_rH_x5TEW3aw%H@Smsq zrmE(j&s2R*pAcTdNWY86Eg8@0oao*3()Tn+*FHV>hlzO>OaP&atogsC%9}sMI85 z-`fjnch@=^-%`og(zT9=`_!Fa;9D2rv2?-w`wL#_uGWn)aq>}hEIn1F zcBKaxlb>P}FCKEO6RT$WGV>;@+NIflr}lL^9oVisvrM^9f7iOje}B9Z`?$;4e9b2B g_bqMHbJKR(|K7zXVYoG<5R^zgUHx3vIVCg!0LEon;{X5v literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_data.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_data.png new file mode 100644 index 0000000000000000000000000000000000000000..b6339736ae9e2fa2f4673b87a114944e65535043 GIT binary patch literal 843 zcmV-R1GM~!P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~wMj%lR9Fe^m_2S3K@@~{5i%QC z78w!;zzGLHj#jb+p>IQEiO5&5ID+MfWCI6C8#p9%0tc|LM1-(FNO<{b-8Iua%ul!3 z36Ocx+y1Nfs%EBpx@RYo|JHv8rv1b1qpQ_wn~_)ebNp#=ipgd03(B+Ubox!5qZvXD z@CE(@A2MNtJ=nM)lJ4Q>c+-B-@g?e1U42bc?A}I%k?0V=i5NtBjK9RU@HuW%U40r8 zCKjt4hj$i5@C-k}ZP!$e@SQj*?L<&xY$wDh)~1}Z7?)KiC>HaP_OrG?`a1;~4`vrv z4%>;xvPz=#m~2ZbkGldH8x*8i<-nE8miPETYXW=D=&Cx!1fncKktp9OaSTs%KweFH z?yZkW$!%b=1t|u+9-rsbx%0G^0QH`+9kqfQoq&r3DV!KB4qNwo3dACyv|N+b)X-5i z!QDlWR-a!9iz*qF2W|k+cCa7Xr@Z#RdTi5W$bA~}?g#F5vl2v0d()!;dKbzu3v-B5 z+-r*kX`__g;7e6Twk7$+B{O&Z$mrCrExY2D{=BV@_Zv8_0)x3H4IhL{G5#&{ z;d4Q-=B>=!iJ;q|!e6fR6C&OdrUkJZyf8}*kMEGLv{GBc25WkkyvASPUKoQx5#HR% z9dhRru6V0t9)Z0k`I{UC#)yOZ_s}+XGO2a!lxgM7RT=k8ZXHPmfW@0@k|47IPu}LLe1MCNADJ2|82R&$A3;#j z0j*-ns31nC#1SM&L#M9J`_!$5|X}8=}X2x1Xq3BPw9rR(f@4txBrfb@7BGk{|5fT VEa~rW$j$%&002ovPDHLkV1hzyD|ZSp^YAOU&)%_7D_4bK$3cDYR)1o&$nDZa;j}e%;y&g* z`cSMV;WsAdOz)L4$3c7MFd2S`;em)Bn4A~JqDGJ%!ru&OSwjQFi)o>q>3~_UVeInk zwJSUdqH3DV`PoDHG!ob0-Dv>U0eA}++keS@dI|uJ1YQ?1*j8%$Yw3HbnJ{1`3k*bzL%@z1Jb5j;kf3{m7_pG~ z1M*eT$jkND7!oAED8)3{XC(hmT@-mOmXIJ;(hfnIgS@!~v65lDh|W99V)O@ehoS|^ zXD=^hjIl$HtuDi?k4%K<3X2FM-rF4^4GH2SlU!CP^M4{nyymocLV|QPtk5FK7$9DA zTF^X#SfND{3YZUqf{J&@ynIjQz`}xnmk)x!52HFHT38V)lvrNVSn@eJLXS*9tSF{K z8XGN$1iDIRbuEG#%L1M0Svo{PF}JnuP_!Tt^q{0cXIbGOJM`4*mKK^k9g=)qsjRaa zaqPAimu^MSg+ec@d8R4upnfDSnPko7#0US?L5nXydJXgxyoPxNW8KMS2j%Wrh4Yae z+bIPi5K)D{z+>zf;MhN5zSVxz@T~TV#B=yAJoq%ePy3(!p$>ciS-bi8DCbKP P00000NkvXXu0mjfJbx<+ delta 633 zcmV-<0*3wT1@8rrfqz*^L_t(o3GG)sO9Md=&G`|DV5Nm0h!$d@Q3MOEwN$}hpd$DS ztn>#6Dg6)j`3+jz*ocaSh$uFuRZ-#_vX4x1yV<+j94NRjxw+YSZ{N(`ZIVLamyIZ^ zo_f7r0(Kp?02@#|&+spzD7sOxd|ilHgx$hi;~Nu|d{r2BEPqsjbrPdR?&mHFt8JO^-!8PLJz(y) zaP4)>bt^mxqUCln>uV3?Wh8FH`q}}wpMp(W;;zuSW8x9?g-c?h+8JPtbb7aEQ5H>8RPK@($%oS7)ina z@tQLRO(TdE#z=et^FmNi_70hcuVxm^EC_gcA^3e5)FIKriddn<(hiL!pOwS6WddSF zAsy1#U_m6%Ra&d-5Y$)}XiZPjAqomPt#yZj1(BeLl7_8i`Gf3GtT%19JNL)3^n#+o}{i|q6M2oLMdWYaFtO8&Dkvz2|xo_m` z*?@7&s_xVjGZ3)?`+$XvD!`#XVVbHzHU|^ZS6I^ViNq_|Ab zAB~97fNdJFP!O%eSP2$37D`BEp^!!l3dTkxU>8&bKS2CYC#%heU#~y$!h^u zz#(|7pnr$hd%#8IKEeC}wJTF3^aGIxm1RT`v3201B&mE;-C-Pzd(|gDxHaYvYJ#t6 z;>%#L1`sbF|GrG%Xfh7$1~8^U?dH$&%Cg+nM|A<|k>_e(rzhXq!r1Sz@9KDq`GcAr zbm=Zcxz~SeE-`DJ_~qCOKs%W0C*V5`L~h$$>VGArLDtkVl#?bqOB1KaDuzyI%e?t0zTm{F0JY~D1eqzhtf7KTjl565VNRls1?DZ=N zHJu-ydCa1_NZJkLd#WCM0Mav;>CZeLd{F!a`2{wn55ArR_GX)>tADOZGwom$_~Z{8x2oHP zvQwx5gf-(f*;)0bsCLw;congyYRGvj%0y+`0|?=mMD+C5Kgn;r+T=d&5Pk8f(fws6+X!2BKNkEKbx zuY@1tBoJE<>{tD-=8Ecd^I6-w`H<_6v`M@vY{(plJgtd2F2Tqo=mOHzPtfERV=ezq zM1Fwyuge5qkSrDV_;>m9HgR_}wojbcGD9u-0Dm>`$@|d^5RoCzN}Pd8dN|shcp(*d zQeT0wT)D+hd>K~X)sw%_I1Rm9q)8oiY@aEGL{{fi@F#agYH!fpuND@{pTndM*W0lgELg+kmJJi;aC+RBp(Da)M0W@C|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*;7v!$B+ol zx6^lfF$W5?ZT@)asM91Pr4F;My}b&v+65dBdP#TNG_ch$&OdPM&>?n#77n14uff!{ zp-MMYUzeYelrTR%?@3Nr(3=DEXBtoc|A%LG^g@GFu^+EE4{tb=!@H(w(W93F``H{n ztSP$L*0HkDe?m&R$n#C1OxDw}XZe3` z)`w5-Jux0HFMa!>`uwe;R?{-oGnck1#`keueb2X2S19MSqVs;H?`c!)zvcFSl9lRR zaieO=k*;My_w3 z6mv@Lnw=YZz|>;GqR!lPNkvDTZ7v`JP6}Upa$*01lw(t_#!Sd={Mq)2ccXXO6z;*uVLiz&%B&>&7MLk4PE(e=7e$-(j1Z#ip6_mEE`fmi}+@X-S@o z3+I*tOV;pT?A(|9MuJKC6_-R}+lAv+Jhn}HH?lrqzPztdp2;Nf?YsA({h)~VboFyt I=akR{0Ha6>z5oCK literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_devices.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_devices.png new file mode 100644 index 0000000000000000000000000000000000000000..f814a29fdd1de7aed3eb8639ae1ac4e562d8f847 GIT binary patch literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S-7W*V@L#N za)JcwVnqWfCS@HKiH$$M|NsAA;bVnD8FP|mPSy&AZ|oVzYTVq8Ev-1qWXaZH&S+?R zAh_iCh6UUVKNn2+*xI$9^-}nPoUGsn0!kSg1`*R7o1gJcc&4_Z@f6pL4Kvuijl&y0 z{ub@F@on8;*|AJa$Y{8Sh@|UryP){YcNY*F#YI?RTl*$co|PQF)-X8n`$df4~0lO=#Qz7bA25g1}o!DwB~Z+h-*z+?eUsi*A#Yu zQKL3Rd=ae9B>+iWSEE{Q((K5q5%MU|&glModrYvkE)hdkEs%ycY3JW5$b-HTe+R5E z`VEEBa9X&~26G8P?R5om55cNjg*iyla+S6G&U8 zUW;CgsFvgjv7A+-M2iFTtG)^Tc&a?f0Z06eUzY6A0-3bW z#5tMQ6x>jyvz?jbj3o6sm|X_;@P8?zBsqn^6Cit=%*bA)PG_rg;5G23p)!X_JRDJ^ zdwa;W9JZ~==|R5+-h&s;f5+=jh&~$iyL1#B0~>(1j|3Gy9!LB_Zco!Iz}rEBGUx#h z{C{E{egbY4tjRrqB~qv_)K5V63-o~xz?zPr{sFb?KGtW?EpQgpHOQiGdjxtI@Tncr z#B;>A!Bw_ihdJFIy@C49ng?Hjex$#V_rHr=Heoc;foT?a(@s1B7l8iBu=GabE^q{F hT>9?I9kX}fFWa=qV6Jw6Pyhe`07*qoL= zRYcqI_f79jZ|9XsJA(*4@a3Gj=R4oIb90lqNue-n|Je!@r++hF&-0q8+Y7dU6$ZG% z2ZKI*PqA41tifE2NtD2G@DTg~^-LUbRa44zQV6z#3JBUS1_r?s1H~E(nrho;JSjxV z;A%i!O)r3*U~aI9#!OBeab1&EIarhGn!;xA%uyR6J`3ij5`YA^$<(OUnl!Zs(;Ed^ znMYOu-vgGXSAUqwRISm#`6li3D+Rf0qRxN4#_OD^EgHX)29TDuu2d?pTWtmYJ_zlT zR6-FXX&FtNZ>cAVM5wKJ!GA+awLa+3Y$8Xlu?2{-G8Rnuq#>n^pIRaqQxY8T~bc* zW24(*di$5P330XBX*}q}d4+C|T5oqki=EC@C(bK$d(?Wn6VlPanvN8C+bXBQdmFnG z8e-5hi4B&JqhDvV$MNbNHa3@z5whpuY_=ox=<_>y-cwiET_KI%G|8=yH@Ux0lY{dM@oYDC4bF2#)gOvGMOX8s9dzq)ojP=p?xx^nyn1Ed^)5 zJUg?7JcVn3-O#UzZveX)34MFV>l+hCxd8_C^>Gk1G?A#c>Ol002ovPDHLkV1iRWkAnaJ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_download.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_download.png index e3f9562035b180388c618c76b556223a78849ce9..6cc39958130df692028d85c983a130e3b8d6467a 100644 GIT binary patch literal 506 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S&FBNV@L$& z+v$#8%!VRu=`LEfEl$^!Dmcp5RWXY1^|1B6xVC%O7pA-;(mOKzFJ78d=l`tL$7rKQ zKHI{|50js$R{ngJudrp6*PL0*=XMHKIb8q$=r-d_#m=d$7iKz6T)phrQpdHYm`*eu zzOLbLughn-#T3J1%e$T7%zmpQlNaP)?Y;lCoA0;&guBt#MHUxIm&k9PP(8)7vu~&2 z%kA$ypYMD0bKS?l_8VV1w`H`%Y0Pt&=-*VDJjuJ{y3aoK?tilcI8^vNx6DbJW8tD# z;`Xh>n<+zF?R5x5azo>%A^&Im>dA?`tE7BcI+6vtgw>(MaAP5G9~?f=?mI zCyOJF8wYl?vq|9`SY~&2?%cy=*|`J)K9H2<+LrVvX){Y)YBI{y^u=vnnE?-lY@4x_ zcOxG%N{oG#@kWqw5oBBh85e0~O29~$IpVk}Uoz`J1GoXkGm13M>Ox zz+_61xEd8;2^a%rQpWuzai|STy3`MKNz>N*s(Ev5&CN<`STPrphJ2pd=ho&=lIG3) zLqcXjQqx*{R#XddY9)D=RFYIN&t+4wS8L5l(f!P^l`L+mUd(;dRP39hUNu*Ta?_S{ z(Cbcb-z2taN!sgI+qr85Vm>78fHm_EDyI#LqR!MlWV+%nnQ&^m7<9}p z0xJdPtpWAqr0bh`Hz#gUyhTye(N?%BQw25(l({c(@4$Zn_yqh@_Yp?-Ggklr002ov JPDHLkV1gNbu?heH diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_draw_arrow.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_draw_arrow.png index a81a97a0511cc538998b9cacc62b03979c12fb22..868e4a1fe4d0a4b15b5ef5702d580be9ad4790ac 100644 GIT binary patch delta 986 zcmV<0110>Z2k-}wB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000apaTE|000010000a00000Dh}iP z000A8Nkld-V~yfU>$q`gPL-b zJ2{fZ5Sj=3Ab+%1Og6w0m;uKP8f#54aYB>E{7_9HumTPP)n|+stBQ&Xl;b9?m8$tU zo)TRJ{{yUnfgb|pSgthO25X8eeNBF64j5m`bz5U14InL+tl|yRG|r)PKX$d&VDaZN}0)LwpW=25uV9 zMa6BAxb~E9bk$0~rwBHITj|pTso0F?RcT63pIb9|0WfxqwU;CjfRk#*i&SaK-%~r$ zS}08cz4B!nQBu5_Z@rZ6XE-ixN;ND`HT8EfZ!9htL2fA@?af#(-We6WtpqcTwdR&= z3WDC~Zhs42?}!iZ`m61>?*sQ_YO`*GleTt%SK}XSE~l~96qAX&ZMofr;3KS&)lM~} zV?<^M9%Hfva?NnWc#)B8U~9#uwoD_Whc%)Nbpm$raaY1Ai+Ar#tQpUbG^O0r9ycG> z$Z8)ANbiHOlE3<#0&lp&>&!2Jo6KK&EalY{Ie!<4-vCdUzb$aX2D92>L*XqvOY-Yb z0Kq%Vh011)UrQvYhFexU+(WxWe;MPlGsoz?hH9#I*RqDV8l8ck*!mUo<8)U|{IS*U zPP2wAc;EavzW+rVkKCE|j0ryo3ltl=OVBrSo5b)*2=i)>O|xwRs->El;9)Z8dwd*e6#o&;bp83%Ipnn!X09?*T1$hm=Uihqz_%9q6^NDIxq& zW*VD_NK@L&Rx79bM?;E2e2!Z+<_Y{m1cy50O9MztwrVwcv#Oso(f4N%oEC7)ePt}_ zAm*n-aq9mJ@}?1q{ZQOv-G3>v@E<(RKLO8F)}rj&djK zRWHdx)c@I_qpnVRDN{_GCP*LRBeiP3_$c)E{~Z&#pnreqH@-2Bz*seaGXMYp07*qo IM6N<$g3gJ$Jpcdz delta 914 zcmV;D18w~92dD>-B!2{FK}|sb0I`n?{9y$E00Uo1L_t(o3GJA>ZWBQihHXTH1!Y2L zP^u8>G_-`!0;&84ksuAYPK}g20B;cqBt%JsrH}@3X&?y|DJX&nh>IxzneVsHSov9!5*+FGT+V+kJ3Bjj)|JYCDPDnUu{y17x7#(e)8LdrDlTMsaw^U)TT&KZBSwHXWd40y|~@M(giWL`NrXkXGF zl$4%6mqv7TGzp_=tlcE3%S$EWLCPfM=TtKq3s2h2I)Cyd>rqlXnKxaN&aXcV8Wbjl zUWcbdG5a?+le5yAEX5K+*Sj)LnY-ymw70g6g&*sK7Tm85f1KrDQ@=2nQMdxzbI*{XoLVf}G7Drw|fvSBg1 zqu4K3FjRpCzw`>h9ax~{R!9lj23w}9b3@0%rX10ZB<5oiC-N!Z%i(4o=o|;7ihOv5 zD}RJudq!2Fm#%b2`|{8!?b7!dgd&*`Iu&AG9ml}zDCA%rj{crc=`dXq^FJG!^u4;I+b7bAqZ&P3#D~tUAC>?Sb$W_GHMG+} owT#y@dPxd@=Ih($ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_draw_marker.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_draw_marker.png index bf420efa5a5bb803ec4903c7a30ad9e0fee3eb2e..88490329d74d41c4ebcece6264d63cced6340fcd 100644 GIT binary patch delta 1023 zcmV3W zEr}LZ(m-NoVIf9a3M~|4OoT*G{Lb#2&E3b$+g(IsqBl9rynD|*ciww5^JW?i4nfHj6Gz<9Qy&zfgJ2na0sWeC zlskAT14C#E?0m8##!G$z{v}Drm?e#&_1ooWKU3DD{ zoC%;O_!QhLjhC1PY-6uLEtq9wENnCzN_rYtEQ-AxoOO6I^Tdw1(fc6YAbTj_ySRVo2JwC6Z>mg@k=&Q3IxCBnr^JE)gBN;eJIbSgl8eK)NPAo z2oo7!)qmw0s;Sydiv!YE+qUCQuH}xd;=i4XCEuOIsi6$S8nJdO2Z1GE8!9P57z1BT ztZBs=tI-(>xl887Cv;>dZE?91y9T;%Xf2MoC5tuMwc~)^hs@%g!HIKcoP$`05g!ja zksI92ZmiL+9S5Y-p6!x5nKl;5oeHBba;s9YMt{5Zxxm_{{~c)7-vS#TXBU$58|?$; zL5`!?d0=jiqZ%^RRPE!2c-M^)&RUv``>D+}j;$T9((;hxjd3$_;wzKio7H6!ZbV|} z`!yT{U$yI)xgGJOJ(-;4O&DU=k1L$#K<16DqnIv;Z8RBht3mv=AJ>j2#B%w7z)BL) z0e|XlRgi1n^=>9+mnXKl_N&#AM%uEKRI_!J`^z2F9?*#Irn_Iw<;zEWHE}uyjj!tg zt>Xzvj1lkA%z%BMRk$u8S``xCUvfVMg{tP5&P>f3Nn;(NG^IV0YE^Ud*9hbe`6Kvk z3;E3Ez!yxSRgO-HKDsK@-yz?Hln8v-mw3=C{Yf@wUbQ7YXA*79k=Dru<01&;eke-# z5h(poR4m>Im(3pzp3Ig%S&P`;^HVzB0t3@NrE|A-^g~cG#l#V}e29FIFg1C~CL!k_tf42AwZ`w3~m@4b90kZ%A0002ovPDHLkV1k!y$qE1f delta 968 zcmV;(12_DY2;K*fB!2{FK}|sb0I`n?{9y$E00WgtL_t(o3GJA%PgFq=#yP}b$Z0eY zqm7}0j)smxBhki=3Tk74(p^nr4gY|R|9~bW*hrxbl*Y=Ks2#z^V4@c_h@zgq?{4R1 z-m$y)I5Z~4Nxs|JnQvzH?e2ST-wh1>m;4OW^6s>^)oP94J%0yI28jGAV5e5A?aJ^+ zg+Yvh2G{`KK}zHkN8HihJ}8oofFyAKw@p>G1kgjnS;IozO#(lXi1 zyhp!M8f_mP<$nOmB~k8b%Lh>#*!GOBs^?(foCi0-T`-XvFFp;*W=b`BZ*)kyBTN=k z$z_Lh3p@osEr9l3j~Fez$x@E10(#Eat*yia^$$vW>1<>E{&A1~AFq zO^}9w9)R8QHa8&o2+-YU(n#`QYzEe=Bq=!HjakM>dw;4zygjE%GdgI2B-I9+4*iE_ z&$MG1-+0DnuC<^{huZCKF(7(+Q63AV$Dz$NV;N_a0a*>zRPDA5nL?|#w#l|Bv6d^k zj{OGMiutiEz-jWvf0Xdc>}&Yioe&ae>P+gXL=YxHY%^P|wc<=>^3;t;Yg=W&&rr(+ z=Wh3F@PBM+H_?5ZQYiKk5J%kSASS*>k;4z@vx~ZbuESPL&IaQ?OL93z;EKOtKMsr= zqp5~TQG3uVw0-~=oxNK<9Sk439j@ODx^bPWP<@S}wx6LLs6T*B^^+pBtXPq+%*36t ztLWKs7`JdZMawBsP1Qaq6zKV2gtHDLZ#qr(cYpn0m5zlddoXTzj$bm_*Mf6`fEiD8 zx?T02v!ztymi!^NJ*(0WVTe6nu5exg$^B9l*O9Nyfa}a{6?^vOTACs5ns-F4gd{pZ z-442M&V)|W8@qJ##b!uH8s(O(gqodR?3XLZ9?Z>!@n7 zkV*qVCrJ~<=#*$jSJ~%Mv01wUfgSdh=!JfQ%%_6!&l`!>$MpXhWW`7r`%qN92O#yK zC||eeP;Z;r()ZVrNE=;;e>-oZRu;u5c0r`S>X|5#+Mf-2qUVkv@`=W*W5yU!Ujis-=CbMN^*_uhBkc@_%) zDSriu`Rcf~TrRhuJpgtG$apSbwpc9AOYmEXB3i*Pm;~QIjHHu|Y+Kj8D1tVE5%3Ar zOY)I#J!F?YYi$}ARi;e z>aEp3WhY0A0$&1ypzeo2KEYQpjOr^2FKv^p%m>C@scPK>-F7e&u+6DbL&X4!B~t9# zwhu!cU^_GVRncOU5&Zx#8t_#h)avXo8DkY?E2SJ&2Y-Eo89P4AxGl_wxKAEvjI$o$ zui!4&67*3PY#w7U&-k1SL#!c~l6IN_*!#vW}Q#^lT}z7LG9TNDJDTZa6y8N+Wm zd##!sbmfZQQz*3xMyaO>;Zb0h;XO+bDqs z^j=I8!cJh+EiDu6cYlCCPgl(_ho7|KcZ2gNyRmK09VfGK zvyqWyN@QcpAz6~!7xYe=K)c`zTx2pFH(}tl7NmpUM2u1-j&c|!x&4;SnHH{X ziBYWu$=|P1WjvoF$?Xf8#p8SMI#TKF=Jga5ec2Mvaww;AFH^E*EUVr*kB}Y$C&0yJ zi+}1rzMvbZKUSFRV}3Ts@>b|%u$flwiWn! zEgQtxnzONx)BC5#{DRyD4gIyS0t;!+m46w!O+ha<;%%6Bfh8%R+8Q(}*01gXUw{t% z1kS#Fuoe1@u8QzqLRbolWQ9VE3FL~Y*gYXvFkOWaAhXFwJ`O~$Vj z;xpv3@uV|jhuOlfjT7ka`IPoQfx>i8>GD*oYuzQoDw0k%vW++KK6n`W79c|%7m?`C g|2rmL-aoAQ3CMzz7`vx@iU0rr07*qoM6N<$f=S`_6aWAK delta 1009 zcmVd*Cx@)ig(Qbwv+vB|}Yj%E}P7^%~;~tm-Ek6XBV{?_mt+l3@rQ76J zW($9)uG??`cYg-FGIR#2&Q%VeTr%Zu?)D+n0`@hdvr0Cjitv-bZL+S5+yNprJe);tStDt-{Xe3o<@oN04WnU>Yd;h@(|M--L1#9*$C6; zEMu<-Mt?QqHtu2q?>yLG+zR?a9_HyY;1k_PCD_ z-A*!2cs!28oBnhpKdzpTWU=WEkNXJU0o<~WaNrw$T;m$j_F$8V3pTl*ancioG2Vvk z>3;}(j1?M2HwBbiwqP~)kIMdXY7IAN@QZf(v2a}~_#M+MMuON7*fXxV4Vo>m5fXg? zTJ$SQ6cYOt${y9gx$B&3^%+u*6`-8TJ(66^kOd<_=_a4}GLXG3OtOHunqpt8HKQL0 zeq}_pw#oNGnh1QeuSDAEt;@k)xGq16t7<9swZ1!4NVyKyj29t6*$>4{;*UYF)qrr zUN?S-r$Enw{eia7k#7RUSgdlmjMfxU`k4I6d}4iNsM|wqlmk^RiE`Kb_#o;4`>pUQ>$l~RrBgAPe|giEVNk#WcersFmE`hVzMHcI)h^qlcqTZggo%)nVi zT~E{$+8+EC5H$i^r0a{lzBpjaZK9_bf2FA9r-X%!^fIE$Tvltnz zrvoLqgy+wx?MOQ28wmPtTCn|N_gC2K;3on{Yx(NPBO@(X?fy1vh@HMD{ZKwNa+SGJ zKq&GR(0|6fhH9#IUt&Z0)^^$RMauH7X22E;@I}K4pdnYRk<~sPD47$V#)za)a02i) z+ClSoVow;H79&WPbxLB5tafZjiCpqU-0$`#3u#J(y+-e+2>4@-tafbZAOxRb{Uz-4 z%d6%P=T#28#C{4Dr>r5>aEY}CJ}&VR>aya@B7X~M*N9tr9RHSKyLl|`;b=^8S#m5M z>K&Xv4e%@Ayv&l}BpV%Q$=iV$dUfB7afiUL@fxbB+I`6yvKjb=`LCHRGUsu6T$U&h z-6xK?DOoe%d7QsJu?P9X>KyNG*_}CiG3@@)ms7N!U(UAO2^M7a>{E55;}_ zRX-HPiK3yt-Y*R=p0Xs;LD#wPd7EWzQH)}%e_^B=NclP~;?V>3WCXQzGW-4Ei rKaK!Jc+y89jl6&N@0etF|1$6k_;1=TGh%2c00000NkvXXu0mjfOqJon delta 929 zcmV;S177@-2)752B!2{FK}|sb0I`n?{9y$E00VAGL_t(o3GJA%Y86oshVK;x32GO? zB9baf(gadS0*ZzRHljr^k6;l|NSz|B81M~z0*lxyqM#y(+6Zc45zr!tg-TG2xqkn3 zW|_M=XLoO+DB{4MIcMgdnX`M&?ww7m^S*+A3?vO7{%(2?p#PT0aihjS4^&g888C&88ntn zK5?Qb$Hb0SM1nc69NfnqFHIb8Z%6j9nH zzcU{gpXyodHh(6{0hCLk+|9NRq7Ja18C_NFV&Gf{*Xq`(T)^*?YSbTeNO~e%<{K0l zbuxOi0bg71vRKK7rT2_K+B%H2X9ms^a9OG>fD@w5lpl1}%D<;@E&!KCPZQ)99-wjE zg5-y%r_W^}8w2CMv0i3L!2vgJmlvqrHl={<@2UGCWq)gzPax=kP1*dG+iUcNgg<3V z&{`{IoU+=z9E`)jWv17gocCUVXsi!Aq@J}c3Jg7PLoMnliD6_W6EAm z6>Ai=cL!Es#P%-ObHj@`-hg;f;%)-@u4qyru|}-@GlZ*}^!tb2N(h~fbwsLaD9AD6nOQd7W_X2TlmV9xl8ZJfcxS+Uz!!TbvJE6zT z_K41KI{LZlyUb4l=R|iLtAKpe|y}?9a=7=FiMFX50j&Yw{YZ zsoGsB7Gyo}L$jYVol-|JYD*-k1-VTeadUFs9DfgD|6MG|oGYe}aCOs}Oyj}s#e=D5 zk&#<)Ecb{R@-JbCwLh+KmVx9e*i%%ofo$eOb(RzU=0C0qCP`)cf&Y#wAy3Q2d@f&? z(dpcFn``Ws%qLadekcf1WrK$Qy)q#;yhvHg*JZ$sK5YFrXi7j}vW3MyWQC+I$6|3T zUw_~YSxzmc{}$F06P#-D&xS(BomLT3|Bg@TxJVYI_mui>wYnQ1 zC-R9SZoY|+$!%QwRgsA4nkY2D;LrX$CK|W6f7<>7AX^z;BZQnd00000NkvXXu0mjf Ds(`!L diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_edit.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_edit.png index 4fdf49bd8a0e05d18069e8cb2da1b2f0b6f462db..8c3e92fcb91b4c14aa32efe43bb6ff8088a63e16 100644 GIT binary patch delta 585 zcmdnR@{nbMay}w$D|*Gn`otP3jZK_B?wh%MZf|S?Xn zcwHxyRI|d@e%XY5hi=TAc&fv8F{?deGE-^Gk$C|d{jIovrKfdoG*=O0S2awEHF@Kl z{%-RO{?CPJ67g;m1A4Yk4E?B3T=d^bthZ&O#j|>cN`p;DFN@7Tz5L*fM{-kg`a|6k zqQs`3{x5cHlE#$Zhb=558ta)(*czMmybXz+x!&tXZ+&r^+Rn@DD&O9&eH(t{*O958 zO+1;z?h6Rzd@$fD`EycuUKHyio5H7|$0kjB;?u~Nt8*%xNx9RrWTC_FKn1Dbx>OxY zgX>&dvXj@PuQQpkqkpj>tAyfDp4^xHtDb$#_SpBuDr4gRsOLXE@pMG54Va|u^v-o= znRdV$wTTAm2R3KEPMO*N_kh|%8SYc!ceSe=W50g?A-!#7`}(!(4$NPDz*;-}O6{*R RUqV4q?CI*~vd$@?2>?w+^&6#o6ot>mv}sbsKOkaC3(GWd7j48821HQE z?m~KhLP!F(Vx{)BB8sW3f+SraVjz{31QN2FXpscI@ZhdoCi8aZ?Ry&#_P}js?#z7e z+&gbH)>tJ~i!BGL^7XEyrlebveoOi&>4Q(G)uISjfhvePaDT{Et@yo@Q~}HbpkpW( zz-Qo>LtDL0patNMgK63LEb!Aotz8GuBcN*s9sn^mRF`SK=qQ&bnJt2^NRq@2Uk0#XIggPmVd>1*02=WB8R z&_&MtQUJ3kX`?KR`T+I3oRTzcfHjL}lGdwsrmuiacjZr9oCdFU;hq_`sTbTII;LG< kt}IM4&>L7|{kM{I3E2q&qeaMibpQYW07*qoM6N<$g6H`ASO5S3 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_activities.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_activities.png new file mode 100644 index 0000000000000000000000000000000000000000..6df9449732942ed8ca85044330caf647de836da6 GIT binary patch literal 932 zcmV;V16%xwP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz04oO5oR9Fe^moaNpK@i7tiD)NE zBw{R7tR!}VASm|%YiCIG z{x#*d)Irogl8l+{f<0_GG{qfMT;h-{W)s5zK+TSC?PbNx_l8!o6ylp~u-X8UPv~GH z(7I1!w9gWtE-KNJRJ#fLww%c8rXs=^*jIy$qIl?j`r3UyOI`P8Tfi$uvKoT$&7wao z=3nLz64~JNZIWnb9S?)_^_`Negnrr6se`_b1IgpEDStTvcCa?hcPWfz?2G2#B=>WI zac&>03fC2+vq|!z#?b^_{ck_M8yq+&)$niwa^2waEN+e5_Ev4b75dwrm=I zk6P4oLa=ks*_c%Ra?`g~H%nYXP1z-+CC!*e}d~ zj@)S5<9BW!D?@>slv!xv+K>HnGw=)kR}iHiM_WJu0000P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0s7XXYR9Fe^mtSa(Q5?tjZX^pu zMxrG}YK29isfn7j<;I2D^7n#RA#vq~nhOdm#f=gdlnd>~%HR33VoTJrE%_6&W%DNu z^M8-e_uVxDC6g@dcf|P^bZ1(uQ$HTqR=iVK01vupErb5BSNh zFcrR{D-Ea7{l@+p9XTm{1#s5HN?m~suvHyo0LlV`X6g`ZiyiUDVV?+hKynLqLnCy+ z1Go(P;5bOMI;%r9PRN0r_S-YI34W7I@x1xrKN__z2?NGA zna$T7PQceJ7HHqe(KUPzi^Hr)?&c1iJNQxVkMVd}p`Yl4}DAp4f? z2uG>_?1b$QwYoZ`g|G+KIcmuF79?r!xp2IS)g(hb?`qhIeVg$~Z4CQuAKxKg+%jvo z8s8=3UvF(zyPk4{aelTzKCLgm6@S~>toHj{2ji6q9BUJ-4orwytI%@eETexHR@h+l zHD9~Q*A6#roZjR&tW&jAlYWJGM)tdhv6CY!WpnXd1@lIflr5`3UsZJG=avE^w>B( zbsZdo5*g8<gxY-JKsn+2JWz`A8#eU!(>atZfg*Ju_AbIU2jp9~Wrjv?om~B{>iX z@OAJ_g`;p1=J{NKCcawehEE`=4Fs4@+Rs7YaD1DLUz=XniuLAXyZo*@*6f3ZFp{+ckcBG?P<5GM}_*bkF` zX98KRkgFgA>BKAqX`LX|>IJ>vT3C(e=$zzM;GeI+Pcy6b>+>&;&j0`b07*qoM6N<$ Ef;V{UZvX%Q literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_flags.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_flags.png new file mode 100644 index 0000000000000000000000000000000000000000..902dd07cf6f7d6d8c69d58988bbd53ed556600cd GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*%?n4$B+ol zx6`e?nH>d=7YAN1NH#>SW7WYQ{;>s;yirU7`hDj$9IW z%)C`V`PPb)KW7(kEAHIAH(W54z3xm}+4ud$#k23KOf^c=`fy$=fwfZZ_BM6N>5Xer zBX`#oOWgMRufgLiU($T!UPAv*)*74Si98*l3G7uA>>7i&0Md|yZ$^gW^~`BnHyXT(ys%Ue%M z+;orPo*fV>P*@q;AN7@k`PKb;md=#rGg?Z%nur>SUJ7-%E?>fbl2iA;%@OnVLaWnL g6VHS!c&Yt?`$X$Z7q*AO8$j{v>FVdQ&MBb@022-G00000 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_food.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_food.png new file mode 100644 index 0000000000000000000000000000000000000000..bb46604e500118735106c43d423e75e744b34f72 GIT binary patch literal 922 zcmV;L17-Y)P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz01W80eR9Fe^mq}<8K@^5F;u6%0 zqNvfBAPP#vU{FvYB9aJ#Cp~#rK?FqvuigY9Cr^SN%t;W$n*qV#mbfH0aRU`ZaEnAq z%;wg9f2S%`W~#UJj2Gv@mwNT;{jaKPW~w?hHC6i`cOVFY0xT|mb`x);ZG#oX;}z>O zSttB}b((~>8Mm4%ud)v>El~zV){tumTe^zTMgTx31+*6>DvY225;SQ{HqFL zy{=})K85zcQ&n_q5dQ*fRAE|oLFY|u1MwSRE%E!4xJW8#QrF(o`RNAmZ^LURHjY0A zf1H?H^}C@yabjNr!XqI21?OOidGcEPcDN22i!&`=yW0yk_apu$-<**#1a&YBvZGOn zjOlxI7PLe5r#^sx7xX~2R*PQ`k3n|N##6Nj4uvubq!N%szIJX=Tt4GV!9HlaFE{EO zYBkASK9Mh0C=|xwt8dK47$3mDV)|`1?zTw_y6+~J$?r3DHm9z~w%Vh9X1|D-nW()5 zWS@O$Q9CqdlIQtEIb$D;zU1vd@uUUK&pEkIuDeY(JlRbD8?~SzlU6r9y(~TZOZ@Ju z7PX*I!Yf@sDG6`dnsipf*b~z@^KZK|?lm>xr@9TOgWh)^-^x<$kQGvRA^u4?06N&-fd0Md whY?r{+d%&yPJphU4tC}pZPltf@K1K&FY&E9bx18!Z~y=R07*qoM6N<$g3wKr4gdfE literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_objects.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_objects.png new file mode 100644 index 0000000000000000000000000000000000000000..a977827ee2645736284c64785cd1bdf5f5f5f491 GIT binary patch literal 927 zcmV;Q17Q4#P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz02}wjjR9Fe^mp^C}K@`Sw=Fg!< zL=gnF5kx`7LQNC=gG3XHC^iub5wTEEM7v-mHi}@8G!YR6gJ4>*2q=aNVkH)eDb*^m ziC|PP#+dc@UEaXn+}z#n-I?kheD`L)_ujX&v$HdMO-&7J%s_23kg2vjilSZA9s@hT z2Gg0sPk?8cOy<3D|JN~)ZtxaVGUarq9ZljHLc9&}yWpH%{ zP;Xu?ivHjamrV`?RRdHj>kXtNrx3`12`OQ>lUEjIsy45%sFir#7OK!gq{D=M;8zzV zBqUS|q#^4lSGKHNkl1mHkMfqxRLCtEw%SokaGJsVN(0(vRj=dK+~o>z4RpqNwc+}} zd7r26G@NE2r2>WUDA-B`c(LNeiq_4M2Ye#7HVprjuU5dwQ zYNM#vdc>5q*5{vYSbpdyv4iqKSi{K(U zliXoD6w)Q$3_b&y7IUh@G*z+&zynGH;&ww@qnHG3C zdsoecD;*snO}F*yjk+92*lN5xDgr5Wq?nQx;AUsNFHNk+rtOU%OVY3O`B9|7nwW?D zXaW7Z@NK6NQ+^;xznVuT-ACXS7-BZIPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0B}qgh!#Q$Nfmst;sZ?7 zjK6QZXS_ReXXdWEpv4~e_MUs*bKl!)4QMa|y^TQ9=-a|R}hq0}l zFJLzs+8O=_XcuZbxB2Q7b4Ruwex3Ebb_u&Lu5Ym|S8nDf$b~*b0`0`7;5~Tj>0UY6 zGiTGHokaH0$z|`Ojs7sQT52qauS$tvUlt1H>%L*I95O^9N~edr2$O>r$n6{HACOfrAYfB3~%7MHX!vDp{f=z`>^WEAxp zb_38_={t2*kjuV@c8KDt)=E!Bc3lvKeCjDVF&4F`NurB&2B;XF)L+3)@CcpOO-AsO zFjaS1e&;#!U=u3HPFX!Wjn2XB14?!XOn^5)&(bMiq++YiC;!f~*p|!ugHyKXv`S`l zA7%%*!nA0CYe%W5OCaAl=qm3rborf!kHxlJh$@IgwNKazw`ei(^@P>EC@MW+gMl#o zXOH~gDN8|G#ClJU0u6P){sw89wX+vM{NEsqwMO(rwUL7D8+HFjQ3V-M#{cnG+6o%9 dgAr&LfnV(J7S&6AdrbfU002ovPDHLkV1nMzmt+6{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_premium.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_premium.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8f6e6aeb31e2c90eac627b7f61259e8a5b5987 GIT binary patch literal 1035 zcmV+m1oZofP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0bxA})R9Fe^mR)F0aU93@Ov|>+ z>ohNIHBvK0sa@Flv0$;)k-3i3pYw$3L{gZl(>+&@RG#EnwHp> zmokjw^F7b+zs`A{bDllVXuGgqeV^a||NDJ^FaMY4oRgO~CjZ+Gc%Ih)?t%+o&Zw@R z25P_naPoq|xKV40;@7N`Hgu1T8%L!fidTW(hHCT?AbB`i4V_Ka_uA9|Yj{Z@R5E6)6!*)BWVh-iu)wZe~r1+gtMyDoZV&^N3xNv498V0K&rd?la{NE%Xk z*zWiq&pVdtb94L&uo^Uj`OY5FICL?4fkZ1j1*V5cOt9?%lGh+V!mmP-&tOu7e<}9I zz=@82aVk%RP8;KcW1>HSePFx-&;_6qNVcaXNpiG$J&z>Kj>B00O81zM?+b9eR>vFE zI8TU$oCM3kQ%y|Xq8q^`o4-dF4hE+T@NG4onx6%f^QYOg`)5EIxMjBeDJlHbuQg{E zTC2M-(~@6F<^SH~w^~&66!62hnk|sRCn(8RBh)x2^9kT^ zz^6-Fw%8E)Y%!Y0lG($4p8TO7Nf;Vo(1ipG0rPKg{N-F!328|D37pj!|rxr zN6?SGI4VXQ?C!V@24g~FNbZh24>@8c@OOcr3|``x5Z_Ed=Hqg~Ms$~Np0h`3xVrE_R-x^pS)kwhRinn099d?0aXKzU3oHOHIf=+4iwo36ePd_s z{t=nDwQw(jidYg3{Cagr4rSs+`Uq<++R&43EXFDQ_cwj z0pytoZUaesz?IvO;1)kc^5-5(A7}pCdZPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0IY~r8R9Fe^m_2J$K@^6wvRW7v zBqX8`*h15&MG*W67Mjjd?GzG7ic}&9u9g;xLJCDJ1^HcG^blG$lN<0n~{-y`OjvcvD1FL-R=aj7r;qy!sS_K`~u!K z8jWwx_U{Io7zK-91#E$s$S01tqr-HRHA5tAlJo{>gX6&D9ZCmiRwSCO7B~w`Hc;+? z=gius8FxI=%otb(CLd7d!DK9{e2ycoiE@m^VzTTcm;xVN#vhCe;9yoTBynAgVkOEo zl^Z|6BTzGA&3r=lAHx7Q^+mBjIV8$C+)NSB1ooJeXgpRF-(fHf&VwU0ym9>2lyd96 z%oE6SK%%J*&J1>~xQF03FxfxJzob)q4*5ZWn}pnPVNVj_ z9p|^2#nTIJaJHdxM(Qu$l#_JVU|Al#ynxz_Df?&`fke zq;i!T(tSoUFpWJ^_>*Ro;}OuzJf@jjVP?f@HLPYqC^ux&*s6rb4X1HwMg9bBkSi@m zw3^j8{@Sc%??)1I2s{JVe0!Y^H*eW13FPF)SXV5^M~%FV(KVDjI{cy}KL+lDOTIm( z!yEeO$U0oDAO-9X_-?kk5xyO+>*(pjRmmXE0!j4xVMXCggZE&`Y_SoJfBl$^@hWx# zn?RQ+i7r*q3tA;OVo(m3i=oI}-jpMe&P>qWxx!kjG_`jw`Ce0+DSLdV#pO!Nw(feO zeMTI+h@loal9zjJ_emj{p0`f&yTHFM=loFoN=zI4oga!M>I;o&OVBdc=4lr>)QZR_ xj<|VC+f~V$p?*i6LZRLNXM@+zzPf8O@CT|0;77WCL*W1b002ovPDHLkV1k-as?7iZ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_recent.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_recent.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d44377f94a92570fc36095836b0d8ffc2194ec GIT binary patch literal 799 zcmV+)1K|9LP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~iAh93R9Fe^m%nb*KoG`r{1J(i z5=8u?ILt(X{iuIibO*qA&|`R`{J3Ey;<+thfffZ zkv{KwXXcyntk=8V*tnDbu>#BG^1d*|v(LtoSl}1Ji#ZP4MM z>iE(=3W}Z%w%fpEyT>dHW2i+TQH*kxFq#92o@B^s8k>+-pI2!fGPTaVcz}C-fhEU$ zWq&l?>8{3kY>XZ&1V|;M?LczUG;6s!x5o-WQVD5ql6-8MwOpOsV}&4{<;>jbCG(B) zORyT=(fbrz*G$v*XwbQL6tlenrz#Zr7H?}Tewo!d?PY{3g1$C=vFRjand%53dD=Aj zt3CZ2tURf_L!))>i*|LAjy%m7kQ^ipdIquI0-CZITd|9{f#fXKbt+`aQ)~BPl0PM37XV^S$as8F&MS&P3vph`YS8wz+Yb@_?qZ(CP;?PYjX;sDY#c*|U-R zwOjd^FU>XAYDZWng+xjDQC2JO?;Y}6N&P#&L9L|pqObi&@%H{od!l~eV`E#nl? d-Pmocz;6v7dO%)g7PkNZ002ovPDHLkV1lK|V>$o; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_smiles.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_smiles.png new file mode 100644 index 0000000000000000000000000000000000000000..9de8458394354cf2f0f2045c8537d163f3692f8c GIT binary patch literal 948 zcmV;l155mgP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz09!W$&R9Fe^mpyA#K@^6wiHRs^ z6A=;>3$aRJp^c#I50J$|41!&%^l7bvz5WG%f{^|qNf#svHVRgW3JW4w8E{>nckem( zWA5zUy}Ju4=D>UB%=vid?A)0e0?#Y!)_X55c&iSmn%Q_Of3E;Tm`cT)v{b0PEl;STRVKO+LlAD0eL* zoJN7D1HK!x2H66q>o^r-v0j)sI(2y?{UQK8AW6W5kqHr}ax9l-z%^M>B~X5*PspCr`$78}oXb6_CYyW~^DOim=Z@KZtS~I^L$(hj>$x@6uq_Wf`C~H@vzfaG z+HxdDA5Y1C=!?ye&L+vnv?)D*(d!p1v2&_uQ>=1Aac&SNbYBhgsH7q*-hL=!K_2y1T%wf#tZ%Tj%z%++J-VXah;*!-!1__Jf?r7w{M?It#ki z-~(_3B#JF9eEK6ljLwy{B#877NGeAMwpHKX_kBz67=Zx1N%I<1s;M&;5HZ*t2Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~%Sl8*R9Fe^m%D2eQ542^5>Z5m zg^D49g4r}t6iH!|MntfPpoNc41XGJ(qn$*2KpG+cfVLJXQbZfAECdw|HcC(t1%rr0 zjStj}zi&KunVHP%uA42w9{6(ZoO8bK+&!~%cT%f$tTTZXHi4k(=Ly5GpV}Q@O;wK7 zE#MyqLGa#_mtD?A)`Lm#KlTgqh3pQ=Xz7Fynuc-^gy0#N2R_zIaoq^#nbcJua-x>a zjM!MdBDdZigfnQyXMHR(IjrbYAp)#?g5Un0CXWHiq%PATH55NNW z24rJ}q$ZMRx-a-|*6O96Lr$vk*b|&3sKd|M9~Rqy?_=)xd0ss~fcODB%W*Iu!YcjA zv2NmTb8^cT?uscNXFX%rIt1HgFKKkbHET?Wk?G8tBC!kH2FF~{GWj#;UIMSwJF^EH zng+7b%z_pM>9IHJ6ozl&vhiD{_*P45jFCYa1ZU-4%-82=xE@=`XP-$Vz5rSDjmOu4 zI|AhEO>8Dt13f+Vvc}V$p3pjLsCO9IA+R=D{qwr^wIYolCgyt7(i=)QdzT6{a||@E z!RQvF0fu3pHp03a+yL|DbvAifkp{VsK(;eeltf}fnMExO(r?Lz%5GT;+gFon9E?`p z_-#wm`83;!?FSpvxsq$W+~4EydtFkuG#wk^?s%5?C~&uvrMHQzlR06;KADpKn~5wj z5t5Tc4}*u`8qnjf&0Pkn)lbSC@G(6g2aIr%N!`?%Ui)x&!6N7(?v5HR%_!;z?u*7U zVHaJUuSaFfl=PDS1k3<8@mqy@6!wAZ;64ypFXyKUNhL}6U0?#FO~0LqH&We(wi(Sg r(`*k=-{;&W_j}g1J#-qa{0aO8LGH-Hd}r-!00000NkvXXu0mjfB4TuB literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_endcall.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_endcall.png index 3981f2e916262ffd0a84a7d7fd4666e04b9d706f..bbb986f5f5a1ef3d5d3481e78fc94f693ca6c121 100644 GIT binary patch delta 630 zcmV-+0*U?A1?&Zofqzy>L_t(o3GJ0VNLFDK$GxFx1f{uzeF%mi4NXnu(9+N%;u2bW zLz^@y$qge2nj0brBt&a#u|W4ft78Xd02rpScOe!fmX+9bRAex{Qx{; zYdbcPYjc<$Sb!`UA=s2VfFw2b@HA@xv3GE(XoiLyh38=9E6yzwhzkd~0(xT8*NeSq ze3?%my~W*b5`P_Fx3YrY59R+m+RHy3NKauv1Kfq5ei(WZj_;nr{UvZ6^zwO`z|ala z6Q4lGd%*%jwZ6}m5<3HLeGdH|&X#L1^uBo6#ux&<&zB`J81fjq-)4U@PE+MywbzAT;OrKK|Z-Uc;RZK zu4L6^#i;EveY)o`3Fy-=6uc6|%%l68qR=4&eczJ-4=*PeB zljt!ub;55K{D$su!&2UP6!3Q%>AI5Rx>o9GJegXrgz?zS65^GL0{-wi=CU|29JA40O{7ee; z3Ham+m(VwS?jSVt4#Pdr_VwM<=JorRFBI*&qWK*m8#WL&5H=7t@ZUD@2k72@R*kI} QfB*mh07*qoM6N<$f|_AFCIA2c delta 607 zcmV-l0-*iu1=R(Rfqy?qL_t(o3GJ1?OO;_1$M22&k(CGzVgv@_B+;Tn>EIwZxND+! zX~;<2!hfNq(IHX#2V5LjD{S1f{?u-d83@5YCyFi`$#fZP9sB61I(2u?6H348?*=K_1a1-h*iBEeV-BxKyQ`%;_6CFi|A~6R313SxFZ&cohC1#fT zK%QPbV%oz@dym;>Lzczs!nie>Cs)w}dAj3nPh8%H^xSN@#Sy;KihWQ1uB(xI ztXi+{PNa(i{|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNx+Ue=y7!twx zc8VcatAT(^F{A%O)i*l2duR2EZxzgW)RS`1$tB#^AuTbYZsX+R%=H{nk`oxgsIi7E zsmIhv;q2w`n-h0sm5Xz^wHPbU-QKZ%C9`(ly?G6f#UcgzxVg%!CCawuDab8a;2sme zZtz!G!up#-E!*S9Uoy}5Ld<4p2i#0Nx1j6b9EXqjjfeF=&0T*|ZuhRA1xyESEtBbS xWNr=!_L4MaOO`eeP2RsX)qyR=f$d*T0_zd!T7!x>#-||9c)I$ztaD0e0ssU#V>ti- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_fave.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_fave.png index e3cef5acf8bf58deb13a8e8eb4aa8e672fa3a9dd..d3ec39c06840b1ea772e9cfeb3ea931d60625a55 100644 GIT binary patch delta 971 zcmV;+12p`_2H*#fBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uz0N=ZaPR9Fe^mrY1iVHAcP&9n#tDO{!qK~(MnAqfnsMSm2yiO6L?i=eGRo4}1x z)I!`x3#(m35F~A^kR&Lm7LnvekXl5!C^F64^WHgU{I1U2xp!iug)h8w&Ub#^bMH6z zXQrWH1L-?ZNKaSKMp3kfs^f48J}wjrAFFrOse*&K02iU-7tYx_jZ2qha3|COtj13Q z9qHYbvyGKgRev+*sA#dOL)bp^w_wkkzkY^Yn6a&y^r@^TEjHt^b+HWXvB5Hze5m{& z-sADQTZWF<;3aIk50noT6Gl8h@vS(>@}+sOLP0y-bnLsxC0? z!9e^|;C~lgiVAQFI$q)UmaeIcyguU-#lrVCMJev z?MPLnpc&qZ%Zne&nCoy;YGX=Ly`~{8hi2#k&jyP7;dk%GK7(7cb+1&Z$9gd_q^ajz ze$dzjU&k`VkKw#3v<(OS((1~qk*G(Y6@E3*v42D|!-Bps>y<`pwU+W%cd~02%Qg$W zNv1Nbyhj?+N=23fIuR&53jC~Y*b{1H?N8RR%@ele)5%Qs75&quq1RFEK%@=&53ZZ# zl*sqO`^Mf1HU1cpmVf=_O4DOB4?ss>SWU16-hh9+zfEpNFppqcnuvcdF|&(EK8nh@z(o;y1!UxL|P^z5jL_!*`)- zR2$zo*e6h!Dhj7<|8nC z|42~y01s4BQ_gBI2}tW$rM^sY1kS)&lSI{f=o-|&(^RMi>b2od`8oXBFX(U@Li(+= t4VJ#1FrVhrqrXj6PasWWBllnLz+c^o9GK$dm#hE)002ovPDHLkV1f@@#9#mb delta 815 zcmV+~1JL~72gL@EBYy)7Nkl%Q;rbv^feUDu;Yq(Cq}4aBuoiKNw%9!u(rvq2C9e}4`-LNQ7JTm?peR$yA3 zeG(!jp|O9}|BBEopnnKh1#ATF*nyvcWg*#lK)=o30_uP@X2sc22>G5mUs9E%a!E@h6-!!Z zrAX4;kPfFMH73yQq@?4av0+IAk_N53Hm~lydwUQBBZ(|@g=iQA&N&5=XgnXdZQeTy zT9aAmsifuBeIx0)q#@JfrKElv@3#7H$dj~EQh}sGvwwD}#l0fym)QFEK@b!qvd}S4 znc%Y3qh-;87?WZZtkw%_+~RuF}d%!j=5HaQTJ%qH)}Ipy|d;utpo1Gbsd zusBUJ`G4M>`3USxJqSLX%ces@2$NiTZGE3?zK3S4jh>-ldsAap-QWJEJ*rr;h;&bO5mRTgEaz$ tX()PX_vf(>xM^0ai2TVWF^M>k^b_na9=#3W-J$>h002ovPDHLkV1lKfjr0Hj diff --git a/TMessagesProj/src/main/res/drawable-hdpi/abc_ic_menu_share_mtrl_alpha.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_filled_shareout.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-hdpi/abc_ic_menu_share_mtrl_alpha.png rename to TMessagesProj/src/main/res/drawable-hdpi/msg_filled_shareout.png diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_folder.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..f653701f22c42bd87830b9f5f24bd4e3a636527d GIT binary patch literal 613 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*?CVF$B+ol zx6}7}IXeop7Kctr*doYM%fP)c*m1YR5x0QV4snMMUGn=NSi>&OTc*XqW%g2~S3eAmo}2aXWWeu8%Qq)4UR(Kh#>vG$RDQ4|RnJVx7tWJA zF|l>Vmz9i`f_HDkeAQa_TBmlZjpVBvr{A0WX^8l?y01e1*q$F}yKlEW+j(=@51S`1 z%{UjoS>F(Az{huT_ae8?n@=SPMrb>|S$T0q%It^bIhz%wzucZJ-}9&I=#&5NZnK$9 zc$we7^5b*s7ma6P&K+%>BUU9Mda1NIzdtF>FVdQ&MBb@08Ib(@c;k- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_folder_reorder.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_folder_reorder.png new file mode 100644 index 0000000000000000000000000000000000000000..e21abdf1b1f02a9ce46a4da2424221c789b7af8a GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CxNKi(^Ox z=i6{wZ)Qh*XRnysbR>vhyZZ<8A6`c5(?6JXf|qXEv>{x8McXqyQ!%2e zE8a6Z=iK*0=M0~HvzeYEe3ZwgEbrOdGpFy|E97ii_;({`OJvn!i#V4&@d#G8%@utg z)j#+*MoF}N?Emg`hU)@D&CSGV60chpJYteIJG(4<&Du3geIF}7EI%`^)aRv9x&4td zD>lkJ&nr+^@NUwo*v+}J8(G9d-o*Tj-96(3Z`YlfPP_brZmVS|on$+>`BU{%FWOAoT(3jo*2<&Pd1I{NAF(F_Vq&!iFT_)*p7C+r*bzC`@747}WJZ zz+oa&f&S4AVGY{FXQy6IdLkP1RPfDA1+jEthi;+xuqC&DZj-pbUFX2==VH5*9xyIA z%lJO+sp;d14_WWAZd~ko#p3Y>{UnJO-3n%#I=ng+*N4v+T{AUXr1kSAo=0K@ZLhbV z^Q{#<@=V}k*V7fj9WmeEPV+px$8@HEnMJtZ?G_-L9 zu0GOoc*>7S!CxGb4i!G?R){TF@Nd27m&9X6nUeiSTAaInOuBqqMNOvMj&J4l<;S+# z&EI5t;OX8+z4QMRw<^@<$K5fx{_7VH&) literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_folders.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_folders.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-hdpi/menu_folders.png rename to TMessagesProj/src/main/res/drawable-hdpi/msg_folders.png diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_archive.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_archive.png new file mode 100644 index 0000000000000000000000000000000000000000..3b960e7e14e9794fececc50fbfaa60488b28ee89 GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*;h{&$B+ol zw_&#aOpXFi10K6)Z`o|Rack&51~ZXuY#DESe#maQCU)%~qqKF#R+DRGQqh6T^WMwu zKE7#tartSdr@lrve^%wUCvMsqwRTb#)Bi%ILYeIg^e?zR5m!ix_MR!*u`6Iw*3ZU= zi>1sPFY;z_vB+w4YJ9)o9PgAQBIbVR>c^)ZuNd>RnPfi7mLw}GHFSi^SWH@WD=vn? zRAd5+^NU&Hjf-crmzV48_^UU9`SMShh*_^c^qiUgWRuR9?!Pc{jygz@Mxira8 zzRPC9#M|!1@7w&}$o(-lR=fE}u}rVT$t-@u{&y!owEjwGHa5%2HTt$hc8>c6-NWC_ ze@^GT^gWf?KmLK%Zn4X|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CySoi(^Ox z=iBhTUd)aH`-BY@x=Ocf_n3TRM$pEt+F2%c4Vg@pjT25i|DamKE-iTEkcrYi2QF6u zLyaTvy~_@zz5AwjGFRa!uTNTf*|XXDo2$izSav=UK4I2q;Qh0}LTBMVp1Yo;sq zl(;8d|C3FH>w?)9_EOI8GlCbo_w$(BTg}o~(wsQX zXa~eS=$g7!H~WuF%}J?k%zq8U(!8ubEc+JnmgVwAV~#V&^mSUxT)4I!ZkYHe(OUX)SYYQ=OKdh)h>%nYM45vFwb){i}Q5YN~wU_Wu3m?$Paw_Z|`4Q#es=4o{KC zGU>^yt9xn`MJCI0<|-69njTT&v|}ntvD>gG;YrJ-V>>npOKCj26@EJ|=5F$n(=F>R zJUYK+;ZpyfGSchkH@$pinb+oS`RQ`w4Z|zjWlmmaE?AQO=)QtT&Y~ZTyVMmV-*UhD z{xRuqoCN!lEIId(=ouZc86LLj3de5EJfR{tQ|ahq>lQhO@;7^1O!YtTezCf2sA_Uz f`zOvde^~x8TJVYUoh)Nq4N5_tu6{1-oD!M|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*=|o4$B+ol zx6}4|Gdl_#Eq2Uxk=`n(*sD<1RJuWw+fjgf>!vT~1w`I#*|_1d--eABZ}}ZOcZ@@5 zu#Q`&!5i63MssM z7&eN{&~=sQbw8;2;jP&Y1rd{jo7bz{t7j2*IqbNB-R|+TS4o^w8)Oazd)_M*_BnNL z1K*!Y5!e2W|9eW0cD$YMcE;{S<*6eVZ?6l!CL=ySbLoq)MUl(g!!3dh9QE$SzqS*6 zzn%Br^_L#64=~<)*lsfa=ts$4>r{m|B~9AX?O*gM$5&&z#QuzldsSC>oORkcO=0J$ zr887t>=Q9H*~%h2RrSQ1)2T1NcYpNFi<%YLdo}xgljf}7%bVwve(FECVfEs**S20y z;x6vUYS2!Yb#=+}mOm=1^beh7J~{dP`~_z-{UhonK1xquPq{$9S!PXK;d~$)zOY-&hQ9 Sa&*UoqSMpW&t;ucLK6VPjP;`c literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_groups.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..cb63e4184c5bb45f421040c3ef1631e9c9711e68 GIT binary patch literal 741 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Czg}i(^Ox z=i6!fy=5Flj@ya`GIJf%>gW{Dz2X$$vCcD5bOT2Oi=bz!;1MsDgCQUNHwdj^7Sz#; znBkze#ISYh0x_v>lO_TEh>A%CFMd|O?mMSzyg4~y?YD!+%|F-Gr02a$yFP2yl}o}N z{txo}6&`EHuMCL`u;!?L7_Bz>=I6J*Tl#uU4vAlQ+jR1`i})wO=v{&lV+#*tCDnNVL#@ z6usCsD{eKL*!|4T*AI{XQjytz@b;G5C-xeBVNr~pyvjb1x!wHg46~KqHW$@@S>!p} ze@QxBaacfKDyd3CZ~gUqJwMlNE)c8xuD0EI!@FgVvs`k{gvcCwqLi}O_FnO<;|pcF zUcT$_-0#^@p}XeA(OVVQt`x79NGi&HQdz>mzJWznPw*4(2gWP8lPA|bf31dm;c!N1x!CdLwlkFQhbQkrVZ+s~vu+OYA>U8$WN`-@Ynv-Fs%!DYXacF0yk&{nxI~GXJ$Z$Awk+gID(HVDG%-gkNn^p$3fiMY2wWe&1NX z%H#e8lY`6?Ql8ptUfj;ft?=#BsmTAQtlA&^3BPe`t{NzI6>J-=EgHRpSN?SiKIaEY O#0;LUelF{r5}E))**P`< literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_muted.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_muted.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e8c75869bed19c1869dbc882154eb38bded16e GIT binary patch literal 912 zcmV;B18@9^P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~`bk7VR9Fe^mpy0{Q51!%K z3@RuD3H}7JiApRqm7*qyor+pS5YwoQ78XIU5L1XE!AdMFL<|4GMnr{}!X+X?L{v}^ zv=ILqjX!8&T)#8iCzoYrcEiq+W-lD>o%7zDbN9{6o7uX$TGUpciYrhk6k5R^(3E7u z*kbSid;>SY?4-FB^N8O8iacnH6NJC12`-Mu%`2CyFEMe{#@CTAVw#JY-(JKmFFMZd zkOpRgd+yht4(f25z-{oyjjQ|tu7K_^H`9!8Gk6L@9FPGAOTdRfCgfZ2vodYS%yo0W zGgGa|R^wMwj~SnoMi^+RMpG-D`FHA0Yic9)Z;%$lnKxwS-MCJe^Luie@w=)28lRLl zXVw%B4Ip~L$bHW71@#X75(%6yg$_26(O2vVPLj`yh>tf`ZZk1LylMnxIrqo#hu zjB^}cc8-@Eul*`1R#ntUI2rXpbI^U#Yv#I)!^SHO7_Yrc`%_$O51JKal+Qc$aq1p3 zZ=u$G6r#`gCWuFYbU7NYs2MZx4M|^*{Tdru25NBBb3$?_MKZ4x3K z;3Fs%SD8=`v`1ZYlP?5)xWq5dFef!5&;`CY@lxek2{Ne>gmRt5) zQ*$}tl{+cgP|Nj>orl;HCpeXIuQj!llRn#tPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~*-1n}R9Fe^n7eBgK@^8`W8zgX zXcIKXT2Tu@EfusDOq2v0HBqqfKd`VDK}4}hnh2tJOTkBDG}wrbXqDijPb};b9}&&< z`^nBSJK5QtS#y;@4t(tFnR9+~?(FW&ByDZ0w!&thR<+({v)M)Ne&|V%)GW-vWUW@4 zlcS|Z5uI=r9>D_m>^mI~;S6-Pq$q?3;UmPFat4;ID8$x7Besg1_`A~jtHKcIf!8_W zRb8)0+)}A15;Zf+S&aD+FKMicE{Y^gafp2-=ncFDwL|PqR6!^Xgs2j81vVOS+MD1S zgxE2YS9nE9pZ13U#j8Fca&H9WzbB@{r;+*z(%MmG;{06{dV(tsB#bZ%%7Zk0)=11=?801eEfqP7F!Bs1|wxHD98PeXg zHtlVFqs|cf>|xx3v{8oGj)0);0Wk{MYR6SA=#(wuX`l4?U3X>@+=AR--+e#NzTekL zUmtx(ef>p#w;-KoLQNa)c}R~JwAa8n1R9|t#AU|JtR;vYBH(F+m_k3nB?o`A=ZMSLNC3Z_Br7#p{X$xY<3orWUQ zVm1Z`pxYIZ4-UdjC|hKQ-TWo@h;+a^aP1e4OR#xKlE>u18 z@r+yQCRfYEPe=23X`&rK@-0i?y4_c$jn;^z7k5C@fF#%9c_N};cL6eAWk_Mlfs3F= zE~|EgO^VVBYKoHBJ=hsiNRq#c`1?vs>;>20cQAJx1T<6j^?k!X1=FCmYxO1Cs{QvF_ziLWSLu%!>(2lH002ovPDHLk FV1hm)gew35 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_read.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_read.png new file mode 100644 index 0000000000000000000000000000000000000000..4bfb24412db608c653262e2b73bcab9249d29b74 GIT binary patch literal 811 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JhJb7srqY z&bQMoGeQzYT8*WYv_S`sdGPDtA_DMWM2#tTj^j?x=1P7yQ9 zQtjZ*WL7$ONU2rggp#L1t3p@G>>Blb_J3^N{l33PHNjAv?|<3(o$2pBY+JU>&BQ8T z4f9l`FHvi^$^VlqV36tA@=Q|vz;v&rnyRdqV%U#v5xgC4Y%3 z>|1(6^PGRPq;md@&w_80-7Mt~#;py0wA^|-&)J>M$#>S-cCGS$esIaPz&lC*H$Iy& z@nzr!|JPQBeii=D=qPOrxKqgLVa20%AU6L!%WKOCs(qIGEEjz-b$vTedD8V)XG<&3 zFDrO_{BhrWi$gmk(dlmi)3=o#zHazj;|Q*GOa{8w$T6wYG>h7`E2R`~^8s$7KZq`C>v6Tnr$!YJB zSXXd9>hu!l`_T^bR;#_#|9#FeUQM{p=*e%-Q*Y9LGF`M?%QdU^?~!T6nDw3DDC*P`Od9gNM msz>o(^G3m5zCYJxBiPSPW>{BmVsZhLP(5A!T-G@yGywoWrBzY@ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_requests.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_folders_requests.png new file mode 100644 index 0000000000000000000000000000000000000000..6254455f1717e5b11038d83e2c5af773d952d8d2 GIT binary patch literal 836 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JgQB7srqY z&bKq{GejIkj^!`5beZJl(mBH^XN~AVy&D{2Y~0+O5l4e2bfijYzh3g$U(nl8G4POM zSBTIC&&h`z4mdfjGD+%EX_>SC{hi3PZ|C2fdHO`?M05Ylx!?Di-#_!_%(>Xbg<0x3 zY?Jc7ZoB<9F)6=ETXRa5_R*|KD)m=B#PbUJ8gND>@Q2K-dDL>Rf||35(c)KwrzYIZrn7t4OeByN4zn)xMswrjKvF!&x8wqY|;FA}xcLzV>Rk z_55JP*$lG}`c1wD4C@-%A838JDL#k)W@oOv=4V9@{e|bt3hYiYt>JphoWLc+FyA*K z@oK11M)vi$%iPP@euy7PSoc;k*DhH8t2@(@<@Od6PkoyE@Mrj| z)mm!2`!}fsvCld`&BtH~zv_|K)9Uvf$v5B1vwcg8B~Oj|hDowb-yh^gEiZVp&C~C7 z`0?PHfcRf5Q>D*sO!5giU4A2d>f9oM99Eb9n^{{zb1%1VivI2Kz;@dw$5{zoMJft2 zFQ@CX$XW7jGOSzc%#{J zh9fUZ;u*@n$RzsB|EXF$r_s~;G|P9k4$;MWbL>o4osn3&?SWZFTJP7X@&RE7brk{) zxAFf}@{X(B?GkeLAji`5Fbj##-pel5_DL$;F@K;pqq9f&Z*VS8GXKvVvotSl*NQHC z_4=4#z_hv;ZsQ|WS+UErr~X%-v)p327Soq|p>cbToV;0bD}3F~CljCSy3&4c@&1Fg zoYNdvXqKC8Ru$^@`;tHP@vF`s(Zl`M0b&R?}u)BTKfnu>_GknDWbP0l+XkK7nNM= literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_forward.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_forward.png index 5ace7ef56126fc3a02dbae73a90f8b8338b17b35..03afb190caebe0dc12aa81854bec1b8cf9883570 100644 GIT binary patch delta 461 zcmZo-dB!|Jxt@WsILO_JVcj{ImkbOHE~ycoX}-P;T0k}j17mw80}GJF2*grA%)r3B zfRTY2NHc=O7BInORTeNK*dT>ke2@PCl?8aZIEF-UzMZ6o#LXAR!?^#6k!{NGkt9z*vX@8xpozq+j~a znWWLET6ZDjVo=gQlRB34w%I~1MkJk>l#?53wvda8ZJXn-q=9A&xu{CIFsVP1`kF1| zOP!k3fux==p)`Hy5%4(KBi$?qoCA}RO$S4uVbD*PsOq9@UK;}2F0({Rn`MLd-j0JY(1Mn?TwxnK3 zm-Z5FN_v^|rG6@DUDtd}d&=f5^-$7_oHEZOZ3kp(S&sdVB`@Zb>6G*(ATyV>F&L{>X-HApz~c67brFezF5{8Df`O#C^z}+(n?zzB{pT>qD^= zbwTqR=rZsgI7^xw)rYd;R-yv*+e)3JNe&b8>ORx5XOWt)E%QZ-*wRSCCj1Qi0M_nW fsHCLiegRwo6<2|oE)NlD00000NkvXXu0mjfWL4)3 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_forward_check.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_forward_check.png index 4b5ce7d5defb81b8bab71a95af372f704c200a13..c33fff46dbebe6c555581f1f8d4a38ee67520026 100644 GIT binary patch delta 394 zcmV;50d@YG1c3yQfq!dBL_t(o3GJ4@N&`Uf8c%`hjF2_xzzdYrR{kLZmY@w{Z+|eJzY5=x=5z1_VqdTs zQ_K_sZbXTPU9K4RRY4-BufX7|HVhsGF*eU6CQ^8GKDlnX)eE;ORq?L-2XNr8WBZU o5ufHmSdLA=CSVizPZRhCle4l}=0ccdzswc zB@!V*2SNuz2mVktOEEi;$Q z(_RcAybeB>C5uKu4*Uv)}H4v8-5Y1Xn-{*zrJN z%BgrKa)gWEMLCjZD&J}UK!W!ZcZxLGh14f8oLlzMY8P%guU!U*ucb@0ncYnY4BwWG+ zU+=l+e9!rv?(g37?ysh%1NmQ8pj0aLfO)VAir_2AgVFu`H-F}0$$98F_F2#w^J9Ag zuH|yMPu@@5Ddv~KVQ1e!e*t&N*&0_>3^3V7DS%n<0DJ@{?@-!&X69?=jEoD|T0Fn5 zPJmw1w-U03;eho8$e-7KG^M~rR=hxMV)}E1QWvYs?VC*^Y3`n*>m-%8N z{$8*QBr7pas(+0DZD2_um4pNTP?@#!=V}&LK4`ZR{&qd?p@7hv%wGleaO(X%p))ey zN^H?XID@G@*zbe>G@M&eNs8}mdG3_oSu0rYtYI<3s zVy5C5cCB!HQ9fT|#aJpL+rSLagG144N?jStVIy1>^~WX2ET(3USR#!iQPaBsbhLGv z-hd^3mw)USGp#S=8G>~ayav~aFV>GbV8mCT-Ye57xDC#LX_oqVJWbrnt5Qoi4^D$4 zU>)Si^O_>gtl27jjsPB~@RkTNIor5IdokN26Lx zcV;1SLP{&fnp#(^Q#?HBwV42!zraiueoM8j;S9^VLa>fm}-9YrpASLZJSgV_1>&V{9V9KnD$__ z@nRnY+dwj(m9xf2z_g-LM6F=X2QgREGtp_Px_L5JG5W-k=##6FJNfP-2xtKdAWf=H z8zfy_{C!HNN%!YjPyn_vsHO4UC+%p_B~=YcniH(wq;sHC^F%foAFO?; zqUI6Vz&1(Ty@+rBOcbU&dLHOMDvDqg=wozmuWA2EJjnd-EASVG`55vGp7>4x0000< KMNUMnLSTZGHr(0( delta 1061 zcmV+=1ls$~2$l(ufPVx4NklG@x!26e%?!wuz7`bv6#DdH()+-?^N3 z-@Um}2!iCmKWF-%^S<}p`<;7Va=8I{Uv{8SC{%&{panby|9^ufP~D&3F`v|&53M1- z8;nZI6Ke$P^Z9(c&r>%A|2t6O;@#LSpaK3f7w?-%)9-=FD~xks52ytlz@!c1L*Etu zk|h)LU&KD~{7jpIso-H~){b82i|~g5EzaaXEWevXwcesd5K<-RzU9e zz>}KpdHBP@NPmaX*e8MHzUOAz6xby>+Z!3)e02}9sW+~2@P0BfI`O`>9)rw)D0@=y zFIhZAUm^Y~)N?%`MldN&Xy(P)u zkk?7P8+cmy&^V9SI-r9gxdRUNSj9i}&i)PCb~@gs=jOBRwwf~-OMt%hr(iR<4mqou=9AG5uK-MKwz6R)(Vmn)XKA}fyh)bnYqzCjIFamUdM*7@FznRcXBf!rO z9pM#y?E-fZ&;f{x=F<*PHosDPL)Kyrfw;UNuzxnSFeKn?1xY8=_q&QSE~}TG%!7cQ zGbUPu#O8@UXk%IR!&F0cELaAbfXV5!K0R?*+L>d~#b;m&5-Tr73*|oCCLjm$}aQ!`US!eI5~L4nbd& z8|;}7JMriFSlov5AF;3F@!*dPx`56)+V*9vrl&N%L!sYWtDB)RkN!NP%NHSUH5v4f z<~rX9*IGCDL{RB4)^{O38FT|lozHojoPWPpclunWO|c)2`k=Vf`X(gzIl|A_C2yYi zOF?Jg=-03w;C&YgJ_Z*2aknSgC?N&YW>4PzcPLS6CV5F f;|5y3n;m!!qeMLIaW(c_00000NkvXXu0mjf!EFNr diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_forward_send.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_forward_send.png deleted file mode 100644 index 33c0ddccf969edd156f82780efe47af171f67e77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 935 zcmV;Y16cftP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz05lKWrR9Fe^ms^O9Q547LjA<~; zWHc^GjmwBgQ^+)VFv61%Px8PhjR#CkG${{A9w-l#l$S#^UI>{NmxxeOE`=fu(c~I3 z{F(abYBxcNuQq56v6HUB(@YArFO`SOJA5H7ulf8mQHWR8u6kTpkyXRKWRr_$47)Q7(mr z@ZJf2!NsNkje)Qc-Z(vVrwKCuMv~mDmG~)8 z1tVcF1fK_L%3vFGfZBPpcYjF5BCW#P=Z#FuSe`pCK+ei-xB`cuzfYOP}Ci?QD zHL~lpBEZWNyfP9=5shIh&`+dhLpT0CFy@wKAyAS;KTfG%JBy zb_XuLg#YV@Fr8LU){{P{Xk3O^6V$*Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uz05=lfsR9Fe^m%D2eQ542!6B8jugBqhod{ikE10qVwDSuN$K@fWjLqM?fAFvS> z5!6P|E|rU*h*$=+5DX^B`T#2t6(JVJBtl(qZ{uh_T6HM+OdC# z&P&GqiD(*njekQw=Gz;*!9DDgZu}En0gG^dXf&sztj|20=H|{@fD~qI0n`sji`qqJIeC+XP+#lNpR5zY*g- z;Im863h9vU1A70MJjLkp>oRQ$>IgAz1CKyl=5go)EryCYD5u|6R=1#)27WVn^ z#eXGK(HHq@ETG z0R2VU#$8xKrwgRc0DITCTV046OJ@;_F#Rzw3GCF)lhF^FWs-?L5qxeGZee@~*uN1! p+>EU~^Dgr?HPg9Ov)(K47j=xhE=PqBRSW7g-~HsyMl@+3!+8PCJ3|Iv@#??D#B=CACg&0sP7j;=jAxO>wC}l zUJ>|*!<{+z%$)z6J9Fk-P2qn-l;jH}o6Aj#a$HN7q+YM@e19F1v_n$8r0#G)6h&hl zAOh-uXFxyjJx6H;X1ax%%mUu=8^=8TA90xG5xgL&HjiI;yQCSCep=u8Dz*0fxIsRl z8hds~x+`fkM?!6q1_Iq^@SKoPWUHx`^eRU(lSa64ha~m6z!C<>zX*OBYd&N~W4 zsLXQBo(yakNPlXOR5?y-`Qa-tFIA4nQtBAP2^;Hj(kIiNHr*=Vh3WcLzz98*)M@QT zN#`ULOBykqO9!jXZlmeW7cxRlmI9BxNId|)So;a^#@Zu5t#@@5jF6L3;5PAaSJYnr z>c}^tdf*zc($f_KEh#9y2eyTGSw0E*PP>7%!TaOh`+rWLBGu)Z38BTnrZi-Zrij1? zU~6Dk1vCK5;%@tNgw_GCfnneVFgwLWn}I2VkW_UA&V#5Q7^cPw9eq^tiNg1l$6i0td3lQ&qNLhsJCP)nwqH zC<`)9=Gq>0I1@)GtPT^Bnj~FPdL%Ni@i8cA*lqezoKaYQxbom;mX0z-xuiK}`!Q~e zAEAW(N8OWje-aUx2reSKC6$=XqqHM{vnh^rA#ib`JQV)hAC$CD(i*Gq@`Z#|kar|q mcJ5NmJMQ0p3R9R2B>e)RNhCMj^9*tT0000-BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~lu1NER9Fe^m$7RUQ4q#+YDl9^3L$V75>p9U8np>piGOXd5FthW1(ASF(u!@G zfQ4WuDK%XP*QByjf*34fL=+TBEP|N4{J!VR`EuF4+jyJH7B}$Syf-s%=G)n~?{)_U z`qJ+}cO9tZEe|1_!gn292Is*U(2e|I@i*`etk!C^y+X+#G6Wuiui&^uxm9DREhz%( z;0@@Ns8&6b6n~Cku%0ma$ao5fsM=&af<(fh(w~J~HA4-LB(Ie2$z}Z7VB^i|4 zYM`Pl9!QO8+#FIXAa}DLSlGoxHLMmY%6Ky!(|I%Qpf5HZ$2?Fipqi5TW;rHn(GtGhct}DbD2OY16hk8pK$y0i)Is+cYt<>!}7nL>Q*aHccESfoQM zwr)YBG)DWs^KbK&riu`HL^VC~+ArES>dbc_X@C4x<^6WNWx7ppxJt<N)bw*^S zfy-+KapRkzb?$MUH3heI<;c^{(d9;{W~>YcW%gUPX=U_6-)r%j&LM8n%DoR&;f+ym z690tzSe%^(KxkBGU?%`6;c4zLqg2+RP6q*&xm;C}^hA27fY(_}PC!*K@5bEYLE6I=M0c(IMx_=Lx1D@!9EO0;* zD+gMDG9WL(SZ{&DKx>cQ%%ngmIVE?%`C&rK1QV1++h4I zzB3txRs+X@OyCtzB^6cylYo7|dX)oN6{Gv_2z*DbOK zfjZ#1a@I=qTY~R>-yz_!CgGNRaulK7V#p8LDO&_g)O8MU1h@wLiWp;*n!^OC^}4Tw z{9edc<$vuWwG~(jjL{g06!Ob>UgaoLMCzj)MiFvb5VwgcR!*q_9;yD!5}~Li_oz%& zP}o%$%dV(d~l-&kQ1+Mmmkbj?HqTqCRs@4;ll>kFrN|Hl2pMJ@{ z%8p2OCMm=)4b>46s*^1k076Bw4I!c1vhFOlIgMo8>0_O)YrA^2*?y;8fZK{}_GhJj zY|C}RacDKOWyGD!9McPdYOd~7>Gw`0TppVXtO$Ol{lL*gC)W})Yf9tEwb{&ed;jqY zc`xJwB{~}A2Y*4T(54bptsK=AJ6#G5;=cj#8#Px($EW;(^#A|>07*qoM6N<$g4<@4 A+yDRo diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_gif_add.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_gif_add.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad13d8fd2538b153d8da20e2bee8fbec32bd21b GIT binary patch literal 952 zcmV;p14sOcP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0B1uF+R9Fe^mp^C}K@`UC{BI$G zR)J{apF$;~1|$j^OeG>%h=qn&s8zs55W(g`IuRk2l1`0Pv{btwXJMr_X*3`qDk2gU zwFoiE`TO?XoRhuXyS-y?55W(P?(JMI_aFb*3gn~mEtN{rcf(z9GmP{@ z-zer7@DUdC`TW;JgGuH*oQAE$0+T<0TVj*KxDwujS>g-9dixO4F2 z4DBxGPy2`H_1(GjhLlvLm%%d@WJt0?*YP_IRqF4;pRf-ehS%U(C}`z;Y`4ykr&L|5 zk8qa$2yAc6t}P2dUsb&y?(lShTU_7i!!j6DeiUR&vO+HC3pW|(V3GEi>!&H*udLRb z!RLh}N^;_59@|^JM;@;=(EQCkIAg)VuQet~LUH3&H%8-(&FYhE*(WCN;59p0r4R6g zg6XvpuAoX43H&P`@JNS{GRX=(voWJeN^RsO)6JVqO(aR^D$(?l*Ll&o(aOw1p;#8_ zJ?n0nwuv0}67mM@h59OMWt7YX=?1zXlG#-EJ1z z4h8AlmbsGN>bp=sF;(rKD!Ad7Nqqq-3Aqnm59wC2H^(%^R-4Sf+z+C=Z!DWh;sDgG zO?UPTFmhV=y2HN)L;X*Pvc%+^H literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_go_down.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_go_down.png index ab0fc33032ec2f545d87e40b4240c42c7894837c..38377f0d379ce78364e937ec24e1861d84077222 100644 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxI^*f$7!twx zcFIA{!v-SG$sCrYJ8~{KTKVcrF3>Jn7FSicoE1#yh^bOv0_VM2>N9xqkfpLIbw{jH`CdOnG>5a=?dq-T!9=Rk>|`5)5`rV|+#e+eYCh Un-i9*)`9%z>FVdQ&MBb@06uAQzyJUM literal 251 zcmVcu%sO*%*&} z)1|{~N0ytdCyVt37DD#-i>2V9C0GiTVQs-ms0wQe)@d^UlaVkx*M9~aaHOTiuR0`6WYhYjfzNpC}68s7|{c4q(p002ovPDHLkV1k(6 BVz~eS diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_go_up.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_go_up.png index 447c642ec41f767fa5576d1ef3c5cfae6f4e3f75..0983c75b2925f7099422e659c09d21bffedf94c3 100644 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxI_K%)7!twx zcFI}aW&@s9&!a3GBHR-e&D*)z!8~#Hw`*T^b}i*tx+=D-x^mh)rp|ghTgP2}j_fZO zWEU`(9C+$blxjYy_?&vq{L>drmww4uax{mNXN!Z>C!L0mip>k9p4A8N&Je9u>a|#I zQ24s1fyZ@Y!25(R&77^jScJJ!TR9s)9g^Yts(VH;pgOURk9C3MrHa3|td8tnbduw0 z_@Oti8Xw8+au(X1P-5`wN`U#E?^S70fd-D^83v*fla_?Pw3NIw(+TF9M+bzRran2x Sdfe|m$cLV;elF{r5}E*V)^}Y1 literal 252 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 DKcwP@ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_groups_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_groups_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..d081bb9ff2bf54e7a1b62fd98e016c8206701512 GIT binary patch literal 1258 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 delta 866 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_home.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_home.png index 35cb62fa4718a3b03341d9814aae9f9d8b5e30ee..a5b331379b3cdca1bae6f793d35733c2db53f46d 100644 GIT binary patch delta 784 zcmV+r1MmE;1*Qg&BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~kV!;AR9Fe^mp@2XQ5462FD(_KAcT;x79$$8s0If?A%DRj8cQ5=XlY6chlUCq zY;cJnNg7)Op`pReL1_wt8d9o35lN&$f`U~N^&w?qw}LsK@(JU- z`YWbMdIC&p74$N=o>YMSW8gJV`H68WiThW3BnE1&GLIUk*PkF~ot$~2 zCdRH;+JA~RRDObTJ|y)3t}%_3RkWe9W2cP&yCH7G5wLD<$dY1`4|JOLzOiS~XVvec zy(dIsd6~Ngykp>=1Q&p}RQocy$>m31fiF!}S#j;y9cKN=+81*c=o1xjc`PaTP^yY} z&`T7k6^+RD>3c&w0+L=XuUK_i91^wSY9O1Ly}P_^nBx4_KMT&zwr(Xn!;Ch}s$fy8k9nFYwVr zxdrq9H@z_zwX;P7tpcuki_QQSfRbl(2KegP+yOQg0kjJk^A>sm?5ktD19Z=)L!QHNOG%pIKLEV+e2iJWr3TsqJog-prr9|` zTL%mW(Ygqc?6#VY6enQfdxf49AE_+xZX-NY68A&7d z+|~%_hxL)9mV`j@oQex_!Z|Vc&qhF5uhm`Ie*K7->ufWsCEWErzK4m1yq)F zS<=BeK(78qgS35+bVSm_B7j`p_gfTd$wg>+Fz#%(76tTO(jiHEgYn&xx-B(*mZn(m zB@L!nBXtekx901-0gX#Km(pLA^4Mj5QHKRTFF;YyH>Es)Vjtyy1?aA%*OG><@S9SW zgE5pV@_$Wvz^F!q{5nW_FDU~|?7OP&LZFH_UUl*1s8X=rtiqH%mDD4tT~e=I6?ucL z_pYC3;h%qm4A>@VNYVxy`jRqrNwm~^{Wumy(Lmif_C~io_y#LNQ}&ruwadc@#gFbn wJZ$}Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uz03Q0skR9Fe^ms^NUVHAMR9!6uvrPH{^gGan5N*Q6AM1LMMB4zSmG9(hYOrxZ8 z%F|HhT}UH&6AwI)QWPR`dr-niLsP~jV>DxI-`eN@r*-z(m$RocB4^b%YyIoCSO5Oc z-g{E1vixH^;Ka@Ax~}9bhXqgzJ#fo$oG0i%Ck#>vyWlkh$upeIP#HB9@i8zDrbOk1 z#wc{430^`m(tkzL9;nt$SpaBhVs)ZC8#H*sbtR`NaGIci<{K zhCv7tx&84%P3{5*RMBDV8eOPj zS)adx*jhNRa=Ni)Cl}jX70au)@d8bO+;2|`f;empoqr9Ai!UlCDyI8Y=*8b)mj{Zw z3;*>F-DP)N5FILGLnEaRtf1vg-ho|Ftw(Dh*@--1kO3T#!$?7?&(L*x4#G{4=Ta3M zhud%jVy{=~9a_yCX?CMm20}Vvqi3a3OVJac&8!1e?8JdpAx;Ky?J(@de$wnPL#E^) z{$(NMo_{;ZK%Y&cPqrb=8$e#3@^;^#{BqHDvwnk?bw9}UI?0`gjuw*Q-eryCbU<1< zq31&%Sds6Ybs*nC@}(fs4+~BHZqJkZb0&J4+yx>B(hcZY4bRO5WRP#hmH{6cTU3j! z!=p61UPUK1>8Ao7|`Ls2)t zJBR2U;xKX_T{YZX8TdEZB=lt!$~OsSRN_?ZlOP{jn{6hxJ~whsrrVfk*7dLrCTYLl zCVl~|Z1u;zHPQ7p1Fg6Jv?Smg5Bl6R1U4$dNuM;>Z}P9$a|+6E*1%KHa)pJr3+TNn zkbfy?kkCP|Rq)I7JQr9_a5C(JV^FV?SYHH@SKyr+9UqBJpG(pZd28$QUL8DTzYyrK zL7)C;*0a&=H0krjlP=}InL1O{owQia&?1lr-DpTt;(?@qNmjxG7%0J1@<5dz$(9if hQ!Xm+K*$dK25iZ$v$Vgr2LJ#707*qoLimgY*=U5 zoz6M)={I8+%?q3FJ8Q4K_PgJ+S!*4pFoiBrl*`p>qygX_V1GHV2$&J}KY+c!`@nm^ zu?{HA0)~MzO%6p-{L_#K#h9;dQV%*lj;dSKC2C(5BaO?|2i3RKpVcqa{N5M$s1fHvs3+te%xu>JPXe2O zn=IoO-C9u+LL}2>U}#t*W{}JsE!c z)k~TP?Fy&k>N0glJU^EOyGA`0_9Hc~Bq?=o3z>4P%MSH&6QQTWVKlo332P!qU)EJ7 ztmt6lrjai6V7A}VIzm^d?_?XM9{447b_BgOn|rMbGUb?;sr_Lcp)`8cmC++#R|&8_ z7GtNTe%b^O%HPV^w_UY#j6@=Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~&q+iBK_W#SA<;Gw5k;ERAUo(ddZ`z6=T0;SG%Oor^Pg0ACE8&7g15 z#^fX47|OL?j7hpCa1Z9t@dM)omPCw7C|`?FtRu(R8x>R8uK@TPI=UDumCgyBiiOJI zQ0_EQIO;LwP|$q%m{2pxMY${|O{g*c@!_Ni9M757#JFPeOO!*kMo)AG^(HvFo}}%T z0$ndcdsLa90j)DR6f_Bw<_vzmEF{0y%561hLe26z#efzt$4RB?icSLJyITEitK;;> zI!;S2jQHHq+A+zi-Bgg41Yf6ah6FLN2DQ`+XG4QE7x+*7$ULQLsUT2o{XX`=Mf@%I zz5lse>K;Hxc-#wCRKME7U-%_hi63NJg`bS8iDB+`hoPE6(BOi!g%BRtGCcOpG zUNdNLL4Mmdn4HOLP_z2~qo}pW)rR#14K7G~U_sZfgEgIxS5{Nif(93KMTfs#?=(6k zcrDeIhHytZb~?B<5g(@U*sR8()%@%y6u(32zp%j_+GDd*8ed1`8{2iU$2e@8(`CsS z#Z9*#OT?ZVmr98%I`FOEekcyd_&05~8#EI%Ut3rcH9wnt2@-g8^K%U9OB#sE5$BlQ zK`|0F?kK&F($de2`k*#m?H;8gQNBgZDN=+ElGFRM!9}U1u>T#S!+`I4A$#)|3MdFF2L0d{8j?AVSfyvhPqWWkYoiOLL%04 zQK@ey#40?MLY?SV(Lk6kyp%#6iAsGtVK!jmL(N$abgO6}#1_2yP&3v&QK@eyL=Qf} z)d%e8R?$F+K74_zN66|bo4U;A1PB*rMuq3Px$OFw#x}fzEBEPocJ@dUhi}3ZT)9uS zAE~fw=kPUn1$I~8aA;?bG;w$bo*~q6q{6P91iydJ&g|@wCc-SkD2#>mGE!mJ&fz)S zmcm@~+|)Hv9h}2YOJVMKUaa0#-J!fu$LsG|2V8!$>f;*hU?NMf3ugbP8;qOOX#!~i b|91jE>OoJ^>%!MB00000NkvXXu0mjfd_=Vv delta 302 zcmV+}0nz^T1EvFzfqxK5L_t(o3GJ344#GeXMZ1t75GWK5fxu$90RoTU0-S&o5Q63c zC=?PdfW@K+4u`?upvxoKO)48^NJs1@KU2~9`|{gPH_OsW38Vy40_79%-uKGi{pUM@ zS)%XSqlVUYHGxs=9pSMBsxI)7w*t^aM-r+-L9T?_1VT7hVza{+3h z<1BCirh~2psJXySrxlnkx)q>iI?e(YVEX7DpmOR|V5idx!~i`4)QdXSaTd4$F+|S* zb)l9X2XVLwwm05N8g?ETFm_&QVC;PMz}Oj#z}We90AuIp3XHAe2S6(n*NzL71Da$o z=3yirs1xVhyC?DyNh)>@`IV=U08#=efgcn208)iU&;NB6p#T5?07*qoM6N<$f+Em@ A_5c6? diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_instant_link.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_instant_link.png new file mode 100644 index 0000000000000000000000000000000000000000..bd7ad46160002aac61f74cd540096e3ff81d6da7 GIT binary patch literal 967 zcmV;&133JNP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0F-b&0R9Fe^SI=t`K@`qzHz}AP zu_)$G=vlB7Z9K$)U@3YD9y|r_`2)n9dh+DKgZ2~zdyp19NTHArA!(uNEfCEmhd^iv z32DGYFhBjiu(NE^o&6ztQ1W1Svor6#`QA5gXJ>uBg)A8O&lpf#A!^0chZuc94+sfJ5*-JPP zfWO!4eYG{l#29uuofBlotPC+R^a_LAHl%!F4~R&GHD=o!pCM61{9J9KWh+eNq#jF*gPyOhu8Z-dn~;}BG{+5E`9 z9Uzg}JWPcJ%t3vdxE*c_aLN+EtVg5K51OW384ic%*=+U!*zU|PH2*9E+rVzJl>e8{q+{3$@Lz~HSM5|Pl3=u8HF7M@c9n(Su^ zn1#%O#yn4KvGpnr&4)avs4?z|3@?DxLZPrG-X;kcVka;HHp6SSGp^NYuUoCw?(y;QJyQYC9}{XWms`bW<^?rEcv{;FL(_uB z0=AiR9$?;(Now65YF1?5vRNzpCo;k2^ja(UmR)8jU5jGpkRhIEGray{X938GTq#4m z>o__8?z~-W86aL4np_ZahxGZzYn!|S-9-9?wT zJ#q2!ssoI{Sd6L1wge>0npfChCX@MMcZFqeH$r9z23w`!TUJRXlQ;MF_ImKO1SN~< z`jXGX&W-Sgfj|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Jim>7srqY z&bQO{XNx)t952>tbh&V&!%LuPf?62k;)DaI=O;`I;?89X<2vYO@{fJiu`tJ+qa|hj ztlX>{13T@NjyQ4G3m9rhRMtJ)q`kR(_wR4_RF!_P?Ynt%=KC{#-^#xG#>e|tS%2t% z`(8*s(iNYxhiln{DPVDJt;1uZ_`iJN4zvFJtX}4LoKUi%ZVke z`A2`~f9Paaim|-%NkztBjh@8le=6lw-Cpc_b^U;pOn}m*^Dpk$nzu?*$bh6t{ zSeGrG?WM@$I@dE7`)B@4O^tWnKR5NJajJGm(TU}=Sf3v_cj(2xo##uY-Ed#G)9Umo zwMpj_cdL{Mh5Sk4=iK=BN09;7w&w2-7&Gq~m8k~_Xe`;yb9T|JnBQsI?2Bqyb*10! zcIb&|DJswSw&n2$X1Be1lN#z2?B^u!Yud29r2WFAC6`>U*={MyUBA-l{({qID_L)y zk_#$-Ai>^#V1eS^1e;R_|0g}mWd5Ij{GEaB<@xtK%yYi(_Tch*$CoX#tb3MM?_}qg z)z&_~KKI`3@?d&8A^K#nxX;6hTT+F@?Y;M9zdyZr_hEHAC+68_!`DoVny{Bqeg|*7 zw9Y&3zd1eI48Ih{NJm?7oNH2ExBO?%9QH<=X@1$4ZHn~||KG*DpK-2q9Aon#?#ZAe N?CI*~vd$@?2>`^&UoZdw literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_invite_14.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_invite_14.png new file mode 100644 index 0000000000000000000000000000000000000000..bd89979292d39fb96ddcafc845856bdc81f50026 GIT binary patch literal 1158 zcmV;11bO?3P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0@JU2LR9Fekm|KWWQ547LGZ;cN zl6%RN7nEE|l3OIoD~bn{8b##t;6Vn7B1t?bw+Giq^1ut4DUpO1MQIRn4MWI%{QjT4 zPW$Y0&YW+|M^^o3t@U4*z0TSDoHH{O75|wO^5$u7ZXQX_Xi%M(+d}+3v76vpp-^aU zAul_`Al2XuD5qScS-09^d5Ixh4yyZU=|?1I6E6gC1FpvIfe^uVBID zpb_Y5UxMwR#_3lSioXw*XEteVK+S+jbTts`jSTdUz&Cfjzc%Do7uf9czFqPiqR}V{ z>s+xGssVGrGoU`wvw?UUq>ehh$J!<|N!%g0bwE<@cgNRu-3EgLz8+4p&Uozd-65KG za*ZF`0@57TM$`!OeV@mE;C!nK!s%|wTjnh=kt^-&w__N4dWtmhju_Ki&Rst@&u+~? zCu#N;3)vg5^z(j)$w_NNx3m6yE z1Y-kP5WWUnvSOzXqkCG8ui=M)t1eGUTeA^#2=e}HAZtRyTHs%?&cR$St}~_Ag?~ri z<4>|2U&E&kRMMN8;wqZW0{SGF^ujns>@3hWUIIITJ}Wn#Ge38c>Hzj*iiVXcPN^Zgv3B_?Ljz97Zt%*gM&bCY>CdwZeVfM zhC@Y9DY4vvta0?=q-Z8E(VZzS7G1^f!3Mxj0)2d5Hk_U|y|qo2SPn$$Kb1)G!B$5K6#erz}g8Z>TO{-iDMZtS62X9}!7muP?Zh_Xa&4#6FVAia%r27mNe1fkf}Gq!5@4?9o@^ zzYwiAH93uA2rdR6{>3D$@e#y+#nl*zZ6T>IydKdZz&~TSWf6T=^crd434B_Xj(@Ys YFY(OA!(O@k?EnA(07*qoM6N<$f-~#?r2qf` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_invite_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_invite_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8c6e7732dcc3a1a24639072607a92c52518a93 GIT binary patch literal 1029 zcmV+g1p51lP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0Z%IT!R9Fe^mrZO;Q545JD2+y= zzLJKh5)mS`Xho&E5EjaYC3X@aVdW!8BrGhOw1R~Q3wG$rjyArcs9+(4hOiPuwP|V5 zkMTP*=XCDOyf^O-S_w|_>pAz{|2g;0ojdQo78LwT7LUg#L+Ky?%q*fBT44~r!g(0` zg)!+IxB$bDX|L$09FyH*q9Qm7ePAX#(*VuZf&T(qMs-n4upVB5YnNzL*u=yKK)yb+ zMuG`8{#!f+r^7{?LH#3qZO{btuZ54Q6L%Ggg0y+}QD_~!1G6rIT`)dZF~-Z`A(%Dg z(tC|jX(zbbf0_0yuVh4M<-FYoF*$REzPVXCl2^hIh<%35St5@P@^(l8wUM(XsreqP zBjk*OKB$YuVvq5W#>D#&ZGdNR4%{8>q@BM}bS~KQrNOrXIfo(B`nBV^Z=Eb11@<^q zmu3k9I?zuA`D(@9!$2ZR{W%+u=GR4y8(OEsFC%e)Yf^K^Hxkc=WAFjGVYzRuG#!b> z@D0R{rw!(4psi12B>${%rF6yIw#9NleQXt?i7IUMNl?u+N89DZ1^gi5Zrftt1=VT7 zF#eV$dw6$2pFH%5pRkY4u7jt1vTmOQ)!2e$H_~<}tVZMx@m)6cSPULj#a=Fkej<#ky!fDt^xG6Ag}Wy z6GR%5oB}aR|^(g-mb8~HgCx2f)0onqyWAI?1Gf5q*t+PMaD|p$!M3t32H=d# zvh^~FnfyOB$raN+WP<_zpsRIbw9DYOlOv0-cQsitg6oYAG>POr4Fu}r*rKGwM%>;Wp9F0ZE`IIZDCN*m+8hOm8x{?tI z^NGqqG;&kRyO0nSyW>GQz1;l$)cJ3J#}51e`%~~OC=rtJ00000NkvXXu0mjfixSKY literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_invite_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_invite_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..69a6ad5c7cbddcc7c9e57cc8c84e15a15ec96005 GIT binary patch literal 1204 zcmV;l1WWsgP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz19!W$&R9Fekm}_W_aU92YY>be5 zL(*#H4NJ*oNo*pQk~dx`k{4D}LdgrfacLz=a(SWD5^_nB#0$4=L`z5#g_5LgMa-0?CiAs>bu|l_y0Zr+w+_i75!%v%hpdk9-l?bY%n%kYzBV^zGt8% z7K_C*#HDx9$XIX<6q4>zY;yWhGk8e6TF6ekT207VS0>OJ2{XI`SCA)z(tcn9xu=2A z;=q8}6tXs2CcHdTJbn#U52j{`8$nDj5baDCJ1C7~lxP3u$x-53jJrW?l+$c%=1%0l zP9JUdFi+P|I4+>`goD5<@BqgI=NylIADj&Y_faY7W4wiHQ}%!bV1_fUhmQcwPS1<= zX@+?EGO(2CS2H!>A+YIJGk3shVl;y*f%!1^gDA8O7$u8hu#>V!<=PS$%c}3?TYY){jYcCj3$A5+M%U6WG5vH41zPX@(#2{7R z6fp8nnNC%?Mt~0mmo3QgGw>nKUx6IB=g@72ULzj^(-j*@I7fp=AWUUZ2?X7DfnARO za{OwV_&NCPUFJgL-3Yo|Qwhg;iwf~K;Ux6IpcT9ahk>X8yaV_A>gb9+0JN`++7V3G zb&*O0d~?ya;LE@Vr;F*yPJ)q^iLAGGG1vq|yMV5TEZAz->vC{}HV86VbJo)&Rd*4X6ff84(kWRa!3kUKvGZ3vld#hRlh*0^9>W zokJOCF+RsW4LtUOwKTff2Z!SFYsiXFunzc7tbL$wp#&joxpaT|GunY(?Lq9|gmJ?kbU%QJX$_btJ60{2?jblIiZb35*&M z)`K=Pgt$)LLU75mKS2&Og&sLW$zBOaX$V^h2sblaN!ax>sR8r=k@m_7V1DI>oANh) z)`qO`e(REg`p7cU%p?XgziVs?_G&QEw>zIs+eKis*(pO1eeT6Ro`kpB`sVb<^2PBr`7{E S$(*tP0000YZO5k#_vR{n9 z$7pqaZ>OcIpnqK*rbgqV=NGwFr!%U{stS7VF&_5(BG>A4V0KwmK}#OvDbEkO+&g0= zj=JPxuqZYN*?w>y?DKn=>jakRoSF1uXkOl(F8&-7^D12@1U@P7@Mt>Wy-azxE(%!;{|*GTOY z&^o=nghE`xJj-U>!U{Ru34}QK7sGx4Y&*9?imX8vXg1?RFpcMg$L9`;xiz7tS@=jq5n<=DVM{RE0Vfl9IT`0Pfb(ZkGQsKOYGK)q6_On=bMoKeVjcm{Dc%wRvv znvsfF=y+TeF=ICw>z>x4Sm3Z(cntp}Y=LfA3kTsdc)O0%IW0vYybM%?YzWrHEyVZ& zxB=ew$Hf&ML;bv8fp$ldAoD#i;^N;X#kM?$_$Rl(oh%~69&_<(R)sl*en$kgZ7gx3 zk3#V&`j5@{a)0AD-9iPSVDq)tWHB4p6((50a4t(<8{HolxFJgdF*a^EV@~!kezrlq z4A>V)-Cu~gs$lFlXeV#o5a@%|R)PLL@OHt@g+4)hd?4*WIG?MJz!@j@gLbY@#_xnD zZcfc5Sm@`~(pSt8&{L89g2)SPa}s@$eK8Vy83r@96o2eatfF;9oQ5k<2XB9Ic8407 z`y|_9-qF`79x=uj!Cgo)72Ov}wgUugh7WKKCY{9eGZho)?IQ0oXv5TzqEr4B9D;c^ zHr6NTD0mydX%1={t(7uv(3)Kzs8@zz0XphrIO+|ryQi)H7*q!hkikRLnZ3nZX6*0nu zinl@UTXy-%UXlF9 z3Doiyq)%Hm3iYN}&Y#y#rZ;av{!94If7U3cmZr*Ar&Y~c&_kE_pu}P%)w(V(-wK#? m2$xaZbm^8+TU#UX3H$>UZ_sC(yyx!#0000|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`**i}c$B+ol zx6?QJ9d_VplXmE7aA8+7GdptN*p-!g7@{jVj&M)0bBtdQw0+Y@79Po)GZK=TI5{Ow zb+9}vu3GnQlJ~7H?zaNo^)(x7_t)y&Z@t@7u4JtvuL+;)&L;vhc)IW8rXbaQ340EfRk+qT zB)ODytCufaw`S97Z@2a5A5E3e-e;{H_qV$wL&`gP-_!*j=}F6qyB~SKU9*Nc$$)L4 zt3~n!OHmRd!Bs)r3{<$9^{LW1RoYZpy8u7d&sI4;63we#_g>abxCL z>TPHrApEtM#ucB+oYb{l(kb)hYjS%hkPEd}n7?ZD!pW zJgq=oeU*RImQSaib7W-y+_7o@rX%7ZTYc}@&q{u}&4=52tIa33s=mcd(x1MV%=Fz~ zB)f`x)Ar-$>#U!=?#f+lol<_-Jnkpo%hkzMQ+|gDo>*pSlI}J8?SwzKMJ#8n@LE61 zx%k=S!YTY;EZpOno=25Z`{v}VPf63hmJQJ>PZdO{Q><`xEer%IB S?%bRLN&%j(elF{r5}E))1_;{# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_language.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_language.png index d1fdb97b1e8639dc20f47fb29b4f8a1b6b4dcad7..355abdd7e740f241a0ad6c4d1295ad597b0bc89e 100644 GIT binary patch delta 1070 zcmV+}1kwA}2*L=EBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uz0tVu*cR9Fe^m`_MmK@`UC%ToJ8x)8LM5w*x@Ard{Im46Vlk!aaY+XT_3t>Gfu zx`-%jK|jQ4Y`!jq5okD-WQG21@E%Bhf)NKRMmG7#*F?7AEf>Y$RxoMN z(5v7E*bgoMlTk|oF=`}QKJwKVjWtosRvS~ZW{_XZJNid#FztCD`2<=#zQu8}&3pV& z`ifyPX||d)qclw>&uFyUK-#@#KwmZ9v^dY+>+$XIihpHN+w|eB1#D|US5+)V!Re0y ziPp{mOK4i0v!M!O#!J&zQFf=4qxwR}$(|<7dvTg9Fx+b(d2U=<%NBd!8?b5mY)#Fj z?K^z}N9`GXj(ddO4R^xx(S~^3^%qh$&n;S@b6URmC|-JlRP2kOPdV8@r)g&e;|$nt znei(rzJEHXLRY^6icgL2*ueH0u{-QF<4>91O;*e$+Ajh{T!9+|Kfp<_0Yb6^@)g(x z?t_~kEvF#v0OeHf#~=~z(1@EWJw45dC27G=IG@FY4Y%-HbiNNl9@v_Ja!E$aM^|E^ zx3*-N+qb^i%>3?k%$JNMOPG(ALPlJUWoNM5QGckQrOfDru!2?-s%*=AY)r_}as>+t z4M=lZ6B4bVYGOV%rka0j_wP`q+CT)m>OBElnlc|7leVjGcgAv;Oqr3LEVAa%XgCXA zX&P*(`PdlaW9@QuI?{4S{$sCWr$l#ckO85`zA5&IqAu+I4({j@)#Z9kWqkG6+YDLm z=zp)<7_Gv{?Ub`6*SI~MS=*(R&Yv>%?}D>xAoswnxRv}IqWQ#iucJ$M*TnBU&1g6g?&ho;1mpy)9%Yn~8GEpvyY_Z3tZ*f`3AHL%8BNLMW)edOWF4+>g zIOP^d9FR>?a;%{L`v)|46_t*#LvgCjpMQQU#58ojXCLzTtsP;#0Kr2($=bj-mvqYf zO~X$)n|#{DqyOxX?}D@v$S+FAPWucRr!CRBxW_A|$8oaBr+%M7UXsv<;zN?HDJ$|8 zbU3Ijkxf4J`%tuk+}+Ybx2KP0M%H13a-y+$KW1Ip1a0`A4JCU-tyNQ)4qZBSb|(Y9 ola2w2-bpW=Zv5Xd%J|R8FP!f{9w%}>BLDyZ07*qoM6N<$f{1_cjsO4v delta 1090 zcmV-I1ikyh2-XOYBYy-PNkl0`oKq`=1*+o|77GF zJ>J~M#Jco@%iRCWnRCB6bLPyMAMcTa$aj+r^;Io^uK-L3Fn z08kBJp1fw!4d535>jAX?9}i6?dBOPO3CR|{7fH@e81n_m=hA5<*>1)+lAM<1p)5k5 zk-TS&9hI?j`hR_vWRxo58D1-(tzSNlwZjG?rwSbXOSpQZ2RjUjGn6+YOm5u@CK%{2IxU zoSoAo-F-3n24jDB9-#>&JEiQrG?ZjD$&X16R!}+|G=K7>$MqeMZZpYRzLpOnc}jiH ze2~A|ZI+O>=0b@I0G<`vrzz&0Sim|bA_=C1G ziICrxQOe-pf+@#NCM+TEnW~flJ|0RkW^7Sr?0=_ubb#8&USJ9N^^Dgt9tE|1GGfA_ zuSqL~6rGW3ZzK_FQad%p11)OZ%u53Zl^Q!O3H_1EV5sDM37Z)G7966)7&kK7eCS(M zi&>~Mgyt);TGX0!&}dn{ggg9nbPNud{kw#V-G(TN?!-Oh>f%F6_YO}1beZLe6oip- zOn+AnsdB{;wY}}(>O9w9zmEX8(_^$!`8bjVQ-0K_h^i!6Me?F4KPq#c{nBlcol4oN zHsyya;-=&kXg`?(YHRH5*(v#TlBGFkS+jJ1jmb9~`#VA^#&VKp%%HWVZ;?4*Cufiu zXKL@|M!w3}{flJ3&?0{f$-8FokMc;JsehH%We{2^9anpglHhG190pe;PY(qM!Hn8swh_lBbQa0$-DKw}&|iV`iC)qN}Ys%=mL@ zw-t|&tF+s?KLA*oaAdS7RXkMIcWGg+Ehhw*B7O$2QR$=y-saB+7sPus>rlAm**mM- zYo`6)cqon<)!)-pWsXpVK=XIZ6;+z>% diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_leave.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_leave.png index 9bcbe7316f7c189091f43d798cbd7067ed14b83d..3db89183881dc86431455d851024a4625927adb7 100644 GIT binary patch delta 673 zcmV;S0$%-v1-J!}BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~B1uF+R9Fe^m%T~@K@^3vDnbOcSFjMQENxU!L?RY>0e?jwAf*prVP~s_jbdS8 zFJd7IqKzVgeH2s>>=Ytc1T^ux>x|6qx@I<+qzHTAWd6=Q_w3DXelnRf(hjt92ddR- z4xE7!ND>vuMX&*So%9Hy0&o#xtZq}DTnz#P4ELZ1yn#LN4s1hoCcvCZ*z`Pa#Wp#@ z!_cD9n#l;ka(@Gj6QxtMOo`As)Xs=;a%IeuPIa!Smquad z*hwCH^M4xR=31{aMA%U49X@Z)LuY}d76@#*USQ$|%_SRM{W(<9WLn#&=XH!aH_6Z6 zXcpt1%(BWBYy%+NklwciOhyhP%#a0))O(h6z4(x@lJBJSi&pQ&T3f^A$V&~*F;5l#~sIMoX zY2Xtu1uUA*MSp7Eu8#u~KwqvENi&v=KO}7{k&{y8M#B&J`+x_)pc$Ae;9)&znqyXJt3uk4?_|HE*^&n# zcSsnQ)Km5tPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~%t=H+R9Fe^mpf<_Q51$VF>4?w z7F&rCR8%4oY)&`z*hgftck!A1j$g%%kX{H9gf_BOTA6wtj6hSppluYyC9@i936|{S1!e9Q98tP2C(wQF*bi2KG->w0+>M6wm-zQ= zB>uS+&S~X|cY>#0{yMgrSR%x>fJY!z9GPrZLsyLiM<1Q^Dm}(_*9NwH$+(S?#;*XM zw+8;@zTvD;~dgP6wFY%F#^m=8FyD~{bm#?R845glzORH)$WaDjBA zPWS|Wuf~*S%m&nbuo7eo#L>9L>>m$Fxszg*h=u#dub|C*(BtYryzvR4ZQQ&id(XhN zM#dfh?vBAe215BrV2?LuH~xo^6#B-`Yv_;>DX{8#`6(!c)OC(Iu$3PSp8;px1$B>>_#>*q-FaiQUEilK7!g zts`L&|CftVU%Qypn0R&e@U%)jczW@LL07*qoM6N<$f~rk(nE(I) literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_accounts.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_accounts.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1386aa94ce6b4683d277d5997d3843b8ad6fb6 GIT binary patch literal 879 zcmV-#1CacQP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~*-1n}R9Fe^n7eBgK@^8`W8zgX zXcIKXT2Tu@EfusDOq2v0HBqqfKd`VDK}4}hnh2tJOTkBDG}wrbXqDijPb};b9}&&< z`^nBSJK5QtS#y;@4t(tFnR9+~?(FW&ByDZ0w!&thR<+({v)M)Ne&|V%)GW-vWUW@4 zlcS|Z5uI=r9>D_m>^mI~;S6-Pq$q?3;UmPFat4;ID8$x7Besg1_`A~jtHKcIf!8_W zRb8)0+)}A15;Zf+S&aD+FKMicE{Y^gafp2-=ncFDwL|PqR6!^Xgs2j81vVOS+MD1S zgxE2YS9nE9pZ13U#j8Fca&H9WzbB@{r;+*z(%MmG;{06{dV(tsB#bZ%%7Zk0)=11=?801eEfqP7F!Bs1|wxHD98PeXg zHtlVFqs|cf>|xx3v{8oGj)0);0Wk{MYR6SA=#(wuX`l4?U3X>@+=AR--+e#NzTekL zUmtx(ef>p#w;-KoLQNa)c}R~JwAa8n1R9|t#AU|JtR;vYBH(F+m_k3nB?o`A=ZMSLNC3Z_Br7#p{X$xY<3orWUQ zVm1Z`pxYIZ4-UdjC|hKQ-TWo@h;+a^aP1e4OR#xKlE>u18 z@r+yQCRfYEPe=23X`&rK@-0i?y4_c$jn;^z7k5C@fF#%9c_N};cL6eAWk_Mlfs3F= zE~|EgO^VVBYKoHBJ=hsiNRq#c`1?vs>;>20cQAJx1T<6j^?k!X1=FCmYxO1Cs{QvF_ziLWSLu%!>(2lH002ovPDHLk FV1hm)gew35 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_chats.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_chats.png new file mode 100644 index 0000000000000000000000000000000000000000..e8f8d01d7e5d5789d9af5d09db9444a7525000fc GIT binary patch literal 675 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM30~4>Oi(^Ox z=iBMN+N_Bp$9uPLNK!QGXkB{aB`llv%pfZ3EKI!pHGY*26! z=bpmx^w->7#&avr%$@Q3Oz^9Dzsk?qJb(KC{mkn0d79eVH|=jT>aV;Pqj%jUUtHk+ zocWWF-fwh1|M|%B?2ZiP-~{=aMkh7Pl@o87yem z=}g0@DH?2N#8xXUsyCac!IrAjb~EbKA5W1r$=hZmKkISr{Pl5rx`T3S`U1OE2Or%M z-fUHAWAkF>(_c#R=O0`aQw}*~sN1;h0^de!UX`bfVN1J%dhBQ3J)&p(OXeA0?}P$X zHxrKO1#D@+;5T~LB(Pj_#of7m4Vp(Xxw1G<-C0Rliz?#LC zK919^UTW;SX0vPo@7xlR{7kvv3$y&Jy24HUJp}yE*iO2=OW|pS__@mwd~x!B4f8W* zYg#`0cC72;WRY_>Q}hh74?e$q@3MH^83xOyB|kZCB>rRA{`&0mFSRespXfiz4$ZN) zNqZ15MM6>$~bpPot%d*SqG4UDUXr@ZRuDxS^$S z>7hd^9DCRM_|?X))X$g_y@O@d*DAYd#ot(N@AZsj|ETbS?USaiz~swmVloY-S^6JN y@-AX4V2L}RZNYvzK_WzDe#|SKw+*{xf3WSnzoYv@(Tp@u0`YY9b6Mw<&;$UY(h!aS literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_folder.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..976af9ff67946f95d5cee8e027221fa0ad12456f GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`nYE{jV@L$& z+v)qc4jBj>>usK0UvTB7>j%l0Uo3X6^2d+f-CnTSV$}|=M{hJDT#sLSzlL+8$<}QG z#&-@*{9H8s_eVkR=+zrHGF=rBhK+VfGJIVP~z&k6DR3-6_gimCJan{r*GO z+}=ZFTUWN_$-FtZc#%rfUADsG1vx)W_;|M{?r)1WDLL)$Z)N{ZfRATlUZ};CcbE1# z*q^<5Fnve8`d&L;k=L`u9&xAnFo>Rr{LiMu7nH%VLi_KD-`X>)BWE$46qO3!|g&Lzb{-lR0wZbzP1M ky*s&c&nBid4Z5uJ(v)|7+wv#x5GXi3UHx3vIVCg!06uJ~^Z)<= literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_groups.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..46fe6e9666da92a50ec64821c4c4fe586b31f2c2 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315=Hsi(^Ox z=i6!Ly~P4W+U7cGiQ0KA$_VUUFMmN^Ake8rchizs)~oA6udH&Ny-hd!?lOfakJ}v? z57jm(cubli6vZMY+0hj#IrHn+Jw~-Y*Nfl9OcqGuvpI97`dsz1b8}}}U%nLNYRY_- zXU!)b6RF<61^j9clx^B3uQt;0t6>y7&^5aw^3;J9w|S};=q|mt=3tFLor8|v%x5u2 zBHA0Bnk~PrKR9c~`7?=CAsJ8J`c00=H+8trl`r#{_w?f|lbbJ0Ha(GBE!bLhEvfL_ zr^?{%XSK?etgHnQ}XBi8n4goEXp_!E;hv`$?Yb zp3hHq*{olke2aH|?=j;H_ZVf)Po@$^d+aazRo}ZbRjgS1S?~t_Eze$*-FX;xc0(`Q zy)rJn!<;W#0(bO%x4Zq{V8^3Nl3(?t-&^U2U%4xM!GZs7pao0RACsrqiBfh47`_~4 z&O69-JM9Vc^zS?wzL%ULoAnLYKHWX~eM+uP#x?Hd2~x=-aVQ+_ofZCa^gPGyo{)+b)&?wK1DPze3 zDR~!fyZ`6>X096L{v~b4{l!Pr!e&nEsG3)iDQXcF%k1?twBS$R&+qSDU*-4A>U}Nw zsx5uNb$|JNQy0vysO>qw+WL0cjFwFogg$cdoel@5hCinzf3S+Zz1_MqT_FyX9z9+C KT-G@yGywp1wokGE literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_links.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_links.png new file mode 100644 index 0000000000000000000000000000000000000000..867e186668ed5c62cf5d4e839531ce9c5a58fa15 GIT binary patch literal 915 zcmV;E18n?>P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~{YgYYR9Fe^m_2J$K@^5}^8tZP zVHeRd%{HlGC)fxnf?({@g#86}0eeeR8Sn=PDa2F(gOvsXlJph^Y(*?mC@5GM*XPxp z%gLFUd*_B-LCk@dIdkTnGw067nc3}hF6AGaf$q5C9S(=n___`5fF*Dhd??9dWr13deoLEFSp8?yTjeLQ;I`*J&It%tPk$l5`3{JpVf+O2_gTmoX zVxTwJmVx%uZ$Y028{iaJ(M*kJ`EWF6J)`T3H^Ed0#Fw-!fY-pvuIF92j@P4+=O2`V z5=Zb9l$|MU^nOX-Mh=d8U>)d)7YlqXpOpv2ohLyg674B1agcpGPIk>Lsg2GkT9)g% zJ|xGlw7oa&*Non23<&3QwnLo`_aW`d%pcGn)o?$Xwle=XRGtY(TN}7%oJ1<^Tfj>+ zQxK+s@>Gz6$eB05R0j4*Z{71k9d0TZ?URMT2_?20z{=y$mMvlX>p(|4d77}Ng3*9l zzH@?Y3MhG6Svg1Y6_~mxt>{aWc?Nqfm@V&Db@)o2R&*g(Sv~5bMj(=v&4~ENdD~zH zIJL)JW2~ioS2hSMVj0o&Mkf(l+hCUHqh+_UT@9R5VEetZ?746T)~nHz%cTBrl+mr| zz|45xQ618O>7}C?tuMA`h7;6mFr$Ea5X0T4R5BY4o-#nR`{y{rxgVk!m9@cGAMhKK zpr1CqfrDHLiYuRt>NhE0auqyv?b#|^>p#n@8u)^J^YuCr^Ht+tQv3-zG~=r6o~bvg ze1J}qHgKJiGtmxU94T?5h2g<-c={0WP zq5yHc2=oBAqM6zN)t*9ER@Z~x-%Xf?J4J()l5n^R{1N~!pB{I?Euc5B pHtZ+x7Q6tjNP1_Km-7G3z%P6$Ctblk#|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CxlSi(^Ox z=iBMN+Ae_-$DdctoFtN(5%y`;caeApl}gT|_skQXb4Nto(zto!=EeFJ1)O0dA6hYy`;{wmGR##pWB`P|FitrTR)8{{eL)HoK}Xck`a5z@h(wX z?cb9ei94L07mf8$!Z}OS zW8*d%ym8cfBzZB;-|dOgEUm=*o0Jom`Olji>Q~Idr!%w4F(*5-;2N<=Y;q#opcP zbN|ZAD4#2vBbpC=c@|!@cunc)^1I72&u4HLr<&wDw5oh^wBx;7z_d(YYZ;R<-qD8hsS&7QAHFPM(De0Uep92$GoLf^Y}E|^_`B*%=$`3Y4(_$` zsJVVh{9_S2_my1_JcD{Cy4M9QUB-BBiQPoD|HU0A)~W3BjQcfN^1I#EN9k#dVTm{H z@|U=tu&w&o?)Te8GQ(lp*%<=v_LFks_u17m{eQ}0$9SsXOWTJ>DlwpR;_2$=vd$@? F2>^~O7hM1V literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_link.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_link.png index 3edfc327563d8566cd09a50fdae7090b218233da..3dbf03894c6cb2c34fd59e289340cf75eb79509e 100644 GIT binary patch delta 582 zcmbQkdXHs-ay)@&uyZcycszM?Y2&&F=n6->^2iy4s9=irzWij_(q8s`f3$~q*yQyud629mocedHp z1G*>78J>DL3qQ`Zh?_oP&ZOPTe&@*E<7nF?vEqwCecS<-8m&&bMn4hP_lGu? zbC+^{OUYf*b&oOq!IgqVZ4c(`UBBrA7iY2oqZYpe`@IMC6P{SHObT|*I(jd}V%37> z6JKcOConE~vh9_J@64nyh1p>je6L0S>59r-9d~(U!{&UZwimhT3lf~N7*?uYI=`fS zh5yU<{b9#;9$|eN6?V6N*OXf(U!Sn8uvt0rdd{@yO2%cgKi8eFVz~ZPZK>S+fS}d6 zHJ1)MNZ&GDvcmlIx!IR|)cy4~?3*u~e0|op4TkCkp<6!7T;c3p%lB>LbK5n$)ZY2q z&zx$Ve@yJ-W#;t7Chb+%6nv*XzvUfnl439M^~rfDy;}?Jt>-^h^tW_|=GwpZ=dbQ8 z>)B+pUcSmN!z=E>y91}a^(2OC{*bsB`H}6YywsR^MN+M26zW-1Ai{tcnwejrblr;0)xOU z;39B6iL6j?p@Sf29g_MaRWvpZxOF=-_=lJmBy~odzeFWuC}iUt&~D?emVp7_Q*ezk z6f*L`#;w3+V20ngWwsmG08Fv@A@jYKmZ4>mUb)?zk<=aU?iuGJNsEJy zqSMr6zbAl^q_V6tz5~ZC6AQvh z{B;V!7T{DyF;#?(o~-fg4e;3n%^`YaSx_0LKjT>Q^M6#w848!yY+$&?qLLBJ%SiGJ z=u3G%%P!M^7qOsl$R+{nfCn`KR7_O8u-0Bz!0kU`O6s=~d?;yh1IoTh(tzV!6bten z#-j}oblCCjOS%|aB;9mQ`zKJ$9@j~P%dss|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`Ih&`8V@L$& z+Zp!RA&w$Pzh^ph#w#3q6ncv_=%!1-L8DN+u11f52m@CKLG9qD&K$R-6jcxKi*4%pPS^1-w8F$ajubtd#Vp%Yw()jtkoxh)*pSykUJypFIygcoPm!-YXHgz+U zW}4Bwx`177;ZNtE+;RtUckrxk>gk=HlRP22Kv?du&_0D1>T@p^uInhY>+iq*A)ZvM1Nrw}=%?;a34U|@q)o|%4|_61I1GXUzAf9b?A+FzDhmk*=j91HdOfDK zZK>JowLWg*`2HYjDs#_}b5!vn{SeafC8kXzP75yT(}wv&jc5J~{^nxd|_| zT(DnlMtWntZujeF`cX<1&w2S4Gu`iSi?((tJ9~nsP@?B?WcYL&0a-`I$~l*>JLF~_ zRynw4=8Q`R&Ez@vc9=}y(@a!OclfWpV!N<$43FZPF=Zz|^1 zm>*^0yj>tBS5pX0yDY9rF7~OvdRr!VU;D0?f7{F- z)>cSM*#$;ERNhc?+^}0u)iLwemz68wHMj7b3i%6)78&qol`;+0FGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mo4EMP{kK?=3_9{&MSb3I)gLn1iePBY|cFyL{O7BpY~^ua=zn7wW3 z1qCk`-idituYW_gwW)2<9|w&;PLuXc5_q1W;=rU5Fuft;r89@}7s-3s-}N)tlYEpm zi5_)wl*`MF(_VJfC4<}M(nb}L;tL)R{<9PnuQ+^}eMjo_w=WFV~X;SB$z`%KjMeo$#K*6#@{8EM>Cwsd3xvXxsEg|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxn&s)@7!tvm zoFKuvSkXX=2}o>EJkXK%_y7O@kqt?`4r^GC$oBN~s3&GM6e$=QO3ZiqrFh}ZZKwg3PC literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_location.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_location.png index 33aae1f7ad3e6377fe28d6c633bfc646c1a6d3a6..a24c3ab78ddb848230c9cdec3be555562e70717a 100755 GIT binary patch literal 1148 zcmV-?1cUpDP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0=1D|BR9FeMm`iL8VHC%EOH0v8 zJyOqTJQk>Ugb>o5h#-hpY9SI4L|I7CjYNbE3mdPHXe1KB22G<2A!6Yj6${l!kcL#e zi$*G{e&=>hb7tn7&fNAo$^V}7o%28c@4I)tnQz)uPKMUe(b1QdaoNj{Qof)k`H!*_aLcVg;3cISZiW%6f6X# zpg$N2rh%>CI*^4}yT@QuuNH-XEXLYL2HQbioG_dz;2N;jz@Rv;*IB1=3HW2w9uSXl zlDkRLQwe?>o!i8*U&tp(Lm_B3B6o=ke54Ep^sWN-67I>MJtv3e!$3{;%dm_D9Aq@A zR1p6ilsIVN6vRQ`7f@RlW_4yD^aazwCa?yScEjyM{TWa@7{&GFVXxN?e7&z|2GrzH z&}g_CULkOPd-5xlgl{x*(ILc3rm4!sq`nB)Jz-kX;X6Ku1bfNJ!}VL5(fKhs$O(<% z)tiP{K?1cRAp1(}2iO6|f~nv%P`eQ9l`+K{CE!=MIKCVtdDf^6_Z2$@*J=@8;i#YY z>hcQ~I_f7(e`T1yW)aFO&hVpdCzEG3>G9X0CFoDKy6~s4y zRALFpviV*CwOxsu9YjP10Q)+#$wBKrg}`=Q4gL!l+I>fKmEHqJ>n(BS@7FZt0ehOC zjGi*Og2p&tUuQN(vtud6tK7JsU!mQOa%6+d?ZOi|Pro6OD+4V+?LI;OD4ne4nW#!<^}Jk4*;i_B2uiX#X`C1n zp4Hg{UVf$Q|4%5vf^wO7KWGDLj|f74I>l*awaxB&C z;y+N{h9Ysf&=A!SI$f@u{6tW2xbJ(q@B5x}8p7w%u77|c{Y)~)3McO0OO&0D(k8(pknQ)9ne(TB|&_9%wEtYOnDSBzt- zb3_ejXB*R9xndU66It*S(_^_}3Db})xP)m@u6T{XaYe z6JlMy7$U@F`J$EY_}ZjR{C><7Xv7odl zP^Xz~4k|q^(9EE+!76{Vs;p3;Mv@u@Wrq?;O3D@wv3aEIu|cB^<$+^F#6=ucJ}41a uQhu1=j|t_Ad48E!-e}<)Uun^<|ISZ_Cj~th@3Pi6`|P#WmX-CNNvtXT)YjIHp?(sKgFet1s-X%h;A|`wlWsYo ziCowKC6JChBxxPAZ}zU3bPl`&Uq0b@0N0=tzJV_FQdg@tw&bTJIde3q;% z>iWP{uyO(;vrR?8Qd^Ba4Y`eJ#@0}u1Mbt_VPjUO?2y7?B;AKj@CwGVg}45Lh=WX<_Ntj_(p+$ z;*vst?#MBT^Wiu0+y*OGFtTlqG~=N*h~DhRGPapuI=qGgh}{18+rTlfve;jUfDTj1EkD*GV;1TG zRaz0b=P!b9cRW(}KDALi@EH99jVaK7q`DG5!}6${R6cgkCt^oTd;;~oyxbRNtY&mM zH{1|8i$FJeHziChxOOwu!S$3(y}@Q;9>CU2e-iktYy!37hSx&(oHlW`vCDNAPBL^9NCG>5kMRunt$>l6XkDlQ!MEQgpoiO_zsq{s0J_|DI_K1lodjl$xE!dGrmP5E>ZCV1;pn%SoOsGYm3|$~ z=%PIVT3g$GBP7IcC=qC^K@)$eJs(w1Gui-W!JcD#$$#wT`ahW)YgU_oW(G3hDVS&` zzKGsp?1XCZhG?W6Y+}U{m||AGjGo2Q(N7i-|0nAkh^9A4SwkcJnc^IbcBay0yNqVO zJHD_hSXcYVyd5rQb00000NkvXXu0mjf D$GjK= delta 1124 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_map.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_map.png index bb7d09e3a7d51057467d2dfb5579c206322c26ce..d47516a6073e08158ecca62b99462fe008620af6 100644 GIT binary patch delta 680 zcmdnWvY&N=ayLf3>_`p&{FV`O=MP@!t;J z@ZIv{UX$@A&0i)xhuF4wnQkqdHThJq!QD;GGG0=4oBvF{@%mcS+4&Od6T)TP>YeM& zzJ1?vZ>1gAl8Ie5YLzjro^Ig^LYt>~#;NjCO26Ie-YHx zFVb0~ttNKNFZqEzTlhk@==u#@*A@SLOxSLFVd6F4vsU>fbK?V*mDL}rmCI+b+&f&U zv8j%+^RRkXukve$$e*^~e>3lNd!znD{mHBb?RWPT?G>-H#1#JL`3ppyUW$EZmPP9xVHMsPN0x1N5Z0*SRa(@4NcO}oULmg8AB3LN8>xx^ z;&M@{PKs$d{z19u-`|SWf9K5l^L!aF@Dg%D^9|M=V0rO3B6-o%2k&)`PfA_Av#0Q2 zrGT%(&$h6rD&E~|ELVM;`atuIqxD34&dmXAdndj!%k#a+u}0$E!rTA)mEsy^8}NU- zzs&a<|AR%lv-QN|_gQNkl}!Y2Uwr7de}m2M)&ws%91l*~T;AR3>CS0*nB! zZB8@lmMENS*ym9x5ESmj9Z6RteU&sRX`#s;IwTE9x-Mx*(lIyoQPL|(Gm;j)QKgdW fK9Ts3kQTHJRjLjGwNiuk00000NkvXXu0mjfIJ@qx diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_map_type.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_map_type.png new file mode 100644 index 0000000000000000000000000000000000000000..f21a2141d40b81340bfdb31d2844c7fe8395461b GIT binary patch literal 833 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Ji0x7srqY z&bQNjJwhEt8t#8>-!!4;NJq}%1c56~8+kI?)=%p$e^7jGre*!P**o9wi&>|# zRQ3mdnZo?@cea^bhn7F+ee2S@|DyYXH}g&1HhO0;!=$aP@w{xQrqK1n#nC5w_$B#YG~Jl{;o_Rp zA7s~M&Oc+tIk)S9{MA1Pea=p>c$I7+J$=TF75(2+Vsc(saq=HF$tbj2!O|Yv@bAK+ zqiUXCTuLXs)S7(!f5(rLcV;GiWzJ?RG`L$~*Yvnx}F0 zI5Vc39<0*OS-l|tMfeo&s;Mqd4cLlytkqe>!lzc;S$nxWMM*R4%l*^ouJa|XpO~bTw3D)yEZ@LwHBW^mZ?8T_|m*z_Bxsl{4>ro~(?SNN?pjdvxzf(UO?#|rOH(9(P#>~}J(9hlU_t)LXvUj=}lE+t+oSlDbe$riq^ppCZxKk8LAL%rT z;lkawGMPfYl{YYHg&db;|# JtaD0e0stRDX1o9Z literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_markread.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_markread.png index 459c025cfe450102b0be296f62cf14355ea9b1dc..1260af6e0cd463dafdba42f2bc1975b01a17ee46 100644 GIT binary patch delta 1142 zcmV-+1d03q0*VQcBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uz0^hrcPR9Fe^m|2KUVHn5fvyNpLB74%je? zlyak#<_0NCxv___OEJkd8j)lfjN$Y9e{-JC`c2$g;p4l)Q`hfbXRSU168qTCrsT$fpBRoVAY=#@~1Cq#Xg0?_$t34IP zItNAH(uUXO7CjgRM!|h>f=1n7@J%2m^iQZ;j-h^g2sW}Vm!+(rk z7+VJC1~AzW8`wez1FW$@Xe+$saC8Nm&b#RCyn(G?q;?z7Rw1c_o{_Q`m&zMRlUGxu zAO>n_Yghu269L;yFe!`V<2f35U(>dDcBrusv_d6w!UJN{EWMBuIUV-vZ9ZgN>GXk! zvxx@kOn-+jK|QV5LB0~$_XaWbw3%%s^Mj7gnyx|8eP41?8@0w0dki{4JuKvqeNO8W z8>>A|9nuB1*$s4}foVa6Up1~fdvy)Nh=s79__JBRG zILAQ;+W;C3-aGKE?Y>Z2Y?s(_C$CdZAdZ`Xvnt0C>JT#wbnh{- zrK|p7i0nC`64@@X7nFoN%oSdnox{up9*UrWefc+?o0{dp2it0j>TtIx!KD?1}e zIDd5+GdUOu2pI_M3p!#X7va}O8H)9FiQlKhK>U|BoRvX4sfL#r$(R=wLn{TCNG1$y%haQo)8UdTY@AkbkIeDSB5)^jeKU~m*q#Ap?+23=E4w9I!w?DZz%AXp#S$lBq5Iz-{U03hCl?kb2z3rd_5c6?07*qo IM6N<$g3|u;-~a#s delta 357 zcmV-r0h<1b3I76+BYy!#Nkl?=x@&Yy!7QlJq|RHTRWk_1NTz!QGP82F53Y8Is z%7{W`M4>XG5b)J6_aKC(EWQ@~{Oy>r42;*1X#WF84O*R~AYgnNQ%O zqR0zy0&D=+RbGWs>rTc6umn6*6v_&D_dYG@%?9u_8^}A(gXm1sbjZQqN9fU#A4=MC zWX?m&_zLY5JP{j_@fDhov@Pk$y0zDojF(X4&jWk|Lt0A9!4+AS00000NkvXXu0mjf D>*%4w diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_markunread.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_markunread.png index 3ebac7613f324a09a95066af3ec846f5f291b46d..299328149bd559f02980ddf19742805ed5dedefd 100644 GIT binary patch delta 969 zcmV;)12+8V1l|XbBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uz0NJ&INR9Fe^mt9CyK@`Vbzalk=3hj#^3L=P#AT6H@Du1NF9twi$A$o}*s;8i$ z9(s(R2qc0K3<@%mf_jsv9+V303#9`4ur$iPe96jwf1R_;?%un5^}0Rzhu_Z3nRCv} z&dlDqTTn2m>?@GS-krU7czC!3k1CiAf8hi4B@zkMGlYL7#%fpsUC@SaKjrvD!Xj7? zr{M+sg>?PKaDN|W*eKMC;VAq9Uuw%y2rBsdGEZE+@}SQ6D+GRiing$h@y zZPMXS6+H_;=S8}c+B^Ohxg!7UQ$`{1ux8@4GNm&{gM8zAFcN4>_$gj6IQ?|%8UYjwWB@3`l1dc&R4VX3tI!&OFffj)tykeoH z_8*LcW~40h>iMd!BC*}2$?^Ox8+mlQ(dXrB7GB=@Uj3cblM~`<&=oP@I%>@!kELGJ zqyfhMHd;;lWG@>*`VLdlx+knj?lQ2qh(FRvYs9FcSrR1QyF@DOFJ15UiQ>88u4q8%c?29L~`fQO1i4|0EnU=Lz- z%YW~Nw_tisCHztiN<}~w*!%QJ-v@gsY=;$)alWt>LNy$NSK#Y1jj^qa1}Er-uC%R}TjL)Wv delta 592 zcmV-W04${W;)a%J&Y?1zZKT#Uj)#>3!t9m#gy@f&1p~@}x5o#V$#|4b%}Tl<>8zw%lIA^IU#oyzyHe#cR19#5 zA$0AVt&6~O;3TjUSOa_mUI0VDGk?8S06C3YtErCVIDh4!)v+my0CEZZ4j2m=ivZdS ztOE{)j70z~SpO?zEGmbhY6I0$8>p6w07`13;Mzq1ZL)qQWUTkU?6_AaXHhrMYvUd@ z3UnDLHvr@76L7r|pt1+!erYQiL0sAK1h@uFWd$l*bevuRM}W^6f!s#ssyU>Ak|a+C z`NuQ?^hp43Gs4s_NnfnA9G5iYm6{WhHs|oEz0`t|G!m$LbBC!0v_aCaq^}mOu~xuD ef!bQ}0{#K%K9POK+rcpa0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uz1kx4{BR9Fe^ms_Y*WfaF}ymZnuwL}f?A|V@N`Eh=(2Gh?P(%cQqP>~b ziy#UqC?fV!(xV{yB8rM)SYT@6QG+Dy80InUfO@>61oEqhSS`IA*GyeivbH0c&WlMkj(}Es*F5COV&| z@wb4nU_~!waFT~SWXT)8!9y$>kM}N$**SThB`Z#0#Xg_H{ZvfvW zE5-TlAEpL!K2c5k{o5+PD$O#TLY*~E+a?{5)>fhu)lAW;lz4x#FY5;xtRJ5t5AX!} znjv?ss9y(hAG#XS0eQf^IHC!**Z2O^g`e2WfI_3%0N8kafliYy!K#8^H?!h=#;e9g z4qv4w8-EbRUm#g`)XxHKFA&uXCq{SJ35(m8aXxPNZ0OE%@xh1X^x{54-90MOdY!y( z?YGerB42Fk1|DU^GzLB@}WW>yjolnpT%95_BVQH(0;|7siN?GrhgKI zma3JuFK-$n1O7H~dS{ITC&lGRf8+Fi(@m{C^tAb2}9AdK(aq!9{cS6hUpy&f6QX4sr@)~axwxpF-lk=Cv83C1LId^5-ebRl=Ndo z00jP?U@_PY&Vf##ncWHI1K$Ffbof0$qEFB$sOPuu}fnje~Aj2oJWV(1o|`Mq`s|LoPb$C{{kd8 zz`~jdIZkr)&tx-jxr8xRq3Fp#4=d5^RNQ+NB?Il9NJIQ@@nLA1iuTeSbwtAb+8JIDNlgw1$0Lp1hE{V5nd1I;ox%Q{ItAI z-8RW1KzS#s`6t)}z5?5TPFpM*{7R5+R_x_bz_PlX*9xG}9H7tFdZK}>0pWjFToX?B z*jDgS%r|6HYy$Wa>;>BJ5^YR%v;ed;)Ip=k3?TO+Y_#q(mH!Bz$)w2q#}3Io00000 LNkvXXu0mjfBxF^T delta 925 zcmV;O17iHA3bF@~BYy*VNkl?e~&wAFgzUO=SA>W%6JYPxvaU`%7m=9C~J%776w-(?bZ~^!ec$66m zg+h8nAY{5o(qmOl{*$yMi{~Ykq1nJWptrrg1k?eax|pFVU^+0*o<9P$z?EVds*-fm z^73BNN|&{A=?Y0r7UNcknL7nZ3)~{@r~sKvx4SsCp2JTOr|EWW0*-fSfr?AOeiy|| z5*ldNm%!@^5`TIF)JHLsgtF@T5*K`#CB$t_afk`Yy)Or$Vi;NM*3`?GPztCIuoJil z90O{K1Pe{|sI`n;K;Hz>EOwhl)ID;{dQI4h-6GooV7+^u0n7p#BENpXKfqLbo&)>> ztd3S7>-;T#aGW7e$lC_n&qzq`2YVMX^c&wwts~Q9V}Diw!<=WBY%jZSE|#Gz*v~eg z(amBra0_?_%mkL@?8FzqU%)Bg1~3|!W}P{cUM_ZX0^_Sl+F;G9Mbh{RHpUuB%@%8u z=MXPhHsc;~e<-sIa5dDX24g}mtnk7v7+yg_L)}iU_lB6zBUkk!a=-?bn7!aLD94sz zxA=2WihoeOV>~VaG{BA`b=H^iBoys6;Cc@EF?MaRRmmk3cETOIpO~I znk}yfT`=r$X767Lp`bh6ELODBGake^3ri2XAN@>0^2GIZzJ zk{S&2nWW(zAry3(q%Q{Wz}kIh$;^@T+^{}NTI%hk5(>K2EnQgi#hoCtMbbxyvp)9e z2!ElVdmLEE*da;dN+2>{(s?&Fw2_S|-;NRr`n#l84*ZP~n`><#^BZKo|3)p~j-*+6 z_?;mXbh4z=iGFiW(h*4~Bt402p@{cN8e9y!vxG7YSvg}%kS7l%9gsAp6ihG0zJ9bP z)%IoNS73tub-E3lwJ#ivrGQZE>&Fj?1s3=p_Zu&B$#ea400000NkvXXu0mjfndZ3J diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_media.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_media.png index 52842da3ffc50a5589cb82b4b910f4ae58ce62bf..2c63e7686b996b030897abf4b49f952089bba94d 100644 GIT binary patch delta 662 zcmV;H0%`q$2CW5Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~7fD1xR9Fe^SG`UGK@jHDXocG9Ls)4^LuCTiJ^%^tz<)#V0GRjyb|z|KWkX|v zmAx(2YK4ix?>lDpmc2O+V$4CZlYF<|&EL)q?A~6j7A1DzA389dPFuhTm;jcHp&S5* z;q=srjXstzCv&&LSo5BaR+a+YGxXbd;r(L7Z6GVil!*r zNs>H}BbF1~i+}zJ<50Li)N#`R4uBWLp83WcM^gQn`Z=R0;8O=wdg=#7Pn8%su_>_i z#cvWiY=sKk?~2aqOlrbY`L;bThvR{d=aN#5*SVbCD##hDAhDpbu5Uz#-sLG8i&je6 zlNQ+}C$|lX&NaKkb;q%c+<|t1Ch&;_nZ;&fPwhCDwST8CqMU27AP=|xWp~>*_;Q0w zg&d%68Q~ncS5I!IW@b3@b#M-x0B&yq_l4cK!G6OX-3ek@;3aVEl=Fm};VbZn*q?b* zyesd(`u}A7qXCuusdGI4YVm4$~tDqw>4-v1&ge>BZOmgbMP3Ll1t%97f3K9z{>-t7?=v$s*(IMTp z@!h22IF_{UqjnwDrgN#@Jbv)S$IqY+lG4#yX?mWao&G95zeT*RCbe^9G5ido`2I6Z wctw&*KNQ1y(t9atJwBz)3ZpW1ptu9Sh{r47_z!?cbN~PV07*qoM6N<$f&t$k1^@s6 delta 746 zcmVTBYy(ONklb5w(e!P6RC!M2rLlV-pl? zg9?I;g@s}fD+{dyf~1K-M63iY6fCq58}ThDh%YRB;587U!Dxty$^B)?9@uPl&p8*x z2izYHXYTCI&OfuWbM{h04Zj_Dhcmtmw$9g($@_85lI7*7U$BJ zv_E4ZA48H>I)oY}-KfHT(D$DN2;BuX1FwJ+z<7Z7I^a040O$oyTKyK_mX*%|mm_f> z1a<&pNs_eYWoX#4?+a{)`@FOB&N#Y#PV}oXYHvff07{bXz)RCphNWk46OF>>r%fRdGm z9sOrV?gW}5es|mV_YBgruwA+ubUVk{G|AB_Y-4?D4xuJVrzMT&EH)pVt)qS0Jn{tBy%Zb5&9$W3H@`& zKGxowfgYeEvSkxCyvy|&R^kyMgY zA9z|Nm4EHLekVgcPG&kHw&poz=lt;fhiYi4eVcv$7UBH`n6h%o(KkEtsQtu*@F?a# zbjm9B9V+G&_0D!z9DT)`6GLNcpmzPpL)P`fO}~#yI?~de@JEg0=>|zW>=mS1_W2Q?V2KE5$p_qY}z**qD|Fy57 chF=2k6PmG*0iK-p1^@s607*qoM6N<$f^E`bhyVZp diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_mention.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_mention.png index 6ffff594448b9378f4a67624f1666298c09d1909..d83b746efe0c7f13d192f3b5a61667194fc080dd 100644 GIT binary patch delta 921 zcmV;K17`gC2d@W^B!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000apaTE|000010000a00000Dh}iP z0009SNklTx_o|{6+z~{`H@0;22Ws~=| zRNAqBYzNAD=WRBd{nVTTXF&xV0f)dxumawI26$L5msj!IV+>LQ4X_2WnCL`b%QI2i z9irhu8r}tCz<=sxH=YCWvOBU%vRg8Mc(o?MEV#ywebQt{o?)us6;RtCxC2fCJ6zmf z@{Sjs=+&f8H5TR#D6WIg+6_MkDtY>d9y|bQ(yyMUN2H}_0K9iynnoVd!y!7wRREcoX6wag-p?@0(_dvt>@izJybZV1n+K5Bh z16EzdOMF+Ti2O9zbUNQjembG93r_lq$#Z%_x;TemN|eqb3n_CIAe;V13-UWi~6;vWn^-@jE&4~mzO^ahhxGIAdCLPsK?7|dY=Nl z-~#vp#Gd#ww5$;ndUVk5x;!<(WOvTA4B#&i6n?nU^A^xofiSWS{=MoyKe$F%`1OOH z`+vcCAj4e&M}rR!B@u7S1ugWf%sGZS1`4~vW`1y*kb&ypuP*s%{X60qs0!rsMNMAD z)X$)f9%PDw-&Tf~t3s9!#Shfj^GRDQ6Wr$m@v9~Z^9)u4awF8w8Ny6(c7MFNT&{*b%V0g63x~m> za1iW(EwB-u%Vx80v3~{(WH!76OT{;Y7vY>VBPu#W6dXap6L3AW`Yzh-P&4uz4uMml zW^Ekw_#lz0VP4mCR#Ej0AF%LAPkz;~wNGyD~4 zs-a&5+f0oPe1FYiI?$;GzBGlduT=)2fgr ziXpt}#M;!Vql9ya>Ct$6!r2e!!YXIgR@`GlpvDxE-A-^enUC5C^tiq_;pr&h9O9Fp z?p$~R3q8(SmzPdkg*MC>i1`=%4gP>w(lJd{q@m(&p3 z)0^r0seeo6d)wqT8PTGoh+Lz~HzjkSHd^iI!mVVUm|kv=wKi|3%T8^p6*+&pv-*;k z0;%H9~+R45gs$WW9%j8>-iUbsnJF+EBcY9PJf2BofREn@_|TuiC-DVk_vKK&R?NW z>ay=s=W<(YJ%amOLiO_YyGTn?Uv=R%)R8m>Vre%<)e^MdEP+GdHt28cc@@C@(f@+)KSyp8qS!0yFfXG7{Fxs6nbdoZ7io&zx81NI&$3b zBXU-MXS8%fyZLWlJMX1VR^-AJ#2TQE5nYug--EAX=p*b^FJ^{1vH$UJ&cIJ!Eaw;b Sf455j0000WPCO8CMF1c9lH>tQlFdMX(-&dZNGv zz8A+eRkn>pOdX$cnslmo(FSYFn5-vYJUX3%{lM{3>VJU?iK=n}(+o@6$osbl(6T&MK)l?#O*Cc zQta!%WZT#I((#-J?;UI9k%C<}t;uFjl3;+KNtskWoj41iT9R|iHD(IyV$d%*hq})0 z)p>Vu;eYh9>U};Y@Ub4@Kdy{vklkBPic z!+1B*VG4xoZtA=qdrgWd<@3krwl1HeBTOl;!__sF$LojNx+eG35%4mM7c}J@>;=u5 z3e(Et6}Hq=J}>#D#_Tgl2l0pB%aSgiI0JtMr74aG-$$iRvA_RNtn6%L98Dmz348*j WJycy8L{P~900003 z2}Yx7G#D%-g@uKnO(3NKgAn`!Y}8sCK|~M~QPL=at%wqE3k6e%ScpYXL4?()xJueo znq>VQnOSCc-y@rs-3YP+hdFoV%)OKQ?!I@E%eAe&1OM3$_zFfZ9ROXV6q7 zLouJv&neJSqlrV{GI$48viAtCfRUy*#iT>v5y)!O6dqV}V@%Qou7O41whVa%&V%DX z&2BdAx7a!SOCYV=666Nhkf|{Ww}Pj@O-!E*R4m!f8t-@U3CHi#C2%hCXzIYA<#~_jV0+wc7iz* zJ#$Tm6Z}Er1-?UzAs*?zFqjFvmd0GHspwc^i9x{vzIHA))MLqoO4UCgv7vceKk+ZJ z+=tNP(SN{eY0Sl%icXJ=!KejhD+wnE?%DJFh2QD%=!viEp*~^_$vpvycO~NM^Rw4Z zu$b=>w0tS7HOONA@>5?IVk420YyHR7ni^uU zZ|cUZfZr3FSq-OF^JTk!_(DuD0OFl!f$>GK%X2j=d9=;Bp!q^fxER``|^v3c3@hR`KN0(}8N*J3w3<6H1Xz;}PT%xRaO z2lJFeJ0`~2$o1dvG5(lhvdS}Zny|sTnTwbAaa_{=z;oI9#{|7-lg;}D7x8TIeD<5| z^#-ltlj1wrSGJbiRQaf$Se&P!us*##)=?$9K&oNpxPH^Wlp2du8(hOgns~m?oRwU| ze$n%b>&h309_mGjx+ot>KDb@B)i0>mHs`&M;=jkXKIVR{w#hqK6wSYj{V)D7LFHsW zH`n}Mw`5N=a(?JC4BJ%|5hz-@)I#mnd-=qFOYE5yb$=d}+qwGeYko=f3ID%u*bshP cJNr$dwco++(7TJ?1cSoS)78&qol`;+0Kgom%K!iX literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_mini_premiumlock.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_mini_premiumlock.png new file mode 100644 index 0000000000000000000000000000000000000000..44a9eac919b323ead1df5f9947dd73cf34a01a99 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfjK$N%F~o!S zZLl@pAp@RV0d8q-?)Dd%T4g(!pC`ONbZ|8F^KRu^ z!gf%kPw6d7)Jn%)M-E)BZ+>%ViRjb!MSF7MPVeUF`^GoLq^Hhc&*g(#Cw~%r{G>fj e-!kYy`(b{Q8>&V#onJJ7!o}0o&t;ucLK6UVGnWMb literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_minvideo.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_minvideo.png index 9fa5cf9e94e23c992433c3e04fa927a102ec01e4..4343be4bc110eb92cbd2c662dcbad3b1193ea7e4 100644 GIT binary patch delta 341 zcmV-b0jmCi1kD4GfqyqiL_t(o3GG+G4Z<)CY=LcH2N;1R*nlUGuD~QbSOA9L%MS1c zl{=`V5^*kyDp3hrGHHB1$C%U!MG+Dehzbm>0(D(ap=an;rADmrnJS;&>{w_6rQB3d zVowkFDj#JZDZsH$8f@(N7-qhX>pPT_(0hcQXOU1>LFI3ZO@BE9c?nH@7F|JG_yTdN z)|`)g8Fpn^o)Wu1MIgS~o?KJ}kS-n(*jaJCJ+ueuE{Ipy*8-!N7=1noV={I~R3Iua ztO}r4@Csq4cG_0hXI3g>Vo=qK7*k$dRLlaTpESl&WrT#hqhn4U+W$vBxOEfvi1E-o z+mLs37&{%YR!+qQDJf?27yA6H%=Yc*9Ub4s=+!S0>MCbWh3s;#ZUS7>F!SxoBOk|B nok555Hz@zB1T!k|rxkbrHBC&FLZ>?S00000NkvXXu0mjfK-`o8 delta 394 zcmV;50d@Y(1AzpPfq!dBL_t(o3GJ4>N&`U@g|j05R-*U_76!pLu(YwtyJ%r$V`m+# z1hKagd=GsAOJOBtBx%;~$_~Wko>|#MVsQr!JA2N#cZZwFo$2*rL$WdjDKgd*0wSpSL(7LH_@WV zSWsIfSCxTHd5m@n(tb$RL7M#HIUrBdW`Bm~q9|UPg1r|WX&i}0Ja&{0KPBn9rxQDY zU-Pt@8xgzf>A5|0Pr%p00000NkvXXt^-0~f*Jj_L;wH) diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_msgbubble3.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_msgbubble3.png index aca3c3dd0d1f65d9d6239c64eb7356acf96a853f..68ec833361624100b3f0676a9f1980daff19dde6 100644 GIT binary patch delta 822 zcmV-61Ihfg2dW27BB~9!G8=G2QRbPY@VD>u#j$W z8+-*xLOk)i8@eI{yTC(`2jwwG;T?ExS=Z&EKJ|Ciy)Z=j!4Kf#7lV61^=&~0s@uGH z;=7Pee^5_sjm9jv>XgWTz;&=Yw%H?yZ++@_A>HbpUm8YSH+cq}@O-Kss^4@-#TZE} z0)4=ml=OTAet$KI1&t^j(<2pQAXWofJ6K%e7e11A#x_+!kRF&eefhLUwnG>*veNNL za*dPd_Ie&;p)!yGZsY0%ajg8EG<*(BL9o zljb+&r1efJ1`{h79I(sBmeWqoXTSMpN(;hSFG+X(K7Z|%n7;GT&5(a-0U8$z8W5kB zQtF?+PsM^3J^L1KoaS)7C;nYy_Z4aEueMEv{}BG4;5v)Z z@L#Af<4GU2pJ9%?x`NQa0{YEh-uyY7l1%mi7uQ0Gbxa`cZ~Xcqr66mksQs~v!N`UxClS5ugvk?$ z+99@r57w9`pG?#kK|-Sm44bBs^ppR+K)#?Zi^CCKu~TU50#8j#=^NM=+vpQ$a2qw9 zt;&CmJ~ebKQ*aabCy&=$haQJk2C31YSI23adw=GiKAG#Geg)`n{{?sjz5xC8>-4Jq zw+v5#J-|hQ!7XqRy`Qd_C}VmaxHzLGE_%QX@YhWw%z6fONUZJjO5-Z<1}J_5E#j>% zywF!L0T#TPKh%Nn3AhCICb|n@Bm@qEu+U-e5h!kN$@=BA0iF4e0UfzFg=yDRM{pgO z1urf>GZ+VhV0%rX^)_L=73iq4xn8a1{zl({f1WMwcUf&90RR9107*qoM6N<$f;$t1 A)&Kwi delta 833 zcmV-H1HSyK2ek)~fqx%KL_t(o3GJ89OB7)k$7jvVphALD%nlhvgeG1pA&4O8QWpuL zs6zx1{eY4@by@!c!LA*{W4C^3-6ATnOOZvPM(IjHL>AGeZJ%d-o_yV%*`3*)>Er`n zpLd?;`+T3rnb~<~Ja5@bpMg~Aw0}02%WWWY2}9qM#Mb0J9q`R$D%*ms%hi zW}@91N(W*CczH9I7R8Q1rZ5oryc!)lI0NF!JHNhmn2t_ zM1NR&NU!!lDUyRq%;M#tmxzfrkRD=#zD-ETjW;U{?4~a%#-Q}bcUtIK{DUFctpst0 zW9;oKMUNv+ziuPB&y)@g&f|xSkf6Vhw)7IS-kv*9%YQ=7%djbCb)A^g9vN+5y_XEs ztjVdwrYIJ+UeLHxg;p%aUHdCU>Kt%!{yb0}(m7yu zIgnUof`10R)&zecP>!U$?Y&a+H+)+lxxxgRvX9vo^^$dMNht^i!8{O~1eLvV`gB37 z1-u7h@)2;rhgKYd*drBcv23(xbpX3>M7p=Qb3g=glT@f(3!sGxqfrawi{q#2iR%wl zY$OU!I>mb}Zk}A(4@@}nJUa^}fZ1;rS53#y2Y=mACzSjZKVpT5$vbcwoMt_We*z}J z7a-3x`HGc&X&>kU?q`xbcu%pZKE{VP8f^vkWtxBI<#;2w0zQGLHcr7A5bC++cZSY0 zzFm^d2tD9G!m4%RWgM|nYiH)?XsHpf;rRey5ulG#uyt&i&reYy+ zl5ftr-#Pc(Z|>apXUfX{+rPX6*=%+*xC&O3`aPIa3-*IXFn_1i`N4V`bphE&P!}u; zkkqz-@4#$`pfONd8by;`;Fs%~N))y2u0HO*LClu|{4}r>l$WMxbh5TQl_=_t0JE0_ zYr!@n@JF4X2afB;p8``#62^o?QPdm+W^V`<*doO5UE+chbjOX&^$={a`c$3?MMaUT z20wvJi!bq;GJk%j1a{F0noN8EJQV3nzrt~UUSiCIpeXn%@Cv*JE8~se@&s8PJ_GiF zL15Nm`Ba`+#Y9z*n-ppS9~5M@R?_2&p@XN@Ig@plN~|*n1Wo- zI_h*K%XHYQ3i?4dE9;rg$#mBswJ7Ek2!g8zTm3~DH-7=MlYUOSFazk`A^QSuf*pPl z<5Z%k%M-*{cX6{T1QXqt)R}tZ61wsx0-A>*e0M zcxH6C+#u@}qzWa9ol)&&U^`V0f0wZkx1Sy{=*6}f<9PadT@)tlRIIv8ht_VUkG*8I zi*2W(LzntcdyR4-JC$_M%c*$^WV)?HBJedLoPV|X4gW}x8qu_eQ2>8~=;2P(q z+b82Oy&B;7(a7c|A_- ziGQ!%skB_4C$R@~0lj!>aUTpL`^x9~yorGUHAO{{voEg~wGDyk$rKZ}gC9U9p{tW- zQ4o;c^d2n`c|?5uq-qIeunYHK~a|fW6uJ*RQ0AO>j#Vcri}H9A<;XH zC;scA4zq|^FF~!hxXzgDjB)ae|GKEwXmZ)nj~BS*U_CH9=nE<$D)Ah~dyF||<Hc3@W@VRjfq|5}SRBdE%K00000NkvXXu0mjf?VIoJ delta 1043 zcmV+u1nm3l2!#odfq(BwL_t(o3GJ6nh)rP_$M2mn2n&N4MVKNMNU4d9jqlGP3l=hH zhK+@>&`3#1J{A^OlTs2A8zrTzENn!+LNY!w88u;i4A<{}?)x0?J@>u$+&fq(PyNsH zy#MFp{m;GUyys3P^WXmEPav1e?E??N@@oGMdK$rI&;lk@+kYRdXV6_B`vO)4ivlFI zJ6#VhvRS`18-KBWelmN6?TeikdcH_J&}J%_M&3633jNgI4H#7k-P? zSLA6ZDT-VJ=zjw;Z9d%}%32%Bjypj$#I4||NY73a5Au7<#uNud!4Cs3!D}!(IRvgi zkmcbAfK5POui0gSTB}L*6#Js$8y&t53=9o`4+^qc^5cPy7qdf_EAmw6#yk)1gHtNN z2SpV%JA(SMg51n8)Y&ofjkw@zk48am1-|J%8SVyDEPslgB0+GAz%r-V_G^MOJLl*0 zDU1a6xPKtN0#^G)tSb^lU4bChI>pV-5Dc)n#MfLxN6aYWC1{CD$Q1~QiwMZ2ilQbd zXegX+0kb1E6Jmjp__fAsqYYl7F-`;m>dJ~DUm!>$;KqSRK&D$^tm8*SO#X7XCa_;B zmCa_aQh(G8z5u-r^bq(bdN-Wxecoj<^mG!py0sqj=v#nSZI9!}`+~BLtjMK^+RBil z;6!5BE!JNhH_6LAb#c8fDCZSa6qXVNe*?6GH;F-g-uj~#8{g*(^7563r9_pOFbCca z(>q>`JzZTf$30N-O&vFR0sT5>?AVA;bSojJ_kYe19={1#jQy}-9uEY5S^Jom|D%&bLlm%w1~4XmZ-GQPm5n+0(jNXKbvHYN*p zQ-73ZJrroevZfjk{QA^LPOqxRK&E?WVsIdd_24GZ4=-)*gJoo&xXud>@JMP(iXwM0 znv}nEcx{!3^fm+iRFFw%Q(8AQK~eDb#GOo=Q8v$@b>KUYb%U9q2KbT26DLKjg44TA z{}9A)eygwAGh_?+0c3B%RDTF-{lt*yHGjqv7m2dmAMtFk9hh|zG}>Td-D9#}2OUY) ze_d2Zv~B+K3^xnR17>X|(maWzs1=s`Bc2WR+wKXkuXJ)~6L??LlTgiXacr;$*waTC zy*Ap*4W&l^wm$#|{kr(1_R0Rl44y{ce4w8a*Ew|`^=Hoip0rQkC*S@bJLs#}%M1Vj N002ovPDHLkV1hi}^=JS9 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_mute_period.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_mute_period.png index be0de9ad1067dd1904b590e3223005fa970cb9c3..940b323dc602550aa0690192daec79ed72ae7109 100644 GIT binary patch delta 887 zcmV--1Bm?62kQrrfqzv=L_t(o3GJ9aXcR#d#yz8n8jU0>rVvR20WqXWAqciYM2i#w zv4~AbW2;!HAT}b}1cIfBh!)ydL<6=qUZaIcBMKJAKNuuLQAxu2`z|xLb8~aMd$)I1 zdGPI1VXse-Lp%0Q$I zJOL}lx7DfFLf&wlxltNLj04xkqiDDVS*z4z@Yp1;<4=Y&QjQ`p2%Z^1>(n1iBLVNM zO~PMGlN02SJPH;Zu~1X-(Vzf>#Et;nX4xF5{m~(*1Iz;7mKj(A^1g}R;TA@}9n2fz zNBllFo~lh!Cx3WrMC87Li{P*;puQPb+?w(_Esypc8^FH;)8H-`u$)*Au?4&U*7R2G ziAz!(h-XdtdXsd!LaQv^Oq^yZ25~}cV-NAUQZS|=9uVK!gy?ko!6eYiSfpDa5?a9` zki7>xVrr-e!QW}}a7CTg3Q{cthzv`~*jO#OmP_uK6@S2I+x!sF(#n2=b~}kY{oSA^ z0H3F~O8K%$SEJ@O0`>vSyUC0XfL|bF8b9vw^M*LAYC@ZTNLv=F)45Zf4aAcE_b-^l(MH=f;C=Xr~QXPN%uD4`nc^hC%5WU0l($ zhgCNy_IUY+wqECkn{4 zdo{qn!C#&aj5l|Pg8G2|jpCa6ea)RYMxDt=fHu!J#*f6%H$x3sfq#7g*xM) zu;P4E&Uy{#26JjlGMX3%zKxf%@eyS0QkTOcC;o#Uh$}KiDbNp|x`O63@6S>K-iV3t z*RyD%9K^$5$txBcDnA@8K#*K7&}EiA2i4y?h}ywC2<;bvWgs7#`0ajU%v-^tBYwgk z^7EO-h&sS~SARtAJGcst`vo+2apldV>o6YU+m^t;0e8V2&}W=f53vEf0A~7D9ZVA` z55zN*Uf(2LuGlV%cQ38xRu1BX*v=l{3tP#Qfp|cCvkB3ebb}e7oiSwFAq0)!3y^&T z%_%*UrQjcMI$W_%V;QNM07V8>$=O&nTH~S}vjX_q9)Erm(ALV4DVgMBifKgjfslZ4EIuz12&Q zR(`qecgl6Y0!M{K=10H@hi?25ko^P?i=)yX(_6h#CK%~#lFMjn6``Q}=_c-!hTsah zulQV6>3@<{EJ`!yAWb>qEt+{&QItZcsUe!t$?rbU!}2w_25Pe04bhA)x9*k0K=;jM zc4q@$ljUxRRd0YZZgrh!?BKQaB6Yd?ICh{Jd6MxCQ1jVC6xEk?J5WYUjE}8T|b<9S? zT8VQMI$o|ir7nx@QlchHLUn*$X4UVlsDso3>||K`FM(i1Y7YR_m1!NlW|9rUl$g$@ zlbQK5)Sk8l@RMPs@YQkBBa9#z_U82(`uAh{Wut)$UiUja{L2D*?QFBM^D(6JFfM_% zZCA|tPSz+l%ai>{ear4ZwXz+`x&}LW7OuVJeVN|)ul&HSjA^I`=-(*5Y2LFd4a62< o@gbn!=5L)Jit+x(>bV2|0Mza~A#=3iR{#J207*qoM6N<$f}I+zhyVZp diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_nearby.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_nearby.png new file mode 100644 index 0000000000000000000000000000000000000000..b1209e201bd41d1ef75ed17433eb1d309a19315f GIT binary patch literal 1107 zcmV-Z1g!gsP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0y-7qtR9Fe^m&tEUQ5?rxH8nLv znu?-P!-gnTf>dG%8xli=Sdp^mLSoo85{oVf8^S*zhJ~=R5F!!7io_6eVr-(4QWmCA zL!Zz0_57}LkNfVcdR{F2l23o*`JMC59nNh@$$v@TfztGJdNz~EluC?+Zc+nFxx7N~Z}R!pKAUDCfROwyp) zoV0|q5!a$j8p3?ReP(L5+0fPD1d4h2<}jbn@0YKj*!jLJNRPJ31~WYE$NXBaq<|)u zH_XVaw{g$4SOt{J;gskZftV5AAxR=yo7PN>VG>Lc3!NEL)L--hld<(6v{66ai}&4Rf~{`bV=7n2SkX^sORjo9-rsjZ zn_ha|B{8p>6 zAimD7ubyuutrn9eSPMJgl@*{hw#lzk;S%@;5`7QrtFIzfi!uB zT_8CFsmBTVDrkdzqMAx?vR_Q{x!Dui>5Jx!b~AR`laQ}}V|Igma#-t67}wz@=tgV(JLig+yy2VJ5eAo&2ggl|C~WS!{W Zk{?9q9rwKlhL`{V002ovPDHLkV1m)C`A`4= literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_14.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_14.png new file mode 100644 index 0000000000000000000000000000000000000000..1628277101fa9f454ffde170eaf5656b5b0b916c GIT binary patch literal 1133 zcmV-z1d{uSP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0*GWV{R9Fe!msyC7VHn5H8QHhV z7LKBrPzoVSmYUp9WRx``q=Z~hwrnZf62%R<5TYm;I_cRiZz9a7g zt^dlvX#Cj?<`(>ulf`a>0gXB+8a7jBM{D7|z&SI(Ye0FU4T@&nz2-~Q7(ETv08O3f z18AIeMWb?cbTr=o64<7JFV6QI-o^JfSf-$+V;firnyDas88GUR-vq}ZbHY#N`|GV! ztPObN6+fE=UsL`Oi1rqWE$XAd z#ax-%6S;{J(2qEq*sh{QYI7=G&iy3uu`v|r48FNSJ1hvj71-*~((HvevFm_Qt3t6s zAKCM)0=z+o8~L-mTKz*!OF|B3AL#f;_?05D#oX0iK&dB3#9{;L?4lp1)9Gv^v+hbq zFXg2tN5ofoYlB3boQ{F6L*kOl|De0Qhs7uUNVdczL1RBEiN^?Akif8!?l>0g%xG(;BfYzS9p3$;3|qr-41Z5F>OOZ4a z2xoI@?LW{V!R#0Zc^NPUj05_DMF(MJh;0GR1EZlfpgvga;96}7f11;Cqm2Z9Fwzgh zNU#O?mtZ93cPsQ-3PhTI+br>I2+*_hI?zL2FT^>ZO?-6NN={RtDcuZCfH{6NdgT9F z@WLc8L*he_d$zhFcj0BWeTnIYuH!&;z5zWeD)HwoW&CC6x^n!R{vQ6`*y>Ic)IZZh zK$oFNyQ+m%LcSnl9m;vmu z=a=|J4o=xGkpTmZ+Tqd(t*NbHI^G9D6PbSi!2bZF3$Shd00000NkvXXu0mjf$N&4G literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..757a1f4ba71bff7597d2493b35000ba8c7804eec GIT binary patch literal 1149 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 WmX9E@-mWzO0000ktMC0i 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 Y7|R`F_jYxCTMtS)p00i_>zopr06!2PKmY&$ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_openin.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_openin.png index ed67c9eeb7fe9ad3238cc7e1eedbb51d8cd94691..6d119b9c623007e38cda5a0f836f20aa308d89a6 100644 GIT binary patch delta 616 zcmaFO+`u|Pxt@WsILO_JVcj{ImkbOHE~ycoX}-P;T0k}j17mw80}GJF2*grA%)r3B zfRTY2NHc=O7BInORTeNK*dT>ke2@PCmA&$GaSVyzd^_FNkJ(V5bu&lc5)N?&JqFQ^ zCN8N<3V{Lj?wS*Jxc52u&u;2s>SVfjAyC1>rHFxrRY;^I|Bzow?w{TEi*Bm-zWI7a zdjFYQ=XPDryco71iq%NI)@*j^$M?y*Z|qVoJM_ci^rrleha(qDCPaUFbAbP`e}SCL zzo&^p-#2QCH7`t4sE}|zk=!?R`P;6tGt(Z}o&SEL&GOv~f64lK!HWA zJ@?7T{_V2%*Bs7$r)|D*8TKp6iQZ95?m7u+^;VURuS%`o52R7OXHa0$h zh=rEcT8N-Fw!VXcf`yfp2x2EDA(~GX?#en&va?}gnmsVgE<3aL%*^IahLV!lNJ`3@ zq#H>MNv)jnDQVgIC1py|dqBUYq=Q_2Nee2@PDW_GNN+d(pnu0{)9NSS5UAyhp#_|0 z?$3Y^U?@9IpaIMQQ-u~)(yPhuWkwyNj7xfUCaC4cuX>yYto|xAlFrNkSHLLnX4hVP zLg~6zBFdcD64rr5;IxQPOk9~&;2Ie2hmcR^!k)FA{ay)mlIchsOOB8`{?;){@C) z=N4EB{eZ*X+}#YNr5f07MAEjTB{zP|ZwT9HLr6B+eQWnCYxg=+w_~8)gMJCgsekB~ zP+Ll&JW8QFd_w6C9GX+QA$@nyZr`*zduoWykQ3_%UrVOG115lFyRS!_J0X{7v}c6j5lG-3f=!^Ym)xc3K9-zZ^93mvHKw$xTTmY@HZIvlg{UG z8V=V5RF`bD)hA%AD|LR2avT@nev0%D?FxLc(WyeIPx3W}Fy=yqX}w4XJrj0m->SE6 zr!fXJR-j!`Si4LyGe6NEZ5BX&o`BZ z-lAfr%;if{4U{*aaJ?Is3H?>L1Iti$wK_vrir(dmXX-|!Ee7s0VYE_dl!VwV!G2ik z6T_E8nDgj9h43r2z}K|)Z9?bF1b(J72S*d_D+|=l6b8P1<`Szt#UmJju>&vnD6;`J zJ~OdQCVze=Qx{!jFpAQ)_L)NGJ|)cUk<aHaw?AuqQW zxWNWy)jyGpJSc_7!4E~R`r}e2-pKmpZm!FH%68^5rzmQOf;_dwCTGoG-R|jsrd*zf zqNpJX@(Lk5D4TFEQ%+_5ayQrIK4m+{kuz%ObbnaH*r*n(JVJ)ui9XcECFWv!h>E3) z8H${ZEmORQ!F)1$o_331KER`iKImIeotRHP-BH_5g586{J4;_+_rEvBNMcSCgTtj| zu&xAbgkirH+hZRcd2Dl<7_2LQGAX?SPr*qP!)@L)Y`(zuJA7V;@oM`mzi+!t<}xP~ z)_>3iidGwA*q>BO-Xj}h%+MN1{(w)xciHY@U1^Rd43sC$Bzkh_v>W&$g@@443dKrpe;W#lL64T4y*U-*Y}oY_@|H6IH=+ zd>=+pbc;LiGVO7HN*n8gh+ozAyk%7e1n_s$+4!>|FOb6Ar`$Z_#{k{FIQhS0@}lfh i!rA!4s$AGhODs@Oo%pWA`y&&xc-GA!Df=!- zW)5gNOjK`ydu74Iaonu`T$yjsPOueV)1z_&j0MRBO8GcnKh{ctOWs5PC1diP%6y*H zpGGl&VwqG+3V*hy$)4tb`ec7y$JxZX2^3SJK8mLg!Z@%w*V7axgMA20fGG#n{l%Qi z4*Mjqky2lJX~KeW6G)VO;WS~N1@A#tq?--*(A8qs^w}(I2DuQl&lqVVNODSetDsC) zOJe9Hk*Lr7K85n7tcZp&`Zi(H$e3tXZh{d9)ul6uj(-${F<{H1-IF{99S1f#tsbM- zfTJ~I)1;0sdFG@l9k8UtjjkzdEg(_fzm6FiI(JN>n;rx$T9alr8EZq(NSRESK3hW2 z=4rB!+R^ARlpLnYKn1(rCXB~d}p6q-!Mc+x{Ubi{SF&*%rSSMP1N`A2`P&m;#+ z=%P#EV}D61I!H~Xtr94Go9`2#)~rvS{pE~(rFjX+BDtCz_W z>VJ1Z*;yuzxF(9xaQ)0vw}%g3&>S&)g}sI2YZvi|^1lC+RqFBq@|7r-V%oIpgvd>2 zPh1H8CI1_3ljR;_9}NO5TM$Z%sSzr^Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0C`m*?R9Fe^m_29|Q51z|H3keQ zDJ+cGhzLoL6wzR3BZM@9m?DtE(xeC^c0#Z+g`~34!X{X&l}N0FG&Y*X${&J=U?CA> zr6{_7XY%gk?d+SkZ`|1B!pXaH?>XlVZ)ay_lVy7m-+@NF9qu-p&69L4f(dW}90Q6^ z;5~Q>9yc0|4c7k`oX9YE2>yUhA&$7ibdZU=eP3AM~bW@PjSz*UEV4%``d7Naq4 zOAp1AsaS_vn%)7uF<{r3B+AD;N=r&lw*!l*mZm${7b;Ra?$tkfc{#mJq2DViSFI|1 zFMmeCuR0wPp8D2S%a@F;MAMWbA6QC3&ICZ{dcb%uadkd441i`8k ze`Y<9qKR?j0pz7vjd6oLMANx+`_E*MRHKN^q~|wXL%K~x+y^$D$$D*rk^rA|=Oxd+ zQakMs;i5Cqaw$#K&XU&iS!`z{Rxr`4!xv|!r}e=^X+e_)*ppsfwO?ThGbI?z0*j@V zX2Jo&B@?sGCP?BGO!k2n&Q!0Y=i-W;uDHNnW93nGBi<3EWEhPAyDw?`4|URs1MH)c zHugyAWY^xuZ~<66APGK;q*M=xV=>?E*kuK04S8Y{SoPB;80vXEX(~@XXpmaOxF5WA z!}LS&a#^byupg4*_Ln)kddz@9@C_)wgYz~(xvR0{oXX#BrrDL1VdLPZrV?8~7rmfd zq2Bne3`;d(;54w0MmuJ^rds`HRqEgvkHPcaNs;CedmoC~<-M-2eoo;6PFLKd`}{-U gS;wh+gf4dAFNTq(FYOVHkpKVy07*qoM6N<$f_*2VP5=M^ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_payment_card.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_payment_card.png new file mode 100644 index 0000000000000000000000000000000000000000..4e12ad8a73c7befebb5ffb2984be8b8c1880f22c GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`nYyQoV@L$& z+v$#cO$Gw42X~aey;eP=fct%ucK<`cJ4H;r!O3DmXMwlT$Ep5Wui9i1MBi*lbM!^O)Y1ip|I+F0i*l}mV5)X zYbv)7iq;%dI{#Vwx}AVZ7}vXk%ku@(U5d<2ckIYA(Ki1(%d*d}tE4%~J&^fTo>!)? zc+zr(vf2A05BtX-zW(RV)uu!1&j`G9eVcY+!p0TRvL`LK$P_*~v!lREL`9rULb&AM zQD+0=q64>8bG1rtJ&8(dD(NoC;mdS~5Oel8H(PJ0>+;xm|7q>nx~Mwabo&Kccdt3& z91!Jx!|jS(ViCi9spj@Sb@!!~2TVS8e}QAGSq9$>=Kt0o*iJA=DV7LM+YAaiPgg&e IbxsLQ04md)lK=n! literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_payment_delivery.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_payment_delivery.png new file mode 100644 index 0000000000000000000000000000000000000000..0c7cbb41cc68c744c89924b0c5fd2c42e58c4fb4 GIT binary patch literal 837 zcmV-L1G@Z)P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~uSrBfR9Fe^m%D2eaS+Gv;v<28 z8jzTPBE-VRXv8$}0TM}XZ*let8nv(t>Fl(!iIpi7|AHV2Y7wytCPfGdiUgk+B^Z36 z=Vz9g&2KOJ+r7MnW#;#rneWW~9=m&`Qd62MkZ%RbzVvFf+JbKn@W%LZYvwGJjnLrNEiWs!A8jgh!dL%odlj{9UlXkTLNQX0aQUA z=_0uT4k*cWw(v$OAq_p$W%+{MpPG;%0KRtcQu*JY!-eqD5VWKTH@!hQ9B@~ZUsS)3 zN^Vk#fL*8#4SJ=zX!YD7>~-vj88pO9`VvOc)-{+X>xX6@^)XmOK7V2J9OOTcJyF85 z?8=rn@`g2}#qX=$haQbq}lsGz^pbcwCic_Ztd~)ht zS<@8GhOCekrd}`j=rlECK08B=xMfze!~vgXFbL$0AaaN1TE(!2#BQk2)C>i$YEe1l zhsEBshP06h)uMuDlQoq01?uo-GFP1FcCoD?XMS_dtx4rMXs7VY4d?_@;2wMb62c>Q(M$5m;m2pfJjsFb&x2; zq;e253`}GK4W}Rt1P2;fN@Y^o8+_h2)2Aew1GMB79@$>nw`MMv50T463n9e zsI&TKfP#Hs8Mrc_34y{PE0tB!INm{c%<6=Pn(n4>9KtaSE&}oOfJq?lAi0tDY5N*m z;1hZBp8!c5vMS@?Hnr`E%`iqN{s@SC0O!B}xC=~z{f?!y4N@|OccS9p|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CxoTi(^Ox z=iBMF-pq~yZNj3g2ldwo2{;Pmuxt$Eb~TtL7ACe*WXt8S59|?9H#)hR{vYtl5f#}e zV6UaEyJ$h{5v?|f`4jINJbG$YzEi`4Ev~Gr{M+5{Y3k*(Bi7`7<@xiSN2L2`*akj5 z2fmPONe;dP6%X!gT)}>)F)D)blIipnJNOa~3jWPBE_15px#w%2Gdba*%nJtj1S7eA z?)Cc>(;}9pUbeTop|hv$nDXla_{r%xrS!x_3`vzul&um;P=SKd>c1Jh-spQG76tiovHHgxaZS3>$P$;g;JCzgm mAY;#c^Hi}b?XM*{CO7(XrFyh}&osOXN=KfqelF{r5}E)XJR|4; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_permissions.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_permissions.png index 1375d05358533064020546a7098a79d3bcfce536..b2b173f9cd1505e0330eafb0cc22e6130545cacb 100644 GIT binary patch delta 878 zcmV-!1Cjjl2jT~ifqzU%L_t(o3GJ9oNK{c2$7jSAeb}PREUbheq&9sJQ4|zJ;HFwg zZ6e535E2w^T2)lbgxN(xi-LBEix#;tg2+~71qE#yjdCHSkdazWzyEO0aDBdcU#Y7( z@bldF&c{9P-gobPV=h;d=n=?Ao6}oMrP3OrHo{66g>U(Met#OhbV3okp#Vh)$}~6n z;XEu~)T-#91s=gHB#{xE&PElLdCEwy8fQ|NOQV@w0zCV1gurEbQA#G6T? zcg7@fF_xLY27h?x68u4LH(P2=uvU}3zzE;`(se4ky;`{t2mgoX*Sk!iC8Sv7?;61&O8SEe*g zK^+9wy9E23{vUOmVCz3})z0gLr_rZ_ZHSY!kIi#RafA4J_z04(V1>nJ!TE}!oJ^n( z#z#eakbmQN_^OS|rAxCQO7!uRF65jw%%8JZ;(bJX_>ZR4b;@INn< zq$SkZ-Nb$he9H8rDj3DR zX1E8>;VlfqFOcYCt8zdFV>4ZoZ~!FF!V++QK*lOkIg7$#)7fykwgU%aot7zL?7W@7@L!20WZP|YGp*Od41?qKH#nki&>1KgZ2OKlhsk1BH0ssI207*qoM6N<$ Ef|zKZ`~Uy| delta 894 zcmV-^1A+YF2l5Ayfqz^{L_t(o3GJ6(XpLbU$9MeM##%xW(~_-S$o~>jRxVbg2$QH4 zrCgaCEjK6^+~CHIKgFGrCQ&Sjpc*26NG34i7A9y*}~niGjcJ9>15 zX12gf@R5rIRmXKy@Cs45l)`6WyK{kWjPF1P^ulyl0t>-PAA<%~tJxZct!btN?t+!K z40glBsN&eG;2it{$q?*{iY>@SvGb~GUj7f*qR)FRoL$}r$CD-@-Qxe7_E#e-Qjqg zi=2SX)<4D$Jhh&{5o#Y((c!>@z4=aq<_NI;iBCT=4-v345L7LB`tx0eMcyFN4P*QN7t- zB?#0paeoY~d||NKD>+LL`Q>oK7DOM;5*joUSPU1O#4g4Qf>G%ib~U~RVh>6DweSqA zTw{>?M@7&ixD8gGGpLMeMmBuwOyEcKX{ZP7ks4S9y5;V>6Vud&F3VOkV<)fzo+`u0 zJ@n*EK*RvQVtl2S!2OVjC>1mjR0{Uhf?@KKY=6P1;0%AY0*$;tf3=g4);qTjX1&tJ ziu?ONMC3dZeG=Wsd+(5$XB0&zFsXo9ur=dIe{pm$*ZcDf&@Fifoz#&%KjA`;K++nO ziG3w#pF~MlR8Ao_cbCsK1+tw}JMmAAxQGtP0}=LuOztg9nhI`{DHBVguZeo&e}Fy( zZ+8r@xh4I^H*DoLq*n^PUPNu=P1yA%Dmg*}SJT6h|LZoSlYBmGWJPqPAMn%AAOrFN zuBS$${f8#@MD5m)t!cFT$kgY;Is(*`o<%*-2Ri)pwW%-DgOK}ymZ|uE@QPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~vPnciR9Fe^m`_U;Q5eR(Y7nR( zBnIIkECg4sqNR(#0(ULy1LUTi;I@SyApd-UK7l(US_rudgNRlVWLS%W7A^V%ZOZBQ zT;F$;nL9J*oY5lig~#{Id7t-pj(6_NoqPNG&f-6N1v+i_n`K!)jH|}k>vTE?ZJEja zY-SR@LLM4VCIj0vvhW1jN5$A@VxkQ@x|apV(HrFPkim){kX0Lx2B$Qz&=7iwJl34U z#F|f%4WeTugITBXwi7=sA&N z(06SCrPpY<3QTRpJfv>isq!YxgPcO&582rl^5rIwJV;)JdZ(Itg6e?!(Q~9YKsSRL zG0AH^q%K1@(RKl7Ni>V-_XB;$-*-!`b^~k-eYMT#-f}(`s2=3^EV0I78M&Y4b>tCz zs&ar00O-_ttQYG+$8_sT`DT=@pr#rVoGoLCIZ|WoU7~5h07}WPj?-b>I>uY@`QS|R zh5L#Zo$!dcEP zk?J<|)7;UQdTEuT31>O`sA8kK4Sh1tNj_{j%h^#I+BNqqZ^G7(5XP7_rn93qv}x`O zi?4dV*g3(;pt#z*+p2SKtpUjz5Wk StD3U_0000|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNx`rzr}7!twx zcKSiyLk2vq(iRGZN$h0_4eKr%3vb|@iw$-xpKfgY07(TW4qspf(Z#~plg94^HznygRaiEF2-uq44eJZDGR_!@0 zBKdS(d1RmV`%N;=rk^M4TR-{q-)OBzvHr1ds+Yg)e9t3d@PWbf)`q`N93wY^!obtj K&t;ucLK6V^^o&dZ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_off.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_off.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff96b870f0e80823b6f226a1a93f06ca2d308d8 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxD)w}742j@O zPLN<-tmqKQVX!Fs|NsB?#sOz|I&NNky5h|LLnlsDv@MwFz`m9_sj89l1z(brxJ1Uk z2mPBG`4$HLc6UxNVR6GCI$94r$bZ6YowE3^(UTC^{{NtFNq literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_radial.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_radial.png new file mode 100644 index 0000000000000000000000000000000000000000..df29f8eba56bf5fac96f73a5801f529c21a6c9a9 GIT binary patch literal 799 zcmV+)1K|9LP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~iAh93R9Fe^n6XL&K@f&>v9YqS zQxL>g5G*8>PavcW#AmSa4eSKpLTm)zAYF=}gpxCIxW;hx4m)jBi9k0gmC@DTdAqO%8= z%Ytgm*~r$1VpS@_NNhR6Q!m;J?Jm?Bss!0OANd*-bMmBc@+)&qf1^?s5hM9R#V{O3 z%*s`GwapW$Kue)Dx*c%>{gR7?$e?vO9++x3-Q_;1N*%2X`Uf$LSf-bqVnKU-nq&O# z!${lI&dDzR!pJ7=^*Dlgz@z=+b#VY^RrmCwOo3mU$wj&@+j zvDh*6qxvu}?Dn9c6^<8uERLMjJF+-uXzTT8&18!hsbmZt3xHxok8a3Uw&-+DX%6AY z{3XM3>Dwd>I8|Ts=JcN~woZA$=FEHklWcFYoYVBg*N1IvqOYb*ANs40?TMS~CN`ew zFnDuDLuD*=_{9M8*z$Pu!-TKQ#)^e%ia(GxN9xB86SA-NifnlB{ zH0EsVB1SiZV%aA{Q;gu-L9-@^F66WSp=b$7l9YCzjs&~n(j1Gw`6(SFrq9jn|JmRt dHE++d0$-cQnAjfis>uKV002ovPDHLkV1jaUV#5Fc literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_brush.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_brush.png new file mode 100644 index 0000000000000000000000000000000000000000..debc435fc402a4e39b85da8b97a0a8b5241b5d8c GIT binary patch literal 842 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Jf2y7srqY z&bQO|XNx$B9N#SEW0r|mhhl@i&ESgR_XtY+y|Wkb68j}#tB|=yW(`z z$-rsDgb5-|ntudcIJ7KX41O^4X4%;5?_)n~u-Sa~_SQqTKR%?T-}`;;yIOVi?7qIT zE&d91OucT(-Ru9wMqXXBpsTcp=dkgXd6TPGUC>#(Fzr=J=lu;kw?wS&&Cyfe%pi6= z>Z;D&e&+jUK3+;%YxZw@n!!EZ=MQX5{<4YLX}C=O?{lSVCg%nT%{>cE7hK?6T)>!j zxON9ucY@&Fbd3*ZeP)zB?73mFXH%?l<)okQChR!VTy4a^GfsF_u9f@a%!1_3?#LO9 z{O_0^XGXm5DvDh>Q~6w5(i4p@H`{uQZ!o`m>05YL)%1zi*&c--+$#4Dm>EAxzgG27 zEn-emz+B0{CFVYJZC=g(uzuys=E}D}eWq2PTJ*vsf zi`&Yqo3_qite-dU>H|BrNoSVqsrzC*`>f^TJBia$PmAoiwkWcwcjx<^zB zghf?qtzZ0nF_%r})u-n!+i-k3m;G_d!M;1o4k+1v5-vLKaw55L(-zHH{D(JndD=1W z&Ah9vuDo7#`j+@hcdy*bkX5RFIC(|p9%cEanB+D2?Z*=o|9@K3n|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*+Nej$B+ol zx6?Oz9dQt76FzxUvne8qLu_9Yhgs89{|BYNm=-NqTFLNH@Qu#VL+9LP3)eC@3b4G@ z-Q)MA=e|sJin+?o-5a(q-@t6YdAG6k=lk<{Z+0*GpAtE3>p{tgAHsVSFR>>5-pAn^ zDRp+mk2R|2BX78!h+Le=&FW;fRETfQiV|M4oRdQ8^}O3neb$}&dCkm7eP%976&`1eBAjY45Vp%|vcY%z3$XBc0SD!-v1;oF& z?8X|C-*l!|=}XuA;@JIb;yya1J#k2y-CDf$N85geSkv;CPcD_8WRKV{IOTf#lt0B^ z6ZH=r_;u@WRr?;Z9juQ7+Bf~pemj+C&n&g#sH-ZcE{W3h1R>c pXI3{KU7{xQN-Sbd$bYxmdd3;?(Vm|q+3tfP&C}J-Wt~$(697C^<(vQj literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_cropfix.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_cropfix.png new file mode 100644 index 0000000000000000000000000000000000000000..b417d54ab303de12795b63cf7f34e9a9dba633fe GIT binary patch literal 489 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S+J*zV@L$& z+wjx8hYWa@c5psuxuRVDta0KD=7Ume4$M_<5?&K9&wE~h^J1x$&yZ{@3lIBX-(OAMMP4+e>-*&SwqNZ?PzyGA-_v#QHWM<5`598Q1jr~Yr3 zd)?#7t=Ip{$mSp9)%dDebwPFem5e`yUnZC@KLHF7E5RL%CEM|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315=Eri(^Ox z=iBM$y+Z>9j^Dqmvs9@`VT#yQB`r?#SzKNse{X0w>BVf#x~e4LI6d#qPks(nmu(rV zUw8=!cXAzR)#Wa~<#r@UfU~-mEluvZ?YX_zkK2CFtznK&dv|8e`|@`m3*Q+|Umcmt zzG@3|tJ6ZpJIv;*R9;R`Y!KVP(ARKN?V$1hE}qRDWsS147oCy+Y%^hDjizam?}K*Z zBPJgeDtOCG_xJA)+hw#^y+tiF0Gqp!R-O>ugueb)%tqhv8e^I zNoSp7r&}j8)=8{s+nv0 z8x$@j6e(S`K>N+5xjPoF=x+#|(Er*yw0RHjjH!2cVv?k))^gV0UK=Ts)xOVp$Lb~i zy>}kVXTOv9e>#|d`lH^rR!Y;&-m}mAVgTe~DWM4f0f9aS literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_draw.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_draw.png new file mode 100644 index 0000000000000000000000000000000000000000..948fdf9dda68c8ff034f47a5af7d1cbb925f1d0d GIT binary patch literal 878 zcmV-!1CjiRP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~*hxe|R9Fe^mrsaIQ5?tTG0co; zG>s7p#R6$;G|jLXBnv4;Qii4!$->6cc9M-GDI1%SmE=!~(4=NzfsKt(BTp&$*BB#H z^5^<|>-_X{?|pNJ=zWJ)Q4t6h$3m+yRqt zt5hnD=UbtQY>4TFk6`uzXL}VX@(ZQ#dYCXJuKkX`C%;O6k%@xqz*go5ejn_DFCdes zVpfVmouFGI`w0i^8t^xPiBil$o2yGpfmQGZ%#OqhF`<<*+o$j@elB8`!ArYr+T&^28Q%@xLfkm5iBAi!ZH%N#VKfv`Gmw^vaW7_) z{+6`3X^oMz1D=A}skDSl79ysNLQhNy?YVy`rWFB?oR|yviBA$^g{;hc3O#UQF5xHM z+@i#^Q0P9GUBQ_hzg3JCvNBB+x?@UcZ^E3y#89joEiKDUX)SDgy2$~`y(H((6Rp5e4e6m8wa?6+#P!>~NI3VPiKUCe3xx`~-f zavcd|Wmw?Fc%M0YxOLXCZ-pvuwnt?^?WS} z0V5RytC=9_YB&LUt#$U5=^@>am4}#q1qa)j6`wgzB5i(tPf>2|Iel3_CZ-+i-24td z@%hNgk(eh*BfJGOC0?5dj13Ue4A<>Pv`1qhwRcI@1+QH4*Z7AZb^l?!2S&hb2*)4T zYZmkSAVos`@4gHhUAC|I!|(#$Lo0L#?6(i;Z{y(~qs`Y4r9EXY_;M1&07*qoM6N<$ Ef)xaMr2qf` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_flip.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_flip.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8b41fe9fbafde8381c2111ab2ad15642497865 GIT binary patch literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*&a_9$B+ol zw=*_+u^0-pmAm@o=&-U%AM`qM%KQWGI-%&TpJeZxyDso>UG)3|*RDBvZ?xKZ=+dP_ zUr$ez@hp4%bdu`oO^x$aCeOTCpKj#6De{|qbZDsi1EDqlyS_J{5a}or^v+Pd*0|;V zq`zfr_J>YqzE{?~wRS_=%bF*Z|1wTy1;61J;Ct%Sd3Liz_9yXW$xo(U$$V#UgGKcR z)4H;?(b-o-Fr@|LWFKV36=ou4B9R#cyxgC0ZhE*t^c?J{J7JQuWzOl5J_) z6XR=Fo=)KCO`Q?{^7AgY%`Ue()@5A#F#T5OvQ;UY3O4_=PuBFcPW6^-*ARBysG4ROcI_HpQG$sW%X;y*U)9}+b0x$^5s3b z@062~>2}X~oA#Z0wvk^(#b46qf7w*u)FtINYVNt;IPk_~)=kZ7hu17`nxs8glXE4*yaS7_UE8~6L#M=X{&QN7P8IXKJ8<6I>vr&sm^*R3Y0Gt*uUJbtJBgG| zJ=VT@)|8sEsb)8}m|px8edL!(kl4dFzPJ38YPO_%weTI3-0*+OmhThR+0-)gzH@i1 S*%2cGice2hKbLh*2~7Y#3;8?% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_rotate.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..55f9d0feee29cb09cfdb672fbbc09ea608729c25 GIT binary patch literal 853 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Jiy_7srqY z&bQO;GejIkj%{{yTpa4c9M$ooJwaIdU_*l95&@kp;yEHYmpm-qyvY^0bVG|vY?_!? zSI9v$Svu!F(44Tw)Qf{@_W@(W!b>uW9B&x8kEH~(Y})0`)99LXp7rDX z7y1lqL!|ed*pwq_8`F43;zr5ppryAgwj6l3aMPj#sT){petM-#uKDeDy{>(qNluWs z#;3d5^YXKD+7IwA^WkMXv>zB7>`Z@b zn{D)hWgn|qL)s1&E_I{7n;&p%2ySZXk!8+rJZUQJea)roOzr6hFZ;JF|Ksw-znOiX zZjN!Cz#ev?S`l}r`5E%hC-kJ1i_e(i;X1jJnZ=)Z?UpAS%|-GbNldD2&UF%e5t$G) z{fhH+ha-MRX6A_ZOxox$>5HqEij3mQX-{=C*|bka2<-bisY=!C#H6P>8ElhIMkp9= z^%TthU3mDDs0rV%Exw;@g9~0=Qaqskweeqt`1VPh`)7yo#M<09c=6$qrSiq=U$U8} zZ*t-J@q5WLr94(+!|=wFiPAEqy@p#h)|}(ro5$Dri?c5J+;@khGj`|SPriOH&nZ-W z!^xbJib)CyOfS^UW_IonJ7W?4ZlUL#l65meCLJU`{~hyBXc9=r`_B#XY3O+N}``TV_Y=j7$jHu;I|8Oj@UGF$EYNp5+tBhjf$t7uYjN8@&jOP588r{^A(C8Z`?oj^(2)78&qol`;+00*>YJ^%m! literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_settings.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..75c317a8b8c9f891422e361c19062a5d9880c16a GIT binary patch literal 685 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CzL?i(^Ox z=i6!fy_g*ZjtMW;=n`vk{48W8 zq=u%GKc$PGpH-W_WA^S9u5A16yg7Hqym)ifS!Fc|2(E~=2!#C}(Xgp!) zxN>lXuO_pZpJC0iKQ~Oyb4t&P6Hf_let0=ZV6E-9=re~SPr2wwNFH+3YBVs5fn zfyu~cJyT|(xstcZdx0G;=LFx{uV8;!va9W|QnB^{jj-RP7f#>kyLIFH%=KEc+v|MK znVVjZo;ux{wbAEx%Ijs^W_ud_Z38N@VtxNF^2+9NIJaQ=k;_iIIQ1OPwaWb0nb5Bq z*|>$vW!vObvzsyB0t&wL&lEY?7sKUcRxG`3T2sU%r5_WvUKA4Tx8+~tmmqt~Z~ED~ zYiDi;3GlIA$P~_smWyBgd8wsg@=x=KWh)YMjs3FjZ#Y&g%aiH;CAK~$_;dSnkRR#1C!^Qo(!Zhkf@PU$Okd>p*aC1gKq z`4!f;c89hbx;DI-oG##A*2FU51$UH4daLJSuIw#=>o!b?ZOXHM>z?$!sYz$vU+p!n zlYPXKPx=HaEuM5 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_text.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_text.png new file mode 100644 index 0000000000000000000000000000000000000000..b78ee569be70958e254e6f18d54af8b3ab2b4125 GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CzC(y;uxI+RBf3E3SUDbVJa=LrwxL*|{w82X3(o)Uf5Z@;{K)NLqM1;wASFrmhGL z4Y8;l-4T_J*YvZE=6I?Zzp>iTprtgW~F&#Hv^ ztoA)wKe7HuUbDiAWmk4(w)7;az7amX$(CW;BO|q*4+oUK%~{$du_pQ0u3X7;lLAeg zE{dAG`b3%=S-R zm2Y74zdZwo79YAjUIM0MkuS_ubTI-Y2E!R_jVW=Z^^du{m60WK$b4|p@QJ%h-*7e zt*o7t{rO{SQ^IuV&|{UHlVuWhSf9Gah_4d~5%fP5!ILiK)n~wWeqqaJrC?FEGso4_ zPh8n{#k%Rn-%j@Au&jrjwi3!eM9wBHJL@)S9^X;kxz0A_i#q*ON_Mn=Nto{eG{HL2 zv;RtUnPko5Y=dnJcI7kYoa3G_#q^faoNsbff-91h&MBMxm~{E4+^)u-v77auE_6!V zRDPxW%Z{$h>GtP7Pk%J6?uqq$d5&Mv*A+|)JF@v- uSmeLW4>|ux_jR4{zx(XZ`|VeGYM9;DUHQPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~(Md!>R9Fe^m_cjQP!Pv=MWi4U z6c38tdJwFa9;6})t0+Y(6|7Li9t-y77w|LaXAt%y6usuqi+HTni-I6XMG@4hwXKc6 zfAVH|NnW~yj)Q|>5ZPt(28ckn z-EME8s|n3agIAy_QSRwbH-!l~;wogD$XD!jupLV97rsMqC&9SeqlsN)QqSDFsAy&k z*kpcSFM~qU#hukW%H?t@w?wscYlMa1l2}fb!>qx*e!yQ~>#s?&&b5tGv;L#Yt@~19HIqfYA-j{DUXP@e&{8k-P*&g0-L&=b0{G|~`F+@XW_U=6%vJyo@%+8d(yU5e{rci1&CfsXKB zcI$mr<%USumkVcsYL9`qo8TeX1NuRIN_-w&UD%*Akwmr&`vh14yFlZ=U@>3gp9ecY zvI#CJj$Q!2faEv0=lq3Qe!j$poFTEE0`Gt?`lY_^Z)SZHY&+6-bSD?ThVPq;OFaOY zT0XyL`y}jJK*>#>VAupy{I)itXMs)NC-&7|LeIc|4txYAdi9V*9xZDsm{8()4ZY`V zU8?(HqUXSt=YQm_<)6uB%&v%^25*7nL#nDZWMsV}EgB$J#$qpz^4kyJ{* z)ts3=QF{xF$Sw3_O&(xwUAIzh)sRHVF?3)mL;nmaTo#(r7v(Cj`)ha~iZ(Sh1?)+R xS-U8AwNGiUDSc5cf({t&KO1OZB>(IL{s1YYr^nHZYB2x+002ovPDHLkV1jghf+PR{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_pin.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_pin.png index 2b781babeeda281e486f03cdfb85b22afd1436ea..e19bcf5fb8aa780a1fbb488394c679fc3a117eda 100644 GIT binary patch delta 734 zcmV<40wMjW1@#4xBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~Ur9tkR9Fe^md{I6Q547DlfZ$3lxf063pcqok?cQ+%72X!MT=VKLPYUT2wcU` z!d&pXb2KV}Ge2R@wp?mg#wzTSC* z69h#RH}H?$Komu%p$Z>h7e2!bR9bG8p_kw*xZ*pTS6gO^VSVt^a`Kw>LzuVr> z=s@~LLF10@du6)%;V~@25-h_zSb;5&kax!UF}a3N+XlZuqUx$~?ooUbYSMK=>~rRA zMhDUJ%V^Tz?{a2imtN?l2ASy&7q{X#N68 z<6cc3MQ9Dcric>X;H*bm5K!0&@@`1H0=cnFfrf2Hw67%+q~RrKJY|vE6uogX!->pD zF(PI72pXwO(VX3kx<{-6sZAL(8)OOjn3CU&n$e6%DpU0Jg1*4{n8{)aGjBm6Uo$6| zdd4v4i+|33yD>tF9;t>;b_&*M{K5Vw>+C-3Sq8c^jOJztMVFbf4B)Kpw~w<6>V`a$iy?%>jJ&uS zax;f!bO6szQ|w>XCh~2qPn{8IXhy}Ujhm8>a#sx`c5QrcO*r zT|5$f<>R_XBB<%VXoiTV;efH$xJ_w+1tM(jM?g)^DO3W4GV{`VXB3oADU^9Est Q_5c6?07*qoM6N<$f^~yMLI3~& delta 658 zcmV;D0&V^E1*rv)BYy&LNklYznkBRf*czbWU^JWZ! z_lE;BbI-l^H*?Q9b1!w(l~bi^-6iE2xd+$_Yz10@3E&Yh3V$qw&ZSaSjKx4T+JL05 zs;oPbI>T|JR3pqOhw;q-E=!tq&!0(#pI*%O$Ol)EvZ23`}ATl5Sg{kCJxyd6z}7bpbmqg*O0g zKqJr$tTUfUpnn&bjTkRU`(a==&<-R(k7IyZfV036pee;~3h0Z3DeGOb2v!Hz_=Yr~ zGr%$TR>_3Zz$akN>|DhQ@q(u_-lzAS0)({oHxQ^7F(Sqo#kqz7(*>wh_*5}0W>)_`x11xl<#(*2xJ zA|y#V`DF#F1T`K3)go!i{1>Xh)CyFFx|;!Nqog0^JD3Jv zD^Ox>l3qnZZI<-i{0_$gHN@fl)=8k#-S4q&X{BFFqx%!gXPoCxRd|yN?#q0Z^dt!M zF#C47_J7`@m(0T?%dpQjSNBq~?~n`VEky!_Fb9J`_fX^ROP#Z4Z!Pu;0UAt!sRnh; z>d#BNzxB6z6$^AefH{ydXjrG_-1X6-fMQ`h)J-kcsBL+pfznQ{ukF-%9Jmtq8o$cO sexTd7wO4Itn5w9gYh88ymjZqQ*zIL2Pp8`_01E&B07*qoM6N<$f@7jK?EnA( diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_pinnedlist.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_pinnedlist.png new file mode 100644 index 0000000000000000000000000000000000000000..28a4b95eb4719737f351bee7eb9c8bf1f2b2f924 GIT binary patch literal 865 zcmV-n1D^beP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~%Sl8*R9Fe^mR*QVQ547ToeUl( zGkMX-R}nHVJct*JhIyrgl#~!&yfDuiPrgdL4T=|&ue#+UMP7vD<3SmXFc(qs!pnSw zT)+RZSF`WTJ@@W&=6XA;eyz3kT6?X1_u2cLo6BXA?Lf8z|91!SNz0c?r76r=3bWx= zKA-PTTBC0HEM_&l17B|8wAQUjXd#+zgrELOJiCZJH?-D-^JwNTW*C1Dv_TJ;6fq{e zsH$g(28wTjUTB07*uc5Di;jex;}~7e)p=S*TzNTSlTq7Yj{F)jMEp{eqlvH{4!~)+ z39muBVIsS;Qc=cFSQ7fMfvWa&<0* z&#aJ1kz=lq)Me1F1q=D@FbERq`N5MbB~qXXUVzCpjG#r4=PyP(w7F7`#A6g{0XvkK zr2^=h#|rUPU^}D5Y>7=y6QE!-JOPs%7V(<^ah>M4+=$4f=W9Brl zL#{%%Vcen^YXEC_rmP4KvHOrl3gh0?RB58-b6DgWT}N-_3jcAw8tN*4bpAeKJrOa zC5Wwn?_lx+V~O(7dfVH#%;ITuK|8dVnk(TdzgDY^6>{~*Ue{UDOTNDFkr2CwvCg?^ r)G(6{rkR+{$#x*yfouorxdVRzZioaN9o5Mr00000NkvXXu0mjf*wcEB literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_played.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_played.png index ab5087f15eb9c8af15bfee9f9bb15891ff86a928..d0f145a0f6faf1af9ab43a773d01304243326b16 100644 GIT binary patch delta 788 zcmV+v1MB?m28aicfq(KzL_t(o3GJ6XYg9oLhO<@{DMVB-BDf%=u!@z9>=waB1dBBK z6RZqqXOqe%<}cVtP(jer!Za#TG}^{kXrn>dPKY4Uo9Eq~vv+28*qwW$xW&Hk?wL7X zbMD+bA3HTQ!DI&ZHv^42;YCr*5qBA$hbQ0+6u!bQ@Hu?kXn!=`BmW&JWC3o%T*!B! zN<~>SMA9ZnSK&D?c|lt<@BwOO1kKbe)C~H$U(vtHjD14x4;0ga9ccJQV-f0AB_W&h zk*`5HTFHQ1r4qnj(6CHnxPBK&Dfso6EFu2i%BPxIQ(!3Vk!^Sue)e>?X&)E}LV;def^rK>DW5=x(^}WHD1Y7thN$CwB-%0|kHBYAI6Orj zj>5WK^c&7+Ew-ng!Zy6E*m+o=UATk&0=(n=)PBvt$6VhR+T8^ktJmW#V|pv9o&ybG`M3Lhe4SZ*6DwwHa9 zR$lgsChjKOg~E5(F0+;`^p%%=?#8Hrg-h^$x7GW3gE(215Vo*Y+ZYv2P|nfuu{VD3 zdzaq9u!ORQt@_d73d%WLFEYRm6eO>eL#JE#)PFl%T~Q;i9}I95&coE^7gU8${p*J- zXuK|HuBaAIHXc`4n{NtIQ5|T|eMT!~VB7a%W}J`ReH5!4Bk$9;gA0{-e=-Biz#i6Z>4e{( S1`Qnm0000jMz@F;XVr!dcmz4VIC7BMOO1RaYMCYuuC zGX>@AP>!@IuC`qX;14K#fUOfM#$qvfuGTqnkpxdbADMN^2W!>WG%6MuRbDtX)jj20Y0}q zv)Rwsb5;IckB?7ut-w$7|v@1zuK>T~G$@RYc9i``R`BP+Ls1XZdp2Zx^dM7yYe0%xq<=S$Juzk=po zA3}n3pMMc_YPSMnrU+PtXDskKpYTy2iRbpd0xniX($>pfp~TI?uTb~~FI4qHTjjDJ zh`~8#W7NLmI6>hW{B0GlvBw4yTLo>pmN=R>M#bSBb9B7&tOfgwa%h?N^wHk#=rBPs zhwBW{IP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0;Ymb6R9Fe^m|KWVVHC$5W?ZI_ zYwk26$pbZ+2f0j9h)l>`xs}U{2Z|<1Q6zbB$@RgbM3JPZ8AZa=q>y4tqX}c=&J2#< z|ID}c`OZH3oHJ+6j3=vp^L^i1|F!lyd+)RNcP7@Q0E@@t{YhU2vmgdFa4{B(H8K7h zqlq4{7_Pui2%CJDp%RKar7H@@U^<+J58#^`xDMAK++ZWV<1n>D8l%tzH~@7JwtG0X zf-YOaGo-X%HI0qlWx7REtN2U@O1Yex`8{)oBIt7bk27c?Buc8 zs~z(JDf60PxvVY0qzPcmkYKA(yK_7Nn zsAdmu{mbTlL*@*+HBoy;n%PC3nvuPPLy1}PPw>sc^~Ky#4Ry0%dqfG8Na-JdER1NjBY|ep-U=fToUw9<8 z5Z?vR2mJ(dY330mm=j#>1Ya4o9ZfNOGvPPLe!vnFFrNyaLDmfOES70Rb6#TXW~7Edc_Q5UXLOW^ z&~mU{p_bgE_gmP8sc?V0RsNbB!$Hbo|doaFR_ z7A0eALgD0+p!UVG8%b~ajCdKmmC&;t>B?viIcr^>nhLhSX=;KSoly5k-!y^eAU+9p@g*claCD-EM!ex z?XMrY`cD~yw|vIBh;>nw{=n|=Qk6X^1pP-B~4 zGoRdqmSnqhs-vGU?QV+P4WMU~><;wIyCEfzct#bRRWpvrrx5z?a1zXFndJ2)NI4$K zUE!=%W7HG5GDVbOfo=@g4a_uN1A{Zj^K(;ZCHPO|>#V0lRl(mA_JH1rW=EJ5w5>@y z76nV;fgOQS&yq_p(ZtO4FPN8L*2H9~#XEeYxGtd{`!B#Z9oYXjjc(vmpuKeG8wV-| zz3J;AYPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~Qb|NXR9Fe^moZBmK@`Vt6^xOfR|T6R60i+eNwATFkbe{b#X@TvKSDrBao-`e zm7O4181Ql=MT(GADNEn*X2HS@zU_z5@$ zk$90JNG2R4dw*$!`qm5CCJ8tMZ%yDg+V?>a{55)FLu?!8H24LM)xdY?i{Oe}Gs>5) z3Mt@SDPkgN=oxS{BB%D*de5Sc96Z54`m3O6Y<1cr5_+vE6YJGD2}y=gkxC>qDpIM0 zQb@JRdVK>4DN?^hN0xwVP5s0k0%^+^s?D=<@E1|L7DqkHv zt`r;L2ArxfUTUUSmXNV!>^-Cs#%4ATLuj2@3O}cYA#@F)!Vga;Ar@c&o`YE%5O`+S z-a0(L7<-|wuagr3%isbGlK3;iK>7AHt$^?JW4|Ou-!^`!Y<3~&!~_m%^n`ONKpzP& z@&5oH(|_2wt{-x+iF^h}onH6n4c#@PPVvg(D+v?Tu%C5@c6ynwE-J38T2I;NTJL-K zK3INTp_=9UWA%F~rE_ZCxv2G^9Qr3>axL_-2+4`Ql801TgrfVDH>uJH$!j*}lou)2 zE{iVelCvyH+OaaBYy&=Nkl5vsHdD?43Dt zhwsjuIp-`J+E9y1!q+8z1wH}ifbUH%-wAXDWAngbY;uyU!GBlP65xXe-OA2^c3t;x_U>% z))CB!DhtSIu763WmXrt73{;LYlv5E<7SuzaFPJBD>~#l9p-uzOt?zEjcmTBk+_LAU z!O8+*jy~b__Xj)WcIYN>yOpD>0)(XmUjx7x(Cdv219#d5lKrXWGW`A|7dG@VVQurZZAR{ECA5mRa zLR^*fUea997A+smO6vCVQ9a0glaVUnjM*0Ra@iV5x?G}!2!UMdvvEHmhfuCoYDntO z0*VE& ze8rqPoqrK?!dO`m(_LWH#w&${X5&zirhxN7NEj~zl?U{vU~DmV-xyKI-zgnTTkMvoQwF00qA2ww`!oz`Tx%J;~` zgYw^9Ht@PPchYY2Kd7Q2f3!p#`X5@keMLJ|vp^ixpN-v;4g-g50rwYcC`pp3yd7Ha t))l0giQKPi15lXzzOBPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~!AV3xR9Fe^mtSa(Q5?tj%xqGI z&6MpzlyKqC6^UAINLWh3g^)B#$%PA%q?AhuDdl=8xscWrrYPlN3$;a&wY8gV(J;-{ z>+^g4&N@5qd7k(2oL4UP{_3;ed4A{j`<~zPyze>hvx?SAmtGj|n|TELv4 zUkLf*!p+ZgjaW6vm)JG=z7#xZV#lq-Cyc8zEu2(@=oxDfd$`(HN5Vxbsf}^u%gY=? za5nT|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*=onIr}d+Qa?pN%{&imy8#SG4bN-oU@@pxT7J&4N1^ z!vjV37R1g|T*Cb8K-QF3;9l)Ay5QB@?^kqIVou z!L&6K*_z@UxHi_ko+v-IEUsHmdVquecchzgE)gGq3Dt z(+?KC7t}pscTbrp8v3O8!Z(51CB45{dN0jco7@pt8?@H)T!$yfz~?g+oX_Yres@@3 zKker8hATl5b47*1cNtWLGgQXC4)DJv#27x8Yua_Iw8;^(UJEFyKVXc|U9|*NHen_9N{`{HO1$D-A tZ#ACtiInfUUh;RLa18$y$shTWKN#H_bAKy*-`)j^ZckS~mvv4FO#s`W_v8Qo literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_badge.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_badge.png new file mode 100644 index 0000000000000000000000000000000000000000..3e41a8a322d244a378311a7779e2cc6c02e01f17 GIT binary patch literal 672 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM30~430i(^Ox z=i6!LwOs;5j;H_eNc__=WtOPx&2zWTGz_2u2_x;vlWp4qcgxU)sfPvHTl2v=*>jW*dx zb{%ygM;9p>Z+0yX(W?cIS7@$V%`Dv7u*AD(vk#l*ixYtltK?XfI2bvnbG$ct7#`Ak z-|5veovoXv-MHT_;Vx5jZ{v<{LfyY#%9x54&hS~s8MSa}$L73bdp_BO%{&KXcQm_K zXxPpDT5KY9_VH%vq-768Pvz#D%=oyT?>`h8uYI)X+|(ty2W(Ebuh`0+yU2>)khfrgWV>Rz_g#^>bP0l+XkK(T)$r literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_icons.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..2c669aae0c803b150a85fc14ca5b76647e21e6c0 GIT binary patch literal 758 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_lock2.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_lock2.png new file mode 100644 index 0000000000000000000000000000000000000000..e52e780140fa0fd3b6a9c63116af8939a4a2962a GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*?dnI$B+ol zx6?LyF*^#hy>BY|!KRs`%d&OjgehiRzc_9^RjpYtW#h#RhmC^T*@E&8_YbZps8hC{ z{xRvA@ox5mcMfeZ-dz0ukM-u=o|8-#uXG4*WL@nbwd=mkd1He%Yhnc7rqO; zQnvc#m|$qvcGBZ!hg_HB;?$k0j;EUpqQ!FLzO-G)kIm2$2~k{E*mlA?dA-@QiYdZ9 z;c6xa1#~Js(xq$e%x&N;FR9IW_KxT03ALcOBeyr%i>wJc-4qvkvsYl#?qB8lUnkv- zy=!%JN?(p*_6gyuH68Od*R(BDRmcB- zbNeps(AdnZyKKHgyX-Idw(M83fK|9b z+G^?YMfT!P>!)PBt`d4YO?G1Ci%s8kxG!dQ-&qy=-2T9}_8pJ^RR4Itv$X%*x^$(J zW}o^(B-gX7J)SW$-@IKX>}}JQ-2Hh@M{j=EXqFv$x5Z~&)~iE;RV%}$E4|uz;Z?v6 mQ|%KBKOJhE^B!q#`ok%EQj(2nrSC#elzF=PxvX|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CzX`i(^Ox z=i6!LwOJA+j<4--{bX#ZAuir!VWF|fQjklXUEI9y+?^+jVq*WW@=eiZXZJhp=(*D( zpeSNV%GGIKE3@vsyt{qw%<{D9zTZ~*e?Ig3&#!aVoAaXs1GoL(#(Xnp8|yilD6fBi zIBqhgTC0k-bXn}tFzu7qcL_;VJbFdXY4bJbnn>;5jmn<6sJyDZxoR??h$!v+UXi%6eb269b^BqIunQWKW_&P?* ztvXwC`ZrJIN*kHuNgJK_y7ws@`69UInsD7ge}z{eXASLNg)?P}{%KwP=FVI@b$0%eev} zkG1~@>MK6m^`z;F#%$AKrMs7NWzrO`IBFeU!uD*b-K7sjftBq4e(}{X=btIr^Fc3u QIVj0^y85}Sb4q9e0AqF)egFUf literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_prolfilestar.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_prolfilestar.png new file mode 100644 index 0000000000000000000000000000000000000000..9a55175cd4a1bce56beb9f639b61d689290d33bf GIT binary patch literal 1031 zcmV+i1o-=jP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0aY;l$R9Fe^mpN!uQ51$}RNOVj z9W@w(BCdtC2#ULCAQp-SAvT&u2uKm^GCr~bzi^AXd>`fPe$ZCl6fC=Dwu~>Z8 z3^5hSEnzC%6qp}yyxB=LMF`stdauecc=FxQv z5RsWcWMpq;O-GnZaucH4J}?7_geD|R22()pDdi%>1SZk6D-e)vOvDztLJsEGBo`rC zYy%5Hl8F7qtZfHlmYVNS_=Iz)*aBj`3|~j0d*cseO{k!n!dGw$yas~-pV7h~@6`}` zl#C(-kzTS6fR>Q0X3leCH&u%4WZdhuwDy(29f+NmW6_4HKxQS*4N$9rbJIws#bQF< zTgFgaT5<$ZkA}_RJ78N{V^*??r;#FDUH6BHo5r?t-B`YD>)*t_Xu;y96(6Q=G0p*P z(3-zB((-+2V_&x7j+rQ-f*PupU>mdI|3sgq=YRs1c(Y>#j&2jqMWDwo?Ni4we_CB! z-8-$RxkR?tD}msDL-#@EfrHlCkSdT`z`|*;7wExr?g#7_K%eYo&;t}NvF8H*K_C&4 zn2?FRCw_wb=SoV7nV+kpzcQDgK7AxFox3!DL(s+(h0#QsyfUTTO`sx%~& zx+?@BqTesQ*gasW!$GUIh#2>=`yr#_swue$L8O(6M+5X|N<0PI@_m;+Vef{_4=vUc zeLFG>MD%0Y2Xs&LBPvl-Ps86Nlks%EXCb3vnF&E=75SIIa&1K1EGA(hUiVrn`xim# zU1evTe@47Rwel!7i?yqu4g3N_3Fu8R;&sK8E4>jkluU%E(h24Q6Hx;-HsZ!65a-HX z4;o6=Bil?RHPsPFd=%D>*-svw{B=rdBn=61TzV8$%!HD6=Ob%3L!(1zP0~3ru_e@+ z%{?lG+*H+&5W7T1N2{^N6B5DOK>ru3ye%}mhkp$02Nsi(UIQL_Ax&qwLmg~X^Z0H& z!9NL+%O<1ZvcVP1Q$VkB@*cGjt1DS1^q2~I&_rH;o?HWWY3ym?juh5jF|B^0JHcU~ z7hR&?z~+VG9bgCWUy+%MYERg!;~JOo3H|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*?dnI$B+ol zx6|ysnH>d=79Wf9NSFTLFMLF;Hz6^3eXBsWAh)2leS^H?ADL?}w}^A+wj?MkT|8zl zz^hdCkF7|ctb9*S9=~qcgTmdLKi}KK!#&$e)oqRg5FW6f?=WkbX#t0xBfm{!@CByH z%W6+H`WCRo9gyC^v?$Q{_1Jet;g)hFbdLs3+TWk%Z9xcH9J534l!pV~*} z^D4aFBXD-tbV<#&E9Zjs3hrIwQC-I@b#}sghUYuGAJ6n&Ip2HIlVeYOXLKH{>&%Z# zThf~0&980Zd^s%jN6Y5+v=@do_1+t^Q#~@;*2NxeEG}|i8}Ob}Jep&(n6l5J!>#km zJu`(T-BK1;40v}Vx}7uhAS;LLbB?gRyqt`Wm?nJJ4%wr8MdGxNn^OXB4ST_t)?-!6 zqF;1hh+}a6-Rd*rNz*bupS=pzK5zRBS8kYWSkKwEt?^F#o(Z#LC&!y__kN3C z4{{byc{WRfclyE2ho}5ujJ{a0^jYQ|hH~d+?;`cZGFR|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JeXg7srqY z&bQO-JwgLzj^EcktHEmQ_}ksXlh4bM#q?^Bw?~4&w(VC0c-Qjs>Wb>JD(dp;UP`#2 zBxoXfLqK#Zi>B)WkyNh;waVW$`p+L!KA&6tPP?`39lzbY`~R!&y`NV;Z>pE(QhABR+@J_q&1(|HWJ+j}96cr_l zs1*ehZ>t}p?95}n_tpQuT_Iiyw3)(lB9Wq^hvEz5a-tQ{{ zZg?Nk$oVJ~pLD<3`~%}PNAoWSIB#%F+Fmeg^U}=Hh5U!@CfGDho*8ytUg}Mg{)1B* zZt-j8{iw3wpVeZv>ZDBj`h=&NUVqnjrO4hB-!|*3HP10Kp{~HoEanHMUY96qTDU1n zp7r`%KB@1Gx7O@vpEdWxnU~6?OlHTm_iC`lZeW_vSL$M|7VT^gQmZ_j6T=7BBF>$DEzOqVlVt{cM_E%Dkoa>B)aL zOYAhC{^|1GjZB~3S?vtFy80%|+y&9K2fjJ%XI}TBuABR&zt2(kYj@=1lV-Whi@6re zv94%-TkSdR8AXpTt>*ICaCpt*JL^_nbnec3Vsr6r+`_tx-WAVp%H|Yoea)S_;|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM30~5Qai(^Ox z=iBMl`YeGGZM~w3D@=Yct8fVk?(Omr=yWStBx--)e!vb>p;oWe8}d567X@AL^iYus zjA(6=J-@qb(%C0-lFz+aFjK#>xNP6)-?7i;oV?lA7W0YoiSUo-oGpnG4Xy>8UI)TO z7Dp7alx}5qG}mZa;}UasWtURG^y`(t~`MYE-Dvl;(39S&Q6@>H&@ z>|)J{Tld~OGwsKA1r948vv9|SnhM&otdhmM<08X$?ya~aQsT%adp9${EM>Bv+0PT^ z(uFeXS86cZsk7~$EcJWJ!MH$IyN{-4TOP^Of6jT$^VjkP)2n~NM_jFLK2eUJJR`1j zso`V4>8?8aZ~T&L&pCGFeo9c-cYaY~0%TTk8Lh^QF;iLirE-Z$E5g_d7w3 zrz!4&rqi{;2SR(@>>GWr`^C=;6>FL%+t|L&Yf*37r<+Ea!mo1LpSD)Ke(G~)U6a{H z>)nEl?JH(@`dy!^eJo0#@z;d2%<~t;tv(r*?0M9X>3O8j`~N56JU*FwNdJ)#nbKG) peW!up9NQGe}$A0JZsC+r0!4Nq4;mvv4FO#p0y4*mcD literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_tools.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..3e004f7734d65fd687b601761b53d6c557f3c551 GIT binary patch literal 573 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*>X=8$B+ol zx6}7~9S)E7q4i<%WWCO1XQktq>iIe4_sZ(q{`W{Yl)UmRSEf)6fy5g<_V zjZvq|!+J+XYf#62o>rdcYCBKzT0A+_AGfdO`I9f%v$iY^+StV@B7CBpDNd^T{`cn> za}TPWIVi&8C~WtT^WB4cpZCPaeU4<&bQYboPOZ1y;E{=78*>3y=5_5unppo1eToTK z_$x&4qQTeP(ld!`7wt(=kh-q0a=*PWbD({LbR+Pcq9KCSQ#6>+{nP4_=^u z_05iJL3PU%l`N@zA`DFav*W-GN9%&J;wV^ZO zj5W{2svlg>yLoSM#9k$tVi}DJvv+Q-6Rrn%7|7mAzguQ#@!(fa&4zEs=cF1wtGIOd zVE7)V8ON6}-8^0)Z&a6}`^DWr%U_}E7-!-p_y4;t!~|P6hIahE9+<3^`!F$H=>qGX r!|Zzw80y@%7VS!6I?D3zI?F$XDbW|>ETp$bgQCvU)z4*}Q$iB}eo*71 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_uploads.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_uploads.png new file mode 100644 index 0000000000000000000000000000000000000000..88f3181bffc10775363174c4354f7a12792affc1 GIT binary patch literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*-}pz$B+ol zx6}7~F*^zzD^}uaQegSt(8M8TmbEq`IW_$$bHo$QPcr-3GBPzegaTL&IwdJabR?|g z*eH;D?!JunkvqO+@ABT3J=nc-?%bc>PTx`6o@uh^DBlsjKl$vFjJ{;fGCO&nVRb^x z%D-xLlT}XcG?G{AnIZOqakcDZ3$e7XjA9+GKBCr(Gm;wC-4i&ZwxR6Vggdq$IP2ba z&DLDqCFs29%}h_{c}wFiz`@ot5i2bS^#%5s$*Sgjp%I9@61 zVsB`=;F8+eAwe@8uIT1T?>Qk6&8C#4Dy<1ry!48^+ZE=>=m!^5^&jX9m_9ycDIOKD zZgxjiTBu;@^RW4c-|zlCNBXSmD^|WAUt%@hacA^(tlj;i?Hebw4tU&>C1ZtL#SK6Y!?jG&s5Rc{pMPqJ4#{$N^u;CtoQ>J0&M^WWzO)OX%F q&GxS8wZdG%V;LKnH!_=AePEtmY1JAuzwa0*;yhjbT-G@yGywomaN0%y literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_voice.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_premium_voice.png new file mode 100644 index 0000000000000000000000000000000000000000..b78bd28c12e5117a29f51f7ca411b786fcb302f1 GIT binary patch literal 646 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*#}P-$B+ol zw_%#H$ky}6oWXK7rVa%;(^4Zi7JQ(mg1);0a$zQpy9CHTheAKW1VBFbgI_*nu2 zq@_FGAB~jwrdM9Q+kKUE#mxS>-_!D#ce(_oUgd4M>mcLSzvySpKK9<)i#z)t|1b=> z+}-aQb$~TNI$KviFkXo5T7!1A@YK(1o~@3b(VnPmS`%rZrNh(oKKP4F+s-d4DK+A^ zJT+9g^=vt(y?4^HnLh85m>0*?&<|Bzo7$GY4B=jSw`<+gdjfSS*Gv^v$}XOY;b3x) zc;H=gLa*kzWoD{g3ol=TRY6AX=d`DpEAKkx{1V!-Jeh;h-m_mCua{8z+j`~yaosz!Rtr=!7WI6M z-8r*1V78R&k8FkS@`}|<#Pbp_pHXz>Q#`JI^}m4q1bODpqY;yhzey-x|Cu(otT}<% z!d&>s|3mhS)0vK~$y8qc(B#N+&PUDWE&HmAQZUTnbL{K|pfg0VvTn8fB|#{aa| z-!rJ-k&tfBoACV=$5s6^`pFCBO+$~b+H*+YeyH#cVUuu+T~eWU9bWPNVPw$M{+IEf R$pw@KJYD@<);T3K0RXT-{Q>|0 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_psa.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_psa.png index ada266bc1a466533fd524ca837590612f157cffc..a4c2c399a9341dfa13da0a65999b035a4eb8fd94 100644 GIT binary patch delta 962 zcmV;z13mo92G|FXB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000apaTE|000010000a00000Dh}iP z0009*Nkl2Xzr}nFyau{e65YBwI0F`dOPj%caE06X#f<}NnwbMF;PREh zDwyk+OdR7X#zndM#zu215WMwF=rwRSN=_IRW3i}?DCb~J5ikkDE7M@UCs8-)QY=so z7v{H+cD3gykqR$}gT2sEz*JF+6HYEWrtGS~v zfN;S{=o?_ha25RnNFEl#@+m&;RF`Pu9Wso}S?JQ8fbW*^KIBzwfc>`lzN4p#e$BCK z2fJh;r+>Hr&zZBu1ME#mEQ}vB{|xlNEXqqW>_ZJ{U_ARCJKP z^nbzFl>%a=qazF=W)@rr%b`6rhFk6EP!h<#eM=A5u$VQ2>YU!wp)WRuSN(8R0s<<% zet0qX%ht>*v@dRVcWL>-V6Pv_Ku{C7G`g}zCJ?7VvKh-e_zRi^j@B!zHKm;}8ZY^N zS7=C0g)jSB=tKP(6rLyEN0+97(fOemb~{F6f8?ihShLcY#`N&az)=2d=zGgjUDA}c k`a$sb{*FmC_)q$N0k8O_V4m#3(*OVf07*qoM6N<$f{Ze-L;wH) delta 820 zcmV-41Izr_2g?SKB!2{FK}|sb0I`n?{9y$E00RO^L_t(o3GJ9MYg9oH$M2$$!p?v} zBMPw*ECLq7pRVM9<&< zWhU&~+n2Xb5_3WZ{@LA`|IE&tw{LeZt=5VBXBBAwO}>M{V1FFHIdB79FwnF%4ew}Q zx7+Q$lt(5cG6QGrTo=XY#Qa8M0xW?Yk4W1E)44&!H6NNn6l*Ehzr@2)mGNZsr1wjN1_Sv5 zua;sqs}v4eGk^Y?6lk`={7I@}08dJ>^Vbw)y?>X=%0SS1c>tb)=inhYm&^zyHdV@H zy^2@T!`7$$+q}9ZV=%zp0s5+9`Ho^Cpq9GWv<@Zu8tbFGrdL@~IJbezvVR9avFu9PyRMI0Y`!Ekmv;TM zV4Mdoi)mJ|7RDgm0XIVq<16k=doQ$weQespT;@YtsSjh#Si7`Cn_h{W7~r#N{%Wo! zD1{1}J_g^>*FxS{IH0eCQnJm#_;atD_m>H-!F+1$m-v6E^0e4nX7@RZVO2spwX=m} zwD@0v34ibrtb#i6ISx#yF36CbWb{xkz$8#IvsB<4ZJqelXAlzO3MI1+9TNRHbk|M4 zLNXf(PD*v&l%GOlRYH?IdG4aVWC6d>z6pa@^)0q4D)A!hjl#bWvp)OC=M;Vyf!0r! zz|H>bvo^+fRwnTE5Sx-?_<0+nydl>f9pNnSZ-0Sp@D`j7ZK*z-{G&qwaL77beKPou zfXijqSG5qkM$S826$l3}seCK1AI6=4^BC-(X$K_J{Q6;&jMfFslIrl(qj81xl9SNr zT=IjYR4KoB(Jd}lT4UNvhBi;>%qC7BxF|-m%e^NNw*=Cf(gc2Gpj(KpDgX9|VwfD0 yA1(P$=|(%OCr4tscIr?)-hVcDLMQEUR^Sh$P diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_rate_down.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_rate_down.png new file mode 100644 index 0000000000000000000000000000000000000000..8866a70aa59bd93e0c10a197877e0127f4057c09 GIT binary patch literal 562 zcmV-20?qx2P)fswf1SK(6Ej=5_e^4<9q z+p?_KmTaPdfq^r|T3d3Nb6IoQ+I_a@yNk71#3->r!(zte((9_#cZZ@e>U&ib#h7xD zzdP{vZUq`Rd}zGEDhUC2@&?AAQQw3d@$4)yW^O(k)E6FH z!^oRzTcGWc5)nHXTZi;Ufj+n2@2brm>K97qD@G~gPzl+pHgU4!X!)RYu49x&l!iFj zQ9m9a=OLw#LoH_z*9C4keFM5(lFFbu|uj$C07InEQ$K2VG zb0zg98^7`NHni`&qvbN@F)igfZ!z($H%wNt^;h)Y(1+Bjd(G}% z27OXPwo@~AX*vhg!EfjksMOG)o*&+s4jHvgmFHwliKO0Tdmv)mJ>{MyuaJ2!#2oDI znJUS2ith!T3i~^&yDgm3DM5s7;7~&Y0|RHsH;-=b*_I_Dg8%>k07*qoM6N<$f`*~@ A8~^|S literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_rate_up.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_rate_up.png new file mode 100644 index 0000000000000000000000000000000000000000..b7ea84420db4d43193f69f43f0b73cfbcba82e84 GIT binary patch literal 522 zcmV+l0`>igP)G+ECamhda-RXjI zw*0VUIY1(jNVLaV`zm%6JBTeYCL&;NJwcEo#~8SUm54&D;_n&8Ko(w6Kt+E;{|Q6G z9kJY@oc@2>Ff?bWD)}zd(h5T(i>`I5_-+?!2}8moZgpz7V~#CalA#6s_dBtZ*fh&B z69mcQC}wDZg8m|m?F8#$YcH8!8C$WauW__pdy@oMs(?GS*k{8yp*OwV8~0EX#PyL1 ze!CyVrtoQU{yUms(G_)yX7uN6c87Dr>ATx3@9vN=5j#mCZs><#Uue$vS&UYK++?Ht zP>=@AnZ(Sk6Vwar;x6q*cKZh%1R3}q64>)uq8ajY zKLy`yWBQ4Tk*lWI{c}Wud@$g_iBJvB5%rlG=EsbUy34G;&2KGk;M;&p=SjWKX(fD$ z*HX|6^dX3%3ivjl@1hcM^<i_@% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_reactions.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_reactions.png index f54e98a27e9e7044c895a583961c37aed05065f2..b816d1c3f4f5b26d6e00471a0db0be04470a6829 100644 GIT binary patch delta 733 zcmV<30wVqE2GRzQfq%S7L_t(o3GJ6lYZO5gg=a(qE(B3fG=gptBnBfy#6=<`qAnD1 zB{&Pgg`n;vpomByf`Y%mO@4qIK|x%&%|_iRf=N*D5k(EY@s*hIJ7e9UyQqH5OuLD5 z;Y)SZJ@-^~PtA0tRBA{22`sWFP|muaYPGry%|X}$oiGnmaDNLX%H{F`Z9UL0p)&~k zp&ORM4BUYm=;vsg3(R-JG$h3X5_`>^>wWMrNzAyshE3m4OJN0mfyGxYCgC;A+aT=% zTyaE(t8;W_;4!GyLY_w&T}&TEKb^xj+EdVBCR}&IW%vYsXzUWKkLWw-p9Fa+kZ1Aj>c~KeC)gg$yx|h!YoM4685S`n@7fH^<@@P3!;cki zVAf9**#GRjmiwNe1-*BoRlc~uzI_8<`JSN#J#wOM9)Igfzo6AVo}2Jk=X{>|exU{3 zb|U4D`UM5_kKtjjtn0b_xQqL4)4iazJ(a6AO@!BKc;~z)(zLN01qWP_nyay73mv@1 zBff_kvZC;2q`2je4zEhYPbY=Og5ovs)|q^#O?-u9Ia9j>za&jT#T(1Z@qwRv1u2#*7>=|(0+iOz9D1%pp9#B!PgYpXO`18 z6YUomwh6c%gy<=9#B%?%Wm0YQ-=O#bXJG{Fh*qjxF&jAVoiO2Hu;VC~_0U(llGmqD z9TV?@>H1Rs9%JhtVKbB2Teq3oS`CZQsh|twHRb=~SQEAXw4cEL`~?00$b@Oy(GoRv P00000NkvXXu0mjfP1$Hc delta 758 zcmVZpkK;4#<@ z8{i8}foi_eW;a9&a2CEn$nFu?>(%l1!TnG&PC3Ya!bJ)xB=GQ(0K|o@W%vx z;2(!!_-V#}ge~wMVJHG-%3;dt6jJNTkIV4 z_rPQDHe%yJpMUH@@Dtp@4?YR80eA=AtYERI@Icw z@yKbZ8Gp)9zL-j(eaSwczjiU&m`BZO7z1y`#wzP%p`bg_O|L{d0iAVH>kg5tow19N zUwhQltql$$peGy$Zx3<0f(0%>PABLAyd~Zo()40+6!oOHyfW<+^u&@(hgdh*yN`Az z-!l!tcDMrGbmg$GfbxmPl&{R>BVa1Fl4^=1T+CUH||907*qoM6N<$g4P9n@Bjb+ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_reactions2.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_reactions2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb5231ee8c7d449b7a971f7308b1b50d98731e4f GIT binary patch literal 1006 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0SV=@dR9Fe^m`!XM>5YiAr+W3e{&?4$1 zjZpgG_n+Rwo4N1Jo6by|NP3c=bKgDxbIzSRZ|-}QNKD#)wgbty^^S~;l%QD%mCz5} z$z*Z>A8X`JN2J`@@EKl_JA@y*QLG-$z$XaWZ!T`Y4w#ZzS#z)xZo(i0t&fW~sL#yH zdQCzz{DL^^M6k+=F%B-uucBwjyY9qG9|cxDM}OE-Z(wumEI(a1d1M zIM}ZBGCmI-@D-|IJ!}Hq2C`PZ!ULnjkbhZBBbdEr&=4X^FkcSZ#R14P&FzP>h};HZ zs%_R7rc;wD_~KOW@HL^rz$BV=@Xh7OX}mTd2_2%T0rilnXO$;pvPDs68$3b81bTg9 z-S{GON5fLlZUnOyPeVjEsO*s!jF}*3jfjzXVR9aWtTQdh#7r1g1Ur-#9LEcK9Zq!| z?L9-S>~3Gg*nV+c+D* z`ft{Yu7>6GHUSb{-)YhZtImkXjX=oV&d!=x8EL2p4N$MZ5Cis1k zB?(T2`%XNBAM@!OS=WX>Axx|iI>77-gW@d4J_!X&LEpcb-Y{z|Zl1Yn zcw!>_MF>BMEh%45Vf_)<24>w1^m3On#&z%#%+4~%?*_J_ah?WAIB6a6A3%Q+H9-%U zon~Nfp>bskkJId^bq?|4_8iQ*au%`$dIJm6ZWZ+EQt+0t0KLrV1zojX|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315>4^i(^Ox z=i3>!eoq`kT5<)1H;OwbsVX|gFm(243kWc{CnT#mD6thz zo7Q9`EMot5z_NmAWx#xkN8j$<6a z98 zhvc-hdp;8vm_By(TX88U!Y#+>bzO`B2 zEyViG?B&nxc4`*p4jX5O>2dw~`Xk3Tv*!tKh}DEG8M@zA_q8=m-1$v9W3iq^T>bjq z^}8>$ExV9?`&_=U%DK2sxbdi4kYrm~kafje)y_`7BJl>F6Fo-@eU>{P7j8Y4^-sv*#61ah zo)_t_Pkdi|e}`e!yA?i7_itI(S{-xA;9y>Vq;_K6a)0-4$4%u-LXZ3WJ06;(k|t{( z#8zWH>$0qU)54op3s{3U7q@I(nKmo^`GogAnaloMoc!vA&FBC1Y?i^BKRaLad3owg zhW7=#t6!II*V%WQX!74#X3b{Y$|32S#;&S=d;Is##D>i0cbrb%34wM)@UHx3v IIVCg!08BYcvj6}9 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_remove.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..a3689146026b6f75d544aa41c66c9ecbabe17215 GIT binary patch literal 784 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315=f!i(^Ox z=i3?fdBTn&$KE=KYO?Zjh_rGq*s;NqdHVtfPv?`Y-x#KKTnbRqHeXQkSolatOas#d z?JkcchLLsmQ{ujqeRx+TygpLX=H=%<)$eQPrB^Pm8+mx5f?Yld&S+e=Y{tc1hq9*kr0iDt%@D`@ z-hR0)YkcE0uVqWC`QjQC4Nk9|)3{ydx&G^%7^O7%GmSS@ryAZ^@2xif#cB!Tr>lBn zXGS+Zn4P+4PE+&LbE0#*IyZ_OoU(bQ22)w%{F%bH__Zpu+eNsi9QN7yRbx%Mg}=_E zPbqs>ROvr0s#O0fSRt_BZiy)KR-f(jW=;v%*-&)qNZ|h81((dGzD&&db7qOsrENvW z?uh)d&V`q>m}QFP$J~7f!SBKyxTpG4T{+JwfBWC-}Y8RmYr2OqrcDmL15y7eIJFV_sd9% zcdjn%2)<))@{aYUsMFsvvz2+@=AD{oDm6|2gS}spP5X}K1+!JX=loTi#gn_{rDe$v zw$H{-MD0!4!}l%z$9gC0WQ^SEsy+j2sSizJTk4tDu3RU;+I{{&=EBc;ypIKz@Az*f zcjsNsZ;kiCI_(|VUypM1$3EyOe#%q&`o#p7v}M-q*&<(r0(VKB`1kj#a@VVKth!vU zu8EofS*r0(DK^eRPxXJVt!MlB`AL-Pr|t#sYBZ{HIc}d?zU6t$>OOQ~I z=N~f)sEgN2Tphb<(vAzf3;7-$KkzPSmtoHL_cInevHSanG5b~72aB(+PeG~C)78&q Iol`;+0JNn})Bpeg literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_removefolder.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_removefolder.png index 2948a7e80d2f6b2ba1c7254c700aa360f34598a0..dbe30e0fb1a569e89d91e9094a59a88635b066a8 100644 GIT binary patch delta 719 zcmV;=0xD~l@*Ql6wyECmZe3mX&36&|@;e{Y$MyE`-cy_>>3_-AI{=Ra>I*%`-K z$f5(~I^f#EJEc&nK7d;P%908s{Y6or)!IqHxuOz-?Rs8RiZJ->~0+DleRA77=yam^zmg=9V;er7W z@egR)9-{0ca2MRhX@gO&G!sy@#E-D+#v2GEu1JCjXi{c}eB-x<$yp%Rp( BEK~ph delta 642 zcmV-|0)74G1)BwsB!2{FK}|sb0I`n?{9y$E00L4;L_t(o3GJBAD@0Kg$7hW4Yc|SC zB%)*`N=j+US{4?fEXaz5kn#s8WyeBx7ARI?Jquf zGw)3@r#{Y|d(S=RJ7+F)pFp5wr4HoRfncWXiA17`wMpoO27kyD`^MTCYz2eCYkc7i zF`aM)ZtRudk$lyd-Ze>UNhu}T3hCvWFEHPB*_JsXgV?XxL) zd`xG^qK>O65`Rb7&;fS2YlxYEb`YE8?5+O{i}VxmVYmdbC$N4KEY!mSG<&U;8e^bL zbt_etl@_?yA`Vh3-i)XtzoE(^W$9&@ZQ=DXG-~rv&HL{}45-eC;$=TnP{+`rWKAZE zB1Vdv1Tj$wcc9Fd&ZzEF)Yu^=)|HY1`51ZDR6#pWtbaj}9O@yvO)l3%#1FdMqle2k z^b+iVi2HzDcz|3j#>V{qT+p_0h=bS*^yR9??LKN5J~Dkj3q=u?QIIIJ5Y?kA_Gpk* zkcFs2k96p1e+!aBZ7{9?+XTHcxd_{a#sBc)cZUpLuBrh9wW+ZWULGoxJ*$E45wikf za<{J57kfMykiQI~ASRDdA=4S6t`Z^7SltAz;;%f=BUf0t;16iIH#xs?Qym0U!x8vt zrxdF&iBS_QhF}WPZvnh4xV@24o>VGTZR<<5TE!DAw@A4`+Qz1Bb260w37qpW$GZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mo4EMP{kK?=3_9{&MS-JULvArYK!Cm-Z&Fc4s|6+FE`Pk!4o_Z;`` z3wkac>Q4&m=KNIsRmh~cUHZm^#L_t(o3GI_H4geqs1Bp-L|F7W# z2rIh@Hb>Gy7VXuVF%W9002ovPDHLkV1h7|G8_N^ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_replace.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_replace.png index 4ac9346dc49407c3162133871ea2c782daab06cf..dbe0c5588ab61fb20b5b529a5728428c098147fc 100644 GIT binary patch delta 900 zcmV-~1AF}H2et>0Bn|;{Qb$4nuFf3k0000)ku@KG1E2u_0{{R30RRC20H6W@1ONa4 z0RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0AW1|)R9Fe^m%nQjK@i8^OGHT#Nn@d4 z5nE9R2#R16RK$cJHa1a$LjDJP8w-n+udqoWRw{}jiB>j|AOU~0u?W0ArqD>_`T3qZ z$L`*L-n&EYia-XwZ+B|^!C)|n{t7seum}Mix8B)>9gh}JpPqb$Hov=x@=Jc0oUxNI9 z!J}X_f5UOJCMP#n4&kJNsvk@cSwjOClvQ>eOO+4O(9-2@ z2x0_W1o=r&&aSY?iE|e3$cmXQmY{NiQheG|PExOepDC~7}_XX-P5 zo#q_a29LoGh~*NBX{VgU&+C|wjd7*}&(f?`nKF4m$1ikGQcmF5{6{IfbZ~Tk$uqg{ z^WvSO8=W#@W!;Z_54{dbWk+)1UsL$CjHWV^k;#Z}3vLAQS@zVq-$xkM$9p!8=?fBJmUpTZ^I z2jiYksOanT*HyPYVFBHz>Rj>^%t9PVp;E_${~5E8j)QC9EC}k1^Vg?c<=gx2#s|&* a&A?wl=c3=Ih& zAc(*)B&B2EsY_r`H^GAuc99?mqDv5TSh_|86@(y#7385qL3FUPFp5IT2)0_c&v*CD zW8S=Z+Y|Q*f?xRV{Qk{vemgtw_hxgsHLS87$ouN8R;xYO_riZxpC8*CyqnMGKPC8^ zXQr4EOoMrXx|_GMCld?wq^ZP;nX=PhzXHF&uNFTeKZoaFiyi-8nF%A%;4DHc0k$H1 z83dJ0QpLg_fjwy$Ht|X0ddFd(nQNSpisR2=`@m|qv3J3O@hcYl3G@MIpH0bquoIqy zmtZ2?g2F&wF`<7mmx~oDA9E%c#0V%<`Wd(*;_xWzJhm)MwTeh=@0@p?ObTL0_P|5l z6$2ywU9i`UX?j5{vV}#Sz(>fV?t;>>t6jW+_mL0CW{`M>2rTLVn?PqQI=ZcXM|lf( z!!h#MJ{6;f;Q`zPf5LY#gj}5y55d!YPR;Z@60qS+2=C&US>cod>YO^)X`e44As}}hUOVI81x?|~@qK++` zCeQV{=zOYLxB!K3unX$;CtQW2HL3pbnn9g60?U7YBjT_WVsyzfxL~)I^%-7GhqaI5`B?(8G%nJ`xrCdAkTyuEI~yPGl}UJ^1S70 ziWn(K8CgVc;)WpRal?RRIAdqPlgr#6Vh?~PcG;%b4tX+u#I_Cg@l(ld3N-Q^c5Fh5 zgBE{B4^{Fc`of?jfyu+L5%kw5TmaeJ67*L|cc%yx3-uSvV8jkcvqP7eP=>lPs3C@n zBQL^R>`;Z#U>e~dRG-mX-q@2y#b*Z!*ay>I@=9(cnH*FKQl~x+x4R1lx^{e;oz-=A d4Xb+x{sDiKkj<)iDmefE002ovPDHLkV1li8whRCO diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_reply.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_reply.png index 62253a583eb1964642ba25558d4b3c118ecec002..977794038631482794884fad2fb0d3e6bb39b8a8 100644 GIT binary patch delta 464 zcmZo-dC5FMxt@WsILO_JVcj{ImkbOHE~ycoX}-P;T0k}j17mw80}GJF2*grA%)r3B zfRTY2NHc=O7BInORTeNK*dT>ke2@PCl?8jcIEF-UzMZx|i^)---IjCGDK*zs3HmSB zFzstx`AMjQiTqmzTOiH*7k|{e;u$l!>8=;QuxEPsnwxx$|ykm6-8|$J6%C zyqRDBdTzK@<_hLl2PCZ$dUguUWtCFU{nA~>)xOCfc%2Ya=p1hyy>m+pigHEEQn)ss zuPS9r7n*KuaXF=~MJuE2)(hUJo%LOIlT?153Es1g@rCHozVdphd+Cl-Hw!7TBRTa2}$U$=oep<&mcwSbqXOc-~(+W`-QmDd|Et zoJgws&$UG(F^)veGND2pc18?8CH02Ngb2NrbZlkvk_O5l<15rI=}7+= zDVL0oP@AL!tMW_IXgOtELe&nZR$v)uwBt{}G*IvAT}8MAa!D?9HO6h=RpivEmG_Y` z90D7_Jh1w=cz;Y|j73sTmE((~+EQOx7Wfz$&jP!^6VDlX33LGsz>s-nU^wyJ_M^*2 z=4eAwec(sjBI#QsXGf_*CdMNPb|f_gN;O9s?2M0)iHV5RmZax_Qd2h9p0ALJ$%xdZ zq-Oy_V>Zu4TBQBCT>Jp~fOTLk>F=PDLfHS(=YX1-TgL+KXHOhoGq&qLgwP7G4}5)q f+9@e1j||{9uiL`ZVba!000000NkvXXu0mjfC+X$E diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_report_abuse.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_report_abuse.png deleted file mode 100644 index 79a4a5708cd0b26d192f2224975342a2a7dfdf67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1039 zcmV+q1n~QbP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR919-spN1ONa40RR91AOHXW0Mt-1;s5{xc}YY;R7ef2mS1SiVHn4EW{hTt ztrZi+N|fwENu!nILXxx+p=k$3^mnG%^I zD6|3l7BC9>z%{S{IQ>P~Px0%n$eUBN3B=J$3?pXz4xf>CK_wv34ofQbCy*tcH=jd+ zejV~kP?Bu}#W9YXO#chM46F|PewaKQ=$<3L2K^M*8JLz*9pXG2&(q)lSO|Ut(FptZ z9((E7F!k%Ridx=zcwE8%6LGhLm?@&qxDCr$upB6O5fJ&|)8TURn6U6ojEBJ&bK2w1 zalDxBmSSu$2Q67E7__k$PTE*(rpZ2Y4Noz{7I?SW^ta1M3SJR-oFqXf&1i3r0xul6 zqzi{L*569x4MxR{dDyQn+XN*8Pvi+aq5OQtQH4D&E^oTdv<_*{als3ROYH@{L2r0G zYLXOJctQe}-^U8~!cjAJzyB`m{Y544!kK2Ao)G6{Be)NGK?|r>@-WzoiF-lkp)H%j zsW^&kC9oa%J)ncETd`K1MJ4x+Q%i@V8q`S_eI8>)UyTpJ{lYO-QG%Go4D|6(QQ13z zs0uVHq3?^7PX2#M<@P%BU~z1V+B0r?@Dg?tNCNC_Rp=LR{HSJ&?< zeGuw_Q$5NQp;!;*`#2kp|6NZM@Mgs_o(qOde>HB8HOsDSicRwI8N2!!!U-GbLYiZ8 zyYHoq^Je`)hHuEbnZPi!)XFuQtq0x_yVT~C6Qe*4=mI@J=OIPN=YZ2LS4Qr!#pKPX zRs{yF>SIq>=%x0&AwR>Q%oO_Oj}e{JSvO+aTwe%IJ}te!%{s!InsIm_YC>ZH5mODG0;jgP1nDmmo@;S>1j@~M0DcF& z0lh#sQ55MTqvx^S;zxkT>vPzkn+u+qD82@Cd%JmXy{*F+O6J0{5>Nv6f_uPk9K>l! zTl4^Ip1w--BOo0|5`Ddv06p;aWl3)ha!7g%yklAYaS+-f<$o%yy+uX1BG3Q;002ov JPDHLkV1j8}#xMW? diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_report_fake.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_report_fake.png index b736e4ac767e3229e99c69391811046b36d75a08..d94c395f26fd88e53c3b484488a36015e78ce812 100644 GIT binary patch delta 1012 zcmVATjA45%0;KLoY@X3uvMiCc_A5hF9>~p?`TRw80mrRjWVrb9xYZ z42*M(MfZjea0%+-@%RID*FrPLpeN)j7pYF~Ca^*TtRmpF3(_iF0Nqgu=ni$q(!-z^ zbR}B7H}KM-6@CwsU5h)xUsLKp(0VLX&VF${z*o5jBn zOtyAb^+tG$;D3jU(({v7;W~}(TJ`>g{5#Q#*u2RP%G3C*t2@B2Zw<(%9bod^26@!l zjS}tFl=uzxNm*mDc5j@op^gYiWJ5i@LZJ=$P59#<9nA+nc?eac9OQq*b`4!g;)+}x zDt0F#&KlCenkf`1cTc_4azBE30UU%DFnPz|0HmK~hkvnswjgvfZ1d}BjO~MqIhyWE z&T;BYG1=?~VLWe+5M5=l_^LwuW;*4?4KO2myV<2vUlYr!yZ?%<5Jt%$x(hjtf2=yQ-LEUsv)&8E0PJCLD)4C@??c*{&G#)s}@mn>8WF0BY5{x}VUY&sbzB z5`QkZWU0B4fjK&;vDB-#KgYDrFp^8ae%+fG>;Khn3AwYN6(p)T{C5j&OqS^Q&~cFZ z(ap6WIojs$J4z(Jq37qC8yZJ}L#~+AeF*HD&?Jn+6~K0A1IbU&|FJ(83ixr|?WP-GqLtYY72j<;#p19J`~&ehb8T&FZE^Yano$FH!IyhXrgi(Gxg=0nZ-lq~ ztGThB5v_tRUzq47^fH$};R1R#*1)vIkk3mS9k3i%2Wl7(`%EK?Loh zXxpONWDAj?UD;z1wQM6jKxi9*n`{x$%UW0xnq@`rg{GB{(x%^kymvhFaAvd_A?Uzw z&b{ZJd+zz}-0ytfOd#;DNhlNwPG`;u7bA%sBvB8mVKIDx_kZxgq5c32!JyNMH3w!p zJrBJUN*&A4v!EZE;Z!gfY)2;-lDP=eA;Tq7u**>WZZc zU4ZOSq{1361gUVRUTUB9pnutn`Q~pLm#m-K>H6Z=?|%Yah>a2MGpL&4<*0YUQ0|TB zukaX#j7^0uEZEZW#V_B?uk-VzBVQBS--pvMwmev(K?(L3*w4_^4bVWpm%gfXE$Hxf zL0Bf?tIF?1&&R~VLaNY`#>5_(u@ZlCc$Kk_tv0H??PY)M2G=;9Ew#b~erwv1%Is|q zT%(fYeShKdW0}-zT`)a>U)sR2J9N(tsz`3Iju~$IgxWcGQ6*-ggtUHjhLf=2d_ry3 zsCMKoQ-^Fn@l|!wTm^gKEF={CwHqbPy2~XXm*pdc(Jh;(3edMH$tRJ%ZGjrY=@hmM~f2jUysH&ftQm$ zZc5FJ8b1qt%}$`NUD7*sQgME4arNI1mUM+YkM&`mcWbE-fGU-A>Sr8_sF9|6uO zl9Oj>)t!`r-%O|j|Ei)xuHR#SF9fo`X0^Zx$ek!MW4fE}gBR`0;feewZ6{a|8o<_> zSM*Q8M$q_tI0S8A|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315>Q0i(^Ox z=iBKAy`mjO+Jt$J2AL;mYVaPt(v`4#g9yt;?vI>zIGQ+Ozp3sjdbr5{O5QI%R_?V@ zTXqTDnmWxyRcim@;u9+0&z&rIze7{*hw)^~=YKw*pE+~(Y_F&H-f)HFmfyJjwoLv} zEvMX5m%mAGqPIrvJ@av?ywe%$0!E$eM=@UZzZsM#?_rb`NM6p;%O5Z!K6{z@{hjAN zXuN39Ens8Io!ZEsAf?mnuW-t!DdM8a%=JBQuAftXuHxUb<9kex$?AfCpZEQ~yME5* z`~Mv7FDy&y<2YfxqAqULKlzS%KNqZaI;wcDAZ-PSrg5epc z$ysVU(i|2G$aiu(yv z!oJg41p>zB*TfwAupsPbwZ)R4PEnQijd_BRc4D6;{=!uh?Mxs|VDp6agW zK-s1=>6Y5^_x_=dmy>j7gSJGq!mz?HJ-|W&3y$I*JlH;(0^GmpOTYS=!H#KbXH;pQz e_iX>an(2D{fAbyr(aP&U3C`2i&t;ucLK6Vg+d?k@ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_report_violence.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_report_violence.png index 8359fe0fd1ebdf82bbf8b4c70a98b0f493fa8e97..32a0ba8b9775873389c30fab90cee91f4188a2b9 100644 GIT binary patch delta 982 zcmV;{11bEu2+0VLfq%0}L_t(o3FVe;Xw6X=z;{jFn=#C?50oWZ%F8fBh=sMXvRVrt zG$o~cwxpPRkbEI8+{LlZ~la%zoOE?@(gX_=$=OE{wtqGG)g}Y!&4}YD)5h;p^k|7rk!z1Vh zmA5FJrgMMT3Sxpx*bP^q1zhq3V+x!xgB`Tv5>gb2#==H80WZNN@>-t3aaaeVWpdg= zP+33dg2*rr_QM@$2bVNsybQZwrfV|nvZwSlmb-i+Hk?M;gY;#2x4~I>4=(A#SOaB{ z1HE$C`D`7(=YJqlA@<19sRPC=^lPvXy`J^~tbknTV@kbRTp z^~XV8K`fEYC!g&BnD0&0&j7I#K~`M$l}b@G3`+^z1AU)$=x;#e6`X`T81$DwYzFLs zTObc+OBJ2JZvbVpJ!14csTSS8oYBYeE5v8RL3j-ErGEwGCx&A%A)1BGUd!te`c`o5 zmuQSnkvLcnr=SU3@&)60$cMfwj&Uid?C?$IvlA#^U=hf}`~a7{z*r8;A>_*yvEv}e zdmD&ci0Nz%;v0g~5Zn)#!g2(tlv!c%sYF(r=-2T@MD~~L4O?32R6q&HIiyk?Z_cP6 zk#_O|`hR1hgB}H+;2ybxZML}6E(4V_D$+E5T z<#E{~$2%u%9fL=q!#K^My-iX%p_{@rve^ZV!Z07*qoM6N<$ Eg4cZ1ZU6uP delta 966 zcmV;%13CQ32)PK5fq$b(L_t(o3FVeeNK{c2$DK4Y61A+%a$!&uQH$(D`k=x-78*i9 zfyLH?WVzzA93g_VsxFr6$aMNoXpv*~IQUsd=d!Y&Xz@^tX&%qYRmdPo1f~q3r zgoqG=6>tikzzFy?h@%aTz#`XV_-DW{h#Fjd0(}g~g&lAiK7mU;IIlttb4fN{- zQKPuCOk2dHp??ZvHne~|*XK$>annFnTjHo{qC@cPhE|a0?ot=d3s4Cuod(7g!#-#RIaOBAsf<1? z44K5Q!#K{uF<2JOJV`^w!f|*Et`+}*{}wEbhNf}=RDahnWWS^&#%4hU$now5m*hZP zger(#ZJaAXwI|t37?=lgs^rgn2bW&pY=CkI#hrr=na~HKOL04!M*7OTNcNR~Kj8Y~ z6LG=}OUxudi$p=M5*rbD%gWxc>ZKwdPB|c}Ohav=F{Aw$Y=c)*cfD_-{l%b2a6A4U(diVvRN3KZt%Ob6#Kh@F)vjj>#+irn* z;v16)ET>0R)d^Co5h=_3eel_P%v0(^roWm$ zG33LXlw!X2-e|ijUmOu<8lO$LAAcL%hbH!BkLj0?8I+Lzvv&l2?}#+Z_+Da50>VT3 z51O{5&6tE(=3Js|^dj93h$#0ZQ6C8`88y@M8#(sAP;04cqH;-dNmr=b)i@TPDkpLrZXFEw4Eq&Mx~(sCtKE%VI2~Eff>8i@N$tC%Y>84Nn3Ta?F@sL-UZk=MYI&$}|H~ubTkB`Zur$Hrm<2sOU z)CYBXrQC<~@s3Y25|v5huJhHKG^lt+!$0!z%fc6#$reJp$wuznciE23f0{&pX0TTJ*PF9~D5dZ)H07*qoM6N<$f diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_report_xxx.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_report_xxx.png index f6be5ec9827a15c1260d4a4c9e1755b091f1b18b..0e189821eb76611cf8b66d84379ef8757ec3cfcd 100644 GIT binary patch delta 719 zcmV;=0x7zI|v z_hMgoCtZ2xNsaB1?2XH|fgY;LPX~)% z!Y83f-QftbdnF`KPD!2>7lY3)Z|zMPiv`}xoF1; zG|Q4yf12{`nN4t7$hCj)w9MTvMt)QCdlvNnn@F0|(;)Nk*72;ok{XEjGTx2)LiN4O zPH8UQT=|}5fDspe4pz%mpijgW{T|23j4y@^LfvEa_7!u zCWIyavmGd!^Hx=LQLzol6$$n%@Jmg9NIn%sfjtckQb-<3j(;Wd0$gy`H%5VV$veqV zcq`)dv`un$vq?V4z9+en3eMS}w{gJb*o`#uMjnxVBe`_W{H^WaGES-Lw`3IbvyUen zNv^l9o>2l$Liuau>XIJ3d*BEHkc+&Gg)A9&- zESX4R9&J8x@_%>DmMI4>Q$TJN1ELk(b2IM+> zWPD{@r5}hKWmW)zH%DJ?_~i2ev70_MXZFbWO4UXLH>A@*6w1#Do@aHwV@<-Ge63Fp zY5?5cAIDL~to+p=+4;~`^7j&3zO#qbrGJ4q)c=J3>76JsvE&8Q6N~$r zJsDrzF`HOK&mLYLb?ZP@^+Nj8Y&3p?5gw#K2nUUUNuAjvTN}-;fgY&JcL$B1V3%(* z1wz=gSQd(FT6^S$(e?{3UFJy|OE@!N_%o#8#*&*h$M@F3s&Z)OLn8G@Sos+*v>6`yEG|{73@WnLQKVC31awsH_e@ zZ1rde9~EGLLh{U#=v$IXLViaAcKpuLPTrUQh?t~L50y2bCZ`hcq>-AN3wNAAv#f~q zyD{IH+XT}@&i#$MW#Qf!d8g)m77YJR&F*QCML+oJc$%)H2I9MnZ=<15|1Ps#;+1po sFIS#3HE5{C__nW2wRDy{(0>R108{=cGl2vhM*si-07*qoM6N<$f=5VQ-v9sr diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_requests.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_requests.png new file mode 100644 index 0000000000000000000000000000000000000000..e4707dc0faa76c1b14144c77a3b074775e2e424e GIT binary patch literal 882 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 delta 518 zcmV+h0{Q*s1)l_vBYy$rNklk6pW;m(k4j6MNp8?HjF5e7NUzp@dxsWYiHsx&g49uE(Grj zhxg{4d(ZbX=id8flqyxKRH^<40p*PIzy$EaVjMVEO8q}7BY#XY@R5Uh2h_y|ss|Pv z%2Vr3PETS2RRPn^e9YxuyXW2I0J;X;x5yS5GvZ8Vff|>)1gu!@GthJ#paEdRne70> z1;*qQ_DVy6I{j|U3!vgCKsSLcE3)nGgNAHOujPWi0T=)BfhC)~4s-xl zfKRUIL*T33|9=FoAF}jkUCmYCYNom0;Ej>}!ng9_RMZkM?EyMSGrHwRRf0yOB% zrVA9!hkB6kL_TtJhYtg41=ehEXm7C-5ul#iyQMNA&?(@(d29kViUFMl-n!G&nb0Un zwA`HkiS^|<64pgICjSn5~Kw}00I&D+Cepd|uKE-nDy&3itu zR2Wm6UB@LYMf}I~Mbb0RaKb)R+cf~5i3lXulzoPbelOVvNm)tTlC~lP)k><7w3x|c z+GRj}c|W4D6}|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*;!8)$B+ol zw=?$Zvp9+z&$pE6^>a~{Qmkw7TD(Aot8>4@T2ZdvSuU+BL>2{faI}7Up}*6`dC`Rq zC*M1k8|@~~-r2KPa&vb7u{}>FZ~y#k@B2M_?k1HROXh2;3A8;Fm~%jR$yOsK)`-Su zM{)yAxK)4fo>tDv(K0CYDpLO#{i4lC<`DCejbUBs2|itG*c>+qdQWJ3=5W(#%_0d; zj@WeOP{Dih`A@}Pu*8*Z6 z#k1Bpuk-xP`IB>}+Jjr)&rg^?A)9Gk?SCG)K(UtK;Y=7c*%e^M0Q1Pa>r! z?=00TbMELrB*3Yb-FOQ__`G36$ z{U-a$r#JMC=tNl-HithSE828lbT0Xm(b<=w!~ba7do`hj3hEvqBF2)jkHfRie5#-K ZjdPlf{^hfbe#)Q-_H^}gS?83{1OWfh?Y95` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_saved_14.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_saved_14.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3454f11de247f9d0fb75eb8de1d8b9a8c98c3e GIT binary patch literal 942 zcmV;f15x~mP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz07)eAyR9Fe^mpf<_Q51%EjmARq z5Tim05kM_>PG$ z6l2!!-`um@%+8FnyOT8TfiLIYd;W9I&Fs#d*-WNpwJT8F70AY==kxg{;vJBKWiSOp za0hN@v)Nzx5+iRRi#wnlR>3@Y56Zhi-Z(zFQ7{W9VGN?|BY{((<^|IjPJ?1mrkbi9 zdoiqL24Ov11>Yu^JcAeT(+@Cy3TqtF_$KXhcmm^ofU$bi7aKVuNd!w`KD*w z2*+Uv%sw#?X0I6>g9b0Jj(G>DrrChSLp`d!ro`Wc#!w-P#MIz21nm+FbuoEO#P4}Y zouOI;`rZsW;ahx5s4%dIuGi(r^#;PBQ*o|xxp~!#Dpy-@#ym+iPkjk zEE;z6wYKhW$iBd17Mufb|M(*76Md z)eqg!Ef>@wxYLbi({)kY&Z`F{jo9%5uxHTY5<$uf^m+&~o%rE*D1kFlINP1_9*X6t z?>`ZGihq{^BNaExOA+-*A_4Gw9@4O>nHQ4v*4`bb?6&bmm zFbOifF|Mz)&?b_rM% zK=Caws!powG;D=O5H$T*Tv2JWs-9Cc*87a^xE!d~eYnE=@+7`y|Hl>h3(ukpH464f Q1^@s607*qoM6N<$f^%A)4FCWD literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_saved_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_saved_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..482e02099e47bfea4dc2eff86ff6350f724b84ac GIT binary patch literal 1021 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0XGugsR9Fesmpf<_Q51%=A%Y~R zU}Yp2g9bI&U?ckZ1uH8oI5rBVl+fQ=0-lPxt(EPzj7a-KnR zw&(_UQGBO$;^`-hH#eYMI3&%J*`%i6SRG5I zr=r-fsv_g&$+!~+;SZP`wE2c=s@Y>2iWXvS3w(4PeMPrLeR5rsr~vJ-$)T}q&7emj z>5of}eb>xv`KK?=C$o(lJ#ZB!%lWE)WxMWK4#g#AUQNGueq(VyK^wtsFaZ7SOM}T}l zz9#P&*g`j(uYYl2cR#r=oV0*#&FIbqo3U*21;xaPa!$Y+{Gw@ISEAn`FJ zB~grvMU|ex0nj$lniP|0CrEpWz1qb@$G`+RiXc(0)E6mq`1-V0&*HsACsRm)X=2otW7VkXyY^SbDAxi)&g`35ml;X zQQuVpB)F(sqOB1$AKMz(0RC34Ptq=qfQe{K+O=Ys*Kr~#5??A0Q+^3r442^*Ohc0B zI0!xFN+tP%ZH(Fodn%J@0~~KaoczG}6kdCid5?~Pv>vMFC^qI5e8hMkbi>TuK<7DJ z?amNhK3uDcrd<%Q2YxFO`3|e1{@CRu zMKiBEH4a%sYi0oQe=ie!%~kq~?oMb*MI^eDcFxTh+>dNJkh3k|xFTjFiPnvpkqnyM z*Vy&BAkm}HKGhCYANjt2&0~`5zew~IopXqBpj_Mp!oxl)&6S(8w3Asm5+VC#xuMb2c+Rd+vHSPP?-R?36j rbuToRg!G_uNq6i4oSaMSf9?AZ5mYbs6?=bj00000NkvXXu0mjflR36D literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_saved_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_saved_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..8504598a5f392b53cb9a8960a64ab03c9d995426 GIT binary patch literal 1086 zcmV-E1i|}>P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0s7XXYR9FeUmrF=hQ51%~JyZf6 zI7k}wPBF9)3Ys*KEQzRL!xD-H1r8+#34w!Z5Cl$(h>9SZg*33jh7v(gm|Ve>pa<3< zvcy-n@3*zD+v7QR-{Wh+f7d$e@vnW(K4EqZ=;s)gVF2VJT zWWC_ip4LY($f;lwoh*99pbPv4AsI?yqHriwOneet2kVn~w2OCuVni?Qu_Pj5M}d2} zLwuKgo&_%*m7@f=0o{Ek_zCp5{YNf4%j4D*Bnn)b>RO=b_NQESCFlZ*55u(^y;vam zWw�adc%p^m$;tbkp%dLXRcsfTevYd4A(5f?jbNw>#iHO)Mg@2KaOTit8P zpAN*Wy)T_m)C&AHNnc(np}rG15!cyN1kq#&8o-D#W~1@YHFa656-RI@3GQXA5$|a_ zZjHx61Bi*cnsMWbNtt&A2gF_NBE8;9dge=uwp>j;T!p_VD1!qc=cLy)&xd@6WL8MdEJ&EF70DW z6N*n8kyMLg!7c+gfm{AD^CF*OWnO+uJ_@Jvr`C{YF_g>z?b0RaM(_?e(b{s+;ICQA zX|$SB>}epmDqoVso*2Dkcf`;pdk!+~YaL*2aOi$;hR=Bjt-(G=-3Nz&)|`HPH_)Gf z>s9!aNMfQuwiW1P7Zu&DR^Uaa0r@QEo(PwD`Gd75v0*U*2u=X)%1&Nm91PVe2j~eo z`GOJr?2FngA=2Zn1rtoq$IxK>IJMik*6HyRwZZB72bLIk>SW9$UH||907*qoM6N<$ Ef>;6Cg#Z8m literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_screencast.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_screencast.png index be4b41d9d7a8d04349094900bb418928bbbe7766..26cf0c552a159e6011fe80d4686484df57586cbb 100644 GIT binary patch delta 693 zcmV;m0!sal2C4>-fq#@qL_t(o3GJ6pN*qBH#;1+Mo%;wP1e_B@5?3nOc>rPX069Sx zfgo-qXK)h&A!OkJ5)e@rK~Ya&AS8<F6kbg1o3j79bO&sDHE2~!- z*FP0d5dPYjyHB#HM z1p?;Ju~qvvfPdCMO-;ASqZ_zBmueg(g{$3G4|M_c0Wte8CBL>s6~t*eL&0oq72br{Tjo(Wb4`#gZ++t> z_Qd@E(SMqtZHn7NxQnQ5(EpQ9{L~Ys->+EabNMx{_z_Tc4H_qB*Q1qKYT#S}GI5U= z@{(8p>tGYu3U%<0fb0Z3Eu35YZOrw#&;Ic!a`*=k~9)DzQ8htg4L5LjW#=h9;tSfUF&GN&UW3YM5Gxu;Z*lpbj2_Lm=x2M5K^E#ld>! z-0b0$T2V!6+uM&>#xnYS%eK|y#`tABbLv`4Ye(hk@)xGJ5lW_uz6dUG7aSlt9{nTq6`<=e${S-`M1Ew? zX$=mN-h?P97x7tB_yHI1%f2Rm@ip;1HU0_YmA;(+Oz*plW?LNbJt}@jmkZjth&>@s zCfPv$>`bzp-h`wE4OXpM16A_c1A~2mJg2O$R59k5(5N{UJt6yDXzQbR^y0ZL>Ry#t zk%!?s5Pt%FFvigoTA_rvo8(0*uM6*0^eOWuq8pXao^ecRpem_^^iyPpr|MEwWTdYW zdX2toh%7_uD|l{f5qifYz7VXqkE*q_cCrQpZh~E4FL{B=e}CnFD4NEnXf7X%E1)+a z^y)sPlXHtLNR{$qLzO?rZ1UXNjt_aPrJKM%LKDGuar@P}0ssI207*qoM6N<$f}KJ? AjQ{`u diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_screencast_off.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_screencast_off.png index e4e497e79862e54e1996e26e7faf4df6018620b5..81bd70176c383d4d118b51878651e1e9134100a1 100644 GIT binary patch delta 943 zcmV;g15o^=2%-p(fq#riL_t(o3C);Wh)q!(#?P5?Z-_9NkPymcN9xl`L}|{Uw~ggSxcM@ECj!TcHaye=}TS zf{&7Sx64GCT7L?EL!kw(fZNqDkm=B1t{$ESlS7v;WkCXy61*H*Q_`nU_z*bBVSxGT zyewUZsSZ=RLzq(mwL(Himn0gxBf_7NL-(mgS z%@ZSbHIi;N`qx6cLVC&;V=yZ)*L{VkFu+tvdL&t?JAd@=huYM%iQXgeLNs#N%g}3L zOdTRfuayp11n*;N0U9Zs4XG-oZXngL6ApzBFf|X24519EDyFU>8=)?r-e(UnH3y9Z zp$t)2mrABCA)BB~>8X3n*laXsI2)qiPO5!3DpMC|Z-FwU*NIG(qB+6Y5LH$}#Y;V4 z>KrFqO@DJF`UF!mO*<mNwss=e|>W@cdYJzEJl)M;HMSn~kK(tzd%*d3?WklW#sVb&)Kk2>_ zblK{mwuV6D)sU)UN>84iKtVV7N$)J+(9_Uo6E~mbP1*nh<~wy`N_&*{Dq&ogq(AmF z^vHxQLmM%51&%g-Ek^Ahai-}en9^>pUEPmDeGYI^h0lTeHtA%olU6s)=x>$ zOMeIR;_$4=BY6We-cu@E1oyyN_;-ak*B6MzZBBAAb>1dIUqii^J%qYXm{`lKRc7uF z^euG#a&02EhD)cRkX-ujNhmdKJy`4E5cq!pW2G>wr#J7v;15{t^CKA4 R+zS8z002ovPDHLkV1kc1x2FIA delta 945 zcmV;i15W&+2&4#*fq#xkL_t(o3B{L7NL5i3hP!H-4I?5bkOC#z)E{y6d45$ zf`TH*frAE33YtVgK@SH(6b_=0UPyrrie5w{h!KHA^dv*9uu^-0b^HF~KCtic-hI!x z_t^d6KWnYM_gd>`?|U9MF%Be?$pmH{lx_o<^U?nU{x5hE{jk!)v;H6{D$dS>g1=?s1CNa4R_SlPZ^jpX)57tkKSx^Me zLmS8aMGRKJ0edn}|CC=lqoqMHyclS7R0)h7w#J+Ar@^TaxtR4GP#A_fem7VoQJ0|& ziD@?jPuvyUvwzg6w+idGm>ndP!0T3`+_xsam%T#f71XFUb!4i8D^uyBR175Q9HO>)QI40W zg4D))Xn)EL@`#MF$>c3a-4NA} zse#WF1BtqTsCqAoaEV2b`XTBwMxweEgA&+^sEu9}@)DaM^+VK0%u4uNF&GaoA!@xB zg}B5jNc|AihmoikihAaz942h0li zMlqNG+n^q>88K#p)DcndF%tDoF(`+JJTJo~C`h-jFnPq}e?^qUNR-40+Nq2P3i97g z4V?GPj9C#U5T#?2C>^7XxppwhM?@|B3xz@02G?pK_7)T#k4g+VKyD@MRS|{4es z3xD>*KPEw@M+w-IW=wO-okbjzOH^u#9*IoDW;sa*3(J*Ef(} z3xb|ENzV&+(Ia33wfd^x+pMG;j!%b$1)^ra1JL=vESSoFQ_*i0 TlbAtX00000NkvXXu0mjfi8r)4 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_search.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_search.png index e76432671a2281ca326913beb7fb98559b1c5e16..13d5fe2664dc57eca59f5651fbfa219c9a8663ac 100644 GIT binary patch delta 627 zcmeBV?Pi^zT+hH*9OUlAu+}NzQ=!n%D#HKIEF-UzMa0;%h^$&wRgeNAIx1*Y;Sa3 znU@K!Su{1jUV+Q5^F?!nyMT_*!Ux6~n*T%=&DG#K_WnRmOUmAxz2=6CnA`W>oLT(s z&dIZP&mK5X|7R1QNYLMFufG;ra3_fQG_V&ipW|*lq@0}3q%2y%bk9M-baPq3;_X8f+m`*WE zeio>=>lU8soWc_`bJe`wUX4YfE9HJ{R-1cKq|RHHY4?HT+aEvtyd)Wr*w8tYdYX^V#0r^D+`Y@sHb|> zy#JEO^>OpG-LshfeomTV%=7j9wZyhx*~O;8bLH$yd_Gn@Pl~SE$&z&6a>2=-9H;Y- zz4Y2tnj)6F-_YH$-eKZ;P2*`bCyt-6@-UkE=TUOwlKqZGM|ou%6hAO&szY9c0&44j2=?%dt%&ca2>3x`>D z_MCa<%nTQ;120L?P*1#sN_oW?C)63~d3`oWSg znVt4xTuA}i=zlHMXhoRJZhA|%X+A)UB20%Rt&lV)X}EX_xw<52R?>2dTc{Y&E^A*( zdXNY-W^w$uxrzbxTl+}T??fP%oyT6>rB#4>t$m*elj)rocUcvnt||uP&!`UddU2<# zWayc-J0vYh1X?UV`ERl7hkunK)cj+-lpN6jHK>mtAN)Q>?bf#5~gK-PA@E85|FdKRt09|$1t$A0L1lQwC6Jo<@uBWa&`px z=mj6Qy6BL-Yb&ii2%NY6P;OEu>H>1sXSH&u@4$q$p>6_r}dXdcOHAJ00000 LNkvXXu0mjfI=wHm diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_secret.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_secret.png new file mode 100644 index 0000000000000000000000000000000000000000..a478e8019f7c7816c2b87ed565fbea2c10f583d3 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM30~4F4i(^Ox z=iBLqeuo_dTn!hsY!U1*c3Hy38YD3N1n(u)^anf(z2_QFnAXG;rIOds^g@&Iv)!%E zob=rM4Re>A@K_vq{@>5fd*iHUzgW<8wD8WdKT`JPCizF&HM;EXd`)9=+Vw-`|FO-> z<~-9gTh!*3{D)iLIPq9-S5R|Hm;ABdJ?-+=*CQ;?&NNl#DzjCKp2_-n_MY9>W%PP{ zOz+yf+5dS$R{V*Q?>m#$G#c=EcRZiAUe)Qwv0P?U(9-YF{7i2V=?x2+wXdih+tp=!aJ}tRqx;ciX&h$r`C_(4wH4nyJ?jU{ z%{yU_;sS1N3XfAXd%zv!Zm~{?&mwd6lDf0ar{{wd`xzrsJht9euOFOTu&q4?hoznEF>G)}&rG&O967^~!@ zy$jAXt%>;+mXWBjPqX*WEouA0o7xk-`2{ydKUX~IeC6F7iMb2b&Rx0q3$u6p%a0Q; r?(du093mxIv($F;zx{m)zt|e~d-Av_Ebz4M2Bi#7S3j3^P6Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0!%0LzR9Fe^mtSa&VHm*A*<@q1 zg(Vr=xELd4p(UjxVni!;;l|C1hP1*J=0P{n7nH3iMU;)LBn&gd#kOo_ zGu!cd&ffRy`QGn4J7><>-JbgGdEV#W`|kVR_xrvRiA>AHS0I`w9E-&YiPbBg!{fbC`k-_@N31u{XGj3fwZ1DP4i}PFftA|utn|H1aL!CJik7|QNtS1g8|&1#S=pI3n@mHQ zUk;5Y?t=2XNF)+^f>b;mb3hg6Dm&sXNC$uG#0=ZRs-Ns7PbON>ke8KtL-(Gk+q(;r zlVoMg8dIQ0RZl%<;FiUYrb_mioQTEH2zOzDFQ^8@O5i@+26<|`q8~TDIcGSTI;e|m z+C_{iGw4Rw*?^-jGv01|@*Fzp#C2~yXW$C`QH6SgTlX4kptY^saZ|^%ZS(X-9LKKvMv>r7wJ@q?(Mq^?t;Fk6)aP>XYwD( z(bt>Oi)n+LJXolG$}TbXFmHSLX!FFkAc8$a?2601EMqXiZcJHpGq&#ut8TST_?70K_>Xx==DZxRbU3Pzb@#2wON4lyap>lHn!ft4CAua=vPK3Rx~^V zR(zKnXEr>wLG&Hi1O+f3wt{@lTDj-WL}0ZIq7S?Az?h^;RdB>jAXW-*RZb%F1p(j3 zm-NEdpbARe{(&*cQFv#H+R?t3pJ_S|{|y*2d0GuHxB|1?=Hi1c5P9at6OKu)kC%-9 zsZW$hxDfWhF{pzokPRIw#AKmX4umF!IjP72dzJoTSB2$G#z&7+VC4yhe!(VhML`Ah zn+|dtwj{3#W>A*}XTeG*MsYAR1rLQgL9UR9=+hAPs0i&w?h=q^mKFJ3Ru-C^s*?u$ zL9URM7K|E5xG-Wxa252XZ(}Uaru0P`ft)xk9SmgBy-*D0a1@%r{grzi->mdkqB_t} zj_e7L-{q-FBZ*O+5Ig|+eeTK!9G9Ttf2Nw;(Q{^CQhC8v!g7$0wpL!y f?dWNlvMcZpV9WYc5N~(~00000NkvXXu0mjfEJN`J literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_secret_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_secret_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..bfbc944b9292ae0780fbe609cb44a8ea8fe3d039 GIT binary patch literal 846 zcmV-U1F`&xP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~xJg7oR9Fe^m``gIK@i1vjbacK zJ!sH~U&4z*kRZ{M7eVl(ATbdH2_jwuFP?-%B!L*o!9S?u z?~UC{O;7K3Pu!5p7CfrDs^06Kp4nk~Tdjfh-hp=Sa=cm;#cnF6!2~!8jsV#wumtA7 ze7oKLf!{h~AtT@x*Z?V0k9tS8WJL&1f^Z?<$h`-14vLktCeCEv7KPX_xMOD^o(1Q@ zo^T@NTunXJq%j=!HyR@_1fCkz55%W(Mbrz#@g}XITz;(&^0ZgNKL-bDO^Jj!j*Ba8 zIzfq-q3Y_qy(OsKo;b6f6&FauTlOw@)LL^-%AsFMe!?l<#IIfS6?Hxw=d^&bRRz+dm~eCK84^ea1lHMKYG$k^ Y0jIHjh^8e|umAu607*qoM6N<$f^q9?6aWAK literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_secret_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_secret_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..b409f6df6faed59c1de926df566d7211284c0e23 GIT binary patch literal 1197 zcmV;e1XBBnP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz17fD1xR9Fe!mtBZeRTRhP`jKVk z7mkj7O^wWqsG&&>QV%}#5Iy^l6ivZ^AoXGp1@jUGA%cQJNcbQI5>x{si1ZwN*eEzA zN;%=3aU7W(CP$sJnbF(tf9~4Xea=1S-hCYFp+EfZT6^ua)?R0yebza*q2WJ7sZ?4F z7uH&`P-`;p9E&X@<|){mAzd*inC~nU3cn&_$W;&v%Kur|3ey&SIF`NkK*g-4sFLp% zToA=PN8r~`g@iy0U4cd8fXQ~`yHMz$px&}t{+;6wvUG}hfVm#{q~~)R{W5e56+KHYczUFU7Bt%n?4^*RH_ofp zENE6>wu_$M)1H1W>Vy|G&(k9{XouL5tK9pWL@a5n0=L5ESN zI2lxsIct}6me#W9T;$78kH1^kEvjNdc771QqwwB95qqJ-cTNeAxA7TBC{sT`J#E*ax~_W7@9+{FGMUtex#d&LHIU;l;x%{%+j`k%1QITUZ^I%K zKF^a7|D91(sWg@q7jmyFv0T-4_$h{dGp?vihAG-bVF`t$zGiY2RL&Lsj+nmOvxTU- zoersIXr=|_-66jqJ)KpUX+e!_eei?9>i=3nx9rl?$MoV2g&N`C=6rv4h#k>w>a?UI z9CEjSnQ98X>D4lX)H76`3izdv4tNOu1s%ErLe+m>gvn-lJR~;eLz3CB6P|)T?l9O7 z>z+Y;cED+v#M#(l^#(+@!=DpbCKw-p8|uYt9>2G|_)+vOxZ7;wAvq!+0@~o11v+sO zWoc*KmjvZd?Z$gJv*%@pG&#%l|pA1otLF%PC zWOlvr>jK})=KrDZjLn^)NpyWz#gO)ttTT@v=`qp22EA0Vy=V4KBw7>8l0I<#rm_Zc zi*W5S_a5>_pCx{H#o05?H$C}z*@OKLn|s~!&r7Il6J{2mHF zC0(%{)CBl8IhP#c<3CNGFutHbgFa!xK)^>9qyzlCAI10sn=AVEq>fK3R71Q0)kJ-$ z+lRl9ac+XH2c1E$^a}JhpfCk1NzosKufTn)C&kMynrVW z!M#UN@vRHrPw*C=z>T1*@%v#4Dq{~5lMXKIf}gIg>aO}yGf8T-WN89v0%-zi0{?UZ zS(Z(sH8dC+0r3&EjwVC-s4<$Xpf4m_Efyy>j$V|+UW@stdw&{um{0aoz5#o|JR`Gh zpO5O(VHw$E1T*g&updKD$ZQv9z@LfcQ@9AT;ER(N%p)?}!wJ4${$5u;g{xpjIrCs7 zto!IsVeTEwK|f)ZDDK~x;$zZR`_91};@3NV3>=<7n`pM`5@$Mrx#gVM5l-hY0^q_{ zep}y=#WE;zRevxI&fMg+v>c<~!Q?=5T=b9N2Nd}tOxqdqg1JU!Cpbf8AFeXa<9WOjzrJ4^|brV^YC@wc4dBVVg#Z8m07*qoM6N<$f`$&v-T(jq delta 319 zcmV-F0l@yT1h)f_fqx-ML_t(o3GJ3W4naW_g;f$dHXsxlwT{9D6dH-z1}G7+8?gh8 zbyx$fM&jrB?&Hd2%u|imxRZQl=HBO>cJIc1Wi%T$Bd?c;1GhQayRqM zRKQGnol&pD8rq<*1C~kLhaM+%lhVXQNL~kOMs9+=6dCvDlzzrFlaZ7tz0Jrm>`Snd zhBJO+#xr$B@Hhw`j{|CD*uo7K`n{jd2vs5Yzea`WS9EQ&C143y0+v9;1Rl-psy(th RNsIsh002ovPDHLkV1nxLnEe0% diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_select.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_select.png index f36e5d9bc39def1002fc7f2e506ec09204cd067b..64949fd07a1f5a19e95f43cbd299abf4836f3f86 100644 GIT binary patch delta 791 zcmV+y1L*wj28#!ffq(T$L_t(o3GJA>ZWB=uhU1_VL_n2L(42{C@;hBAa~VyEt)DB%KFa z;2UTwic#$RM2L}S1@u9b_jIEVMtsCTP6~6l1Z<;nI#2QF=}OWWJ(b8DaYy9pwPZB~k9Q*N3Afu+JHN ztFg&Af8_%Hq<>VSd7|T_72&e!$tKm3Sg+n?t2QrQ+Gl)eYcjT;GqnXUDkt!Xu3FXm z6viHKNnTA&B#L$lX!W`DiuPe2j|1~M8V-)3kZTrP153p;jQKuwP_$)z92S7Ke93mH zQ;R`zh|EJJLp~Nm8Pnz|QB9qTnasLEtAp~4^`D0E)_*Dml=lI+VZk4)jg8k(P1VjM z64I&d(s!k8Yh?C_yJ@knY0EakSYuebijb}mt;NXf5_rpkMdm73kuN35VvSNlgAjCL zxl?Qjyae~aT=30Q#`NWOz-_Y~(pHg?ORN!VABU501Gp?7kLI5kuDg-;2^f+>*96`J zE{7vkD%UhJBCu3x~9!OhzbR-|HBoe8+;6At*zkgVrj&J(mYV1$@`f&$RF7?+BBQ#wX zG$S=VS6F}lJk#m9GF>wRBdd3 z_J^X=qVV+mly*{TA?ANJXh-+kCF%*0O+MOalQ&G&h*tphlZ8Tm|L>S&w*QjjFCw}s V@(>9BMSK7N002ovPDHLkV1lZye*FLd delta 761 zcmVNdGrJpH!~;KPX3jbPIXib| z?%Z8i_%GcvFz7a?t>f`{8S6c8%OL0PhR=h+;6wwLDipB-Mt@)r{01qJO+NBnnR!u= zE`lBK6O@W#6uUT+!XR1)#~_p=I=f&4tbywWwKXQ2d_ob&`cy?hunB$ztOv9o=90=6 zD8@xxo4N5dKLt7q`V?$~;!U6!ixr1USy4pkG5O5=p#7j$?F1ch0C7pgo%i@~)B^T3 zqhB?3FtymZd^*4APyUNfBuFp3lSLRYTz zIfZcqT(WmlUlC0^3AFoMMooLw$7A2T4y(Z_8}QwTQ84c3)PBsasays+@+G@br@}#a zo&#~dX@)8XkjSq0VqF*<0+)@twY&$>OD99WZ!$2Z6Mx-h*tBbgw%m$dYdI7Q5FZxv zh5l+YTseTtmfNp*1FdU>i>?tZA^I730j{--Hh}FF&8OD=ioVZP2 z?y#jWQf=&afJa1-~5s$zhE9w*awY8<93%L5#K?C3JZEsa)9gL9ad}&H{ zF_!Dd2=;rEWOg`IqL;CB^#FhZ%)VzOTy*)La$xC!2Zci?vYr=@%N=D%D;L%?NU zKc0}orTh9}12*;micxI;7e=ap)HtO6XM;|3-Sko-n|yT8 rrZ4f4L=%5ikm&FK9TWLM|NhV!0$-7;5l@H500000NkvXXu0mjfh{S4< diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_send.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_send.png new file mode 100644 index 0000000000000000000000000000000000000000..e806b99871e67853f5661aba8df61d3bd6f0c8ca GIT binary patch literal 898 zcmV-|1AY97P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~>`6pHR9Fe^mrY1iQ5c42@+VRe zLL(9^T!rr380FfaO|&T}n0C1d5rU#ckwOqr(yE|EKSD%QRuHv`q*_Gu1A(=uO%aF` z2w4%)kJIyB&Vg^nJEwbxnF+)X9?o~q`QG=Oxqs(QCbJZa=?vua`6gKP-+vQ}=!6?E z4~o~Y2kL9SI3{g&3!qsLZ|K<$*_thk$#P~HSI7^+d()@%ISkZfQA~7PGZMcbxH*l%WBV<)4(1&+WMura|wx2>&Mj`2n_Q!dV!@pd=`KTPd!@^jD` zrzyJ+!#em3it&&U<7?ppXfZyt$T4USX;Y11cFVa>ClONH12>(6mm*#dK8Dk&GZ}=N;e|JF?K|4tuq>@#RFCijC~lWy zfG!I=;4Rpg;$TZ^PekXP%U9Zl)CNv~wjKsy8f=Wjd6wJ)Q0_!<*@=c|U&R@izNu_B zJ8O;$Qv6oXA)kY=(hc^ZdFJwPgMsd&c}N=HC~OP6M)y}Ybw8cy(c=2h4K`O?T%qF` zeCnK+&RRi)J}30J`%5}P{;)u~@E~}}RL)u1Msp1OiMXf!M1k0EvVX|^HBY21E zVUht1^vc(UsF(<881I17;NL5x(W1s_yF%K;V;JfB`xuN9GS~(uK$pXZF4Hxr?3W{k z`c&|-&Mt_~R?v-E{0V!PzFu2fvD{5a6GgL($(rB*=#jOdN4mdalgAk`!B#WlB)OiD z8Plg!FS(li4QgPrN18Pz^ev;;e{F+Fb<>^&?cmxv9>Xq3{&ua_l3B#^YI!gDE{Zeo Y7ZK(!gZ1vwY5)KL07*qoM6N<$f(?a*A^-pY literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_sendfile.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_sendfile.png index d04c56d8c09c1aa5a67b4516dad401ba6f504883..90962561c6863cb3455780ee98f23bf69065d85b 100644 GIT binary patch delta 574 zcmV-E0>S;-1hWN@fPVrVNkld0a;Hf$D~3Q@n)-Xm?i+uPSZLh?@Xy>srp=Y02j=iNSDEEd^6 z>wxFdTdUO)sFzU)@y$bHYmFIcl!!yLB!6WF#-YGf+gMUF3Svv$#8lsXRd&S>? ziW&R48761V!UKNX#6^6DZV5+shL{A<&fF4Dx|qnx0kr{wBOTz2V93Q`U8i`%kX7+c zF+xP%mmno(ZqM+DD}iBM3*;$076z=`X(74a1W7IPc_A`(iEk^a&$6NZn%bQiOKIyg zXJ?0*oS9w5Uw^a{WfNrT!*Php!z9AQmcV{J^11wqAlVmDySM|RVUsS+nYhJ;Ddw*lt$VeY?YaEHptvCZces659;XQ>>_k;zwsSdv%0*9d#R8m^>a(mmY76sCY$)?LwA283B9#i#tL ztandAfr3?2bb>zv6*CU%CMb}v-*r=1;1BUyAQA+{K^cT?*AT`7iP2;V`@j~^k4D0- zO*n+hb~kS8+gcx)iV_cr6Znb^8Qcw-y;32HEPqi%S2hJ6z!i7|mMKpv z%5K0NSOwES<9aA{j33V+wC7|Q;1`;zkkfYgay!b$cYzd=1uIpUlLDu2W%B&I&|x&l zEfG>G@nBLD#vFbF*DaGVbQE^W)FYxgTD~KZ9A%WhS%k`&V@5(reLEpthe2wk>KcE9 zkU?tqR|$O}b${WAw5tf|{t?6ODe?j)!3G<54sY4K)uDJ4LhKRUuTH3^U(lKZF5F`7 zp>3u=1iDKPY9J*|i=vRKqmqc|L0oGnc}Bvzl@wDUYmT6JBGe>TQYb0Zq(D=D+Cxd9 zCIy=Mtvxh!1N9yp+k8zwN1?t&=-Op>z|eY0000l(`^til2t{Gep zHbGFVQ!LgP10NbEzsZZ>71%d5O=7IOs1tf>rXJY?sf_~H*c!EbjWOT}kT|ss>6*G2 zI}m~uYpnAzhH$4f=$0CBGn_GyzcGf$hx!MQc}NLjIxy zBJv$;?^xHDbm3$r%W>Xw_Tn!0IR3*h5~tF}-doTEB(}gue--vZ(|dEAt6`k9b@W<+ zJS64$rm@4~cBB@B1|Xk)iOEQEf=x8k$eFKLevzm76u1&A0qK6Z$A4{)Z3rRI9b`mq z`Dt)9q^+_Hc?3xOtlW*S&?iP#fPErrjNThlw!arXl>I>m*aYM{&Eh@vy z$A}C?yh)sx7|dwo8U5+snxJ6_^%*mAYc_^(ZnC!w+|S7Q8PUNEnFJF5{nsJ;)QU4= z8IoI4;_suJb@4_lL%qJ8^2-kC1F+wkBd%w_b?wPDGspw;z>UI;RQw*oNj-n{5O@SG mf+g^pFU)V`TGUR!J%K-S13WQaI)I7*0000>u diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_settings.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..2be50ce583e22de55f1e6fdb98431ef3a44befd8 GIT binary patch literal 1278 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_settings_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_settings_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..87e20c73d963ea89f81f636f24223817c6856497 GIT binary patch literal 1423 zcmV;A1#tR_P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1`AI}UR9FeMmurYsRTRg)I#!kn z`A8`ml^~6rva$y!#d~AjeGA*3x2a6d+oi~*?Zr!&kPvQ4^l3d=fFZ}>4)K( zAA$k~!pmUUh;dHyBle*u6Q2R^xRRiM#lET!LpR=)3CF=ED9Wi6_#6EM{Qq0XB=g}g zSk~A;-wy|a|26g%jX!c7Js9``SRW?q!G07bhnVc~@M(yhz{!s0I0U@RIfSnj zt2|K5ud+$H7T$nAAc~&u1sD@M;kUqhVA+mwVa$Bn zZv1CqRIw8=ovF{ED1Q=IP|TN4T&wveC?`rsRX(jZ#*Ad^Ju^NgjOi0>P}^wcg}t9L%cLoHj^$pZKZYKdMSucpRBRmC_!!Z#_YOEK)R z@JWhU?Z>z)^vM+z;={;W4e=oVhCefn{T8-lv-?zO8a?@HHxiqwUIoz#Edv#tD+pgJ zJr{OCQ7#SRew-TDI3_(XI@m{&KP<%e273|qE+|1K?1Xt>X~WPHFNbsC6l?;^FE-G_ zlkGVxZaoF0?Qs7UQ1CF;|`KD+6nwvs1!e{5IHtuhp55;#OM8LGS?lK%R6r zNOZ5o`Mfg2|84H&FCBa@t#>oARhW{|xy{RJvb-xXPTtWCF zVF|>G7Pov{f0FD$uSm9v%)YO(q6kh%2~zP4e1|^+Zh*C*RkG;dcG^Kd3_AE0T^sMi zbQld?5UicHK3u|fFe)M%wA)C7Z_BaMF%_#VQ{6)0b#gRjdo+ggu7Yzk=Gqs(@D zrfJnGMA1rYgxf(cyqplb6XJguxE0YIHa(Y&LrmX7y5saw7grg#d`B_A;?pn_K7hDo zxMlr2GppE%SSxG=%NH1$1m8mxP42tO4{=FIm|PgA zgSH<-yG(uJJP5hMW51dTSAj+6V6h$aYr)n^E`iEQ);&oxiA*vZ^eJ0Q zbZ(|KGj`K`m~b5EfEGo+w2@5@+?S3_d=|VLD$;dO{O)OJimDf0L%m6+0F7}kaM72# d8tq@q{|8!4Ztd|cO4tAZ002ovPDHLkV1g@icgX+% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_settings_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_settings_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..c3382096b51af95da27abbe0fada4b5e22f94b09 GIT binary patch literal 1230 zcmV;<1Tp)GP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1I7vi7R9Fe^mv3lQWgN$M)#blg z))KW~7{1Vf*aQm&Ckv%FhK9b#Vh$5C@l6zwLRz4%h+^zTq9QrLgv1vH27wJEh#U@e z77DXXO_xE2VQw?r-0AZ@J-^Fy&pr3td)dKP{ou3T-{OGU`%ae0g7+|(3LftTP>D@f9rOs13km#$_IzZr&-##oLy7D1i)rgIiVunkVY zWmpfT$cQTnN-3u1aTanCeH!$D%=E{N^Brt0L^2(|2(9$~*lE6&mbMXn*aL}Eu;N$Y z2Kds2^K{%m;-9&~y9M%N$?NHQ;OeAg?|~owq~8bXp$+U#{TngkQa2KX#M# z%F!hDdxbiG)dX*ee4w zPtFioRC3ca3Yl;T_&cIiX_23TJ>qFhmE42LD&bwY1BK*k60?FJ@z5zyy^9`6m{ zKc?YmVk=x8m6aZ6{e%8H8w~>aA4A;zSVQ~>=ze@Hc4;K0!F@2%Bj2E6^j!GX5>8)2 zzX<+QHUqy6>D!6WyPXB`T7y1|eTM)i>(Afo9S7Hm{ zNART==TAR?{T1Y$*48J~6ikED(H}y)^V3v~H2c{#)Cbx$zj^d~=nax9;TyjEbnTD(#VOex^jQEe zLqGFeFS)N4uA=bH{)CeVv^6HYhGcQtxr ze@9$D;u#k+bpb=4xVNCsf@NzO>(N~R*-MLE3wn7*#Xk&nWbB0OI}Lj_RF}PoVgqP; z8ceQX*dwj)o7Oj`B{}_IUW~hZ8kObVI>(Tn`_#S%UB0OASM?M0{ s?T0&af!SEdJkZI$wLr=L;Z%3vUzzOWi_;OrQ2+n{07*qoM6N<$g7+6DMF0Q* literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_settings_old.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_settings_old.png new file mode 100644 index 0000000000000000000000000000000000000000..816ad38770f52583002e6b71e8ffe18e474a9565 GIT binary patch literal 1357 zcmV-T1+w~yP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1w@E}nR9FeMm|KWeRTRhlylbMy zV0g((q@^i=`XEML$|o@pvaGy>fs$hQps1-YB1jJjDvDwTmX`To3e`)2HV*hAqSA;O zI5LUa)eOy%(b2Ep|9pFWv(EX>IWuE33x3~Pd$0e#oU_l_XU`NmJ%$yF#m+Qa1k+#` z6hL+l&cWw}LgA7sI^38{A2>S*zPJ&~C&_LxXGhI@h=-@dW4wci~0u z)D?Wk7?bG?cR=N&w{MZN!JD4p)5^SeZ>_@NN3OD z-he0J6#M}1z$P%eZ$XN040UhOmvrl(54;Xq){AhM7qFr8tVnn+gCCQheM*)>asjK-GzUGKF@tkQag60k)Pu_7$>1VlCqm6*GUiE zfDl(Wa-*m`0{uerApRB5e)T*of!{!;J!g9qW&cccDVsyI5l(S4ts{QT3Ckh%ewp4Y zCtQH03eJE`kANREQc@?)ZZJFMx+sNYc33v}qh3Uv9$>RCeJ&Xz8Vj}=?oG)bw~p{P zAX=`ZPM?fra0_IOUO-uIli75iON$X|?~(b_KqRH^T$CvmFX4y#_Vx@#b$nZNwD>p( zx+C@vV(0=Rx*2H0vnnODxmDDbvUoKs&IRUhQhw1_z-Y%yb7PWp+k_{M#nRk1T5` z>?FoB;hq*bCa(bvJY|HLwDj zZ+}J~X!?RZlV@Wx5?cFOkllfSF+m3u7-NeD3pTf62of_ai{EboV!d5UVXD=&)zem| z&(YRSG1#Z2Vp}ks*3`}?gvA4}4lbw=>|4CP>a8-gRj?EE)`?F+ed-yLJp{iI$NMEY z04_tG>B=@j_jv1giTu0Z_cn?Zwldx-r9_jV@EO>~rCoIu>;YYoS>?Ki{tz58QSjg6 zzXCmwu$z&e9hszX1Bf;5Od>A4qrfedrIelO@-Izf3~gL*6b;I|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JfK&7srqY z&a*SDGejLl+TPD{;oa8}$TV%zjSgQ2?t>g!)7*{(ZP>|WmZZqhWyU2oDe8?<$BL<~ z3XHQu9J#$6d&Pvb=Vv@p&bs#g`rVXG=YZhY-tPyFpP6_4kM)_mv3ZLxriq1K6+Zq^ zs%lP~gxeyGUol(LmsYX#I%O@MIxAGy%~k%)vaCs!@l*GmUL_KIyG3tt`?F71^WV6! z?=dP4ldg(>JewY@&x-> z{=dKDb6!RI&8cg=E$^m^w!WD#@6>Bsv7o*p@0)+N6`Rlcet?ZVy7O&=(YKB#>L0E> z=rx@FpLxB^-YO|Ur)|b@?YaT~KR3H>jQ_wiOK8db7j+rzvoA=_%3@dTY`e}|mLY4? z5O$k|sif}bgwDr)J8n6-ZjY!=-Q>;9d~WiG#c7GtBl7=U-?u<*rl3sAN0~tTkN$^j zB^r|rSY|JH!&krjSw@&c`n7|f9~kbttCF84({lBL;Jkw>A0v;sx~;Q2#U^HXSNuJv z{G#hStkB&9SV5iM;7Zm@nD3)#WIAfoF zBJ9Aas-<(9xHnvz_W0%JO3mHTip#j)wdJ%geYUXLv|qzlKT4{7*O#8?ryJMUwkFM; znZI!L^DA#Rum5&E`b%Tkge{`$*cdm)uA8OgSRHe;apS@RyX^JvuAGx=e%E~GjcE%i zC)O$^R%Ql@@QRewdDY}^+gP(;#_6)O*Iesgmf0+S9RBCI;&(k!@1iN$n~htUHgT5h zOnX@(KR<3)+_IPe-)ni*rUsK=Trk=7LPyr@aq6>GteonC$Zzrms=HFk+Fk(KTK stuObe+0|9OoWD)kfZ6Vy>>wS_De3p00i_>zopr0Ib4bT>t<8 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_share.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_share.png index 4ccfa6439741b8fe5aa1761de8af9dda7d8376ac..1e41c5a277b9f9db03342f36f879d4254b54c031 100644 GIT binary patch delta 778 zcmV+l1NHp+1)&CzB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000apaTE|000010000a00000Dh}iP z0007uNklD3%iKT_oP#N=(5E2aqtr`nsi3vdpH7e)lt2<`jvS;p2$$Q03@?mCnXJ&`H-Mf1& zEv1xKpoy+Pk|cf5-xMv;$VD)@kI~l9#%N%}x^em`y1ijdvG_OF$PcHbYH+Y2O|kG- zklcZq3@5AT&VQ^;wPp>>5SO@^E%X@7JO4O(nWnm&zx#^C_QMyDT-S=|Hkj3blMm>= zUF$~0;TpVw?_hG(7G+=$+^`AsM;NyG|Dq{40M8*NpBNks7h>#!7rcdC31f2m6zKr{ zw|1H^lWlkbm*6a=humUD(>VFn=TTB*B{5aTYRCCi=^6Fwp z>V>ypq7ySv7nH*xw*tCtCfS=J<1oCpOtenT-W=;kL#Z(g+TfD)XizvvU_1D?=}H(= z)TeHthVGGQ@}TJAVIBp;TXrst+2NBk1a=}8vG?r=DlkBu{F|DjR(J)H&(ITFn{hq# zI$;n_z<((ifukw$#g07%$H3&WU!1`n(09)g_$LMTk5v5}*~}DwFp~VlmDYj>T)`vQ zkHBuD3yG?#awN>gUL8ZfXEXezfR4EydJ=v0so;6gE5VmFoV%d8GjJMAs#*$1FV{I6 zMCX6Gk~HNNn81GK`7$3v^r7g*Rk8KRnD@qBV}GZWso1Xm+`>!uVFZL#O z>2WGk>7fHAkZVAhenfF@Ei(y5PXEV6?x_YWT%JVM%@oCfYZX!Mdp~vEe@Z_m6yv zo&+_u0KKWJM<$4$0h7l63{sDDa|{L}{gy-J6)3Mj(_Dd{=1D;5gTp5A00000NkvXX It^-0~f)cn}3jhEB delta 738 zcmV<80v-LK2Koh%B!2{FK}|sb0I`n?{9y$E00OZ|L_t(o3GJ3mh)rP_$Ior1(KIPd zQAE(_ThSxA=LM6pqnC`F@`vKsOgk&lugpAqKz z{g3y#^E&rB=e_1~XK|kT-RF7V^M9W6-1nUGo)bm6} zU4>~)Z;U2>s2gXu@Lf%9$~y7<2yu7Qn(`WX0>rWtE0pQ+qtoE8+zW zX^KKEunj(dZ-37joP}Mm4tkO&WNrtT>84+l)YLVmKqm}aMd#1q*FsB3F?3sD3}jl} zr6GA$8WLy1Z7{n_Fi<57m>_Qp*arHMctt?kxP*i*cnoI838suI>W|1Dgzv84XZ)I= zDhLa3(Iv_qghEhqhKM>F;2X$ZLR&^kypQaR<-dMPnSTj&2q;Lf}E_v_Z+$l^ccSndyjzq;~dqPebA?)Y6lB&5Gh5z`TSks=6l-bs~BO?QpqJ zD6CEzM3^L-5)J zHGDCVvwtk1Kgl@!Nkyy#nRe88)59+T`ywR#&Gh2D;muSUVorbVi+60F-)vA!vfekc z)6fUWMzq^r0_`WdRIw486*a+Nw@u)`!eA_{=ZBN~{w309$y@xiywqbPFZK#6yaN5HN$y}GPs8gl zu@8L;Oob760vkgbF%9~+V0MZi{7JGRjr262oBSqhhpPRpk>|>5fpBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~S4l)cR9Fe^mOn@wQ4q#m|6F6lD?|m0KnfuQJS9zng@2V`6}VE1Ksr0UK1GT{ zEK^yi*ro{>NG*beWr*MfZ3JzE5ORnlAQ~^f(H)t4arf5Uz16@Ce7>3YXTEWL?{nJP zTK1oP0k4_$)@rpJ`Co!j@EvS>o_ENYy-~~<*ag-u2+E)<(~2M*1V2EKm9s8r#Z*$l z&w~Q^;?K*MdVic*QIPHX#Os!nIVnnQ+ODbJu1?Bhzn{;&z&6%Bb=0XA#IN2CUc(@- zORPwozjm*FzA^q+=~h8D zl0E?+z$LJDO7IRm0yAI}RDoP{d3}R-E`~!nFahSkG=I2xqWFD4{sd>h+Bv}z7`QWG z*Z~p-DeNL^Z@~$0?IRPzVR>V%k+hM*x`k{p@gf#kltUzMq_BElD(rm~C1;{NkjTXo z3scx-);kgrg&cN;QPtBbsvNg*g%;vZNX|q{Zb7P^VG29K7wS&L8uc(lq8nZo#&VQ)6WAB4xO)GN7pTyssxjo`yY_g~aA-PpynfLs)14e7x1mjWjr@jwzQSy1< zc7>mqd#Z%~z6r*E6kqqGIzrS77Qkbkc)*Wex^NjkAGRM!poG6^-sS--Mw~|x^6K+5JmBIPXd~VNBL7V zQvBxi)Il{;RFL8~r>71o#LoL)YLl@Fq_v6HQ`@91|Dk<>zaQxJ1h~(>B>(^b07*qo IM6N<$f|H&&qyPW_ delta 739 zcmV<90v!GA1^NY$BYy(HNklQjjgalEIlE}zv&G@DAlvxml4>MXN$Qr=B!8(0;{W$HN#<^5w zzi#zs>gnSe6vfY~Td&#e;Cc+(Nv%fK^GP{S4rsJ*_X7NmW1|unD*c zv;nQaS)e?+$7q0N0yV%X;4rY<>zm?I7I+zeJOb7Y13%5OZ-_rrpfxcSb^xdcwgSyT z-!ovF&B&-`ITN4?pvN1`t@n>%V&N@N2NaAo5i$X~Y=49G0{ej?Tl4!K$S2@fv>%Pf zG68yRgI)~=T4In+hqATB#3?L{MfTYd_+7>Ai@4K2+SnBWwc6)KN%K7a9uIb%k`}V z9t2>ofPdX_#V=bxkrh~F4*e-$3-B}mYqsqo`rUM(8aQs-Oyzii(pf&R4|o%RHQ7nA zHSqTXSAbbb0Yz2}9JM%$Q@2;goUXZ|nm@Dl`rKci5^Fz6d#5Ze*>*2h z-dkL`?D}OscVei_C6KFAmqy6A>fzEp>6Z<)k~T|PVJ{dSN~)LCqD)>kOz5ANq(9eK V2R1c`XyyO_002ovPDHLkV1frZTbTd= diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_speed.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_speed.png index afdf4d02a8fb417dc347438f25b143a51508b961..7a8eb9794a4de94bd1f1eb08b24e75a76ca1dc65 100644 GIT binary patch delta 678 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 OKn$L)elF{r5}E+nd<$3r delta 524 zcmV+n0`vWm1*HU#B!2{FK}|sb0I`n?{9y$E00G=dL_t(o3GJ6LOT$1E#~T$3?&>0l zI*H%FL2(hGI6ApFIlBrXg7pKqx;yLUBD8}o2!dZg9K=a+RIFCx?`n>wFLz04E)gLQ z{(X1v-u>S{FS)cWl?p35P;?;Y4*0&m0PewY&ZRr$JXsVWdw;|Z!I$TGBXYgpIXp+? zE+ypeQsXK%2ciSevDn0zMK(_b6iMz*(hS@INfe%Q)sHCIC$=1pGgfzG9!!8?@DAb) zqSPHSRe-k)EW$us+WHCoU8QycS7Vy8=>SQj+Af}F(n?Dg`5mQ0TckY60VtC-+ zY+_VAlUp{Zn157)C^`*J!6jJLSIt;Hz;)ItqBG4PzoGY8J%owJo}5|m0JMEF*Z}fq z*NBaoiV>eN#Un8iV+FA;#k7biQ=)D=qu-Aj&L}2QG%f&%RS;`ZOqJLQcm-jrF-b2* z35CcghVj zI3Vfw+g^PSErKS;_r#?D$<>!2L_D!^OK#3$p2?d!jnG0+Quj<98rPfjv2yI&@LB)S zm;||fkLauGdi7g+y*uq4nNHbGkn(|l?oD?xYr}HpgsC7YI`AJl@B>abBw1oJ__P23 O002ovP6b4+LSTaW@9G)= diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_sticker.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_sticker.png index aaa7dff438a71e89415c4b9b67c5cd184edb5b39..e605f13b6786ff6f3abb97856d833e3c1290be01 100644 GIT binary patch delta 948 zcmV;l155nT2FVAIBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uz0Gf6~2R9Fe^mpf=wK@^5}qd^7n1r`YiTiE#kQ4Cs$m4Bd>paBtEZDM1Q%4Qoi z2ujd80l^|jG?t1)5Tb>mAY!|0h%t=@1fxmg`u#U^WO8@rva=hTkOTkDnREX0*qOO^ zXG^7ZSxYO>Xf(P&KNtfw@EfFxVic5s<3(32qf4m#eZSRv&G^FT5d zkIe61k8{?2(tpyehSki<`CXSt-nFU zX*=wo-%%Cj6>tOCnL%x+nccB2${_~ delta 827 zcmV-B1H}Bv2hj$QBYy)JNkl>2MEBYX6QCN$Lh%B^hA%O%! zP|>D;pe$;Ww1@~Y`XZ=po4z1|lCU7CMYSnt)iO-N0>kXocc!b0 zzz1HKne(1A&wb8&o_Vh(@V}uX%ohkhs+LqIsX@{zNmEk(#(zOcosynPdM2qaoKR9S zibgIWFY18%z)y>t5PC;0xfq2GOKOue&F-_3`X!B|RH#f+rKD23ACh!j(&;n` z9rE-T0L}uNfZ4$Glu-@T0;hnCw{B~cLQ#Y^n7j^Mb|2o#e~mT3D_eUAs82%Zo=xZn z){h~XAXWok?0+2(fjNZ;1qFOz9LNOG=Bc#9fB&QiPE)ObZ^vs{6xt;XODZ=zi6!Ll zLsHi`5_%(Pz^+#&A(XY_IbQhf*+-7i<|Cvik1{k#I%*D{4^@&{B{e5lJN}qiv1QD2 z!o^r?h3Ie#D2>P|0j^oj2(Tq0$NAGo%Xyqsp(r$3A%Du0s*FggkhI-fe_H{Ca*&o# zk9YmSY9S0)d%bz)1SsH!erEiZ%>?cM?|_{#KGO_z106tR#JJn)zNjrrODKqn6ed^> zRE46+GvFLTWr?NB#bAOQ*F)`s9^k2 zF$y`G-+yDLZI`4c5jkfh9klC=qz*~1LpkN>fTIrIY0ErPb^jv;ga_+#U5frUv4t@BjsPPlb}BL@nd@SfLLO$Eq=JAguj zTmZS(QXeqj*(-u1ATHx!!Z zyfo|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S(2xVV@L$& z+i83Km>fmiB3)GlrR5u)v^_O87;QX!gl$d6iZwlA*Hpyz^_Yk_DC#qq`X2~(P_#EZ zz4N5sCW$i1vWqj1>^wPr_nSM`)z4<9DoieXC{w@}@ucDX??~+ehLel!W-X9j9Kd*H z!kR}HB?MR=`A94~{#;qvLD1m1*}*3bHa!;)u0Qzcg5E9DX(oG?w{}H^Y92gNq;f~~ zMRazjRe0QrR|=Bxi^QZB?}#wC(WmWU+V(ee3&*#&-E*qGu54IxGi=2z{^eb}w3qsy z+sHUc|K!fR``4`0xbyFSzSg#&VPE!=q$5Y;7M}9?(dAd#xTNnF|B|Hr0lOPkM0q?h z_`5t{%^%*gfs=lO=(QDJ@swTHxqDx_!At&kN0)W(^))YjpXl9q%gXBFi=B&}F`hI| zU-78&Uc;a7j1|na?7yv4XaByQDSbxQq0B;ApUuEmC9!Pwm1wRLl2uOAU(Gvxj`4Xz aCVSY0p1+OK&Sl)7Q1^88b6Mw<&;$UkFT>XW literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_theme.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_theme.png index 87b6e9bf16e7a76a90017aae5ff6f446f1864f2f..d4f6ce12e866a8a9ab3168f3e639f3c805102ace 100644 GIT binary patch delta 1026 zcmV+d1pWKw2bTztBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uz0fk{L`R9Fe^mrF=hQ51&nt-$DE_MosAG%0#W(zHQQn14xTLX*fE84ZG>nnq*| z3kOk+A_vi9B7q1!2rB}~h$i+RC=k>N(ae+@M0)#v+v~c$_nhnTdhZ}`!RK0cuYaw* z+2`zYjiYX@_XIo_~f{VMj{i4t~D{?Mgo^0qs@^Xcv8J;l~Mf?7crY>6pdrg+Va;PH-MH zX{eFk3>QFpGxezoEt)7n@o^Y--Q?>*_ex|#zYs3LACT!Xo{HSSgcMbQE#?RD9?NCp zsV|2CkZDmm6wwUvMi>H_7L&X@#0Ag@%F7p6SH*5DEq^BsIrX(gNwdLfGkS#2K&Bn4 z@WuSDRl>7c%QF_5^E4IcZ08@@xcM0tm`7Ymyv_Zt=TtnfTrRxpcg^+M#e7>c_C@d- zWZ$4DRm@oEWyzHD`=Bd^Um$DpbK_!?Yepsi{+u0`%<&JVXmE4sQ83fmr(UvZOW+$7 zBi4@S-hU9u8`#rj45`sQ)8+8*$0x3EK7LDJ6N;Ka_R$2yI!R`ui?m!6PoWlL)@3ye z_*dhIji>I=N|$(N0(^N$>Bp9z$R9<}?NDr%u)z1p zmAOGXRRf-=hS-k&EpI$h=#IHQQBtkg8~EwPV}BvnwbNbf8)KvSiI}I(%_X-sa2676 zPGmb0sGI5_bCiHy9kRC2ekAXXN)m}aeDc{4T98G8zWT`Par5X4V0&mAl82m7E?gMe zAvi&=rBDMc;M>XI3O9&`-Ez<$t!PrDRk`d@xdwhPL5axyh# wQoZX+K_7Mcl+X>Y=hwq1&no*Qr4Hr(3IG5A07*qoM6N<$f)2XVwg3PC delta 977 zcmV;?11|iR2<8WnBYy*}Nkl=f#&vMH zoo}D>4Gko?V6*qP*WT;D5$o(b-k5^J2_+x?5z<;B_FrXjsH*f+t1N;p9 zTaKYZ;SP)*ISC9qrvonm&jYnURb;2t0PP390KNil>`Y1%*O9mC4XxNt+!f zS0ueHX+#M&Lw_4$%p7+6TO=(=F_Z!nz3of|QzasjP( zU_Nm#3H_&%u1eZ2sU`xlHA5F-@VwdkQ_^#J0L^n?wwRYi-Rn_UuW-7hk#1$=HtAB0$1n_D$J$D#tbRN#{Bt8a6 z`bbiYjWI$eKBADV7cMx0ehI%@WRlGG;!sHddkw)lXg%0%Gy%c1KV%`I|HzmWQ5 z6M*qH{@5t*4>Z`P8{pRdl_1;eW&%Ihl`_}nz67q>cyfxNdPChRX^fDDuVd7ueSal=iw6Id-H5#Cuv_wLcHv-{jKgj zV{Lpc1*ixlT#}U*)WM^*IYGqI7Cna&W|WQhd4EOx$$qnbxTEyHmf&ooG1d%xn*wyo z0UFT_V8Riy2AE{e?*qSPu9ozSyOkSqq<5-S*r7OE(mrKtEFACdG_!te)f?TqdK6xv|(xG14keoxZ4PSy@_5{%KBel;-daSDqb>+{7 zDOMLvwd%6k4!@A*CxKUhqj`wPO#27&zZc*Z9Gydcol`uf00000NkvXXu0mjfQZV9H diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_timer.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_timer.png index bbb80a6565ca5faf79eafffe1fa373dba640719d..8913c6595d0cffe97ac173e96fd51b6ed9b61d3e 100644 GIT binary patch delta 865 zcmV-n1D^cy2KNS#BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~;Ymb6R9Fe!m_1JvQ51%EiCHO#(Tc>*LTyMW=m;GKOMeO~TYiKUEkA&U-$1BH z%ocVOBsP{>_yt3bUHW-8NpiaaQ zcRTEa@l&7^X@4&ySO;fdUVdXZ2Oka6Wt$hpD#t7E3yAZiRYwHwfotIM8RZacf#@cd z&3xjB>!KXq>=pW>Mhy|L2#$cuH4;v*YAS(w@E|pw`nP(*&ucm7Ezn1&hGH+V#+hNua zBdtyMjem4v$372ULp4?VR>FpSeYwVSI(7H@s~V~$@!Es1p~q9-;DSr~!}OHHVn7P@ zz#OYqFri=D-cdu)NM%< zq4|+31vZMZnXVK>>;C(KYjaQ4K>=JWt9>XnrXg4v!?!?Ev%m?XVdj2-?y%$o;2I!+g0l8 zGg?R|n!E`61uH|)z(7!Xa0_%Q15aB47g0#CZnBH00000NkvXXu0mjfcSwd1 delta 860 zcmV-i1Ec)+2J!}wBYy)qNkl8 zwCE3)`*`oXbAR`|ciuS<|C%B}9+ED^d;oC(^$xo}0Q&)SrhhYvM8+db&LBWh02=`m zIqc;6QWww!z~Bjw2#Hn!Snsfr2(2G71`q>Ks=mGgcmd!c zfL;JUvIdt3r5O>D^&~Hm{77<)c6}##m*i2B3)A_`252404$JZ*B>PGBksP#K7w}^w z3vvl`oaC^vNPjQM7LpAlD@o2FIg{i9lC>lck?ab9-6C0?El`wXtKoD&;YuBkHu-or zlk5yct2P^;7Q@+nk~JP6woRQd{Cp-^l?hOz;pDa>DiVz%2iO6_UpL9ZFhH{SJH0uf z??$=^w5r`&2h=G8>TnpKvwD-H^$y1(vyB(N*}ex8MCE`WV{d=0=A z_ck!9^G}DJd?=d%jOjXieSqo!%+urZ9x$RX^`-+rj~?&z0a~H+TL4`l7V?!u=c?LP z`T)grz5`$=gT;K*qfwn2w6zu2MLJ8746A7XW(Dr)xA=GkU)HE+8K;c`yMM_CNX9nfrg#ovR+1c2zt?5+zCbeC z45))SfGH>WO#KPevak(W8Ohh`;8&JV6(k=R8*Iv?W0bK*|0a^U=xEk#V>ih+hK~!T zO;{iqt4TgL97-p7Qv2d)3W#EoyGXWkyv}LTqy+N)l`aQx2EZQUoRo|w03Pf2L`uU9 zEmh7nfiL|_07n2^o&XTBR*Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1D@jB_R9FekmrsaIQ5?tL^Dj~? z3}rSiNl}C;JDEvp8Vd``6e~N~SSS`Ol#~SvqL{&Inpha6&|AGxR;HxbAPfJEkQkX5 zp3nEr@AuxhckX@fjW;yE`o7=q{Qkdl?mg$+TrP#m<#IQ;19qpFn^KW;9q0$$braz< z1DpU(59$U@(t*TRJURRnn3M}nRG@sA8ZE~K?yttUk#E=KsNczPl@kD z{{uJ`5f;Y$P|OB{?g9S*Hiu4(*MkA@9W+YvRm}QCu1)CP2T4lEb1FUzE(gX($jjV_ zTmXIGHwZ~h-v*b!F@t33WD7~L%27ziX7k#ZjJc;wZ< z|8!9e4T4V~>|D(_$+pE4{4G}wpj=L2Q)^IaHrGb^5oUQIWG$1=%v0nQZflk+7f?=- zYE&j6H8&0g;M1pnGiA+qLFEKKQ>s;Y(A}rPG3rSdX}z0Xrb^<3pxjmiR_;rf$A=iS z&-km|lj?*LpS?iO-L}w&aT_=f8k$x7^pc2FGqz7fc~M@M71C>(`Zl3IDF>q`iH2^N z{z9nFlJV8s=Uc)+%nyT(1MRA!(=j6hba`-2#(>_0e&{u8qW(}{OU74kmPoauV`hd0 zbi(JF9P1WG`CJ0~%sys(D%dqkqT1>q=M8N&!$(DmTHQ;hiFMk1d48t+p53lHUOPXSHV1R6o|5x%y;B*uX1@5VQ)2KT*9Wa zPgIg+mYMw_junwDpU)5Byck~A7+EZhJeSV6ui!q=+p_?iCGI{s?ja}1Yeqfzl4Ule zXm2K&DKTDRV|Cm?Ob2`wcnj3zevn3~4W&6wR@Y(y!!)DW(H~K#)d}4Sgc=5Vjqg3Z(W&0T0VcK5TiS= zuAS{5b4QoWeB|r*X2d90&2O=My{<@7z~?yF1wwz_^oD>A=J0UVEb2J$9T+jE^Q|8o z<_7Rwil&Liv`=aC^p63=x+LELF!3`dqoeR2XSl@GB-hu0c4^&#mjlg+KU+RqIw*BE f6`7H5@P_FRfR&!tA$>0600000NkvXXu0mjfkSrck literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_timeredit.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_timeredit.png index a0bbaad250d9046a79089a936eccfb564587b8a0..d159b9ac3fec42c74d0e07c374ea20a1fc313f8c 100644 GIT binary patch delta 976 zcmV;>126o(2*U`Ffq$(@L_t(o3GJ6#h>cMc$LEX;L!zMxDJGi2xIB5#AP)>7lm?L! zg%=d%Wz^KTJa|$}%_B*9(YQojkd!oX_b@59X>Nuwxld*szyCRVn|;20&iTG$P&BLl zXRW=~f30tSd+%@Wee&`KWMBmTvk{2>j`xYju|d{3(Q0Vgddll(p4o2l~_oq1gmtOc#$EZ7W+fri^ki!pAb z>jkj_Ffm=s^}*Qy?8`M`yX(xQrrHp-j;vh7IBFVS(OwaJw}2kBB(;*?g0ml3+3PdX zcwk>O8Jh30V2x=@%@3wHvFczf*oHd@JTf_5=+TywZ+{I}Lnx!Y(D;t=nYLlOQ#H@! z=W0_=TYw#zk=T{CM%oS$Ty6>ITG3eGvc{+RV9c_Fisd4D7L21t%aeOi*9_^r+%r_#xrsyuImAPmM|WQw*J{il>$ zf4m;zb$SvOy2{4E3ju(8+NJBN`HEY-2;+_Oq_%tLV1Fg{MnI}oF+)x zZYTdGc0rJaZ<@oY3dU2~5Oqm=W)hmw!%_$l8st=&e2vzmU<$r^6W1(E3C6uPr1d62 z>Yzu6;2>`)@J@exi-4872&EEN&=?taOqSkqb)>`)5_Kj6UCtyQ!MKo=zA$86J>LO| zl7GFo?PG^qra4ub?a1q!JE`x56PV{9qfGQBa&zKHG yp0Z3G=3&}2_4h~9q$`9DW*wAGOid^H-iPA$32RW#!!lyBC!z~3j}F`bRmdDObH@l zVa1NH!Qv4@u&^Kz3&X}tYNN5SkXAy7DW=4RwuTyFtg(H5|M%{Fy}9qZ-+QfUBAn#c zbMHO>bMEQ)zTtN1^56clE0E}jep9Jbcj_#JGWZU4a66GmJb%S^zR}Psh_W{<9)!sq z-W5f=g^CiJ0@^&zY6*@H)yTU}@?cmFN1y?|!{$&Tu_EXTgP;Od!#Pl%wI2+&LH=6> zkqXX)-Ea$9z&91_A8IOU9laXd0d8Z*nd`m_8-lYCWlb!8b^;5+Rl*VS$H5(^&Uwb+ zD@Cxzh=1a*z<(B43SU8{b=kh~w(${i`@v-uF}5j~fuIDYL0>Ckdm+6q6(2JlHg7Bxq=%gLD$rOB=#EPsP$lW;%*#@*n(Sv!&yn}J!E zOZu^>Il5A?56fYz>1qd_pUvFH(qcXX&8$@$T^~>1<|*}Fk#x}{&Y`*3C+;KyStHoS zbd~f@Sr5bg4p_66^kbnp3GOE+{T9z|<|UPzc@6(bi;XdEggsDi*M8IAa`H!N9BRm3 zfhSJFpMMxWcZ%wyklPTKQB4*b;d|o?aZN^~*G2qip|#ql)?sGPoGWC0BHeJZ!5LT3 z-!n#4iPyI(csg*Z4ROXVG|p+r2%Z_A^8z&MQEm;3wI;9#ueWyi$;k-a`gTuK!f_Nj z2C}zMw*dznqE{M+C{$oBlCa8|}*oRM;SXqaV+iBRcFPwE0X-?kKnpH=&om0c-ZS zqtC}sKb|v3Gy=YWOhtR=h}yY8Egf&IZ7;YC8Cz`@{xsx!YVy{mMkVMdEUSmYzl(^w z!hZ#@rl#6`rO2HRA5AfxhbHFz4}1Yhy20<7B69lqCi%L!IeMKEbM2Nr&7X_lrAcM9-6iKvbQ5$hnP*|X87DPl8h2lmkG_BX~uQN8jd*|JIpYMqa z5Bxea=lo~RxnHlbq-4n!*&WDaGPR4QC7NjkS*x$9QeUD-@qa^RU+V*9$^(&k1h{ft z;0`zl2cQNzQ>oN_d@RemA&RG{upMl1`TejKT-(Z|cn#6W848>OHBbRQ8z<2RH++Jy zc%nN*Gnd$;J!GQ^V*StyuZ$n$QB5&UWQiJL=O(lJ2>v11;sX?)G`WRw+?{f;b~UOh z!Zdt^>oEN_<9~ZV)}!_KQczyHv|{;w_8BdXuw&$_K+ShiaJ8#9^DdK@PWt%92JRiY z615V2H4K8aUIx$2L|$`i(p5+8IVaD8L=9;%Yu3Y4ur_W6)@!Q#x;e$-Ojwk-A=8xB z-G(qzJn4ru)2yZ^*VsP9X5ZNbZiw>qqb8Ox^$g5^FJeIX%wY zhG-28NFBq%8tOOey2C1w(^11-=(jM9V(zW$V7}W3pWu(fHaHA7!9D$jJ!*R-DMRbC zNt5{G6HLeHd;?5@Ophk;H4xMPMbH&Ho-FAxj(z|D002ovPDHLkV1i6^m}LL} delta 849 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 IM6N<$f=Wg$FaQ7m delta 912 zcmV;B18@Aj38e>+BYy*INkl&bPeZH=n!t*Xe!Fd!F+@ z|MQ%4p7Xq_M+(G(W*}2vHIy_`(sxN0CDmj?5{t$D{on*;Sbru0?|_%Um`r(U!5W$a z{n8+60^H{>ZUTAP5|jfR1HJ=0te%Q!F10Z&TY_?d3m*MJphXfA=ZV{9`xtm`@0X1$ zD@)eR2m_o2IwT;O?b*5arCxnPwgkD751jDGZvegHkQ}x4XFw~Ujcsg)^FV`a338<| zu-6my2pAr+aepGO0UNw;8@xV+*%TC%P2K=+fN`Prd@Dh{li4|(`5%H@Sq^-&LELj* z3i54c`xBS}^a5G~jiLw&N9vA}21x2+?;RwylQcq7Yft|=N$YD*>kkSf-IbJU^(sl9 zCB2YTW+ixkD(RM_m+>NXkwx67*pX!8t_OZZ@%JeTy$ zX1d6{;BY|F0{b4uU`gF2wJ~pZHqUo5Z|6(Ovp&0Gu~>1~L*qTwl@^8L&Atb4#j|yr zw|$y%XA0D$p~c7enV9ZVK%8 z>>dKcQh$h9?b&|-=0`pDLxHDW=Zy&lhyhzYy9!`z9J?GZ95|E#Bh!sT{VhTV*pg)C zD?Pg}z^qWai~NVI{RuE2)4oc7ZzVOR+}^ zZP}uDHDf`pl-dACB9ITW4IaSdRn4*~$R%mzMt{CJ;*5J*CJ^9ks#ukdpn-N#V*4c0 z5}1H9o~Y}#{B;&I(+FL_9Fo8rOMpcd#r?MC-sy69kc~|p+;JwYMLCS@M^bpuRwr5mbf-E42(E+@~<~JB3}QHFkfMcs~P}*xaas z3gaxw9ZOA<{YbhyZi=0(Fx(*+Y*$Et6;TCswqNCHyFylllKNC7&(e)smXBYuEJ1cH m-LR!Asl8_Ps7D5n^c(xrMyQm@M-Ko100{s|MNUMnLSTaUc(J7b diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_unmute.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_unmute.png index 952ab798be50e5a52268e47b360e3b8145986e1f..9f0fdec20039a7d276450b2f1257f61a88811bc3 100644 GIT binary patch delta 833 zcmV-H1HSyp2ek)~fqx%KL_t(o3GJ9mXcR#ZhBIq?ivd9sd>vHKlgDUOBw#Lj6a#t; zi5ERaL=?fpsyDqUMDeEJ0|X%`Uc`VzJcxJ+d)gQzz95qLzz50t{hO|_XJ&PsWp+VG z!B16Jbyxk{)6?CvO-*z1pUps!72i^+w1-?f!2}o#f}ogH?tfHyAhHz8bzm}t5f;Jz;R0tJp+~N5Y7Apvt@RV*NH$=Z(fakv{Z6!v&^bp)>+CRi4oviT zkNe|lvPp8$GJm39f)(*Z_#%WXjz0iB;0rM6w|HtzhP-7#7eH&JB={>5vcAN3gHJ#* z1NK@hq6sVnr@<4T1?Xd(wn-6VZDg?5Aof>6>PnyOU=m1FXPK9x+(B>6u%cC@NPI(N zaI8T*K?q+LX!pC)?gb_%{FoRYwFr6yT#Mlu0fv&A=>RgqQ{fBG1vik z0VI0!=2=XHZpn+h0rSH^4F==mgjVBw4@{0&S{(i?b@)5yD%YvNIrP&8WTDA7PM&RG z)a5%55!<&0olmOMC*=9FH{D@t>qL*e{AS^Qi#_HlZf+PMS8&K_sZE~!&e=UvwzWqc7&CGuP3=|gZb#d&x^c z=z)LE$Gzu&PH%4RyRWg>ocw1i5Ra+qse@h!Hi7w3)b-^Ma&Q-@Ji%xJ2Q+~0b`ABr*hlnfu*{dV z(jbHha094hFcvEx_AfVZ(KU2kCptZbKCJVr){ym?0>ju#Eh)Y>)ax3O)jS5?11rMQ zU~@y;5L_{gZ-1~?l#&qhG^FFi8$dVs1XONeRQ78p@q)6TM?j+%vzoYXLpq1?W{?Fc zXLZb@8BGG&bT5D`uf-_7N)}^{C)qfR{j(vND)~VED3K}9YA6a5wiC1mH zHwwvCkaJ|0D6Z$$u#1UmvkjSe^d?Qo!}g?OmUC;j*u=+C6JjIl>()@QUM%CZs1{@E z%^+3phJU6^6ZQwCTO?8MhPIi8a>m}^?5}leh)pa{_;arCB>Iuq#8ar{Vj~~yvK2!$ z_@t<8;+J5fqrc2%mYb!>=AtTmzP2kQyIrIef~wA;B8}&B3!XMJfPKb{o^bXwI&D`d zO`r=j0eOl?c2dKa0X^UwD{~WF5NgQk>~-!##(&0~UHfO*-$KrynI%9T;vzGky>yOj zuq3GY)1DeB@CvA0oz+Z`0NGXFhv3)=WJ{<#!$=0H?>mR&if)YLb$~RmGKix;dEa`0 zf{^qX)*yFkyRwox3C@FgfeMzJ1X0+xj{D?@$jwk*iCW6l2t5v|+%QYu%NmJw0hJ>{ zj83x>$OTNVIHBtWN}xcwH`ld+h@zZCQ}S+q2UwZFIao=Z%HD^3D$zhEVfpXJ7jTbL fH;0~+$XDPG$w693NIwzg00000NkvXXu0mjf404}? diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_unpin.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_unpin.png index cb984904a9746cdac59db5f41017bb71c556747c..c6764df7c47d48e74715bda66dad9e548dd4ee08 100644 GIT binary patch delta 787 zcmV+u1MK{@1*ry*BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~lSxEDR9Fe^n9oa8Q546AS;T-sq)fOFl!4kw6jAmUn17-RWk6cEX(M6uCj?Ox zqTnucBiK$vh!!ncXy`)P2`zFXfd~?z5<#e;)8|a@$l=a=zIWdnVFV9+y}!=)+|S(m zd=BPvmvPZgpi-$^K^+bAIe=M1C+KAwD11$59Ic}R^bJj;Vw!q6j9-w(E1x2mZlg^# zJMB-#JwElSxqp~SXv-8!1V#QGv}b&u>AyiA%$%H9-?>AviG`8ter7jiJctgF#Q8$8 zfeZ7*!f2noeq^D#buDpAfitg<^%kVpBqtLJqZ_hrp*9#7bS-gspC)^D zsJ9=~oJwRRSw6*&z;r~riaw!b^ap7qdL`IRF_zU#J7U)&`y}2lrZJnyeB?7_^TPUg z@1tKq?QPntVR44TZ=K@!IDUeT-Qfb)|#1Hie)~j%n)vY5U4rk zQa|W!eebbsj^>e#BoF$e_hxYh2n6PxA+c}kFsLqa8FRHh``8$tA8OUQ-#svWE={`{5>_%K1Ew*><@)G z7Um2nxyqdY;Fz`(l~8&p%rB5e&B-W?wj|0)NuC=MCMP`UjrIS7OrPe`+-N8850*Tdq<66F RfeZiu002ovPDHLkV1f{nQGWmc delta 670 zcmV;P0%85B2DJr{BYy&XNkl)Mm5eu=65CS49 zVrQ?I#zL@&2uXZKI~xm0VZfk>61B2XK~jisQ9%V!5y42b$R`VP$YeQt?(W`L1TwHB zoSpgkc6VlWugutVvsxK1uuDYRM5JFtMjKdDvxqDdk#{089)EJG)h00J1bohm$XXF; z5|LvWAe%&_L;pIB5fOPHB3IpdlhuHyOxQ_45=Iv=O1a$xR{2^nK&`;545;HKW(>Fk z3;-X@_b0&WRG=Iv3-cVptvX+U#i>B+fc?ObS2sP0)n`YC zYK#NhV}TX{7l2=Z5_Z;`3AD{Ouhrz#;reGbV>32gO&3J|0cm89DMPuhRsaA107*qoM6N<$ Eg0ikO-2eap diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_unvote.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_unvote.png index b2741e5898abed886dd8ea22184a6d95c4650880..0048f025ecd951ea281f45a82458a273ed5fee94 100644 GIT binary patch delta 888 zcmV-;1Bd+21&#-hBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS z`~Uy~_(?=TR9Fe+mp^C}K@`Ss{X-N&h(scaL>mhuHUSH(OMhptC>DYyV51;5T1oC| z3n5qtf)W(L2sW`1;vZt81WjiOg^Q(~pcrBdIe+hbZ!_7w-JRRpEyM@ky_tFQzW43S z?(I&c;$h8Za|bvNj(AKjcM2kU!D}G4RBp8lb_Dc;x1vPtQASF6VFc_33#J4=1A5A< zn8Hlqz2GA-n}4RUJtd{Q5QT@pXH$Zo0$a*4x#^xTb`pF6&%nQHtim2}5e&LlK|gVY zwz(6FY*X|Ad~d)Ikf(GUWLj*?AesaXko((*-2GI31w@S4yT2~SFJ$&q-N=zHf2{Ii z{sheIPk%O~Bapadu@xfAUZfpwCxzr*c?k|_^+_Iz>)Q5m?F4xxMkgU=fUy_gu*U8n z=4y0aR^MBYTs??AF;al>UAS3rRQlLGaJkj$_6Ksay357jeGM$(_gRc~AD9Pb4``%b zDDjT&A*&Vj^Ez-4KMUyq=%xJ}90OvH!5CY$-hb*9@k0@_dX$gAZ42UMRpy-jQ`%k+ z0`n4A$cw-cc7=97I0tN1BrLC#v#iXTbh@$By^a!7P+o>(V8)5bmdV%OZ)Yrbv(pu- z$SSbpr>HotRi_wR&8;Ak*s&nV7g4yo5w1eI?Y7LmapfDhEHiGa71n7dsG-p+TN673 zgmIZU8_HSLbgLDzwG%Y0Q8^t<6e&u%Cg8P`ht&!N#a4hMIm9i1VVx!IIq+Tkd7W&N ztc;0~4}9-q&@jT>vpwBHO}OoX{VtG%9#8{v{FP&Hx8`+}_EYyi&-w%W-!|vd&)ix7 O0000~{G0rayWssjZnni+=-v>wqC(yFEVuzJ&j+ zh)U6Kkn}=-bw$$BnAR!cvMx!}DVV|7AbCJZ2GBO(F0j^yt^qyn6|ktHFWee4!1sB8 z1@wfZTEswJB5Bmteip<}{b5fE>W!rCh)}(@?u@^Gy+Az& z9I?z;4crFyg*{S83$iwpIhTP$zz<**a2;rk05TW53l5@C>2SIVxXe2PJO#c*0LoP( zKu$O9uq;}~I)H;#1D}@#a^`Gvhn6>96s8ln4{QPUSbwSqi&s_*-2f(l-30-Bm|=s# zT-`t=&5)$emXc>nrgW#I$<&cCASvo6(&=X-kE<-dww6W@hR&j>%~kc&I-j)p2lr_lUbv~nz+htN~_U> z5j&~dfq!0LBk<6Ibq;30I?GBb0))j7231RqM}eVamN}@4spm_vU?^dsIUNIDTl;V! z7EBc&c~*+1ESKf>DiI}buX$ww{mh#jQHi%#U7%NXcP&FRK8Kb8d+qnM|1v9v?f^T0 zoxmvYI5LoHYj)Z1d%@X~S|vSF^YuhhyT5Z>I&TAlU91%`8Df* eO8-|~0lxvU-4P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0L`g(JR9FesmQ8F-Q545#G#QFT zY0-uai?NU(v2WZ#-glj#I8#l5z>T+okXmxSaqczL43u6kWwN|kkBSb z8x$G8|McEB*PZ9}eatkR{UI2S_I45a6fB zXQekzOqkEIFr%>*&3He;$6dPTOl+)Uil;^uwAxU7h)0!k{Z_?{sd0-c=$-N2UK15= zaQ)tgyDV;vDrn4v@8n=?TAV6(!0{P(^!lh2vB#cJ#^ESd*1LiFlw>r@H`5yAH!3L> zeuf!pb_!bws831M(YrDwjS7Z*4R{8u%%O~c^WYko1g;E3@zrIGY%0p#DYpQttE2bT zC1G3=66#D{0k6SVFb&i^)zMqx^89yxi7seq{~bHnO6)FRFLp1{A91lO`<$T#K~TW4 z2W$mvL8u>gS7w=9B8kR|z|)Cx8tey66=U^BjrR<=_}3dJ1o~?0_NOm)QqkKOBt<_8 z<~@?{-dxkWU_-S|qhV|Z4?$YlYe^wE=#b2!p9Gzt3ABNI;1;m*7-gl6&oNm6++uXM zIRtbojPtl$t`1^Ugyaj*E*%RTjDjr>+&kCVz=s7rCM&xArM`v|d(IH4ka44HI36T) z6ztcH&o{>P+MVUVo|)(9sf$q_;-`S*GFS(mXkw(MDC`^UB4bGey^i6CQ+#3-o>qse zUj)qK6!pf$4e9z(RG^XDR!KRk-&mQD!YloeK?nY+=Ewz-`#V+fWvxvG1tbK&QbY!s zabnfODiWh8>pQJ2Rlkr-S%NI1cq(k1A)g0(&EvyXbA}2S`@uG!Ak7>e_buDubFl6g zr4O`Z;Vtt6vd$rP`;fZ#7M~NFUlgWtwGa6LS?7>Pb!xqd>eOSv%AcJ&YXM>LWXkp} z3nR^HqbPm9Zi1h{m$w*B0NpGCN%Wlxq7o`3jeQ?VNZok%-(o4#p)8w`lK=n!07*qo IM6N<$f;-Nung9R* literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_user_search.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_user_search.png new file mode 100644 index 0000000000000000000000000000000000000000..f7db3ede14953b09ed17ea0e141346e4e262a8b6 GIT binary patch literal 965 zcmV;$13LVPP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0FG)l}R9Fesmd{I6Q545#T9}fN z_JfR~sD%-^C?X*+G8fUJHi6)xAkf7Bpq*_37Y0RZiGpa+rl?KsH2Xn6wkCzNu*?Xf zq(my}_4(Sp!x`uH=FPkrsRLinx#!3CoVo9L-_2zHG0B!PPZUMl$v+4-fqC!>jAXOf z@95QFT3G*kS}(KGiL0{m<(~)zoF>iI9B3qK@Hl-(&ifVXv`cUGif zQW6^Kow^2Ig9R`Pba?7SZ%E4X-{qBbK`ZCiv3t9y(}#IIm<12G&`qF&5*!GU8nWBL zPOugP^YB}lqtQk0fMYZE5IE|6M&HBkA%EKV3Qb7#)zZ!7iVG)?>{VoO(=Nbo(po8cLmhm<~_Lt^6+eE8@2ov!duLx;7VOu@d-q zW&*pcVMIu63-HpLYZ5R>>h+1}7N4T8{UNZ%IR<$17ksb`?e9=3wfCbCm5t}_Pa4SH z?jD9JOYprhxqFQrGHv{AE`jYj=eI8BOkuz^?)cuL*M+F$2Z~F^^Kx+XEV`p;Dlbsx z0?}~rhorI z;BS$30NL{UOP$u$A4;Rs=m5A0bRvIqT5I`tfGOZ*d4`JHQzltDRP5Om$5pY|lA*3t nj5rMuLu~|Sz=kwDRjK_AlfO|P5h{+`00000NkvXXu0mjfIWDNm literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_video.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_video.png index 6d46e01979adeda88362d5a669b74eb4804e480f..316f82c5bbd8d78576431be25119da1709d2095a 100644 GIT binary patch delta 789 zcmV+w1M2*&1*`^;B!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000apaTE|000010000a00000Dh}iP z0007(Nkl6oz+`fKf1IuuG93HnBC0uq@W*2Y)1$rFF2k_aE45ZAdL* zX{vyAir7iIAesaWvsFxyL{{Meyo7g!e8|^oELL(3qdB+_Ck6SQizU(6GE+Q4 zdBqI=(C)!wcz+K6!5lnAc>xaKNBA5HU*V8#yeda+4-yJj=7jN5n{MvBd_nni>?eJo zr8DD@VeSD=`j=2XVVG3=nL_b16n?|8txP>j`L-A|#X((OjuFhjD`|k;sL~iG6{Cz) z-C&iK5>LECt2#4l<6~Hr9XuRxOWPuI|<~8h;{)q*DN4pHQ1&8RaQD;=s@_}(Q zj4WTVRpxl?rS<*Vb`1JdfXvlV>mBY%>5i-L-tYLk}(9blcAoenD##t36$ z4hXOa9jynp(!TqXK>CVtEV{?=mYp%_FWduHm|*KM6jQOAAl>PCg;jbaG+i(Gmehm( z4Dy$(+x=se^o~0{KNM}19_**|?aIVDcBXXD@9ocq#+J1tHXVP*#FG2(=57E#p#j;k TS`NYH00000NkvXXu0mjfS+HfL delta 660 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 delta 738 zcmV<80v-ME2G<6Vfq%hCL_t(o3GJ6LXcR#dhHsOQm=Lis$Vm{4g=i;;B8Wo3DkOn4 z7M3EU6U0hwY}7_li$;T>jZKPR5Kb2$e5fyFah-H2_Fk-z4M6g024nU7rn`z2{c3Ci!q^< zl{@N5_YWgF2Y>Y4o%d(w&){7LRUt!H6j=&pWV!}$uBYYEvyea&4ytHMhj zA^LG}%+6}F2k4&wJ<0eokA67{3JJXAczLDF4k{i~SARirPMLUTNP+Ep<+V@on7Rtu zuaZ6}UKCwZMtc>HsjHw~mGn*VqG(kawJRRe4tv1r%hA!P#;WWCZK$T)6un$jUs&^u z$hAT`=>{Fyh$*4d(r zYnDJZ;eQpd2MmLIz!fqlITCllM$EQ8Zf((emRk_}<#v5~sl?q&K@#OZjq@{|!{e%* zfrq!C?S5spcj5h3L7^r6*DF-B3v?B{$&APvKsf0W zGyV|hLp)XI{)I$zgv^t`91|6|{Ars{9dZbId0UmErYlKXrCmh-HtDyT|9=I30~UMY U870}Lh5!Hn07*qoM6N<$f{X)QQ2+n{ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_voicechat.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_voicechat.png index ce27764e1efb587b157f5d26b505c0d3c5f43895..46d7ca258d605034e3ee67603fa599feeedda6de 100644 GIT binary patch delta 776 zcmV+j1NZ#02D=83Bn|;{Qb$4nuFf3k0000)ku@KG1E2u_0{{R30RRC20H6W@1ONa4 z0RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~rAb6VR9Fe^n7eCKQ4q#=;{#&i3oXPZ zqEQTph@yfvYaxn=g@t0FV&Pw)jg?r~Sf>#|NTJv(f`SkmtJP{jQILfoC?TYgJWyDF z3DGb`!!>PM#J9kLuFG<}7&NBCmhgu;sgJr&9AZv6 z$MTAJTT(4IV)jL_tbEhn=@jp4!velCF-8u5#{=d2jUTrBkOg>ofW=xI;aoSY^mSUN zufZQMCRdQXo63G>j4SJ19^J&^H0zg2EOnsKMkciCnV8mb?Ux_G}OIdeew(Q)qaL`AL_@xKr1U_quLlarjz(H8jtWW_wK~>Um!2}wDJ delta 770 zcmV+d1O5EF2C@c_BrybMK}|sb0I`n?{9y$E001~;SV?A0O#mtY000O80f%V-1ONa4 z0RR918UO$Q0007!UL1c3#=*t_00N~+L_t(o3GJ9YXcSQp$M2#D=HeHo5W%m2f+!*h zDrlocP(%c6tc)mFS!!=(V<*^%Af$+-6cj|OR94aIAQC|igCK;EMv|zJ^Ecki=H1@g zj~DhLNbb z5V8e~gEH(ZBp2dp+IEP7aSFz?Xc=DzOL|&kX(PHZWv60+!iXxN3yDHzg3&@mvEaQdv@{19u8ftlSk#3pb^#XYM^@OAR1 zIy+k#*5rRpy#*^EkIhlEJ!#(GJOwwvB1p1Nz5x`U1`A0|p8P9vyW_LG9|MJ3DLet> z#=l>i&fw2$T;pVp?un_tOkS=x_Vn|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315=Kti(^Ox z=i3>!*&=}=ZRskFN0biU(-3P?dU>Qlp(R3P>eQuTV!yCDks zBItUSon`A)B~6#lrgrIj(!ZT~b0+88xwOS8{Cn;cpTA!F{mkCtcHX9Sf6`?+YJa)~ zmQ24RXz(I3dHSBM20Y=mpZ_m&Tq3@Q^{vp#tFL{#p1dqGG%Q`VTHsbetDOPgPq9fc z3Z^b*HLqDz2yyef{ELquTp1`_3R&NSMQamREWG`o_b$n{Xq$itqoR^ z*;$h({#^LccP0PrDI4Wi-FC14V%|`LYrUg z(o{}`{72?$@n5VR?mg)~Hg9#5(_g(u?s+M~%Jz>`6`Q8)5dNl+sxxzmS*d5t@tAGS zQ^it?%k;0O$!-yUZn-CB_Ez@)FXPv#D@<%D*z@#n@Xw;Z%lm7O=ufd;Jzsgwomfw9 zKlh8Lqp$U;MoI|DZ@g3T&5wV6<&%%MzD+#2{9xVknH%QSB&*I>^=xn9h~0J2fbY~l w2Z^KmnfEoWQmVJmxir^5l)Lov`8CY-3|a!$1Z$N~2ZPd|r>mdKI;Vst0A>A0;Q#;t literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_zoomin.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_zoomin.png index 823e37fe34493989386093ed0afe30aca48e6d22..13e16d75257af3936bbb19e132b001a5f532776a 100644 GIT binary patch delta 784 zcmV+r1MmER2ZRTZfq(8vL_t(o3GJ7^Yg9oH$8$y{7(s}IB1VH)sPRWcNRcLrwFCkI z5wY+O2x4I%1XR#A5J+vMU?gB6Hd<+8C7M9QA}9vb6gGk)X!QB{h8;6^*>|@uxeFFI z@MUIqzB6xbci!&1mX@Y8S73cBP%0XpWmy|BeV`NU2H(LaFn?PrmFCeKBNWmLrolIm zCv!MPz_x}}Me+_X1&YW=$U}86ilm3ZysP8~_8l+)xX`+wEcmXQ-{#Oupt7fY9)HVip{sPPpzVRBJIc!`235}? z{Mx>AJ_y_AX|M3D8d@KC$7cpzKo_T%`wYb27bg4Br-OYnXf^o5V4L!J7Hu+Fv*gdi z7QCt!1m{NJsc~}!j;s}=A%PACb)P4?nvfR5e z!go3Fe1Frf5U}uf0$s?G=`v@L0l|-#Q)JmsbWbdndEIxHKzGcqIefa1O?vZqHRs82 z4Cob>d;q>NYsQN}%&3BcOeFvY}N}bfqeDz-tBLz+@hyqms9#F^MKDD_Yw( z38Ib8{1z|>bRnDk!MIxF;WfYJNH|PFeS-Kq>wh)l8K84Thn>zQol84_$!`qBNMGa{ z(m7Tip(yo~H9BTh(KnF3r_KWVL!f>Ps@4MI|j0q{vDgN{ww8ucD~FhCQfAVv5=YP85l0a{ucU_zTIgY71T#pm_iQ O00{s|MNUMnLSTaJigsrJ delta 780 zcmV+n1M~cZ2Y?5Vfq&{rL_t(o3GJ4#Yg9oH#&bqPFoF;pQKLb$(5OU&6gKJ~Ab~&{ z3k&U|m4P5eMO!73+A4yPfQ8s-rHz$n0uhTtF`%Zf5fmW?p1&{bn7NmI_uk7T2H^%i zW_D-hyLr2FyW7&zl;#RFwgQ#1=}D5blXDVuft}zd_yT4sm48YV{cnUq`oI+U0kUKk z$1vEsZdF0v2_``q`AqQOnimD>Ay9Rd{KCEu`aw5n2Rp!Va0N^QFSi(!Zj0!LK(q(U zJN8G|>YGf#UjgU9H(+u*Goh#hrZ(`}7||m|a}`JYe(>JqH@1BcU3O%5$`oU<AA2jR8H7m5A?Zh+C`^qn@%x zpUsN%^PBu2*!@9&M?Z=9ZEABcqAMsL2W5hK5aJF~+<{gm&<%8PdU?n|@q5GMDfH=J-w0X_{y5mCJkPvM7S=5J%diD+ z>Ln3#J;bSTGldvkGbU#;1A`;BWzT}I7nXf_1O@!|uhrJQDiB{ALJ>#obI{|p-sKU# z3n9)o?SFCr7XB`v3t2K%<18~E`RNixk}RNmW4X-hzB>72E|TRgBJb+^WV9jTtLi+cyrP zjn4cQFaUHRd%0KU$8%qEFb_efCy2kZ-ZGvBI)7Jm*y(K2xwIXaEMT;S!6?_zO>;D? zDM~$MjqblbX6p^4_mnPEy@O1yHC#xV0A?KtdUojW{0Q`yRsl0$0_f@T_jI-7Wd6uXT{Pc@=~Ph@8&-(_VT#%fE=l|Orv2Zpz#pE|Y~TqL4_N>J002ov KP6b4+LSTXngm%{e diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_zoomout.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_zoomout.png index 3a5a0c5b75af2c3e15aea3398b080c872b7dd02c..ab970390c5090df73cb087dac3670e1489f92987 100644 GIT binary patch delta 726 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 a?!D!0vpj9U`m9F)psg{VMBDik)oa zKAfAD{!D0+PPfL|QaQ!Rss`U1WeeD~9&qU}s#>#%J>vYpvg8)mvhgy>co79I(N6jkaRE$0*p|CAVAbyM9Wb4*P_@gH4;p)5)v4KLcopcGW-rb!nODgGG<3Q65W zp?HxB)hPPs76fiCYeKsyhv39?Z8&jS(R*cT4Z?|skto#%U= z^E}Ua&dW5WQQ@d^^vo<~ITv^dSP3)$kCbp3_kim_7tjuz1coyG(-95Yi)Pkq<-@OL zwlU%`ro|TB0kj5d_yza@7$~7d3)-P&z|+C|?ZDwI7Hte{*l%X9nAyznR{B3$t(k3= zE{_dq^Le84%envm19K2KulH^@{sO+t zW6Uf>SBa$C>K5Q2a0gfb?2&RG2$mu*0PFG)n+VaRl0O0OiLk?;!0W-df9r-66oN>; zA6Py!vPAt1$w4V`TmC)JD@(nZVZjY5a4zal*^rlL7K_HkYQ5@Ik43;a;F}_I%m$ta zo?Yd1y3|Ddm|2pa0k6p=nzZGQjx&b~wD&dk?};4KS%~&XE&-Z>qreBix4<^}UiCP0 z^Z|SGlFLi8~c8EitE`Etuk?$m3BsWfx zMHfoWEmk<62vSUIbl)x)e5Ey-lpR7J-L2n`0bc+w2j_e_Fd`j}({`h z;A>tf($;`#TC`J_B8%4QWb<1e`e|F*XU7n;lcI0}aL3~9BJ;i_*Beyncq`}|%5sF> zjuey%@x1=GzuJt1dMfE&?+ci!q#C4>h8sJD73h!pxk5m;0Y zg;7tY20j@yfl=BIbxKE*MjX*h$N9vDHMBc(ulJmL&(J*FFD%YJ`|Q2;cdxzoT5BJA z=%I%Rg4(IfR6kQssaw_Ao$4xuE{MM9fAPj-Bsy0;Tp&8EF06~_l$tis6Toa>1b81f z1Zv!5hVjw7-BGfF-~! zz%}7|t^j5Q*&G8vUl1r_Ca@E@u~2_JCUz7!0_+F+fnC6!Mx$}IEpv5Kgu!+=qJFL} zZnKovs~@X})X_FN|5iUJYti9w)}z4QnE4@KA8;Tnn5=LZ_^r&c1?B;BW7}K>%m=Oo zu8dV$6kBn$(P&I9W6`k#a8_N{X}qo|E3;J`C^c>Me)UXr`a@kY!6f^_YZzOjT!4tq zk7i^~sH-Q4zo_hdVV-;QXKRqC;9dAcS0U`*OD!o$Tjof1uQyZUn|Ki+9Vtj-I6ns89P zr&+shh$gvP9f?8KcS!W!%(<^=)vg(;WKTau5J;F_p;tGcxUE4R@UvF zo(;uA*{_;8>I+#IOc+!*s|T{WYBjp~AI z60fL#Wo?p!e?I#6N8OgXiM|(#Mn>n*Ts?LG9|5Pwk!qCoT0Qj8 cLnQ$J00e-r3*x*0d;kCd07*qoM6N<$fSZXUJdQMpCn*hOUI!0m zco`2vE`u>HBbS-qSG(5HaoXqXlV36EeCo8$@3+=EefK(huf2aiN=iyfN~$8tOP1u! z65trH9+>C}dj@m>*Hhou1BZa!z${PR2+##w1cst0S4uvT)=GM#Vw`dVv#VCpje>bS zl6(XCjZj5hm0E!>KsPYz30na)1K)tvz!RVixN80fz)MfwbYK%u1DuSa=xj9=ePyFQ zm#9|yYLQg2xC7=pZ=VMw)#c=NTiorCmYRTnidkPpVg`XqD!#$&C#!T8L#g;b78(oi zEh0R=O3H?wKOq&LN$5f2hW|!r?Dwtqm>-__*oI!|SV0}ZfMK)Cb6VM|#B)BFjTgym zV17p4G+;q0K9f)%y$l?*%Je5Hki-dTG?6X90I&nNWihXT_ny3|K$G2{h@$91NNk?a z#gZNs*j+{>9ZB`b_JTW;+rjFqtteKleZab$z5W{T(Bs<$>;z_bd~UD5Yq^!sUSCA$ zUm+wkuaPI&0IW_hM6A~JC;k;Lq^hGHf>N~MN_!BfFG(O(d1)dS5;^U)V-rROfO2uaq zTJ>&Kx|Va;#C-R}Y)K5b&+L7(Zbe^8w4o$(fX()~CnPi%Nv#D>K#nVtB5U}r@%I+Y zdn;*awL)XDU6S5O8una$whcC1BCpEP)=qDvF(3CTo>X{x-^FuMyJ=O1h{pwZKt5H!!6_t!q>8t?m zqe{{iNfX>HNv)D@N;)s8+3pogsZ?6De?TjMPh{3jU;gt44cZ%MF(=1z9KQK!fLnnLz~H1nT{~&Up8$RHm>7$I zTOROJV5J2lZ_w3d^fxdw&sp3PSOz@wfSYVS`T(1Nml0SOh~xh1 z5(m_^J7(;*MI{MX*G9VC5BT6sIG4Zua{=9MM!w~;!~`@qYA3vOxC@N-nYyc4MaJVicPGE~unpjmm-}u7D37~5jf$*uhZBUH z3taaAoBbUs4(RfTp*aZvP6HZ%UlF^nfUW69D-LMA8GD(b$`5T5fFqHz(dmnw1WGg6 z2nBUH^uUas$q~?1_xpj42w;q+|Jhl0BN{Ak9v#RPO)?LOPPqq+dh4z&{sT4hy@ z)8atm?m)LU4Pax8<4kPO8gt?je{vS1uCS=H^N|l&oojA~g6=hE?z}!EgRx3GrhN7Q zuVpHR3jun{oce!247B5MqqoesG`VCa(YydNfo9t4JM7aH7ON!vu)lPwB~6U<`zq;* zq`rbg{(8qkrzaWfQ*&ncn!F&FYKV4Z#c3CwI3 z(DQ&-oZ;Vq`8i61W8WF?7d96n@t4iL*esx7oDV$bz=lvR$xwQq9G>ipy)++QWFv6{O7|16hxe%3ICUX!N*KD9+%m#jR zVBZHWaqCwA?J06yPG-49peCS2m1(S`F_K0}>Xx)b(g<7oRMK6N_T~6JQqo>Y(9?~?G;E?7*zt~Rlqk+Zk?6z;sfNAOaeY}N;XE7Cmx{^9d`WN&EYKm8Nfcrzs5(R8laV9 zu+u5q229K`9-5J_9e+qU*QD^>3LJ8Ls~S<6#sXU+uovclogAgOP(EixmvFONf1*rf zDg!i(3!>I7-2aIn9&}Yp+Xh=rq@J#^5WUO^WeeE7#N+W@`xk|MqqXE9n8tQ)Q_+QG% zq1Q)MEIbUaYZTC_?tCtd)~*I#C!P9$Whr_0gNXZ>6@j{e&NqdF)?3O-?8@le_1h77 zI|33a)ZM^vlYKPBty7_EsuyUFDGN9E7BjRzGW445Zbc^WeH8KRw#2{8Ilj%U51H3N!-blw@mruL> zC5v%Y^Z(HfNuBl#*&*peSEPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz03`s;mR9Fe^n7wNhQ53~z{fI<^ z2#KPNU||u1Ni5=D5JDP-RCacXR$7FJe@O}j5tJZkVLtGqQPfyyXKJ%eFg7aD#=>O% zo!z<1b>_X<*-h3)FPwdM?mg$+x3iO((IojF#b=;W+>Uo^wc2jFXTb?@EM=~8YU zrLvjUy1THE5pWND1+h?1oRO~W2J?O}2ev@j5LcT19o-m)qo4{bev;e=7r;r-mqNK} z>WO1fB^lk3O<^*7K(iQeG7ywnE_yw*N3Ia`Oz$Q?vf`I_7 zTnX_lxuh{&PL*e&pEeWL+j&Nb3c^94v!ZxhLQ+VPN8PF6Iao*zH4)FI20GpC8)Qu7 z0qm!n&9qw|B3=WE#UeKSqu?^Qq`U=p5sqT5h?naj7_Q42A6IgOv_N|d_#341u>$_p zhGqS8IL6D>p-+_&!dZ4aOP6zoX#s-&qEjK>u27MhKlOS(#Uk`APshmAy_cWSl*Bf4 zsL4o@4VP!r57`38D}kDoyqBM0{Uo-bFHJ_09C3Lzy-wkqD=Jql7T(LxX!7?ovp}w%fipFT6kqhFR+JW`}d5nZGxxW+vMFFp@qu` z?4F^A;=wShd{rJmUW&qdThJBJWL?_$m(7=^wSL&+#$SOWLQ@^apF{ zC%?Er8pS#|oEy+d0iy}91r&PgYiTSF_y`ozPINLms=@GvoYQ#A8oiIG2mFKgX4H5) z4TjtS7SBocW&KnGPmRQSH_O?vW6XQN6E|#ue6I~q4(46|8F`QOyRtGsKgSDTp$+Z_ zsxMiQ^`&ZE*+kZqLHdW`Yhdw)iX%+>biQ&K%Eu;^Kn=YU0VmbIy`31U|lm0 z>f301=q9?YYo@bjirXO@&`aJqAg_hL_TMmW5C2yB8+N?)MBmw|p8x;=07*qoM6N<$ Ef@MITaR2}S diff --git a/TMessagesProj/src/main/res/drawable-hdpi/payment_card.png b/TMessagesProj/src/main/res/drawable-hdpi/payment_card.png deleted file mode 100644 index 7572ef30b2002d63b11cf74aadcf3067cd81a277..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`nXadcV@L$& z+i*v|CIbPH$J~2n7JNA;{-f>BvDNPte(=^bmG`sc*DR;+t#HK`E<2>#uV{T`# zX(nSv1OJ3W>olSmpD3yS-RYI)0CQfsUp3Y_~mGw;Oz z18V=?NnP6AqyPC;TddjFjn=JSwuzTUS-5y<2hQQhS-DU=WDmQsGW(5pG0TFc-@Q92 z(z&X$B!?^06^U3Q`fC^Go{LM(fTm9LmzUMuWWL~#zqR@a)vh|9WaFaT+`oq|Z#=Iu z>x5xW)k*$oJnUKRZCnpHS%Q@MGS~R_J&kp&C({=w|dS>y10?^ad K&t;ucLK6V>4x;7& diff --git a/TMessagesProj/src/main/res/drawable-hdpi/payment_delivery.png b/TMessagesProj/src/main/res/drawable-hdpi/payment_delivery.png deleted file mode 100644 index 2f5fc2389396d43689b4b46f95f88f1a62430efd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 842 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Jf2y7srqY z&bQOgdxr#y98Z@y?W85~qP<0N>jaHMVhgu&+;;IUf3(c3aa)o2+Zc|2+>wgAasnMW z|8+;?-Ddh}&v!x=41+XKM<bZqE`RxSlG?B_Iu7~kf+!I$sIbUM<8W-uyE1$WFjW>10&#>862k!HkhQ4hpnLca9 z?ghTA<$2#-MYFaWG3PPw)|mZxmuqrw(8@I4m*-=G^v~}x>&(78p;q{uhx5t*QZqzp6;5M-hU^y|6yH&*atZu=J|IOKMLeDac8{Y2s91jd|I0BY^!I= z^}Lg%(J_y0enakYW+ukY{8=&EJOw{??Tt&?;mumJ@@C8l?qe$MC5?M--Zkb-`YB~7 z&miAy9ssHeUNmpr`vd>?GuJaN`enZL$33y{ Ppmgl%>gTe~DWM4f`kGul diff --git a/TMessagesProj/src/main/res/drawable-hdpi/payment_email.png b/TMessagesProj/src/main/res/drawable-hdpi/payment_email.png deleted file mode 100644 index a5062eeea4e0e16464280f368166a31ce872e784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1116 zcmV-i1f%Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0#z{m$R9Fe^mtAO%VHn5vj%Mrt z!?Nu_lzfC7EJ<;IMC4tv`K9~n{9so zclY(UpO5!_pRpa#{`KE=-`DlO@B7;Q++S}|(K!CG8OV$@-=U$Q656bU>)={g38y&r zVV}UKuobptGMORl=z~N`;Q{y_rbP$BBXCmMj8e@I9oEv}X;>BM_ycv#$TRp8mcwO^ z6R?Ko6zZ6*Tjuy9OClNA2z`8}athAN)hV$`co23$!ytu*Tx|;aX{=-}TW`*`U^NS= zfVK>tfCJFbn5uD9MC)VL1NJN26V;@x({?NDgNC}aZL>OB)k00Npk!8zsDlJCeXN1s zq3{hZO_0T12(_EuLc{L3YS@EdI@}B!U_IOcbAD1{yP)9_g~FQ(k+!y>B`Fz#GoaR! z{l})4mG2BJ&C&L%L=M}MG=UFM3AA%YyJ>n5bOn5i;VW1OcM()1wAT*QClek->1%eWFeiVB6ppINMR>c4&A)VPZl*7fgViAB_iff=4~!+#uiz#Ljwgolmhf zARlbyGHveXsthQf6}R_s?O z>!K8N9YnDThb`3Re3zz+HMsI@nx%eIDo8!l#3F+1rbT>t@$aCahjKe}-v(Rg6 zMf(b~%^{mBp?+WF%0Ci(`CR@dot7Z%alTo8ESiwsGeXkg)-@c;{;l!Kxr)BVPtNoM zt`N#0R6(GJm9S*kg#O;7_RVG$%cuk-$PC-Q|6VeXlGonIbxQMnxW7SLsKa+ zKL7mC){Z5GuNWSOKJNL05zqnL=>+%vSg4F(trN-Y4+W{4} z>et8%cn7_0X{y;ztwp^7&V!%eJv2#Y9iap;kS^IlDD=Y6Nt@7Q>|G?GN4i08oSkDo zYJm|*qR}#P_6pYSy8^ApC`|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315>7_i(^Ox z=iBM$y+s2h+GLM9Y}h1lk>gPB>}^@n%{h~$r|Wee=)EAnKzsW-mWg3&d9(^HE}Oes zyNP>qhGJ9P%DIlJ5h`9YAAdG`ejss|aq+WzJ1-^KRXm$x`MJ*iPujV_=qN93>wq$a zR}KyKa|*a(8|a8dh6HDlYvXZhK}eTl-t`;QZMvRlfgA z)Z`@2F1ncgqTfFM$Gio%d^dIZ8qE~q)!j&<&VYigGdDZXluRklmnGiBNO*OHFA9n?4Y zJU`>H)?v-+8R7}K+or9XU~1%ZL#M|oeaqIZvqRo6*s$D|T=p>fg@#IHkbsa+qu&Fa zV8gwhglFeEsNy{zlo6oITvQk#*fH0Fz(_d8?qxFZ< zPZ-TTxBX$4@|~o*`FXXa*ZwRMS$yt>{U*N|=MRM1zxQahYjC{5ke%)GhW~{)Uwhex z^`1w0epOxzdw8Gibi&)h+|)x_agVP}E>v@zmOazrdgA>fwbQTvTv>Rfp6{Lc1Z}?< zpEZ@j;m+lMcD|c@Z|SyeYfiEMP@W}Lbhl*D4ViO6MUKGGo|~cZ=GC#ymYbR{pHr+@ pX&61%-|>v)#Ph2|{vVgMVE^NHCi(38Dbk?C=jrO_vd$@?2>?vHMa2LB diff --git a/TMessagesProj/src/main/res/drawable-hdpi/payment_phone.png b/TMessagesProj/src/main/res/drawable-hdpi/payment_phone.png deleted file mode 100644 index 5ba9c8f28e128e40b9a40fe9b853bccc43afd478..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 778 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315=5oi(^Ox z=i6!Ly+a*Ej_=KKP4EavN(^|mh-1+LUzZDR8&V(c5=(s7q@Wcg;@G{wSK!K`-g<}K zw_F~^2S`sm)an&EiBnbO%i($J&rd(sn7AYE{^Q>3XKg=Jra!wgvv^46xOrjMoNxI_zk|D9 z>3CSAT%Y#wd7|~3R^|fPZHE+WT2sPQR@_~6<%aS4JxZ$={Rq9m^jFUR>E4XEeUjW| z%1O)l9qwr5=H^A-ub=*IyT^r`0JXSI%iY`bB_=P4R5=mu(Yhty>9go9S+?LU-7LPr z2}ir;d`kLLd+WyXwg0a^URu%B-<;#c`f;~I`h?pBnofH-Lf2QO{wb`G{v!W#$0eJi z{VYt=n!ZWAEseL9R+@6?J+oq#U2`9=<~5I?uJ{RDn>qLRy*O*kQgWz=^HO(c{=c)P zE-_|~MYnFauAejQh}jlH!3DOTrOricZQtYc#V-2tjLps6ix)V5Wq(ofpG7`#(bIe_ zt~ZUW1=5Oz>kJkR4R{yZxsFd{g!_8wSUaEb0D{@<&sr}JU z-|wDAJoe3R&S!qt65Pk1cJS@8qsB~o3z+m8^W4f7XEIg_dz1)md6RcPGp13K|H1pG zXH6SVo4q?2l{~9&ash*yZsD7GBC06`RgPuLWmV)`^(QWh{}SKuPcHXEuHJ+)>leG; z>^nZWN~ru`><_leW$X``dk&vYIB;}{)1wrTODor@e>6PfJkhs!qxQLr7Y<7JXD#tJ ztoJS3j3^P6|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CyVpi(^Ox z=i6y}y=5Imj+RfJuti8(bkS5ZwI7XQ|Clw`s4VT6;N-39ddi`NB`$Tc7mKUQhRr?` z4@m^*xNOwP$4k+N`}&=YOT zu-FZ8!X=kqTn(>$Ay&Yo@~gHoqEt+!x3Qy#$^V&5?E3zKgC8w#Fh+Ks*u$It$fn?0 ze@NJ()%6Gdu0OzfEHC0^*}UTl PpcLlm>gTe~DWM4f%Re?g diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photo_crop.png b/TMessagesProj/src/main/res/drawable-hdpi/photo_crop.png deleted file mode 100644 index 14a8d5887cd92dbfab3d03013bd275a1836e7c84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmV;?0WSWDP)g`wyDoZ$f>)5@ zBG6@_E8U9H62E8jV4Tj&8$&WwoPn2_yq|Brev?Tjt=3;^d7ckpBiPAa@CK1JjM^v^ zp#x>2!y?{R@@flfgle0}7bp_al=^-)@X)>>@mx!$ICAgM9sA@OIUg9$VY4Jj-VMKd zh)H-iVd!irS30Bq&J3xSjOFTi_uL}bcO;A*zBl-~4!@79homV;4ZM`H5se?7+Ogl< z1E&MKH}I~d`XIXuYJ7sggF)iL82=asAw)A4q_LiWVceIz6)!~UocD$cmy^6_Ig(trp5XX?RDTe4Nb>#PBOPDo9mCsYk#H#o}> zz=AFfwG0YQk}`0RpfA>ESk)6^8N40afKa=1$&j!_)fH?4blSB0`kT&j|k0wldT1B8LpBu^K|5Rc<;r=8|)P!Mq0YQW2? zAe*^Oo_|Y1`uXP0kIbAJU4}Z-ZTA{jx7=J+wK{;KX&1i`g9>|xlymA09NK9w0l+Q9bQGU5*LCB@9?4w&B-O7)V z4yyfk{gKCV&J!1>Z;f?HG0#wc)_wcL;qI`Ev$LKp`2DzfzXQ;944$rjF6*2UngC#8 BOy~dr diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photo_paint.png b/TMessagesProj/src/main/res/drawable-hdpi/photo_paint.png deleted file mode 100644 index ed74c759a7cb94417ee76649f664cf7761e92635..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 689 zcmV;i0#5yjP)lmleDg8y z-E&_}O>X%F;wMln7CXQ!SO>4cZO|BhBEuaTUjaM7w>1*SGi-g3nua3gr&F?vp9UgC zZIz(m;K>X!G_qp8vhI;K_y~*xwVN5VFQuf@RiKmkD@Lo>s|9a?*n;LW@ig!!(_O9+ zb@FwIEtcC)B?oz^n2~)ce?IP|(%dKc2QkA&j9ddpeXgq46^hy9+?lGI`vkcde>4&qNwQ!=X-w=5631*Z^XC4id`^+^vGGCvP9^be<+ihrnkLXIpFxS|JjX%S6mI zqv99wQ!om~z;j@&PeqZ;L`(tVFRtTze3v#XwZV2`d&;TdoO&P2}}uw^Xji%W2II@>}3y6h$w+ znxJKUOqG4vt;E#W^f$NI!FM9&o!zV|W;*TQ6%dpEzb#3G)I5=5>`hW_&^|=X;0|~O zM112@c}`H(X~ zHIT~7Qr=b8rdXTnd57G=uayB=^A)L$*P@2EbM7LK7B(}D|iIthEB2>3Qnb|qGUprm`2A~4}f0K22O$^SO+h_BvT2wqbSYoKc2vE XDOf4X0CiZV00000NkvXXu0mjfPm45# diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photo_paint_text.png b/TMessagesProj/src/main/res/drawable-hdpi/photo_paint_text.png deleted file mode 100644 index 980c05fc72b7b5cd11c44da5dde50ad986c36755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 791 zcmV+y1L*vTP){Et8bET_+}2R4y%x4-k07MBYNQ9tD}-$M_9szKC%_QG8%{ z9G+j%4bNW2{&IZJ{12b6l*=Yw`(&n7g15oRFn5vuB_Ps!Ad0Utu55~NVH<7JDGKc# zOdF6tOx&&`&197d;njy`e6OUymd*p_^aXwm zWRD@UR-160$_I5lq2FO~B{29aUG9VLwBjE!h`LcT-Ev?5nT`jXapwqH=a!Z<^Twr~ ztgo<2lcdJ_CEuTrR5B8pte-(vrLp}`OqHp3sMJ_~N)H@aCb7x*XG1-)o$;hp;13WX V;3yho+* zEUi-5SctY3YGD$aU?&kVg^dtj*oa_M#1x7N@rjAa`u&@k%k1pj-Fw$GN)G%xXU_T0 znX@x@=FZJzX5}B7fozg`bGh6cc=cc{Sdb*f;rv7&2CuT&?380quTn@2=md|!2&hy( z6Q~^LK~4Hfh#;^DJOVQ<%DE-3sNj+j&_qBV&=N@oz-{mp`~YcWDdbJy5NI}m?`aRR zgoCCZ-%w077zC2<;0%}_ACb(X9H1R2r$l2^myL#WPHbcnw3iJ?Nl;FcnzoPQvE7!> zBi76-&rC{_eRhLmc^0fGn~d4PVl%X;*z8V zSZVMHIO@Q#A#~FgJ@m2x`6S}j1@biHz0*G}u0QPz?I3uyNwAMLbdJa-pF~{6_!2uq zX$u;4GLNB;JAJFlCZ82I#@cdL@!PZo-6uge_yD@t!e9J^#@1yx;@uOD?&6{IKz(R9Za6J^e1c2mev`dh&& z$1b(X>qp&G1u;N9ky?&h6m}=d;wW%x=w1by$s{uAl2R2!;AU_b>|x+GiqaJ&5^UN% zSAZ?%4Z1k*fECT~dT9@9hX_al zvC0c*V-Xu;8?S|x5#g4C5|HcfzdL7{-I>|DyBQJG1OM4`=6vq#eC^80-$0ASVgt-U zilo~Z^RAc1IN`Gnu66iIC!4`^d9X+2u*ahS*DEn-=k)9az5hEhjDUuHFfn1*aC!jl zgWKR15S@X~;0-t`isC)b-$xX(2~I&@lI^Bd1b+|Az$j48pb_+AzeU~#FTf2T+GhlxR_uV5Vy3{~bG{-!1Nu}^lFr%4*661(?)g0G z+|`NW6r8&NdhCKLT|T}}w$6t~gAS2~Z89c`T}e@`17Wb6TONuI&LVJ33zEW8SQr2W29n?wwBoHlN;5mugj;@;bBW#ld^Np zpx?F(;=6(?7O;ta8nX=!R~)otwRA;0EX{8fd-2xA+HsLqU9Lvppdhr`fkoP94ofa? z^U}puRLfOoh!v#cKy<9>ER?CdmpaR0EtfGjyqfx59eOjk3{aEn|R}| zAFiO>7c^bWL~}3+D(=&P;}qn)!YbCZPwu3RD@t!=r2C96`N=IoI%i{dAH;HGmKI~n zFIkWj1k(^}7jFLsozOP}XF#MPQ@=q^IO#u?R=FAqyU>qfpE`PtP&*KXX{XiY>d*d4 dw+s6xDGjH4g^Dt*kJP zt&W9$r#|k;8s8d_701Re0)+O?sKg|i?}nP zYid-BXDppZc!(UO!#Da8wpU?aK)>?OFXBC`b5`~uF{UYx%34qxnKibFUu!@gK<&Vv z)zPE%V=!&qLG|P%2?1mUCYqGQTVrxY#@kl=Gp+S@`sD!HnXHCG1PCKhH?=4xw=bP5 z9wm)4m#S=PxqWW|lt(Ero7HFmYv&=gsh@lq+P+K=UeWTfk0$9l@(zB}jHY*D7E@C| zp;L5*3iDJ8%K=2&mbNZ!-@i#1^CkEZJUoam@L(VuT}w=qGcr@cz={7py11FBH6RlR z=@bD%d(}-%eK$~er@rH2iP$Qenrmn>yi=cRPU78HHWR$*Y&B1G{cD|0y);cKnK%w`Q@o^ho yZrejicebX~MRa{=-KqKBG?9JQv-k`Dw&$IT_DawZsC2H3BaXtX-l60P0?gOkB#<_46Hj~eWUI4Ra#-NW%e~{(I?Q>B zSruNrBCc?l^As^J{Qz^K5{E1#Pgm?pAvRaZ;qtu@uQ@ZVt;m$Kc-4En5nH2FTCrJc z*~X_eN>OREvUb@KNkl00+?D+zPENTv9rX=pmB|O6kE0N^umkw0hV}k;sz5qzHP*Y6S_l5W*-3S}+na zh#(@CkVHlU1EIju!02NZVN=q?T!Xp06MygAN_X${`V^g${~q(aq(^(sk49f8dm!h- z;}~`j`!%Lk8hnk%^Bw@rz;t<&kA)Zv(|)R#~t>QuY6`*{=r-y*y&pb95bZklzt0SrUyS; z<1S0w;7T)H07x!g4tyVJe4pk#H*JcnU#nVxfExqckBBxPpXsqm$1bJnak ziW45zkW*ahJ%wMi<}8?@Tj7ZI{F`YuD-2qbDVS%w!aj>L8ISl&VWYZKWRblJpSmKI zXfvSjj>b$%n}Z5lG^HBX+l`}|Gbt~iq%%{~hu&0RsZpa=WGdzwL}w~6(*R!1RNSMm zEEVa+F7>HS7Y=F8IPErR$vB-D)RJn{*@0~t<7!(Key}QIEK^vSYRq;N&nJlnPZ%&^ zn?*^Y*&)1`YTT`GTjF+o%DO$|JB2@O(3JQHJJh8zUHH`kn~f;!aYvGvh>9W-` cF3bPL-_x&+@*8y1*8l(j07*qoM6N<$g6tP39RL6T diff --git a/TMessagesProj/src/main/res/drawable-hdpi/profile_audio.png b/TMessagesProj/src/main/res/drawable-hdpi/profile_audio.png deleted file mode 100644 index 1723ebf7c482780b561cb9e358700b87b164ead4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 441 zcmV;q0Y?6bP);^>E10Q7PiUQtt1pYhLO-kwCyNNS|#)SmgKkR`|NmE+#ArTUm1 zH`&6zM5H5<=x1{`cIsgcvjtsiW(xB&)^s!Na55$W0~;0kh5?8^#%zNNiywFvU4ZRs z%NKVTT9~lw1w-6b`kdg^dW~~j_llFSIOjLIHE;F@#^yrOF5axx1g(0*Zb&*s-*ipT zv_8&4QV&Uk>QB%M38RVC@wfj7zd}NauMI%oFs=ec+IhADo>oEsjU&Y>@ZTm90{* jUFGUPY~}M~(=7e~_?$# zhjfrqM0oHt55d5Rv+Xy3?H&5VL*xn)p)@>rZFCQ zZemg;N*Gkff}Qc4y)wg*XB1EMM=872k?4 zv1r4P2Ik$tJ>5~nYJbRl7H#NvPt$Oe@sYn|MpdGO9=BvpM>}@7EAz8jw6NY$smwW@ z(Vi`S*L2nAw%cfpb$Wc_jJq<6j>Jk>ZA_x+ACELV^u)g=^~K8BaD_Nm0{ o@}Xg;{OF3GT=0decjImJ44vF`u^0$$UjP6A07*qoM6N<$f`vgKVE_OC diff --git a/TMessagesProj/src/main/res/drawable-hdpi/profile_file.png b/TMessagesProj/src/main/res/drawable-hdpi/profile_file.png deleted file mode 100644 index 040f7f3214d3b42b1a5914b83d56c1b63c492d46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmV-N0l5B&P)&*RI*GZrVSX~EtYvf^S(pT>qo*z!$c{IBfMbR6P!sjU znI{}L2d9eTpf0Kj<0TzzT67C8ltx1xM5$0DSauDrtV{uYeP4nbt5ZNB2$r0IhP5f6 z5CjD$;Lds;Xsd5*&pY4$W*ABene94>=ft_52LzBJk&*!66+z(+t>Q5rJSeJ_NOUUnY~W3 Z)hA*SjgRAyJ>mcW002ovPDHLkV1o4phU5SM diff --git a/TMessagesProj/src/main/res/drawable-hdpi/profile_info.png b/TMessagesProj/src/main/res/drawable-hdpi/profile_info.png deleted file mode 100755 index 1a4624a252833e8eb81c5bbdd4c4a80917fc0170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmV!=TMnQCgrim0j`#4zl(e`(`I|L6j&- z>;_+@EowV7Jlm;AX`#apU^AWWfTOwme*)U+WDnHmB3cLCbaLFWl?Xhiv?Q?#`sw5d zR3q>lv6Dm%4F3~Rerfqc(b96oE+C4EeF2W=B02@<>Eu=zkn+sVu7riMF+C!$pgA+q z9vJu(Kk#UArlI}f57^IEyzB*B&$LGFz_X>80eQI z0o5*A{Ma3Rd7S`*}$1y2mgPv^~?mw!AkQG(@HL5 zD3p^qk#$B+X!v{4R(ko}8q74Ve9MLzSS#+k2VkmnLs?3uVDRUv#EI5#tZ+TvS4kY7 zpm)b->48pSjzD+^s0PM~IS08^$VsK5vS5*zyTWH~2PJWdu>je}Gx`D_kH68bYTY|P z-E`HecmAU=-dBD0&kh2`xYs7vW~FWdzEi!H>i)i(w=;-0HT@Ia9|S?59cOj@JX&iX uKdT_R0Td}*n%QH^GoYpMg_-@*|I-fvXe=6Lc6M0+00008ak*d(q20M2NVxeEa4^SEk4)!y2b8L_+WKbMR>6D?g+|Ug56F9hulem>u zw**uaH$w)8Ch+Ufi#5$nxQDtm&)MGd@V}f3@AHH(QG_f>wR8%emef)nX3>>cU0ECk zHPF*gD|k|Uq{E;V8d1OE3);iuE|Mrvg6{CRgIW}*hRy`^Uw}NYZck$RUqRd1etn1l zd8TQ@?48@!cUHAp5Txu3G(61i$}Z7XaROcx0D0`k?YBRf4#Auwuo8mju5qe79+ZTj z2{!G5x*6}lR_1#HzI&uP8uZp0_!@$eLvWyveN(s2P4Hea8uZN#j+H_P!9w;VPCXs) z?x62tGziZB#HS~Y(DU*yZ^?1y9s_zcFrBw*IXB_Y#)ArHq>7*Upe~wGyH?MS+7>=W vfj;Ml|L;0VBkHJ^Uq|;UYyrqRK*e}T9d$W4RL z&I#N}w}HI45M0cs#aza@#kHAnQBm*eoaecG-}~dd=iDIpHw}SQFd6%xV%=*MurJd&XbHS+Jdj>*z_U&slJ<*nxrgNPNa-!rer*v6b6C zsaZ?|!Gkz1A~M{y1se&1!`t=(%qu>-&+rk7v5Excck6-ec zNaQTe>Pm(?J8e^nz9hy`sA#IY$u?lx4%ji>I6U1?+hwqP^|77j$A&3!y zYYV|jv|2K6W#;>KGV>T-t5vL2pj4n#K(2r>=E*{i z81^)cx9n`NGP)`&PF7#*9GHQPS%-K|G(!=q*Q z&|C3WZ(YCUIX~RMkAUc9vPoq=5X9e zPJgaV=#5GH=t(&%ZEkCLf39UEp;X&Sh5lWIKHQCFQa4lhy@vfz`;_8S@6fd)ZZk(_ zB@yNMu8X^6roBs?)L=Y^cn{XV6-iyNiemUATfwpCoObHx8%b<|9vFw6AQJ70_@NYD z0TKHRvjaB3bm&v=ABgMHs!L^j2`d#S6_{8BegHF=$i?MBLY4pk002ovPDHLkV1ht_ B%0U1C diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_files.png b/TMessagesProj/src/main/res/drawable-hdpi/search_files.png deleted file mode 100644 index 6f92b82285a61595e53c0a2c37a88fae8b7ca0ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmV+e0{s1nP)iZh6hTn%(psnpVj+kx z;0x?S*jQQHZlQ=Q$Zq0y)`_rTu9`G52mYMNx&Ap5CP|VgaRPAy^-drSEuZIk!LV8%$LyO zUSt6FflNx|(%B$1fT9P((s_Pw%EdpWVnoS$3uJPGoSO1RwZ_I1#~uE>^tnc z%69~*9bKHx=0ixA=d?jew(CR%o9BYYP1ClG!_Ur11qEKg8?r)clqm92C9!+osy1(Eg zIg;D->FE5}m5We#4x8_Bk?}e4{?jb?iuZ8>aRPNr;0sl~x8qwf@eKd~002ovPDHLk FV1iLX=@tM0 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_gif.png b/TMessagesProj/src/main/res/drawable-hdpi/search_gif.png deleted file mode 100755 index a92d3af2f3576bc8d488fe3cbd1b64f5c35b6496..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 627 zcmV-(0*w8MP)$a= z?;|);D(wZs@tLu>46F&fHYF+C1I>x-4Sg17!ir6b*URiMlv7Jke040D4{8VKj3+k~ zXQ{+|BedeVRVk=-;C?*W0(vr0{Bp_Mgt`C>#gna|qYMf@*ggJcFctiaA87||6;LJX zQcT59m;AUCWEsGNBGVn4jIgp8ZV{7Uy0lmpp9s%_!s2@62 zr_NPBXi28egNG%k2kJ6reMPZ<=9jMLZ?HOH&wLg<0)1)HZSXYb&9E&D?#eW=)^~6% z2dFW$<6@TKKrmdb0NOG(AXhRA;B2rwjn^#ZIT{<=o(!0Rt}#=0^373YkAad^>dF4H z=1{ZZ-F?#;t=e4}duQN%URbSLW!~lyhg7+o6Bb1pbcYT28>8+!Xl5uyepnPKSZ=!$ zIBCrZW@n2zkqv+qjMm0v!KpRex7-rU^X+}?R0?1RtEz8~}6V|HhD zucalGbOq8CxZ4#78kIf_!wk7*VH}1bgd_L>Z-XE>Wo(Yn%oLnKIgxL^Dcw+L4lbik z{xZIYS1=FD@C}SC-f2@*i8r%{{@5;vEr1y)fMn8+X^2kZ3|y!JvI{+x661fZK;#J8 zD#a%9k+chb!e^-1j0zCb0p>Y-mZ)g8NfhXZ_G)p)PwZEayfHR=Y_$!w=xpT^xQNf8 zSZ`dnu75=OfMvf`y&IyCo|(?unT`wmIn1YwD-O3zI-ewkn<3#Z1+<&=0PC6QbEUz) z1V+~E7#uxt9tBL>es7%w@vZ$4y<}Cf#hW=qAF>Nz%Yoz%l)Yv4yds^6I)Tlhx5;&P zQ2+`ypJrYV_YWj_JBOFfL_ITRn{IL4h-N;K=YdxPb`TTIL8c{sHS5oa@+gKreJVHJ`$6D9jj5=qu>DDto1TZ57Z*cI<< z^LeNIawX$HoN?LfwUun)SVDbVNk(pl>c6bk1dLUWOb|ihEJ${IrW3bt9UX>SKJhij zkUYNaD}KYono&=yH5c=pKyrQcNq)miD0;J_4}x}(k@~i_Ph(VCG}Rc@*cVub129{k z%TR}2eOue7A;nN=67;3#5*?g*NOl5SO?dweqM(k5r|<;ya?~fpKCE*D95bepu0Xm1 c_hJRE0NM=O;kz9wo&W#<07*qoM6N<$f)b57ZU6uP diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_media.png b/TMessagesProj/src/main/res/drawable-hdpi/search_media.png deleted file mode 100644 index e93e0e00d576e443070210ad44f69003d4a2f7f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)~ zg_vCe)=bc^sNlGQbOx5(=8igYKqJ@nddA>Yl$rK}q>F??B#xwmNVEEh%t+UY@&c00000NkvXXu0mjf`(!az diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_music.png b/TMessagesProj/src/main/res/drawable-hdpi/search_music.png deleted file mode 100644 index 18b363720fdb35378486411cbf367cb0a2ec51b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmV;E0&M+>P)!%T(x;1vFkPgeg}r|N=ea$dnLBremqIxQe(%h^=bZn&@4T7& zrcx=b>_FLpQ`Ui~mG4`x*RN536S`p!Heo)BqE-CK7@LS-3>Lv>%LE?4xntcG3v|Le zIBe?--oksR9S(5406oXDDG9?0$o63p`s0f+cNLz(9>_K!kr%HkG)C|Od;pmixE&H8 z=N7DiOkKPZs>vNk?1@ydT^Pt)NNyi&fb3b`y39O;F2lAIvGL60lpr-Djmm?c`Fcu9 zu_?qJn&4-ATe0d&g_;PKOyg0g{!A!=_@L#y=S;+u2=CB z+#gFeKH@0RLHHP|7HG%!>YAG1npTtU?CD5zI_whPSaYCQs->^eoDJ?)s+N8q{|!|0 z3eH0hU$}<*9YBqHJIX&*Q1><@^vJP tLKS|&GQ1|gmD3)H(#j5$9rzDB@Ed`V?JJUEo1Opw002ovPDHLkV1io*JOuy% diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_users.png b/TMessagesProj/src/main/res/drawable-hdpi/search_users.png deleted file mode 100644 index 61a50529cc398c743ed846e91c1d3a0eaef7ec00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmV+|0@D47P)H090YL^+=@dtTjuZqyG@4e;%SXjPFjU=v7i()0YOks4sWFjre$P&)!+N>bu?P;EtM&1+3bb@?P)NklY5QaS!K}0Pi7J^s^wuz#ZLa-6hLa?<>BUmLM*jZU= zVIlYjw6L=mOG_;*v=A(mNKnwEP!!Dh%&{Y9a?x||0x53bVdrLN-Sf>;-9fS#KN{E@Il{Oday;Vi<3Fl07( zVmyN)h}JO7fWGN3@s}OPxnXRMQI!0BTks5xtjI(Gx|>r)fGV4H!ZfUb-h~JFQ&9I; z21qn7L;-4>QFn>!msCw5pHT~nWj*cLhdao`BAAFI9Y{LR#14D`Ah-5SYnxT^00000 LNkvXXu0mjfZiM&G diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_web.png b/TMessagesProj/src/main/res/drawable-hdpi/search_web.png deleted file mode 100755 index 494089cb7ef1c4636fdd17284ecd6946b6f0e9b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmV;D0&V??P)*LIyRY7$CzW zKHtgmf-V|JNW8&P2KY(XcuPC8Trsn`!f#5A*KBkFCCM01_cuPZ*M z%7GRe@k>^RD)us=ik?!STHdH^e+ktphE>%WEqbPst!2Y-2Y@LW!waeE>`_N9|@l>+BL?9v{^jH6G0XWbuNi=K!=B`=m*Uhax2N zNmbx89uirqG`Fi_q0Rts%|zh^Z0FySV z1At4`i7wPxEh54KwdPxX(*Rbt(Cu_f+z#@?j=x{ z`Yr$-#|---0LFqH0bo2PYBvB+g1gQFur?MdSBFP}sOta>xuaO2-JvdsTBez^LG2}+ z(78?ok7H`3j7J)Pr(p*>2tdX$4RQxHoezoK)xQGpzyY*LciSH&Xi~xbGN3J{jP6C= zi*&0b^EYN8nl|eq>x+Pq;Gz+wsSm7rG%;FqEA~bIS&PODV2nX7bDDG9H1`a^J6Bke zM_Th?;}flT^g6;sSWYh=0uY}xhqUP=V!-qnvWMfGr;~OXnHz|!4eO8n%K3k=8y2ip sWM*JK+eBsp=I2ZOUtm}HLW_vVAMXI+T3QolEC2ui07*qoM6N<$f@3uwm;e9( diff --git a/TMessagesProj/src/main/res/drawable-hdpi/sim_new.png b/TMessagesProj/src/main/res/drawable-hdpi/sim_new.png deleted file mode 100644 index 665ea4cd152610d845e338d4f50f46cc8dcff3ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2935 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 K?C}Nv8~*`W1zza@ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/sim_old.png b/TMessagesProj/src/main/res/drawable-hdpi/sim_old.png deleted file mode 100644 index a24256a05a8724277a99f3b69aee60428c6f0956..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2250 zcmV;*2sQVKP)^Ph|00004XF*Lt006O% z3;baP000PqNklXV%R8 zHZ0D}o;`c5{o8l{?|kf;88e0i0SG_<0uX=z1Rwwb2tdFcfdNku4Gj&Qs(7xK&6iyv zn;|=0Hbpj8)@%Az73`1=4h#(J?zJ-ZhX4c$Bp|`KRJLCBr!0^3ubkXeV3TnT0SJti zfCldz*$1*?vb@t#Ib1c`*x3&P5XhN;2JC=rwaotW7oDC|0Ip8ia_$b?LBKx&4bt(l z%|)w4oBubpezJdhLX% z%KUctPOcW|j?2OPT;d4=Cdb}G25bjtFd=OBp<0+k^ku~;jcmDV6_pCa2R^O)?}nVHS_wLDd358RO; z0D)KpG{_D#Y;l?omAOdfF)eGxt>7+@?U(J6c|S^OhRrVo%0)nfYnH4v9n{KuvS(xu z%NDe@NbB2Vp3;V9dUT-ELIvdS zkM<~Z; z2vmwdOyL+l)DNUJS>-;KeJ%StaGzMk?6&ILBtIf!~{w&u5C~HW^1Ao;rqD3Mb$} zIPAkmcWIEi9GngDSXX#Y5dZ`n5%3@!pKEa1wGGedHP68j8wBzu;6XU-r8yl*kEc(U zeJHa}6eJ~kZQm0eJ9f!X+4E%fF43fPOqsi7_jcJmF~%-s$%a7X33w2Wj_Vp4!1neq zyS}hQHmOT5*lYV9=&~&-`(|Z!`^Jksm^MfDQj&P+h^QmRBnRX{pe_VF2uBj@#mbzK zw4p7}#3MA>w_rokeIbP?1A#gd@G2a$3+$94eHYklTtgt7fLGxtGA`by5&ri>$(j-< za)8zpIn9PZ`3ZOxjy-{B_Xd`;VlnE>;GUuos1AW~PMh*pBd)aT4K{J?-3;-^s566m zib9||1Y8P7V;1SAeqxSMXFubkE(nx~fY(!%GBG4p2-J=M!cn^}r@;{Doq$W>(Cp2$ z>EYTuoH9*0?;RC2KmY=Z(RfOi52hxZ;LJ_tA@;8i%79`5jug^(c7B;a!9 zsDfj9c(aH2g@8i>E`@{X;ST>&2nhl$1iYTAw1mha1R&szfXgEe%?q`c=`53t_;jp} zPJRl38l%n-zm$PM6$!W$4uLk&*cbqOh03IfOKTM|>TIo_WeC)UfY(!%P%)U5p{HWh znZZ3pAy6FxUWKDNglP!`DoDVqa2zX;waZUY7RUqF5a=M_RX9Q?fORye4;e-J?nC%g z0fG1gyb8w_H9h2evPUu?vUik*q~}5kQ3e8aCg4Fh>~oJNB;8`QPcB{~`$+cJ2^){E zm}oqGe09Vnd$Do1x1!tW$&a#C^8IpqO}dra5o3E9)*(M1&P@WY0lZK7OOv*Z zCa*EyBlONnyNkpa+Y7M{fw~azaKy1t|ItIf6I*1T++Cz|d_%w+0T04qZ~JgrlTLo{p#E8ml~ULrxDLBNY}SU4+W-)pcg zmz^y;sS#tYKk_?4cBSkUIo>Lpnri?!gFp!gc(^#)ipj2ZtZ!y$@HQ9ug#ZK`5%6@x z;Rp+%KmY=11Q3oiI&6ag1QH1#9En)Sga8E62p}A3bl3&~2qY3fI1;gt2>}SC5kNT7 z=&%g}5J)6|a3o?O69N!OBY<$E(P0||AdpA^;Yh?nCIldmMj-eZ49()4tcq@tO-rk= zW!t%0p5C%vm&JW*=>CAl+KYvD=yCrq1Ikha0 zXhmHJgr2I{kp`j>=dWTgPPNnufp`Q$g(LLzBwnP|t(m89tJ}AgZCR*rR2BdYg8&4w z6F@k!Gh+`3)SdvsQTsmu06-u+0fZwvGxmT$?Fobmhs`-4#UXGcPPNnufp`Q$g=0s& z5NcoZ7quqVJ}1Gn=O9(h{zxS0SG_<0uX=z1PUYY YKR*J(#ml264gdfE07*qoM6N<$f^MtrN&o-= diff --git a/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_activities.png b/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_activities.png deleted file mode 100644 index 885660932ce26b5d796b46845bba1706eb46c101..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmV-I0=@l-P)ILKr5TOBEh>#+} zfME+QU8XjnD5#$nP9u8nb!J+7c8B}p%RT>d&hG@lW&C$2)nQc9y0o-)NuxTH76!SZ z*OHSsv}@O4CR@_$O1_wSvtZGHHq{ams%FoMZQ&?H8JAP780N?BOaj^&e1X>e>cEK+9Gv4%_sm(d;ujbkX= z<`vY2G__dyHx>pl9tI`Rmd&Qn9Wi4}WwSOU!=N=sYO>h``a+sMOk}efN7lojwB6G& z^cwvkP5){6L7>X6bS}^vyvhN(VbAY;N_&~3wA+sS41+$SHJg3H!yJ#@fiKbRA1tW- z!+0AvkR=5SWC|T|EAlAs6?qb~BAKQArb3lXv_yhhu&GL=RlJDa{&I78Zw%A1HZqMd zA21(dBSE0fcE+?CV~wrR7D&5ykw@OQkFOV6?K}=V$mQBywld~l68ct>G5@Wcm~-c7 zNUNI?uDhkxQ1%?v=X=?T&mG9UGY7J`(39P6Owtd3>{ydDroF(EeHmxsFUiqq>llb+ Q$p8QV07*qoM6N<$f|WD|8vp0x$iEP)W&`_=V( zPbHTUSK5SLpV+7Hvt`D+N~?L=%+}yKYZT7fY`em z3ZJ?q5vy^;*p!KO>`jemw9-io_(_-Vol^MPW2q6%POF-gGO-qKWQdsQ2`!pUG{p?} zS!i+wiHZYQoHFqlmS@Do7OY5_*o;>*VqzCwN|{)VPVFAZFvJ8aJn0zPQYIFt+nr&E z`xUBwbxq2|^?I?(T^WX$>_t8J+^Cd^JM}rEIU^#T!BGt<6CK!=A)+xQqA`O+lV4P| zq)dE-*Ha@V*{R3E3=s?U*lALdh>8PPoHDTuucSsSRXA>3YQ$K_6_%z(bfP_FVm;n* zhsH##QaEE`YQ#jR6;>r;raAUvNiGnhwb+jVypV{y^rCW)A@!&EWWT(>1+st)rLafM|Lt2?37BS}Oz4%?*agmJlunC74X{oXe! z7ZG#x>$S%zY)v9&xyNW@9K~A}o0dW1T0IKeRWe9CXpuGO6w|eto(sfUbqg{?%&=uJZqF}k$3}FSS)Nu_a}U=$J?lB?1n)bV$w4DB(!`TF&7RMzI)b$8WPI>=pTK$={96a z-mGyw=EI>A{n8S8jmX;*edyVP2>an(yL0xl2`v3p{ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_food.png b/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_food.png deleted file mode 100644 index cb4c47994a5504d99f6768693ca866490de293e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522 zcmV+l0`>igP)RX>u6Ze=&sSV`(|dosu_dxo?g#1>MMRjY(gVXi*KCJc zT^O)7k{PcZ=VBN|E*tVpwdpa)43}}s_()<6`YnvVm}HkGHD<;z7U;+7Na8SBA|>Z> zFp{{7%1B8SIwFZ4ltoIGqc@WHfTfX=CFqMJdaxo=vJ%~q#3PhPN-EJ2NnAyBq@)g~ zBZ&hz7Ad)enn+>;UMY+e%X6a#bZ+mlF#?4i;Ao6Qsds2KF|v^7B;J}EBeU6eTu>4TOw%l*Dsr>kH+0!oKjcq9<4Av7#`Y_6+%n`TT)-{4|tyyu`bd@D49kQ_itVV<}nfX)%k>?x&m?{4ksrHD}J$(qh;T%%mON z-ece0H0g8hTwj{pwU76@)1Co4*fWqM?l^buPLdd~haCgC9)q^=!L3BUhKBycEg!IL zFxRK%5VMIsXU_B`W^t&Nn=yrLT`DF_sOYkdsoa!a2O1uv#RClodUJEuP&a4JoH=!@ zr4v?MwUSO)K;5!s%a+x#kWN^_leBn(rF6nmtQ*v?-=K9oO(%>xMZ<*)4V)THXFRm& i)QJrA8`szl?b>q;>hd|Gr;g`?4CHZ2A z@0#;LhdA>(sgzf~A+tIUG;wJ?-z`}xM6J6t(VhpQm#=G1oTwF|ddTL3_Vab!wQKc4 z&^}J*gStYfYG@f7YiX!X@2+U%SrJ0F7__W!WDLee`j&-lS4Me;w*MbAoB>^>fEHF- zdb5*2HGTb(*PjF`{~(h=nlJ2nNNTaE1C+=dP3 z*qMTc_do?2=}q0&(Go&SCwJ!TtW}G}c2~7!DNt>;DET*&kE2h9`0>zjw6Fs*gjH>s j(~@M`e~Wthtx3%vMN%7XwdTZw00000NkvXXu0mjf8T!#o diff --git a/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_question.png b/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_question.png deleted file mode 100644 index 943f842546932d64410e95e4cdf22021f1bb734f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)eod0&*BI8j!Vw_xb+ zM8>Tv`903m)txnGCF{o1$}HLgJ66of7&a_p)`}glXYqWIOJ0L*5B0>@9&@%q-sNsG zect29a@Wn4Rq>&tlt3O8_s>0dRt5RavEfKIRUEU9NQjldmPi05k7}~gHfS*?COnRkMYA~5D47% z70)7kuU*VXg*LF-cFJj?r>)r=ylq>tij62#j9x4u8K3Z?4VytR3Y9fvy2w28)0wF@ zG^3#$g-+BBca)h{#aav>QFokDNFeJFFB6z+PSsLfO<=&cB$*%(n9xv)2YV)Q@dI!@ zk(39500000 LNkvXXu0mjf(|iRQ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_recent.png b/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_recent.png deleted file mode 100644 index cc89310cba5768afe17aa7edcac9c6b8942c3b34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmVhXjEL)E;KKo?~%GSxHm7-jbOlq?nJ>qTkYN&(nJK6 zPZzxek~^dKcI}zf{hi^8Bzj!h<^pt*` z+BB6Hv*-|LS%_gOj?l@Jvu}U0OdTAlgh5-lGBcshc=Q-hudo&Fn{#Yr^s0e@YDV9{ zd7!T>#W>2REvOy zKB=bb!zfcT)Xxu^@qnR0x_(i2XhT+9gq}zgw2q6Q^`?)unhR5nKH4Nvag4oOpgkOW7kBG`u?6U diff --git a/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_smiles.png b/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_smiles.png deleted file mode 100644 index c4a6d7180cef20eebb69f890a6111d98fa34aba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmV;819JR{P)b6o;R;>|&N(^`cZ}b`_OqX81v6(x;L}6Dh%gm?H@X;z(oQWPcEqI)kiycGL6aV#**!T zx~P+fIuTl~-VDIq>huOgs$;hLWnf%U7k5kO*#JngqYEPC@sRpiU|m$78Y!V3^+*8h zx=%7?%)(P&sI8F@S{sJv)hVMyD2*AVm|EGCP;&3jVYGS_$rNK_U>{CiYC`C>Fi50& z+PJ?-+~nT(MjYK!=U4ZCAj4@z%=>_$jD8Jp4%h?qX7tm5uYfZptg_qy_Q&3DH1W{k z@X#xnubZe|F4gJxGi$b#^k>xvGiz3b{_`dt>IeSKRn@5MJ*DTK%$lk`7bgQT&uQYJ zTTu+tS?6Nl19eb6s7|fPq#xA3)HOA6^mKUWQWHY|sDG=EwF%fhbzFy<)2>|1EQ(}x z|J;#X1s(<_x8Xe)$66;tfm0_1_O+@$N9cE895Ay6?8%z!s>(!QdX26><_k>-osRjX zjIJ+Qjzgu^A}5K+LEw8}Mn=CR<{vwLmiktl?}<#xKB68i70wqj@v%@n8EZ~Oyj3xN zQ~yghe-lFE)n5Ye?aYR=)Sp71s_ob6N9u>_es!o+gXU)J*M&Z1V(x^75lUl27@e+Z z#-30=i4swj+v=y0{#CoF(c~q0FL$}twXhQ+R^~_Rx~Yc$+=z!F0saWPvzfJNubsf! zh{0tkQ%BOmrdTMt#ciW-%kL<4jq{54O^>V?$*p$-XuCS83nGuJI|Jip^yqX;i1_un z5r8R}->JDUbJaTaQ|H1qT_ww^>$)M7#)8O-LXN9j)unMS^~P1vufD2&T*|~Ght%hC z*xeE;zBpyynMzjOiM#Js>39n{742}V4!0`Z{7R1pUXSrSFbkLj+ykyhYjG0zCVr>y jwgc;!Wn(fXBN5<#LAMD4WBeV!00000NkvXXu0mjf=XSg_ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_travel.png b/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_travel.png deleted file mode 100644 index f12cf285e07e66f27d0c565b5bfbdaa7d813e4a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmV+>0@?kEP)5@{Jvn65!cGwtY!tMz%0G~Rh$x5%9-@e;H4s5rlR!)xn-l>nv9J>C1raMn zPsBzo4*Y@jG?#``E3h{lL-I?D!yz}v!UCVln7Z5bCf;l7$R2RdP zvJPDEgD-r2lJk7xCn;cw5;LeDNYG-`bZ`m`m?ULv1EWQ!KLYGh5iA%44yh~(if{l7 z1$CDb2V$YNWEj|^{Aouef^i^jD7dhueP9exP(M8!am5Xa-q6RS54hoqBYN_U=eZLS zLxjp&KA^Ir&hwys?YKFiGOdk>=RxgkDJ06_Z%B|sQl(|4s7>1S8Glx|%Wi$hi3x-h zZj)S7FsWlo*Z}qBxxQ50z^V?4a>gwU-g6hTbQ$+6r=S(dF_CvJYY6K%Gl(`mVjFUr=3vk@&iw@<8`YW0`7t1N?k^82aJbe%5fVt= zB9w3!T;y;0&A%FD%kT0RFyR^H9WDv&Kw1{|gY!M}PMB6kzR%qfnXn&!hUPf&I(G|f o=)cHQ#69gXHl?rs0{=bk0EVW~-$o+voB#j-07*qoM6N<$g4X2i5C8xG diff --git a/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_trending.png b/TMessagesProj/src/main/res/drawable-hdpi/smiles_panel_trending.png deleted file mode 100644 index 059fe9f6fbce3184a8326555c439314f9ed6ae9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 809 zcmV+^1J?YBP)4s? znR8CtQWWcTdB>0DB8oFc>~Mp|GThhbuSL@5u<3|k%2!@;hZQxj&treJM8f+ZXUy9k zwDvN^--h2@S((_08N0RB_ZpJ^u%NRtF@~p>C5d6YTsfU_!Me*VZ7GTR@kJ$Q!n~W8 zq|BComA{B%G&q3=%7M?|P%OU5pu1ynlN5L@Hn*?J=5Fzi zKMSgnbOIS2F+{fsCtV+#*<^cVX^noyT~X8=+4J=h%*wcKG`UJcx#B|zKER%0^dWex z#*OtjU|dGVxC44hlaJz?NaYDDJzHH@IvtB_l#`2o9g9iRwX)LIN5@`O<1AgKaoV6x zty*;&bQ;sT7D30cHG~kX&{UPCLmI<2mdtK6jCAp7yn&%&`WoG(zSC%I(en~|^%fBJ zV=Q_M_v43RYA=rH)n=_by(p<069pq_mXp&QMe9u9;mAv-%xRBO_c#OQ%;J=U5e&q% zo|9X=O9MDq2)@JRu*K(e3!XO5Y1*MClTunM$I3-`i57C#LEyEd(QYu7(&7 z)qU9^coK&z41J@1SKC_W^M??E>zsEnukR3Su-!gC`5RA1oqbV|ePx3DzT|ejg-b@g z>xi?FDJOkybKMpx?lk0LL~zzogYGL7P{p(z_Bd5$+8Eibb{Wu9x^qPv$yRM6%lM)t nY%?k)BO_(hwq^ar`H#oH5AZ$`B0C;&00000NkvXXu0mjf#%F|P diff --git a/TMessagesProj/src/main/res/drawable-hdpi/stats_zoom.png b/TMessagesProj/src/main/res/drawable-hdpi/stats_zoom.png deleted file mode 100644 index e0019bd1dbdfb6903bb336cf1348b6a70cf2ad9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/themes_addcolor.png b/TMessagesProj/src/main/res/drawable-hdpi/themes_addcolor.png deleted file mode 100644 index 7ec146e297a060712f9c0140cb7ac6d370e8273c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxdhF@q7!twx zHr$cxkbywX74wR3ocC(GF4%Y29dX~{|8b4~2W27k3kTvJExXI2G`CgN`;t%F%@VKO zeU7Xv9Aa7Lh~BH-&w8x#kmTHAdF^GH_8fO77_L(@$hjB6xZ%HsL5l9O&!>f2o@74L z4wyATW%~*>MPD5WIw*1Q2FM7<* zb;nNcz21gL|8(3@_TK)+G%0D65G6jCH9hOSVqoS{tXhUUR|P={uYczDPP@ vb?&UxWclkcA~TYr_dD)9@>51MVl7iVPwLd)%3s35LEiRs^>bP0l+XkKLXm*H diff --git a/TMessagesProj/src/main/res/drawable-hdpi/themes_deletecolor.png b/TMessagesProj/src/main/res/drawable-hdpi/themes_deletecolor.png deleted file mode 100644 index 99e41157b469d8997d6927f8d9e93bfcd755de69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`nXRXbV@L$& z+bJ8n4mk+4skZw*=&ELLWZAg$oVf+}ZszzCm)JLa5UpW9dhc5Lg>yki-A>eMOLB1E z%z2cio5xmnEGI49E?xch%N3dITbOS#zIE8lmlAo+Ili<^_`a+0mGzs~8%=9T{^DS6 zvi6PxL!ss^#boy>Ki+)qQoMO2utKci6726M3EU06g#P}@z+C4+gmbaQwHg=y`yNAZz*G5 zjd_3tYmQ36&i_aF*KGYJ&A?o4a?#!K1@MU7V7GB`goaj!*i;et~MPv*O~u4?M! zW4$2OX=$I^^ycwz!3PTSnC?3@l^^nO|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CzF=i(^Ox z=i3?ky_g*Zj@d45<>U;!5EQcJND%i?rQQw&rvoC25gc}n9`l@Pn5?;3j~;S+!<2NO ze(ut#YZqv+b*mh^e}b3g@x7V1pR6lJI{n_tL)z#al&zo1zUCAcZ+r}(*FyzFQ z{g)M&FdVTvcG6v%FgQ-$*SMCkw&ZP7k9Ek=^_G3buj0197cgd<=eYdM zTqk8U)%u&MmsR*@ak0GcpJ1GI>T|47U9Zn?vl*tMA79F+)yN&Wv!nQr(dlai>kk+I znZdJyVXIJYMFrQa847U>Mf+F8UYPKd>%PJ~=KNJG@oXnQOg+HyQKf=4E8HY#VuxVR ziSAV__1u>xb{4YwDm)UBX=*2%hdRHw=yh!6Rgn3TzO~p$!vw>_?s~Ye-yPw z96NVl((Jh7(+^IrzPoO>Vq*LBthINKysuz6`(jJUh4nu=KU(qIPKx=cec{*-?v3B; zJ|0t@?2?uyTF&$9sg!o3u0YBy`G|G=MQ?cmBNf<7Of7euUZ`v3?7(+odC#nxM=v-H zq!Kw!H1Erl;LiPuOw=^0caPyaG%soX`q^ zt|aE=Orv{%L^(f-TtJZXAbdVp&u{nL)1c>m_-Ehy^&6(AV}UN6mtdreFb1}IE0Umv+v+LJpADkSNWTNy1t+2-`=si76^@wl&=w_ z0431uETX1X-*a|W2%KjS2r(!Ip+(<&&_O~MqaccaGsOiu?-(J9SyBS*Z%_d*H{~`; zd|w#Myz(Po{ro#$ar)^q0ObE4yd~hMI`ea1`nrFcT-Mydx#s2sT3z(hMg>Fwh5_f8 zL5>WnVH@C?O^Z5kjgCE$*+HGA|)C#~GRVavUI)4MxVH|Xq83L(a%7D}Ko zCuNI_K#X?JF&mW5VmXGY+I#)RVHm_LVdHqLrBVRH5K>>&T3Un3+_fagydy+=tZ)g= z?qF#M(qaXFG#Jdh@OxkV!ShZ&`7!4$R;x#g5wz*kPP^pVE3JP3d4E6ecujFh#XU(( zK-n!OG)(3eq1oL zWr&Fr=Ukdi1x>FhR&SgnM8Sal9Yhi&L~ulC3zQkuD0R$+x0#2fuOCt~(&t}!Mik(Jq28CG*(d5biBn#&lB{>)j zLvpvy2pm^fgVZJ9OqM}N<1{|G^B5BJ(B!6rs$F|BpAS|*X$}X!}$~WF)?bP~jIp^+IU`y^zLA7~NAcTnYG_88u1_;!Y>%B7& zRMg<>H7@m2MbkL5IHbU^jRuG7#BD_AUf1_39VhEJ)3#{5L$BeIts3~A7{y9Ckb$X0 z$@ONxO?DjEloFLA4HHEt0o-q2i1Do#z4CSU7_C`ZKP-zCI?b`WP(7=zMHMr{VAj*hEwrE8nL)C6&M}6=U{+Nmjaj>H z>L$4PTB!qDOxC=_uo6p{05DT*hwXEJ`J?ade(Yl(d(J{~v%HY3+OuBr^6Or4)6Q=; zzIQ*6y5d4=*kV*u2y=!_E6p%L3!v1UBp*cP)&zvcxfIyPfF>7aNe^|;-()hVf>|>u zuF>j!l*dooTx92{0>?=*s^F}LE})U3T7xupfsLyEHnx&;P49kJ-n{FZ&wa_OuM5B} z6a(WH0Brm}cfNCP_oE;GloiWYJ|l{(;H16o>X?$OSZejO^jrxk+lyKiRZW4l4nUP# zPOv5mM}UFHO!L7sMp%@{cLu#;*s66e+gtsf2j}cJ#%RxaspQffwrlCi)OHeE12uT- z?3|boMUos!mVv9t^2ueBx4zB|ZajJZ%4MJU=~ut17f+X3S+yshdg=*RoZ9emX7_Jd zZ{~LR0OgJlqh);PSRx{GsRo{RZgzmL1%?EI3ec*8RCD3?fNt{;e(FZEE@Q3*wjmk} z4xHXGOGofr%bDe)e5G^yz7V3toy?rx?1&#kQj8ll#gIrIfuNuM*-w6c$0t1Ufj{fU zcE>w#ln?*h7r*K{%T}&<5rHm=lDyR}LQ^sjbN$RSoAR`>07YqS5Qqr+jYs#RL{fYs zP#ebpVCpQl&b=IT=;{$IYF5sD=n5ET80UF{C>dQn0JyTg}kbz^PhH zS?|O!po8Je8K*sI_v60xt#2K3=;&C-Yqz+?EhcYp%iF!!J9i7MltbOl<{lC@>>1E` z2(GM&B$JZBB2Ive-z>`n6Po0^?RaWrm=x!J#Env3HQ5C9^tv=6M zw`g%*D*aF;S1nnH?Hk_t`q$j`4R3hE-twb>;|I75+x_l$zt#WzKUaUfcmAr{DR*>W zvler`&2!T3{NcME_9rFRYgnZKT&tm(Qb8Cg#VSqo3`W(ewUJ=R91l+Tv1bO>p*7F$`moGor!7w)vyA$zv@UQBi#US$6|-VAB#-% z#M4jTIJI{3JBVrH|M>y|+AX_RkdYpaG@X=AXIUbHEU3Z-H3d6P%4A_Qo=llgfvXD3 zwsXM>Dw9yxx*?xC;HjefnFabmhTM?@mH-;P8cr z|8DEn%^#UQ@$?%^Klb521Q3fvi>3}&!?thZeftSh8$Jl4srrM*O$1Hh_Kwc81UkM* zMcLZ5I_XcQDyx1JT??9^{YL?LYImZXRz6yXr zxnLc>{oZ%JX@J+g%Dw8IAI~d^hx4kL0ZP{eNef|qy#2KfZ zhVw3*F`#G!SkpIfL&UU2F5b<2|3nn_vF{>}?gapWp;q zflWgmLo<9KpOLP0TpiZnatB)9O(Q_${+F1u0Fv9-*Zr?a((s~p9b+73It)3?RDsLP z%vAiCnHdi=Gc$xaabk|Imtkl}(B03`^xM)_u$)`>R?;P@R^FZI`Sknx4?P?@xR=>o zGv$1L{L4S&&WBHiC_Bd5l)M<0=R!vq9hLL>{~J+d6piN*`43<5Q-5*Wci#U`el!-{ z_+9=@CVo|;F*|j7W$pj4w31*n$^0J7dHay94rmQqL$c)sMyF3=hdrc}AT+{3mX26m z+uY81^?E%{o;pdlKg1(SqUoeo60MBFbcE95C$h+Mz~UT4ag2!~lr$hE#%QuMCCjq% zd|a0WYcsMer${qujT#pmIG=+D_R(rK5#H17^*Da?7>AEM%AnsvF%~8sT%Ix*_P1Z_ z%37C`Cl?v!uCl5Kg7Y?r)&`MPM2H2S1KG2**ZCk|OVsHQ@83@}zZ>E@!aIuY2HE2$ z8J+q|T#qP^!Mn=PD>h%6;v zULZYuFWv8bi_wvX7}Hxru2E8hAWW1B8CZoVZ&3&_wp9Q^(YmzEEXVsCFFZLOmls&? z5P(*itSG=cd{RdUK+4dPCb{(TOL@a6 z##sT;fDM@VR0c@3?Xy_&{V zS7GMn5mAEho}%9)J#n1=Z9ic1yWb{VSpp%zd4x0wBp^UStucX)YNh*F<%#14NwbZP z45LBs?C4`%ij)?qJt&Ft1r#};4mA&6`yaUNb3X^9&!_IHpYOV@HgV|Jyt6mQXNfj_ z(@)cQ#p{u~=EH~Uk%YS4{zD{}T}^!9m8^f_-E{A|0~zvLffxXYvJkCHvVjCC%Sp>IP{yp!Mp$0|K{$y?=A%nK{!v-bO{!aAXLzhugsPN+%~ng z?{lL-K3TC|A8ZjOUiu1Vf8uATU40$0*(7wYY?sxNi!PyY&9x*453&4__p){ROxX4n z#2!Eyw`)YLI(Uz+E8?V%x1Ma6maZVQL750;Btl5M5ab(+WLsTyt&MR0=KZh!iEo|! z#s~jP1|O0UifmRYc*W|Uom{- zVMIwJUlCkMw~~5ZN(5t~$dVAAAklJ?v^F3lS^{3+fJp1my5ma<;24Wdj9aiTI{yH_ z{)<1)(!v?u_rVYI$YYO{ViMc?3@o?bc?WmiaR)#Dvp>zR{>HEKFaPDg;>ghx*wj@- zRtbT;s|YWM&Z}zOGzhRNQUj83Zw^>+;U+vdOY6Gpnft|GC%O6>0DMvGoYT;%uIJBV z>ZV%}c+UKv|3?zR7X&7`OPHDb^Q+>YWkVap%Eu7ps??WYzTqVl~P9v>pqvgRrkMux765DYjU z8ZfotCx84FY?1Ll|L=P_cI+5lxUg#qZ220&S;xKi-p7CV5C5LO_jmsu@4D$G{>y*+ zpL910L}Ye;?O?dtDJ~DVYO_pO(@_y;g>v|CDZv-u3QT8$*;{{-_{yuExwXkNw!M0T z$#>jD|AG5i|N58N`ENXfm32nztE52IUB&tW2N6+ii%ZKywFK`R)>&{KA#4y4=ty(qv7@~2J@4Vyf9H4j z_{Tm@Z(|jKd~UTcEQlZ|1b9`U&dwkMWEd{kY)P$wN;t`ETPrwSDIk9lY@Aio~VZ zrX$Hu&qmxhsi{c;)*`27s9kaeLRCKqN}8cHDvCcAx>IYTM#8NtxgA_1UhN{?L#-bW7oMjq&}BwLKIK^ZHJu|-lAvb z5VZz)05B4AS0URIV%rsQc~kR=<&4KO7dnF^dVWvX?zdB}p*ges8B&z=DuanYI+TL2 zCD7r64LhuKBqpKWY*K5q&_R?~+UU>D8#W5hdlxf~3>-o*9#Vpq;HhX}9HB=^ji}YehOLWHQb$A)GEeb%a+@Kf z$E7*aXk3<;qKxaE^7UwwP@70f+NDGD3s>Cy`|p0>WB>NMfcvYqQ~{`&nVDFb_P+?Y zL8%D(14LoB?c`uh@{98^ubqnc`P~thHWeRT&Uc7S5b|jo>)TOMB}^@aD5a=~O_awm z@Wx_8fJBV%3*E8h&%9&U+how+L?}rTo6>eYo|TO?W@l!p*J`NBMq(cx((<*~@Zkkr zBuUJ~M2GdwE)G=+SUi^|P%ndsBoGLO*tS%J0Tdv^QGqZZA|S$bd*D1y2qGzX)uiSp z=L~OnVqWJB>$&IMXEKfkv4wIWezb+__3>22>`9s(+Pn6YHmQt35|Zjt;%rJWSSIgp zkPnC83gTLe_T&r`b9`!6j_dU1$mk=8VpG3k>=y%@MFhL@upYZ$o%d( zdj0-(nX6197Z&T?m@XKER^&y-m6u&cquJ#6@l)g>Keer?P@)S$3Zh{rwU8jIRfurE z@F9A270(M53Os{Hj?vCCR4w7?(D8}of}fbvT-($+iB+u7Bwb(sjx*Os2t ziZ4BkhC^&Nz}petD~c?|7ilTD;l?sbnQ|_49G8|`>rB&`o<=Lh=E@3bZw=+A>1__m zNZzHzwX-kznVVKV^KU-%TmuOG+(}4mqWM3D94PQ2L*U5P)=BTWoyNWcpfraEj{kKg z<89NL+xw31?GRfy8bfx^-HaZ6DA?)F_DaV%veZ%_1N9)>CV+8wDjq?j(V|vwkko5P zA(6tD<*Y$}NS37xx|f z@Dn$`iw6%s%864a%kt6AoSPmKN%^q&m({1LIw~_+vZef6V1oz=$8c>l-FqHk`q*jW zD=r{+o-eIs7y$=rf=@2zoZKlk5CUNfHox^P^35Ki5}0@o`EZl1wFPXEB9+7oUDlnG zT8v2|@B#`;k+0(mOK<5o>2MQ9o28HkgCPh>I!wt1eTqCA=Q^eQW8jlO0odnDI1z@K zz2w*5D80G{Kg8KBga@=o6rRC1zDa!XrRXcKK>?2pEsMFQmpd!~JD)#r^i7;fC*+3O76&{a7fmG$1ZDMkknb{e3?>>)VzsvFCCrHx~3ulG0wz)=Z z5|EOweD8<+*jwJf;>rr2|I*j!_InsVu1qLlAbdA)qn2>XJKoO4mtM}l{m=i6;b03D zX{bhjG6G!(3kXqtBB<2rb_x!GP%++S;A~~hT`BrU5$Qsg)z5x|xm`2p*$E2g`Qlnm zB%oLLCyPx>20y%=^>2I^mkN|hc35h6=>&t-Q#dK`Sr$@)LripF9I@9Y*jisiN`q7| z+*~FbbQ!KL(3qG;nwV@jpqCD@=@#j50C=P_*UVr3sy8k?_|4Be7s~19NVljl_u@aX z8;@g)4Um0&p};D1q{ts%r2C1F(~%l=>17CQSTEepjY^?5>Xy#X{me%h{^&d4To8?* z;!_YrCOk+LHu_4+W4T>UYn*dsTEpgPNirz~je4uJg+{Z*s954 zQCY5t7*qqO5>7l5;es%ANRtpM3{MuFH`ET0VC^otl5N;kQZ#- zaX$<1{t#QImq8?z93Ti_Yjc&};%U%kycMd@4o$SP848QYD`rrLJ_6cH04ay=#HHrgY z9t7e4apG5pAVQ9*h8?ftq_rSCuCS#IFRv_-kG7bcn4mK;#bADpsl_RrD-a^W7|HkV zxQ8=m7PGS+f=31q$=x`rM^A4i_K(3gFI(aMiq3 za9O^ynxYbrO+r{(u~qrh5v;FXi%{;8mGb}yEI1EpTwGuI+C2=9EKs{>5Ap69MBS7R zaj~(<==dpy4?MzXX%T!3%7D*7$%_38>Jz(|*nbFVA{y-(qI#Qrw22miEX`OvdAdvp zn_82k(;#Y26SvyX@z~K8iOx|z<=|Wc)z{=*!)8CF@RaEm8S6heE4Xh~8#T{GaC-N? zU%0mD^usmiN!xT~bg+LUEtdR0qDk{S7lSGvnhhGtcYLpD;Z0KFrLFmk%`;Q)UKBa(A;? z?V(k%vQA&BT3Rk;L?~#7(cWe{x{Wg>Zq_(A!doJ^8eflzX^mPSB?TAud|U3&w8Q#s z0gsyEorh)wDdWYxER6b~B?;j0uf$BF8~}F&dd0FGEFQ0xNaX5wVTUrvRdJ>s0BOUq&zL1*J6JyhXdvvv z5-bj&?FVZKhlIr#yF{Z~G;fJ*OJ~sf1~nyZw@l_!rt>q}F4Asy#P&J;YDKqMVzI@0 z$aanQ?zgNjdq!Sx2+k7PZ_ujw)N1}l;QwA31@;55aBeocJsO{W{+CVWcZvnj)q-xd z!{Wa3UX7->RHHURas*n84sjb$DJi)4eYwHde_#Yhz@a1ng8C~>!On+bqQ_Om(eWwk z<&xcY11P>4;gC|uJv+TYOf63y-J_mP7>%YZHyiZH69i+mTr(cmm`SlxqtTe)16e4? zuYdjxRJCxj?WX`+G}wjV5Mtkvv+muwN!b{f3OW2Zz)he!WjHCwEA=7)={LwSFXVWPm*jqp#usQ5s2!3$ zDtWIo)fSK8#LC~D6Eqnj2bUv&9~wJCT{AmA8Pac82>G^c_iTVO*2{INxs4`MR5Q!f zg062tjn#6&$>}MhdW`zabUI;rddze>E}8DN(=$#_j`{H8Pq?_az*U}nV)SK;0orb@CaRY60T`NHAEb1U3L|NJh$P3CM?iRUm>(<+!XQ$QfK5 zELs9T+@5=I3ht1l{_uC-;_aI=)DkJ@0 zp^IGiZcLS&l<9O{xX`+;n9YxQ@%$W5mFsl8-BuKb(M;l`ZJAF z3<_Y7Gh_ozhcykBDrZP(*dI0Gc!C&! z?4?IeO46lbs40CLS#Ngq3Hs#7&aqr~Y+_)!UUPB2AdB$qQ=Q#riPN6>9Hg86THv1o z-47&&3n#bVIWfsU$83Y9hITckt;Wnwr<|O=!M*QzA0a~@p*NHrl@E-X8Esx8%`v78 zIj@Pyh$(|)9EO!QWjF)`1_9(Dtg(Z%v8fw;2<1(kKkwLW*7)FPcUwdpP1TSzl_KwU zy#c^5#Cz83EiYa?C&yH*T22|&NYuUcaN-K6+ue@EdP%?AvE6OJ6cFrXT?Q=aHwXGR zj^OP85}>>5gC+H%iVN3l0#00Se?FSHc zpb=aHxdWfC6rd|FG@(Ke6b42n(X~AWxZrTAn4`qNO;u6NJ-i$yB*fDZAZ)i4Z9GA| zW4XS`u1j>?nz-5W*4gamJpFM$?&Mql+kb0;{JjJ2;7+}pf6Fg7-Hc-lgivF7%ywOa zjJbL1j5}|=LA$zS^I}O?++2@UxxBGHDP93&Xy@}dSEC6`BOrJK5rdL|T#;Z5qDUp@ z%(h*V`kp5b?-xtfOeRdHvyxGcCu35s_iA6~$WigNXVi>JhFSTV-F91C?Pj?oWkpjW z=7?!7`({dv3C+4sa4^Vw&@)W9w45-7-1lfs2h81?!n-3F6dHTL0scxI?y#Bw1`6n~ zW*{r5K*|se`oX&Oalha8&Ns4LDQAK@bnqYjf}c@?L-&vyN|^PJj9D_;3I1FCA2+ z*!O1PJWyFx{o>3H%|gx<}+x`E;%K z+BFfffv92_uDp>7&tc5{P?IZQ%Q+S|X*naqZGw=^=wnai>jJteG>k`6syY;)HIqq+ zFK6Q^*REZsZMQsm{D@Ig6V*6>_LSx2IXUeCX4%NG$Akj*&1zLZo^mGTgpff$<2qQk zD@YZ1fv~q4!852^zyS=JJuwEn$q*L`Sp_Y}9#K&BSO$8K-XI#*DYOb*54(u$TC4zY z0N<{I&8ORD56rfOeg~;P2tJ|I*t*SzwoRq@?MA+M3NH?-3O7^%#GvmLLtqF=i)Jx^ zM^L8-_1++)G|V3Ei(4ie*^C?WlV1${bsz%zeYsROnOvWs`eV?RB#=@dc8=@}E6uG0tC{bH2FX=Jjhl_~aA1z9T2)#rf0HaFe^f&_V9-CF1KAKaETS)ZS6o zj;3))%m4%o5r|RA>x}jZMiq<#Jpw@LmALLvTe~E zu`sytQ9_!CxxTD~h;0We=rRCiMn+Kaj7Iy{>4&TC7@>e()v&Ap1Tjn$GeM&w4lpB{ z?a!5mNI}7@$C(29vPJP^Uj3NYUw?ga@7}%k`*Nuc@LYTAN2|rDS_dYiv?BS6w%Z5& zyB6d!F`FFWTti)ZK7Z#n8s|KF{0x{A+Ywop;70VhLailPM+y!sqhti|76?^!HED>E zn2o;M6(CivE{YKE9Wh42XjEdm@n~EuP#ZhOazry8qYex!QgWAJGM*8A2Wq647}pct z`TyQ2g=0%XJ!(n}_pRUgfAMw0d_Lo$zt5X@zsQXnxB2js4~X%9a{25DX|X`{;8Md! z9})idCzv^^Xh`tbq^6G$#K7(2pS;PmFCuBJaMDoC8Hyxow90e|i+y2r=vokk_>;g4L9pyF1w%*)AmRu(AIX`08L05I zLKOs@kquNcfkE9e0Iu)BJ5N=C2~^_2RmE_~euBaD5C5*;@S}gW)bi#>C)}y-6cEhDGoGKn;NGJLJbw6y_da^BSj6|f`dz&DweRMQ zx1TZjF+Z8>*KcwC<}J>jJf`0)imNpYfb^~Jk^c67r%l4TGt2^hI)-|LWyRreE`xT( zN@=dKNrS5@=wfk=IYyj!rTFTb3hN`5GExJ$q8lVfM8H=8%?a(6d}=c+%5zvT#-PJ z#}n!>Vm6y$V(c~>dE@eE0$9=jY`dD=v8a=piZhEG`yh)Wd6^d!5(cyvxH+KIZwy89TH=l3(=X zN0FEX#8G~vyNIhjIRW0`Jo|z%hHDzAYRo*w7S}|A>+vTeI5*tc5pK7|R!iJ$ia5|s zBCR?wXwIf&gZ|kXvP0u=LA!d&_;YU*W?=VtQH%i+4@G7G&3k=e6398xZ4Kv? zAb=@O5|%pp*wMBb$y;`D$z*nnjOQpdIYFCY-GW(0oKaPVWg)W{cWADDA`reW3+G2C zCo}K-4=V(^B``1yGe=e_g;uK+kzBSEx6H<;G=73qVdBa+`4LA)OX_-taLRUf z0j>kzk?H8uu2{aVb&N;V6{^ty#1VooO&w=vH%bBcfC<%jgo%|}-DbBgBOR_?JEaPqw(WTE@FCxL?;AXN^bpkyX6$yG0_0{i#reRq zr%!n6?Yo5}BV2H(GEZ&ST<; zmOzb^5>=>w*gNmMGyCdSzq$buV4nrJ(9GZbF%BIKImsUN2xubbEn*(Q=p}(9G_-^o zyw7ZQHBTNthi-zjiL>iR+_*7gx9-SsM!UPfq$S1$y+PMU*0Q6i4kAo5MPtT1`v%?Z zh6^(;&!4e6J}p$#`Sa(**hA6Bg#w6CGoptgB?84e0hPj)jwdy5-+hbAA z6s4>n5ma7gsf2)K55Yq}rAxUN{SNxox^JD((SHJpCf&NtsC&T7_J^OLuF>4T4PzQ&-8>>7>79JF6nz*xkY2AY&8 zJGR>`Z@m7c5_@6r?8(zY*=$zJVkKtN86v{5J7#t~$4OwdSTbswQexTl9bSwa6Jm1c z@B&C{h)+Rl2n}en-xs&vOhG(!0;;eT2o(U>KwIUAZl1zsMZUL&)InYlFB@X6AoidM zN=!Qft+1UyN?;DGN7pOzYhNPCL-P4Q#kv=JYa2TN5U8rabUH$+8W4H~S40hd&oHFC zFVi46QB*0Gs!xgF!1q?})1^dCO4s!z;Yodqk?4037ivc1QSnN(1n%6q_TvU&rVN{f zSL3%jgfGdfbRhatiCcapfJi3CQs|>o#nBQp5+veRE#c^dJ~k{D3u@=^^qfpV$1c(92t4mo9BG{d;guU z-T%M*kFWd>o}ND?=S(DFW>-vY$~p{F5e#8Gn!sejcC{kK9@NmRg;z~kan6^nd(DY# z`=T*woSmIfg{rvP7tdZ$RU@w7x;2zs1J;6dfWmkGXWZ;hyD%tI)%>&kstBY0V_fa46n^s{}VBGtO1ytZ0VaCY7!4j2ts&O3nkXJW!6t zFs;Bfgr>qZf*)nZ^GN}lXd-tlIreWJEF1#Z6~NuS`{g_HrkZ3NYC;B}6!V6l*AqgizNbM$;M7>9i2}>+J^99?iM@iY;YQ&V?12U7IsMKH=fR zNAxigcP+l%p@89-pPrRiFvXr2V>w6ON6G+rk(bTU*&?xgh>=5k!WL`+Spa{vuOYj` z->&pHa_CD{1&o7xWWVZeIL8?B253P5GU7&w-$|dm&j#8sL`i={n7!ORm36qx$ffd0SIsqZM|{xwJ)C?Pxmz}1yunF9Mm*QuNh>ZI`V>b z_Yo;ylEjm^fatl%b9Q`=#zUJ{JYL@CX?%iRbBw|m1Zrt8(<10p^lGwP$)02N0ae9h zh#v<9ZcedelA#_k0ovBRRG@z+gM`4KC?fsI&I?`x?IG~}FNW=+S z+43MiA?{Ks#^zx7vzlavstrX;#VnILBO$MRMuO!`7b6UhF#{wOB7U{JKxEGcR?U9a zMV}%#DH16&FlQXk=X~_xCz$g%$IzMI(utuVmvfmjj^@Xx!i_txvAkTA4>$K+q0W3A za8*-=<49IUvl$0gqzAU35qPDq!2k?!hZPStfDs2&2g~Qi;6^|gEZ1;<$)Nqqc+GN# zyea#TuGTI!ACAp99I)q3#Y46CP5}xqeC2U&7%5Q!si$vy+O4uWU$MDZv0JvJv^O}F z^K|M_191V(L#$dE&JvOgazb*4v&>0jUp&-}$XAkvhvyIOuD6%_57~wCVlFo;mb(QV zkx(|kPh-6OCaV62N?#zS9_|9c#vkJ zh^65%nLOy(qFMov*b#;dSJ882%+~EYw>dgK!B>x{M!k75sm){|paejV5aIU!Cra7=8!5gDdAmjGf_~qCR6j!)zadjq35; z!wZFjg#-7~e(uk^b~K;7ykxidVYIx{A^!Ea%Hbp+K_Dp33(kR&QL~qq@U{#&vzM2f zFZ)hq0Gk5)HFb#}`@?^1`62;+@DF~M-}PI6^S&%0f|YaSa$iFaNd*qX_If)hSyYL~ zocBcpdgt}eQPnj+;+-$yf*YEqGbzVXuj~7+h&FedZ2@iHwd9;ovm$l6e)~4JUwfUt z>x#6g-)&3Q{N*pcHK<$QXa3Be!O6)NgwIE)B0+xJrZzxLh&JdPvV`~Fq;%t$jD%OaC3v*W~094BiCFJ!ZjFH6ZX zGxP5E(q*P)x|=LB1so<*95yqPWXodK@N`$beICs?{mf__UrAQ(`qf`gJq?nk&z$q` zbLyPxt`g6PG5Hl*WX=%;uY29=dDW|KJj)`SY8Zi4iN7;|TX1f4ki<&#AgHci0+=&; zH9A-F(qN3V()LxD+%oJMfy!s^me){V75zg_uZpVfo~VEE-+Yc92CBWz^=fZAgcXbp zCNKdRTHNYIfm?xIAQ|w7d=C{`YsLx_n1FCfHUNboRe2aw!cAZT!YMz;{DoiXn?yWD zGFF(t1cXz5js^T=JWqt1zy#qGIav4?=aIp&F~kHWkmHofH7x(wiz^k(F~kHWAe{1Z z%)$r9aS}{m0;5MsPFeV%wN7x(Fic_h$CUJN+J#sL^qwBtreokbU|Uc= z8RlLKkxD@EQX?IAiT61q2IO%h8OAYSDFQ)7C~Om{vWZs7^KFWk5+OtK$RNx%hUJUs#x)u_o+P|;ej?BNOL zG{ZFvrJFxC+Ui-S&z5(mKw&p)z>+c{vh?d1-H$8)M>@Z|9j5lJv zSx)YWvHyu)cCYDS_v2n$Gqk_w@osiK+U=d|_V#-@@Ki4?2jisTF5?Xoi=+4KLqGf& z?p^ny|8$SHy$5~gYOl%uYFs(@C-3;a2hh(vkLl=y@ve_L8FcFr++C02JpEgoCx4B* z@mJpduW>ed`*O}ZcAxyExBolbosVMLjtXan3#n$fx3+|Eaq<}Kgrghaz*=b8Idtr# zK`CkZ0XbN9E0jga?$|;4oKN$ zfhw5Kd9XW6cXOJSBZ|r?A!aO$FzeC?)ic9bHs=?{pieYmw(UUg*^4>d0*S;BkyOF> zsxg>G1^W)5>T0kqz8JOQN~}v4LpaR&hUxD>AKU7+P3X2G5bt||@XEJzr_q@1COEYh zb!-cI`a-OWuEtuh0u>e8D{`DNg=?RNf!fojPv22rU;jD;JMMuez6m{zK*0)l0yhKo z%iyiwz_sc~-0^LkJ-abxXr;ii6;}~__00t4%mdp#Z{f3Pcbwzf`{_NM!F3GhR7NzQ zwINt$F=bwuMORlceNlyk-SgFR7O#f8{t3+fgAk7c7FffqDs6`8&R90q>;}{;uE)Ce z8dT+^^A=`x`!U>IYtToYg@Mlek^twRPy@=KCQZS<*pqYF>ri#GX=!VFZ05|Fp9H#r zqy?CKOD2;&WaYdAN^uK&eN1iG;iegDJgbsJz{@cfbOxx3JN9u>0r=PEu2g%0t=c>m|@ zd>CibotVxhdAYpD&oRG=bVtjfMp|!&*iKk*4a~oeVXf$9VgB{7=+!v#tk_deVA3h_ zP_~Vc_XM^)NBV))xE*a^3}Xc$M$@hs2cPL9-s_+&#YmuXdg?iqX77d`3C(DiF@-*K z827#h;n;Bj+94(0(8fnJf6N~S#@7T^03&NjJh}$`?DLRHjd2)l$K8C-kY~%L3nE&f zT!xac?4kbOzKyus@2BJVu|_}_mPNF*#=U<$PV*0-^~X?d!}52-q-lWhyLgD!iFd=4 zRg>{NnR~jqC>AKo8hVpz)3Y8SH((NR#tL0cNe(~LPjb*LiY&&QTl2#TK+ow62cPaI z)|&ytn80*(djxqLbG#8W6wPO$%?o{Dt@GR5c~fj$OFYN`u17j^_y{--V*)3QyL&DA z@bg2?1dAeQ{X%~;5CX*+nTsG~H7@Sn^)x>J*zr8S{ACeo?)o(k9e?+dKIpy|s&9rl zuY^lpJCuoP=LK#qc|FX%n(UDy;>9qogF*omlg`PI-taiVB})k`z6@-8)S>j~rU3@J zGX7^}&p`TNN-0W0fpHCvtNk*gEND9vr+I#uMc2q<^NLYHYurs+(R=sj3{@b+q=@uk zFu{;aa+4#Y@s%Qy5DBA_NpLmzNhkBwt$&ihtOlsAW|SDpM)$3UY!Xnzeiv0S8EeKO zsF?}DFl1Ah?o*i7!QXcLVf10#n})OK*iIzXQg=6}Q5SOVOTEjBOLR^a@Z0OF>C1YZu$- zQ6~@DH8k&!la4!p@`q8dVE*z+%(^s+eHQPe5Mmk9G0pM5tUn@P2cWMtP1ngZ6*WQc zSdCoP0|zlJEuc*?aV<4e=9pTGJ!=;B#TWTWgWb`A6%7+yu^jinVN6#SXz;I=M=XK6 zZ5M&XmyC*Vrmr3Mu0xeg!hP=d zn86;X@8Mj)8A#An8R25wIJEy9DzArSx4@D0;AG&^H$W(YOf40D<87cJ zYr$aFr`y6fXAA^vqQM9eM(#MIP%9mLZ4|1Yl3*)^kR(`cy=dt#6i}2;woBabhW6tL z8ZNCEIpMTM?>{8otz=@LfIw9hRwP_h;!rXvPfZP?GouW{!d95WhcSaORHOn%Dr(C? z80@AL?8{ySwKH*^{tc#aH@LZ|U<_{C5lnv z8gRP%InhuDC}40Wbo~)#{ZCl+ey{>iGaHnJRaJvD!C=O)`iMhsI?uE`=gzDPh?6qB zti$G2v!UE(L>TPKl89wdluDiqz^I0UEerbEvq(WX6t)-%Ofm(hPrsm9RUFq1noQFv zWNx-V!%UQ~Z)*|>vd0?cioNg}oMT%t zO?$vN2nYOsqs8kjT!}q@CHm0Qkj#=tcOr8lM>t*BhszVr-Eo+0%NFEahXWnIgX){$ z;#Ywkf%S74+y9{}xuQN_uRWVp?H39Ps^$Bh_y>~4*1D_oJrDj=NmPrqfmHl$xz*|ibc zegP^zEZGFn5ZtmLNPUHc!e9ZauqlXTKr?b=k_I!vF-4=zIa5#y!mig0BSb0<=?rIu zF*t3VxPt>l2A7(q)6yoN@j^&7!xxps8)D3eL%+!;L8;O;HSJ==+l3+!2;qk$4&nt> zHtU}=B`OuFWwt7Qv(iVr zQ6Q%mbJrSW8}6l(=-qvwM$q^(TFOI0^}; zbHB`-?69|@0xwLclI@4~UqYsJSR-ZQ8j_mV&k3?%vIQ6fe&T6hQb=JbMvPFobxxxS z5)O}V8>F)_Nvy}=;M0BVdaRrFqe--5&K`%gArP{>W{=#K;W7x76&kW2q(VSu+zbzw zGz770s)dker@fH1A~JH)DGSOXlxDR7JAk$171%3o^|nH|VD5Yn`?6PKuY4=k#n*xr z!q1K7{^V958bdr+VpaPh&JC zp$&v90|d$~MhX>;LRBSL3X1scOBzl!9Mzkj2 zks(Mb<^XC~-Dn4-#x`wU7-fUeNQooIddMaX#+?18uBi`=ss=}SIo8aX=)<`pdmhFw zuSICyJZ#A@3zLRP6$BS8fJnIXoFZDI>ZX7Y&KkwdF?}Hf%OI1W2%=2mliwd*RN+uv z_RMgcHYEP>iDSEgtbYdc;RxpfnXay`ynEh8f7%F>KCCZr(n98in4W+jNu;JiZ$nQQ5>ef6SNB` zjMhWPp)fdE^pP!)P2|fVySn-lNgxBbr3mNm$EA1d*tUN9wbQSm0IqRZK4}G$LzTo% zxSZaY#LWx|*!oP8sV^(%%4K1$t#^6&go~rW08$Q_8c`@l4rRftB^5O9iIIr8_=~?r z8=7_w$|%H(k|mopbeu>P`3>V5YUY(u+farTP>cpb1{!8zjvPX114{YE`rM&$*4=wB z4fQyUr%=Iw?=hhc^rp?Yu|ZT{zmTrDkX~7dwR{bT)&{@NbYr-t~WEG9d;$OC8INIwnd$Pq} zUscB9S_@k-Do8@G?fxzrcMPC)VREM^oAlzHeUVch0x%loBs>acnYAFZFMKzr_)8`GWr~=7OMD>rn$?aT=D39XJ>a8Y~% z@_P8Piji#r0bB<)XEuS4eh{^A!Pq=a?K(Ky?#F%h50H$Fs?>6_FS&Nnzi;?5&Fbn4&_PD}A{&F{&;Janr0I z(U9Vm4MEBSj2Y@?mb2)F$?Sc+m%*M4N-2NXJxBP-W|%rR%%bZiQ!#lA1)W?;;PtP; z>FdMnJNUu_n5uwSSZAx*`9i*nno>vL=GUR-%^kZ(_odb*wY1(=+`VfdlO8eYo@(rU zD9;~2Qvi!%xIh+2Z~m99PwR}^4TgZSx!xn&?6TQ(KA)j?ZyGTarf7(do`YFBw^Hv= zB`?4PEzm~Ve{Fcq0NTNtK8?UFH=|aqfKZ4rMYINc#hbC0+z4eAzEFDZNISaw^AGHM zT6TRUkuzZ7>5NF3t2gN71>sc=5;c&wSj`Lq#c6+BGYZ`h=l^g zvnj?NfijD^S4LTSV>L4t4rP^EpBwRvHfYyS77j3bX_U)us$s@O;as9H_K=JiLFU^obmPBidd^k+-Eir1!~^#r8iu2`Dd2?=H|MaSsq?R)1OkDxOWhpF&MvB z4k^lO0!+Rr$h4JVYOgG#yvhc}d4&+C`(&C^2V!&_OEJ)yA)9tf_T?;F5sKJUO$#w& zQG|vi70APu%Hq7kw6tP&?!w)<7jx<)^v80wE`Wk*X)O!N%TP0>qLwVizVb@c#Zog1 za^8{XM>p<3AK8pNzGMcwz{!Hq#hu?=0a#6{E?%`I+gA#dJS)Y#O_D5IvKoa*{A0wFcdf~GOe&6uN&XpeNJy$fQ4 zkV=Cw5VRo@Mb%Yf)z3i9n}>vDa<2xC8;n6pC8q5Ny6qUIrx_A`m{bysgHkq>g;CKO zsBWM$Shc186>s|l&BS7j zAe{ou(15;#%&KZsZ8emY@scAkfQfZs;(d@wAhKfxpgfEUS0RPt@BHXzpZ(I8zO)|b z0tSFAV9vFh>VHAH2AJB>(ecwMQ>H9s0uv}eXJ_Z0sZ*zZ6zBkYfTTa1`eB_dFUqkr z3B>Qc_ugMH3??vv95>=Qu4Mh8^jrz&AIwhyiBEju6HoQ__8!8A2~0pZA>05GK*~Q@ zKN7Yb)*T?KCzvBC?6RVrVh4 z?00u}%V)^{$aXvy$>8M4lQ@op$Sv0w63X@4+S)jBIxnZ_R{loxIqpOh8Tahj zgUBVi6Mc#;MR(FfuUofnJ@lE+d}a+02U7k-VWfl;XdnY5y$i;__O-8lbzyVRv83i^sH=j3S=D&DtZ7r5%Aqo+BgkU0{7*Y%<$`V4#`NM|~ zi=1cvM#w40@^|MOvcR0kEBX=g$u;FB5j~0=a_-crQ;0l=4jmHtL~hxRx0e>8i~i*L za#M(0aubL>MP89d|K>Np`G#-;Nai@A0Y*bOQ|RSxzy0=|$BrF)NDM4@fe0i5$Xy^I zOq40>W{KAkLyLmX7vb`sE7udUiGsv1vM+LpfkaMeVl+{l7*%AlZ5ttg7*=E*kL3cq zWu*v(LL5AJ5HI6D6SjnGb#-;f??ji0L;^9c5Kqo2rTkrn^A2N-TwB%^lj}+oy`HhB zH?5l-KlIz*{&r`vcN@Kj^AG4JfSBjye&`viPZTH%oyj6%VlX+D7L7*F^i9quL?J>N z37tZA@fdPlF^m`~5C|Z|5~KNL6!~Noz}d5B%m0b7+H(S!K=rGvt)z)8$5%8z>wOqm*JiAbOPRimVbn-M5cy@1}?hjA~` zcN^vF!~W5SNk9!y=Y@hh^2J~YuYQH(GOuw7RdVfo=*)%MVF@JX^XrG^3YOA`5+(X& zAAc0c?3Yt(jcld8lrYAKEaIJ|$oom43+Mp`{mH^u63#!yIvJ?-hBB6a;~U?&{m*p; z8wnlxuseYlg%B?7h0;%c_q*TS4s-+kzA@7=C!F8QMe+mt_uqg2d*1lQH-3o=9us)r zfd{_*rZ>ImcfJAoL<#RU>ZHLBC!etb1D*hPds*ufT+o<+*jQ{04EQorhaAoq;rt0i z0vH7PJwg7%%d$>$L1F@8Td^_FpR;+wpD3J9!r^~IKX>7Q{rmTK{N3OE-9KopGh9%Z zfY?-QD>eoOd|}iD%!obQC_-xt==YL`UEWyh?OafpfY?-QoAYk5!caP1g!7L;By(3JsbXAQBT*wWu` z^Np99@%C_jxIh|+0RypEtoMc+ZumQI%xxbN__KuAPHZT)%z3w1&c-f&j5pzYOm}>t zwaVZ~hB!V7ifUhBnZbf#Y$*u71O&9>bPi!=8S_$t1)aF#PvG%uR7B-NoM6 zNwy9gWAnffb`CajJlRH1HjcqC-VmFK?Zk$1=nJKe-{#{_xYDJP0if3#YioVad*1WE zAThWcc9;_)o9N_6Ntkb^>lcZusR%!((lR#)QE&j61Y3oJ@7H zu4fOwX?v0%pI*!Dryu8s&5wEQac^I?YxsG~I_~Y*jF2%gPRYO6N^B;!19IMNBqfkh zj5Lg3=qm(7fhwTpBOm$5;_rX|``_>e^lLazI2JQ(>V-``a5!e@$wEd01rq~U3d${* zQm$As39hMzt7{cg%0O}c(Ulos>)>&o>pR5$_$k`5eWY9m7q?)>3`M}QsSZS0P(F>7 zlNWGJ)g{Qjtt`$5WMRM0eeQE#{n^icb^z$fdAHce`fcMtIRD#TKGIc7d;8npe$h{V z`qO`%G-=XI#t>Nz+j#v`+diCmm@gB)pI96nPs@w3JldxydptX?b>`O7I z!s@k#G8=BFQ@n2$Tw19JD8?N7W6k{D3!hK+A0Xyt2q?vW1+LL36pN!XdGEBB^NQ*v zlv^Rj0P-N^(OYl5^)H@&`sq_SqV*Ld35GF*#n{6XWUhTculI#cUUSVgU-6z6-7yvy z5Rdk=Cd2N2gEqx8VKEHRjISvmU_nO1hEBsTo8Uwov|&uqnC#@&Z5vtFw~xdK$Oa5~ zLZ#T}5%=e<>)G6Yl#Fp0EyNaL6S2*BkWFB5{!mD|9`D_U_RBB7{4c!i#!(qDKIGXB z4}wu(l^~j*WX0sm8xxEf@|JhE7<#je83vsc_jEqTQ+)?;jEi*^vYFgZDI2RC@eU_i z`Az#qP9!_fXhsULLCzNKKu*58aCwFaF0(n>O7!k~=8v!u_qVYrx=-z~!`<77IVnZ}Bf1wGh%L@SHZv}S8wb*LJC4(L_0?DZ@O$6;-rr?1 znE^O=9F7~-cN)?fth0Evpn{cE@Yb1%x6~^ZMWJwVcR%q03i`6}KpVN_V|3`x#(Ah~ zD?LsOrAqhBYJ*W;UA2_=PJaa-s=tx9O}U24qH~0JB}u2jBl0eerP_1kJU580MdzY> zu>sIMZe$w=!WFLnkOAU((gD3+_`(;Sxb3#vKI>Js_n&J~cVj2Cr;5Fme_tE8wgx^r z&*Ecq6d#|f_|!bboTy)@;k=hLX&vclpFYX!%e(@ z#>+j@UC)O-(tWbwHC$DB5f;O*`x;Odt?6E#?LSCLXU}=`Ky)oS2YP*Eix*_0()e>E zTwV(^j$|Je{*Rj`7as+KW15J3vUe`tS(+fT1ybN^u^1HF9GTrRJegH^&rHWo5s(VdOq zGQ6;&OVO$5R&)$>osDc48sQ3u!BW6L-qT6@%2&Sf#Hv-RKDK@P_6LnIngX<>AnE#6 zQ7kbHd)$E|gNBUulK_s!z%f3Omhf`zX+v@pW3J+Lx|~6bF(qya;}NZbsi8?{h;vWJ zCa*omhMv7hn6#BeLwOCBvM|HSsgSYQ_Do+|7z4gcJJQ3ndQrufBW;F|NNT2{_DT~wD%g~CFIbTg^cl&ZJ6+=Ag$r97O<3I zVRVROyZYgoZi8zI`h7lul#j3pcjU{Z#&n95lL4iQLSp_XqqC%pg8`3xQ7);dCu)~7 zCo)AcQ3P=}UHme+PwtF%8E_M5V?dpmtL@-F{^LJNLbeZx1B1C1^F7a2lpI{39?@aG*<@cxw3LTe(a7nawOjBTO6bqmQsX`o!Px}=i{II)MtO~&4$nk#Bwd3+onfR z^0;6;T&a3p3W)jA_D-P7Q{*WLv;Xj}8$XgcxM?-oO%~qm8i?9((^SPL<|;lt&*F0n z6`!0Z`-;yju=uRkK0H@(b&Zgs)Vldl6@*A|q=XZahp7yPORrZCSlB$*e~8_&lVpvH z9|PG04|Z*%&rOshn|9q~_CWXQzkTcHK62IaRo@mJ0bMzrb^8Y3Q{zvz(GK2^zdSY& z1j>L2P?2jNCqFV84i3V%k81V| zf+<+nRepcVbok$kEG7pT5nQABo8y0AUH2Z0GQjZtK_S{Js+RDT*>9wwycUH*8zTi{ zzTf-^ec5C&;j(UQaBs_lr@p=J-q?Zm9w6!SXwniu`rP_z6ND=q1PBa6yl`$?9-g_d zde)bI@P_b`t6vukN2h;lsl`>b5LCPw)g26zP7s12ru(9if ztX1F`m>q_%Ewv=O#bV@WN_FzTj{b@hiO#cX*)f{wp~-w<_RU-rnaR(a*R!^7587yO zOf1pZ^-SNogX^1r`s^MclP8*wY|>IbkERQ~+63W7PrNc8@glixxttGG)kcE=&KUZ${_+ZF10S7h@u4|TVKXW?#^ooc*U4k#l8FLmC*9KMY#PdH zc)ItH)7R3uV{lXB`sV-K_k@sAw9JvxcqNPVdvPFXeSLyNwk6%t zwAm*9p;dCn7nQ0r?6F=C# zxBJn3JNuqJ-jOeS18LvzU#bMj#*t_fge#O?`N$U-hI}F4Ht5^ho(G&fX~pYi)h}Aw zaNDvuGjCloy}rJ#dZsr!<#fxk0;8Oh!x-mu*XFMA%G@=t&dIPeC)3=Vj8k(mNAt-LVEew`pFPwCNId)@ z*SGb1KxqNr*57R3|4CE+R^mx@<8K8cC(@jPmi2A@9!#3{ZMo3Anc~8QD%iJt%}=U; zpOA$__5H8FDnU5y+nPe+6cEZOAfxs*Q;K90gu5^ZNP#D_N*t@R5w3)H^Y0fPbKw(g xf^daUrIU~%g7G3DRiKC2H)rYO8~z`}{{^zfKK%u!Zh-&*002ovPDHLkV1ft|+Z+G@ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/tip2.png b/TMessagesProj/src/main/res/drawable-hdpi/tip2.png deleted file mode 100755 index 2a1b445065b197f8c4d03245fbba5494fff38c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10814 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�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 yAZ6BH>slaf7vo2zZIy3X<1 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/tip4.png b/TMessagesProj/src/main/res/drawable-hdpi/tip4.png deleted file mode 100644 index ef6bcd87a501bfba5aafb51c2b4972e8723513fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9335 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 Ycb2I=$_{VtHxvOhRCQFUp4oo*A6O_FO#lD@ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/toast_folder.png b/TMessagesProj/src/main/res/drawable-hdpi/toast_folder.png deleted file mode 100644 index dc2e2622053b445f566498db4f1e1e9068cb86bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)bF5XKWNEG)$Hz(QMX1mO;S1Hre@r?|p55bW%1EG&Hi zu@~%4L9kFkLE9WCD1v|DZ^T*Fm`k$BB@w-W?{+dfJKuMcx#T==Xu}Tt@D<`GyftsfMh1lPdDo=9$&B8tL0E=sK28~o;=MEP2XqIdW+dhNI#lfMD(9nJ;5 z@83rAZ9%VWjz$wozCNS=8p2MMr*1)_;}NtFbtxAk^6_OxoCYdd$KlyhE+c{&dLw8H z)SN2T2Rbw%M88FlhoDa_b#p7L&aE&KJvon%X_i^>vzRR?OMY5TRE%`#0F0#_{ISnBc~5IA`|>iCw|v~~jozjP zc@oQHc?GrPAPh^OXE7BLBX#l!df}XTtK+wUh$<|G8nJ>To@Vmr&CDJCBCvl=PPfS> zi|dfRpXBedX+&uuV!6c#nbt9@1Rd;~D9#lUBfLh4Iu2qqbsuLAEC89KLZ&**!%(Ve zu#PqEoUV_4`;V7HSij4ThL~Wg5tRuqYjVY39#DK!89002ovPDHLkV1f*W@HhYf diff --git a/TMessagesProj/src/main/res/drawable-hdpi/toast_folder_minus.png b/TMessagesProj/src/main/res/drawable-hdpi/toast_folder_minus.png deleted file mode 100644 index a471591e3ee5bede768c5d55c1dcf7b85f455418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP)W7o;{m{&9Z*<3jAdS%Ca0{M_7S@OL40DSc8CGCZEJHAr2X&5Ze&4oglP9nJIfIgnnK1ZU_SrzR*lUCa{{ zS~QJ*3!w}`UtCft;#9pSMD9`hhxMZ)i4|EU6>QbuM4Q+_4e-7>4gsM8zT`HewM7Du^VNwn-OKieM3tRH^b0@&`gn z>maENh)vKgVywi*#=^oB5dpkG}g!N~3!7UD&O& zY5&bn^ zWR!QZ>N%D7fXC1aPqcUSLZ+0K(Mro5L%%hhKts!~5HnKOa3qoB&zm5Km z@nW5?+>-~%t5SBUyq-M=G=V-L)i-o46(+A`7z)NjYBuTvv?ZF=YSb86Ah+sa#;u4g ztqoun{W9QQS}Jsr-!q0-v!NrgLwMIfy5QYNj0HAjkr=Aoz>v})IF0<%*-ptcd0=fL zm6+2_-r6-n>q=YA)tXu~;mkRValJ)!XeG37fP>cINC4h}G4~^uUeguyriEU|!Wn&M zIXgf!9q5v|kAqZx!&%M_NKFU&Z0@NbmEUldvjbAof&5YQG#??H-h$Fvfzlon3MD8o$)f%zd75IY_o|h#{8B*~51!ulz*g=p$0;=6WF|SLadI7z_n- zyv{eWM|ed9tDTX7h=Kf$Ll{>gw$W|EdP;m*f;~`gbaLphyfR*5CFg7R0WgIQoyhnc zU9UBln(~;Jp(ru@*S_S;m;%y`_HBV3zUa>V2;D`Okv>UDbM>_5cXy^mw*3vY>8wEY zNcs?+plaz3E>%ljWjbFrqGtoHhqlK^kF&ATnmnx^#-e{YL{DT3Y<7;R{$#$2^bZG> nuD~DAEB@*5Lyfcg?>~V*5-L5dp!|R?00000NkvXXu0mjfH>P3< diff --git a/TMessagesProj/src/main/res/drawable-hdpi/tool_cropfix.png b/TMessagesProj/src/main/res/drawable-hdpi/tool_cropfix.png deleted file mode 100644 index a5269bc76dc352b95e0f192abd748a493f5c04ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmV;N0b~A&P)>em$tQ1`C~Z=AkyAPlN4+j4sC- ztXZ$c4e1RZ(Q`vxu>U4Pn1o9`50LtVuln`glx{_c7bPY0(WdP3b3G}o4atovM0vL! zw$;ylNg3bNt%11OCv6L_`rC5EJ}W};J~#V68cI!{1y(PFICYekUg{XHhB$SU=7vmD zX3iD@Q`2Y3PAC4l zM}Fgzh1dTa9dE%6DD^3N&?UFjX#8>XkT<8u2xJ605x4<#w%io%!{+n=0000N)(BOv9S`=!a9cp8^J0HsRJnkk|tFI zu@hTCxGGf$HcE=576m(l34su_P_Qsqh$foLZ_XK6-`jiM-Fxqv+`xA;J2N}q-0r@A znM_^kD^Q~qC=?29UAL52d}`H`hTNG!!uLxKs2SKqBcN_(O{2*OCYiX8Z4HYhGbXRkWb2bi=K?gix=YGJ^(YIJ*pD%1|Vll#F~qml75Uv(AYR5zph#FiMSrdH;*A?gf*a{r;^Nxq0RBzA}VAl25&G~LWE z{^r$oeNOm}dBrHN9=D;#_~a~EtkPOqGKOMn9s!fLF-jGux?5INE$&kXO#Gpfhs!BK z_bs5!mm9kwExN6G%tzw-Xr!C*A^48n>BhuPs-Yb%JOD}PK^!2RV=PU{BdIG8OJ+zD z6Tsv}R8^Afh3{KbUaS}-@(4N9j%@ovHHr6vKbp4`N=VWH$$}Dz%K2*JUv+ZsJ#W4m zW&0rN0`_XVkKO7{W-Qxkckd5wEHxX#d0?`MQM`)KIq*vZ^7T@iPbrAxEPYgBQLP!JZD|`@jz%CR^9@>ta^p?@sKUE3v(u$gpz2+x!VROyIrX__*vz~7Gw3e@juiu3}PWsfntjP z?Td&C5tG!nFUFe0a?Q6=Z4guL=n%yYQFUUW$42?X)gcN!Csy`g4ZnUkM71o2pCI?8 z_Fd2tQPUJ{xG_r3XYgHD*mdIGD{RoW6NQHmvjC34S0FdWJ|Gu)xvV_^_Nux}zsB3$ zdDSHsW(b-DMXd9mLGn{jG6-IQ-wsu!J`{ttOxG7NauyAPE8qyomTa>%G5*5Zx&r?I XVe<968a%GpKn>+}%e~@MJz*_!+-jU$-EW$wRfJA}Z!L4V4`#EDi z7W_4H01Ls1I|m=!vw!(Ar69h0Yd%Z^To$4q#GS)*=f8hj)SBA=<*xC65(+IcuODe@ zTfZgcK<^)OopU=c+HW~x7=AD~YEDt;o@qxE!%tR6%qhGoV{=3>{GzA#oPtnU-J^`* zHzT8him#gTPnxuPL-eGOn5l0UE_tB!w*Ba=)nx|0Iy<}E`Hyz3uDTYav*T2|_tM;T zzcO!KHQOm8uQns0i4#P8=9W8Sqx?snAHoHSJ@8{z*KlXv_mz2HKU>Ws_C382jH1ODab%I;_8&Fr$^ zK4g1f!{2q6-BWw#5zZSS4f3bg;)T=}Z3j`C9N^v}T5!rRp zg{BV-?8OW>Vso(R8-M|oerpGeR3hZwS(CY_rj+#9l#C*H|I$G@(+1nt3^W$yNPO-l zeE{(FwyhWd_?Ywwz|PmU2o)pHx#%`fY>A%fOr7)vv}~r(6$Lqq3Dh|JKN|bh4Vt!K m3|c3wwZ?wODQcPaTtt3=sXsw1p+U$10000~ggCL>{xXQn=PdCV`j6 zH-s58R1If8$S5$d(0|p<=_hpWf#r8D29FVdQ I&MBb@0CDh8RR910 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/video_pip.png b/TMessagesProj/src/main/res/drawable-hdpi/video_pip.png deleted file mode 100644 index 84461e7922de870b484fac6a9a99da08314bb529..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 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 Hu0mjfZOITL diff --git a/TMessagesProj/src/main/res/drawable-hdpi/volume_off.png b/TMessagesProj/src/main/res/drawable-hdpi/volume_off.png deleted file mode 100644 index bc828eec0539cc69e8afe4c5d1bd28eada72e890..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmV;P17ZA$P)ugBKEOR=nLId(k74!Dhplq0qvq)n;-#tv}hOEqLLORfz+ZRQ;4*nFNKIGU%&IXN6(w)jx*2KBJjX}&iDV$ z+&AyuJ0&G^@}JE>rkMAe&1Re6+XP0z{Y)nFrC@%@O2GlJCoKs*OTcYlWele|E!R}N zG#j=H*okJ3x((p9>9ytuoMlskq%mk*4unAE8b(El zz=$D}pJ9Gf6Y&->>1suv0J&L3m%F&A&Zz#xF$h+Hm%`-a9(rMzfLN!?e?#w$$h&kl z2YnJW^KlAgD=7YWh;$P`ModlHK^* zK^>6y;VbwEszD=oNX-t`mtpLGCk#>sR07*qoM6N<$g43L< ARsaA1 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/volume_on.png b/TMessagesProj/src/main/res/drawable-hdpi/volume_on.png deleted file mode 100644 index dae9faf984130d7c955052a91c9e6d1bc758a6e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 960 zcmV;x13&zUP)2o@m(t)wz&5x8k1ln`j^ zC~O%eM9T__HbGF~LR!?KCg2S@1HZZFJLlYU zkN3Oxe%GR+Ir-maARdqJhkh7?`>^Yu%mD+(;5dY2PeF^Kf)Y66RWgKr65cx7U{pc) zE24ZevXgK=Tyg`ec?>I+jJ8__WFnLtdlyW?IVcasOv^@+g>Vf_?xHNUB67v=UfF<64RIHo&0%8Q|;%Nl1`@@7)a(w{9fTV zW6H5*El7hAQvy9;ay4raL}@1KJsQ!UgUNZ6d7&iOa~5R%i1jx`huKpt0h{0fWE1VA zSgKQ+f-hJQ_Bv?t!+F+vdiTx-^Q zFzGV83bKW!jt8ODV<&ojDmaTmT&SQ@?DxRrke>ph`JSLBXCGzMMfdo@)78n5QIK+A zUk>`LNc1MwT5j}q8J%n{c8K_9##syyA6N=2ays&z$7(vElq zt# zp)(AJ^5WBmxeVJv{=94?T>yO$lJ2~c&$Kg@l)(wG^GoZa8>YU6(+1CPLAhiUpj)6A i=cB1F`JBw!4EzQF9Ra_y@23v{0000J`ZTo$pAkK*@% zr=Y4aN1~&k_e~dVQP3C91_t2@W_ap!Qws=$-l_dFdrNm(UcK>#9kFF?laNU;etXVSP4ED z;qf5hfJml};0CT5(PQj|d9}eA0oQ=srPgKf@oxnWz_~1*`rySw*HUMg- zWO8BciJ8uQ#~#ZRB%JUg;B6wymk85!i8dZxPF;W@XZS_Tbnd+Rip=OEkZfYFXU%)W ze7VrZ!{=|W!8jDNoO_GCJe8c|KpO$ug#Ao)9j%;jVMmCBGeF0&yr6l00!84n2JFnU z%)vXaIcyAFlUaV4*kK>gX079&u<7!&=~N!tf*-e&4Wf-etfXc#}q#daHyJ0sB|#@1sPgiQA@_``Ec3XgGhz!(69<^%V5Y zG_gN*>nm`WI`SXpv>rrfjIgI~W{p{PHgyzgU=-m?Bfe0!fL?UuFZYvDk|N%18u)>| zsh48PXvtabN4+K^K+8074|}ots+h^wH2I6YR*?b`Zv?XYI^+(uWYEQvBlpEt?yXUa zB-lypvwF=euM}^BK|S>OUM)`ZYVnAvp_oY%_D{)WrNjGjw^#?TDfs|+USa9-jh*^> zJ@^ROP6;T#BlOL&yzD9!$Hw&7gZT%CCsDmr??Al+^$z^UJMbHSU=9H&^2{{=0000< KMNUMnLSTZik+|Ie diff --git a/TMessagesProj/src/main/res/drawable-hdpi/wallet_fingerprint.png b/TMessagesProj/src/main/res/drawable-hdpi/wallet_fingerprint.png deleted file mode 100644 index ecfdfd9f08439b1e032911b64afb0d1adfd0b699..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2806 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 IM6N<$f||u-A^-pY diff --git a/TMessagesProj/src/main/res/drawable-hdpi/wallet_qr.png b/TMessagesProj/src/main/res/drawable-hdpi/wallet_qr.png deleted file mode 100644 index 4e904ebf538ae12d9435249b05ff57dd682cc8d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcmV+=1KRwFP)4YiGlSST2C{e8=v@$Br~xpPs1g(o@8`SX2e&Yj)a8G5~cK>EIi z;c$2s|0;R~J?(Re{S$w)-|v66INZzF*U@pjPhfW8{xEJFDKd+0p{24D$rzA!N{Qe! z&#dw5l^`%h;2nC+5+x(QCa$C!DB(EFHujCUBJl62NRUU20|#!HX_ba&wVzh;KI%dVi_y`D93&JxxDt*%+SjC<(3VM<2f1CODWHSw%| zs8PSf*2Ji~cU%{Lw6I7^C7D1JxjQq$Rh>c+`1+&oK)+ZK(dD6uC>WMqz{e|i>}b`c}Y&8Tj)gMinW$lxiQ5wpZ@bZyic%n z->?_ZZ3PP@y?>;Bu8ihc2=n$DdpmS?8^8?eKjmpbJ8e!5FS8cEHB_egrTAm zlhk*TwrQ@zy=v5x{JH0z{^$R1Pj5@5BK~s%Q55w+%jNCi^??sIpkeKSGzAZE2ZK)y z@*JE&5;K!uHVf>>K4SDG{{Ay0%3FwSc3?p2;AKn@qkKy&~UCoPhJ8rXpNBM`&Dejo#@;ULR^ zav=4efEWbMp*sL8AE@vsSo#0|yMQ!K!(p0%YHWbG1Bi($eSr#@fmjP>z$iVmLjV9l W=EcZbNGfXp0000!jv*C{ m$qY=#*h)hF^LH2=ZOmf4>dwi&G-qi9NSmjtpUXO@geCw`Tow-i diff --git a/TMessagesProj/src/main/res/drawable-mdpi/actionbtn_next.png b/TMessagesProj/src/main/res/drawable-mdpi/actionbtn_next.png deleted file mode 100644 index d6988bde4d100839c64b626305d45c97565c5948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;~o-U3d z9=yp360FWzEdT!h&u2ff)8UMZa62>aJ@z9C8zeeb=5t;M@K*T8azw$w*n3SwTYr>O zj1(iA=*xqwS4#LhJXz}(O0Bvu*X{3;wmfFlngy#p`IVA%WlUwVJs6u?x4E)jV45Xf lwncZ{#?P)gR1-Xc9HjN*R*q(v+l0N#7+Ejw|;(Va?Saz-^T@o>bD;lIjDca9z4y(y*jslHQoR@rdoo z+6X3VT(6Q!+GSk2)Nt8qrfTK7L_(0wYifK zjN_PdoJoStuNpzC2W|vT1KB`hxL6Oc%ZnX0j%%fSfHwdWz!b1;0iUOO!%iAks-W{0 zd&7@FLm6TXhQT;WzG65(Y7H?1be162VYv>IFZWJU@Mf0K*5j9mXq9Or_qM#s%ilnfRC|Zb>1QKFrEvO)f zjfG&NNWdaLk`yUygph=Qh>C)sX%15)P5c4HA5c#eL~}{Z`n+>9cbns~J9n|s51##I zzInfyot>Wzg8$vZ5cpO%DXGu#K+I5ec? zn0AEg;T_C^*3H|{*F!JJy1fz+_8EB;o$^X36OkLjBlrym%9@u}5j0!jgQYFi)#zgf z{DSeMOs!KpWZ-6!Fs+RvGQ(iU(aj}l5#50WSe+>ROO2XYGkoL?^R@KJi)Nq$#^3|w ztyf)fjZrcJ6Y#ba@h_3r0$GshOg@8A>)jbudrPrbD#M`0HN~JuL7l)SkPX7Rc$(@q zjx)N#pj6H&f@#6M46Qz+n^~tzBGv@Db(&(aPUyN4(uQf|DbH5_c?#;Uy zDz^>vgPl}GhTt&n3%uYhe=24zhu>h!SMX23&G0k@eOjD`U$uOr@@(KBy+w{3xewuR)O-& z3`aB#Y!)WrGHf-C6&|$Jeh%$`b#$WNl-9w^(8g~XEk*nbX#I5*-1*auRJz{0MyMcC vC*W=zoy+vQv_d~sg&3r|zeQEO|BK>39FkB_q2L|_00000NkvXXu0mjfnZRSE diff --git a/TMessagesProj/src/main/res/drawable-mdpi/actions_addmember2.png b/TMessagesProj/src/main/res/drawable-mdpi/actions_addmember2.png deleted file mode 100644 index 067df79325215a3e869bfee95cdcf60e43376fa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmVUJZOnn*)pDbdHdOKn>8%4M)Q&x*_Q9r4#V{`uzj#an^ zzztx!65AKwCoQ$I1k3~bfo-*f8sP+R8Mx50;A&1A644^C+?DVfumXIq#1?>`z}XhE z-M|#^JV@K2o={J#=hYSURrtvcM^O-^pKwRrk=@^<`X*vWyA;hZd{M`QZdzL8+{3TMX1?^?t`zY1YcgF{p4)#Q1ni z>;SMc{6D~NpaC|;Hx=9m;BC?|tY~tD*VR+SPG_R2yCPl5RH?AZ35Vb+a1Hnf+zkb7 z7({E#hT3CI)4Uv}u(Zjnh_?55V={*1d diff --git a/TMessagesProj/src/main/res/drawable-mdpi/actions_link.png b/TMessagesProj/src/main/res/drawable-mdpi/actions_link.png deleted file mode 100644 index 4cabc973365bd5650a44095cae5b751b075dc1f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1|*Ak?@s|zjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uvw#`F1}RM0`(+UW1Cynvi(`lf z@7rm%J|d11ZTXrSB6?E3BHF?e+*IATk_y$t+_XGB6cjd^skuq7_0c)kc8salM8Zp3 zT65)*84et*EddTo7fvXMdn|t>_}KH<^2v8^-n@Hx_n}Aop6uM2f3JMs&7HGn?si%z z>idsnkJ~HBpOY@9Ex954L-Nd*wr_$y4wBOx zHnJb)_4k_CzRE2m@r<6weD>`Rs~zUQU1`1i0CPZ1OK~Lg#rLN?&ZPe|GG#k|KyA)R z6QxHNy{c`i zrOc;$({6yA1>7Zh_Wyua}Lzlmo|qrIO<99NvPCPn(fqRDS3eRr{aBD;at zeu2bQq4$Pg4%^kVR;gKMiznVG4%o9{t4m+z!R=DTr^Q}w4}Ui6O`JiTwoT&oj;9j4 zm_Hlk=D1J#e>P?Qhv)KDKIRUFlGQ>&zqUk+{yG<<{rYQYvdK->>Y5q1k2`JO_h|2b zsrri(1OAKl9e0cQWGvfk6yp|O`r@SCJfCzg!>J*ELvQh~m|A{Nak~BX{zi4j>l4>) z__l|!VqJ6Dm(w=+tIj1w?VCS%f5VHWa(&FJOAC*9VAxg%saAH&+7@sV*3nlgSP)3lc=CL zwq}qFn8b`5U;~~QTgjSaR&nOlpzeOa9Y}%BS`sh0U@!p*^NXLtwx&wH=zL#8M=-7| zW0IQUx<2ioD>n?&@E%nBFWfClL6d}p$3Ry`V*TLcgY6_tX%V?<;!4&^mQCq-k9_Sa zu3eacCCFa2aumK#GHr7um~D3zA7ou(-GA2uRJx1~+X}WCcm)^X0UQNwZ?MP(Y#Xo$ zr3=ZMU=kKVl7xcJvDHIYl!{f`Igvy=(g){2o#Z4Iiw&`^vm69<-iPfS<8L{qVh1E? z1SMVoBfl8T`xAA18Qwra=f&2``jaRQD>;eJ zCh!Q3k6{fGY~5HekaaUv+yPCn9Yi(27ifm(*n0hKXBt5WF#kRYmpkiS5GErmm~G#& zbL*lL*hs-N%s`T-{+Ry&_@uC%$+Kse-^2f_iZi|i-ywSE1YUvPKBH)zxwbQs;Hys~ zbuak|ovuKuW8;AHS;jZvyl>k?>#FD+bzPQyy@l5Inb4^IxNtYUagi8qaSL9 hwHMaH{$#gy;2(h>A!?np2a*5)002ovPDHLkV1hGVSBU@s diff --git a/TMessagesProj/src/main/res/drawable-mdpi/actions_nearby_on.png b/TMessagesProj/src/main/res/drawable-mdpi/actions_nearby_on.png deleted file mode 100644 index 162f1d45c7dbacdfa880b5036072908a19331e52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x127P)A2@Qmj5RJrkwGawg6bNo~Q9@#i z772pOS?EeZTNUCiBxvcXuti7|Ev!X^$oMZ(Qqf4moW9?1@9^gOo-^hXTFilO&b{~i z-Z^vcoI5kISiuS>;G94zmAV42VGX9B3p_^_?UVv4x(ypJ4l^L@i?))JjRM-KidHLx zkDIkW_|uL&x+%$ZyyO0i%-cbB-M^k|T$D@T#AlgTQ6%nLzhuU9zO`tF6jUS0bmZFU zAn2Iiz~MC*$tz$IcEFmBe+Vj~-KNP#;ucV2$>!k$yoFhiDb^BcaS}Gd7EHqpH@VhK zOqxbF{?BugO~59c4@;sLsPIIXX5Z^1(=p~uD2=rF6v(R+NtPtp3HS&*(CT^KB3@r2 zXKddTZEv-0tf8f5^M!J3-uo0({rPhc4Aj#nA`?{|{q6b+)Q@u7~unAQ_u+u z@Ca%^pYb!Wc9OvPJ0N%;WSQpiYgm7njt0MU`L%Y8wA;wDem0L-f$?9B??>FmwODcDPnj#h zIcI&Ex&LEGhsjaL;2vzkT6!_)1)&EcAXBsSfsQ}#4n=zuZovysv;BfQZoR;S2=5~7 zg$w3^ANY5WgeAi=J`QD2ZqPpyeTkGn3SL4FC#P$cWr2mIptxf7a2u{dEvQrXvhM^Z z;T4QgP=6c(Ewpfunm42CqTT7YS3CU;Isp}2qR(A9(IHei8oi=*hx(pUKf1`0ppk2$cmN z%Zy-oX}RUb*R~|Jk$sV`arSHG(a4%7R_?LW&i zwR%%${D(8ng3EmU`X_bXUNa|n^XWHD`fe;Ag0FEBe2rTfsD&);!Z zxNZxpL}|rlg{KP-e=~m9E_mUbt-wa^@P!PQgbVgoJrEAoei1dP#QmBs=T279iSN$# zFOUyqd1-CaQt_Mlv5kl1irw5NOILS%3DUjG9>FMExA#TNgX=%IXXrP4xv|c0ALHf+ zcQsn3&ffOCKWP@vO5t6(<_Uk;w$!ZtASHJ&@V2n|H~ByEX-Qipd#g{p{F7?&B)L%f z_@|41Y&^Ud{7>h**R=0l&>FSgSs69*B^l+8>~XvE7hSaT{l9-V(|!geS8)g4^hJ`O OPXnWNB@Wx1`ua3as&$pOMARXUdJot?H;LGRWXc8~o|3AdwmZgR<3 zJloEJ+jGq{O_zuyuigyf$M0wEEU$Qe?)N>(wsPT$2gmn*pYz;Wdm{@1#>qB*HcDt3% zz0!@CTkaZR!gfDW{DGp+A)6cWk4&o<2E1dnX)K)Jx3?>4cjDoWQyX||*Uh-Y8o?xe z>$}^FUnfpKmgm|1_1Mfu*2<^MC!K4nV$kQ^XFkC^E?>6$*Tf{LzK69-6sEXbR(4u> zV(lJ>d70WA<}bOiTl-n#_k!Ctj(xNM5);bzRw}+-Btk&kg4s2;cE!%Hn>G;t$+j27+s|&Mw-^ z-@bu;XIQJc^I-v*1M(G5CSLQ(IMx%#?0)N|@@td6L-`g>%O@&Lx>C~n>);aE-pi#^ zjwc9|Io3~4&lBFMdExqX{~gb-?Y2rTVcyqhXLNooXZ2pUzvVX@8E5;a95vvcy&$4> z>aBJE7Oht`I%1l5AT`3Qc}vEN(D3O$W-5leJUW)%cK6N!O~xsPj9iZcR)Erpr>mdK II;Vst0CyfB*Z=?k diff --git a/TMessagesProj/src/main/res/drawable-mdpi/actions_remove_user.png b/TMessagesProj/src/main/res/drawable-mdpi/actions_remove_user.png deleted file mode 100644 index d9d941e4c5b48966347c071c06aa6b5305c0028d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPr2P)RI(5}8b5YM^lq?MZ^YSR@kLBk@#Ds(8cBtL_o&8rfm2QcN6Usda|8 zEHEyj^{`aU?Nu$&%a`QSRDlkO<9G*$FONni%**UxxAAU8DCsjLi zV(W8aCJG@0bt~T|wNeiu1d;4M;)nDXN4-v*=$>`FXp zCuOmE$IeLSh;@v7U5M35kmu&dAV1%7I#THkr{fR4AGvWl-y-@D!2kdN07*qoM6N<$ Ef{?L)9RL6T diff --git a/TMessagesProj/src/main/res/drawable-mdpi/actions_removed.png b/TMessagesProj/src/main/res/drawable-mdpi/actions_removed.png deleted file mode 100644 index dc45519696772c65ac13353492dd72c7f070bc92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmV-q0-ODbP)2JiGZxH{-?A0u|EH#D%F1jMWo;vkBz9I()L?fki8A6t7@luSbY$E>4!Aci!f39BJu9Bu}1Ymj2)~O;mSyOr69pP^}YHqKCWuQ zh5`|;jc0$s_;+9k*a$4BMaV^jKjPU^VeNci449~e@Gr_ruuL6O2P>%er`lUjm3GHI zo>v!V`q!(&F}AIqgy}iE9*I9hdmwWnkJS4drqQ4tQir01BSG9z3t5&h$r4V3M&MV4 zDeb`aQ0_b6Zm9f^0FxxCNZ1T)0hY)6WRN96oW^tDY0T{bI!mcCd7l9Lf#DKiUP%vR zEUgkcqU5E0exUMM3$#M7j0?mw?Z}Lf|NHE;DZ@ z(3{Rpl4M8uA8t~|!>*QADTaF?qz%zdajI-iYW!0LqISiCY8BY5epT50%#x{)E!GDWQHnvlRGb&o_{O;MdUIzcx)a%z|ar5&X?lNO4x zWGXJO%9M!&lU?Lt%!JYjsaFz?iXCZA*17Pz-{UpMp~TUhQFhJdwVrA=huM27m;Gg%G=0~LKhsnvwtLn) zCcSQ(!rNS)b!7ckay+VQf|}5LcMxyQ3vDf@SA55$U+c zuGZbs(@dvb)Ojec(l~eF-rO}&wFVljsRgr-XkI>Ebs&}}LSCZw0cWp+jq|a>Pkvf9 zFMFTdakHHxysN!zSK8;$+Ebd*{gnsjN%2}*H0{d!w%cDQJfKC;zj*e7>#@rta=d{fqY-(!(n@zbpUYwUQ$`&hvFgxqAEp l*^v0PQv*$RHQL`hV7}3}YVqzFTpvNP?CI*~vd$@?2>|;>@5cZD diff --git a/TMessagesProj/src/main/res/drawable-mdpi/actions_setphoto.png b/TMessagesProj/src/main/res/drawable-mdpi/actions_setphoto.png deleted file mode 100644 index c4c21e2fd22a267f22e6f45c9064653c2febf44c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmV;j0ZsmiP)kdg0004bNklS(&D0NYSsLT zX&Q_#Z4w+>`VNwNcgHX9E|-ghbel;36_97j>xE3o`vJ(rNf4)ihJnfe)w&vJ6fCd& z9iYg9EgDoMig|B%&x31#M2;RB8a;A;2Fe>f7k84Ri`7>v|0J$O zT=2}@Er4^;o>1tUg>%ZIeL97KX*pS%W28Osg3dd-Abb0XI!AO)U};xFHGWG9LFD%V cf9&7*0qYO2=rOn)6#xJL07*qoM6N<$f+G^TYybcN diff --git a/TMessagesProj/src/main/res/drawable-mdpi/actions_viewmembers.png b/TMessagesProj/src/main/res/drawable-mdpi/actions_viewmembers.png deleted file mode 100644 index 340f5debb10cce5f01b0f9c13caac5d6ccd917ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0jMr`Z?DSZ(|3oQg=V-tf| z2-?I4q)}tQU?s+2e1OD!a&VTcH+R=v5p4E{;odvhCxpQ*Ri19=OmR&cdCqYmW+EmJ4rix-El6kSMotNw`lbM+S77XinrwCPH`U!yKi zN7ZR{PqccS`dFP+H)adAT|Fya@ikA6H)Gl=(I5(0%TQI5X zrCMy@KrS!xWDU-p;Phk*CiFJ=2Pno?$vbz;R*Kvg$(%Gv?oS$2WfIIJ&{2ak5!dzx fb2rh%{{Zk4&DL$eObUzM00000NkvXXu0mjfL$(Fh diff --git a/TMessagesProj/src/main/res/drawable-mdpi/add_admin.png b/TMessagesProj/src/main/res/drawable-mdpi/add_admin.png deleted file mode 100644 index baf9cfe920818b2e2ff253378ec3af8c7c8c2c38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 810 zcmV+_1J(SAP)S{=x1dUu z_^*M>p%8y$&Mp8YzyJ^LWD)Js=bhQr*t}mrs>7QI2=4)nK$Zs<0C%j4tccicH{gVk z?TEn34VxB4=qkkrbK);@Uvdyy3b6?UFNds&gNQ(u^C>uM; zm-Ir?OM5@+*%wF}ZQ}{{bX_Lb#y5g5Tx`2p5V6w+yJL4Wmw+$8HtP~tEe&jskXiNx zgoS2yEJW7TqVI>{?s+@pvf8sB1}rq)Yxs6=Zb(4r^ooUke#imV0}osDcC_fcY1qY> zJDhL$q`3Ap+YAnP20ekT5dkA>Srx#t7{UtkH$9HfrNn77TG`Il6y)YAI~Dgn0@wre zk0W&2*SdRqNxK85Y~AuSmBv@ssUO(lT@kq%*0J7wy4>v2UP7n+fb-_WRiGIWHo4Yd zgP*GPX-*@KP}aFCEpnZl1ttT7EeD%y{su5H?eS+K4Ad3rgAwWc0$3X=*om63y1o|4$_S0*+$9e%VYu`2YX_07*qoM6N<$f~R+P;Q#;t diff --git a/TMessagesProj/src/main/res/drawable-mdpi/add_contact_new.png b/TMessagesProj/src/main/res/drawable-mdpi/add_contact_new.png deleted file mode 100644 index cbcd39de38166f0ac3b18a147bfd9e68cc4ad1b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@UwO-~ockcwN$2@9Bi{QvvE{E^7N w|NrY%H2(bmYj5{qZb_@MvCK)IG!Z5S@vG&YM#po-fSMRQUHx3vIVCg!0BD^cRsaA1 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/audio_mini_arrow.png b/TMessagesProj/src/main/res/drawable-mdpi/audio_mini_arrow.png deleted file mode 100644 index 0ae22f4595718dd6e59f24a8adb246f7c003067f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^96-#)2qYL5?orYOQcNX5e!&b3Ws}cZ0C}RGE{-7; njL8WJ8yXM&=P7jvYHDO;kQQV*q|y?045ZD|)z4*}Q$iB}IuaF@ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/audio_mini_cancel.png b/TMessagesProj/src/main/res/drawable-mdpi/audio_mini_cancel.png deleted file mode 100644 index 10d89231352489802032bf757fcb14a829401879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^93afW0wnX;%77$;g{O;SNChM7K}OyK4jc>{Pd$n~ z_(y%a7_UQf+|~2U0D}H*kesI7^LciJT2z97Yg)&4DodJ Kb6Mw<&;$Sut{{v6 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/audiosend_pause.png b/TMessagesProj/src/main/res/drawable-mdpi/audiosend_pause.png deleted file mode 100755 index fde71deeb42df70d8260115ec3650df3ce1e346d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^N+8U^0wgE+9rgrLMxHK?Ar-fh6C_v{C!A>h-~Z3~ zK=K`>7T!kYJ4%b&dZdi9IK-Ue97^{b&^6+6J9vSWq3D>Hmg@o+W1wyZPgg&ebxsLQ E0MNuARR910 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/audiosend_play.png b/TMessagesProj/src/main/res/drawable-mdpi/audiosend_play.png deleted file mode 100755 index fa1fcda282cdc0db2c6a7ceea5b222f4e0c08aed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmV+@0oVSCP)a*WB1zN3m~)CmlP2U{}X8X7(EqPB$ u-qMouSNos~+ko^;sw7Pz%2PeohEix4bnQ~Ql zV}jmks)&fp1ho_mR@7QPKi_!QE*Ecl-zIqA<2~p5&N=VBd(ShK+Spp{Komt|Xooy> z+LuhDtp(TWXf<0WuK-zFTk2C#h6!}+Wa2&8F&cgi-l1nSclEu&2Z?uZXbNbO!+(V- zzNxFk+Q8%mtu)F&7B1i$jJ@DAgPQr0X{6>~&;o7UF7!b+Z20O{(rJ*38@1d5^lKQo z`qG#pjp8ThKr0|CyM<^cFp_kO`4zs)t(d#2;075uIUDPyK`TTSEr~7I>@;ZYg+c_0uHhMF7mdP*r$<3@iL^rqA~ri{)~$n e$&Ibi4$J`BhCEil=;l`d0000PwX-X@PGCH$WM;s3q=)&JA~-S5+4Y&!Yh z{?GG2=RfQhk8S$=fBXMe3D@*Wp1(TuH@D~R^8gNpGWWgFNx}D>fVMGsy85}Sb4q9e E0A3AA8vpfdMuCGyKo| z{~uN9qyN}|H#VjJho{ot#4D{QUMa(WyZ`n7zd-pr{?7zM-Tw^#lQEToU=x(T8YyBK z|Hu4)hN+bA|0^*6-+vR7binh!2j&}uU>;QSc8p|W`2WoR|Nq}01la!Hg(|kkk{Dh8 uiy#X`LY1arPm~NO-q`&A%zp=5=@$Ua{D~sKNUKc%0000=aIQb1{yEN@-3i-m^f8x0F|Vhxxo~9T9_q;*+=-DFi8rN zw9v;gDJ;>C>y}EeuW#W+VK1n(Qa=qG-0Ew45!@UMvj3b16J{z9Wipne00000NkvXX Hu0mjfFllbo diff --git a/TMessagesProj/src/main/res/drawable-mdpi/chats_leave.png b/TMessagesProj/src/main/res/drawable-mdpi/chats_leave.png deleted file mode 100644 index 42c3c4a124288847495ba697178d5885a48cdddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmV+!0p|XRP)vbcb4CsCh-Gg20dUYA758D5`uY6Z7Vr=N8_wVZ&nkyvU=oQw`f_5@l8Lg5#!UU zUtYGTqN-xSCGO4i-2MAWHgIRE_hq&{8P{(M4O!kH_mCNI<;H07uMQb5mKmwc{4$Xx fH7|wp{%`dOSno26C~uza00000NkvXXu0mjfiPL*) diff --git a/TMessagesProj/src/main/res/drawable-mdpi/contacts_sort_name.png b/TMessagesProj/src/main/res/drawable-mdpi/contacts_sort_name.png deleted file mode 100644 index 035ac06daaa0efcbe097b40ace532c2d2ca25f57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+iQcoAhkP61P2LpMV5*XMHtZx!s zlfbGqp;aej1C!_q2UfZI4=?ZBklFF@!9~mWpUS5_@;Eu|Wv*+3B)?jwT}fYf)YSeV Zr{SY(PB+rptbh(+@O1TaS?83{1OPi{Mx+1$ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/contacts_sort_time.png b/TMessagesProj/src/main/res/drawable-mdpi/contacts_sort_time.png deleted file mode 100644 index 72d9481d6587aa5e3ed794046400d207e0513b40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+iT2B|pkcwMxCm-Z;a1dyF?x_(} zQCt{sYIOzo>Wso)SL9r7rmcUn|4iz>nLn3HPK<9nwCLo$#!%L8(`ViLbKn*GiOiXi zFEpI0(r0Ww;Ifjr*Sl9T=1s|gtKtjG4}5x(SkL6rv995(EaTN&-nDi?hborM-e9}* hiUbeu&G30|8AK$06cw<`d;~g#!PC{xWt~$(69BqnOR@j} diff --git a/TMessagesProj/src/main/res/drawable-mdpi/devices.png b/TMessagesProj/src/main/res/drawable-mdpi/devices.png deleted file mode 100755 index 30a92d92e28129f485054edcfe914f64eb9d3302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP)Qv9s|Cp1~qPR}KCY@>)dj7k4vBD)*aqXC7Es z*b(vZsU$>Sv~$l%jIX(VM1bAp*|~S fMC2DxpYn49vCH^aHo)zh00000NkvXXu0mjf8Axoi diff --git a/TMessagesProj/src/main/res/drawable-mdpi/edit_cancel.png b/TMessagesProj/src/main/res/drawable-mdpi/edit_cancel.png deleted file mode 100755 index e9c7dc6940f59aa89dbf2ed4b0aea3c9fe4099ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmVP)AnC@?Ea9~2chZ!0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91CZGcV1ONa40RR91CIA2c0EF@&TL1t8vPnciR9Fe^m_29|K^TU!{zOD1 zYShYLqnJiZ1tl>>AeB}^un`*(v`(W<8Y?4+g*IYPo1_ZFP68S`!A=XoH0e~L5&S76 z$@;v<&Sf2Tc4l|STnayUxY_x>@16JN_I8fz>e{4{#PF4-=~i?uLJCt!lB~wiZLEQ@ z2{19ySTKeFZhGK{ag~jGnrd%pDnS2b*p<`KSaY2Vb|-=Nx!p2D%|*F?YrQ)bA2v=3 zUWaRm#%RLKOo1UYH4|fv${MWR2P?)!!K-q8m4&m0CO7|8H1zy(g>tIdxL_x`;Zwmb z*;A_NuH&rkj$L7~g8>VwMzxir@GH%`)cju9553u|#^N}PLg-HXrgj?M!cvYe*?5^F zOh?&Y(K3dSQ_POTVbJ3HpzQu39W8XOeg&CcgmH|%HpV_MaRfF)EMV-YxyLqYcS7EH z%Zo8~iH>g}UH`a79^_>`xX=1w0Xh|0yMNtLZbYINUUk5k*3`G(9Te!{ISHZhnZlRw z2)>6l`ul57%J`+7DUAr{N=n#u|k;+*{4yrdxl%J4mpOy9-R1Q?*id%M1@HL9h3RK@Q7krPX7SvykYRcp*zaq8=Zo?foR9V1kKtq2k+=Y9fBkq4h+krotKct)u SY^6m20000P)gU zSIQk1mc2R8w@(cGYow3|0~my7zpx@9ARwjQf>#McOoWjr*I*@a-~~X3m1x{BVK*^= z7DMKS0rBD@mT(P5elW$*eOFHmxf|9JmUd!$iO1S_N(qC-VkGWc18>L(3CZWDx!}eV ij$W=8g~$KtIeq|ii)E;Vqnr~v$!0;{Ap7ctn}mg`@=^jQf8X4wRvLm2FDvW)B}5doz7hr0W^TY)78&q Iol`;+04Vb!ZU6uP diff --git a/TMessagesProj/src/main/res/drawable-mdpi/folders_archive.png b/TMessagesProj/src/main/res/drawable-mdpi/folders_archive.png deleted file mode 100644 index 8c4b6979918ad8901e1ec2f1bedeca54b0ae49af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)^f$cL4E3vv@Zh=t>kR6px~Z9w?M#EXx( zXx(}Q>-W4UnWs;M1&07*qoM6N<$f)z-ap~0DtI{pqXH9;^t zpyLon@rt=muxro=L!5E`Mu9xV8^{aS2CE>pAS(D)s5KQC$H4-555#1%l6z>6l$tX0 zb?nxGUJ`0Rj#Hmb#?K-)ihlz64#>}8!}t<9VI6E^PU=NVtlz$7U8I${%=}u`k-VL& zz{|W_2fSz$m0PhJcr+gCfw+)A8L3G_%F!}4om;=hDKjvFec~0UhFyq(S3BiMrg;%3 zC>(($uL7BTMC90|z>7_11WFOG@(|qSu>(1t%V3@!*Dd6gq^l8?k54x=>U&xKmGKd+ lzs|bv5B(1K9jM$6`~bN7u%g`SiHraM002ovPDHLkV1hV4_GR5(%@+1k41?1paLTj^mVI1}7MQ?fqz$ zh7lY=txM1ate^y(+?*zqHMut0+_J1ac}t!fGKaIk9WE&0wK$g-R_W1p%!^?Anza2+=t=0p&dXW(&trMUc;T75+dyZEo`E{# zb?0wsm^R@G?i#*j7PXkh6=*>!s)wmF6EG7n6HpVl0~R6k4$xc4lv~Td72e6NnRt6Zqo^B%%GY zEE^|x9U5>Adr6Y?(B%uwYj6Xmh+QkcI~{1$Hai>Zwmty9HMoTr*oV4~{aRD(2z+uV z#R)8Wg2y3^heDFbdC1Ar{#8$Wi9=OAe#;elfE{*yT08spuJXM)F)=?Bp3o0md`%P1 z;7#eKE`vP-&tS@yju+|RXINB3VsxHHZNLPa@I(*L110zXG?=8?97uyFNNMtjE>CD$ zhYnnVPsHDW?|fIB#cZCHlTduD$K8(ZN1ueiJ-c`d1c-gGkLkn?u+0EkmVlg=}yH+~Et81!#aiO~ohFLo^D{{I>Q#o+;0ROx&9-`buhr4a+Xl z@Y^)^C7GB5nXs=z|BHAgXm$cc@x-D`G{L@(3&v4REYWb;utL5DHy)YHf=t-gan5+E z?2V7KUyb1u+-U1Cg%BvZ^%rQGx+KTrS)7*|=n3s05&^M4Bk@k(`^0;TMWgf(dSl?f1Pf+MiCXA1ht z8UlehT-bJ2@;~t9uL@@rZz*D7UHRLR))P?FAGV{WZaK^V2O6PLp-U1@G)XyP3F9G1 zZUiZ^u{6oGkbu0Va8frwg)T^}6Xg9iwNnzudH+9IQ=rrBF%^q3{fOolNaz~Qe0v$5 z<${vBMcs&$ydWO z#sj#b4{EjI@8ef_V)(PlUXW{dA)&Moptj3iGt33#s9QJQz{V@pNqARP%J9dG8>@*l z9EI;P8cXT6s%h;bAg^9nJEpM4x~W${aeK(lauY5=rKc5YMPS1>z!lF=zL@$b*Y^%| znKmr?NruQEBIl5Y46K8EZb?IVrQ~XD1Gxp?;106v=U9y`Xn<~1@D);4(Wzj4g00000NkvXXu0mjfjV3>29XB1YC8h(EO{Og0orE;n#A+2E##9640W*Xb8vic z8+w<(-D;gc+Pd|g!F|9-rq0keBr^yd#hT!oo29QQb`&dpdj7e~NC`+>6242xn!S9B w-GpC5cb|0lEk7i`=a;Noi&85q@W(3f0p&>oE~~RJ8~^|S07*qoM6N<$g1eI6QUCw| diff --git a/TMessagesProj/src/main/res/drawable-mdpi/forwardvideo.png b/TMessagesProj/src/main/res/drawable-mdpi/forwardvideo.png deleted file mode 100644 index 6c463b68530a8a38eac314138799303bae2c325e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmV+i0r>ujP)`b58&O diff --git a/TMessagesProj/src/main/res/drawable-mdpi/gem.png b/TMessagesProj/src/main/res/drawable-mdpi/gem.png deleted file mode 100644 index bc9f2933ce243b94372ac06da7455db3abf48dbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2162 zcmV-&2#xoNP)X)BF3>Kf-Hgj!bkbJQZe=k`K~<}bO4AA|YoQcMfqi5cE&d_s*U`Y0L z$w`Pwvi$Z72lk)!3`)86$W#Pmd-nQZQ;0prKks;bUzcNZG#>(`?jiPcs3re~2# zr~MM-H!T+Bb@h#X6OR&pC?Ly`GtcA<{Z$yoUT0gI+}qmLsRXBPr5*TY5LkJ>72D z?RH3n-qrv-)(qHd){+9T!`vrkG16J!uv^A-qysKj2hyn|?)dILb@T4bQ_7LId${FS z=EkBQrRdpwY#x5EepS!@qp!EO!R_v*dmL~QMBfIWxsG6Ygq#lOG^*3GZb)< z9gg}Yw08Abvd~^TcFZWjP_nQLjqX(><*3W~7&S>~bm$0$BIqSE&u^p=8mJ>fHu5Tf zWywZi7SDn?gRCiZZ&g`z3eFT=r`ru!s{m)$CRlBCPyc%2^v?=pi1~AuHU0GchEyi= z_pXiZ`Wl;^ZnEIXZ7tZ;)dYvtKs6&#xS@jy-$Q_njH4#2gjy<>__vrakXCi9rVaR` zIa~_pCcw?jGRBs4yftZ{u2zQAAtOt$!KjRCdjnRMW_Q~jAACa_8;O+wQu`15-tMU1 z)6vn1p3WA0`{@?cJ8Dc2DNRB<0f@jBpoE*Mc@zi1G}Ar*@~K#eXHi4H>ShcH)xe#o zfz3@4PIz^=8Z1zFC=2P^*eIjET0%5igOsXQ$0DIkxIS`H$mAIs8hw^rAK$b4o9J`9 z@Ri;g*s5hSYedEf0Ae((k?QB?Gkn>GH|@V_T=z_xF(m7`gFBwsfep?kC_Hr?>r6ga@6UlWg|0Q+5`#ss8D(uoPLSDgzd5l=}7 z(~!x`y+9SIoFSUI)%%FV`t*&AneqidVqQ*ZCBSRRv_)aSQ=tg@!mJ8?%MyHyx3d>6 zGeM<433=0H`uNB^wjQ2Y2m}r_I^75*6xeJAgIR)|jAeK#3Lwd7+`yn_DBvw`7Ljr~ zghpb{kY2l0p$8>6nU=Dd5E5(_11ihIViNeo$G~P7U%L1amKFm?F*5M(=YUK-*FB%* z`VU%TvGDFzmm3ilGS)FfGE7mM1W{YEJf#44EvVt<(tTG6`QkxBp%Gb=O=K0zhma*Z zx1xZbU}l!sR^q^v_Zk-Frhj9M3?47YmqZ|Ih$Ib;jBM!cd$DiZ*Wn-=E>>GH#Ku1Q zd{Yxo7T4LUXw`gMn8mKr(O##RY}^RvV^QpkGaMF{frS|#ZjFEPH{-8^1Ef-XGDk@- z6V0x3VC3bw=_$9(QNPQ@;-%23O^tcnH&%cNDsO31P(_zk8rSC7T8e@^O|}CB6A3Ni zw)gU7p8us{FhXBRr4}#dJcB8_A${+*_tV*xP!KHCh_dKu^h1`hA?9S#fTe_6Az3;y zG@fPs5=4r&A{woK0Z7E+n7DFbK4($(gSJYg)&L|nta=6)3|ZMXdF9`UWFm%O2uRUD zzK^kf@M^KM!j&jtHd7ve42g`KXA4cGRZLtypVU-sAKpA1C+X%(`vO5;ogend$UNvSG%! zkl|RRBf?B+k!@kdT#}jP8^4Iy(!#5{=lidln;!D>Xh1^9d+KAg=Q&qaP409wcS5DR zZty1f1ha3HCqK_XF9st-770Rtk2AGnBCGCru{eF}55}pXUyARK8V>~Znwz(~UJ1?n z-VffL1h2{F>3{JdfsuvsAu7DMx(b#eOo)}h3<9^u|B3Ccl50k}Tw%RFK*ydTFUo*_ z>QirI$jNa@JcCigsMlRz#`pMK9@1heuh$Pq?Dq`%ayj+j^w{}~ z%0e?UV=$HPD;DwPn+8-Co#|`mR4u0+qRiC&9hILd2X(oQ>!Y)J|9)RGvh;$Zy$7*X z39ZaHk^WaF46H=h#mCMe6-!gTS+Ryw!^dJl-^sXHdyJoLW`^<&hIasXt!w9Clp1g o&S=?ToE-A6L+Z;d|33`;2lF|=;5RG7(*OVf07*qoM6N<$g29a{4*&oF diff --git a/TMessagesProj/src/main/res/drawable-mdpi/gem_s.png b/TMessagesProj/src/main/res/drawable-mdpi/gem_s.png deleted file mode 100644 index bd4842540145ef6132c264700fc8301a79810788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmV+hhi3|CCD9G%=H{Gx&Uc>o zUf`6(=-nj>*-YpL`)pvc0&Tx7wHR9vzYoHMG^1MfKg{;Qfwhr`!cXJ;E+XV6^E z;%otd4OF(QVl^pKb`>c>MrL0@T?GeDr$>3jgAJ^sDp_zXCww|DG6qthRJie z{>v<6pos=|fp3cv#y*X{O!VIDCM~d6Wq3F}F<#5@S6hTi4l8<~!bwBOqs2P0(9U89DxcKNJ&t7G<(yV+h+3{=@^4o5K*x|Wp?kVpbEU%y8qp^Z8W zbR;yt!|9Na?7NlR-dMT5Fzpv&1l&pgj*TSEC!PZ4e+0xxDCjwM{wsiXz~J4*=%T-U zX>Lu~jA<|6kisM{&xe(8aH<^xw*$v|jprUxzC!U2t_pTfMAlbyI-MpQQ2AryNv!)n zKau+H4CZ71EAw5$&)t3dYHNR1HFgd6{tNu4(US=JAEmqFA2^OPM9s|}9DSaXuv4FZ Y0aEY`lc|1oDdNF zS?STaOuLc_CBfo}U!--5O=6Zi9urzwaZ>1ZbL=I?$TxmMOizDq1Uiqw)78&qol`;+ E0N~12FaQ7m diff --git a/TMessagesProj/src/main/res/drawable-mdpi/group_admin.png b/TMessagesProj/src/main/res/drawable-mdpi/group_admin.png deleted file mode 100755 index 51ebf497464fa8344ae1300f34920362839b2ce3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+i2c9mDAr*{A5AM}IQYgdlpnp26 zX6wPeqh}OK7aMGre8X0MVC|^|Ys@|eUYhFDb@0i*rp*@uHOlWFJpIGt`udW0@6sPt zKB~V_vN%b#?(n3pGYei zY#jY<&W^I@*QP4po~GO%n5@<#eNDWQr|R3Qi+g9WmzpwP>{VRLw#YhtpLMUzvYHcn zX7|)An|kHyRG;JjjhC-jqvg5kR9D(!VbNFhsdz%s d60!Pc!au9yKj(#mR{oTJ7?e2q*!cP{Yngy^Kt(2CFbua(E&o9Tu z|BrFkx;;0$<{Lb^u-uyaqwM2Xv!bqvm~64pbhUT0&4}(QSe>i-%lPRnZ8_5mUy^LA z9KRT(9a}VMQRj)~7fH8v?wZxLiu?CO){95ieySWUjDF!YKcCV{+>2v`5x$Z!52@PPE*Yc4zN;SxuLDoBo}exP00Es3$iI kv^*!NfRL77&awNS`Q&QClfQod1_}cPPgg&ebxsLQ0LZL-fdBvi diff --git a/TMessagesProj/src/main/res/drawable-mdpi/group_ban_new.png b/TMessagesProj/src/main/res/drawable-mdpi/group_ban_new.png deleted file mode 100755 index fa618b8907eba90b1c48f1c78240df1796fd5530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+ic25__kcwN$Kh8TyrAT;5HT_d= zu52-FS)38!xQe&f(6oWUv(DlAgSI4R&P3jg8d71(*$(Umy6F>-oawlz@b|yUjQ>CP z+Z)z3INban^*^%Xv&sMZi~nU3#7@^Q{D0_wWMOu~ANh~}McbVJ|DFG1zF_r{tACHP rzS@v|fPKZ}D9>$;-~6N!co`<{IWgCMOYSkClNdZ*{an^LB{Ts5?if%C diff --git a/TMessagesProj/src/main/res/drawable-mdpi/group_banned.png b/TMessagesProj/src/main/res/drawable-mdpi/group_banned.png deleted file mode 100755 index bbdcb1486c841623412788e02ffccf02152c8368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+ieoq(2kcwM-ulRB`C4rAscb-}F?hQAxvX!zcrkui7Po~!)oG`DBw%>Vr7JkK5e6%h%=fQTH)4>b|#53LUp5vZE2S4Cva{9eit z==6vU0i!^d^=uOO1kQnyt_7F^F0C~mz!`8Ib5IeHhP2PUh|Jo1Do5Z2xC7RKr-J=2 z1Iv0;N|i$nH1m;Oq+&swCUkgo9t&0;&Gj|8WX3*VEU?Dr7C1JIFS(PkMb{{ZyaNn&Z&%^p&S%zhi jMgHlAOZ^5qFP}1)FA2)K=w$E_7CM{eR+v zgY~R6ULP4=Whfl~yJVLAs>BdxJ>K;jR@FB~H~;@Xea5N(zxh7d@H058Pdd2NT8Iy5 O3WKMspUXO@geCwh`YDtE diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_fave.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_fave.png deleted file mode 100755 index fc2b814fff2255f54910315a82294b07c107b790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmV+u0qp*XP)}DXIe?wie0b9PHb3F zRx%Z1EW00000NkvXXu0mjfG;olW diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_bluetooth_white_24dp.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_bluetooth_white_24dp.png deleted file mode 100755 index 27a8a719f4591e7893c5b71630129478e21c440d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 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 Z{|EDtt`ge4Dx3fS002ovPDHLkV1nG>g_r;U literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/icon_3_background_sa.png b/TMessagesProj/src/main/res/drawable-mdpi/icon_3_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb686bd4344e0bb361b9aa26a108d0521ca2349 GIT binary patch literal 7970 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 Y-!|Zs)9}4|Jpcdz07*qoM6N<$f`R>bY5)KL literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/icon_4_background_sa.png b/TMessagesProj/src/main/res/drawable-mdpi/icon_4_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..e5eebdadaf288c6cd155b3f943875144e8932be6 GIT binary patch literal 9979 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 FV1j)d8Danc literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/icon_5_background_sa.png b/TMessagesProj/src/main/res/drawable-mdpi/icon_5_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb8317f4bd326a2be4c10d9d80d4406da8dd782 GIT binary patch literal 11051 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/icon_6_background_sa.png b/TMessagesProj/src/main/res/drawable-mdpi/icon_6_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d455efc5e3a0779d870f7b186878ab3f5058fd GIT binary patch literal 5841 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 b5%>QAtO|=LDbzEk00000NkvXXu0mjf4nHZ; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/icon_background_clip.png b/TMessagesProj/src/main/res/drawable-mdpi/icon_background_clip.png new file mode 100644 index 0000000000000000000000000000000000000000..c598e12dbce289bb8dbca10dc1e97fe1fb53a217 GIT binary patch literal 1475 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 yF9j*pLbDP-5moH1P@0WelFKelF{r5}E)7)=WD9 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/list_broadcast.png b/TMessagesProj/src/main/res/drawable-mdpi/list_broadcast.png deleted file mode 100755 index d7038f89c02dfee208d45c355b919a1f2735a589..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$0wn*`OvwRKIi4<#Ar-eu&u!#vFc4{Z$lmmT zZQD5oiy*cWLScLY0++1ZqO`SFzeyDRp(>;}=|^1go$GTHj+#g82|2*vdUKN#C$sgQ z1)L#%uS#29^PiFDQ06XJ6tF|)k%xam#iYOIt{#~4X_|9?y4TLf2kuVFx&OI$!L}Jd Pdl@`k{an^LB{Ts59I-ya diff --git a/TMessagesProj/src/main/res/drawable-mdpi/list_group.png b/TMessagesProj/src/main/res/drawable-mdpi/list_group.png deleted file mode 100755 index c0620b5e26c1529982b7105dbdf725edb276835e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!2%=?zWWN2SnuiL7*fGldeG3TsgQyF!u%%^ zQP~zAdAy0vW~~2%O~kf_J-DXgA)fJ0j?Ywe?t*1~4=xCqn5gXe@k3zhtGzlIQZJs^ z--olIa({I|Ay$^0@Cau^uJ#-dZ*`y=W)Z^c6@^U`E z(RudIv+JtgYYFS}y07bvd9gI<{_th!~MO-iX ge-U*J1k!&Q7s?)E5mdKI;Vst07T?pI{*Lx diff --git a/TMessagesProj/src/main/res/drawable-mdpi/location_current.png b/TMessagesProj/src/main/res/drawable-mdpi/location_current.png deleted file mode 100644 index 807ad8950977ecc1f8ce44a25a24ff40ecc24714..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)m#xlsQVuw4s2Knj>%m(m}xm z%zuky1de9$U=RG6A1TsbX?ML|H_d-S+qQRbvN@@E!H@>$HL)sg#GUx$T6~LbJT};> zz+60tHK3UfYM=pY@o1IbWVhl@)`ZK>@1t=q zI~o8rU?sj?a#NtGUveL1`@b68eQ-jH-+yrWt;(uOk5joUc9A8L_R zTquDZLZzccRA35m;VWp0Z@^p$Y=i6$I^#7-#|XRO9%MUEmQ=_jIWNqDwMha`D!mE< zR*64`f|TNz1iJZ{x}KO+Vu-LGo=m|SK9H#Tm?7r@?b_NLfj5;tI*+IpPE6GqzCM~X z0dsoVb)$L2_r+_{jw$fNifQnSAG8I;+Q6yFX(Kf@m(e3u<0=X9xiAJgrm_VX0Q(A8 ziTy^aQ&pGE0(%H`k#xb_rnr^(8e(mnLFB~X+dz3eX)x^~2u8r}SQpJ_7AYs*g#%W8;2V1E@y z#ML(E$WxdPQ($d|U;^wb)X%QiQPX5%nsk8Py|q^YeXGbJNLJ%`j%F3G50?;f+#s6* j8tausPE|JgzoB^tE*g`?CmCbz00000NkvXXu0mjf`l|1X diff --git a/TMessagesProj/src/main/res/drawable-mdpi/lock_open.png b/TMessagesProj/src/main/res/drawable-mdpi/lock_open.png deleted file mode 100644 index cdb7696bbf59db44e4fd75f8d0661263e53e883f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmV;`04o29P)P000yS1ONa4(tchx0001-NkloL?Y`Pj$t(_lI7FLQY^E`{@p*xH!qnt zAw;8N=j38ZwuM(|(lS-l-sx(4?75LzG1bZ)Q^m(@@j)@o zEj`6v9$-(=OQLdtqpW!0OmXFHRvh6{6$8{+bA~U*uJAM~Y8=EVhFLQJdbv+!U}ovYjis4^DjR!lvI6;qo-U3d z9=yp360D0A9r8H-{QqCC%`tiP{ES)$?*k1PyaBB~OR^Ng|E_R-(k65G0Gq5qWaA`* zFow@UVV)fd*OvHm%l~b+Y*UhYCLF}Ou(f}~uEZ-!YYsZ~DBNx8Yn8aZVC7A=C&B8R hizRJN$to%`Ff7|280o?ID+OpdgQu&X%Q~loCIAEjK7s%M diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_bookmarks_14.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_bookmarks_14.png deleted file mode 100644 index 1f6e8259fdbf1a26ab9e4a89ce23458d5b67238d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T03$Q?+APGX)<&w|P1wMc@`_ zT@EEi*q|}rQF88fq@6?ocHlFdi4^>0fZo&a1*BDoZ6h%QTCX5@U}KA8g7oBI6SQVy zO1dEm>YXy@R4KQdbg&BBgjVoCH zoJCs5W#N(4KE`GuMM(iQzylL_jy>LAPfRb-HLKCVh8yAqY1H#@*MzpP(>=LU?3hLE|vaO^_?5IT~6Dq+{k~~$C>Xk@Hq6-$lEZ8qd zf}K)Dd}usL;FtPc68Lvj3^xZhs>GQBI%!)cHbJxscEBs}%L4oyIQ}N}4kQ(K>$y-s zI^O`-nw;J2ywD`bwI4CLEwCE8dZ3y^rENExL~8{50qu_wDaXBF*J+?#srNotUnJr+ za=sfMDSVjV`zZvTqR;6)$Yk(8!KJ<`L?k^qC%rg!yd(M@Oo4kKdGxI$It$-`6)=(7 zshI61fw-D~x#mI4BnlSEeU9>Uc?nAUM$o@WP_jusPw96J~!*ofGnkPwOoJlr$0XE0kv(<|YZUODnvCF^W@3e$xP0;jN*kImX#E$ze z_zRXt>K}@?@ufK?<*1l*?xK-ly)J?EPPG|AH}Hjw2Dn}<7c>XK<0|_@G<;AHctvQf z%eKCev6@0jO_MuuO`-Qt^2JXTtFUE9UMx=s ziX;$j0?je?%;!M{oFXqtpVMK=TUhp?h7dM*YJldjNb7{B3Ydi|ZaA|JyQZ<3V~FUj#j%Ii}U~98~jPj!0T%HqWCrY`!tBaF^qvGVCl(X8}=HL%NvNdhxU8X4c2XJxqE^M`> z#?eJNh;NbC^7d@6w(rY-W7vUvhlbM}JQI#;ujM^@CFJM>0JYE0m}eHDwQjq1uHT}Dk?RI%?HCQ@Sx%lQk- zm`aUKdsx+yXK1mCJ)QYQ(GEUoO9R?`#ExQ~(yoFn-KnG7XH>N3cUrx}V(NH{_gd4K zGUigp9Ljl)d6ZK}8S{CLO}BdUz=)AN(CgM_8q=ccG)eSZb8k(5k~me>l17x=*if|K z3cGf3WkJz~8>KX200&M`HJ&8KRdM0~18GFTwmTPQ6!J*Hj0<0z|-P-f%-u Qwg3PC07*qoM6N<$f}|P2r2qf` diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_bots.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_bots.png deleted file mode 100644 index da7b914f91d60bf5ef6e42961e16bb52157248bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0>HXew&b{Z|AMZ7l z>RXpP5d6=$FbuDfe*><-5mbU8_)FUxqrf8M;S8+(qLYKk3squ*OOS=gwh$Ze5x&C- z$g1$T>tYO!iWJbZ@rm%=f|qa%D!LHQY1?OzwoCR2bS7RSz67VR4cEMhtpW_tnUvwC z;%ey5Q$iOpT4es zA?EjXx#ksupW#8Pq|1?$CmBTFfg+57Y)U^&qHWY=_@=(Ghek_Iz^DZIwK*8OuYTPK ztbk10_N1o5uteL@J3`)5Hzw4iXq|64Do|e$j_b~8ZviIckQ<;I(D=4>TCSR zK9w!>j=&GtgF}~e?n~f&NsaP9QptN diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_broadcast.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_broadcast.png deleted file mode 100644 index b915f1ffe730a10b2fe6d8cce787f7e4f5df8bc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 542 zcmV+(0^$9MP)^TvTAM;A(Rm6M`eTpYwf zN^w{xNr{^hNsi94r5q@7AfK`0_pJBb-eGrkcG^<%uirfH`+UyF&TJs?uiw4{wrzL8 zA>1q5QqXgvX%MF19iHJxt*^1=1sO)81~>rGDKtxC?1VT_YtBI=SvhDUeg~p?DAP?@ z4~P?WYG1Klh$SHVB^ZQsA?s{O^O;{R(-1L^Ci737CU@nn$o&@|uYBbN||9I#L*hH`vp0 z*1aGa5+61M3y=i4^}|pJaS%1>T31WrdMe$vqpERK?WfH`d@;CGu@7bCtM0gCW{qP_ zV!JBZP=n+diWVJ-Z17dXG;G2oRD92I-BYj)q7#rmHPM)Bk)I$wfFg%>3s2`^~*G z=gg_8siKTAw_yNkt5~+U6bsx1=`DPK?qXMk5sJ-({m=+o;SaorQIHN-SUQm(1O6{!tRfSj3vxRQf}}HCEH7=F z0_d8b8|-7c8C#8+qyR)7-6o5`ylBfR-a{OPKykI)R*PU zjFY4-e4uPJ3Ok|jZqd)d25`57ZUjAX<%`5=&*xOh0GLb rCB6yPLL2B^dJXqrfOl+!wk-VvIkjx4JfS)x00000NkvXXu0mjft*K?@ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_broadcast_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_broadcast_hw.png deleted file mode 100644 index d602c9dbd9b7c1d41477b69b13c717d0b20a6707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmV->0)+jEP)buCy43M_%B4txWRpl}C~#3Uc#^wgR(E@R)LDEgG-DGWa}RHUa9 zu?3KCz^ska9{vf~G|pbC#?L_)$!_oqn07Z|mG$mt} zdf-lMi7iFs9)gJy<0D9!bG;lfU8tn)=C!P{6CC-~ zUWE%DO&yGW-(j@ctx~@T_Ve}mBYNxw5Awna#;Ub>!ey*x2AqOtVO4R4nh!wswpfv4 z5w1FU9Dl{}0|Rkr3)3M8 zW|53Tb65#MFonrDG>oGV1Tz?qLkTY))Cf+{8QZ@@ELg;D{5>V{j;z{vROJd6n#!Ar zN$iw6NEI>|E0=Y6^sJ{`HmcxW_pi*LO^4DBENT6V%^+vwXSD`C+}Ae-@oTM=Q-y& zTPE|L6!`0eVYq_WGN|@*DgANkUI#(&GPa%t+F=N0OPZ_QEoSbBz$yawp$g8x5a`Ng zBJIQ)*bNh~k-K}2&16{U228>R6YzeB*FbFv=6L1CrFK1N&g(AFf+O|$4a6GYv62ZI zC3nd0l~26S_O;B#Z?#1O))t#yoYim>rohaS{(rtBMtKbc2&yT@D>*uhWZOviE zQjh$9io$yM3?tB}25c)xd))+#8({)2*_sN*cR||b>PlLQu9?y>-0q6-b;_l+E+&hw zt$pZXj2FQd_zLDCT`pot?gQyuaRT3cJx;nfu}z?@)1fX1f2)lTVBH&7$m{Bw;Rn2e z$l1Zy!R`m?5nP3F7=xz2v*bs_j)Qc-&uO94peu}Qk1Hfz2d5wlI@~uwUxjHRUI{N? zG%k6IM0Q#tCP1A#)G^t7h?)~1EmWkqp&tKRzAX8dLzzpiFxe4XvmjE-%2zkg=i zB+GQ@?*JWcJ;&NeI{}@1ot@d#ez!>ETgM98KK*IXpW($Y2p=Jh8Yo%^AK1&h#00005n$dJEc3&g`VPI(HCLDripWG+yx zz>Sh3$q^;-?!z32RrT^U7`5|?ZQ-L9GHR0)J8O5Axdr*esF^sw-;OPQLO$MZp7>N8 zUkL7naKZ|R``{@&0r&N7-Fa%OZV?CM2GxWO_%*Yp@D6^!D)jgwa^L-2a7{xI>~9d% z?sJiCZ-VR#tnX?(!sDW`z;8c!!Jl5E58xJip>$9fIO_h0+`p= z)}5!|c5+FAtbFphA4V|kHMFzV?^FKaWKGo&@<+iuoa9gws|nkJF~3OewV%_p9%xVj z-vUW{%VMLXDU_h04PJya|4*&P|0sO)4szF^3$|ej9&vSj!0+AIpbln1b`R{mbe33m zlkDo=cZw%4?6w&hMVFI9$#uo~QG6rZ1)ZJ#q^_!%=4E)}H)$xy-orOACtW(?cDU&G zlwBk41ldqo(azvAXy#x;V(eu|pIM`+U|K6Y7BsD}3EOZVj%5xEC21N4S#wBdYv?Y) zCpBQVY`&sL{J^wC(aDP9gn*vYpl?`6q;nwp zSb_=8+AF;J$8p`P&HbcY)y5G0A-MzBK{x#&(5wFtbmLod|DvkiWH$}$qBEv%`ETqG XuNgUjtJ`T`00000NkvXXu0mjfYKTR5 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_calls_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_calls_ny.png deleted file mode 100644 index 7ab3191bbccc1c62a7380039789687a094cca74d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmVcDT$-(lTr)BQgeT58=A~|s*O`fd7=@``5R&?E+(Sh8huipD0%3kF$Q_8)4)_hwBWe2Sdq$zdYyVSrE=mZ z4y7`puMLKotV5fcR6?x7Jkf+5DNodT?5SE&;{sOaC!(m3@5BOZGDw4JBizH9d?EVT ztx-XhQ?8qnuf#bY4A6=OG2UHl*IU%Nj22O_)d%;}LyXexv}mx`@I(xC9#<@I6&n?k zM4Zr>MASNq#ra0mh@ve%>2b}ld?AkLP9ipAPm+j&C~4QOC?+_p3-2A%WTi!JdYeSt z^2iV^W{4_L(ymR6G+Ruw(?dV(Pa--TGz+gx7gdSqYnkVmoQRU?8f~-FT%{!9nRZij z;enzUY`NQbVTGFfir9yxW@@!cFU{WIwatd)cf?pvu+Mx;T*3`&)#cB`L??aKVVCOs a51#=HySg}-JI4Y500006PcB7$V>W-BGh_FDRFcmg6b zJ_^jtCd0OSPWAiV`@1>6drGCzF9-T!A3ntT4*tG4r>QB#la8*gjwghgn&t;Dm$m#> z&qT^6^itkZ&J3%#vuwel$$_UPEn2YT4vh?-q5f~OI?glMmZ;{AXEZd-B{|#eaU8MZdi?LxD zj2!OKi+C3B?y9>h<-!~!N4Hbt|VFpZCnPm$z9;8 zXcg{Ux@nQ2ZKQ39wn#)lOcxOdnk|D8AySXed-^=gnVFmC+SNrLJa=Z^@8`_SnLDSh z?tiyZkp(76qPWX&6;4=ALi+_4OQq6|Y5(5vuq&_xmFzQ)&Z18WR!H(ClC_dka1LI; z85o9n*oA$&M&~hX!z0*)U!Ya5(pEMebQa!#Z$A)vD`n!l4T|w?6hV{DS%WirPQM>s z!dv)ld}OxY=tm9T6ovJEyWu39hP!Yd*5C<*M$%W93q92<)TxJM(4oqiyTTScA97x2 zKysPk9q2Mylbc|LTQ<%bv|ZvqA!wy>BS1D5^P+cyPNQ$qw3UIOk15!9)cb-zCg&pB zBs9YV&`t>TrA=B4-6~A8!GaZ{jijC=>GR8>_nB`b;yc_5DRc{#c`rJ-IWuhqQ89(= zz%8XpE3E&envT9=3R#f{E>fwJtqcCdrs-N!OlIi1Z-?MUCR(S+1ILNg!FlQ@Gk#`1 z#bm}-?|@#zLMHkhd-<_Lqd)PC`QOn#G}M<(Ly?K+ADN~`PN|~sHNr4#Tbvs8r8VX& z{TZS6!eGpoYB*)V3f%Fd)M zeE!_Me@}q6;T{Ah5?|Day%2RAB$C($`eIaT=><(vJH)<=`}K684`y4+cC8{@XJP}; z0Yz82Zj0HVeGTVre3Moef;5>f^4YX^6hBP<(06G~=i?rlnii(mPovg#GKN7l{{&@00000NkvXXu0mjfr-eg4 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_camera_av.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_camera_av.png deleted file mode 100644 index 35770572ca6a3d2923a3fe24dea0b12071e91953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmV;90df9`P)O$wT&QR?-j`p zNN=l{d9F~i8$YtO^LFpdGtAdJQS{xKB}X!;ROZM}eFs;?Vq4%@N5?bR5{p$oU=#MW zw6$?#N}{GFG35qrZB6?o3ecDq?%ld`p;nwz-Gw{1{-I^8+vhjdRr;-7#X2@}bS4<- zC58;W%Zv!la&#^j&4-wC>A{0bbA{}v;5;h&1)V+t sf5gR#8nEm@L;6KD99TBsJN#Gw0cern>9m-F*Z=?k07*qoM6N<$g4xfnYXATM diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_channel_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_channel_ny.png deleted file mode 100644 index 57eadd807d6d95541eeda4523849e36fe7da4f58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 477 zcmV<30V4j1P)sJ`1jHw=Z;uS$4toSh=#Vy zBP$gIK_DfIylw4zZE+jRh8?hsiF)5wNJ5{(GFY>Q8T;*SiAfvt%2ylfk9Qs$v9lSu z%oO7=$zWD7({qhk8+pgmv9@gc&imtX$ zr;7Qy%&16KpNHHxRC7W~QblHSXd2TsC#0gFag5iTkcxs5j)~WtxZ@ISp@<+NI`w$( zM$NhErS8q4*$~ui0gEP0TExQoG9*>ZHbV6|c9~KD1yl9c7H@=Z;zHBcK5TeBg6iG* zaIS$KAMnhmL7h$GZ`Ea=v*xg>H*EELTKy43G0A+&>ug$ja54MH{@%IEJn-Yds_*SkyFDKGqZFYo(2@0ahm z?~+n!*di#hA?KWQ58(k+%=3%<6%KWLXrW!Hi4Slq*I)u^%|mj#nLY$7 zQV|Wfktt4T%41%VTS<|Ww3AWz0bQ6#6%{DTYcn)!)U!}r0L8l3?6aU5;Us2yRvL9{ z*1Tq)1?JRjRz0$oqYLs3^f-LqW3_=UZAK5XW`+@8=q{D6)vqIImS%<#U+6cLi-z^D zlBO`9MFZjseWQ4XdwV}>4w`MoZTu(EjQBzyt@u1@ULn6QZ^N6xx6rGn13j4Z1O*Ft zD>mbVoPOwOJOM=${KJ;B7@jdW0L4inp1c7}LB5uKJ1qLtA1rs+fByWz+JxQw zhc~=@U?j}ic2M$1e~nNKd)7qe$Y1v*k7#V>-oWtg0PlzOJnY`9UT7y+Z+st7BM|UH zq(g==KfCx~TjLGG4@@cP&1_4%bdp6X8Ju-f7+YnIPvV*R{_;l+(P!-nY}qv@^v|B; zuvaq3t?H{4TC#J?+(5ookE<%LC6*oJbk%F!`b6e$XG`%iSzD)iHltsx&!sY&!WG&T z)o)yHJRu!$R6^NMA!+u;<_)qOojO{5C#MEIuDDueR$5~wWbe5r|4h2Cy>0t>u7w`; zuIsio=O6JGpFE@dfsT^pgG)}&%s)N-UikJuQ;6QBUAB*0mh_&BP4q8c64tel&B~HT z%g|6zAoIO}hv}U1P!9WZryo%%i|5(-)U%uG*+^x)3TIrlkQIaJ!SUMs?YnaJ}~$C VH<|8ZRy+=hS5H?zmvv4FO#n#x>TUo4 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_clear_recent.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_clear_recent.png deleted file mode 100644 index d37e66f784c4eb1f6e746d5e8a9d3b7d1d4a93b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)VSAeOe>SJo`l`OPz_IT3l(-=ed2o{wcB}O+D7e$4v1&FW0rZ8eiF7gvhP;z z*Dhmp>~}z0H{u>(7wR_21GlNn=R@NkaF2_##0~qVB9 zotUR3k%2ck&^GwqgUZ1)+=DdkOvbZr3n}BoidvErumScVDe@|SuK}i@()4|gcgYFD z1}PZqg$-N4tfssx$SKCJYl0js!B78}wyXS0)m5m93C=)L!FlL|M);f0gsWJBNjD)6 zehT#A^W74sm|806f*pf2=qAy7^LL+eCi|D~4txQ^X;hjF8U{N60000k3_>Z{=ItT7u9KOxD=bjM$T?opw=~qzDuT9xP zS%pC`V+IVWSQu6x zUUr_$yMx|h_|2GV$-iW^F<*;eAHMrxresc=@Do>xVcHS1#uZBDeZ12lJ-0z`J)5WJ zt8gy9^weh+lDg~=Bz4IO5>9FnY{lVtSTHRuh1-IqxE0+)f*f|o!%J8r;gd&#j41 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_contacts.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_contacts.png deleted file mode 100644 index 1eedff1980f0fa00b0ef3876bfba98f2ed3f7903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmV;d0aN~oP)XHCuNkCg@u)7tNarzELoWR2^O|WQ8soK7Dy>+7G#4E%2GO{}bS{5#We&Z2-Og^O59$3<1xESOKPh zX<*ydvOq_@pct?Z{20K$zi6=KdO=AGv>s4W54ZyEfVMDDtO7S_{vaqXNym}~B=v*^ zssws9-xYGETT;#}x_qVS1YUr1pw&^jK_Cb0HKOYl>_2S*{YC33;LP?W8v%*~YZmYw zIJA~7XueVRs9-a|uHC6eU=tX3ops4`f$Ej#m4#KjLd=AuQAvG;JS2Tvf-&>?=Nn0< zl0G8mSX6>J;K?!Hf^-R_t1Vqd(vqZGNvo2sLvm}8G$v_QQoE$I=XpC(z9>Jbzkm}U z5z-uf8@5Jyh+4Xgm1d#}NXeaZ#dVFKl=+KDnUyLVwBZ8XTNl060Q#)qou>YRB>e)N W7=)(OUgb>y0000`qy%9EjY6SC&?1lsp%ST$>voZZv3_q{py&V6^@bJfZNKkm8TIp=%x z-n+ahmG)bd;~Pqn%7Z)0nWo6)4sF*wLDy;{V+kjniKL+$g|B~jLno(V&03E zps7}adoTl+4dv2Qo64D+M^{|+H8v~o3l4cPNYGo}r7IWJ*URTL^1tgQl;Cx(3?eD{N*84KoehhT)vru+=g@ zPJQwMdA9pGHWg4TdNC)V-T@OZ28Ab4qtq8ckv>-UKKjhJmg65vt85;E9!bli3>(Rv zSL*F9v|~-3QFFX~7YJb<$Ub#m&O5!$uEt#^%f8JLbbV4TYRlRQb=ZOfrun*!qzm?LnLd#cVWmy&)%`SRa5s zq+$(p5yj1DX0{?H$z@5z8eu?U_Ud?EBvamTU(5O56 z2#VKm1CED1%B5LNJqpe2eJ434-3-maH*m2_^4?JHLOpZP9s9Vwe~C_rSB7=m&%!wv pg2SNDf6ZHX1W$_o%c$+s_y>E-Og5aQ{UHDV002ovPDHLkV1o7JTZI4s diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_contacts_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_contacts_hw.png deleted file mode 100644 index 1aab19c561caedbdfaa2b07cc88bdfc189a0c7df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)#`hITS9&sJrA$-N&#se&7q1{B6_W zH2nlUNn`M&y1_P%i&LQAV*#GRN7xAc#JN}$RxbRwBw`Bs-~?!u_JZ;&;Vb!L=u8L< zLn({YTI9o(T-E~Ub~f1+YsvfAgOKe7oZ=Mg%4teEU__zng%~4t5H`ah(EaRW5q6nZ;Ll9$S&4|qL_-I;czi7o;)=K-}8!H8ZpsG%MQ>HjLm9NOoH+ zj^nFo$bD)H7Nk*LGkl->mr!UTp;v~a>1(6VSjW)}H_0C+DhY=q_9NeO#A}@kmwdxH z^eVXLeW{yp-}~Ru`M0Fau$eY8)fDT1l@tzHd>u}EpbyT&K(RCP$dy2nyQ>xJFJ8EpkaDsw}Spy p=-Ab9tP5;_PcWW;dEx(i`2}}V(oh(MAh!Sj002ovPDHLkV1liZ?G*QErMEHoE$46br5k#1yQhA=tL?^*2!Gw>4Z{H+MlXU9ca`!yXm%HcTeow@no1!`8Exk z;! zuq-wf&ezOO-t5l#&Y39sU&F3rT|=*ix{mEy0BmT3o(DYWfwqmgphF{^+E!FUP0_Yf zj2xPSFt9f{bby2De9wRk%({_S>FYop_3u?lY-ByaT%q!_nTDcB1s#E6G?QB)6h)e( zl+?iH0%#MBBy_89X$IO)-@%i+B=jEq?*uxsny3{w-jdK*%WMM}2lbNwr8Ormv=Vjc zS)6;P%=SOJ57pbshirxFmBT(|KxZf?p@L4@5i`id5e0eP3y^H@O+}7XXE9ZArpps~ zI=5qa8j58*&U5mVN^ak^mX7|y$B;NJ1s7-ND(MM}Xt=xWkP-9Is|LvW6N z51zr=jYW(naG$_}RXx<^QRovaYl9J!(vX&$a^X6Rufc~m*T$8Gw5<7sY@qLfe@1zq z1vn$Ce{j7iv;(V-1*hbXf*Ks4>@7%W7?6g9T>8<@=)aJ=?NQ^?-?|_6qfw*#W8b79 zt$O3?Z-E|G^`lm%+(Kg;6o8=C{SCUBG%B6hzC~qq2jbR1S6Nbj}`$$0o8AwNnYz5yYpsA$?%&n)^nZg*(AZd+@LiT#YEl78m z6?d&x8bqLpBu%JEL)e3Kg|t<3TSTJ(^j4B0Qgi77iS>6n)6j}vFxdUEdT%j07*qoM6N<$f+GEU8UO$Q diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_groups.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_groups.png deleted file mode 100644 index 09beec6d05f814ee302cc9d81a3c0090a7bb6efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_@5P)XTqVKMmwEU^%?B}-YcGqUtj?4$-8sp&SBG%PH} zYlKoG8k<4!(XY-=&wb|JJ8l*>^R1`f?>x`!>-XRez{o)y*vo_l4drbxwZX%27@Iq`p;`WeR)a0=JUArRu#b@`vjB z=^X6{@~JlIXsBP}LZv(u{7dS-h}=l?{7#PggLtToqw8_rtFDg!8yV+J?C(h(&C2TH zS$y}mXqS0FJvbA!KLf`-}8Txa9SHNT7TjeNC z-A;AXze718PDd(xqi=FNk9KKFT_4a0c@P+hXj-8x>m$Gh;39AWSPpCrZkdT~zyMGK z4i-f*R7F(YXtIl;xgcqSb~+nloV`!0&Zz%xrt+rHyU>Ai(#Typ86I?5crW6+y#wb_ xT4g2r<6XMJci=qmri0EHaJ5UjGx#3>egpVXm*(j>q&NTo002ovPDHLkV1h3i30?pI diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_groups_14.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_groups_14.png deleted file mode 100644 index 0a0b949d7b146c0a925e5653b45833a8050fdd52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 802 zcmV+-1Ks?IP)mY(C@E?d4wP}&9 zg2GjV3%4Rc1cmf6Bnl#WP|-^Y#0Ub((8wTrj8t~}eD9p!?aZCq72UMy3!nL&^Lw1f zz2~0EWd4PMAgF>CsGsTl)XsrsnCp*`wGM$w+K(acd_&l$j%TvjZ1$atg@&3s8ZEHS zp>`AG;Jtj*3}gR@qOBm^fb;Mgeu1wMI*MO|HxSn_j;nCa1rFH^+J#B0k~&yLuNow4 z`?g})EwB@$56}bAuBjVUfVxJ^KCm(6E{fn8w~D3ai(BHyUCt!-N<8lOiI2hy-xs!V zzJ!sofaf5t$D&CF;jI@cYZC8+pHQQqUYfS5&T7zONRuALD|iBp)GbO$)&Z)3waT$~ zq?0CRp5lAhLIRWc^jL3$2H6j%$sfm7gBI(vgubN3J+z4yhpyt!a*SUP?%IoM*P2Mu z3%7Vcdjf2cT9_1$?I+3E#>rU$4Nwc(2%gXHMu#M4fU`L-!71}fTGxb z6X=_{V7|B|HUJ+%yVZNW58q%xJlDmK5tH_o#Bp2)ov7B503CcMK{{nI+O44{2rgl( z%r8rSBYXmV!1j8IDL7Wb5NNVqI0%P9E0-R@JR6X91)K#*$Gr^>KsOZND{Qy?5=%gn zT?S2NQc)K~lUNZxO?Cptz?T-c+42%C32R)1?z0`RFfq|{l2ZfQpaZ0`$8V?3E6Z$f zox7Z#TcA5FRpb;v-&dbYTpuq;nn;(Yq+>i?S&cr@bg}I_;pWq?m%k1|txnoFME`YB zvN^Fi_zbBRW>lEapjH>Jq(49%^>9KBtUGH0JBYmqwV-3Jt7uxHrh$SnSJX-WIc=TV zcFnj49>5ofOEjt<9{T>61 g|AYR2&HM@c24g9dpued6CIA2c07*qoM6N<$f@8LIJ^%m! diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_groups_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_groups_hw.png deleted file mode 100644 index f7ce13365ad0c37cd45e44f4afa1e9208e047536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 797 zcmV+&1LFLNP)?oEIE85Eq&dWFtXTfS@m=(Z|la2E5@X@9*bw^ zS#A1+;w32PqQ@Z*Emk9zy@DFkf=9e>3GqDWhbf3HZ#~XaSshicNF=X{w4*kV^F`gP z%kah*q#uJ0_z0U}Egaz1&B41Bt68zxC52o^*l&64(VOD@@5QXFQ~NVxNH(|Z6on2~ zPSas)Aa8~Nm@qAP#DmZ;0bdVad_3j-JG5%W!4Tetgn(Q(bt4qp($GhxK~)L3({Rbh z?zG6Yz_~DB0pbXlxlKvZ=Y>h@leZ^AetM%M$pm-)n;IB$I{CPAnVy6m{9bThghWic zu8l@r{9(`zIF3Jw){A$mZ9u#O+KD>NGp~ zL5nWT6iCooLFT?9yj_WAbV5SEDY9;;i`THl{z(tZq^dYzkN8AK%k}$HM zh@vP6%0)R8My(>+^aW)aK{HcN3upeL!wj|coW(u&9)8?&-0~$S& zkAC&&vyKJro?rZw=YA{n)8|o=DeJ&@(h6~nfbJnn{hV^I?i#m%{3Ql5RF3{j+FUlqET2jc-0`Eb@*m-l8c4K`(~#tri?9A<9Nv$=3ZC zRF?Zi>?o;a#_g!?LvPMpo*65ew~$b!+Zm_zNSU04s$4cBQ#8|_+MrEZN=nK^shJjf Z`~?Ry?y{DNBq{&^002ovPDHLkV1nI3*+u{W diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_help.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_help.png deleted file mode 100644 index e3e1644d1409224b3391aea080fa6a55c64acd49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmV;f0a5;mP)1gh6vgpLqDY8*DM}Yo&=6NV0}_uw7bII$X(DYCDNY?nN=0g3fr28qNuFQ}V-ypf zz&H{#M6$QAC8Qq(%X)WNn>2{&&VS};M)%$`A^f*xN958M6B7fMB0KX9t4@rNh+Vi4 zOE7X`ZI-2`i%%N1GPb3zhpt+c<%vFyEdQ~y>+rib)JL}v~ZlM zr{4MMPS1YEnrP)M+Y&dHvWI?`ICZFlgOo10k=UM^BJ5>q-_VP+3_~9+qDcX5jI}E)&;8J`o+Ix~=9)Y+()Fmo+QxIA zr;EoW78}ecLo_UierBCdT*rSpMny Y3C{^{$+D6VrT_o{07*qoM6N<$f5k*K)3m0LO^Z`+{bJrrIT~I<0 z)WTXwt1^g)f}$4E2SJNcXdxs)8wJ6ljc6eVl@wt_Wxd<)f1Pug_wJkLMK{ucpJ(Qr z|2Z>rKi;*fDr9jSpDfA|SWy(nIiYS{SW5N_)WGMmDiT*=dD*0bBx{37OGHk&2mc*v zpe>4`ZpGC?HVSRfmjqp+%lRiH3TeUxM+nA6L6=bcQ6^CuNOt81sj6mv7MfuSF0xDQ zxV&i{WpHma#y+@tc3;+FP8S#OYn^z2@e$|)?I3IjTHvjOAgf%UR)~H=kJRDTB^k7r zRe&XDDoHPFTJDnXrByqugy&rD#}!+%o!@XCRzoA4g3P(nt3qxg9eZIAzJeb0X=o*P z3!gO-$Ke=^S(dTgY&A(OU5SVu>E;f?K8puEqQ9Vv zaUUKAg?<9zIP8D{KW=0HOi2u(u3{71fR9OVzCRRQf^E{_XXn$WdBkR0(%}Cw;9Lh_ z!p;})lf;iM_{0{u;=hLikf}4f1-Ly@y{Q)6*#H z$XlOFN5jsfZ5$u80_Lyb8)QB>rt!Ugwe#4p6P=^6{wdfFdcR)r)yjN;oVLj2+KpAP m$WF$);S)S#kr~S^8UGI^5Ne?f&ZRa00000^fPzDxE%B*DI1K5>CHk*tx2&GUA29lIriN$0v+6*%I0w$9|3f-eO zbxU3OnVggVBZl30Re7?dmfwj^>l(fs=Qm>Afk820+Okz0V$)oHB1ScEnI^G_7b9s+ zoTyBvNgS#irZusT2W@E*Q$BE)*2JJwGxTX@z)tfS+W?SV#Tgr%8 zl}G(4CAw|6HkmSF!JfX96GNVHuP>#BoZ(G(%87BuR@C#)J^>9B%ce^iu5bVV002ovPDHLkV1k|dc%c9Q diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_info.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_info.png deleted file mode 100644 index 7167fcd4a32d440567b6bace0db5c7b4113880b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmVukDv>jS;35joE*)Xc7aqkkO-c@C+LHt zI&O^10oTA9Yu7h};Bt9a7Fk6LG@^~$;Bn1t)?Lv_7t zmy4WtJE;^QXf04ft<`fq%oVtWPr!h!`jLxobs1_0K}*e|(R~QquB*E!GMbOn2wKCW zio^^|lSC;1=Sq~q$xtmYt4hpCjFUtu0Ow7V!pTrAFpr7ahaL$P{@eM(YzDQ!{jv)``9>qgF6DVle#5)1)w)SEoC#?1!rsBVO$0)K zT;&T};6vK~5oAXi{mh{nn(hBH5!aEK+04UJ^MLGvWH%ZMIXRj&>%T>@N%R!#^i%%( fe@^1e{+#~;Nzo4G0WcVn00000NkvXXu0mjft})|6 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_invite.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_invite.png deleted file mode 100644 index 21233cc78c8524899072c242bacc8e92e68753e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1867 zcmbVN4Qvxt9KSg}24pD61`LSjZG_M3-L+lm9dvWFgBDhpTgSiz-SzIZJJQjm>JV-RFu zmf%~gFZLEOoGhAHUiJf1R8$}uL1yJg6_%?4I_d{OL2_U{pC7_dfp=i#xn9z%I6-&a#(j@ z(9%8^L?uZpX^AkwfDutvAt)1RxD*HSToR{*)lghH&k-O5L?G!J#8OGDQYq`QRw+M% zI(htn0vKAaH>u;HwuoX@MFq-QozOPz=0VEoV4N;<)iFOu6Y`1Wk|9Q=aqRO zQ2h^_nPf$Z0V*;`&ve0EgWP^ZEq#%YS1Iak$kgP(*&@{{a`yQvW zSd{}p2p(u9b7!NTLZ^+QZ8qF&qT=Ryy^KfFbXMYk$K}9acua!8GXajJSvwuT{eFud zx6*zdr#a4w^T5p80-V|653v36E}07(NzgCP|4;dassM|S4LvrGQJO~fFm6GE_gbAO zo>H(Zu?h)jJYg7?GYY|haYhCJ9!qQsj~#(N+DIjUq>oC9K8z*@^a!hhf*=gle@i<8 znok%-+vf@KcPHa#_Z4_Q9Ci(3nQT|^BiZnP1iPFH+u5-fN0lN-${CNVz~^r0Zgf=n z3P!EkJg&UBbI0)`FLjI_^VH1xOHUr3{kAo8>e-x4`?u6B`e?)mS4&H4OH0}s@0WWs zCf1>8nZkg=4}7)WUt^3B0S(4d!&s8h7O|LkX zmuhJ{aCT`I`AOMp!Nch{)-ZeW(k_VMu+&55WOtpjU$2l(9arrmy~NPTbG9!J@v9f$vD{&nzo$kp1bZI%vy&YeNgqFdxEm-B{;kkh;Fz*Zr@ zXymc1xYP}mO%^Ag;*Gs8w*NZXhcc9%9?)v>7JQ4cjk>sVBmq@JLmq-IrrU} zxpSwgs*;76a@G1F9+%&QS-*ORi~Fbu;61dZDiIbX;G?y~Nnc<*7bn*ZsQ%#3ko}Ls zX=r~3pJ5qx6c%qmk~Lg{pU`N3NBj-yY@G5WreU9n#AdHeOL?+G&|fa9qkOD5+Aj*o zJ;Dt^E%7gS3C|c0;&tn$h$9OuKiE$}^qX49 zuPWiJ1E1MG{>!n-T3%6j5Bgv~tiTJ1&5oT0Egbb6Jb}}of6=%px~MShAx;eO7935K zbVP0^ESVZ#AmVMr-InltiEAD7wCy(J7U+gwh8b9Z>rh|mI{p1nsV>r)=m<=Lp6EP$ zhfZjLAMlmbA{-{(ywTVSnq&?Rme0UAK2(TxB7K6%@|q3BGq75|vVV{LdSc8sDe3H-*|kYoH^q zR%au2f>?EWURPn5cm{TnYgd7c@i9TZ1euQ}xx~mH2Yt)`)vhJ8ZrA7!_`6{5e1Zfg P00000NkvXXu0mjf)T}-@ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_invite_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_invite_ny.png deleted file mode 100644 index 7e93eba0fdf55f5a6d185b1aa13ca9a9866a7b04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmV-{0e=38P) zu}WKE7zW^@Llkr{>KIqI-~}ku8>mwS%_Lq!rd&chcF0gjp@UHp5*KxFb1S-tR}iuU zgwoB3=j7?om}5NWG*uVRyPV;F;NyGw|3L8a1aC!q?qz-V_R`Rdu8xxJVYY0I{!2Q# zW|C+Tjm(i6SWKe4P&+;ri9A7Vq5Qi*k?~AI4O1DYk&b4CTAAaugl3m#z^22F+0;u9z^T&|RjvXrrg}WHl5D6zFLM=w~%39hJ f(o#16>UZxCnXqaFmtN~W00000NkvXXu0mjflJTjg diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_jobtitle.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_jobtitle.png deleted file mode 100644 index ceaf14ce1c22fa8bf8436de2efbb369a2b119a15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!qv%Ql>~_p;+Y^ECm}=owN}fAHk5q z2e61(#B|mo%K01EU6$RIImQ$s8TgpZ{Q17yxxGzQ{Wq(%4K+=(N6iW77i!;$&FZ>- zEacjU5b1&y(Ck=a-BJp6$?tDtL#myjaI5I%Yfk1H&+ydMI;Uf5O7!){65fco8n?S)G00|@;ZWA3@*5pTW zDC6)kSe77oEBf>_PujlyzbAzMRaWe1deHHpX~)WM!lJsbRkt`=S(oF$mcpeamkL`B zkXs+6(6$zWGtcHiFz4A>2-dXuMpKn*SqQ;Aj?2{}%!gn>ORoA^YUry)+Q4eLx{A$6 zHGSuwJ4VlmOy(AiNSOw1Bc15+p_BH|HBcx}=tp`zi!{*1ekxtNH>09r)|0D9ug8_P z*+?_)+@wSW=%i91E2;9%@j6qelzeKCN}WlbbTi2}joZDwR9YVM zKP{)yl=ERCHb*DI)HvBY{xN%H%3C8+-ugD>$vhp}PUdOb;ScjP;p7ezzgzARkD7LW d-6Q_AUI2<72413Gy`%sD002ovPDHLkV1gh*uu1>` diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_location.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_location.png deleted file mode 100644 index c7ac4f236b7fe4cc475aa4ded5eea4b7f76561c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmV;60(AX}P)BE~|3B+(F15E8M;KhQKQF46V%Zwam&)(dypaT!*%scPQ-MjaLJ23E% zqSf>`DWx5FkHCKGSz~?EYPB{k?{DD%!*CPUA%-;7hPOIO?HMuP3|=6yaUA{ zI0Z-HJ9Id^`>fjw4sr=L;VWF})vcO&;3s^9@uDdc<$*O&&s0{b-(r3S ziWAX^woerFlWHKI##%AQI8oVCTFwn&+yf>k3q4$v++SR-mThG zI_p|osh=~?omgv}Ghh_H!6(=o8`1P8*nlt4>`seAJZC@$6kT@{+LNl%8U01^Be<1(>002ovPDHLkV1hjLHi!TK diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_mail.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_mail.png deleted file mode 100644 index e136b93fa1b10f6abf83bf93bd59b48f91781991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 640 zcmV-`0)PF9P)p zu(S)Sdlb2_#M%vA-uD*ysb6!gs^U-3ncI{k(x{@3YSQykb()p^H<9`vFBzV5PYYa{ z>9S41S$}-{==b0jsO}kmct02`HyWn>m6J9r&~aXe#1+LS@-Uqu-Tqe4cdYkg=ZnwV#`U`VGw)pX*lys=(uf(SMkY5g~9_%}Q>`&i*+oA6J@b3b)8dkAxC zz7Rfkzi(Y*F3~u1!LuV@mVVP`Nt@KOWW{T< znXUi6*13I(oFn_@*|O-4_r@F3{*)&C4~~$V4$pNj%5S;+ z@qk=iz-<2Q4&ia;o2*vy_Bj`bf6<({r`2x<$FF5i)kHTOC>Q8@AakcdeFK}&-8+x- ze3N`PFeMpquX}OJ@36|5osQR}j2L!3`zEM9w>)VEk5H+ywnKj$%dfeo%&oZBp8kCI k(y#s(tnZU0|Gs}BK5_TMhIjjYHiHtLr>mdKI;Vst0M?^MF8}}l diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_nearby_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_nearby_ny.png deleted file mode 100644 index 0b620c5406e496a7874515a29eae63b860779c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAO`7UU|?Rr$iNJw89`zTm=LlHm=SD{LZ6e{fVMJadAc};cgypID02LMMoL^#pSMkac6RUeh@9)Q-~axa z@DVrX z(eL@Qx9R$C)C(_Qc^_%`NJpZ$c)73t?cf)!+S^*{nJYKQFLRvrCi50=j-u-q+q%_K zVsA{6a*J!1+h54}xw0l~Rp*2_$35(MRrAagmVW+>BT)u3_WEHnA7ZIFHD{ChUHmx>^c4DmU`~F z6aHihtZ&R={Ix(fg+IvDFxIlu=l=U+@r|zLa>rl)UMtxgocBm_pMzH2h0I&`q@^mS z>V2Ok)X9Hf!{v7#mw!$uZQ{?J)4ziyC-3ahc^eW=9$gu;Z}yCd%a0kY>n-j7nEv7U znv04p7M$`Q(yDePWi*}5d(r>o#mV)~H?Hj9<5P37y5)Okwt&%x_E}pO+_jRPlDt58 z-GB2tOieH+`*67`R{Mt+5Mc6)WE8$J$1)Na}nci5lyuR?wiE~cF=LNB8 zw`;n7WK59Zow0^7_v?9qt@0f29n0@;f1#3Wx|3gBafj=b!lvI6vq9y3o zze|Eq6vlDEkb)4EAZTuEX>TZqB7%tUts!V_4_aE<`mwk~5K-W&ND{O(Mg(p8N3;aB z1tD0U7SY1j7kwe>oaG!2-+MXtp7SIU|HO!f4$T(wW#H0)C)^vF?7*PZl%Z+#RbHC02w?2ifxaI+OHESPG?2Pj5@=9QF{m0Tz)x8jO-oEqv4UJADlyh-;4$K?eA zd5e|>0)bV#8XDI6>+#%nD@wV?)_|`n;|@E6|Kk#lV~m_pv%fOrvDYf@BFC1F9%5As l5v!L-v5Jt#x{be*>@StW`*NdNR0#k8002ovPDHLkV1l>Jm=^#5 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_night.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_night.png deleted file mode 100644 index 0abdd89964b9c7dd1a54831a6a4cd4e0a60fb8b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmV;00eb$4P)ARpL#czM2v&p^I+iX4OI>tV=%=Xk>*&^{Th|Vb zo%#tniMx~dr-PfI$n^<$5JPh2^lF!T;URh7y!rh|?mUG^BfWwDxPc%DE}(ogZ_J)x z3XP+fVsr;8mhkxJrkI3=%5(??m+6UXA!hwj>%U_DqUBrDqztQDszS6mr8H{ErHFrn z85Ntu!6(F}h48&a{Mu3z2N_~^j%e2=OwIb@>}`ly9?=iDaTtyr_4sAX)X$&~u2`^e z=B-Tg1JocBZeo54O?ZbjL`5&$=QX1Ayir>*j^JmL`wsEGHmFMY@>MtbUcF9bHX%}h zfg!dl{iGphYI)~uE`So*73!IGAnPq2)re3XdN2n))L+sY+(zx!*J6L~5HBK7f*DMt jlz}do&eI!6{04pj4@Sp5%c%1D00000NkvXXu0mjfpCPS! diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_notifications.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_notifications.png deleted file mode 100644 index e706df859588235560f0c86d0f4bd0365edee774..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmV-G0l)r4m6aWf3TKeUA4=ICe1t-YYunj30U1Pz-bly|V*!0-dq+-|c=4T9ybr2^}` zrXcj(+jDVohI7unvGLDiADpeCB(%Yu#BxH?u_s^ilM7%U8P#eT3X6$EVvKGf-R3T SQG&z(0000 zF-X)=7y$6EbI1fQ(m<)8>4=CBBCEv~Gn#{zh9C+HLkJqGNuthd5OE0$q9_Py2%@Y& zMGnqE5!$4s;>JMg3ar5D*Wh(z-2d)Izv+Gd$B*~D@BiM5SXW`6F&{wDgcJ3llpElU zhwhoQf=SzJ!#l`1Sk8AE!J=)|SwEg={O@ZorZgn8tv-9NIU+*4UY8vz&5YrAGCYOz z5fM5Rtj5h!!9To6hWGupBSK2fiqpE}a3CVWj8DmMT2WJkHjGC^=){$X2oFexuPjSP zNc&<=Lxi(96A|HYH8_O*5fQSOGme6`2phchE*bWeo3T;W5~g%SL^zDwNoACCi5GaSJ`w;nOum4*MIkt5+)-^6Z~%H>Qoa zs-@Nrznj+>;hF^(4dFt457Ph^JTI4+PiTEbTJ+N+8Alw`6zeel0K@o{Z$xWE?EnA( M07*qoM6N<$f|F?0!T!lvI6-QsS%!O zzP=1vKsE;hV|yk83y{SK#8N=az`(SC2`(bDfEmFCNxGL_n*mgO-qXb~#Dn+k6mM;p zM2X|iJ5m<^WGXAtH8V@wQ0O^rO0VkX*;{*qrnL4SFkf&(Lq*%?#8RCn(^@|ZknS0;kkOk?QN`qH=0E={%&2SvF@;# zqfonvjZ^x{_Nbjgnp*dnToQ!a7BXKu*cNwsQ(px0k+2P4oY#Jf_h7m$_A&FidysL@ zL76p&cs%P>B>AqXK@PNrp z;{vAI9<98v!|})eF$Ebk{12#mldIEvX}{qArGXpxSUcAT=P36b-===%(2aNYZ-0tC zzZ5d-f=S`Mz41@_wKUj|%{mjA}>amVlCbVXLveMf?L zL{7;}bKq}I-}C1D!(CHurS%yHakUz}GQFrOmC|E)O`=Tfxl-b*)Kh9O39nx1?DE4zxJnSKS@2lQflRvJEfQ@Nn9zB3n`Ne%F>X{pCN4ioPEA$=c(uI{C=I+?7~x@JH8ua6q-nYoI$;2Y;3908w%^HMTj4VN1j#FSoLQ599-dAlYc;Gt59QfdmGeZ>r{CUf5^@_(qF! z=dcC;L67IPbvA}?v?zCuSTIJjJZ;bqt6YAe(M%UKGc}`3Gx&OPZb1Xgb@}zVJ!U@N z=vVIaKFcd;nykfn8=7EGk|h4!+PnE|g?{O*`y2~OGvE#g_EG+Php?9W08RRo>tsQ0 zk2>F^N%3lsoVFmg_QnSohIR6zSHMfqR%o|eukl|1iDnxL&RQ6Ut3JZ>ZqPaR1~$WU zkR0)O-X?Y*hP*GZ2|j{%;Fnah*azC}-$8OBD0C0R=ED!T;oPA~u&|>ogV-U^jJwTO zNfXx!NRC#DXFh_hSxTB-s+2@*Rwcjpk#iTc)XTiTV3TkKB%2Ds5(hQ=v&u9*SCX22 zRm~)8jbB4^X+fSqu0E7+@D>(E)seUhG<_ZQEoDXIY==)U3aw@NL7W18X?po%a0&`{ z3%)wgt*Skx8+J=DNbCcJ`Z%6|L^tSR$WCPRUU&hLdrTCc6RqR7ZLG==iZt3W4>qhI-P$c-EsTL zvTTyrlh6w}U(q|=ZueKH|GA>^30Q_c>_b(w=`&`ct*4PQB5{tyr*H!H;RC!08r7MB z8$lmIe}Oy9@CAB2p_3JGw0p1y$3|u93o*u;vob0+u^R}=4qQo`Efr%!4(fo;2$%y$ zWhX9KBG@M3bil)rh&f=cZMgJx!QsXm_zqDlYfJW-x-+v4+o~TBjQ2oU zs}2L34Jz+pAz)cqY>0PXmF23hgRu{eB-wcCF4r#D@X?rPIoO=pRJ5z9dq8ZfU$*P$ zf$O@FIEG2?iL%h(b9TyXgKq=7ZRUgX{41BiwO+UKm&7|~o9AsWc68ASG8n4lcbnQS z%*WB`4dwaZ^D z$9&teLF7`jwH}5dhyqDdFdIltS~<=#G09;lE*lPy;sxlj6z)kO_*~*?D2{h<{y=ZL zyrG^e;=Lk%Mh5ue{trWN)-EizX?Oze(^hu-ckm5PF{3?nDvYH3s6L~v+)bnEHDmI~EHkJ5QH|*Y#?OSe z`gOD)q>Tl0l(D}_s|1_mdv(|k-=n5M6?;^5(!mn8hv1&YPq|Oj02KGG{3&-&9X2y2JLChIzg_50u*nR(OaG7j2I}GIZ`}2d Ql>h($07*qoM6N<$f)Slsr2qf` diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_read.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_read.png deleted file mode 100644 index 6d9aa981bcbd454c4d0d7beaa5381893e822d265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+i5>FS$kcwMxCvW6xP!Mrdy(2Y? zX?dI70@WA6rGkF~CSRV=EV^v5V|mS;&pSTc6I~R#G2z3LryJL3CTN^qc7X51bQU3w zmkb&$`>g67NHfGfyL9Ho8~vT^2c~Rgm$}XBu#nL={xZA5t@d3^f)h7xD|}vd)#*2X XMFOX$Wkdc&p#2PG#91iS%+ z7XX6*2?jxeBPcK|-(O~z&E6f|yHJAYB!720^Zzs1xxKwkXJIWTP~_;Gb6t3QU>j_h z=85$RToy&~X0dh)4SHY>1Qc5}$X84`nYjH%%_IOX;2jLX zQe6S%j3cfzdCeedTn|9P-MR*8TwK#=XS2r$N%NKs(_;Eh`~+OrkfH1XiYFnu*m=tzc=R9m`wXf~$Tq*0%HLz6H((#!((Dv0M@+Bv zwW5@{2nIklDrdhVAk4+Y?Lar9)wQ+=r@qIp_P@PwwtIf5}Vo~mt$ut7O7XQ(b2#htW9)uOnid5 zfultkWv-R#t9`fC^ew+SfqNR;Nc2LZ(3990d-%U~0YxiggL2s($p8QV07*qoM6N<$ Eg2?P^Hvj+t diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_search.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_search.png deleted file mode 100644 index df9921dbb04546a03376804539a94bf00c307527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmV+~0nq-5P)901^tSk;LYg$(i%%$Hy3wu?95j10=la0?kF%4Q)G17*Q0Fz6O0e{)JMk6cmr zyDu4ep7Y@YCG~wU@?-MsYRYL%8_J8Bl1jQHj*5;jXeF{Y(|1^cMc;@ zhZD~RqKyjXqn*sFJzdelm|Hcyk>V7)hT@CNHL^&tj0Rq8swi7>ghw-xqKdjnMMpk8 zST_nh~oLQMT`Z*t& zSUJx}cW4An19$nTCvhA!#}d7K^dxo=GzVf&`Dh?k4w|yqU^}Smnqy?RkrC#)>RF@- zmKHw68~L=b1kE&h@uuo^)s~Fb-CAGh=kpXkXhbSk=wUwCzX# ZK3^b_PcM3uqVE6z002ovPDHLkV1iv8jU@m8 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_secret_14.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_secret_14.png deleted file mode 100644 index ff63df78b2aa21cbfdc7aa9d0ca17bd8633a7b17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmV+s1Md8ZP)aR^VvC0K}mJ!US3T6>tuE zK+;R>wGYLw0c|LC!9~~r`A`7+p$(+F_JNnfv47NVlx)d+Pz8f938$e6qz{mIiHNnC znXbR9wQ>kx302bU@-z z@w4D9xKb&r&Eg#V8*mlonb-yV5pbmv&oTM6CUIR4Y&C=VCaH6jnxPzYE^&}{YmO^o zM}my+f5o1G9dI9{a?QosUs$g)_9%!-LKFL8>>%yj4$X{Dk%3evvci{0vOV143yK&8`}s4^)cu5Y&=q-!Y?+yE0Ufo>C>i7tf_ zP$TL4JPvA*pP>8~sD#z94X%J*R?_`@%H4ZbpNZ??DOl-ZR_94WPzKeY&P|r`H(_bi z1A?ZBN+`ynjhHIf1p0e=1rIpx+mR=NWJrviTgMWK5|Ie#;j P00000NkvXXu0mjfW(#Pt diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_secret_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_secret_hw.png deleted file mode 100644 index c69a4b061da6f72b7b9f518af64904a4b4de784f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmV-;0*C#HP)~8h(E!gWsr*s;s;nL;#Z-F+N!udv(8y(ch6qKMGQFb-kEvlojJSroV$C=%3j;T zFzl0=_)tD}G>Lq6F%b2B@AKCoOlSaC3BoiV<+%l_)TY2drV;WwLmGnmic9Uao(f4Z zKIb;3^vT!cxI=C@`aZD}gM3@o9LwiqhKW(7LwGfws5tln}o8)XwfL?@=5nq8j zk^+7Zya(fUy1){UbL+EZ$nPcJE6p=H^%(yxZxFQ>@K?1z^K==Wh5&2>d4F_f1UUrS z8XzbA1bobqJ=2I5fLO;f`)?6F4N+$p{(7+k;U;iDB{{!U-~h+d1hr-cy0e*7dql@ z3*#d< SZ=wSL00005d{ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_secret_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_secret_ny.png deleted file mode 100644 index 237f653158fc64a658b4de857eaadc193abeff6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmV-<0fzpGP)EjV0*;0h2Gtpia6)Nw;x0tOQLldJ%PqOt+QHIN`kV9P?F-G_7` z&7QVUgMb+`^JU(Xb8@~}TKX@c;K*l0HZo;H^rajr%!jtnwdWWQHf?&qu{~XE&4+3@ z$f~M=J9h@ES$}}qd}vkdRxzs^*`*p;U34q9`rWJcaix+CzIYiQpyCSq^MSIu9euny z*ON;1oO?yzj=J(RvhCiYxVIfbH)4l&C)t!pG;_+Kf$I=Todx}}M~{{R?TipgTrPwz zB_VVwb)h}U$h&t@PPvde388ffhPgD;KU)u>6>lP?Nv?^-)^bYZ%}NNB47Gwoo;>A; zv<#JIp?1)Zq1=%6uR){Wdb3c=Xc{US>HPFhI!2!xkl)(SNYggTOf<8-3oScs*S{Md X%K_F`D!U2Q00000NkvXXu0mjf3bmv> diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_settings.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_settings.png deleted file mode 100644 index 3f26f268e5b2c0166348a55a03bbff6e7572bc0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 812 zcmV+{1JnG8P)lAhxS}9*NYz-W07X~4Y9pJm@*`*Fi{RZf+k%G^_CrY z+3`Uy#9&Qct_kpqL3T8r5bZrYfibqXBJRn|888aYfgaNbxCZ_36E?w%WIH^^zY2(nx7D2a@@jGqxSdI`04@Dlz&C%gdJTCc4bQfN%d+>un`a;PtMl#b}D zg6VeLcw#+`JXEJfA>M;;khzP{^;nm{X4n98AoKM=-wLwb!9oZV6WN$kLBS@}n&7SN z@!fTj$?+Jp3it{)f*L|Ke1`|17qVdFbQDJ&!x#GC9*Lmf`Uz` z9kKP#_)h2oZ4h0UyQ^R*x_WQNqV~NG$Y(G-C>9sfon3_<&;~gTbtQV|QIn-lcEnvt z$(WsPFnPRLT&bjIj86W$paXVVsu5A=mF`Gy^fuTJI+fcX`3$56AyCtAvKKV@7B~sA z)~x<>o%jnIc>mc3^ z6JQN2g5XGs$7SXW(j(RLz5|69nRqJbsJW0ia4;g1x#zC$%tOl$yexBj$LkE}7MV<2 qeh(~z8av5r{4xG+U9tK9;r;>}G>UXz_C|yN0000~m zUV#;3UWe1eNdl$W`aGHhj<60@1b0|X6+s)TrBU#CV%bGQo}f$)-V=gs>uJ3I4cHp`BZYPEVF zrt3aB%0k_6yh7L(OhKi@<1L}hFcVTRJkRA~7=SXY7ahA8N1y^t$yrJY#wz+G?8Dts zsZ>e6<6Dxp;UQcIQ7SMD$^=}6o%#@T9>E$c!C**3*(KsHT!w3K53&qLAGAk(J{V8+ zAlnHkPZ}l?Fc`wB)!z8JP5SNN!heHh=*kU(VG%k(>4tJl*6xb>4KHnL3#681E#MaF zcmo#+8l!ccTm|KKt>KBY1KhYCjkNvXhHk{ZQ=EkGMs0@#-zfYv2x&VMaBc=he;VGA zilQ*`{|n)_xIb3w4|orM=noWfYF!*%;6At?ezg0ush74Fl)+pwh8=MAEX8TCEIm@n z1F&2@W(PB)6E=-jS&VNeqr1t9n;z`?Qs#1e^%Ct30@i5nfF(V`nfgR~9fG7Jt3kN} zU*QYP!82%P5aYr|)7AvzEV#`3umDZq^gN4-)!}V%Ai-QKlW^?mZ^XcUqtJW6h3c^H zJ(DqKm)R+Nr~O5@g?57e9If@%k1c%)-GUI)W*}nijTYREyCmc8NQt`*9=L1JVccpo~Mh5-nvn!`<^NjDupVIrR(v$nPS+n?-TkKY%4r zPeS*mNo5jl9BpYZW5FDA9YYD_V@$m)D3MwER`omh2(MwU79W0vt@JO!R7AZM|AH~- zdti>a<1iP;L@fyML$Iou*5z~NFTfgB#^7^AUD0QZv0>u0tB@<0`WMA_dM?BHWi}P` z6>z3E;W6BT+Yxnb`ixnLIjCWb{2AApgju|TMf3*5|M@Y3{>^x{;kI4@68SM(WUtU2a7hGP|1toBYEUgiFBz0MV{ z^j=7pljZC$SW>xLZN?a@nClq%-*WD=3LS#|$^lr1ZScwrOBZ!*`iwbx_JuJ|>^cyn k-y&+z&u8!x-+qdKe~wUqaB=0E?>_WzmsPx89?eDWh{N;IQ4(WsPfGu$=ZrhBj3JhyDg*C<=$ zCru9Gl|E1L!f%Q3<}2lMbfP0kEO%GUN$p8u560$GrkP>|mZzZAfQuRAxIQDzH7a#V zuIqCSt5YySMNbAf;kEPFl%aIEs%EcYNusQxHwEMTt>&OHsncMA%NW2FixVvdoJ=(7 z^2A4bO-!9%@y1TG>{4^oEbsJK=r7#&yLnFIW$H|@QF{tzIE7dGy~KN4l~b@pSH8?T zRWIRXnsTLn*n0TlySJL0Ls_3K~7} zz+-e}DC=!7LBGQ(Xjajkf)@Wdqt!06^C|7vnSxcS{?V2s8r*jypJ%u~OildkkdL10 zR7$M0EMKG9zc}lyn{HrxzDgEp}L)@1@ZJYxBeX4+1X3f=H^zM*si-07*qo IM6N<$g7t@vXPTI>^qn`6KQIA zu79YKF^lEV#g()=D)kcetn$Ik8iF{~eQpV4v~iIJaz1N5@gl zcWj3CUq^y(xh3amKF78*{yvhI$srzWX2Ly8b#>h!&O|mn;BYbdib3wYp0QpCA?RY9 ziw)APjPPYeLdsy2iZ#LR3a}tG1iP3lhI2G3v2)xMd=1PO!$-Vbf&IwlvH1OXc4t*5hS{h5OHhN z;%?o9)JqXlIi^zp7TJ$iyDddB8`KX(Z>+e5(-*vw0jCUqMI`HFs=bZmJ zb7$^1-y{+TWXU+!$!4>~=#Rl+SV|_7t8x1G)H1vs?!hP60>Awrcna4+KO)pZ?})}z zbPd5J(>;fO3k#5eyB)nk~jrcZ$ z)-u(kk=Ac^mN(n(^+lto@he#moA`zCllTGOTFY+GMXZ*kXSK%98~@jF>uH#FlKTjl zrAI2$6WB2l_q}wC(_p9DT`@=R(hSUkd!CYL0G$dGZd?3_8T}wj1$I+-;FUQf0|gP1 z^f$v#_y)m;D+O)e_pk-$BFuFp^t8YN=$$<46!QZF!yv2AuZ6{E%itFL23_Q8m^PP3 z^clYA5-f=pZ50#t`VJ=8dI}&&P8|w`KCwfH|?-qC=DD; z(!Q{^-e(p%PIOoLTyMfCyn_~~h9X#kSs3H<{Q)1{_(kL9XRhL>AO$C)Pl%{ws6KwR g;J#!L`~M5sHb#O==@Xyso&W#<07*qoM6N<$g6eZkH2?qr diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_switch.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_switch.png deleted file mode 100644 index 529d84aa4fda869d56e84e4755342a5409873270..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmV-c0jd6pP)L4v6CI)xXY$1CVOhEA>U0%{5m zppg@eT1jxeO%!XBJ-c#3VUjO)XJ`I@b`gpE<7Z#M_k9c$@5H~eZr&-f@1Mw^i*n=9L<2WZZX}o8;E?i*;1>;7W zLWFygNm|!SO$H`V($#45G>MydP}CK1R)RB#@5SCkCoJa??gW__|4R|6Al#6}rFD&U zACA!GN3fF4%$67|At)}7!zXc@8{`?KtQn_Geh6D=aRX0NXP;*3!DI3bpE-MlfDQz! o9}^e8h$mqL*?>9zM_+z{I}olT1RtT#UH||907*qoM6N<$f1RR910 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_unread.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_unread.png deleted file mode 100644 index 6bfcdc4a4c08b5f9b0e3ba0f78e755858ae6fb39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P)X9VCzLC6mEl3L9qvI_u?W@S%IqxlB~Ua3I_2IBwP3C|NHkKc zWk^FgB3)gG zhhQ7Q8|2(Kt6eNaF+-!L=7tC0-I)7z%86FM1td(fxzQ_y60=xf-ic2ya--=tH@c!w z$C*@`f&%h3-=p=u2OA_oG4Z`>KZ8FFy4Mw+Lw%nH@3X{M3HraPft+p_%Y>#mV$6D4^yyIhPHBZ&@*klc_yk^| VBDs>=%J%>O002ovPDHLkV1g;s1(*N; diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_wallet.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_wallet.png deleted file mode 100644 index 70c46a2020c8a72ea956e9ac502cb728252be2ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443 zcmV;s0Yv_ZP)1JP~-s6A_|n2a06(d$t6;xAXGF| zlyC+b1T5b(wq$14t7SJRM9N4nw&&-K$A6om*vPuCfU^aZWx0*+2poc4Yi~Jz#qSPW zIp^N9F-ivJU|AwA6;Ll2M#<30&L0@03I4vtR9eb8l_J_%Kck{pNASa&V5iM@fq|9kN@LzeN3N#4-S zJ#D)9Px6gom(;(Zx=U@}Q~X5ugH+_=2uWT->l=G5^wE@zlYno{FMdPpID|ybDg%yx l{sCU?UyN$a8_gQ5z!$1shj(2^zWD$E002ovPDHLkV1kaR!kz#C diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_wallet_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_wallet_ny.png deleted file mode 100644 index 70c46a2020c8a72ea956e9ac502cb728252be2ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443 zcmV;s0Yv_ZP)1JP~-s6A_|n2a06(d$t6;xAXGF| zlyC+b1T5b(wq$14t7SJRM9N4nw&&-K$A6om*vPuCfU^aZWx0*+2poc4Yi~Jz#qSPW zIp^N9F-ivJU|AwA6;Ll2M#<30&L0@03I4vtR9eb8l_J_%Kck{pNASa&V5iM@fq|9kN@LzeN3N#4-S zJ#D)9Px6gom(;(Zx=U@}Q~X5ugH+_=2uWT->l=G5^wE@zlYno{FMdPpID|ybDg%yx l{sCU?UyN$a8_gQ5z!$1shj(2^zWD$E002ovPDHLkV1kaR!kz#C diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_work.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_work.png deleted file mode 100644 index 0a0858f026a206f6cf1a2d0e8d52843d864ec508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmV+s0`C2ZP)1JQu6XV-vsX%Xr=JM z83PZ%d6s2Ai8;og&^<7Z93~eb5f#S3U1}1zt8%Jq&1vXjh9>W82FHc*T*_TiXKEqk z^L8CzBAH>a!qL$%4sqGR8R<~T1WT@*aJ9~oS?Ei!nhO% z*OaS5nK#kX6^gWhXCNj|)3Ya|vcXWju15%L!O7X@GaLX7G?h1611KB(0j~*k1x@j_ zVD|yrGx{n8q%(lB?~@95{!TyEETYmC--S3vnk#mABM^2-!X@17Ytnz{U>FiMy#=Qy zJgzAxzzy(8BPO*A;l_L(Zt4WS4;VzHxM8SdcmcdU8_%8)_9F}31BSrBqlcyt^Dtru z0AV)_oGz6<`7l_-isp;yhN1S;VI%h8TQ=05=pR+J)(bUGU{4iBCT|pr$9(>cYWFC% zX^OA>bT3TcNh%UK1XZz$6l3>fuw3X=*t?M|eufD9b%?}cE*8-}WATMA?FD`TL4jy? TSW^Q(00000NkvXXu0mjfNDtp{ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_actions.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_actions.png index 96cab86ae758f9dd43e3aaff1110e894d7630057..6dda25d24343f8411b2db238e0d7548c3e14c508 100755 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUg?qXK(0f6)Ke|6l$0Ctkzr{~+*^ zcnz<>8eR~u!T$XdXsEfrUBSxY-22aw#Yb(yk`B=WbGk!?lsYE1 ztbE)2-@tu>>){x`uC%P*42RzZavL%=pi2flaFC#0J*Im#*+LGK41t UMqXqpGXUA`>FVdQ&MBb@09~O&qyPW_ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_all.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_all.png new file mode 100644 index 0000000000000000000000000000000000000000..ba80e881b940c498d41c6626494fbc2ed380f51b GIT binary patch literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEXvcxF~o!S z?Uemq%#H%bilsUPvbl9#1VmJ(wk9aPu)c9)$w$vEzPYN6ds=)CTstIgprz5YRg8=6 z%IEL8=GCWDmBlAbP-B)iw*J3wu4kV1)SYLlm^)(?d@q~63EsdfcGiB;KgIuiF>0Ql zUS((AW5`bkS`^niVS)9^bB^=Zaop)Ds7ttRn{4@b-WIbPtj8x#^1rs_%^$|>Gk>%! z>Mge)nACMK^aCH;k;!~6MaPxXcw?Td`=XUylfc`tm!&XYD{ku&#b2F{ZM?K zeeU-GU%?}fmMuTi8+}I2B8at$drpIy!OLiK8E5qZ%P_$g#oBzPANMMx>o9$-WRn$K zF#7>xMy%RWj(@*-uf5zm(RV}By)$nvPL0)E^i|xJd9R1hI@t|ehfY2zUo^Yt^TL(? zq+k49`7%J@`$FB6bF-Z`yb09qGYzl3H@R}zw;MY}JNYKPw7sr0xPU`C9sMJZD z37k;NQp(uK9AEb1`Nqw{r;XCgK75xJ@Ki5}-R|&~;go@>)167*xUOE@!^!ud zQCM_>)z!)fhvVlDPhTJB#JA2%f2DEBkvNAk=3ffo4<%O@6jlW^Z&p86vuT$^@TtGs z7Os0Fx7hlFL`*aADUa8N|$T{p*&UlMauArx5`SeOx!&>pn2Xh`Qm#$!HSX5^>>CxmBpiuC1 L^>bP0l+XkKna_vi literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_addbio.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_addbio.png index 2040bc03d4c0516f965eb612b7d08d9d54451572..a93307927899d8df942a2ac92ea4b780ae35ff5d 100644 GIT binary patch delta 584 zcmV-O0=NCG1-=E4fqy7TL_t(Y4ZW2yOI$$^$9*A68oPi-EMjAmkVa7n2v(vX1`EGK zKEZte>l_FcHYN~AW2~ZR719V62ZyLwgcRY#L~9{|+@a6k|J+%2@7^8nPU67tW_D(F zcHh2zb3Hx(S(0}3(=;6?z6dX22$X*T$FK{fBuP?qXF}n5IDZ0@D#jU9;Ga3shp>>l zI>~+T0VIE*2vhLLipX|8#grr2fG3udsYy`rZy?!$XPJqClbiwA1<6w<<_1%x-lz$YXKrkSt_w(1$@|=mUf@H#`>p0%H!In82HFv#=@40YxV~UMGIm2IF zE${+rP;$Zhs3Rt8Gq0@3V+?(vm+b7uoGrAzUdiB{YW}50jpI2b^3JMOk4`{ zbVR>lkd-^Wo?#)`)F_}vc#?{b;ama9ly_zrcPVMx#(zf64Qz(fwd-x?SPlbS+UmB# zi{3#Q^a9_q`a2#^?Kn&Ja7Ir+zBV`u{lSD`{I=Qebw7@-S_Si7Lp%B97bfey%go*E z$XDy0gJlOQJqX7Bd(aK&xLy0*IYZTv&y9XRCa6WMZL9fZ{o(ZDpM-Vz3DZ^pyXh8L zEYc*l`a#P)Cw2`cWsFgqj9q{k8%sx5Dh!aQ*chl8s$Z$4T*DdsfGuuZ+?sJdxZDDJ WF)ZHYmS^k$0000_$TQTNnkrj|kncr)idRXdtur2u2_bo?o1H_8(9X|TP zGH^Tr$$To17=IA!hI2=EB9txDUWTzy2B zuxri?ebYzvfw>njU^Ut>)b|=+wLtX}1KYFS9uai&f{zBV`kU5N>O_{(m5T-P{mbyYBL46@{_Uzn_xFFWSw3eo1u z4ph9I7?+X@w0vFr$<9!9WU0~b#{~2IaFp{DUPBFLtpN75x5#2CO`?t+`emNtzXFpz zjK?+^yD$RdHkMAkQptd9k{f^ex=udBCs^i<)7$rdGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXV+u-Tq7~;XZb*i=B;Q#^GTn^S)s|l0(tg1a) zH?drE>=$9J&sy?ENtfH<6qkcw5^F#UuLEP3Mvuuo2VY7peB$c& z;L;LTncAI>6%$%}PfK2nE577o;uXmfdm;Y=lh=Nk|8q5j4cIMWvqZ$@mRmbXPvLx_ z{7oq z^m|K{+NN4R^SMILf2-9-*4wSi@i^yyndRYc8F${TSN^P+(-(7S-`z(KODzsOwqF_i z`Sek-b1E5@Zv(BE+Fl&}%Jz$eUoP~-+ts2b(^(5L{15DYdTToK*%;F+QRb`6t1sxd zPkgqnD`3IR(|RH&^#$MM+n>Ekl-{vM2o#T=u6{1-oD!Mc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#8koDQqR!L z*u>ION5ROz&_dt9Lf_C>*U-$$#K6kPNC66zfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD#PU%0_}#n6BP2AO_EVu8M)o`HUDF34YC)x{-2sR(CaRb3oXS&*t9 zlv^`s#AnV=qhpym3Y$V7@>gnPbQgQ3bHE)e0jxy{8r`JtA?%FcBd6ElXQPfdZ zO&JwFubrna9@U;+TC!NAC|FKa+*9ej$fr|{DwQsLo3>p`{=aYXd!yd}XVx8-^Qryy z{@j1_&$DO#|C4?_F*3}@#5>1liuVqdQUm7x1WmsK+?LDuWM-)f^|CFTbborH@VbM% zKLgI~Fn`fncbiA4agjvc+Vw^(JIxH6xU&-GZ+!e96>eg9R^DSos!47u)x4-v4M#ooYmr_=zhe6OJwg*&*s*G)`~f`@ZnKU+R&__4b#Koz0u| z4m0~Co>`%IjMse5(e>?rSVG&_XQX_-b496dg3gT%)^DEeoXl17Tx>mO8_U`~=Wgmw zZ1*-;KC_Og$6@ocI>r7OvOjyno84wCF+NnRp(4wtz_E1MVLi!fGmdb76fDtm+jrb7 z_n}{~qNv!-1o2rB>c@{b$*~J2!u1mtDHLtDD!2Z|G z0DjQ`7Re7>=^I!#->H?a|9kR}{eLYxRtbg+S8vGHO5OedDhNGY{an^LB{Ts5YVZ4Q diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_addfolder.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_addfolder.png index b1af01acb949ccd02fa055cfede18744dc467ee3..7af3678bd969cbc97543363373b159a7548fa604 100644 GIT binary patch delta 583 zcmbQn@_=Q6NGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXVJLT!(7~;Wub*intbD+fW_qw8d8Z)R|{^7bepJTOnQ{L@5_SBb$uO7meay_EG)P;<;|P=KOHxWY!1#=T;K7Y zhwsA5qgz@8pIve(%QHzouGu81Aw5|qTj;;uoE?weF7Sq_l{pxXnj?;}ft7Y7! z*hWTw735=XiR2_8||7SZEb#AXy!b#3~!6K_p_D3Wz zdoDR?dU#Q=$jZ(+@71mxyk0M`zbWqp)6TYqK5<)^<}_8Q*J!DCs6M=>{ybk%F8_Gt zk?3P__M(qoxqmwyY{<3kaF=)BWj2;yQ&t%tye{v0=eEOLB^Nf1eFp1Z`tER4y>@xS zfju{$JL(sn4Q1XlU!YwwoQ=DM`@_4hzt^Y7*YAWq9!&Q?Y*F#wsE{>kVvmgaCy5z1g*fjYIoiI&>;J_- PPz-yz`njxgN@xNAhq?2P delta 508 zcmV8aVlojPqAW7C^DP?PCp$1zERu-6&vO)O^*jXqg$;^%^&*$jf>D~KYZ|)ll zIrZtjd(QWqd+)nH9Ou8A8?^w>^BVDYMZ}(5*DXc(?OYVjKz|;}5M^ID_aSXp(Q)bw z;WqtcxPTiYCf#XRf-6lsF8(&Uu!~3$C-nkpp$+Yc0m^hMaDPU zaS+QHp>P*b3xB9zF&S2bJ?IBPY*RKZ*4V5!1hc+KmTonODq3{_5i*Dz+2A0Nsd=o;jPXWU>xKImP4W;+bK$^W;wf!ITovN>o9q|b zqg{kESYS`0Zm=)a8*P&rxmgc84!#b2^8O?)F10EHP<5!C{tNAj1e7t`XTAquF3HSQ ze(*JwO|FL#6;v&SAJn&H+v)3GwUfi_}aa^AHS(zmg9MCUd9R-4*?p!o*l6g60000GZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4mab)BU=s9naSZX`-8%KGwo9PIvFB2s1Shsm(#bIi z+!U~R!lbE7r`Fp$28#iKS7g-fpBZm5rkQOHTXf>Oljkufm989(tY^P$AIF^A`OLfG zmHG2M=YP-pe#iRzxtShM=06pE{r-2I?oLmMhOE`^dVh+oshT%^^Pf}8P4XLMHJ18L z`YKwwbOZOK0+!_k?3b8c_}RJMVaZmw+wh7%k=4qcyO}f1+Qy+??3^R_w?w5Coc&L1 zW-ywD{bhafKB+-7dOq-+^OO5 zy3EP`bRmxV9p~uGoFec`4;A^*7hge^WNeJbt6iEutm)MLSE*VCeo$bhwO2bZ>{eD5vGqm}j3_q@%{`!nTnve<0}=XVD*%^GV?v=moN+U$6d{q!TT z3NCZQjWthCue!pv>z76NmBezxLYeg!?#_MGt^ab`f(ynH2Z1hRXP<^uOfoP8AJT7zduXmr!nk(aWk@w6Z2~#Vvu(J}yQW1HSHSKpk1?^Y_~WzMM|`VX)L!2UQq1*Sz(%N#VqUpsz!CHdLgTRO#id`Y}3)I n6ZM+1uOHPPxgIS1?hl`-{q1bKc`KVh35CPc)z4*}Q$iB}bSWOV delta 633 zcmV-<0*3vk1(F4jB!2{FK}|sb0I`n?{9y$E00K!#L_t(Y4YicdOBGQVhVSH$j51Qm z+_VvbFeySpDZ1bv5Y)nr;MQIK1HoMcA?|7$Eh0$alDTv#DN#XmE2v1tjS9Ai;EE94 ztK;*IGvhb+&K$0gA3U6MzV|)fIh=E5a=Bv;&sE>|{d?%c(0^lmzv(Y{o>w%vqjf3V z2Cu*svxuz?RmOM`p28>i37epJ4tDoB#$92a#@_(>Kf)8}s#}oc1^5LDP51(uP=M4U zB!2=Pf_(C?fnpU-Cl(>0LW(g+Etr^)F<|b5iVzbC3yGN^?fXp$AsnD-w|#IIE^D0O zYe!Q&v%1VdVSir5t`*eBJV5gmzQG*)fD-v@w6*asOe8M8xz-hpDbh>-4QLZnpoOl( zeON^AXH)C+-GQ+PeyxktYpB94t1%viJ(#Y^pCqSvVe{HuR@_EdWS4KPf$;+4_mH>w ztbXbO>_SI(7XD;RRQ?=3`|8x!NhIzkbpdu+#i%pSQ-7p`HV($;8Qg>tK6|vfYhL!QcT5 z!5MIco^Z4Y{lET(=IEQSxw<2F6?STD^2ommXTe6r_?b02!Qrc*EyH(*=l@IlrCi|u TqC4U}00000NkvXXu0mjfVZAcY diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_admin_add.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_admin_add.png new file mode 100644 index 0000000000000000000000000000000000000000..a05a756a534612d987a0abdd3ed3d24761671ad9 GIT binary patch literal 873 zcmV-v1D5=WP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR917@z|H1ONa40RR917ytkO0OB=utpET5(@8`@R7ee-l}(6FQ5eVP8Vwny z5WQwWq=?MIN6Lm`Vxc543sx4B!cH*~3kzW(E1I%n!D7n7W;Qma`KVEnY19;knK#Dg zWXzXw{r>kp=XCFT-wgV1BUEx(IUJI9C5S(7)T!wW}4=11#=0N%acVJiULL?8uGjRHda~pQ# zHIZwCbMOM3hH%cNdI*$Y7JkBgH~`xB!lJ$jZo()?dwny5-HMqxUwi#OCvE^HdKf!;+os3${8Fyr76mSd7SvI;On%6MyfDKS@Ihm{GAHwQo z({@c@2H^;cy~Cy!a9i}7gyc?+wrUnMc|RP3CMM_?@+~G`HR}Hi(&E_EXkq^hCM~!` zmPvkLnxPA}L5bK)Y$Wqb43tw%GqGqw{OopfoBKi1K6^3NTic}sTI~|@qez@fZlSj9 zn&sB3-fhv4HAg`=kzLgQ<0%-SQ7@CWX9T8UAaUgkBWW)6497!$X{v>9(CdTd5bK5y z@Bsc8@)hf@tj`@&>?Y6)rF4=yBQ-Y22Yu5{f6@f$#&XD#lx zPrk*zV;3aq8HSJCIAuu$&SiZPZ_3se^Dq*BN3J?!BD>czc62CMZ2mO(}g{_HH#wEW6+%v+>s4vr`0A>2engTscoojvM z{weCD)E4D7QMd_oDx@-8gk?|%r=VSaastLuu?5sfvEGl<@CKv_7>m3x9LBouPP7hV zZP&fzqJ?~#v``B?g&xrV@S@6QVtOWe@LqobRy@If!U2!s00000NkvXXu0mjf2QPL5 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_admins.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_admins.png new file mode 100644 index 0000000000000000000000000000000000000000..37ac7952b7d24cef66fc2252e58ccdcca0cdd6db GIT binary patch literal 889 zcmV-<1BU#GP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR917@z|H1ONa40RR917ytkO0OB=utpET5<4Ht8R7eetl}$($Q547L*|P{g z$m~mvKqx4vRS8ABj3@$$Xjv2(LJ=gjNg`UbaTP>ZNV|AzsdbBjh_FpWwMenj7Ri&6 zz6-6a*YAJlo?+%OZ+d_D%{lj+bMMT(bMH(L)Sz;?yag`9Bz%SuH~{$?x~G@WxdR5^ zIhdw!M&YjyyvGi~*7Q*-q7*j4akvM6K>7eTV5gPiuY(IP4yG44=V7hYB`k^4@B^fI zxCMt`aiXxILB0#F!7NC6uCcr z?~j5h4mEd0N-7GGZ}VdfD`>l5rLUNYDk~g1=^gA-8?7j@=6CNbk*)KM72eKz zn`SN%ob$-9re8kc-kr^$#RorGFP<`o-wqp~3--YfNN33pU?0OPC^4flR$2&6ka)>O zI!H^E#P)*iC|svGu3F!AkRO+7dwt(VpSY>EEs@=Ik%H(Ed~se76tUZ(gQuK@Q&@IV1Kdl|A zFcIs7x1c4l_oXGw`8oCAWG6nU(I)5H`R3QRN^{4zW2x`h9g9VS5x5Pj;HV|BIs?*E=wUeuLO$56gCyfjdxGZ3vx*F~}#1twEv>qzB-(tmU#SwOY#8ppCF6t5#2~U!$a(tjR1U zNsWG|6QI9b-~Z}ep2902>2G!{trPJ&=m(vVpKvm*u4;@9`l;)ENKfD}xK9bT2kc+1 zrP)?>psWNPm%~-~29i$hxbwmnI*8wtHAYQ225EtdpdIoOh9TPjS%droy_DtY^EFHm P00000NkvXXu0mjf+mU=w literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_allowspeak.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_allowspeak.png index 30d0434cfbef196655102e0202a59b3d9e3572dd..719315207d46b880e07e4803670737cc0cdad8f7 100644 GIT binary patch delta 601 zcmV-f0;c`-1x5^la=axj(?(Bn1EjpmqncGSpyKS zhh>lqXVpY83Ko2sb6eQ4}Hi@@z2#rxNW)Rn#Nc^6l2fgRqE0tmQ2miVJ8a)!ygTI;2 z=gWz>xhuiA6Mys?`X_V;e>dox(peK65^o7bS*ke%RhMHS4yDCd{I}vrgC1EEY!EN- znw=_$3o-4<1JEFTBZ;+Pi*1njm7~9TFZrOM3y$FvM3Z1Qf;L_4JJIN@$&$FR;T2IXcK&e_!pvIv z5!_Cs&Qf%>T3CfYV7EA3PqG6f=l{nO?eyI9ofS@vZn8F1qR&#TSWn@sMosV)bge%? nRT55-el7mDQC0I*v3-GmT+t(N%FpCw00000NkvXXu0mjfV2L1C delta 639 zcmV-_0)YL`1@#4xfq!2~L_t(Y4b_y*OO#O*hiAr*3^fg@9C8*4K`!zG)Rwk$A-EIU zPe=Vk5;EoR|? zhjY(4zkBa{zus8vB3TdwSBv(&4BiBP;U&cLPK2Nmp28v=!haW-f@WVwY6+MJ*@RCQ zqu37Lq{4RL9ejmTIEG=jGjS(WDTgnIB{+dQt}bko)R$}U-!S9~h}%FbIfHK1@HHl0 z#$PtMR+F1{`-g1`+7?;X;8sXJ1=_N-lY2%id*bA@wMP(6YV-Oc6?QX;91ZHvL6%e* zUj{#58^XiIkAH%!D-ju^g?J;9i-zka(JCL0$4_vJa1*YB?EATkrJ@sTQD`tlpQ|&4 zKaSv+X;&D3Y~$zzD->?Cv^FEia^$6d0DJJ+Dc+^633p7+e&n{J3HP&^L39;$TT*V3 zxCCB+Y~0pp_lKDvc;)0~$?00(u(^yUISjgrx-B};hkx)GHbJ%krRspc0@8^_ldGkz zYyLrTPNUcjX>d)QG?CqBO`ugxLWdoQwq50b&3QfIB=mqDPq|lU3TQ?^tAAfe``>j2 zy=4a1`PJJ2GJidiI*<|Q0(%Rr&hw^1vg^?nCuE7DU zMM~Krg14Z@RgzsP9MNY6^zXmqQ|swh!V-IV>J#P3>yQJ`x#TuxuMoMbg|qanEvzb{ Z;vY_nKS}IZDJ1{^002ovPDHLkV1fg}HR1pO diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_archive.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_archive.png index 0f0243bc95b9459f633d8c67cc59f5ce97d93f07..fe2f84768ee6a45b15d627b031264cc56b7487b1 100644 GIT binary patch delta 584 zcmbQv@{nbMNGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXVJMHP>7~;XZb?Qca7Dtg|`K~KGI20G{{O_PF z#d&>IX*kE+`j)WA@(MzVfiFe4thPQ=+WBNr5C>Ohhf|4%%R$Ti`EPx$y?JxDw|jbx z_4`^N?A>`YRO8QP*M0wb-4;vNvGM%+#CKg`U+$x8>Hd^^420di(aW zs3&l}Y0}C_wQ3dJ(Dtu$e~NXu!@GE2-uvjm zyjQF4NfuT$>?oi7VeK0q^VDn8i!E*+mwj+0^$_ojr#!b?IAj-iC+fRR-e)Fib%5)3 zX%ydsGvWt#+!k2JvMlyqeeZ0(1qT_LY6FhyOBvQl{ufyzz3yq3N7);(LsJ{?U8q*L z+N4Sip4!0~j~rG9*B>>!$MVWb`#+o89LYy?ZO^fw4%udQM!Hi}~5Mc0WEAq&=7MzbGg0jU3QZ_ zg9A@?_uY49j=S4SCiBnXnd|PN@B!;!4jLSR#H`t2R`EB(DM-v2U2JRw+rD22$G;3klD=U? zHHjWF;v1seqH}mrhLqzt{sGwIp)baAY48QNF)`(W{63I4RH;pB!q^Tj4^>NvPr2&X zQ1R7{-au*Ak$)@OgbAy`u#u_(`8%*`sAHAVHjtMhdNHh3wT-k5v{big%?8}>ENnx6 zvK-nBEF|^hx@H5+L$C#B6qENm2aD@8QGYl;%A_~AL!832#;Cq2%I7*xhsOJ=1PbTi9U6@* z3UsOlv189hHydLR8I;j+%;US{Ru&!ojoW?!mLI4N@}xQo00000NkvXXu0mjfpayl6%WU z=TOf9*DhWY-JC^JnkIGRD0EzTb@lak`}cER@BF^6{NYXZ{oiY!|DXHb=li|SO+JjL zpB8aXFhA@xBXmLc-3|K@D*F=hRij#+FK-1ilC3AgN3$o7|4v-RGq zc2ViKlC5Ce0gVtBq2LUIW0e!u22@HOtoajEap0z}#~=UK+rRRDN)1SDRlnBWcQSi{ zmB=23TE2|L!s;wm<8^8?(pux|{JWlCs^eYXk^aL{I{x76jO|B@>~pJk?NQT6GgV1D zWOJcie0!DljLm)OvDUdwidMXb7|uUy*8cFv@=@T9XPGA_=;|@we3-JWq_t3Mp}5(q zTXTY69)6-N;qpDicun)o4{Yl;J=XoP=i5uWu)i?%lc-YWY0lxfH(R5=f3Ctc z(@7@ z{DE&vm29`zO(yGD&5iGjZ}O>XJ22lVl&$ICC$;Xj-Hr=~zRN$gyHiklWS7m>&+Tr? zFIqWQ6wiG$Z;n_Hd%C0etjN8;1nryh_P1>-n^k)MpyDK}=&Oe4<2uGXYKf%^GL<+ zle|;4?F(J$rc*~){1jHUuL_U2-x=}d>6d9GO>*BjVpwDY?L98*?!NSO{-*Q^Y8N8w h+X^fAas}SKlJA*w_KNg>RG!%ISPZW7PS>aTu4Yu$jllS?CR!wt691CVx%{6eo< z4L}$|1ZSw&mUoT(L@(Qx_mJM<2qoL{eoS8cMXuftBW|*`fqV$|aD_Cb*)&p0?c$q* z_{5BBbRP=PGHYqufsHQ#iG#erhbc%c;nO7&=e}A%Dj{=_T7bOBZi&>$X?iAey9wBk z1|Z)gH34TKt7nAPV|vcTOY(@?fK2M_2Odds(pSopI%NO=002ov JPDHLkV1il6bx8mK delta 177 zcmV;i08an>0;&R#fq#@qL_t(Y4P#&!1w$$X{{R1P4a6ceaWv52R3QEb#FMFR0g~aj zfovJ7S}+d@%sLNafo#8IXkJBH4cjE07G0W7O#^B-B{ut&UOZ=>B0&Lx`c z2Nr~|KT5w~af5YtQ){A6~l7mPDts`6^SOij12E&j~jn~*dGT90#8>zmvv4F FO#uBad_4dF literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_arrowright.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_arrowright.png index 445ba02ef12be408714dd5adaff9b5eae17bcb76..5bcad55a5247ec13b42fa825acad31ea170d5e0e 100644 GIT binary patch delta 229 zcmX@W*vK?NrJk`k$lZxy-8q?;3=9k|sS%!OzP=1vKsE;hV|yk83y{SK#8N=az`(qK zk%1XVGlIkxFu`Rd7BC~&Acc=iOV+;) z>QdWfv&D?fY$1FX*R5b!smdKI;Vst E07&9O(*OVf delta 164 zcmV;V09*fo0>A-~B!2{FK}|sb0I`n?{9y$E004JML_t(Y4P#&!1*0MG|NnnJAhx7g zNB|A*0b&rCLK91X2HODfcaRN0Kr>6+fQFA+LR=IAg9IeZ{ z?@qJGrnTY7;ZEJW0Cc%M&4L9Kb3nuUfEWa*>vCAK02)l&!W|A~(I`E1LjV91W2b6B S&jRWI00006XS;Z{ zS*)?*r9kBhXLjACz6Ztc>F9pmShsKU|B3(C7+bxrd${@k{p#l%|IaK<5}fLxQlzoA zq2@+`OuBVac7>#Kbb`dQhXOgdkM^|gUZBrEMOb9%!g)UwN@n~qdaWMO9J`{$Dx*oK z!&yH4Yuncn!#&bv3G#8y&JpZ8jVjozq%&o>4!ufNsSa&@bU`R;#-s(?SkxS<*wytV z50+gB{NM0tisZzYU&kDzzM2Z`U?~2;zV64QOp7mRhk0Zg-uVYv+*Ppsp7cC+W*~R9 zL8T4zbK5sg9}5kboew{>pRyy_;NPKkp0r<4Gruw{v5u^H(Uw)NcPsQr>E-E(4u#ij zW|%&id4pkJ)~&a3Ir(8*%{(W1{`1q^)f>UY%6${rx zZ5gL%sp7jqRZ@w(Tb8e5|2A2IX{Ff)1qF{>Mw{091rO&krk)fy`F=x^_=EC;wHd8J zCmOYOaOx+>s@S%!zqQwH_7mPvMbpgo`%V25v|^p2e;u`HiMj9a_=bL)yV|nc^_zEa zuzwJ;b5@?>Y?gCC$Y(R-{*Ci=`x0)+OpBWyzd%0g+`FELg9dv`^qe2aH+CfZO_60x XUFi4ra+4@1$ufAl`njxgN@xNA{W~;5 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_autodelete.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_autodelete.png index d77fe24914962666c2f48a81bc8af22c621de821..e5da19b8659744de234bad26346190b715cadc2e 100644 GIT binary patch delta 572 zcmV-C0>k}-1+fK?fPVrTNklMcb7=~FX8)s3bJtYz}CcM=in}^!7eDC>3;^~KDZ6pzrG<&X?O@b zpm+;axDP|-2E&XM-(f2DO)%?kSOLWgD1hgh0DT0W!-A`BX&8?~9e%;2WoRSdKMdF4 zM5K-4Q&3bQO%Vlp&Nn)J|B2H=v1AO7orV}9{d!J{l4VC+g0GOViV*_dBAgD&j8B4| zNn;}fy0%;o{C|Y`P;4{6mjnHspP}=DFqJ`ZrOmurh#uqwXkx{9s~@ck?m;fBaZv$9 zArxB%)O0qMWinB1u{18J4VwB535SfS+vHCsyV6y}i>9zazV0%i`9@DEC(XrslTVrK zN;Sl7(4xjX&x=~jI`wx@hrQq@>9i_t1)3{UPeSmkU4It0MpFtt!fUr9zRDbzq2KC2 zd<2T3Rg5X9w=sk7Pg^Y%w70*(Dx@t#48in%A^+K;&3zPZf?^SlG}k(f@#~Ddf%fk) z40E7(31?$Wd@h=YrRgM&p8 z2L~rXlq%i)7hS|r5X41?4*miWI;*HCQt*O{IH)Kt@p)rflICL5B7X2BC*S4GIbU*; zSnQ9@Xhh#M%?x?N&<|z9Fpe9k3(Y~a6AEw*PCHT|jv2UwHGfEkiq!`x7=;SR?x6@d zkUwGHV1)4#$oA?r0{cb?696CYFFj7!S&E`AO6aC4L9$dBaA21}RQE6g=&~=YDN*EPyQMqgiti&%%iku@4xk1?>U8LHL4c zx!P^NcBt&(=j1(7pxs=CE<0LaN1u5!V?FrdFrZkQ4h`BQc~$We;#&cAueRTse02qn zwlf`2B=;_86((##kew4)g@amxmJhODA9AfI>HzUbuYakZJ{ob@hxuyU`3$ykszoc+ zU=wF;Qi=C@YPoAmp9%@0@eJyO|7Io7^vBM=!4eu-&+MHJ5~6&rwdy<^LdvNVIwn~w zseml#hm#_9V`Z4;E$8k~(fS|-nqAm0GfBJzT7moH<`Db8pT1)fEe*c`cO&y8k}808 Q00000Ne4wvM6N<$g7Yr%qyPW_ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_background.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_background.png index a276b53fbcfcaaa9088878a1b3119fa88c3d62f7..700c85553ffe32bc690e0c6f24dde1f3973c25f8 100644 GIT binary patch delta 515 zcmV+e0{s2_1o{M!fq&#lL_t(Y4egb?O9Md=hrJ*H8zB}x5e+DUP12}E{09^SK|+LB zTZo8=sGw*H14UWxxiau}|yimG0K9j9r$V%1z?Wk0;18ra4E7qGiS z)jtE?`2|RTe1G*ts_HGG={y}bL5_qFegpOtl*)R@6uRLS9>62j*eOf|?w}ivVFo54 zUnKW}D3m*s4e1Bi7x;n?c!zCBgDlu6HP|{h1XBUki%6*jQp`*9AoxJ;w2Q%oSsZb*X5H}GGcP2K{Lp>6J|k<<{}XffP5%(*kuxMWaT$_g)q#4Y*~IF zmqlGl1jwHT(U7F69}a<0{2i#52{Zt!FbrF84t8oHVF_H&!8w)4D_{}XiQF#pe;{wq zJyarjX5(gKwF5IyXi0Vw>x0(9ISW5Y?4sz(EfRk%^bHX{=iDn4;PL>1pEY$fq&*nL_t(Y4egZ6D@0)wz+EOQDMem+Oi6i^BsTm7wo+rISlBBO zk_Dw?%Sv_<84F}DE0R)Pd8A~DCJPxg9$mk4efKl2%e~WB$*JF*$9KMS?svaCCoSzy zi)osfFaZ(pBM&64LC}6NhHVhc!0vzwxQA&Ng?_kzUGS0u5`S9Y1nLaKc+wka5Qao) zz>z0Ehjg9jVURlsBF#D#r_>6)H>t)hkwq0-)QK(zIRO}hHnpc+?Q0i5p!Q@bz0a`@ zmF-tGkvIeqSaxo*8#v?1_}e6p!=BrwlpAp37YYx%6_=Rr%loc?SNy+$*BeUx4*2GK zAqwN5CxhKNrGKx8f;|+P0vQQ|Pz)QO#n&ZMs1P>c80uv=TK=gruTG&7R-qI6;Ioh{ z<3VIJapgT^uA|SC9Y^282#9?R<+2AYBV!J1u||bekH}9A9$9~dZfJo!5V?gKtAP5! zH(&)stOkBwQI!25{;{*LglL!UD8{d?_;2yhMr*Kn|4gFmn12p-DE#edI|L z9fTuDMq(s~?5g?%cEG7gmJ>BXk#o((m)ElM<;h(Ve=YO|i0r8P;X7r|00000NkvXX Hu0mjf*VydE diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_bell_mute.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_bell_mute.png new file mode 100644 index 0000000000000000000000000000000000000000..8effcfe002a8973144ca54cf3fe3b13fa3a3f32e GIT binary patch literal 696 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfl0~J#WBQ# z_w3a3*}{PW$Avou0)#Fot|0Z$8iY&($ z_7`q>J9>Cl3n(sqvY?}jL#V!?Y3UW`g@Kdn_IcjhBz-@6dtAwb$(7ch=bE2>^Uho6 zn|q+*wVMX?pX_zX6ZaWrpPHeYtG^S7nRH}_?bi=jJ+gu z%0%N}UvYB(ru1aj zL6_;?dz+JT%j}Z-6j{;>(z#wFTC{{46t>Q2<2qe_`j3p0+H~Wf80JpR6^*GsTGBlZ zu*n>@^_b(dT<3^|CTEgudSY%z&GoCR=BEGr-a?nxcV!k&Jz%`9*3fftw1c0__MH2Zp2(_fG3=~sIVO`F#&llJW6SG%!dpJ` z$y%SZlxV7&aHG77m1Q5Np>S|jGvgPZdtzO-kJO%hp0$Q)U%{=lSDL1lr5p&fKU9;} zZ@;qX)DNHdwwt-lJkC2O|KE9V!MG1w?=?TNCvdBX#Y$`BG~3kPxcXq?lJ!!04*&celh>OxeUy4q;hwbV z)6x@cXSRRHoAriwkxJ_GxPtxeTyhha$bJ3&_tT}z56ur{KMDEdZB}6Ng{L>aNVn;)S30L8l&yRo6y=_-elF{r5}E)tnEAB; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_bio.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_bio.png deleted file mode 100644 index 69c938ad9a5e370a3fad603327d92b2fad27671e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 599 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?4YNMV~7Xu z(W&RPSrR3VmzM>b^__CNb$3eho0E-Bev{@rIdryh^_*)b=XTp4JR3T(+xlsb%9dzt zdnHe=Q~e)*-kOH#0r9iB-)hyxRu@MkzP`O}u8Vx5;Ry$An?s^+ z4oypqoW5m0w^&|_YXyV(yccs0>(*F!ZhbwWH-@oTU8eaF&ojlhu?>aBK8MUS<|Uqb z&G{zz)Ir-lj&f2=z4KJ&CGKE2+T?DuyF)jiMO?!4>IcDpA~FZ8d)RjgUUM)M&iJ8t zau3g)gQg~uWkPosys~b4Ai3bH6X&OSTQ0iJW<5G7K0@>P+dAhDJQtSBo^MmnEx9Nh z(9#rdp%`g2X&>V**4l);|GV==`<2u+{oMag(Yq16D5_w=o2*&->zP-)xacnvv_M$4 zN~v;!qRsCOJc$q2T~?dS<-%**;dI^gNkF6Yg>Sc&&vTjYdi`Qw*U`%D>$fa7Sm45& zbRqJw$J*arW-rS>%v=4>cdq9`-p|4kY70&@%ZHue2;_?ro6mPECUw#JX0e(JPn`d} z4xO0R`(X7U%>}2|F?`+mW{%R=-RnXf4)VSFeo%Az53NZ{0(|Xe{{MWjygaD;oAB(( VoU!U+fuBK<>gnp|vd$@?2>>YD^~wMM diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_block.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_block.png index 8dde94d52ef07ac90c79c731098fae0bfaf139c7..b3e24f1e81c8d1ea0cc2c8e93c677c6f90265616 100644 GIT binary patch delta 538 zcmbQvvWaDaayizSMg9dwER^p@v+?S1pZZ_ebb z{(67$jc@E}n4K{N;`+P2wN;+#V>XZ<%IMboB~9)4|k2Gp=8jkL$DK?g{J&k$1?g+o`c@ z-mw)~lU^Ub{D<47i95l^?33n}M&rWR&8LNuEJ8o8o3-TX;knzTRM-zltPi_Ze=yRJ zzb%Tl!|}rLNv`^Jp6ve!}U zf)^+JGp%4+KIcLEimO|%)-&4tJN9u=q@DDPcC$TER~h$2_k4EUTw!LgKI?FHX6waU zW>;m7*uB@g`P#PP>+KNEC7%|U8u~}A7ft@`=)Gizmd!Wovo}#t@bp~m Twl3XNP@H+X`njxgN@xNAkIUX% delta 510 zcmVz%}Z5L6vfwV)F`9RhvLwnLMsS+p@`I|CXE^d zLD46r(%;}f5Gsfi@sDuc+`=5xzz7kF3c?^Fh$8wR{KcVl@%Y}kzVn*7VRJ9%?7i0B z`<%Uxw!9Q&0zg$RHA#b#1|;>^=e48-NlzrLrkskR*tie~8h^9~JOIA4ENceqa;mAKnt4u6X#_J1-W zY1*B8M$%Hkro>xI5xg>ZXTotb0zWJ1MMV(%C2jX8X(CwgcOU^i6-8bJ9^_;L*17<@ z+`&uHH64paL2t(GTJ#yzQUpOK40sE;(kA#-+dtf_lXt@~TZyLSGH@sZ{FEE)9k8#} zunX7kqY3V}01l4EvfD+cp!Q*pISeqoSL4@ttpcJ0?+UMee0x$iM1?UBkB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000OpaTE|000010000O00000;x%=x z0006~Nkl1jI8j4Mv6N;pbU+WhfL)M%hL+;$D!Vi|3U9%;Sr+4P0Pmn3N>y4_Zd0V@Pe3*S z4?#`)q{jaQvw!admnysDWDq}vO{>PAm(=C%yLgTD7kCDH@Im>ihOi4{3-B?GlB8LM z#2R|f#TxM3#qWvN6=zv}knD8pZoC>#!GX(#Zrde(;~T}X9)Z;I2B=8l9k9zh9mnyTv?_|e;(xhVzhD=xLmNy(FQgW} zMdh=k*$hAREMCPC-ao1vr1StXJwQMEQ|R@bItM?X(h!V-%-*I-QIJ7fenp9gRg66d zWPg`z)PFp{8c}-{_TdwhPa?bnyU=4+conCEs*IS%E@e1 z`gLt$e^Ns1ah|Sx+rEH;an`qC5neklZ3)hR&Pn?k=)E6|Fb{j!P7qpi%yXM0000d&AKe17NLd%pLa_ujql{mRPzu@y?GpJiDUx_@q{f#-!n;d3eLq)9fQ zXe;^KumR`b49Gq~GfkG==x=@~ehPlT7MMLI=<|cS_}T;4W>Fb`;*vzgvTpZrPCPLGsYPec^Cas(I zYG8YytG5R3BG|)=Fa+9{9ZNN^E0?!e&)*vC6i}X`SMZZ?4_-08iFcN2@YUzP;HO|5 z-uQR~Uj(~@M&hTSHRrw8fyo*D;+2ZEjO?A<25s=XoM2iX_nA2iZ_0 zou5K9>T#sopXu3bMhD6PmXc6 SK>2$B00006liZnCR{VU|Y6111MbGA(`G5Y*-p%E~E9*s%&ER^`_A1`e;#jmoA){?- zJj>;BjRUrO4zVmr)^EuWdZs8W670Rkkz2;gF~=dcAnu98!8ID4z9%dj-)?BQ(z7}t zu=@IwJ+sAU&YZ($*?2_m%Bq!D${5$aUb%jW=N31qc6EhW+k%q&PV!onsb?&+W3JSH zoVd2Uw}R!~10j_svLy$2_Z*n8J#uB|44wnV9&--J+Bno}`o6JCt9|fjn&b3-&pFn2 zL=4Ut_I3`sw<)E#fu@cYWhK zF||-k!o@&JYzOO!w*eQbX2#6>&u%)!{S!;Sfy_OZMN)@zCs?#@b4fdTWJcOT@jvs+ d4Hw&A{mpQtP|V8KUmyw;SDvnZF6*2UngH8$*fanD literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/blur_linear.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_blur_linear.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-mdpi/blur_linear.png rename to TMessagesProj/src/main/res/drawable-mdpi/msg_blur_linear.png diff --git a/TMessagesProj/src/main/res/drawable-mdpi/blur_off.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_blur_off.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-mdpi/blur_off.png rename to TMessagesProj/src/main/res/drawable-mdpi/msg_blur_off.png diff --git a/TMessagesProj/src/main/res/drawable-mdpi/blur_radial.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_blur_radial.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-mdpi/blur_radial.png rename to TMessagesProj/src/main/res/drawable-mdpi/msg_blur_radial.png diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_bots.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_bots.png new file mode 100644 index 0000000000000000000000000000000000000000..68bdc04d89041d92d912132c358e0feeb255eeda GIT binary patch literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?5d}WV~7Xu z+bOpCE{-B?@1valFt=)$xH!Gh;}Tl*>EgtUKaBN`o4K~uD_qRbC~;XhQNzVusY#}L#xGX0BZH`^_)KO+CU zXeYPu_Gc0?EyWx&vyQr5ZdPAVIP+NSizZ=aIAxkC^WE!Y)%7E)w>@KwEdRP)>Y2GC$Mo9vo35vBul|u%wERbUg;(a5FhA3q zSNpx!ZRG4t{$9FJV1NF+v|FLA%3q9^rQbi}@$Bj@jXKWYEz)-;&u;m4A>(QS*OI9> zc_&qFvwSbP=)OaF{PIsz=3ZGY>>6lvKJUZoIBxeJF^!HKFH2rY-)N3L5wXJX(fpNd zXMNli1g)077h`qXGHsi>NBqHSYCB_3+U!1oiF;MdeYz#QWwTCz!;IS=Cqtj*iq6-~C8Y)(T zUMV*3cO8Fs?)bSgw^}CKSbm@Pd0ut?yW>83-{+tC{?~D0s_##oq%G-w`)6#^d(E;q zliloYgXx*gtfn)z)*Z0FC@$Mp$E%mHLs{^uV+q6j4T5Kcx#u!&RIO-t*I>_fs&z>& zVAs-`)lkOxOr~|)54DZbGqyx5a<^exE%a#hg$90u;OLE6mlER48>Jseon@KRbazqe zE$sq+<9W~bKG-}vTJ_w0t}yLoEY~=m1%1_&Vah$~8Pizg_qkZjG57NG6(yF zeII_!%8hQ?`bt~<>=vslagA?8v$}3NU;Z20F4S|_?n}~f5!(aOHqLuCGR2;b&ky{= zlQP30Jn-6Q#s6nbQ;&+?XcH=_&G1vsUHZB#LMTyE&(Z9@*!8Wwze03OrrtMQxzDvU zd_#8gY<0O`H#FUA&R@OaEB#vVnPa{}%8~P~8jcR83D@nsCdni>L{D6kqq*sv#IKuM m+Fm(#Uv;17DBt$3wnKj=$HMkoPpq;*k>=^@=d#Wzp$PyyF4{%_ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_brightness_low.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_brightness_low.png new file mode 100644 index 0000000000000000000000000000000000000000..4c05413320920ded7d06100ec27c8b93f7903012 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfjK$N%F~o!S z?G#_WCIf-i-oVG#TG<`0tG&3z%H6m0_y<0n4!Hx)J06-G>$rdUnuDPeuas}jCnNjX z{4|YLzvuhwUa@?#iRaFjp7n@*;Z!z}TaBR`B|gS%u>8Y#qj~OG(`{}QNBGuq)T@X* z(%fjV)bY)~;O-UtYD$U96Bu_taZh`1*O2snsnY`U1zc;NO_#*$}I8?{5;?J9oUq3!#Wt33AM@#JM$-#hN8FF05oXVl8Pfid~=k|N); z^DG*zBXWB*Sk(ohjQ0Ir*xEKZ$}hRQfNh#9W8us2g|>x9bU(#?(|q!G^Xtm8+f|?b df6=#S&+8+z>xCcH*H!MQ zD%vK0IJkcL_jh~$d#{`Bt@r)@vt934*WCIt)#l{(le|S50=M~@IK?NapXAg$t6B7E z1E2qdV@v#AeSVnM$1)=#;YOSGio@15PTH>(7D}@%;OOpq{KlYumRqx}z-z+gFdoa;3OXc?7PjQ+*g9Ykd z@9)fQs;cbOV_7Rb!J1`#Ks|Hj6>irR4L2q!>hT@CZ*n8RXr1*kZo$`0(JNklG||7M z!Bl$fw~zRt{|D@w9A}-lx#Ud#0zNafoO6rVrWSqMQYrQ8LjPyhgJoaKFLEBVv{<^~ zltlXUJ5QyACs}iz4q!{Y!dq;}JL&tio~r#mr@k-Xc{tZm!{F=FL$6!1^|h9N@Uoe* zfN|60Z9E@M_>@>JSnj?n$lK$f*_*e7%`nr1QCVU21@`9(+k`YvC^c*_v244m^Cc?l Z55xJ%>owTJk3@o^+SAp~Wt~$(697{W^w9tS delta 516 zcmV+f0{i{x1f2wsBYy$pNklKfpq=v6Mvl1MHNrkl0Sj8Zmy9lqps-Wy2WnM~}|UJNJDq_kBmcb-K56pXYqf zdCvDdm;VB_v<>QldZowrC%dY?R7Y}a5;~OvwgJaesS(J-}ArW9=$+lX^p4 z@;6o*Sc$any1KEhf;r$U@Dx}CicEDmtfu^c9l$x@9dIpI!Cm!-I@a*)t2VB7)jQP+ zTES67Cfy-L)s6i{^+S0K#&ZiWG6cb7B~Bl~cc2Zt9U^#%R>a8?w1WL{ZcziIs*gsJ zS%P+)^S~_dC?~bR8-3t>WPSuVQ@J^}11Eu3z`~lH z@jtj3=eJs8FVuGQ>2>rW{R3vyIrV+`ZsnR>T58Tzjg9uKn^xy5BK@R3kM~P;1cO+i z?pIH#$JL3b?n#hbOtF8dXARr>F$LTQmW!e|_AdkX1NaHeq{iE%8v>~S0000-fqxoFL_t(Y4eeFE3c@fDHtHbgq_cxV!O_8`h;BYgU(N^UEQ;uJ z=cJuJcgq!)TKB-929(|a0000< KMNUMnLSTZ%S&{|- delta 306 zcmV-20nPrf1F8d%fqxW9L_t(Y4eeDs4#F@DP53P=Y%Cn0Vq}7i8!*w4jU5ic6)F`m zaR(%>!vR>3PwsNFZ&kTa3vEKkopbsd-&a`@L&bb}9Blt(Hb>`%QkbeSoEv*udSowl=>?C=D zR0B{gStQhsI9R9bCm8W&#NTqcCSkH@DYHSBlfe(`=_s|LWq)KY++)PGN5q$!l#|w9 z#K}dORA+Ad$ICnKcYDKGH(gj7g6s*z9 zuIK;{;*DR|^ee#Rh6d(?^Vt)q)Ez=sp!&hdJN=UL0&V;WMl-cti2wiq07*qoM6N<$ Ef?ivV3;+NC diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_calls.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_calls.png new file mode 100644 index 0000000000000000000000000000000000000000..7e17192bee4290dbef011eddd290d4049b1d5cf1 GIT binary patch literal 580 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY@MfzV~7Xu z-6{4ShaE)PXK(Y0brA`<;_2$jE?ZhGsGfeDPwA0L#|6(9OCCIUpx`Pav#WEm1(()~ z7YZvbES%b>_vrq@u8-9f;+L|S-lkrXuc3x~w znzK!>6`v_Tc*U|)EIRl-pF!r~C!FgZMo9JvJWrfyeRAcT*o5Y^A5G404^%L?%(l9o z(es*Z-G)OuSPomcm((V&UbwySm7W0m&PPjTRrg;wHCL^;*}LddyI-@%y!|VFNGts- zdg}b?Kp@|=2h#5j{1UkuBa~+TfiEepVcx7o8k{`hjv;OLG~ycf&QNurgGQFn zV@rX#PD-od6YP&!Z(_d1r=xH(itE=x+cjz?{=q`$9JVlqzGwMtvZv`9JF{is>V?am zF&&jHU|nRhWJ%i$Hp^804Xo7#OhpDRo0o;Zn3Gh=<9?~NYXa-fw5bbTO);F$aItDd z;sqw&!idK73#SY+K3zAK5ABYu-}lb&?A-ze(bO*e8JvPM)^l3|2U9dVcx;rXT)am`huhF&}%fx(XD7p00i_>zopr07M$% A1^@s6 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_calls_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_calls_14.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd9a07db1e47becad6b5f259ba65f1bbd46e867 GIT binary patch literal 753 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhpS4#WBQ# z_v%z{kI+DoHruE)5trtgD@WJ`Eei#>v=oCR8YlP`=Q&PZ5U9Xmm2u;N6}Mx-0+A`q ziXL1-tlrITY_1c+Obj~o9G|`Z@%Q*%zTa`@*A}<3{r#}k#=Pkd6;lo_F@D#WS#!20dK1&zRo(taEPWp5U1i_$ zUA9}VT-~gSajRKGd;SNBd53Ij*k9JC+W`#yN&<`+`$NtkFK_ z6NR@($8MXqLhTRJUcRHJGQ&TaG?*-?b4+~Eos(#hsrKuw-u2f{w@kRQP9~ROz5;hu z>_#u$MHjqmc&b*_PV>LKYxk>TtE(%I#DstEQC^w8a{7e_;xGSy?KsoFUGPheee>U5 z*Jv9jr{{KQY5P_GANM}@`QBlD*Zu=x7t0s(l-N`s5!{n>K$0tS-pi)h52i##C!AK@ z>apm~?(5Ud)-L+bU3OAlVk@8c&!yA6tpoS1KdpLiRd3mW^_R_6o&THdQJJ@NYpme1 zN&C2b3mBKp_#AsqLru4R_k!tL;{PT+(2&`DvUs1XS5U}16_GvsKZTaOzZPEiGtKF( bz292~`De>hjUK3IgOZ!4tDnm{r-UW|x!O0? literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_calls_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_calls_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..11932f10744eea8290f6f33aac60835fab7a8de9 GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfl1NR#WBQ# z_wJR0-Xe(-$3M=@RaO#mbV|&$-5Mz3!O|FUQI)y(LrT5F14WKqB?6Of=rxwSSRha$ zu)Uexx@;BeMAu7uMOrs(XmS!?%9q>SxvlU1eUtn%JipD_V+E=n9JYS{+vff6b8pUB z_kF(K^1O1d#Brg0iPG^Ocy3OUpW+(l@R8ef&rvH8(>uAD!eSoDtkpYm#2!}(NFS`I z&-f#iyndo#a;NUm=NtQ-cFd^btJ+lVk;t@vp#;};wK(I2E%Fv(ddvQ^@#-9E`4#(c z*N;*yJBR%(d?m+=LVvB=-=%rwgJ5iqQRn&-m-}6;F8#jzv1#MtjWHAdamXd|elHXg zopHlV{MxkL5p8jo(`Ntvd}8h~|2GSmTH^#>%NSo=x}q=i$b5yO;3xiy+#fkbZyF@Li>rBv?;Yc0Pu;CnH)mf^+q-PvP0N6Ff+8~Jt)6RN@9MtN^GIdh z0sh-;wT}DRcUSWL-Pix|{CmFHItK5V-BxT}`_@9``30RX>3$i-xBOxpA7S>>-!7p5178Fm5RmV)n^4MYePJ z)%K>mv6>dp#`na4Z3E}tTk~iB{(jkS|JQ`iw=dibe8F~GUZ;l7_-*`8gK!%L#qWBn T&lZ_gfD(G>f7 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_calls_minimize.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_calls_minimize.png index 31b6960b939a3a28930252cd6e3e2a48debba25d..3093fde145c1df940b466db5aa377d9cebf0ea4a 100644 GIT binary patch delta 267 zcmV+m0rdXE1A+sPfPVn&NklIg#1JclC z5U3I6{m70&Vi&}2K%DgD^I7-4@3QP4y$u*+wy5lt(_8@`kfM$v0w~a=3*qkIck*@j z?c*FkjZSE)X3lhQ3zUIECdVc-CjRGcRDjOFvcvGVJvzXMvwxyTN)w(5G>O(V`0#9` z<<---qE?`@=k1qD>~Vn}s2{gvb3)#rfk`q0fiT#iCu$>^0mK|tmfV^oF|hE9h3nKL z&AOruJn&pl>ZMGg3_@@R<$dn*Q73>sQfMvB&qskmO+c4OCh6fJ)32z%0EQn*!e_C% R-T(jq07*qoL15JtU{K8S*aB1B1_Qb;R#h&+kU5b!1J z0)jTah+rU~pnZyfkkZZh^se5YRoJ~^qXVBaJ9p>I%z~xT-4ZWgj47i&dQYS;6UOi% zUN$R41<*xx3nA9z7QP{Vwcmm~fN!)wO>|kfCIY%dGBx?!MSsQ=pWLns&^CzKr{QH= zRM7uWzb?o)mOD1kCVH;M@zy>H-C#+%$>@o5Z;!p=Z{+I5s=0g=MVi>#a!&-j1LY5G zlOq3%D!v_Z4FIgr)B$=V=iR`;+5M3on0A7))^--0NxC-B^(uNkQy2b;k?Uw4k3PeX z<5ID4Qpx=Sj)rXb=N~--I=gmD`LeYL_}P>Gn7LVIGSchad2I8 z;&7SB)xssndwa^FiI<#?E|8z#vt`b_a+~-$)*MCe_k8&9_spE{XXebboIF)DSfY*n zA*asae1lqb&HlOb>N-y*KmRe$f`$3Rp|5(&-b+X~UQD0y_4bvi8(6N^*)Nuve0{-F z4kM!u-cx;7wbU1KXoaX;%@g*qyu3N>+}$aTo3C~%xwSjypP$jw@pOTC7H^Tz%-ab) zzZ_OIyZ&Gne^c?OBa+v{K2cgv)vQ-K;n%U5<;VI}R~hCuC0)4nIZ=ZY&@}v6-sowcb5PLS(Lt~H<-}MIH^FA18x4->agOtzU%0Mo+c3p?;Wf+e z52yJ0+~d1-IBV_lr#pCqY)`~=$r)_qxVNg2Eph*Dj<%XOx|mR)Yow2X6-c7f2Mw=F-ow*A>^@Az2pMSVcl;!#*JcZ8?(x%Ky zSO>HaOu&dw5L+dkwt}cdSijLR9^+;9QiyN^Kesdg|L-ir?uGE*5o7FuIaq@4khRo$ zsqb!;JbOyU<_WszI97Yxqq?c^7&RiDOh)?EjZzm z<+Qe-E}FHGY9J$wYu#U*JLXgaXYX=Ug&S}~b{Rq&yg9=VuB}=}W+)6TFar{&hF+z@ zeJWzS=G$5k-U49*T&Z#BX@x^KRIPX#DZLm5Y8WNODnLI{&mieRI0f>0>q+rXgSvVq z)>E{}4ACKYz+3ce3{A~nO?{7i2i%x?`1K0ebQ@70906J9qoc`vzQ|f`(pF07*qoM6N<$f;!Bk A3IG5A delta 395 zcmV;60d)S_1A+vQfq!gCL_t(Y4egY%N&`U|D+7X+pjg;g7_hL_$4G5y zD#4-g9WLajg zj#;}grfcW1F)z?eG~R_9^bhD*$hF`U7PVT*%U!8K@fKnoT7QF4HnB0sqzbpN#xH7H zA$eqjGibw7sEGUlNbH4l$rT;Z3Z5o+cc(PC9OT6pjG_%h?*%LSNvo-SR3XxIB4R|y5Ig4e`9_$$75_0vIA8sQYx`a`xUR!F=2uUj zVqJzOFE204HoU;Sr@2d-&cX%AnRYyStOY+W>jqTaZX>Q}PzQdqlq^IjyT{UoQhp?_#NshNXS%n}n0w!yiIh{H&bjw~&-u>0H#4QuUqu|p zbFd9%?a6u?PN5DqJ}9a%tF^AWMQ!#_&%h9klTj4CkSAF0z<(3$LLDTUVH`Hm)X?t9 zW-t&hgTxt>VH7rC@Ov|R1MmuBoIhwtnKbG|dj-`-8s}MF6Lgn?b4X}YnLJXb{&?H_ zBLf-2fP0Wg{u4XcX7+=3&}7A){J_322Kx+j-ifC-+4dSRtQ$oi+`tOBOx{IcDfyBIYl7BN#mz;@!I03n!a3E}l1CUtL9jsj@tBEp>kICUXK~ymf>w37YISZM1 zfA(Ys0}esnQ2iOP^R32ZvOv!Tv}$pr7g8grkQU(daw7v{ zB9Hhd$Xj1LLIyGsO|PEpeb%)|)my4|mOQS{&Vzru`2`V**OaO?uOR>c002ovPDHLk FV1m;9+42AY delta 587 zcmV-R0<`_b1i%H5fPVriNkl3IDOF-7JrIp0^!I2Vq$AOdd_u#4UT8%zwcr7&M!RufR+A4N?2X z;t`xQTAQz5k&1{f;})R|=b;2EFckU<-dLL85^TaScNDD|P24l209AMg88`-~h~`|VyW`U6rN)fgeL(UyoPi=uk}**&VP3Sgk0j0lL+(-k z0y%ihkOaPMbAJv9JAKA~g{$z8A^*~c+ZygrBeX_p_z|ANHTVwK;s1@RodDSrNWfDq zu=}PvaW2UC{({N1K!1kG%n#~tU9tZtlt;Xm2)>=5Q Z$-j-82R!?$$}Ru^002ovPDHLkV1h`D9FPD2 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_camera.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..158fddd8bc7028c1717161aac8142357e8f17ee2 GIT binary patch literal 666 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfr-V_#WBQ# z_v#dTeU?Cxqvd})TfUm#^wYkmp~A)5dEQ~6V~dOCN7evtEnU_{2iOBHC@j37VZz1P z+u|ais8aUl+-z(8-PvWw)wukMp6#>ze&_eIy_Lo*uhhF+WimPnlsuAbiQRDP593Fn zcgrrnEWWJ8ZzA8keuKz8PoHV8--I`8WPEJ$rqy=?*SCY(7JUAdxBQd1*1y{IQ0z^^ zaRYYwhk`K&e>?IleD;Bft7=ts1^f4e>L=QLr)IjxUESmOkmXvHy}5DFL7SW}om}i! z!Va@)`1~x&Gn*sAQX1DI`5;p;IVetP{>Hd$p{?hevd`?>+rGUuoXc&Y-`VCB8@D)x zSGf0!UpDT#$g-@K-z3T{w*70t)fFFiJ(W;ncx-m%rXIs3hBF6iS4@7oU}NSf-WhM0 zXKm0`%w#=WQKF(A@oO^|i}dS1+UowED!vQWf1lQ7epL3tx~a{drnp>U$(oe9^VVmk z8Pi;+ELWMNX0c!s+qt796PC@fdAd-X>2X|<=%o|rdLmdKI;Vst0CM^YlK=n! literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_cancel.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_cancel.png index cbb33253d45448361df8a194128d57b6c659fa7b..904c0f9250b78d6eea915eae3980c5585a0208c9 100644 GIT binary patch delta 570 zcmeysa*1Vvay||JduSqzhUNn1&9Mj4Jk`pW#SEMiKE@F&m;CRn^TO~IrR73LR>2GJg%UjD??~OY? zO?K7%=RXB8cI#>n#S{GEf*25`U?E3U`o%^iA zlBc%3eIUV*T^-5!=h&&H`tJoTVK+nPwAXW9`IPkS(YCz{?{#iHw<+@Wgylba;@fU8 zzumI%-PH-JpJo4&;kmWx)YD$;8w=(!=Vu&^*gGfs!K>JvY4Zc(wsUKH=$iiLDJpNz zkrFD2TXr{Y%ZBcE^SUM+nANYJ`MW>XBdBg&?esnWte>vYKl07)`qWvbjmKQPjf>fC z{eP%1tH&idp)~T)+rLJ^Z9(lUZ~uSs{`LReKZZbqCAqdLswY8l>gnp|vd$@?2>`ry B@i71Z delta 600 zcmV-e0;m1b1n>lqBYy%nNklFEZg!c(n@VYQv3t_0g@CYPOKe> zn$+uHeueEokrM61%7L`Wat4@xU-p(*Stl&898?30&~IZfCACT94Nle$9klIvWcT_%@1$3(C)TRQmMzt@- zrt4jit2-6AqkoPU9Jdn@Je-LH^2_mCUltRx@lJi33QVb2OLloa5t$X&Yvcp!?1H#U z>bF!N*r7VPt%+Pw2jlZ#BAEML(<-NxujBnmKVSR>c1um5A#J=m*HXZ>B=5~YV;%fY zt`yW>0uGn~pcA+NOafJ)3FrW(3S!!(y{Vto>m|*T7JoFa$#6V1dEAitH5It6epDA{ zz|%=V8%he_pRLbT->Z*Oft?Y2ECX*-Pu4jt$JLH(ts1$isX$1@Gxd|Y>MyQ}rE&MK z!aPX@f^Ue*PYO~s6AuIGe&pC%bejh6j({+!*8B$fO7&ih?X9gB2?XCCffMS{cte&E zw?_PUj8W-Hzf)&qZUW8%tAPn%1bC2)%y7=v0qcQzz;oa*aBW(*m5j`qH>GZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXVJL~D<7~;Wub?RAdmq3vN=|@^vJ14D=&^GI8 zU8AFNrs;-ez4oRF>nF7CO*-E;cS?%0*)x6vZn3aac|n&oxHFIF*zEuOY+lv*GjpG< zesX2~=gRXtzn`tmXKMVf)c1G`cj|q8Uuy*>tt9iQsRF&f6#4EKusv5Oiu%Mb%jYn= zN@9?7()~lTe@)F=p?0(3?xKCJ`U3Gy7A?&OAIx2@*Jk_R<7Kt_-f9J|pQmhFbN5RN zPIiBqamSW%-yaRZ746CuY_r!)TG6anHgAjQ&qq8rrmQ?MMStSag=%W8kwJMKQ{J

7xNP|at(R0SyJis+Q3^12tJAk1F=39nO?M$m) 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 AlK=n! literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/icon_6_background_sa.png b/TMessagesProj/src/main/res/drawable-xhdpi/icon_6_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..a94eaaba5f0388538953c0905d8cb6e213ee801c GIT binary patch literal 17697 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 RW=sG8002ovPDHLkV1ly~W;6f* literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/icon_background_clip.png b/TMessagesProj/src/main/res/drawable-xhdpi/icon_background_clip.png new file mode 100644 index 0000000000000000000000000000000000000000..4d35e915b9daf7391c8f90a8db18920fcba49665 GIT binary patch literal 3814 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/icon_background_clip_round.png b/TMessagesProj/src/main/res/drawable-xhdpi/icon_background_clip_round.png new file mode 100644 index 0000000000000000000000000000000000000000..347ab73ec3efaa313e97684b732512af6ebe0dc4 GIT binary patch literal 3955 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_background_sa.png b/TMessagesProj/src/main/res/drawable-xhdpi/icon_background_sa.png similarity index 100% rename from TMessagesProj/src/main/res/mipmap-xhdpi/icon_background_sa.png rename to TMessagesProj/src/main/res/drawable-xhdpi/icon_background_sa.png diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/instant_link.png b/TMessagesProj/src/main/res/drawable-xhdpi/instant_link.png deleted file mode 100644 index ce36ab3d0478b5096d3e84fd69ca2d0839eb593b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1093 zcmV-L1iJf)P)dnA2~T6=}B^uHfe2}POn60Ww_~ZI0j<36>$h6D3c9lY|{^lcp+X7#C_oH zm=|8`(v7hihiE0#O2ZVj&VNB@La27BLcZjE-;*Y3a!%5yc+=;1m6OBsd*0`Lp5OBv zV9U1b{a6QuV*}XJx8mFZ4m@}WRp7yaGih3MVg)B$(BOpu0|65T{P0492xl{b4(g&l z!g7opgz->5UCb8NYEjJQ)9`?&r?7R;L4tNPe7x^ie>F~SJJow40149ZzT&G=11r9Q z0TG-v0ddbmncbiHE1%jJA&GJ28a$9s43rvLVGUi7>kRezT zaBv}*&ybg&&EA-~IXyR7Mk1DoC8M{$fCe|*P@toG`qR}Xrt6m`K`#_L0v>L373s@= zP9TC_gwRdVg&+)Ch;F#xf(+mJk5(Tu_o?LFUs@p`7c3*pa(ZhDJ@7+^$Akt2G9-u) z;ezLf5C2~>)3)^0XTMLar^uE-fKn#7Gl3wf7)Uf?0@3UT5!%J!>_g^$^~uBm?6@)0 zIzbO3NW|cWOsm?t4$^)i)JwawW^z^^PwvMy^xrC`Kts1TV z1Qi0}o`>?|P)+pYmdMqsJA;P@M?W|^K;@3xJONWE`SMV9sU~_-1myZjU#L*&FB`G5 zBXC0eb=TUX4bi)4$;$A+3mqyX2zGL9PvE*YS}L;W&+SE!wj3#3Y4PCm>(8&RTpJD2 z^f=lkP<;<)in;867d}RSx)|7e$>pBR&4VX-N2Nr(^F&PY+Ca;`+ zr-`4Q&*yo_aoH2w20sk8J+Z-mxa5_;UAaUx?$~v(uDcHL7xyf8Ksh(;d-c$Ub%(9n z@X%NL*2#0+VByRf-&pg^LU4>6w=5hnkVh7_$nnCc?Fa)oV%z9~93PA}$#T=^ksLcl z(_}ei)Zr_e27^ri3qzE!2f#Ih!4?Li0AOK}EEntn@YX0`0$}0N2?lc5b9(?xFafad z&V5&$bJ7|(>ZElS-S*l9zyuQjD+4gW1i;DwOfUhkG5`}y0IUqa1cOlkurdJejh?XO zy-&6Pe72ew0M~r>!4_Y6YBi_iIPbfEdv~5ZSADbGn@!3&i_@% diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/list_broadcast.png b/TMessagesProj/src/main/res/drawable-xhdpi/list_broadcast.png deleted file mode 100755 index e5b378835556b5457c4c3ebc7035eeab0a966dad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmV+y0qFjTP)sR!5xh=|zJ5)l#0H%%iu zH9KYw{r|V$?uW7STY+%gF%c~xTwkB?n$#8act~({10i>C2O&3b2V->@Cs1L5K333R z4`$FMB4SOVZ4PEI&`xO|3C`dL_&d1xf}JmDlKFwx70rkY*HjALTO*a>jk-z#VtX|v zDxMeGw6TE-M;T{S3+d8UzNvaJ)Y4Ts2vo0PEvG}T+-pxI4%BYu^dJ&;issY z5!T3az^q+v1Y}p{layuBV8bRiE%Jqyy)$E$%K`aL<}bc9YnE3616z{$w@=R5F21Fn z>Wxj6R(x{OKC}qCoRDE!%aYpJx8Xlef_uKGbH;=i0*tZ1HpdjmvBTn^+7wxed}w2N zCNYROPC?DMON}{on{_U!@JgFc9=Ya_`K}tJN-uG*8|8?)p>1tM+5vrr=0}eH84n5IMkv**%Nw!cvEEKEsa0=#uGmTG+4uZv?QNafJfbwOr zRnSFT4X;{l?1b$gyA!u8-YQ>EK3yp0XsZ(rw9eb5QjdJ(p10-6CzNj&ie3FZfw5jR z7SS<}@(SF9n(*fdbuHP7P29bwU30>s?dp`e#*^NbE_Ol=P@0FDE0?Z;xmKHW<|BUW z>a-WqjminK1Z^_jrBVsOLs%5j^%j9#ORNiRJM<1I2aMKTFI;OQ<^^rORmzy>ZiB0g zVj1mqZ(xM638G!43%y};AdtrOMy_GFU?Z{hY1&w!H+QrEYozUg4{s30I>KionQUGM z8f`4wnRzpMBR#{KrCWpl}FVg=}Qgxk4>;eu^!y{izWHde5JU>H_{W^W}_ z8AUXAGnW+5`0aGF4>ZYBXzr0x1qjRq-*&l!eDSYF^}q4~<;x#4L&MR2_f*HW4Jo!(E2X`&RN;iNfXzZD^> zjLIK()4WRml4>(Que+5}gx(W++3Aga35!Cywfuvl)Esb=x7Q@3)7%TFv$W2z_Oqb2 z=h~EMo_u5@SIfVcYAb-G2B1gb3P^Y?v0~e4H~!RKkFx;xc&cMyv%m;SKhq3+25D9m dx7iNwforaweqJkQsRIB2002ovPDHLkV1g&$*TDb) diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/location_type.png b/TMessagesProj/src/main/res/drawable-xhdpi/location_type.png deleted file mode 100644 index d259c9594541557cd325af3ef8daa1347eea8806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1104 zcmV-W1h4yvP)roVae+s{?L*?&?uxRGFd51VaUtmWtNxC+vf9I_ttaI{hj+f_qp4i`^Wv&r}Lce zIp_ELJ?DAuIp?`)X(>z1Kxzh3Ghmy6o}Qi@m;@QNK1r*SbUC~Ov70a^X_GY*BiYUH z2b}hXN}1U=sp=${3+J3!8`r<6uTQF^!^x0XF+4UBwpCBikP{vocu6u#;hU0eJKAYQ z7pV!x2bw$yWI-Kh){Hn&5~N%L+6{h0uMFfS2wVWSK(kYb5w8e!dBs}5w7&@32lOTg zI0xFmv@V2owq$4<1{cghp?U*lu5E0e=>*vd<`OA6yoBj)f#{PCJK-Og_6T9Jn-5>@ zIL?FfX2ejvkupCX$Mmm)&!O?oqJzq!czn6`#o-iq>WmV)?xx%gzK#lvD})DNn)uxd zzWheq5KdOWcQ8$6uR5Z$j|x79z!}qdsD6bqt|uFj0)s0oj_;!vMs!ZFg1?RMTZwly zmTR|1G}1D-4ZXwC=2w2rz)odwo}zh^mF5TVFE z+G7h&=7H>*rgb8$_2?$58)Nf9-gC{)A`XojNaSEnPz+3b)0N~u*pZsGR+D4ERYX( zFLsemBTPSNqv4vv!56L*`(5Cm)!{IFS;s||C4uYVPD&{o;x0&6##W$*|Aui6RVU0G zZ>{6$fYY1fTE51jW(O@3_CYr|O=fex83;{w`yHUYW=-gcZ)P~z1ll_;>vn~il+@7| zfGn$G%`n02hbBAmWzg&x;$U-(?>f$Az$+z^?3`OP$LR7-S3^`HXl0=J>qK9p`Ab;C z@hFhhL9+%#PbWwE$v=166Mc@J@BuOAjS?W%3AKgx5}O0shJ)?1^b&2h7UT@0*&)Q<;{m1YC0$CVPiR#h!}U)$ z637DCZ8ei0seF`Zb`LSwzZRWSLNbfttCp#v)uTnNOiq7+T$5B0$eM4npERrrBss4^ zNiYYFD|aAEw0000D24eQ+VJ71iz=#JQ7h&?YX zyCF77Db6!Xa$=4*Gfs2L2J=eMqRnH*9Lte?GwPeY-1Aw^vt~_-yqZx5f0`K{Om`$B zR?L_o3zoKR+B+GtWyaiC+m>lRWXP@=b7pO)#%C`>#v9Tv=sn^LAz(nlq)8YMlz+o3 zs^+>pl2%62@`xZF@km8P6B7~=q3c34-E2j-h>;=}xixV;NSIp_{$nI=V!Je*Y(=N8 zg9lASk6xXhu>Y-i#0B!%#6{w=i7Qb+#Asq*L}b6*{Q##D=i05)mx=%Y002ovPDHLk FV1faTos9qh diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/log_info.png b/TMessagesProj/src/main/res/drawable-xhdpi/log_info.png deleted file mode 100755 index 9811db4de1d67849e6b49212476efbbb90431f99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmV;e0#f~nP)*_o+|K9BUJM*7X)CeS9hu$f&f74Qf1L zTTj&3a0gqX#h7_(Op7%axUamLphp^%*=Cg$R#;`5G7TP${guOHuqE2Yxku6JSEOhB z+AP`Ja-3_YJ4$miDRHO0&&kPe*VPWE);;49i=66+t`I>-8!M^UP|;DHX~Us5oTMh$ ziH~g& zKAZ9T0>FgL;IRh4rI5_~+g(tPfX}4PB>=Uc1v~?=D*%o(!1t*Qe$ROB0`N>mQ2^jU zJZ`v)vG> zC=Rr-vrnQ;K+`v;FF&YP9C+h0URuSQHOWqH|;phRwmWuii(_P>2xZ$*C|iMAd|4rD$+oU}=`z)yeFExpVV`&Ea+fYQ zissZi<>x-ZA6-w@)4r5gvO-& zymErO{4EreuR%Ej6e{z{x1vzK2IUM;sLUtdib5AOhz)IAUvPDUNBnT+XQ_3{2elid lP6`l!00bZa0SNpZfe$~%tI(xQ4haAN002ovPDHLkV1oH~ihTe8 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_bookmarks_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_bookmarks_14.png deleted file mode 100644 index 1e775bd4ab87e1faa53ae7b77b47f383bec15de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1254 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_bots.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_bots.png deleted file mode 100644 index 41bc7ac4adc73a616251ad38592205d1cec4fd24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1124 zcmV-q1e^PbP)ent^FF1M#r>nn)yO5qm9M2 zFo-zZ58L4ooD45;I0fex+^FbOEqn&O;5&^P;LIr>7@a7F7hn+RA;=OxgYvb9NIr+; zt#G%k6XVpM!w2vq{07J1Y*-H0z*@Kr+VL61UiMdy-4JS>!N`;8gc>7Mn&ApJ$?@9^ z??F3c39fV#BQPHlUbOY1m->1y323(q_S@q1QI{1EK1d`7fJQeJIhH+x_T})U4vKuu zb3nHZNg_wHKF!`y4`e2ZvjDz_2BQeoZu{oRj|2xyHcClY<0(*%M#S3)WiJ}s&EXo1 znk*eA6J?8zO1%gkgV*6UZL`bRWr>})C?{VE=q^D68C*CQFM&&;egjyS>IDL}zhpq4oOuYeHI*KG@ z4}^32&_7~#O{AIlYr0IW8s4xt`5lF0861ZOGLuQ5kU?rR8(WYi3ARIhXe3O0^zuq% z&}Z~HOFS!$w^g1n&eZJ#5|>7p?_M+^GfHA@g#$1R#xYGv#pq3$?;bMkbSdlqAhA0s zd*NSg%tKy|?-p1GJ%82&F(C5CHdqvSO5tazyr$>cW#fxyglFhKrvklo6~D6w!bR;VC%v z;lFr7a%5`!)|CQ~<+pJIEhlx^p3qk;9af70%63bZLceMhD}5NE?wiirM6ywfBD({} zW(iDt1)+Wg8pu5q8c1^5B%+i_PJz1o$eDFQ^(>?sh`=2)3iZs0`mOx2Ag}TMzEe!3 z?Bx!n)_J9GV?t&3CNh93s6Q>*yhUDdpmH0h@`nNQB{BNKv4X;aK5pCtIy%cI3W_jJxioj(CRRafMn2;~l zhQK?YD1LVv q`4k~UglGn$8Hi>ent^FB1OEVy0R0viWzQ=B0000P)BxTofdNSMdent^BrGCTvr!^1I925y3O@Bv%_JHfaNr!%&2Bs>p104}6VQlF6rG&;*t$!$J5OP#cTIgbz$f3-XHCPlReP2S`C-QajFe zQ^@@=oF*)YVx|-1DVP;TFpCcm4A2fu?_ArZ)kj{e8 zT?V=sS=%?jUC;%B&~XM$@&@)$OlJ@$iN;t9@|M~LHSin!G7{)evQe}6J;ESU(7>o2 zq%gqsp|_Q>=H(xTm!&bLVp7N@6cblLdQ0u2m|LMl%YYMCL8U78C&gzy>ncbmE=w+F zD3yY8rWi>yDk$3@*MIYb`qh(&|Hx9ZtYuwK=$*>AgcCkr^|P9F6?9u=EjE`_KdV_+ zL66D0TV=kDrzCe|`eRk8Q)cy6q~X$0mM>SlPkV(O(0`e9kj zSVKklT2HKpMv(TFfQNxx8KsLlal9$jLazY1(2P9^c4 zh%lo>;1*!0#T6U_xt20?R@))m2fB^YYk$(pGPh1N@S+xZ!6 zHv)N&{3P$&62E1;2)fUUxi|@Hzg^2oB#j-07*qoM6N<$ Ef}Z>8X8-^I diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_broadcast_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_broadcast_14.png deleted file mode 100644 index eb68c5b9dc59609fa793532c0035291edd513183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1616 zcmV-W2Cw;vP)4Z4cN7Hh}5%U7i-PBH>Bk50FIv(D6izq+6W^$(6ho-7Ihfq|sB}uW*@cr-2{9 zH(;U?qP-IQ2`sHbcoH14O8B{j7hw}1p)DrCUidqKFXoltL*EU+7PS|7bm%XcT>ktu;6aF18uh!E1whl8;-pfAR*kWP%RIrX8FM&WUg)?aAN}_^ebabi<--KcwXf|%DKZEKIeGmjX3Ug1Y)A3}-W49dWm`N+)M?lY(!Kq0bcV~vY z7%k0PfThRlC}sf;_99sS9SC|}SkfJ@CmH~g_DVwTd6d%3ru%)Zg#;vQ5XybtX zFM-~v<%ps7RF<9zJ}BFORz*vP5iSchp+%?vU%xSYF7#z?2{zjV6g#a}Fl_F1J{7xS z`c448s4t}VvC(}C0=?n;8ofYR4IkLS*XT&lJ5W=kg6snDYdz6O zwgX@PqpxHMLgsa`Rt7YL>uucc+)CQq4xCIP!~eKpVc zx~h78_!Z(fgM9kzr$YZO!5;M z>_cEFpOq&{k-(FIUE=p6pPyd^E)v1Vf?t58Hxb&LX~QBh+Ci@k3_r9dKFX3obQN{l zY3Xx>x_1%2T6`6=#|DJ2`Bv=XWR@9BtDauUEa_ZMhlF-3lR5^rS^ypeT4XG3M6jFE z)Hu0xGT;T9=ciwA=<9222&CS>qEa2 zXoK4e^yWGN=$JU}f42s`zUj!X7~*Pb+ROnvK~~agrkB0eArjK}Aw5Gr2FE}>^fN|J zgZ$3iYFv`kDVO9+g8JlmE6_QClGO^RPm+3B)D-Lnn?WbjOXn2-8T|`L@qk*(-8b_9 O00008XP)O{i5>6vv;>&oC1wLLr1Y5W`UP^#LNhfjpZO6dEW=X~Tw2 zA`yuQOoANLKnxYrnO1_9RuqjCe9@qZ4$KCxn z^KMvouaE!wuf6yAy8GPQ(^I64j*jk0$AccVXw1LF?zK*%57&ZIXrKp8aHi4As{Vj- zJOnT29K{XGZ}s9#k^#d|Ql^%opBqY;qD}xC(4SR1(tpG1e_4wud(Gh~#9#4T_e=u+ z1_L;wq!OSlz1QVF7mF1mY~2s})+81klz`C}hLWZQoL}JkmV`wt@6UmF+(pveSTsAh z0QvxIjDej0JeBw5FeElyQX99I?eQE-ieZ^TcpJBsLfFhl!q+H|)d2_`wQLH&_d&?7 zY!Z7zKD@Tx+0QA_Br7fAX;*S?8SD~O zQLy1MyJfjpwh;NdLIaLnvbmWSESi?fX!f{S%_&$QgS*^clX3y?cL_(55&(gJ$>m&4 z&B-2+F3ENWFlH+Wx_nD|7tuDXiehXZTu&0@u{Xk5bI^kEZ^B-M%tC%Z4uPpXhloFg z?*)82=(}wKtN_Pk2-#BEP#}8(nQsZP*CAQ6{?a;3A38qi`YjQ*T-*z-ue1))Z-}-6 zJDGwdsW8V?xvi<#O`oWWE!|T@P5^1`o1Kh~0$Z~(RUMnsQ;sC&?sbe*_B~G{vFB8T zrp|p9&vEW~cj_V(`PeNT)llWw~g1qmIWf^iz56TxK1QU+A>JnSQCQ19`fQ%y@F8eZ#GB`WFmCK<;6epSx@f zWK0Ek+JP60dDAqPcOwlA$|V#!`^Xt_c@KvQ`Nt@Safy%ToSp$@hTw2FUoM+V&g+us zwd>d~dbnrsUGQ*Xp0c>84)7mM77+SpYDfAD4)?dlqvSRKSeD`=>vKd)@NYvtLAE1n z0+{#lKkECtc6S9Hm=)jxkk^`b5pAL`s$u~e-sn;bFc|qNds0V7e;e7>ApaUM`y3Me zj|TY8h8Vov1ekfX`73i^nw1?8*0|tyL;=zM45)%+2rU2f0XLP7$#2*R&fh5k(>Oy6>PD)+>f9y1vAFqDL-6( zRcaU>>? zrCi9T`Jcf^2zY8 za=7yzHfH`wKwj(0-&gcKaz^WXvW?d!uNtTOHM@3q1t!1>{0|FL(}Bxtyp;d|002ov JPDHLkV1oP~bL{{C diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_calls.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_calls.png deleted file mode 100644 index b57563eec6c7dc383d7faaed5b9c059d5dd3d983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmV;L0%iS)P)uM*1B%}~iOcWGh zU94nDAXEp-@Dl#%pGZa^zD7`4x` zD3%wL&1P2=%XhMhDHBRc%94_sqe!w7*1OYki*$IvsN~5gl5Bs}Sm0~P<|vX$$#B$Y z@tI_66v+k2QS+k4Vabjtl9Q5eERGr8_E_)r=D~ja}*?z4N-k0r&qUkd(`9r@K zRU{`YjiR~HQQ0Y%CFk@;Gk9LTG3%l^boxP6*;COxhGb5R&v_HXfB&%Tcf$m z_o<{}eKeQ*T$G%&JetcZvSIDfOj;a}y=Q(jlP++m3huSw46j_YHdCw#1IrfE~gl}t;H>53v)<1IhCx>vPEQFMCR z9$&cRN|WBz9!1k`l?^uAX~c2+Y|Ylu}<6vt;W%^K7+D=K_UNm!AEk~FCF7RVr={7|CwsfS1u5hNLJIcJ}9@3~%Q z?uS|MXRp21f33CmIs5E=?wM(78j_(aFrZhUIj>r&R5}6wRbUR707ikqkiRIp8*B!f znwy(@3JrpZG=uq|6EvD=Od4D8W~7V|TbTVj;OatGVc^LdDR~oj>u+B=HX$aXCAA*R z_9XP*K^NEyN?;&GV>}yN0LCT?Z=pYzNoh%@g$b<#UcRPtE6}qvsG>2H$D%QLSr;4_ zj2WQEF+V{+HAo&rqs9a@HWQ6`h7BoNau_#YyteGn5}U%UJYd91E%Bq_46nos_`9j| zXTY9mqSiQ^JAf_0_sMZx6aZl|@Ukp&<|qVc87v3;d~gl=USggA(FM*a+v|e6EKz52 z6oca-=j=v5Epp~4@K(FHdZ;UN%Eeq7BhXk)mP71|;9cfo>ZR&=n3hvE z=7PJ?6<#CfiDib?q{$IeDzpzfzn+16!G33}Ry_;iYM}E^OHO$gfoi1Nk@|OHW_h2R z>3`_AgW!6`J_0NTen(v45*Jp<^&&7){X0SC27^z}?gAjL$pb3fJ7_HDpzGlD?`ntX zhwj!$>?Z*eozzp=Wqve6(U$tH#B_p_U94(r3?Wf{jl<+1%0-Mp2Y;WCR0n8L(Op_> zIgX_zkKdSzj^mDCZL-V--&C3H2YB;>iE1>GPs?a`mGwp21+MYsQqKtlt=&t&RN!x` z#c3&g3qIu*A2nmW+H(Dw%Vp|omYAX+evKZ&k*7+g>wMTF52TO6dMNK0+KgE)v)WF(7V||5Rxx2 z27f?ef4UrSgf{lThiV4x8l%>DM`Az)=Wg9qbhH|S(UGGOre_`2Yjo#N{H9Ws&ous3|cUFZ~OJcfD zNPnjDOVwG`ZXERC;3@DgFxifxqaqUeYt311J0fSj6cWFhDDrqRH~yC$=Meh&Nsjv1 zmpY!*kPvmM7z8gE_9>tnnD`%yu|Yu?3w9cjR&kfdNY!)*ngxc0jU`xGIjWCAz#QPu8OsrBzr^T&C1;j_r#~QQ5?=1k z3@``mb3u=b3hqG054FTz3H-L~(nYH7-07kCEE{|+*X>b;Qt9(7Ze)jimkZF9J~MI_ zP>34?I)Gk8^@=0WVXN(WK8QVA)utwHA@E{fPs1r-u5j#aVOB9K`E-!_4=cqII5v4& z-T0)=a_;E6oVWSiV~=;#s&k&`XL9HZQY|U>C4$EIe(0Rg2S1a4Olg#si<2DFDSm9B z3Hi0{bsslqI!i2fOrZ(=>_$7A1mj%45!9O#gYe@`xacwgeVg;rMducfzni2})y+a} zok5eplR!JA$!{pJ%_eyJAid6LZVQYk^TS4fTW?cxtQyNao~bu07Ggpp!H1wxMd#XM z6(`~e1n4#|06RdVh$f=fpNsuiy`H>{-WTa4&~KLqf&Xp4mHzV)slLi1q-%32_2-(k zpfj*-J6ZviNwotns|th{qEcj)FNEG+C_y!3lIjDaz3u*leql9nwQ!UhsD?x}tNWQy xW3dSo$oi{5Eh&RBssZ#5Q$sRz1seGZ{10y~L#I;PNy`8L002ovPDHLkV1mV24oLt2 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_calls_hw.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_calls_hw.png deleted file mode 100644 index 4617f03ce4ed4ff7af968abaebe1a2fd86f7943e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1535 zcmVU8ogR6vyv1%OJfb5t>CMBoP%x2ogqORFK(+NKvRz50$=U z7l#~*Fo5~X(vkv}<`E4!9%aS0@aXGZ9wN=*>kiIG5o(0W0STL&% zh$ra33Lf?2ZCsKQVUXDOB4JCyT+%1;IQR~n1JlDIV(BJ?xoF=BwI4^(>bio1Cgjg| z5VLr0>yvyxMw%825_=!wflg!{bccKa`ZGns-URW(S6QEAepcM_=~%u@*ls z>F3&Zgp$}>Eo#lqI~EI%uWR{rWMhC4Sx3eon81d0+G(7DXWMcmrQ>qGkO}# z10S$&_SHH=2KYz&2-|PM__rjH=AR7~uiT<{lM~(?in;hXi__P+^ON;Uw~)V-XpE@1 zZ?T$KEbBK)2Fbg&FxU(P|Mf-l>f6pFN8F_ru@`+I-$(R}6SkY+lYYLi&mi}?U9_+W ziQ0!;y_%PbaFQB|r#a%bQ@ zgheJyY`4WNR=GuRqZ8fYixIoc#ZUTi`NX?h#5%#Y%LnmyUG91}z;f4*-fF@Lwe=z2 z;{+CjNf-aqwMi4!lLLVcPpZC1ZA%TDWD#A2OwBCSVdLPU z7NH^?NQ=bAUdgK`zdfm%{4<(YAI%vznhb)}YJKrV8BQtzX-vd4P{5&lg*e#n1049 zpF%D2Uk($*Ry&cbCRuE{SwTS4-MpEhQ{5_}EBmQ59BP!pZWZH~>H*io<2%9(DY{d zxtgX?pA3__3;3@Yj?m9sO_5s<^ftguH|5*wn^6r)Oi0Vf5ny%-XLg=6d3{6hZD&?J zMSAEt0G4Le^d!!J`+!-;SB(_j049t;yIm8bwGHr6jW>ES={!+J9|Afz%pS?BSB}EP zR-Du7sj=#(yq2ltJ?N!{Jiwi%^Klv&7`W5(qb{7!NbK;ET80mU^qT|z2zBYpX4SHR z3&1nrQ?N|2+701B@Cz_|zQ`aHUjps!kZ-?ldZ}}=MI?wvT_`UmO{E0Hq1t57T;wGT4K6Cw=vOfH9 zW1MudDjBA8VOh=6^$em%F0&)01tJ8*=7J}H4#CjI39O0G>IosP%mgw*E6(4P)22J=8I7Ylz}G-m_* zQj6OtbldPXGJVAMO0k4#b^chUV8H|$PkCehm_;k~H3Pwo2;J?8eTDxKI1Ka;1ZRQ% z=Vmcj1@w7SFUxnr)go2vz`bAvxB`SWO5hXlHrT@|qCsosuk&Dcy*wgR=qpY^)2y l7`U;jUZ3CJ12yk~{{fbHzIknRh`#^;002ovPDHLkV1muh=x_i4 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_calls_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_calls_ny.png deleted file mode 100644 index 3042a4bf829ff9a6f2c50df64c5d97ce2db1aa86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1151 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_camera_av.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_camera_av.png deleted file mode 100644 index 22b8848476301e3b20108c672542d1a7e409abbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697 zcmV;q0!ICbP)vIn_~2m&Lb2SM+J?V??@C|gFkONWGtwylGpf=Z!HK@PJm zq861PZ44J0DLB(h^V6c+M0#h&{Qq}(&hFlO&iB54=YMB1nI&7Y|Jz*f(ho8F;iay$ zFqhS{ON&pwtl}5Ugt?cL=Xfcsb4J&nh=n5BopQ^df`UQCFy}FQG|A2JCVPy95yeW( zEvK~C!<;o9*_u!GSB*H}QzT-{*;<(1=m~swyyoOi_!5olsTOb~oW_iPdA;)T@~%2s zce{`23!{7G4OH?Rjt_qd#vMw0PY?SDp2WL9fODxxq6>_~JK>A42_;xp!4j3s+JAX)p)|qA>$tP(yOiCZm|u z8I9>Qi&2}BgARrY-WrW*^%)#Y4mt)(nxio*O@R~1LAy-jyDia}jlN;p?&P3#hO1X~ z=fSXbXyt0|MoWHj6BS!nH_ ztD?o%x($`eHtV?u9(iFlw7jz+&FZ~bAzHl)HmChPYSw2Yyl;NJaYppT)s+Yo;UP;Sd*;;FNSG(?oQX)jjbJwh1 f`jcVF{u}!VX&_YM&06K;00000NkvXXu0mjfANEu` diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_channel_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_channel_ny.png deleted file mode 100644 index da284bee9059aadf6401a9f8ad34bec803fc2e53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmV;Z16TZsP)*n8+s>Z`(eqxM_nhzZJl}KP=llGA z&+o)y|2y-D7B4G~#EWgyVok0zrTV~!7KY*rwSa!5xe+Ctam`MsNJA@}2+%VUx&EdV zP6x@(TQ><==X`*iwjv)@D%Tz)ylSU{SS%J(V5h6Wr|rt~C5ZVNjoW@nN&8dp8_mzJ z`kv7pq(10iaMx{fev%hTxWyVy-g}-tUgIK+Jo-N+y)%?c6uYE(>&y4T5!KErySGnGoNbJs@2EZeC~*E{NUHL zh|8L$RH9nLDd&qi?6$?j?sBs-C80IE&Q0#L+SA_fh2JJT<{zz%qIodo_LW*Unv-E& z3oP)cW<5ccK6ivW9s)yN4Ey#O5Zi&UK(RB=nV(qlI!zAbc0J6izXV% zc@@5vD{cs;A}Y-bQE3)L3RS667_mr&V%ZVx0eeDYBCsroRJt5=du3WgB$f@)6RBQb zpB52`Wka+&STDv@rA0(y*$~as0Xoum(r7F@F)Y@g!Q#-E2rMh2S?i-&C6fHti4;h9 zN1yGXF{{+8OCL7qMtssOS@E+ z=e+5FLr&__qt~Dz1A6u7^1UNIvd<1rdcdvuIcCmLq{LitadC5%D4Jd-nGuvqN=gJ* zTs(E3kdVyF5Ut!{L(^Qpdn@<k)7?mLWg#Pp3DbVy1 zWSWA)a4;2&0CDz^&h<>iBXK8l>ti7GUq2j(-)5 z%|#%FMBI@EO}nXv#+Y#bE(kOg^hmYV%t23omUNNQ0MfFiT2ej8N>z}&!m{COj`vPi zVtAIcB2AihTM^Dg2I>94%XXS#@gDx5RAd>FqzR<$Of~fjrX*>nV~E;0!6Z2)pg*Uq zmYqS=Bo78(49Vdjf(isv%VATGY8&h=L-0D2{0(1!G&|K)15ho_)_NC2#wnLYd)hm( z!hx#A)OE^Bj)Y+#-IefCNFPL9Yt4XECSgXYp0pLTcuj!2BhV)vwRm;jx}2wJRm#j{yZa_vgzlSO)aBgv;X#O zttFwjJ9L&acAsp1DY7~~7Me0X<6kt#$u3vonECa(kR17M&rs84Q`b>%b&~AD?mNem zy^|{xNDULsVB{|GmLhlnc&Dt$&Uq(SAdnig6=3%@wA97FLa!iT^?X|4i@Mo zCKz(Lv2Pma?*Y~TO&9xr>o-1kKuljSAM6FMK)HRSW0i~dZRjvHaGMhDM?@dCpWOPR^OEwSw@g_g&gNnoc`{B_6UMgY4uyM2qe9dl>7H|?w0h55HmR?j109xAXU8{Sw--6%FAnwyv-WZVna`>2jFSdj5Hv*L( z#xDgG2--lLseeD11*&QzC2`7WXcVidvl6s{JK%PNM@*IP_%*9tf!Y=L&#u4^!IcH9 T6iC|M00000NkvXXu0mjf6{|qW diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_clear.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_clear.png deleted file mode 100644 index 74644319c1c1a3ed2d4a502acbecd1540f804f8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 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 KMNUMnLSTa0&a~tJ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_contacts_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_contacts_14.png deleted file mode 100644 index 578acba73c70c3a55c6efc92e17d1b5181b717ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1696 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_date.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_date.png deleted file mode 100644 index 13587b754858bb81f8f2e371ac2a30f3d7014919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkg1|*MGNWTVBEa{HEjtmSN`?>!lvNA9*xq7-d zhGek5joj?m+<<=hC4Ci{*hq1mQlW@UDbsRvF)$vY~CE!%J{PWKZ-(^^4qLw<#S zM@%%6mJ97~+-*>P=iXbj-8VTl8@ze*_Kf-cGjHO2bVO1-SeGybF@`lZyo}1)ep_|E z^9idb!bMUn2c^@rnSb17xW#=?udz0rHG;LNAzHxhT~~n?1$ebPY~OnznF9G0Sl(?4Yym@I7}0^Q+*S!J})ww={HjX?+MX&mtQ*^ zVBl8xJ%R7YcLly9M}N3p(`K5}UzH0L1J}Sb?gged?mHiI-YX(u76uYQ{6mG%a@&9t#= z588QpqV&^sg42X-F)k)rzLkWTrGcivBBEX-}~emI3LmG`<~ z(P+2+dG7hHBqt3s`OwgoEAf6OB<@|FF;CIizv)qW5C5CBkEBbi&$?AUacVc3v+t6O zt*x?NYN%1voC_jU`!lvNA9*Zu4|; z49Q@9JKf*gDNx|(U#Z+xv9tHN3bHs(R8aNwVryz_oY-yV*xg~5c)>j*{KEe?=0Tq% z-kn`;_gU}UfrI7m=UNs&`>`Wz<&p`^MGkx?7%dgppESrII6)-~?!VV>aNb~~U0b04 z|4YQI(0)dJU$KMC8!A|zE|Na9lW$(bQRN8TUB@Tze=>eOsk3~Z_Td&y`3JWc&P&!+ z@0mHtEROHztn9SY`~kh;Ppuo1h4(PXSO1hyJF_VIe0j=W&Me`eX)EqBedGGQWA2pV zHCDUIYSXWoh1BXOOV*-c2JGzn7$yJRvzd1LwE!?i89ZJ6T-G@yGywn+i`vxy diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_groups.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_groups.png deleted file mode 100644 index 026eeaceec54e3d1ac0a3513b03134767293f06e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1186 zcmV;T1YP@yP)w;cbKgs9;Vw9E&b|BYbJo54?!C@I zh71`pWXO=Ac*uz-l0FW{09Xj10YE)~X8`m7I0WEV07n2^{V%>zE|jWQwB1R1A`aTn))C=L>vDav{l_v71416UobtZBv4`D}HK8ZYJ5H?Jd2Q^Z7za z2z_G~H$ZYjjQt`fG;ffsj<8>>a|{H8u3Y<8ZHhvulH^S@!TSl{)^d`A=D9aQ>{dDc z!yq=Ri$Ul$=S|mm{G>mcXLp5snI4D0Ig+i~&N}xbvo0x=(7VRrFCw2 z+$$mZow+|mvYF)5#zy+vN!~Sf-;*3w2%*o7voAf!xL>!I z0{|0rETMM5u{mP;^8rkW@F(|b%=l=`{IP{~rSnrt(R^7mm1{eT1 z$XNq^Fv<06NOp$&tZ8sd>qyWK{*tpH3`4)JX>HI}CXCQ@-6{+hq@HXEAhpqRzJ0pZ z$Sn61fS&=(aX#W1mHEDztVA_kb%0Xe4PYaH0UeK5tvEfv&tochtDWnA0C--*`k_-F zkt1I@Z{fIVxv8GD#g#epRNB}BN|7{gdia^DYw2*-*qWC^HstdEjD={eiUNoPwFZ)x z%p7t&R^{oV!r8tH)(HnoNMiAfF*uP>x}<5M)Nh-)-b>+Ql15J+qWfl8La!TDJE#hJ zILPE%i&@O!fbB(+w!)m{iCS-j+2Fls`sV^RWW|OYD-WqpIX<41!v6tXD>S*)TS7~W z;dubphMCas0Q$5)8NjnCe8`#l-)6iNhR~3?aVz~g6QkErDdST5u_sAS!VuaFpasCE zS__671Lj2Ownjx7SS22R){r4Xh71`pWbgohdqEVzt2RfiZvX%Q07*qoM6N<$f?0Sk AMF0Q* diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_groups_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_groups_14.png deleted file mode 100644 index 6f1c076189da60b71f7aaa780ac7093ef364b461..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 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 IM6N<$g1)J0+5i9m diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_groups_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_groups_ny.png deleted file mode 100644 index 707de81f2d5dd52c78b8d25379ef75d62dec0a1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1111 zcmV-d1gQIoP)hYT1q3x6wsN&r84@-fVM+OxD0;8pP2kfX_w@KY&;8x&y>G1+{|A9T;vItqzE4X?>e~GlEs+VVNz+;)2uZ} zUj^VWH|lc^wd|vpuPBfGb|PFlQwabg6pDyYz@Ju-4DfLDAY-_Wg8=LyT||T==CcVe zpU^}T&3vjsQYJ!%!ua_O03XYv0mXf3 zLNicp*(gzO{K}m0KpqWe50A6o0l15DvTT|S0DPzsxS3HlS%s$bA#Mo=6g2*VhzK+I z-8$8iB)c?&Ks$mZH^j~wb#_OXl%@}W`}C>J0$SwKn?Tp4S29{!tu>{^{fa^HZUEZI z6rlpY<+#sDbLg#A{$fKlxrYMsS;%JqoMEg9=qWYOO$+B8ceI_WRc92H8X)^f4Y9C* z;{c3ko;8tV0?MGn6?Jc0oGvy{#wx2YU7*P5v^k;YikjhAcEUamds4|1>c?6gv&vzuF^-IBp=L(XZ=8-YDsZ!s0W}vW}tKhDi5iTbqe*KW4562 z($Enjl+OetLJD5ZyOnnKM*w_7S&Zu;&76Bh7|jjbWUWa|<7)tR+JUP0Kh(!85$5s> zhit1$=ZMXApouz2{Wp3=M1*IIvQGN|8vHbVjc)uguWwn;I1zFpPxhO5)#* d1SKe5^baElX*{?M>Vp6P002ovPDHLkV1gaR5Ig_? diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_help.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_help.png deleted file mode 100644 index 8ebf31be2dcc776536d647bcb049c480b22624ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 913 zcmV;C18)3@P)9(E6bJA}X{})(5<*w32oREL)EJCA!q=9jl@2YgsC+FUzy;%Q~ zWs5F@#!V=hH?L&UxItaEtQ1AF{m#2BY29|-e$C4xStaj^EbEHARgKcTu2Au-$F3PO zpij4Mefo{L=5Yn0;EhITj=Ep|#SN!zuQrcn+nsi!jJxk>y)?sRgY=6GkeJLu19Porsd5j@lrD}TqZ@BHMZqHmq_S`4PgLvT@RGEuju;7p9{ z6=y9h3Ddhiib0Nor}9ZOEs9{;x+>Y)a`4W$>aw3bd3NzjjcA=IP}CAn)DcvV$H+bm zvM;?Ur_}~~T@NAfb`|<~KzGFFwF}@@b$Dv>J-FoMimyBU1%_fm_!hVj<1#jz2B%^+ zvB6af7M9AwnZAh8I2A5obG4{57-CzjORtfWdp_G~av6LUqp>aIiO!^aP|Tj}wS+1) z7JCuJc(X>qtIpMt2i^yNdpA}(2F9xe6JQ`S&0BsC4zeazJ^&`G1&gk5EF;Y(KY|B# zBp~`gsah}x4rQWgb178ad?F?f=9fWalOMpJK1e|w0&@+U&c<+>2g#=itpH3n>$HKd@fy5(TFuFG?N&Y|J{BzaBZ){pv|Hb#v|CZ6-7L6gSK?-Ja)~s%+zSoltF_0K z#Z|JeZg1OHZi%yuFGd1*)_Zl)^aN`#Qt#OE#F@-v%SgDJ>|;w5MUjuoZSS2r2eH9= z?S0tYOrzx|%Ni|XhvlL%{rcqfI;P(_#T6KqL;gFMdHg@9>ED0Q=vd~1#*!zRAqCf! n%$qZ1Qo+y)KGD2b|M~g{d!qOsK2ZX800000NkvXXu0mjfBQZEjSQN2_aK14wn^jHy5 z2tmCR5k_Pb6$Rl-7ZFVAA%ifH@GsWrm-)F7uI{SR*oW19q(Gh0B z|E&93-}mj?xA*DkDMN!bnk3dV9^Xfxw;=%IaSg_3AYiKNsmKZL?2yyvAutE5&P$P&9Ov>(x2gi@V-c@4zV?)sIiWH>^Hw@2$UP}dc-^Qpe0@s(SOyDkX z2wV&%fR{jWUU@+e5I0&NC$bJhnsB}X*18utUv{^N7gtZ0-wiP!B^Q%+*_ogrsf#Z3 z%i!Bn$#pgY_kw;f5wu7(S*K*Kf{mU_1{~W) zruL-IuLU0%@+>KOhZTOYT@m7bv{;>R)yNXJDGT`t(^G7w#k?zLwJx>d%3EPYBsUbv zjAn<;Gkr#-W?sbjJuw;EiSBnhy6#5}gK>Xl?hWA6l?*@0ZIz3q5-4_o6@1nj^mzmL zlvK`;Y!q7^3cI*|NX1$uS>;V0gT6^N*Sp58(QYq@zI#|2sR4x-fE|YU-gJ}?>k1s+ zVYX?*aXEpIx!_E&6Kv-xz8Bs(QCwS_J)jkB=%^Ew^?Y{PjIbC?0li=vSPFgvPNi3; zZeX5WXG|!>&9>O)`?5q{W+L$%OTJYG%ovNJ>ByZGc zp{Hx?@a()I_CMqcy40pK^0+!qf;UofejGdq+sAT1&&viMpJ{`GuX{`>PLdjZ11>El zV0#0Iwzv;@zYMN-%&GN&3PL-)81g5XWpMCew{^rRHp>d`_d@6!%=UrXI_6d|UmoyXt0l{7u zpHfOSBGH$q&t~Bb-JYsl-KJ#|#mt(e-WL5ux$KOxjU&a+RRQOS`G&GsxTse>8S3)8 zeln=K6c z%Kt<3bzP=Ge2sY~Ho*73Mqs2zeN!SP9_f8C5Z^+p;q27tZzp$hN6EH#bnOTFPhp`o z`xSmyo5sfn|5)MrX7Seo7n=`cv*S{yDsBf6w@9d+gb%d_^d*4*5a`d^%izm|O?$10p?t z=CRZMI@3n#4}&kBZgwCV*yfQshkRTNd0AoD>(RB{nPgmgq$9Vh&PQ2NV3fM`Mp}|e zB|vw-NRv}>L$!6X^(prJ2Sc_UGRL%HK*Fwg<&8{Y*#|&;_UQkt<={@^@&7Hw4UEj0 zgi$d_ZF96Ai?0Z%Ims^nxR5p~j;_G5x&r?LHRa=5=A4UX00000NkvXXu0mjfdPd`F diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_help_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_help_ny.png deleted file mode 100644 index b9a0c0b8567a61acbdb5bf93b1fb5c785822420c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 569 zcmV-90>=G`P)YVu+pNMF79r+I8KYboFpTSpvc-C$ zr1U8xF7OWHwz5Yzao{6+l>rWGsOJt}NE%QsXr+fH9Q^?rIYJk8`scBUkP3lQB)G?Z z8VIsMwopx!lo+4cCOhzOAJ;9}LJtXyaW={ZD!7bmj!xM@4U@PADU~hkAVNxn)v^f> z&GgepKsIoKtFn)MOal+ugBK4aII@8XMoIa>CL?HE(|WDl(vaeT6e0FRj^=?NYc73Jn9SwVJ$N!XOv00000NkvXX Hu0mjf8r$tC diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_info.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_info.png deleted file mode 100644 index 4258bd466f4fb9b02b8814edeff4086f9633252f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1227 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 xz6;UWb({gU0vp5LG6 zJyG;TN-efJ>AD{ZXxE*zwNOl>dy0{J8VkW}GOkz|w<&*6Cm3;2cLD995zv`0rosR? zTJXLe1p_MbQ%@QL^#z0K!I)&epwtrVnWgubW4VX2CoFkMKs&&W1q4~+j5aNxMVm9$ zEDY!fm`wXUvM`{vu4P2bHES1Wk1W+<2n=blw8VR4k%LZK7w(!sQ@C5_w1XCv2DHQ< zxRRPdh?V*dIR#oJCG7+IBqgjk~Kb-N30=(4vY?yU!t>Y^x$)IoebiJoHJd+`is zsL+p(Gct6@?Ap*jT^3@{Q*$9+@xFJx8aDsG8P%$nh@vP`<~TU6EQ+E?LcQ7{@4FL>e*`Q39e%aTt z=~rHwafZz}kE(Mk*6mcC>FRTUqR3*c{to89JCt(gEUR)Kn21lQ?_}4eIYHswd*gRK z=Y=er8t3Bv9xvu9f_Z_WNWzH_RSY_$Jnkve{6-HuC&l) zO1sK=fUI&U3^f$*1cM(<9k zdoz_bRcT3c5y`7#+vI31gQ;Q6ntZKn$`-hJM6GGtVnyh+P87I))oe84u%&j z&#Q(lcOh6b7Y5qwzDXUK>F2SiDjg=>pH5Es?@`Sxh3j#!EozF4qj`MQ|BpbU#eKKV z3VI8SW_R2P=jfG^C1@+ddHu(1(1{QSqee>5M#E@rQI6Wuuhi1-`CO~I!Fdl#26^DT f4Nv~OD}nqA^%BR=PwaV)00000NkvXXu0mjfM*q~f diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_jobtitle.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_jobtitle.png deleted file mode 100644 index 363c1eece17cb8ce06ce7ed6fe0db33bd3105167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 660 zcmV;F0&D$=P)Y5Y34ZK@=-1wXm|#Ld2;5z)mc*un{4pg_6$B&e~SQ zK2?5$7NQnnWoMHZW9vr~h4T&Mjv<-L=CZPx#2pwinVq?PGjI2Dxy@v}_zw6E*mNMU zN#?m>7!Kq6By^Pf4fZ?6KY}0#4RP*&LXMUL*S;V z>Gy6osi>CQHiGjAK2J(e;-@E!1?<6cGahZb8qW?F9_+J#)}L+U+Q?T|pzclxCOia$_toi5V8+)U2`DIL_ED6%-Hl zqu~qE&YE8Iro9 z$@ec9dSxA_*RLuBf9|OH%M47F*|9181;4}SW+S423$4QDZ!F_v#|9NM$L73ec5F(g z4|M)=3(dw+`iw_FT9HlwTlNrw9uT|_r6UWCLdEPz#SqvQhN23v)adOB9a#`#;*0Sp u*3l>J8Cqt=q+%T5@YDDX_zv__2Yvx)`D{NIz+1!s0000*1H9LMn+kQDNz2qmwOZIpQ!BILfhA?urY4otI3gSy zNe}vm(V2fGQ)I0;i4Mo{=kR;=;CFSqfA_h6$2pvb=X*an_viQhUhnI^{(P_Rb)u-* znyqo>a{Y|)j&d7pRbj2UCMwmnDIwjBwcJ6crR|taUNf*MAlH~-xBBgY1<1+8f1mcg?&pT-p*(Kpgk_cl(4U^RDuA||qcZmT&HatX4DxH-z^87}(a&JN zK2fBtrD2YSDKW``_`6(z#1`r99Z z=IIa?_fKGH!fSN!85-WlI2@E08iwg?O9+^ubbHNrZ3p}TVB@k~~BOC?0U3)gnBLTBm+gQ8UAK;ag@2zT)b5BAW6XHLtA9HCK zwr#FVsJF}ExZCRZ{|MeF(B2J8|E~H#PlWzVbfI?f^D@|~TSCh}v%uF%5?X)%fG@Nt zhG}Je096+}wV>AFlwR#vhX0YUv8xRz1{#=1DNSLMwaNxf)wEWjOE&0Bu+qqaXM)4X zc|E0%G}36lgAY>r9a>> z%xW+@rM9;*|E1ZWe1oYy?LJWBip-d0g=r|(^9RYA;-G3BQ|gGIcgT$S9DG)!0~_iC zU6N8q2EAQoOj$l*)zKG&&BZ}SbxNrZ1pTtinEU~_ppL%c%xP6O=rm5~ol=K~IqIAl zvm$HKwX_zLXM-w{Gc2VJ4k@*FMnsFy;9DuZldWJ@HfS>#mr{F$Wq)&K%sMbWrC#R{ za-PZtEeVHKS;4c~@%(tF^fG0Zs|v}cQ2!QG>7NaHwuy6HdG?lwbakXjK~EMx_!b10 z?=4CUM82Z?+u}Mym!I-O1-~p;4feXaIOuLC!IT2^aj;WK9sm5Xy{JIz7eF)XJIY&x zlu~7I!MZyEhNryS*_&RcN^A(<->v@gq;Hs~U3w;t`2513lbJJ)yCdN_FAV;Kv)6Uw z;$rwry*35xD_liB1{<}HF*8E!$}`1UaZnrcgZp~d$0dIa7@P3x84BlV;k~t)A#P6t zFEHBsDunFFU$C^cCe*5N4mUmIz+T}@T^M2x7}W4Gzf-6mIAXT$acbqw_}s1ef8Mk) z-j4A5zT`4$2&yC=K=zyNMk~YHGf`xKUEnXJ9t%q)U*R_XKC6}S{*9ZcR1peER)^bD z&K}znnP9%F&h-}C$HK6M^9>ibO&&hqd--7V!(}AfYW-kTk@VSU*tMRsP=(6GS5^7N kDpL(~LGwR+nypdxA8k%sqr0b}4*&oF07*qoM6N<$f+HL+U;qFB diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_location.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_location.png deleted file mode 100644 index 30bc09c180e288e70336d559640a974f051df2af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1368 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_nearby.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_nearby.png deleted file mode 100644 index 4bbb58edf8bfbad68a5c557b68ca3800505e6387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1515 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91G@t_j1ONa40RR91Gynhq0A0WB0{{R8RY^oaRA>e5nqP=jMI6Un*U~Lb zO{mNQDKQPiwk#5|%pS@psD~u$ElMOrkTl7cih9hp!YrznAPcgHpdO5fEQKvMO$GHq zbJvQ{G|_Z5|81Y|_0Hk9bMD+b=blr0kp02O`S+XO{C;!h%$d3CkRgLII0J(-kY@&3 z@^p^r+t=4O3cX9Ky2o2uTK6Z6N;hdI|m0u~$hw)XESDlrGrFa^(oWM)_&dBl0eLdBI4Qh|CQ;IT9 zjsh$5Lyn=OCuQa8knVuh@*UDcnhM9@oC*_{S72M(@Y!t78 zLqp+3I0enhIy&b59_7A1;DnaU`|!9oReDMrU^^TIT^mlpaJU8LfPXmsg}QsVVsw)Z zj1bUD?~$CL`~gg<=Mn9f!3sDCR(4TntJn8GYh&P|nHI*k5foOn5>z3Il5vUfIPFVD6;i2*M* zgMMi8nX_yJTj{jJbiBsoqqBJe@&_#9USn;f?ou&P4U16<=$!ECJ6IKJ7`k1^^dHUNh+c({{Isk8VmLvqS#N4)bj?-cl&9l3$yF>54Gi4a^o=i zQOI!4`YrUg?^Cq7=q1Ml>Qr$DJPHp(@J32oUeQwA&zN1LYvEItuYJFow~tYM_?CkG zVS{2r$-CtI0oGG-f76lBSyzE)!9SW%m57cxTVORTf>*&wmVjhqIjn_!&OjjDN`1C( z6dfi*XTYGA!aFb*v@<0_`AKk+1VqJCpp*EQPMN&j6xO+VrL;|e1@Hx&1Ygck@djLC z`_;^&Gy{%+FW*q{5Ck_8+Cl++?2NfVDF*{`I!e(S2g_hD`0_0k?hgUB+xa|=Q{j-; zYa8Xe(%R`7^a>Bije_lqUe2v|4J-LKs4$by|f=g@F(PsNO)kbNjr*H%1-S!Fn zWfa=oBQ$j}S^a*{j5O14hBwgReq{o9P_t*``F;wK1^T~cY{X=>i|Sk$E$FwwCSzQm znabTv=d+4Xp{KP0W}dI9{QC_5cCh?XOULM>ve>$jN?ph83P|Zuq3cE`_M@)~*d9xt zH82;PEXBr3S4dKnr-1)u{))QF3zsMkPzFC9fZxH2PBh_(qftkiqqYZmo!QnvreAc5 zh?_BWrhEi`0$;kQXng8NX&UtSy{qNzq%XjCto$-e%n@RUVH|tryZ$}B^=o>N-Cc$lRJLoiEe}JKwi0(ztF^29* zDG3JTG#PLL`4#XO_&?n`H9tK>#UG$Qg7sEYz4)3Kp#!BR>{@7p7}<~y^fVPN2e9}i=*dM%!zWbB3Ipg@O${=uN;~NlkVkY{=mwntzK8F45<5vV zNmBvU8i62n*}ERJ#ZQFMprz%|JJAbTh7O$>^%n=d7d-?}s)H~-4NBoN@Gof0Zae&002ovPDHLkV1npB!w3KX diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_nearby_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_nearby_ny.png deleted file mode 100644 index a9a30c82c0ddc3c51b030724754d1175948b2f06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1590 zcmV-62Fdw}P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91G@t_j1ONa40RR91Gynhq0A0WB0{{R8ph-kQRA>e5np=ofWfaF}Ce5+C zK~~t*WKm&GW=2LKO7gf(GImX!{g zUDO#WiZV&lsk}|U|6zZ}b=KK?w&$F^&yhF_{;c(_wZ661xA*=od!N(N(xm1UXkLNl z6{zPG7#bRy1%3kk;MRKP&O8?bm<;{~f%YLx%sf#&0#f+tV0##e;ol*jT8|ns%R#|y zpxX?>i*KW7%`9Qwfhcx~8^QauKXkf9dDoFie2TsW95%)8K-S}T2KW&KI)rdzCQ0)O zLV@RlU7=#Q7KAH8KIEz3Ul8bbgmZ)anBo*R8hjNhjriTZNc8tPpY^mydB29YDe5Ix z=<`WM;rFuheJ;tjA$p3N?+P6Ds^c4XH|I8_c%PKww0TxMFX%HK`1y9Jk6-sTMXdss zcGLJif;Q2vP!#e6@NHz1&mLfDMewbbw^iHG^c!hpiKl=IBXqa6w)ROWLf!&<2L$`c z(i>_wa$`g;@Abewa^Z?^MHua?Le~y92Peb-LB87iH>6D=U0|;%?jZ72NyT8B0uC7e zLF8lS&`L3no8lxcO&UzlB`mnpWmm zPXz^NKhdfcNOP&Us-@L}uU0)Bj{<4sJ29_%OH@L|56ev6R#wNm1r{R^rlLEa7=72k#aV_ntzq6??Pz+1+Xgmb; z_8Ui=P^Lc-IO!3yq;uLc;2d26xRP%Mfwa<{7khOoP!gjP*i~~w=#Kspumboyw-en( z!LN*CoDVDw(747r(w=A?kmp%@Ei$q0b+Joc$+2l*I+0k~M&q=yyeLP4pN*&FPVb0r zy77^yx6e$7SXv+~mA&v`)XMmxbwVyK|HbDX#EhL6Q}f7C9_jiopS`k`ou5peSJEcDBguZl@s zRFOyfGdn|k#vu=I3~ zq78g%oFqO7iVH`>Mqm>8sJ%sa4>l4~IG>#8Dqg{p8q{8mLMK zVvhnhf#pCyip9}eC{OSy66XibdjHT@oCiQz$0(3imd_%53Eu(wS)umAkBZ21CXSsz zCl0M#IvrdNN+&srh_=BOk>mBCusm@ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_newfilter.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_newfilter.png deleted file mode 100644 index 2e1efdb755359a1aa203cbcdf29c2c83f4e81c12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)+eNTqV&xWXVm*yDu(7bRF6Nm9d8|k)aO`3oQE<_!pp6&_3i&IJw5~FrjsA zFAr@4=a!tUZqai3K5pAOtMi0x=P)8C6B>b|hMlp?Q0B#oFG~l&Z-f5&Vx<@7F+R8V zsM!Kvbg1rvmKcFWod?-7y`Qu{QQyGFDKqxXg5m(=s|<{eFaReuWR@JXc0fJQw3P+3&>M!x)^Fu788j`q6;1hEYpbSOa(9Z6x%$ummcbM%{a{n_ zd1|_NzUNWUWf24Yefrrqu*Jrz>rk7^P>=-jlooD6pW8!Ch}#&WOvngLO$O?mA^pkl zS`)n7!@yUr1-b$~gSOl)iKZYR2nYg#fFMvF0$*yf_&D6mdgA~9002ovPDHLkV1ip0 B^5g&j diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_newphone.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_newphone.png deleted file mode 100644 index a74f6ffa5a17563bcf13040932831ba370676d25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)uo|z0g|cF&l#LLL5mCz6_yeRYY>17ml?7!sn1!9>wes9bDMe9~ zVubO?<6|+$lyS$*IdkTCekX0K5__^0^0I zRDpK@G)tZ7TL61t9cx_JZhKJ72rYI?0G-i*DYWza#Yxi+EayzT+U^Q(>IV*qU)M)2 z&QF%6AGijgF?c%;S@uz^VMtLZ2f_D?Y$wrG}VxPOUwNOMTL-TvMwQ;3?(L;c*DYwHx6OQ z!=%WQ%EFME^mU^yeOZ*SB#Ar1V^+Q_{8xnk8t@HoJS?DD%BK(j0000{1Xd#vs z+5~%x*jS|0QZ$vAGEEx6!X}7_C?-V;B~gQ(zXyBC8FqKx?9657@ICl$cjvt~^L=k_ zcjopQ4Ku5NRlq7>6|f3e1*`&A0jq$!07VikmN4pe%sLJKCWLPa`%RI^<`=TS96#T)AlH*UDcGD zz<~nR@^n30;45uTP2hnNwi6}3LRV@62Md`t8mE}WGbR39S84)Bb6Ku8UR^)!u`_1p zAaL0d0o#0}r8I-*6~tw^IH8DJ3rR`f{IXs(G!0n@(hn9r$;Akt zR1u631lx1qPYl+|K4yvA9)r8O4+gxaBo`X?kq(MpM5*~!3S{61q3j*`^Z1WeA{Q$O z0yn`A2hl3-*Cg$Y#WScMh>U=@RaE5Ue5dU`=v<0|_(e&EkSy-k!3R*qR!Nd2NY>DF z4T2(c3`_x+*cD=4fE%E{TdLGMnJNSzE>FN?K<+2mlgghf@^eS?P{sPT-4kfgSy<`9Y002ovPDHLkV1nx{SSkPj diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_notifications.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_notifications.png deleted file mode 100644 index e02d27c939ca7fcaacc4f9141157c32003c2f472..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmV-Z0<8UsP)RYiXhNmuKKkUftNCOKJ+l?> zROAo3;H$rp$RBiBY6tWnU(9LEe(r#tD#<-^MXzaVcE*Njz3Ov^)JU4MU(89W&INPB zmmS@vOc*zAV%Kba)_PdxzU8R1MK83g+kR4~-Ajwn(8^BzUif`)9E3Ln6-+Xv=$MFafanQ-Vy^qxJjvU{TJ$DzzQ-@zM&F?YeY z;G46d%K+9j#ja@f3v`7r1;)UnqS!UXCc&tJ_)wJ@kPI4yB$!bdzogzgHgyI;oi;Ha zu={C}#=6=dsMb2tuEj5D1*>X;pz~J2_4p-iU?pr!oMc<#f5L{rtg;}e%q$pI94EcRP;}53 z2tLpZM3qAa9{&|>Cr>F2hDuFsy=2BifD(gIVp_Kjw*p&-Zt19p!3@7jzg$ND{?JNJ zp_Toil%*WDRHn(yX*>3p8I5~ZSz~^nu|3m0nja{!2fCTBdxlrLn2}g}T2@rKK0l&= h=Y7ggF5!+OegnqjH&DRiAP4{e002ovPDHLkV1n2d7vBH? diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_passcode.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_passcode.png deleted file mode 100644 index 1926ce32815a96fe1dd2e8d1b286040817cf7ced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1082 zcmV-A1jYM_P)^{Xc8(wg2mXc2UuF z`@fm?`WR}8DiaLSL+e6<-D;Li4!WeyWwom9vD_r3g#hbgy`$3GUJKojPq5aWay|i~ zUR@ICx5nlRu9FS%Y3uCpq{+s((>T*C^<#YOyjl5x>t=g=!VSuki$oh!>X=RxL&IP|~8~1c{63mH2y$W_mq9%Y^qca6u2o7iy z_w-kfMx!E8kA@}g9rxU&5p^bI3OFxJ)%5LMoC7l=QA@yAO5&c%km22#0!|M^RT`<$ z7)kHbC3wml2Jb}Pn-++EaHfDG)S@A}7iNbl{n|sun&X#HrIF?HO8BUrnF4lq5WJ9} zXSSs|hwCB{#l8eiTAkBA zGBrtxYz>F$=FH*lbu9FX{%JH$S7kb-_$P;UwkmVDdz=kR_EJl`oASUrXY|NCyQ^@^ zTKrB~C^F_{pWU*Sa=y`i3-7#^VZU!aI|Gb}R%}F%ua2wMEltdnV|JE0sm6XU8l#hT z+PYCMRW|w~azsk=lAYqv6|So8^N#r0asNcT7c9=(-dW+=cE#3Ip_TpKJskYUJnmgT zB;<9*ZmXjmKM$4ZJ#a2Y(YhI~%3Sl!cAvqiVln4)7g}+B7W|RjxlVyJh%*rkW>!4X4}I>IsAeX1s0 zB^2iiuvPeX;E3rey`HA&T+G|uQc+P+k+#;RK-Bm<(s-uj|H5uf0^A7|`dQ#@n=Mja zh#SIU^Xzp=trJ!i1R@P+FQZIUp4aQg>sCnn7iaptWlCk)h5!Hn07*qoM6N<$f|*Mh AF#rGn diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_pinnedlist.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_pinnedlist.png deleted file mode 100644 index 96149c0f6e162ee71decd1430d93ee2db389dbc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_mUKs7M+SzC{oH>NSwWJi5uRzj zz6@GGHU|S^dnN-5ki`hZQb5eWz_fq~E@H8O8Nmig>dp7cWME+4?CIhdlEM0R#>wmu zM}cF;dW?achT{5CUlsCJaKwp-7pMqc>HgoOE~uiVWnsBE1E;la`H188u8nW)E+ zojGQ+V;%RHZD8SPvhH+QG=1AX)}-Kro*$%Lo(i?iEImEpiS)s%8mm42EB;-!OWE_1 zS<&GeyAQH2Sh~++($3x(sozXDHE)T1kjR)>FiAAlDCG`EyLLkR1Wr}w-JRY~ry4%E z-c!fD#?0)N+y=q@fvMaff1d8HV$td8n|j0larvAZhgE;ETTe`Q7OkcOo(#{+ znOj+p-s4$hU3uc6w)oYGr(61LUCUk6e;G;LoVnCt-S49bRt27IjdSK+?hE-WY&iMG zyQZlRZ#doxUbt@dns-MQK9>m;vUI-CXT+5Lp>)#a!j8Rt|Cm!}ukYV{F-0aR)gKd0#2-@;&;e?H)VZfo=ijkUzFnHg*XvF8o2oP(t9i;u@2tL|K6PqL z%sHJJ3zhU)U7kV*-2C?K-&(7$+BhXqd|T?|lzTY>w$n@%r+=Pdpx*c-=!LuQ{BP_x z&K)g?zBxzhbGc!KqvZ+zWo6ImL$^5`Ef+l%7w{rddhWAV)BmX{t29oVR6fZw{pt~u zU7sV2z6Jd}w(!}WlNS5mg#4CBeHF5FR$E;!kJrxF>8mUEZkrqYI5hNYu|d9~BB$cU z*^jkU@)NR?*IX!^dfis}eD9--@}&N+9ah&i&Q`q4a*sjx+~cmvcjiTX(dYZEv~|;@ zr4wFXzNvNBYtl#FQ|?#1>VJhyH|xB4VsEd?eD_Ho@1A;Yz3c0;b$Q=h7fqhh8)N@1 za>0YQrz*q^F2$#;?37nCR=1qYYv(tq=dSsi4E@=b|6RPDTu;t)`M7nWPm(;7o7%sn zw^SsyCHHe0P1^r8ugUb(bHQI?a-8$0>ITU6Pk7C9>c6SmJSo?xYZCAIqh!x5+kHPJ zBIbY0Bw3Dq#oIJ)wZ)gHr>;ApFhk~J?_>Mv3Kfm~&u5?Enc7qQe2V{qQ+|uyu_Rrc>X2p*y o?>gKjf2@sX!~z@t?`EoJ6l}97ofUHGAt)Pry85}Sb4q9e02E;4K>z>% diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_policy.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_policy.png deleted file mode 100644 index cbd0d2157c346f6bb15192faa0c7db7d925fdd70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1518 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_read.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_read.png deleted file mode 100644 index 8c41578af6e2dd69f5f7e2edf235ebfb713d13ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmV-i0i*tjP)sVNQnc95KBr+=HROJ>&uU6TP1)Xn zZO~E^4fI5jnikmU4Jd>9P=8nl<=)L0L_+~05ch6YKxHUEKaT(ifB*=900@8p=z5%i zi^Kp^=FKInSxc_LaYBG~Hy+$2tlRG4wvh-R?{%Qd?#grmfHf}zn7^r-Nw5J{J%e}q z@-`FImb``ESL{5KvEr#S(QcaApba>+>=At0OE-M90af>%=?{#J0`SqXKTJP9U4Gk! uBjf1<3SIk?(FDLrMX`#4i4cc_{-7`Zzr>#I%el`00000nMIM1pQ^}1+BXQpVHyz~ai^I20r!!K+xfYV>fgLaezrZ9>pLC?#J9kMD)FwCv zRYkU&b5D#Q*1%!aEFyN|TANE^INk++B0*_7^}#mS0C&Ju2bI;PKIz1!r8swImK4sq zU>}6?m4+>Fy=*YjbvCjMMLxP^xhm<&0XPag|D?VLu2dq$NVbkcTvp_(xuhTu?~F$F zUe!cGJ8^;VZtaJ9wbXH>XU58VDz|GPHzeW&;1Us*!y=nf{g6HcR`yC6IwcIP{f|UjEjCuB zfBC{@zW_81l2$YHAKQo$6VmEur`~aj{TW@zdNvr!TW6FC8nCIHkf`M|h#~je?@~cL zk4*n>$_J)CtD=0$w-+0eZyR4z5*qNye=@e5QNj5f7|&ap`~I0hf0q^#WWA`X*IF-(hT% z>`vQpwgRkdoc5-bAbAe#$F1l6OyNlp8#>zMTG4`)CRlfX-6C(NF=Vyjx(_~pm<(u~ zxN^~_ExQ-RRC)?#qQFq|-Ag~yS)l^aW$+A~cv5qHIf)XTzR?>_(kpC-MCWE+G%}^n z3-ZX}Sp^54*j-=6Z0OUugPkcmF}+f45KaAYn&$|9JsX+@+ArOT>C&F`aT?>uv_Ux4 z_8~)-SiyI_+XwlF)NatIj*>Qbi8*A{a=cp2#33##^3~i?ut_SsQwl<- zGkRx~e)&q*+1QgEn*ND=G@DE?s(PkkADnut_rb;Zof0IqI6u6C#1`Y1q)kd?rdbcn z^`~*QeMOi_q)uYuzSzI@BYCw=?Fh6Z(2l@-N8m5f-2WQ|iOR_U0000MR`zVTx0uEa7Flb`+d=+d&w%tL-fp&B2Dh8@Hh$3YS8ENCsCBF#E(tcqeD+GK)r zU8@vfda&#A>KP%X%gC_9sCI2J0cCY9;>^?bZmyL+B8EX`#i3opu#Op~{?mL5oy=%E zc@D1#H2*TJ2)$SZ-w9QW=?2*?Qc^>d7y+DEOum5Z3=!s(X;k?`NXE~{BawGFQEaNx QYXATM07*qoM6N<$g3t)pfB*mh diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_search.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_search.png deleted file mode 100644 index 8811925010f64b1774ee4cf4abb4d35ea8decce0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmV-~0(-KJoVP(M0O^es*d#&l8Il{hzG1$!xDnPn zp)g~oRT{B?J8Utjv?J=W#;n5UR>xJj&D$O-V1R*&{g+wRk~tDyrEl*%!6gC^;9^j7h$X zT5OTbL^Y$5W0pn@-jN)MYSy}fv+j=?9F)8t)hsh7*&5lbbY8M4a@a4KG8mccl+0>J z4$mr#L>Bj&m5jS7a#(Ik@{{4Hq-noo-nz(Tt;>?{+!Gb-R`@XLuuI{n;kYKZ`bc5g z-H}hjCrUF$48~P>!i2&Jk3>E#U4J)es|PHNKWSR!Y2$uZn6*Cgxmic)q>D;t9rKla z4w&$RzZ|wE@@eTR^|U={%C()e-C*R?&{66ciimKh&Au?_vV|^~^oIMQ4lP}!Y3*3R zGV6>Qv)3N)dCm&Ws7FIbsb?tqOG{U2T08p7T{=oVL(y->l%}<#|9r2|GZg;?uQ-jP e+OcR+9e)7!5h0Fek(EgR0000GYW{GJ3@3i~=^M12$-}}#-qM}0NJ5)O7kwHQH z(4#|L+DNfx-z<(&2Y${IvuoGxs4jM`5J!TYf~D~ ziEy~j8vp32awqJ2XmwI%ixKc{sR>f-R!AL73blc$<<^&Vo`F8=lQ3%xfNNQD>dk>Y zNuV0zn6NwR&AbGslR!s6ztXH(?VvjebOF3rA?sxDFC~F4gXfVpz^5e8rASZ<`1nsi zXTj4IvYLY>6SrP(w@+7auMT8w9bm|Qb;@&N8ay^E_n7ipt5s2%<7Om@E^DJO)keb$ zCXMIV=E5saMS+5PJf_74WjVIJ-hwYtpdj^p?CLm**(j;OL%JsRmiPcs5`)+o8|u#u zsxCmOLyDDU+mI@~07*qoM6N<$f(IK30RR91 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_secret_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_secret_14.png deleted file mode 100644 index b34681da682ce3172dd369542104ed902bf20c48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1736 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 P00000NkvXXu0mjfzPOt8 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_secret_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_secret_ny.png deleted file mode 100644 index 59ee33b0267da386a3779492e03eb90d00944b7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 730 zcmV<00ww*4P)PY$w3OJgf8 zBD5gHf(Y*FBCRAQLL#3I_wt&nx%YBOHuHN+^1JW7&)vP>_ucP=s7F1_K|9lIa>fD6 zgy<-#=^(^12b{6VH0_mOy4fO6A+qcce4+`mLsn_>Y|-r%)5tFWM}`$zm7E#T*!YT-atzLoYNG%utcS0$|%4Xc2%Uokh7W4jt=pNLSI(PLcpDdIPpEd0Q_Otk)KnbIY)k&-vIoi*=vEnk;Qw>n8RHeS?WcO zVT@~;4OL>TY^Q`lQ;(F{9st8sr*eNxO`Hdt2#Yw_hn5^q@jjMevmzJ*w(@Toe&=RThI>yhMuv zwP-z5HYi-Fj|kU6bx<9|z1Fa1kZss|6R1u9IxhnxU*oiyJ}K=6<%?T`qJQz>=d0bA z7(X!$Etjd?GPhbaZ6bBeW6j!PQ#SIQ)3fL}qZ zyb7_)X}K^aHWK_9yAs2Dq&*i@-CoI<;A(PBP4XS5tq1EtbK-MN9m>Ptyu{H&TU%XS zy+5%}eZyk9furWCKan*nc$b5J4FC2lev!WRx_?J9=$U5VWkzqK@@s6xxy^K3ZS;;) zxuV^Hop=@Y2=FnmQj<3;$Qw<-ZuE*>54$VqotLL@KS^uAi@@z(f1$q*W`QLjv^B>p zXaljnti&-LECoL&olUfBz~sV{_X9{W7W@uk7C##cB&+C(**5<;#1z366_Gjuu zX?OX?MC*#2lNr=sb$(P}fJAH$Fc1s|=Yq2Wv?v#`bwE3w zlTTs;H@gVhZJ>KpU_yeg2Yn`34{SAnS(2UnT?qOW$tx}~Pn9y1{|wK}0dIJjThi{x z4DdRM7zQ?ZInvC7bjnE|E~uFk9j3MwGS;XZ28 z$U1q}5AbWbUp&H9o*gvFegPdTf!$8`Vb24)EzSU{uBU@W;6&B_)5J&pQt*1hzsv>G z`tvnis0651+XbBbfRej4!+F~UB<)+Y{VTJdu<+{{yC2x9J(EtWl5EBFcn1n-9l1BdKzGuPFqO2?o<(CiAd|(e(#jQ=_SNI|79MU%d zUyk4yRY5*6*djwz-B;^#LN+}8Qfp1@&J>>R8eg{H7#iZI`Uucf@e9*i{Qx*$04EK8 zf0j+qG#8k(dYi2f{5r?1yoXV!W^7GJpbo@iCfl8@oryx9EAvIuCJ-&~^;}q)Qt@(^IQzIx+QUYVQGI^s%J=dT{o&aaX6k~t5?#P- z*me&t41 z(FXE?7b{Z-rxvR(MDu_u4*zUZK|3rfzwLwjHE@zzU6f*AO?1qpjXsUxtF#X-%1c>c z?!g*sC!D9l-(WI4pUH>V2iOO&&}SoJ^-C=P_L;(LBdQNo(5gz07WkupJ?Qhl01@ym zaH88ISd?bXf*5TS+Wl4oJ-oU|swh+@Edpb*;?w$wvtMZStlL9990qAT&=qvj5N39) zm&x4bCX}>`qh~_^G}bzEA=LxA0lw6nC9 z9O&1B%|I`J_kgZ0_GDV}D6ei)-LBnSE_B_dR_3_A=$7cmZ3c8b3roQo&o6T;xG6fh zMHgz4jAQ0P;kY9;=KEts+F z%q`i=)NGB}ErIc%VeLWR1neuc#;XI@04Mr&NAnAXUhf^J<69Qg3xsw(`%Cz`HiC&A zKikL=nVc$&RsO6~Y#r27BU4Ay+U=IJBQnt`*xI#5gYLEueHYjaR&ks8pRsUv%K!Tc Z{0k~>YrrfNb#nj!002ovPDHLkV1k?%UC{sl diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_14.png deleted file mode 100644 index 05653b1ec3998c58cfc213e70ba9c7a2cbdd896c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1603 zcmV-J2E6%+P)qj-+#Dg_L(#H+%{uBy@vBaJSW`WDVx!?fU4YuTRxkIGQFLdN0 zunG)dqCp+t zpx4q}%yggIusn^~U|WaY14f4$ge?cUft4L0{#h-jMbm7n(0j8s z0PdTf?`gkJ!K>&uii*#n>`E{d$Zrs62)+|I(NMh9Wiq7QaMX#mh`We-bf@(AO#lV( zBiPF@f0Fd{g$mlivmi8j9mD2iU9~mh_`Gu_Jq}Kpyi@-~c?n!qZTvDm0hWP(KvsFU zEI@_~ftO?r4o{=#lOVVt&|_2~asX>EybQ)y5W)q=!=|9+SkO{w7(>xB;BDF$`?|z- z2#3eOL%_;5GPi(rxB=9=1>s_)kKg2JU!~Vc{XcoV%WK2-t zU6No0{0#MC3H`A#6^CD&KV>q(5yx=KR4UQ)yc679W{A&p zQoIA7EL=arI8#uzB=RSxJ%*@7XG?U8O>w*mcM=xe)r$?|Ao^yo3uw}v3Df~?$t9Y! z-@~_)dcG}|r2N3uDq*&vY3_;_$Ql-{EQ@DWmg2P0I-+Y!Q8AQLHWBDOva*v*a5-aZ zgLk`iL|Wx9fbeZa|2C|dO<3Y^)_Axb|?bifGDz6Wwko$ug`0lP(xWPr3Ku`USr zJ9d=zk+vl{VP9>0R7vXL2b}TX7vuL%N*y|U*=G1spGxv6+92sJZ5P{!Dqad=7pjzN zyX|B{Y9$c?2My~^_Q&~QJRd9u-#cQIYC6zjHC-UK0zZJ_d=uwQ`2iUtc_NMzR|fxH z=R~TB+@BZqXg+5+PTh}^kBeCmz>wlz(i6sB4>hh1KW;5slA##%JoL!jhi&*hay0sE z4hp|gpOg9z3Pc`R!!{kN=fwIx@ftp{KH}~_sdk6Slh)9yr_pE<_zhT5jCEiI&_3oZ zU`Ir$@O7Z5MQIkUAMRgMpu?1s_^a)~l4a;L(-ftvH1KCw^SOL; zNbdr3fli3r2d~f3*TXB@$52*{D4r9Y*2W8s=yLawR5N#LJhO47v?*~5Ue+?md7zUX zC&T-YM7^UYH63G>U70hKp>3L0vL9nb9h!ktH3yBO;lBXZgUhS!3qE7P)8I7_oF=f< zcF-7g>Tv@2@)-pS!33bWpbgvu?1n2mCj@$m|4QIQr$P^aJWw6uz+BJ^e0ebtva%RY z1zY1s$dF%N87;Yln0I7|>r*rj`6G0(B0KMtYGz0+fNl!Z!0@nG@+c|6N2bK6R5Bd{ zM{Y++wM$(>`)b?Da3$Kou=(JXWrJ0`ICM&Pvja>4y4{+D^+|FCaJy99&B-ad`QwEyD;*j+e~od^37yhx-Vd_M0K^5(zbR81s1wdrpdo)R z%RFpXd-dp$Cd_$2pIG#@!R?1M)DNFO0Mgio%Kz!5SEQRHMSlPQ002ovPDHLkV1kQD B_ZR>G diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_filled.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_filled.png deleted file mode 100755 index 7ec1b5bb0bcc393f352466a9b70b5524cf957815..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)7s~4YEg?;ZK}o4F!LcI zVW>qxn+Stylf#UJ-NuDZG`|)zi#g}K?-|i|6Zkwj=<^CKbj-;+0rpgd|BuS*A?93yPwED=%fj32M0Tmr$aP(SIH z9g8&EVJ~)QwxBp1oS3J(MNrrJXaEv=tF!{wTy4Ap0 zo>OL8`#}zqj9g&_liPBIc}%Xz6~-|+BUc#2q)+bfhOmMT{U`nbXLDic4RKgR00000 LNkvXXu0mjfqeb&p diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_hw.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_settings_hw.png deleted file mode 100644 index b8f13f341f82a24d01d379ba299d93290251b754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2193 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 Z;6BOS?&@7oKk)zn002ovPDHLkV1fp?RF(h$ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_wallet.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_wallet.png deleted file mode 100644 index 6ccb0336502ac98ffcfdbe8ef4990105d092a761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_text.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_text.png new file mode 100644 index 0000000000000000000000000000000000000000..0c70608ca73868d6ad5cd05c919ba22c41969022 GIT binary patch literal 582 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?o+u-Tq7?Q#I zcG^aL7e|3(@8^1Rv@TF|%m`7Dn%d{K_+s%~ztY}GVMpW(Ro6P1sATymX_e1)TPS!` z^~mSwo4#>s?ZbwPo_tRak{4x#}t>fc;i#e!$XWb8nD6!?EZGroB7wT60x8m@d(XbpFhGfuZ~4-zDd7 za($GP@PAXUR`ZyxkW;IuSJAAep1sepyW-H?&eBOYzE&Mx->f}RSY(%XbC+fmtMaxT z$9Cn_?u^+`$l-S&NW|55rhwG!WtBM|BK%!H)LTBVpL4twd2jEY`40E~?R>r0jxnvK zug^N+UfH~jtE0zprdQP~)g zCnEd2)`9!bN%uQdHVbr%td;cCQl@=Bz-v(dU}o>1)DKKOTMtG&d$dW#X%}17zb;*F p|ECMNRxqt<&{_ba{sgk_W1Mqa!)`H;#C}j5db;|#taD0e0syz-;sgKy literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_addbio.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_addbio.png index fd37e12e3817bbb612df9690f79ff246d4253a00..39ae15d863d3ef542967c9ea3003e599ed3b430f 100644 GIT binary patch delta 1285 zcmV+g1^W7|3ib++fq&phL_t(&1?`$!h*eb>$7jYd6)}4oFCciShYS^bNGePv6%#d4 zgz&{{^lC2(_RvEhB;F7NMHBG~At-`LFGYb?g5v##I-<@DI%$D|583JW*S*g9&T{Q@ z_C9-`IU;`WpZ%?GeYbUAd!K1)dQFY(f#y8I7Yc>Z_<0))0e^#|r+jyUt_bIwo0~7e zH=ani6-)*j!A+2qZlJgs%mA%D-V%cL0!zRhkd?0EU=irmBMl+YEN~vg(SKCj2WP;K z;3zl^I>A#AM^~wsU$;i!yf4@r6TJiZR-h@-H!cb4`hl5X3%CVBv<+dbk2v2ICn`_mkI1Xq(KH@Hq_p0W7sss4W(Tn)Cj&*(Z6fnHy*Lego_Tmd;Xm%cvz|G4dDe zzGRl!w1}%Ibr4wEoyseg+A1w+B1Aegyz<*Ei^@3#-bx7HrK?}CFc^Hh4 zOi0W&@DMn<0@J6eHA>oDEG?~S6i~o{PHLSG+5{E{RH}-w`x03Cs-h8^y4%?6f%f^- zTO~Fl!N0(f_~8|U2P(1AdidQr;dwcrRuZA0ipXA~TVI!4?jh?k@_(_0f5z&y&Ne{ruvzH`9DEcx8PD_M zj1DhiKPd8{_wF+CN1&suwzk3t#w>p8GfGw1)26=L@XuI{faZOkq)u^^`Y?2c=J^f$ zQ=mM*1!bfL*j~5OsZ6m^1=hhMVy}#guimor{-tREn}BYnI@v4dgu-XQk-jWsx;{Hc z?tdBAbJgV7>&u4dZxGuEjlebIOjn30rrbz&S`>UB&-ddJX#pQq;Nw`FA%D7WQuj3oUAyh~(i7<1_5A33*i@9M$ASM+ zKeVV&2Zngxfh=_0O`#@wO2_polc#Qyhw$Fd$ns`0Ut@|>$Yn;td*BzkGS34v?sHSl zjU|>|H&=tu6k1>c9f!ATOI43SX$naq!l^zj`rj(|Bdg~~JP#iIC6>NmTe9n+On*06 zz;ZCKpIPMWB&h3}aLEuSTLa_>Cu4!%2z{+v25Q}6U5*u>_|M*es1X_oe>x#5Tm*B# z3u~xiW>jLMk5)SEe**F|!M8z{PXnSxXie+^A?ie^pN2jKv1^37{$L_l3-sfjr89m5 zqPX^VwYedkR5BvY1m|qz0N;&F-+uLvfg|8oa1GdGD3;OYP$FpPM?%pUe6OJ_e zi@|M>mD+Kz0UWo00000NkvXXu0mjf3ru>7 delta 1211 zcmV;s1VsDx3ako{fq#}sL_t(&1?`#Ji%(G$$LBZ0Nj4}ZP#Lc%p*Drf@FKw5c$ z;Z86c)RuiD1g!=u!7I>Nc?rR4(4#B^A<$fK2l(U{9iPB0a2lKhH^F=G6ZqsQ9m~3G z5Rmr*`#sS=(B2F*xZb`b=o5#Qjh2s=QIaS|A0J0hJA`%MN5ZD`A zZ~D@ch|wxwWwqf=twPWUbQ21VsU3|Wek*{LO{Tk8#ZuokuZ@Rppv;d-d`5yFhDZ9y z;)tbN@VjVu^hB)odeJ$}7)xE?HSVATzgaOJRcChK;_bq3MvTkPgW+~#tZ$dlH|zj> zfig`(u*F+x&n1k zr;0oVFv;*)-85%XH6c#UJH?eII+5G%T%(A_OTpqr_MX6?g}sEAYew z(SIkzbW^XSIx7mUPmzhfM5CBJ^;L5#?I)ti8`N4rYrGRh#SB$ zlkE`n`KI3eRc1Vw4UI+$m)#h>4jnx_Ru=ns+Lj8|jTr4UhHJP#_LzDq6`t7`Hb=&5 z;W*`U#I`?u8$o@7jZOM8{cmD6E!20kwSPgT4MbTt^~Bo>IwQ~AJ)rmWFGjPWZA4X7 z`jR{bd+8Ga<5X_7Z3(%+BzypUxvNtiVQ@=LJvWtD`7I%r6{KZ9T6D2(Ngh`0{b0?K zbv(;wtrgM(yrh^xOfXTdkH&c(AO?SEFn z1|ULMbWiNJY)01^W}072eXyGZwt&aLioSsR+2o_R_P^Sqcz@>@R>v zz$Qbro#=;P($g^2=X9ol5J)e(mB5~uQ4JEEcdiG0laio4-G(N~xl|kE`gWQMnt+bK z(~ACo=_ke_P<+Z(DsV!7(WOhUDKyzcGCHpr19ZZn-IGuYzJf2{A-JWIm*P*#|MJhw Zz;6!YE~RlCTCM;9002ovPDHLkV1hBkO-uj) diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_addbot.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_addbot.png index 5f9afb4262ce00f3838a936460709881888eff89..6fdb01c03edea14c3b44ad24337cf1b631bf603a 100644 GIT binary patch delta 1295 zcmV+q1@QXT526Z?B!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z000DxNklvdf0xw`RaoQ=4F>y!G7>&4TzrU#JK6SgQtg6Ot7k!eSKKI@;-nuh|LX(<3P*V>S zYtoKTE|p5MxejdbA*nAuW{bsQNfrMU5p*}W3Z8;_5Jzg0%n;~qXc7dl3|t29Kwf%_ z;viUB*JN;b27kgCEIlETtko+$5$_s)ofdq@~i5KJlXWeAsKDfR7gN&^m_Cw#1^K zP09`(O|nd59{JVamXFnLph;zPG$-uD)=)~n*&(bQ*3v+d!>BftZyN){Q8Gz&=w2}T zVh5AtLw{`u+v9=O`OHftI^!UqyCDZD3Mgucwfn?Olv>r8MrkL4n~m`GMw}phpVv(s zTZyg9ls&d80cwvMAsr7MnR30^hdBIcoc0^uWB-=GBt7xVRjOCn_pS3)K(=$ex=;cd zchv3*r1{mstkE=K0*G+f=-o)Q=~wlu*cN*AU|%(mQ^R+V7Pp@m4<%GKj^BYYzq-RVnrsa7O!m+O z4kbXNKItnHu`b|^reh|6mxlM)Py&AAeIs;;&(~_ob!GA0hQou#sg2F6j!NL3QP9)J z5mT-=E8i=O)2akaTZJWay_f~0BW>bRR)5i~aOl`cthc00gud>`FF-))j?=!EG2?AF z{CQJO%i3dzmddQ8OO!qP*qD-Sk@8ZYYg|CO-nA!dgQ1;dG$w|JL(T|H$!uDmmJiR*XzJhDKvV7p)q9V~$UIAIRnhLmj}rPRO?2ZGT#_ zS^B%QYyvm<+8(y#7NgsNp7|{4-6qqVNJ>Grfcq9CpWBl3Qnz8K54cHaV(aN6^Aa04 zMpsMaMPMf^MbB4nAh#&L7}b|>hm)LXpU_iz>Kz-|HgFQyb)KR}8aAnWK2z^uxP#u% zrgR{pSM++I38y=(u7Nt53-X~Ov43t-I+*EvrAvw3VJUhv#ou$B$>#j>zxg2%EwOf= zpjZ=WozJ&a=1mcY+U)cXx~O4Abt;nXC6H~C${Tc?9szWLA@Bs~U#W4VHpyH8Rj+Ju z_LJ%}&4DCCwvFI)Yton(MBaRGFCz<0&A-haXlM`o0oM*YQ~fn2r2qf`00>D%PDHLk FV1h{yC&BhfHr9GWUp!+^h3DTcvdxhNhMz#?f{ zQXA|80A}wa;gM)0F9eb(n+PBx^(90w zcx0Z64JRN$>1sGEogXeqPn58vg!St{A1#DAki)15)XHTF4W#uYyzvWRccYm^0N+5+ zL|?+6q9S>rAX}-1K?afODWT9ApcjisVbbU<)*6sXrg)Rc-Xsdmlfs1PWQa-y=N18r zrk2J*0#4vuEbQe=NI+2)L?Wf8rV>+WM5Q{OL}9U5Br=smrFvorPfeNv6=^*cnicaN zIIu>dMpP)GRDed0BC#?V^(A0R|4c!y;_==(R%qr5g_Vq?6{$!RBAFzY8}oXD)}R9T zFB$(6tqD(4!6X5!Q6{S;SU=)c%#*R&{e2)K5K{wjl#*mQtU!Y~z68udlp<1y!=ZYS z85}l)?(apRa9IHy3WFOENM~}`943=WpXUZEG^j`+f#}-q8@iW|3L`3@^Gj zl}q*JGX2R$;S91jlfkC3XcWR6NBU0A|Cd9;f|HERe5bkdCTwDi*SDjJJ>CvGtiUE* zjg4|T+xANUz-(Ixwl*2AWCtgyfmt&sw(A0^39t8^TU1%%50#5Wd^5K!A&-TKa$C#zpAOr zylU`FICJAa-2%H>n&q$EXJ0x#wRnw?goG z$S>;yJbG*COb2+$yoDtuDR7?WzU+!^2s2B0wB{J+XyNENT!t{C%WwT=v;8h3ErGm6 zB~#9crMo}xH4%3JN#dK;fj?)`_rlAcSyx?8AJ?yI%L!=2%VG;#8e(K&3##i=v*Mon ziMn#&s7t68cRzqp{5^W<6s=sQoBl2Jc3^(9AZpF^X2Op{V`(KqRPuY%sGr+(iJ=rX zz3Xh~AFD64oN}}py53&&%yg>1R@Km1(I8x8GmT$VGfDyPwgdO7Lg21_XYyro*23L_ zdRHeAe39I}uf6&6ruXh?N6fXYr#1+e=3UpFJnHaiS!+`>3jOinVone+bHtOc_jj+DA@M#}}By~>UGC~YJvZ==Hc}UM4pWFPB*`G`7 z2e*q;(Eaai!$TKrcPzGG8FKZnm-V&+UB6yYnf`5ASoMP zqb|B-SAGVF4$27N4u`cqiOoF}KjQ9TrqFeTKPyj7s;hC)RUh8{HGVqbeY#uDd6U{! z%jH9*(ZV|b<&|sSFAK>oI;3kx=C;NDNZZ{_|LnMVd&-?_4nf!SaW{bN>L}I>t}i#A{z79$Xi@$f?TqQ00-B{1@)RT)VUR zTj@3TIyYWBjGr*E$(Eb_APD3SCo=a6XMzpBPiouTlaX7+ksC>+$NKQlKL45ii&tMQ z$P|02OZp9!(#vj+y$3$jJ0ty;{UP-$BWil@JET<>aJR9?(9I*i^dT*9$>3PB-ZJ!b zZ$EqB`3nDUY(I<0AK$hy_(5i;vq_6cMF(yb3SJb1G)-V}WyRWqRC4g9hWDHkixj Jd>as}`!8lID`)@! diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_addfolder.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_addfolder.png index a1ac957f8effb5a64a4cc1172fbe7d83bd6199ac..cb557d87f367f5798c921ad8c15c75d752f9d688 100644 GIT binary patch delta 971 zcmV;+12p`c2jK^hB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z0009^Nklck zc63xyRiLWCe_erETK0`bV>P<{U^D1SVb?%swpOdXOrh&f1>$vZ1$+T6av!5!e+-*= zCh#`!+=X?-=6@OEa+4sSRK5uECYN%PAgU}IEsq!sfwfI8+TSVkdO@@Rg(s1C6BAf& z*iT?X!00jUAUEV;^r7%~sl*;7BlzHv~JO%M;fq_ZPVIfho<2{wXU9CJ!m) zZ&t+;C*acqW)-go*6=8G0m*nCT(l~x3G}vrQ4m^wN+ov}-`9YVkGUNh2Y3|nlB~#6 z;N_`{-+$8*AduxPeU%}Rv)zgP`oPCN+8KiQNJ2k{5}#pCc|cZ{oK#+mJcSEQ0)Hn} zfF&ogHX|VmqOT5xCgC*!Nz8W=-V^YhL@5dQOd>G>e(VO*U=jG1JCdNQKrVI@%QiX; z#z0Y9Dz2<@7!sYzy?Uk6$WSvL9-~0Uu52d#OdGmoXorVB5=fEw{pGMzB2jA(I z5Pyotfsx-X!F0T8E)(>M84lpkVvqtA9{oCLL$aPYOeHM{rBb6UjMsxIc zvC}m_vm%KJNwv*n2|mLr8G9E+xq&Z(UqqlCL=JXC3xB!2{FK}|sb0I`n?{9y$E00UD=L_t(&1?`y6Yt%p#$9LQ950Q$Z zf>bYp3jXLpMCd_iJ*ZT%ieMGIdKU!6n+H93@!*ew{uzq)qCG130|XTnv5HU?t3o{~ z)OG#5k}Pktne1#b6RYIGm%Pb*=e_TnB$H%HrNW9CC}!ZFo_~R|t@>K6whZo8u-sxy z4bD68v|KLFS@8W)5Z(hWfuEpVlQCDoB7X`KB9nM6cmlH83j*{fq;lUy!U}ktRk<2} z55LR3QbRhK zvl!w7uvrbbh=2bG!CWL}+U6|=)>pNPK~=O$xs0ieOMjE3y9saxYy=%`1nY*oQt|iU zUjQf6xki^{2P4yCDztH+rxseafmce?Z~S3nIy(0%vVUCqc4o{NH%kW^`oUMF>xMBN zq(1O6AYV5URR`Pwa1`{a(@tGtp9i6RNem9F3#?8g1)cCjeE5()#9wMNu3Zjs$3Wd= zyz$nMk1$}nUduWkJ}2ApD2KZ;0&$GV|IV(QsM>@eb<*PAd_yKtyYES_Fap z6(F-g0)MYXcrU#9+?c; z#gJ!8+Z!5dvWg~#_xFG|@lw3k0toI^yw?H{-+u{i18q)j8-3dm+|MmU;6qwDzH{-W zD_~sv5g~s-dw~3twz5x(Agj$VtJ}0Xm#-U$54S=lY_cwW$ZXqqYgMocM1f__nbfpV=A4ja09G#qRDI&aV=8y zLTJi=#V)gI)dNx9u;+m9pB++I*=JaG;#D2;5j6y4SNI#q+hp?IgK@A*>ni+W28tQ@ b4`$#GaJlw}?VReY00000NkvXXu0mjffBK)s diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_addphoto.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_addphoto.png index 2afc570aaad189f876d6cefd783756b4a4baefb2..8233b876d2d304d4f856bf39b023f9a849220410 100644 GIT binary patch delta 1317 zcmV+=1={+l3b+c8B!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z000D{Nklgbp!sj5;y-4l&-ZoD<@b*FynF6_&o?9Z zgYUb)-}(K&=iGbGy{}SvN@IHls?DSy9UXlh|5w2?IdQI_KU1w%Z{^svM@`|K;3z0U z4>8^WrnRTaKz|krSPE`}vUCQ=7XslQ?=XqG!L72D8^1yLms(NnBi8_dUncOoKu0^> z6OrErQ-Gs`Fg>j8OKu?RNX*w5-viz-`s?rmMi#4UeR5#^x^g1Wbs|fpKi`2iR_p4r~nZn*?wM?D2@&mMwEK+3J@}u& zRWmjMKL~o6-m_-BFiXDWIIRY=Jm)#cT5cU?d_DR4ja<(XOlRc=aP$|40LJ2hl)$D`~pD%5}y_&&&@KClMNN`D}}ANUmBnAz%Md7>9?AZg+Yzp@CqC$_F= zyRr==O>D+rUl8(0Hk+c0!VvofKwt8L%d-{_gHki#iosu>8TSJFUX56z>-t>N#-33CVGRCy#4U4V(pTtE*x^($5n`Oqu=GKa9Ms$TYUP zS>*`5HECrg0$3^Z{)W!E@Hy(TJc;t4) z8PPkd{>bP8`g$z66{IEfH76?FN|S3oW1oSU841>yF}=-QF|t@Kq0has@gdS!^hKO5 zq480A@hYA+Q2d;=)?-}G02jLUXZDl)gVwg)hG<;K`+?{Ji2ADChO&yKpdRpfU`jEs bC(QakCQv`RnxkNf00000NkvXXu0mjf`u<#k delta 1302 zcmV+x1?l>@3aJW^B!2{FK}|sb0I`n?{9y$E00iJkL_t(&1?`yMi&a$=$LH4Ql%oxr znLh^yGlU9*GHvutM6^V~NqjTv4-k5gf-vf#sUCU=UwjY*i4Y{vLKH^u7iv`0pn^s} z6n}-2I@4&TqfVdi?e4?6``&YB?{n{r_hA-%?_O)~^=qHK&VN38--d=!dbm#@S55fA z!NEtce-6w7%_+X_(tinb=W@A$6rGXnCh>9LLvRU%(lr!60~1CzTQ3?3%mKfGtn?d( zZJyha5eYmST+W)gu{#exwH8^IyaPC%j^hsSB6t#59rdZ+9sLZm8JwWLdt9e&@i!j% z74QjIV8(ujKYwlH2k=+HcVHL(`pnqSEP);c?|^;~LOW4<)2^j#l~g zP~Uky4896}wSbMqrQ}Hkq6rz)wjFt1szHZ}5;OKMZlV396EtW8@;X5vk~9q~2~8X#@y7 zp(jvV2^Irw!-GJ_hr?hWK5x;+(4U^Nw&L~sm zvP?kRrK7DR_=gkHT69h^w!@6CFnm>P)C5>sm5M#b$9(jxZd+AZ8{?=6VAo=7#rAq~ zCGmzCY~o=AAH}gty@tk4K&Me%JRJGQ5Z7O>wHKj&%Ie>8N`<~=Z)~U@fJ5tsq=tSb z4xH()kKv|;NkABaeOYC|&yx=ePk*KppPKbW8>Gg3^7IRSeK|JVKuJyVM6~3qfXYgT zt`Z&kVo3YAN=4s;l{~1VB#EWl-Mhdqp)vHW2adX6R5F$%e{4JIhG$~IFL6>rb(4K$ zBBK+Cd|)+Kuh$jORnp#x@6>$e!|jk4`3rCdbb+SfjyLK*>l647r)(C9gb(lJumAu6 M07*qoM6N<$f{|uq8~^|S diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_admin_add.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_admin_add.png new file mode 100644 index 0000000000000000000000000000000000000000..e8f19fc0565131c053ac0f9947865b45985cd802 GIT binary patch literal 1784 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 Z_y;0apBq=x7XknP002ovPDHLkV1kmdrb7S# diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_archive.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_archive.png index 96e0a5a7d8d74aee2a33aec68121097d98fc7646..b6acc74b15563046700b128aba0960375b10ef58 100644 GIT binary patch delta 997 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 eD>qTtDE$MdINEWZ+|$wk00003;VbL literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_arrow_back.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_arrow_back.png index 8b9659369d35de45bfdb8b155f0e43d99e72e0b7..9eaff4e23ad624741ee4d826bea42bfeea5e629c 100644 GIT binary patch delta 531 zcmV+u0_^?P1BnHYfq(N!L_t(&1?`sGO2a@9h8x8jZENchMDIk!V=Id9;XC+Big-Xo z@eLFOsiIi5sCc*%MG(ZZm)>dp1`=4((w4A|UD$!2ok^O>_fI!zBM}>R0(Js+0(Js+ z0(Jt06UgWDy=co-PvIwO_z2K_=m~i-TP@r=-Hjpcr{^B(Qh$0sD0%Iszz?8jZ|v^6 z!CGIt)Gis2gXqPD_Lg-LBjASsef6l_b9Mk@MY2SuGj-WTB#tMZI@S}jf ztK{U%rog8F{qVsrQajqeX59^eOruX9{DLX)9#9gVrmAtRJX%IHNFgK#K zB&DJf1GhBTE!Ct7=VS|I(59B&Y@;YTL~5KZij3&Uw(2?qZ{0tdoA`WoYXCgs8P2goQBtpH#8Ozcz3e_+d>MWxzEdzt}Tq$~brnY$sqRU?*TFV9W&m0DAa? VO`>TjKMVi>002ovPDHLkV1m1u|C|5- delta 350 zcmV-k0iphh1=a(Qfqy_rL_t(&1?`rx3c@fDhFgoH;4?TVh_m1%xQV#jvJ;=VXhPDA3wgkjSF!Q7m zhu>6{GO!ggg%#!kdlP{RtYajoAs)v56K;&6Q(U84>Eak7g6%SQ=!$)>baANy972k; ztq)JaMo22olUI-;ZR=B~lh|VzbN%H1L~Vy?*{-5Daoi#G?8u(P*c*W^LS92`@Ts2R wN0`g2*QK;<4urR5JF*)IkN^pgz`qfA0%O+ajVdjkTL1t607*qoM6N<$f<308tN;K2 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_arrow_forward.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_arrow_forward.png new file mode 100644 index 0000000000000000000000000000000000000000..5b068f7d790966b4d513f50ebce1a5243943ac5b GIT binary patch literal 660 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?o`{(K67?Q#I zc80HZOQ6W{=aL&Yq$EE58++2}6rbQslSxyidI(LL>z}CXIq6O6!E!-%#*?@vGXcdl{2k1*HHr)m%2Fk!xf(nJY|*DH?BQ@p`y z)fM!*SG>8Y(AT74d(fAYw#V#J(zr?+dNX)ee30ekb~W4B5F32uR*-McjGIof3E^AW zLVh&5wJObyIIvD5D|e-uQrflv_8Y2S7Mp(bv{4hed4#FV&|5grIC_OMGxs#LeIJg2 z6`xDbOgeN%?A3(>GF^+meDyWZ1S=K0IctW|=C^(6+l^!OW*!XuUvtXHpG)X!z*6?5 zn~!uZw>@wDX}98E-)k`suF7BE_;tgMw4P5_O+HR~J*!~d;U|&da+XIuG?!iC69bLIzszOsJZd*vluA0$FIeq9tKDqgVi_w>O1VV}Ep^dEPBYb5T>xtMv$ zdhZ^qnO8iu7;Lw!pDY}|@R!1Y_mL0Qf0Sxs*q`0F|6n!`)1N-pe`4!BP4+Y~7u{y6 zZ@(_XQt?-u>*{ISEMBHR%NAX|##|UJ@W9-pK-6y0H-!V`(GTW-u;SvJf4+R-{(Ipo z_kNsNF=0J>`Ye6pluN2FRDNp4Y$!ja@^vB89wyPxlfNkz9M5Bd!2gv@`=e&H$UK+Q Qy#q=Sp00i_>zopr02W3O1ONa4 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_arrowright.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_arrowright.png index ba06e5829253c0ebb34949e669e01925bc10aeb2..8bd5a038216c70f3c704da26fa3538471d28345c 100644 GIT binary patch delta 370 zcmZ3%)XO|UrJk`k$lZxy-8q?;3=9k|sS%!OzP=1vKsE;hV|yk83y{SK#8N=az`(qK zk%1XVGlIkxFu`RF7BC~&AceQhb9jK%cTX3`kPOzhGrakl3!T81F)Y3ik z`X_H#{a+=v-iJfYVV2z)^OH+hy`H}}SIvEC#ls}fz`&xwz{oL0UBGF_srR4u?U^-| zYtfIur8m9nqHen0d?sWwqbNQ9>TSuEBj1XY->=>2IA`fSm+EAJoA!JU)rD`aJkP2k zTpZ$c=l6FX8E=QXBA?yW%Wb)buXQ+?D0ur;y?GL=C`w}uGqJ#ToT)6`SEN1 zH-Y&zM*43AK5;v$=Cl2L;vrt9@u_UdoO#D?S>EyfqwxJ&UxoLiDYxwx8umR{x#^#4 tmep>RUrPH=@?TDmab|!zyU~lYhEevpm!ozJXFMn{JYD@<);T3K0RRU>hHn4> delta 269 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 delta 1160 zcmV;31b6#`3i%0;fq!F3L_t(&1?`zhXca*ahK))DmxF?W8W&U|3g)EXS;2z=1wj;- zAcAKR4~mKgTtILE!HX+yc+!)eL_<^r!Gns3IYc73fXl@-(P;es@S4BGx0B^t%Fx8C>*pZ;q!3FReq>)W7IgIN(hc5c(fbLvo$uxxsQcHyW zU@I6Ei1rm-D|iLofw$l()8`S#UV&pAjgLTFRyye{#`cL-=GG?gL~sxI@(sml&wi7}!;omsS9RK$@H&A};JJyf zH{EP&Q?!k-7AYrs+vN7Z77c6$iMbfqh4PvijyG{qd0-t+#jUG5LLNtflUu2xVXfN6 ziEdrl@A+Z@;hg~VQdl3eV@$8tL*OQu5wlC^F|>u*>BL}89bz$?scM@Pyn3rNgHFS*=7v(fZXDZ@V65v0 zj~HA5PHqH^GAbck0@@s@IbKRjh0jdz8mRc&67^%S1vohwHB2!8iOP_Rj?6o@(^pxY zO0eB-{1fH&NRL6Ef=*P+mn8(#x^WwX-eBG6*MCv>f5|{@D}cm;>em?d1oS~tuAIOz zl)U)%lKjJr#6OLF;zP(k0b^HDb5X>*1^wa3STS|#6R^|9-i>19p|SRW@)Np^T>U?R zu~Mq<#vpOg6CI4~3B;y=;fgl*G16s5bp@M9{*BRPY3g};UvRi;9sP&co#+p-nf zB!8-HlZABG0$uSd=-LXynGZT~__W~F(S8vnz^Ez=Q7gHY5_#tvsm*W|GBREY5w)7p)k9ws;{D1o$i_<^b z*ecusH~+P{R$DsbfCY}K={tZGZEz(@+JI{=D&mZ;m>pN4Hm&R-9~%0DpQt z*m^sK0xPA_F|h8hSlm2Nb5vdfAT3Oe3t>YNNM`$4%SsG z-zYCZRd!_ho7Iuww+85LrYjGeqj$7l``%EtE{QbYu>xpELaV032ik-4k8TnhlK=h+ a`~_Vb1^D6geX#%l002ovPDHLkU;%TGf$7fg(D_3f9p(Jfv%IDf}<5Iby6)6{z zr3kt3QOd>U_F1p0 zv`@zotnh`Ve}6aN8;q=tstlNZY%G2s;H=X)v~g24W}eP`foH_%^&DCMQ|(yR1Q=KVwD%lozrS#uYPBRk2j5!RIxt9o8*wj2 ziRW*jnbzoEBp<}nfuZC@Dq!Rz)1SbQhyUqgtW4lEMSpu66mF3AaMU9D-+`!hvFhnd z%f7G2=`!$K{ip%P!~~QqNq?rf9W`;MH&(Wg%ctZvnLx=Ui`gJqftU+gvb$sjN-kN< z2FVJp zGoD4GI)4F@)N{bGtc->`yJ*@NFPdLbg%IaOMFgH86jEfoh4E8HX8>N?$kA4q%jgyS z!x{So2zY?NU%)qbZHJr~$Tl;64mkP=qbrnHFE*?>{f<*oL4C^0r0JO@6thZ;zTX1Ob1gDClx zKowWz^N~)Pf`s8r@YHi~E3XlXl}=zNc^3eGx~9~3z^DCAr&x>ObnwwQsLB?S|E%O) zVt>f>7vU(-_K}Xx{*nlr8^BS)39NQnK|6AK_z^w5AM{uHI=0VvjbLR_dF-wMM_Ci_ z&**N?sVY|s!p`B0(LKSfLWk++u#Eo}at5LabX(`h#!Y2SfB?GNzvnb*wcKBUP7F~W z(E9?B{lS?yEQmy`6tuS+LmgHi#HZc@9RZd$ zT9;v4L&?oUNw>qxt#ZI`VWlpivy{G8%k67j33h^h5C>`7sPc1-Gra{`Onm+I7^2V# zxIvPvgI@q@16d!&U1q!$KJq=Lvn#XxgmNOs#6dc3^o7-nk9NCl;&7h$NGcFi;4kPioz6YDS-=1Q002ovPDHLk FV1htN6*B+; delta 1080 zcmV-81jqZa391Q@fqxW9L_t(&1?`zjYziM13p5d>n?2U_F>=4SEf~A(cwCV^a@*%Ia%}Zvr1I zT`}x11}_48z!=ZbPuh9JfA7h;4T((y9UzEKY80K?^M;+y7WgpIrbQi|tPMTAclMbdifBKO3j5U<&9%t|xAD zm_Y6p%98&_@?MgAz2qh8@ah2)in0<8HKN3fN~M5f%zw*AZ*KZ%_lKRQtV0}jP}Fv8 z)eiQ3C4PerabU=jC_vd!#CMuoftdz$l*$$gNH4!SDIotG#cPqQK)myt-+QtG`R6EJ zi)00&nqS_;i*#<*<<# zK*06jEs=iG9t9)ZsOXlVy9i8Q8h$IN0Uf~5a+tdy+>Hm0Ye9yL7r!=R^pB~P4eWNH z-?TQ}Kp1U&z%K$_wgJ4(K|jIkw(qIaugNfU-hbHUv{($f0LC_$2tKXukS2lI;DghD z$W4U)3E-Y%XT(?vxMaM0t?n}4JGwW>?;M?;KE8xq1-RzeON^xeJ5D#kMlcz)*&Pnw zf@}_OP!YqiX?DiNT7dTIN|O!zSa8!xK;i{p4zMxzZL!lOvaT)-Wfc(WW#Q{NSNRRq zI)8rKJ}_PIdb6%Ut^;cI)Vq#e*O#FPTP6My z5b<=-ZU3JK48(xdK;Nf=NN-WCj=o(P(tlo${5uvtbpQ^SAYQBgpEBh87{hQC7R_LK z#_}JdS+8Wfe8oly>%f{7>4nz{W^F^{!IJ#y;Lf!i=&V%{zuV}13s5Hs%E1ya3y73p zD}z7vOZ>s6k!GKfV{Y}&UJdcvB8x)-TH>8RTPRM_H@Pam!~<8r&p1ej^BMGQ0x|PJ y))$nZF(LGN+UUUE2bb+_6Jl&)lFUHZ8Tbo4`#LlA$e diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_mute.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_mute.png new file mode 100644 index 0000000000000000000000000000000000000000..55a0d13d570d50f82e4516b7bec47bdead824046 GIT binary patch literal 1403 zcmV->1%&#EP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGe5nOmq9RTRh1mlqVp z8;ban;EfW>hf)!v^cadSnm!ym5LRCB=tHDpaLPBa5G% zpyDO76qNFUm$KB)-~TY{xEN=?Gkaz}MR39YthLvy^kB|6&s#Gd>>Q$?BUMAlg90ew_dzW6Q79j-(fNr&7(vFe$A&5(BT6_`zGfBx* zUXK4Sa0Yu!QcNel7ZZ*r`4YlPa53rQ?&rIVJ+3oaVg`X_;9GD9#6`aSUA#e57ur=XkBgP(Oc2-S}&WJyI*BQT%H9t5G za$Oc)bSV@%_2f5uLhK{K6AMY8z#^d2Z6bSd2uD1Y{7;Q6()GKPRGcDj1AppOcUgR5 zS;yq|0Ov#!$&XocbH`Dr3FtoX@=;zwNLn0`&gzi7T&a1G&IQvf0DC6TisWUr9S_kE z=qc`(*M%YZnPMsMIrtaMumtRBKu=XK>+E=lhM>)n2GoAQ0nv&Ef@@u0q#bVf~9K@aqu9*+r0={HIA^aCze&(0GkOEy? zfvU3`XhJK;>)^8Uzk|JnCe&~ix$A;_E$4pN3~AuuZ0DhgpBYXDmz?`e>}@pB-T6v2 zOKU*0qKRKnuYn61N1_MQ4w~p;jxu$r4QOICaUAt3_+8^j^ai_|CVH8pEM0m7nix%- zMyUyDlSYjFG+~Q@`3vc~G@u#L#5t6jIHqwV6Vcz%M1OM>)pct?6Qc>;3zLBE4U@4L z2WeuEIg03z27(?;HYu9Ws-)FPtCWepbR4D$|ITyI4wkMd)D>v|YO*1;2#I~b4@MB_ zljvu~g&qQqMgH$Y`D?~Qx-=p-wX|kJ%0ZHQfdfVo>9gqJNzk>1_fNU)AZ=Dwy z=e`Na?Fse*FXtIN7d0^udt=IP5ax!cKllxpXd|NsRUv_+JJ7?;i!RajJuy1u-b|kh zL|^*~*ts_?@hWiXzShkC#2of08+KSs66j^sAFiQ_xXkx4_OjmV=CEz2FBB(Yb< z3hPpC$~18cB4H@d+We^G5`{Yck%ApxK(u_%wfT9ScnK+hgnpU=+Y>(2WM*%Z+0a@x-8Ccj`?NCEho ziQf$DyE%>2nE zS1k&318cw)U?N+e(R2OZIoCwWNMgeJkA2$xP)3QT9FP4MxDQR5(ZGgqnTY@Z002ov JPDHLkV1klMdx8J} literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_unmute.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_unmute.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f117711e46ff9cdd83d6e3c055eed255dfb8dc GIT binary patch literal 1225 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 Yzhra_ZTAFRQvd(}07*qoM6N<$g6X*d<^TWy diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_block.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_block.png index dfd3d7d9f9f7ffa6e35d35c7b7744d42ce596820..848bdaf89b5863e62b3fec4562d249d4b898a903 100644 GIT binary patch delta 1114 zcmV-g1f~1#2<`}wBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NF*hxe|RA>e5naxfVK@^13@pgVA5ddqKO`Mw?y6fkjd#a{>n~{;B4SV4K?txa_ z&F}Sk;yep3ucnG$@Pf%tmQytZv`0I^8#69pHq}ncyGsoT# zf?fx2QdN8Wx_{(NA4@|B^cWm?L}+-dgL%*alVCK5-j$~^)$t88aV|F22*}&uC2;LC z8MEMYXmHg9b3neXy&$6<$`w>kgy5YMX`l2GI2lCZsU+W=LtNJ0lBll{khwjtp1a}E zl#~V6P4E?1TT3EyonX|MxAuX=MYrA{Y4~n~AK*K%Hh>DrodSESSlk&xe^b)W`N3pN@>IUaQun5YmZt)+TK#zij zR#k*lpZi=}sq%>_gIL4H_Pk=P#&A^Dg@3FK^tsQP#;Lv@*aKT7k6S2Tung>&Cz;&{ z>-)5*z>umDYhrgyORPTB2H%^ht4&JlyxZ$!^;SW>;%(1Ct~p^RHp$GiYijG)`9+7Y zDWLPbpm*h|Om*xIOENQY)-&d1hg-~a#s07*qoM6N<$f|fR9LA8I2DX zCW;joYA`0om7?;{#8+IoLKN_^!3ahZ5(54QmI@-lHg+T3D2)rF3D8PWO26d9xp6!> z_t$gp?_xso`z9y7{oQkBzB703oH=vppo0!BZFHsBOR8eje1G6pU=6SmSPBdPi=ugx zzyvT3d=DG|egw|tD(dP=(oGwXF?uAel{75roT?+NIV5SFq~08z*~k#~proM|lmodl zk|u4OnZw9~k{+&OK-CcH16~I@Wg)YpUo??i$_*154k@?ktA>0~0D z-fh=_`y~D41ddgV^_=mjq|*uVGTjf3H)Qg zipcxxFS6%9PLvZ*MNi?jDh9mf7Kik9O+)0@COrS4^SmEdNjmQ4y;;S8eQx2N2Fb^s z|Hz8MvVS$7xw&7bxXvrF!PhB6*_M}M5ZDDQbThUC&(Bd#A9UACv$eUrJR|9zHa#D* z*;M5DopX4;7^{s#!09Rm6bNPTK%3;xX2yJKTqo(zVqqNvrmT>wOFot7vkosd`u#5b ze;P1Y;`y$Mau$0h)D58}4aEG8%$SeIK;00k`+pJ-M#W#iwi=$#eu>M{=!E_4wqsxp zLaO`}=yh{<051ifWP9(wxWzaG{946;pWOB83`I{^p6_?RZ3AAY(l$xJ>mE-{C^O)Q zyS^Q`b`J8NM4k_u)P^=ZA8<8rX9=g)khEOVc^Ajemc;0~M9jb6M$G&1OeA+j6$6M4 zGk>Gjm59m5*(RjQ`3;Z{<@66u?%}HCG**21r?AB-crxMntqpk|>vj~Fwd|J7zYww@ z>b{+_BjqDLHyb`^$n%&Ef588??vXN#d!rq7B2mw8ZHPG5Fc@>P!&AP$xL?PBFy2ra zGqy=J<@p<;_b%WqKc}t%J<-9Uz<~xmzkkZk-5$H+!mq9YSPXs@DL5hNl?GaiFH8D8 zlD#)oM7Co9Ms!!=NrV*pT*abqz#0X|67qH@Qg*2Ub=vD&fXzTpbZ^|X*GGY$fs=Oc zN^7q#2kx@=`c2XL8P{GvnT0JKJuNgFF8kn{lJ)oP8PC5 gsDlnVxI_S40KvTj_LZr>kN^Mx07*qoM6N<$g168tc>n+a diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_block2.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_block2.png index c4408f21bec65fc15fb163f88e62929fbefe6da4..80c7299a498863aa2b7d133aed405fd557d38979 100644 GIT binary patch delta 1393 zcmV-%1&;cP3WN)gB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z000E;Nkl57(E4%h%)wa^lA!0bYp_wUYU2Kv+0W*XwUx&;D3v-Lv<%zw-^=hr8g< zT6^s^?z7K6=X_tG&_n(e=;-Kp9lQ@-_FHws84CUa{0lT)Wbi?)%Pm$Dkb;`o z1a1ML!@3B@ZK4d&PHkUPnWUe93!dcDbuw%&Cw7O7zJE>m%l112T(fTKW9<_o_bO*Z zWuQ({%7>SBTqcrfX6Jg7}}<84d^5x+1Ehq7SjH9(L#AU=PGu{h-eGVFbS%<-4$^6fNjj_ zZ8!P~6gWJ5cGj`~a2 z_L!B_*4{SoRmt+HFcT(kt#fJOf|)B+au3+VE|yQP_qN#juBdIm#npTwgM&07S0zQE z27C!q0T|pjiv5hG_&r9ipSXG|tAS$}tOqBR;cLh%)Hp2C?b|?8=`oLTrJ5LQBQe)M zLw~m|@wu+&(9Ke@MEn_a`osHxHsI)-_7yqr75FU)bPawpkxR^T!~K#NIPUEA7L=QI zj`N4h!*iE2gukNXut>}AxV96nuRsyqbnt38N_rOi2_SWK7|#Sk55aqBkAfVl?#hYH z?{?lh#(1iDC>r54u401t?fzr8OskqAw)_Bm zMdkV*x%xjv2-2#8%CR=As!Bc1#NDp)h`7XKTA7+aaw9*MhzYH&EJAr};x2H(6E5%l zv9Iz`3HGZ5@;Dz`-Yd?6SZ@LS1Ap%g#`4}@J0hSw588pFvj{`0%|Hw}GS9i7313ic z+)RIhuQQ2GGS2;6!1qHSXS}9unaOLRBuhVVSZ70)KRMQb(szO{7d9^fxst2FDPZYG z6#abuA$|1CLW1WAB;ULCqeH%$$LEaBcmeN% zX2jr>iVQxbf`vpvM378gN(>S~Pz-$$?}bF*gGy2KVnsa+;fuWt5rqn)2tJtDi;|j( zXyilXePVEQ#@{#Wb@=af);hEIIdhovFbn>({_9)cb*+6_XMc7>!$=!hf%;j2{{H?s zpaWb3_rNLeUj1Y!nUL6Aum-#XTEIH+7=+pnVmiE(>{`H2UY31~pLjBV_~GzoPINMw z0xtWRd1Kp!&%t(ZOXg10Ljk)bA)~#(R$tpUE>VO#Wa0*V8dwCTI-P3!#+(k8ihdXT zxdazQ-XwgK@P8Kgzu+wRk0MTj1u|a|9bL|f0Ikfg2J^vR;3eSNAB94}60%F{CS6-H z(VXDD~P;TxYDTqL}?QJA<(Wyd3f*= zBKh}masb4Vw-{PLp9zwttF8t7&-_L(2YjFCTBnz#h<~%uU;&tJ74s+Xli;? zG8elCu5zh-3$CL3i|9`go}0!BSSX%06ZCb)t>CiAwEz(}#0t<|(t_&rNU%*l&wX^ud<50Nwi7%2ZqciM~RXU0{i1I~#tOxz9vaq5nUVOcT}D zGmCnm9);CDsq6W^acr~SF$m?OpU;6y&5e+fBj zJAbaMCdPwAu$F$Zo21u6;D9)_-J)1)8Y^H6$)C62thz1kK1t*X{5KiLscf0i)Fl+R z%07e7RxgGPQ`a}+O`gvB%n>}pAuqrZA;v+8^D}&`OAtN|{4Mhr;d-ues^MM?jn{t&2_moo( z&QbkSS%K6GD`+r8LSjA-x+QkWW77{6+krcxsLx>$*MuI#>-fa8J!d;p)BD`{26c&j+;smhr;j(>3c z@0WN+cSKaPiE;2E&>Q)yY?k@8i1W4=>m1|UXS9;YI5`5e>GfHnUx@(cZ-GY=#CE%_ z5?>`YII{0u`be`Kv8|5%`YQ1e6X2r&HUs;R|5Y7hW&5`(2>i_lHcWrH-+gED|MxPlMW9+Iss98+)rWHPGxITMxl4-mvzK gV5E(#Ks~I$Gn>?4o2wMJcmMzZ07*qoM6N<$g1S0vhyVZp diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_bluetooth.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_bluetooth.png new file mode 100644 index 0000000000000000000000000000000000000000..44d0ac9edc9d47b3fcecaa46b918a4b678eca3a9 GIT binary patch literal 1094 zcmV-M1iAZ(P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFut`KgRA>e5m`P|9Q4oeRCS(DZ z9D)!JO5y@82u4wn;6ah-A*Uo@P*D^-h|56`Bqx`PdN6oUL~#R8dQndv6x={ja0#Ly zMog%m8B!4N=R_({p;jLK` zg$&~^?0d#1=0Q-MME_7t8jS*b!5%Oslwcg>Xlci&28XmW&}FbG=I8!Rnh0?x4^ZlJ zb#aNo+U|0(JHR^=|A4*HTpLx-i;vjub@pgH1Ws*$k_<&?RJT-lZZ~!6xau}{KQ!A8tMRgXaIaWO^yt*#r-}n zD-E|95@L2qbK}npfPVzAx6^OIJrfjZm2p1jYDv34ErniNBSf;!e=p6Yp&9@Ivqn$yuuM)4Zedo z`ADFpC?|l}R$yNZWRQpQM~OVRI*V!u2d|%AlJHJ_IDn!EvC)-ZtHn zcr!`%4DBk|5Rj2=;yKM6U0$yj8=rm`>Le!rLRt=EBy~fHK0Y+81y?l-^jBcE{KEJ% z0|c=a;&L%-Ig3#h-OaO?M)lyn?vDNpWVV`Le1EF;l6c)DHyYcI3Hc^q zKZnTvIP#R^*AhAd1SbIdWkU89&3+i0Dil5nw4B7KFliZ6C!%K!fV~vRUO-DfMr)>k zZ-wHr^Kv5l;hdl5U1G2f4uCG($sNEx3-02Z=$mt>9!=(e$nQWlnLI7BBdY@!wKLF< zvF7Lds3n=pHbmu&*}KgbeCu-6C}<3FazVz)Qvz~FD_()1e07eJ^EhjZmwCVplJdGR zpeB$rvK{2S_=h`~*J8FgWM|-84&-)wnulGF%_-TXBTza5|M?O44c6NEI*!Z41ONa4 M07*qoM6N<$g3kHcqW}N^ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/blur_linear.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_blur_linear.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xhdpi/blur_linear.png rename to TMessagesProj/src/main/res/drawable-xhdpi/msg_blur_linear.png diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/blur_off.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_blur_off.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xhdpi/blur_off.png rename to TMessagesProj/src/main/res/drawable-xhdpi/msg_blur_off.png diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/blur_radial.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_blur_radial.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xhdpi/blur_radial.png rename to TMessagesProj/src/main/res/drawable-xhdpi/msg_blur_radial.png diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_bots.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_bots.png new file mode 100644 index 0000000000000000000000000000000000000000..a95bf9bea29b34dbc20ba64596902c7d5ea0d733 GIT binary patch literal 1178 zcmV;L1ZDe)P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG1W80eRA>e5n9FZXK^(_>i)zqB zqN1p>povE%c6LO9#-ov9#ma(2D)AQxVM!!{h=pKL3tBXhc%%!qLhnwP+AiFAY1+j7CEv_%evj{OX3osqb8bmVQHm?@f3HAlB&I(wFi;8atTe1d zw;`2EeX!1$69!xg)_@b>4TzH0I4ov0C>;|MVIUj8V-PBjNLW8=lc0DdxEVU?Eb%vt zEAB*ModF8gQLqin%Tl-pTL*X#et_}71~>=I1KFe#V*_X8aW-e7HXA(n0#thGoCeFm zxTu2oYQS#L0etDfup}xs5jzEJ+jIhz>vXC^3J{+HJHTh4@`6t6?UZv2kl)g3=m&Eq z4HH1VJ&`9K=Z#@f;=3qfw~fl7_-uoj5ZY6<8%ZVE+X?1zK(ESn`ib4+aMc1mS2m%< z_)8$OA1NolP-+L)u*Ce6!CEj^?b&pTNykoBKei^IvReHG>9C#@=4K_sZi9c8_V?1R zP`~QuKYAJH0#1%QU%@Sm`g*WY3GuCS71Qk*^{bBmtQTAF`S*$cwfds; zocj#I=_Jnmc3P~{MHV-zfyi*!+oFM zf3Csker?a4N0(Kom&a;qm7j*~2(Vw$+hB(8cYS6Th;G6qw10++>i z>7Uv-`y`;x1z__hU}1ZlKdBbZy+-VbPM}|Wy{@hv;xcEXRb9*(^%!I=U=^5}u?8xZ zo94Jo>d~llV(hhlg7`Dzvv>8l(nzAgeu?996r86|AYZa?`3A;_`x=@PX95c;avIo| zS5jhJr@-P+!r(2$XWtu&>|)zA(b}h_{n%u#UGxyK!`KZT!fP*y!JoLn6L6!W;7|1X zX*hF1Eu73D>^#NULIn*n>Ez-Bl3vkJK79iHlB~LzM@O}@L1i6N=1oB-a8-skV(&Xr zBUH6N(wt<*s<+T~yw}nZ7hELmkRL8?i7Hm)o%j<|;hyP{Y3*(JY<%`Kn!UK_E~HC< z%8*aW=*(~rMH;ja`l4_aF9Q<0oZkxZU37hNUPipGae{kN$G*dZf7r5Chv_D995J+B$UT0znyFjtaaq1$Wl1Mpq!A*%hYvJ7kjHImqcUdLI} zGa&95Dw9|WKIsyTkp2-~d&f#%AYK4;pC&yAJ74pYAGt76zz+3ha1p!&_9^-&CM?%D sjLSIl+R`$dqFP*m;tCX3V3b$jFTfk56#Z@5*#H0l07*qoM6N<$g8E<*(*OVf literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_brightness_high.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_brightness_high.png new file mode 100644 index 0000000000000000000000000000000000000000..6ddb51ddbcfd56c773081f87a2bdae8f55604c39 GIT binary patch literal 1141 zcmV-*1d98KP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF-$_J4RA>e5nN3JkQ546WCfr1> ztBsYrK;$8Z`>%4jI&CHt-^1z>a&OPV+&$;jG-qD7JWm&!gOZN&C3WYYq((SNBXEc5s zI2kArT9Io-McJj3_ljF}nXX*Tashd1Pj#8DT+MO;m3NnbAw7*p-xq*ik zXR6Q>mzT&7QM<8;q*_E=5qO)xXW=*XQe0jtKZL_xfd%X}sYoJ%;o0PIr)oYI!MkXh zBEw8x5XX*OF856AzbbJ}DBYkHtOEt`5xfA?pA9*yX;5egyar=F zFLUd`ZSWIBiTNz1+0U=5O+%+Zsm5`KYB!Wah|{f2BV@L7yXeeMJu*fXz>jeW=W_>KEEFB?cWKC+RNy~u4-)a zZZX8#BJ@s7I$upjireO+SARThVe+p6C&slpEl1h$6g%oF2jik=K8~Ec7LTJZE~l7( z(Pa7+u&4b5eKPJF6f*Es(Ubf{DGsCfygy81YRF*NW0Xt+YsZm>a;7tsCl z$p`UktV}0THCH(;`4F%#+bS~xdC#Nw+!RD~@LYc9gJVfD=0&bj1-{453$i#!PJ%-D7(^l`#0DHa>L^4N_apXq`q z&P+u{#sG3;hA3G9m!CFYv|q2n`l4=_&S-l@ECdM+-&`62E^w_}6bSnji_9CUs+ z5@)AM_oIGoFt0!A=UuED$$5ajKd^1%?1nqE|0|<6gB0F2&*1?om-lpW49Q@9 zJKZ*0BvIh_dzTy)0ny}K9hPK4VQ$rBUOqXjNAnjd9SqXB;=;{p-yrCml&IayJ6UA+3NwyS@G+6^W*|1OJTCpjPd-TUr(e0=nZ zn>pJ!H#}{+qtZAz@6P%P)@H}_FXv7sx(HpHl)ck+|A7D_A*;1lG7B`Do~*O&^V|2t z`HRI%^&2x1qJG^@IK!S;!|~$Xf2K()cbPtj<{QW{xrSX_J|SMM({lsor5D=5YMWw%r;|A|_%?|C?uj{N z=69^~I7>kI%42UtBUnC$i$-2we6jn6hUh&9>`JE;!ut!0OKJmODjNohxH=;^ULJLzwh)Z@)P|;f(FG6|E9%ue9bfE%sMC zaNf$&_sZ6+FBe&Uq%N3h!x8nsj>BE2aGrAw%kEcvg|}X31JzCC`TT!wcF4&|JMB_- zIrV?JJeCa2a=9+JMA5Yrz ztjX(*)s7b>*1ZikIhHRmmOpm!r}4oJwO8k{K4#gu+C%VfL;q9WwzdBzo@~E3ch5ef z+k!78DwwYw+654?yp%-_4# z*{t|gde5GmT|pHm#5->18HFZ`wQMR`T*(|QuKhdf-H$ypua&`4?1%ed5BRmEW~tx* Sv0EFIWjtN|T-G@yGywppmz@0o literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_calendar.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_calendar.png index 1ba18b0115d292cbcfae92ea1458e4d306c03c8f..8e24c41f138191613d900e9a6cf202672bae7e68 100644 GIT binary patch delta 1026 zcmV+d1pWJ>2$u+uBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NFfk{L`RA>e5nLB6{K^VvH;v*(%DnSuMRFL3{YNzL_rh{HsS*xL4>GPP!KUD3O+*o{bhIgZf^H(H@V%tm3;7LzM1)+GvChb z&Xr2@)Z{BLGc$7nOn@PJFaq)>CDImW zH{DFnqtqQoF=d(E*jFrdsq9OTu^!e5u)rI8PCEd;d;PQ<`PXr}&2uzO+fgo;e|Y`c z4GDBRb+fLvM&oDkzut*qS3NJbgjQQ&GJkLTS@8IL=YROAh{>7z*R=_R%{Tqnd;)oI zQQ>!BVbluhG>DpOrt!k>K;aXJEFsFIC#O=mp2Tlt0{p1lNMfi_vPmDkW-Or(W-;o% z4MgsMF_JZV2#3eO2vzVTwsW?wM@Oemu@!R`%ykD?thMB?x84r$3A|y|^-7~{KBL4CqWYCC}K%fQkgoz}3Z7~cS%T4DITVX_rt z2&Iw$c2|Huz^8jK!DT{45MGCQC1K0$c9>kn7=H?BC2$1WmNr&6j_9D!XOwh0sm!V< zi)Ub~@jA{q|JL+tvG>j7BKS_z57;acSQ&ULm0lXY9{a)(uy%r}EE2H4tZM?#^%+;z z+6lC60^`9b3^muNi!J*`*@@k_SLr)!Jn+^|Fcq8z7;b0u8?aZ4gY@mW94OXcrkJ}+ zt$+WN40d(SzY_0JKXa%3PFRc162_kazwTe7vn5QnVhqI#pb<1|4P)?;F{&dq@?2+5 z*ZUWZyx4euK_S=%bhSNK`syU0d)H}WR7v!M<&K<6?17OJ`x(UlZw_ItKrfJ?NsyGJ zbKC|dp0QIQhLn`vO7#Z%F=XB!I_uiYrF%~_O2Y1hA7EJP$~8?ADku9)xWWHs;1W0p z+zO~lA~=Pz-V%b_girl#tK-`LBGZr85GT$TT9uvNP;UWy^qyn>jOGhLN+M(@jus+# wKS&bT<0Ns#pDRpD0(y4FJaiQ%@c%y0zg(nb0y+5dl>h($07*qoM6N<$f_UD`v;Y7A delta 1038 zcmV+p1o8Wq2%-p(BYy+wNklhVAUD z`+WNd{$bd&_g=GRt(i4zt(oCAh7%;E%Lqw3Bwdj7t)zz{G=Fu=bmwWjw@d1&!Y7Id z;aEwR^*>&0P=S{MzWv@;Wd(W)3}Dbpf@=*LOvr1nF7J^A|L(Sl3BKJ4jIGmA1jZ|Y z^)U_@0RFAQq!YgQ)Jz4|0M7w)T#1D4a@7uUU;~sWVI5xpjsPD4yMVuQ1@Clj{3vOr zq@UG3OokbC)_=fOV17d*d^4EuvfNR`BW*&xz<7Us57^gb!IuFqc->@K2pofe zK1ugB=rYTeN#1vY=j*yrb7_|v8PjUGlyaw|i(2Q!fua~O6iD}(5pvrVvQgwIFgOJL z6`^vUd6C!x*oYw$HIB+rK1+cyz=-vRrJWJqVD zN$9qmWJ*i~qZE*jnF0^AOwyI0&0A&N=qyRUG@!trl12v|E=mb>PSTo4JeVTsb-!{-&?{+9 z*;K+F_W`f@1;@iRJ=Gq+BnchC24G8y?kBfx^Ei`%$2>y~VNPIM+U$~4BBnrsQDx5O zGteLLVm1(O0PAZG%A3H(uBT+AO%K`Wg((ub^HHEW8R_wx(Mto`1!n+rBXR)7UF*xsf&} zt@j(&=6hrKO0Uhen(wWPT_u6mMdo&Zty}~z!F%u>pw(JBfne!p~9{2*z%{~kDCW}4<>)??E zI7441iQi_6ReuuDxpUd!Wg+&Qtwk}xt`k9j(HRvdUDzN8DA~yel8Oxu0~wzCVJtjT zpV7x*kmnv-_Q&3{s-xICxO{jZgGdy!Ja#6Ucm`qHuKwqLO4b)E&rN@F-l}fv6;z4Rr@H7d#4AcOWWBW#W^^)G%tR8t1BEtO{LO}t)oDO=esm(v*OfjEvmhj zJqg7GuYZBdbE7&`Q-A8!+&u;l%=rji9WphUyia2;|4sGg?y{|VimvAFSf?;bKodw= z{rFE{UfSzF;iC5X0naf>UE&^&>cg)AwX{o%DxV}TV#yr{jM)htr)OXjsIjWvPx#07*qoM6N<$f+hPp*Z=?k delta 554 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 P00000NkvXXu0mjfPfosn literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_hw.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..918b842fc078f74ced07777d92bb2ffd7b7397b3 GIT binary patch literal 1373 zcmV-j1)}Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG$4Nv%RA>e5m}!VsRT#(T9UWI( za9>hFW(r*DgN7K0DMT@*LTHGjqWB?=2*S{m3bYZwXci(8Ef5kBlqh~M2}Kwa5l!ra z2}3EVxFY7h_4@k{_q;xH=HC0>WfsAC;KzB+InVh&=Wgeodn+nBtm6zk-DjW>clgC( z@frGOz-urP20?$g01a>weujO8LZL|6{>G&HzkAO*RNIL6~xWly7 zwBrQCnm51rkjcAmiZRW!&Mj#)$n@YQrEoLQw)`! z@SSV)%5}a@i`GfD)g(M!PMp{^CSC_W5l)yk-xB<>q;0%XP;IwNr<^oBC9GoAA4F+)w6VH z*PGuE`psm~7CN(`GXl;VJ>BpxhN5oxBGv?RZZa?K}9f zd#&W^UL?XlnnZHvc_FE*XngN!enGw2_epBuumK2bQ}?$?cpxk;X&X92Ko6^LdVhQh zEwcjI2_d=!tc|t(X?#TVw!Un|JpU&3jgV`f)MQSGX-j+!oNa0nkg|fvXwdh!_B`6u zh1nq*hoqE_4oB>3ljUG^WV#+St6(ZOfd`E-gA(FnaS#lS8{gym{Ry9WGk zY}K26o~BNO$b4|7zYncqBu4DW8f$wl+^u?zz-nv z6=Cd4Ub10!%4wFSEPM1`B-;S5Fp0U`68c!zb2J{tKp)UY{~6H7zCQ9FP+GfgEBMk( zZzSI7oe5pe{qQd6H>9=)1K~}m2j8@o+h2-)zv@@vODLUX{FlL6b?VtOx+l2Tz21~R z!3%Lh^y|%f39^`SeFT-T(g<9N%Nf~+fX=FH54;!|=yecV4Gj=xXK6eFx++(~0%+5f zJZAdz+dsV_@F8US#lg6KpuZD(Dg6R^n-8|Lpk9E9unqjZ5KSdpV#hs^K2seJf0d^E z*wK|tv*@(n@i9>?2sl*#efPVqaNkl_<#T-;#@k8m4D_1+BN{qJK(T(hFS0v zJBfn+D+~wY@p#skMU#Lz(1$tjB2trpRd{ZBpu9({!1_#+0O8xkA96%!6Ob)JqW~k~ zUOFjTNiF!t_nHQsjL#7gf zx053xwO^5Vj))?FeUkPS(Pyt>YY=ga%ipq~6@yD9hIk*J2g%z&YM&zU0KE536akDS z4ZzEtIKn$eY;3Q=V-fg0fg#>GVh4u|B}~Da>s%3LzGi6K7v4bHBFtQ|HW%K2a-Dp3 zT$pi@_OI|oVBMs^Pw_9@HaTs6Us!j&x-pkBj delta 579 zcmV-J0=)g>1h@r|fPVraNkll?WF z27<33xYbQ?5L_J`TowPUg+73T4uViixqe4(N{lzRNul?qkOQZ=Nltpc-?>RBv{H!{ zD-bIXbOn+mnZUR4)u2JM;DDaRZ*gTuS#d#*K`iihiac#!f`5cHp@7YT7Y!F?Y;gS? z_y^|ZN&_bO8h(v8Y!J-ZDlhQ!wsnP!18{{aJ2sOt5iY#I0;u06BBU=OczBC|UlC&g zpCdp-wB*Au=RH3mUtY2;8~GpU?^UbS4`V#D8-f5G%nM!?h9=;~weq^^LY~><<}GAw z`+m27I~4-vnt#MYfG7!1gr@)z;q=S1$TQG!eOqbV2_mY4))Xn=9GEw}=inl?$$?I2 zqs0o0vH}ASiJqK8HL3S)&+J{<=iwOOD|j1swR-}micsKs3vB_jrv?1o4D(4npZ zF3IrhnI)Vzz@GjDerE^~o|^r`UEe?j5$_?2a26o7(SJm={cAOv6^fWGiZ7v1@6d_^-Vg;-f_yJl6W8Wez RmVN*L002ovPDHLkV1lgH3ex}p diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..8113c9a946d7931e6c8da8141eb90a23445428a7 GIT binary patch literal 1581 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 AumAu6 delta 1206 zcmV;n1WEgl2&M{^a06UP#?7dbB*8~a0c84aWcT<6|fV`j^fPhhrAtF*@01U$MCg* z>ozcf{x`83G8Y?00C5BO$tz~7jb&~E_|=O^V|G~HBznaawaHY{jQureH2$~v4R<-4 zm<8yE!DMg*9Df3rK$IwMAy@<4|4JYF)A05%<|`EV47drbthcK$u?P${W#^*wAgAAu zz8@8v*&i(Sk6G*<`s%F2aC~Gq&u8U}&1a$I;Eq{PS8qjZQk6;a*BUh0)la$ACuaK@Tf<=E(saAtAIX&oai5ak>$WH zfzMq)Ft*#6R60aUJkmXBh~QZ7@#r)4S<8j}Fz7aMdfJV*F^P2uwi!a5K_nV7&!fMbi{lln8z>EEDWKL*YM$;*QiA<9D` zKHqi0IP_F`5Bs$7B~?$5a11O75+7&$2Hxj*n_rcWQ3qwuqblw@`J$xiTMr^FpzT4? z8?#?n<4KCY>566T2JAna9X3|o3qf$1M1LKj6n!A852E7~J;4=Pt$4*%y#tO6Vx7Qg zJ1`$KIDgDo&z#_-AEoRJGwNq-FQk5AEflZ#;S(Bu8(0Z_@e!b>&M6y+z6aQ*A{!Y} zP-J!v6I|&(q0!ddJ}h3t-aZuiVQ)Z1(!_5Jt)N$SAnUjb?>ZxDtceCx98L5v=zmV! zkR6E5pE{ipHr7l7Dvl=3GQ0@vIq4>vSflwcsi_83AWd{LyaMc5=?65S&(jL2xdv1r zO&n#=Kk|TVM0M&Ye(e92`BRe(s6LuFz|aodyW_6>z6@nA=6^NHtdeXgQ--V8mR3`-LPH Uj~zxxBme*a07*qoM6N<$f{K7oVE_OC diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_camera.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..f594c73f5b2be97a312ad269416fba9d97ca416e GIT binary patch literal 1274 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGWJyFpRA>e5n8|AtK@`Sk+>+pm ziilAW71y|3G#5d|?I7Zc#H)xW74)EgLqtTygW_@s@!|&V-aII%2rjrq^dK%o5R5xf zWBfgxYQE{|p6=-xGXdwpN4Rk_^Jc7!1N&L z!1xwCOsCUrL4+>1k$5dQ0zQDa(hl)7nAqhBYd{iM4nBdTVgp&HKD$gO@G9^lY39++uxy61%73uNRdWU?bS%HKbDC(D#9_ zV*82S3a;Vrso0}c0!;(gL0s7q?KPW$;|+10!#fW~WP1pyWgN#{8us|Ng}90|(|0>C zA93V8q(y$GSxX4QR0y|0wGeIVdjZ;^|%+&!rxy!g)r69+Fe=W!H#Al6U|_ zTPP7fqaT)flzIq)^>L!UoGn&a%m7A7gnP`aUiPFZSIuzmON;svbF^B_0Q!r2olP<4 zRkcsQyv#g}#SEZT{3e;f(b8Xii8)#=W&pZ-*o!zeI^16dT-&WC3ICDk1*ydh;3ARq za(1AA$jY^kBlDF=5)XhEv5kmL5_Ksv8~JSvXDfY{NWUh0eUN%G6~{>qvXS)r2vnM> z4EAS%Z3sB7M0EQZW`FYX3Y^e`EcT5sC;~J03g->9odxb`u18;n{W9efU}EciDHvdt zjQpZ(z{hK6D5@l2!B4;ir0*J_*8{3~#jYLRmDu?SE8&Jd0XJ)5ePh{~#gh| z33Vuene3zWGVA_ayz@r~;6Kjoy4+pFpNsvW%NAz52Ix+5A)8UY8hKp=PAtdjz-(yn z|Hiw7%{~LGfo)}735!_|EC-d{n!NrvO~I<6@h+I4q;90QkjpGKif=9_eFsvRhBY)A zvAc=ov{sW3O^_#Hk8c;S6SLf6IW&U6b)U6_{3D`M6}FjRI4Jp<;g9F5+g52i<6UOG k-PcyBR%W0w1DP544LOOC_~yN!k^lez07*qoM6N<$f`>;o-v9sr literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_cancel.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_cancel.png index eec3c61f935b466e93e62967532108ae73e29349..e41b94ab09cda34e0fd8d19afe244f5ea22b16df 100644 GIT binary patch delta 1352 zcmV-O1-JUd3)%{hBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NG#7RU!RA>e5nai#eRTPH%2qqu`0&xIS62Sl_COiNj1b@PaYalr~Q70VVfa3!o z;qV>|fRQMNCji1_$~7=yM!-afIBCDXtzB8QSi5Uib#obd{k&msVwu*Qd{0{u(JUyX4 z3p)LZ)}eGO8?t5PC6zsv+q;Y*jl2*33T{lSkybIy&Doh*D#kU#F7Wh$MjejIE90lLHZs1%3Np3W~yBaLbyMGg# z=Z}sOR^ern$n+HjFK6ig43fMF14xaqzD&&OxhwUxJ>f@5Xaf+e6bCP#DDJk(l=Ze3 z3!UFM@>el4Zbdgr!kX+9yu6^i#TuZzBliA3`G6yTo+W2G&{qoD&(d zqh|E&Hu}#vZc?y;^gYNLyUip?pnDl4xqn`gz@%4+M)1iY5k$X|25a0^VkQ0dDsej5 z%RW)iS2in$b7V+oEs=5gI$b3&m$a(qYzn|W>C+)|rb2cqSe?rL8l#tcq4@!hl~dkMwvN_vpnuo6 zBu^-GK1H(*S~}zlJWbAd-UH>Yl(LV)F=If*_xV!)r}KTZCFi&sBa6<^Ld=|AEB?+q zpZea~PcXC&*sl|^y#SW=vzXVCP2hvqH17XlOYShR6}$vi^xbA^YeKew{}v>lTkX5SgJk^nC+7yp`r_sZ(=A-`L*yn?y{u*e(T>+1PZjFL`=t`_xrTv5BGwNOzX*l^# z{@}2lNJLw#JtwG6B--cuZIw2#E@d3*u+xbhO)Hv delta 1459 zcmV;k1x)(d3d9SLBYy>pNklvw#PInw0iaz}LVYU_WrosR!Bsoq!(RYi&#De+^gwY>hF-g-{+3+#+dL z%6R`KX@#V_C4UW;bdjX$5<1#T8YpR+q&FoUNYUq>JrL`GSO8B-Y7AaGBE;54pFbmn5AI-m^$jt4aXO4HO=hG_wf}4|%Gj zpM!V4Qpyuq0A@-0%P86_Y0_CVKH+O5eUlPSxd7ZK>3@V#uusyp&0u`OmrD9B0C8_D zfF6=|7{Naz-PDZ6Cw#T{dO~i`xiSVoIB6d{2gWDtmfJs#EpON*It@TyNk@#p2W8gu z=Hf-h9tUPbIRFbx=Of;Y}Ya{dxu~)ACXPdIcNGs~L(1nX}Lr zk{WUt-+x)s8Z*a6X7qn17}%@Q0NiCdx#e?MhSG7tT-oMBFw6L^lGX>ZGcsh{!t$%> zKPLpxR?=eAVM9dhU*IQ|rR^D>=p<=vAhXJcQx@Ecxg1&3~;VURHkNTB6o;11wW0sUuygXVX=1<=kkoG73?p+;aj z(0>Y;8nmqgCVQYo$=deMDpc)%*rd3sf*0Tiqb}w7g(aTnA#0l~fFq`%wt^RQ2A2CW zOGrb3Rlasql-d}%qZYtk)6gO47)xD%Wxy!Y|3m*Qp}`(t-vatu_yJ1jCktSQX>gOH zTTbOpv0D{Jnr9yYxA{rC#5}(OSW&j`<$`^;_6Zfp#V}1}mgVF#ve%5q!WtFiRid{wR2A@yF8lSKO zF(#rkInW!O(Bh;m4M4Y`WWKrJ!LBKJnX%`%q#@-1IDR~c&*#pe@iYB=OlYBPF9pD* zeOru>+aK;Z2gXkbN<2UKd6x+QUw@ypapzLFo14-2;gWs{261xOuN(l!clwyKAezGy zlY)|>3!&L*eX{^Kek7O=jlT4FHYT=PvL6k?Mt)^Xm5Bk6fH)Z_-QbtcrZV1z>`MKg z=9ZI-1%SW*I+)@OSF0IS?iQsCyQ9i5e}oA~y)mY=lLr8PVr@wor8EBQ^na9JIT}iA zY&E{xG1gz6xZ+fJr6j+*N0sv_aLw8gxDS{ObS=>*xnezRa@ZQ5Qg-oIwbdzdu9)y5 z@G|gYj4|$-wdkh?-GPUJX~2NI!U63DRsswElcYpYB>)n-*neU$9vBVu1X^dvobumE ztoNT8Yy@@{d3jR+NXUNdF)SRo%-_nl_w6nLKVUxg__nD&_Bg)@_#2oJsvONLrVRi9 N002ovPDHLkV1jbgw>tm; diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_channel.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_channel.png index 89c0095f37c41626d48e0745ed61b5cafdce64d3..b877a8f203552e74bccf8bdc7b259b6c35589342 100644 GIT binary patch delta 1148 zcmV-?1cUpU2$2bpB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z000B~Nkl^ss$_CW;EBBF(8P=8PaMVZmpDiRS1N)%eP zXpxcNDi={LTJ*WID3ZRwTBK1CVweSe;3AOh!@|_p@6=p5Z)V=>&Ab^K=pFcT&OP^> zbN~0wygT#mI z23Qe-jbPl)Tz|E{VQ&p^$Y4rAYAQIZh#GSYW5hHpJ%pYW%*X*$flLv&XOT1N2gV^V z4HSSQKqh0PHGrWrF9Dk}&}Ud#`XhRsy*j>gR==ojd;g@jAyEMag^iLP>{2%}`1h%} zVYiq`^FibQ_^Akqc?-yv=_>S9NsuMu_Mkkw!`>#b41ZqPd z!Xz&Q) zaRuZ>E;P|sK;BU%gy(|qr|(3OKgOi(LT_vXm)qKYo0D?|*!N$;@U>#u%vC5-?MRyX z77~KZisgLlXG~%jn5+EJH6bd0WNw2nWxtmdfPYBJx6yBeoe2e|rY9~`IbS$ts zuc0r3RiGB=6A0O2Pl2N>+z8qsj9-QGlGPC>&avo@B<-L;3DD=3jk@2>CcXn0Ib&jQ z6n}$u)1mZJ>}4iSYy5R8F5y|F<5Jobkh2>juP{0N#v77RdW061RR+bb1dZn6@6(p__Xemw>Yy1S8`3^IsW`c6a$Fe=fy{M9PIXLa zFBf*`d7u?&c@Pce77LikgYA=MXxZ}7LjOj@E%)-8NKHVUv55^+JAQy(2ZOAq%o+j! O0000N%b delta 1028 zcmV+f1pE7u37QCyB!2{FK}|sb0I`n?{9y$E00YrUL_t(&1?`zjY)wHJ$9q*uA3^G! zuqcsOAuPNWBwl6XoqAi4iiHJb(}boQ!oorqVxeNw5J9l%u418*N=1Ya@k|=Df|4{^ zs(xQ}ny=Gy=ANG0(|aoSOa7T}=6lTlJ2Q9A<7Q=LBy$B)x_<(Rl%gXD?&|7VN!nE) z7c_&KL?ZE;Hr@j9rQi|pl8X$EjAaE7%LWzTH*m=vMyh>*KHnzD*a_v+V%vwb50N?GnIdG= zYLt90GK_CEPJhyR`3%VzbFTw!LPE(m^ldHz*qsIV9!&(wK3okpfFe);!it>fb3yms z?nzQlyMr_SZBKvj8ptmLtsp8nMPlEJrz^qFxdPg^TPL6d`~gu(Rli9c1CVeQ(B~@P zJcC>{K;JMr>3;y9K^U1v&;%7YpaN7}a+Lz^TbEt>o`0u9@@)S+i0^Y`28}a*#0Oge z9Az~YnLyh2{J@r|ek@geDvXDr-a3`BWNeYr1=z>rb;~!FU0r~_`dMtB)>tyONa+GB z)9~nK3P|@l{l6=~ePL9(uWpd}^$N6E0qd=PEW5e@dDhV{4CS$8Y?10MfOEeC+jC`? zx2MahAAeTW7e(H43&SSzitF<nFMU5ljx;D-UFhLaU_+;^kbmk{DU?j$;W`x;0G|$iP8}e zdKKlXo5b28AGL~Hq_I0!z!lqVBSD!ptG%Z^bAJ%?K*gOyPk>5be?pY6Z~HuxFo-SX z0>+X=ufiq2$@Dle*MO0m#>T*6@X{DmdmDYS@iQ%B2bE8_4_hRtQb~TIPcjquwfLM> zF%PvLZeCkRYGnGI1c1*BYCC~ yk!PJoPzL0Wjo~8@mLIwOk~Dk@$S@6Y1^xoSdy^Woaanu-0000c diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_14.png new file mode 100644 index 0000000000000000000000000000000000000000..88c4db4c18a900e33a058553661b52a4b736cac4 GIT binary patch literal 1563 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_chats_add.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_chats_add.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1352ae1c68b6d1e1a79a51f8fbe777e0ac472d GIT binary patch literal 1531 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NHWl2OqRA>d=neB^JRTReO`T~-b zl4vi=gnp>N52i&~W^=0nD?bE5P#}RtkWqcAf50e&Bx{JQK(a*4p`fD3`j8`7nni+< zS&>?!={PoG8fv~wzvpyUtaHvj$9wO&_s*>c9`-tGt-aRT=kBx5KKpib{Krvhbp6A_ z!xs?qQg|7h43EKsaG+Ew4be6fg$F>vGpXoKco)0@UIer77lt3<2KX`D%%G%eEhu^t zd=~x!i{KcY*TZXDG6E8*@aNzku+eyrfU|2INYzt_;Exde1$bc~$q96Q@DunGjOIM; zAk>u7^PuNq8Z5&F@Cq2h8kCPQwT_33HR~vRJX`~lIEO-aZ2=rtYhe1!g3Dm&*Zdy6 zo~>da$klKs^ibjN!iLOS;#>lsfk&aopIj`edjxdug!_F&!3LmhuA$$AHfw!d zDn8oQga)v$%?h`2l66Hl-3Bnlyl4+Oxt+uViDF{E!0*mD$;s^`o}-wvuAozr?HAbZ z3|XIg&ZYGt3yX?hUCI0%?dFQy(ZLh_zFVT!{%dGMfjaf!Gsa3YVYex0Z^eNDw`M6N z*L-r`3(HUs=EZOT{tQ2Yz0~q6Z3N`xvk?6P$v3eMsG152pAGxq`JgW{y~MKjW*D_? z9fF2s&8(gz55kj{tjhKW{I1HZ3*(zEP}6p!o8=LK=*ySO2-mI3S|K(u4F7g1p(H;5<2id*F-kNnI2`InnnkuJ<_I7L)Z30=;%ktKH{K(C-q;TyKSG z(0MZ4ttb^}S`|7QqW_=;qg|EGny;bH1n7@CqtD*p)Zh*b5^jSFxf9)KcU_ODH>|;b zoR}`RCI3+zvSsJd$f)bO0LGC9`6f0(B7PPms;uTCLR@U}h^!pMS zqGth}=Bi#suR$GmSA*3)0Ui9&NV5Ms=8HjdJ`XpWZ>pu&7T5DQ@>B42xYy~usMGAX zpr(=zggqAf1Q;el?J7gi5;;Nsvy8Iy6iE~jJ2)QfVu1wkGQwGq1=>MfoE zdj0RFU1bOwg#M4nnra_n(@QN3jEmvxHjz&?Xk%7} hsc&NP_oM&+;%_@@1E@b)Gd}Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NHGD$>1RA>d=nO&$ARTRhXQ6tF; zNwg2`hC&wjprVvy>P;_LJqAHR6bd~U)l)CN7L}AFS!DH+C1M#tMUe%Sf_*_>D4Bh! zbv3=-x>6cyrl;S3I4jo7*)z?YnRD)`1%LLMwbx$jzvt||XU&|Rp8vSis^(v>*Uus5 zh2SDE5gY}Fz+kOb8>X#PN>2d7GhlQ*xB*-R&I4)kCmr8{E#NJ%ok_{oS%LHf@F4gR zl#!zhehJL#$P7p%;tzq}LDljq0cRJTNbV&>@H+|q7&teO28?&Hw2p;33)>(*4r~BPIfFrWZ7CRAG%#akf>j{&YkrMgd#juf z8KJcQOb!*13 za2JDgSCV)BJ#1RbZ4=^;2KR&0z~m&#lH5sg9t%FO(T#Q!?Wo*AN;;D37T_nLeUfj< z;;1{|AcFpBJ%4SnZKgl-q3q`*wL@KBWmM69bKrvQ!hSajG8HX%s{&k2PWK^qm*0=$axd! z1KOD9gF)~EcoS@f%TKhCpeOf2^a~`P#QH$hR)P3zuoe89=#5MdvGm%EPL-|0z+_cB z*^}gUaKe)1Y`?*8dMYnEpLc=UR*jNF$|)GB)BI^K<=0R2`L7$z%dutzb=cKV;9w{w|m=hlV`Ce~?Ghb$QFBaTQeRr$g9E=Kg) z8(bR9Y>22^T;yHYPPyw=R6Su$cAAp6ZRFPyH;Li}C(!WdH&5D6oZhOc^1$Q{?xg-p z%PsiNzi@g~7O9jK~oMc!bLHgs6%T$UrMKCZ3-_EZfA%dj$5`$1J@5m}3KI(g;8VKVR^ zd6htfRYg7pZUn)jH-m4mOL4#opv|5o+vrSP^PyTupH=38VX&Js{z#BPMMlVpg9@`g i(DY7B{sHX&U-=vQJUUptC5j*b00006gB0F2&*1?otMzno49Q@9 zJ8iFaYobgWf1e-M+@uXRR0TCB1}%B>k3)L#!30BzDUC)N&5n|}Zfas;kvwXhE+?KZ zxL*3|`|9n>FTdomct82~%GJMrR#{&!_E(>NIeoPZ4N?Kj|93U2cvdCy zSuNIPda3!N;nI$lT^VwXZ&da)_xr20YREObu-LP6=hGaWPstqn**<;Vc%onFpU?^Y zBTDv7KZ+IhOLYGcc;w&sCrIa0bB8_Kr_-hr-51F(Tewk*@g460<|W6yOz;2uAUICmD@iuvyu?Z$vD1Gwe%ltLf48}I>h9mowmMM{&*bX( zpZvCk<#pbUt;PMkYFq!$Zg7#Fvt#O0%bS5!EH_!rx4qwZa>=((_l%5OEsCs9a~CnK zYyPWy?dC*(+eMNan;pzz@-_#)zn`KvF}vySg~<5QaApH1b67RRmL6Z(TJtQrA~9@g;V_;|090+{{-n z@B+v0moBIoy4Ts>bPGPJtGnu}VH%BLME*cg6eBRN9C;q>3h4|ygQ7E-tul?!%eCO8 z(vn{yn}#P@L%fq0^Nns2k>rm-tn>j**OGrkGzAY}A^B3i(M=+X$(LPA{t@{k+=Im@ zhn0Mzn?xk}otep!uez4M`v3p{07*qoM6N<$f;hpmqW}N^ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_check_thick.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_check_thick.png new file mode 100644 index 0000000000000000000000000000000000000000..7bfd6bcdd5e0c0097f16744712568976a613fcc8 GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUU}E-kaSX{| zeLH=jw{xIK`}T#i`DQ9LX)N*;dDF&vcv4~FQTu~N%{O-#2~75Eejvi5*4)u_a>;@l zt{XIy3|2TkFHd<`RC#-Me%@~VIo$ST=XXE9^ZBj$z1{hpEqtX8vH|Q@7$H>S4U2&F z*V!-li>l&JSR8O|>fS2RDirQATAq2c(&W=6f>pQ@YmzQz?d$T*pw zkcnquU7w(Lw(*Voay84(@>?DSy|-n*V9OnMsPuh;9z#PI(}V3XS$m%|?2}@sKeBa7 z`3?gHh3*%(e=$uzGIK-J`_~T7F1EAQ``bK{)#G6}QTZk7puM1f>(#Q9xo(*zH_oM9 z@m=Je(r4b(TK26w#(8n-m%b+rk=>gZe_EDwpZVyyK_qp4{nJZtPQ5u-b2!!c)06Ps z8?v6V>FvByuG8N3TdbvJY8Y>X{~~73Ep9tQW5cg8NH~{^b+pVrE43+%_r!X$)9-(k zCb(TJWw>H?eUchOp{2t5wC6KTZD%qY^t}1)7*T%lzUHZP&Xe3TEzfaYvTfwaX6o4U z@6^dm{=yv%PdJnLDw&=h`u6svl|y7nT9DbZZJ$5Ang2p_PPXv@qZdmU<-RB`e>dlK zUEC*zDbN2DGVI;+{>fek*Icd)c`K8BEixfTSNyIx%Wl#7M7Ey&=>Pp|!nbePX|;fF h1@o&0Aa&$KWBlh|a?Y%4w`~F?3r|-+mvv4FO#n_H5)J?W literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_clear.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_clear.png index 794464c601bff4729691ab7945cc33e7cb991ea5..eb0ec071a83ed962d95ca3ee62dbd0639544ea7f 100644 GIT binary patch delta 1045 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_colors.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_colors.png index 8a7a633414a62c0217b2018363029233629652ad..a3d2a6e574922ed1dc0073b7202cba096e37524a 100644 GIT binary patch delta 1416 zcmV;31$X-A3-=3Qtgx238OyJp>ie$rE;=8b%F|NRJXL3Mi`Zz-0pn(uI#NDUpCT!0*oxebeqxdeeLncg`lW76`Vae+Vy1vk zR8>>P!lJOB4}X409GcgALchb(rkERo!fuQeg3sk(Z{T}t%y&|46!g9o^%?q+X$8=? z4D2)iztLBw`S;yU^5s^H)XY1I&$ZxyoSUKnE$Vx*VFHp40AFGBL!BP_#oG9-0otV# zc`D}DR~wl(CE1(T%)9Re5i@G>yS%UOI*B!x{SLlHyMI(E(>6}F1tfX{%(jGga%7&cb{_RQoTi!M_i#TB-UOS$71mdc z3hCKk4{#YR!w$jAP7={IJ=d4vZpA<_3tSCW11)`D1DB_16n>(_oB(|KIA^FA-y>kC zf!o1vA%B~-^_UA6ue(Fskny+s)iab4*6zl6k0P3)x2KESy=@J9Y!E+TzohMzUn5Q{-vhu!?+NSjv*1aJ8=}jfG@>&glbgUtoe90@AigAKerBSBH*5gkEkQmV4437JkNOa- z$2k&^79GSm@pGdInnwCh0`CTSzM&nRw%xco`XEUg#04GB81Rq%CO*P`a*Dq;GXIJ} zv;HZ__2gol9X7~TfN(`fU61jN4MHDzkAHV^+7|-fZ)n!v1E;uOX&oZn{d+-J{1~=F ziV2g@9~;D5*azgxbt(86xNN0S&6jJ4bYytZ*_-+XuDMY@3mTWjBO23TC4c=p zL3Gu?o;Cr?!3Vn-!o{psG61yQvTGmJb!;Lc9e>S0} zzG=}n189kK$r{9jIX_so){Zzxwc_}D?(4Kuix&a?;gK3sL!yJAM_;bT54tq|KHO1A zSp#&7jacf^Zd~-=5%}v&=5i=HL1vwYbWFYm41tS4$6$M@HyTTlo4|h1 zO+KLWv?#%U!ANmhWpw-vMW6XLf@)5T6%4lPBc)KCe*~QpC%|?-o$uxPzf^Sx{sk?2 WnwO4?qNe}=002ovPDHLkU;%<|%)OET delta 1399 zcmV--1&I3h3+D@vfqzj+L_t(&1?`z@s8m%H#~Y1nC3e$HGU7%L>|IyTBEk<5J)j7T z8%htVTlp!d50YSF^`)Q>8bN)i==P!)J;W$eC=hxeMF~-1X_;CS(Tgm#vg!99W?%oa zXP=pK&dkX^wBYYvd+oLUYwbHTd#`h>9Z<2<>-8Eb=7Q;9OMk6a+f;GN{?SwXEbs|% zS;b_qe_1MGqR4~5cCXy@chDzSl)68(6nL{0oKn|e9OzHB3Roy^gH`<&`Vrtmvq^ms zOspV%Z^E~Q&oDMWcolH*vwIeTp3vI1G zDx@cYZ-L80W!NED<0KjS?Pa*fV<4Rg=7Sr-0`NU>d4x&fo`#sIz>iVqjP+~B3(Bj& zFaaz9yMJRgo9hHAT)b)^?t0^K^&2J+fSqRi0e!r$>beJdkW$~5UstjW2V%z} zQuR@bz$Aq*UJ7(W2U(Uu)ov!@u@GhBF4Kcrx`%<_8t@m;vx54lw&w$Et3i;b+bd02 z@Qy!P{b1(+-MCKz7yX60whf6i4HK~)KS9=?w|``>Wbw4v3Gfp}x{l0-pzEs@Z$hoW zg5cAy5l;12`hB^1gQ1EV!m&ZZaQ=8Cfa!Kr4b`IAl@Zx`Eer#7hoQ?u6SEYh* zNNqyDk@HgiMQm^^^#YpumAN?x*k%N356(&jV^3{Df2p%m{@rX%zWW(n^eHUr7TdB; zz<-D{pcmc5kHnnOLfU15{{VOnxabpAt5IACT;WXUMK_@)Z&sen_#Fz~04_fA)ZJlt`b#a*(U@#4ojp_1H&2+(M6G^M@KQrEKJ?vXe>MjVxyDDs;Tn@NCVsxb48)BKLSqPdc=xf?rzb>-8^~4`&gxwipyWoqv=< zpJ?e$wyhq>CIc1gqE_~>Hs_{+wb?)~a3w`IaaR^^DLVx$Z&4Zxz-0rI zMS!2~hwUJU&hvAEFM7NQ`T1rwSD$lyi0R7+q2BwrJQx$RI0?iZ zW7{!^Pihl^TgB(tz&H%v1}>|zNO8Ie#P`W-*l-HHH_hTt z+95v^{0?H#EgZ|o7#e*|k_;p3gW!Ci*ColDIxDucokSyGH|QjKnKiR?lBxqKZZ1$; z8;iQfJHf$K*N~UL+eM{k+BskVYz6Cib-s)7f9cm>;2$24kT=*MaY+CG002ovPDHLk FV1j;*s=@#O diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_contact_add.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_contact_add.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1024fef0493d36901748cd8d963b8f8294ce03 GIT binary patch literal 1157 zcmV;01bX|4P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF?@2^KRA>e5m^)|`VGzgf5) zECioGe=?c;%&~NZqHDoLFbMoIj^PP745~}23kpht(_j?X$a|bxN}>r0nFVfxxH3jS z$CNig5!XX1zk#h4ECDmYO0XNe1X|>_+BRiPkbIA>27L%@&QuU<)!-cX1B`q}S(+)P zV0Mzu1|Lin97jN%O+x$*s5nut*u>@4hon1wMeMUpK%6}E_f)(*{Bv#N^WsOsTdIH; zaY>17Q1PN}&&E-aZBf=B*a#Y<{M34r((fqUN@Y`fh2uNrtof9ALe1I$g?Hli2=t<7 zdu^NH3fQk^$i+3x@1EVTf>&iT#QusQw6F|mpxxe!w@XGCW6P%}+;aH>uZvygh zE#J6uRRe;(3dkGkFDRsZg?vY#fG7h&l_2ylNbGZfo|iZ+sK_h#SX9l{>yYX1U#VPn z(FB(&RSRI{Hxrm(!fu}?3SAcs0s9WkQu0GLe8UL7<7Z!A3#Mbw4A7X1Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFMM*?KRA>e5na@iVQ547D6H0*nwre1Ld@{uhnX+@p%yJ1)X*O zRmM>;R4$i)*5{gQAn^`x3;Y6MBx|D6(Nx)!P%oGTzBGg4(WWSZMEbx&K<1yAdsc_= zmc-`te=ULp4uE-+*$d=un;3ID!Aqknw)?GaE;4~z!8mBpADA;B^uZu&;4Bc`293e2 z%q3|ZgrMge8PvzCdfmmNf6dtTyYw?zBY`(6iMR0HyC}Ngow9$ONs?hs3A_>Li+dtW zH*6mJQ>p;*)gGqnns0F}I@Y$arqB9_LpN+`SS^UJE+u=jNekFyB1{?CNBm}#tWUEX zEG8{r#<*K+WFK*jQJOZgmzcDGN#lKwk$ptzl{9_TLgqY|ZbDtcdvOC|JD}{p#I;|t zKEZFO1cW`}>lEFJvAynVo0=X8Yz1>Fkt)1Aot%VD7no9Z;$w@`D62&RUr~t&D;;TH zP(0?PjgZFAcCD9#^nK^_v)tF_pPnRza39##_&sxvz-J(|9aO+B5fnXuKgLH+P0i)Y zQiL>hcR^gbgF$P)**c<;%t%1mxS`w^{QQ<%a-i zpOY}Vx{Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NI0!c(cRA>e5nOlffRTRf(G&SgE zre=95C5KEbvr-|Y8_MXiDASpnwt8h{|+419cZo< z-P6-^9Gn&~3hV~kKv#2fa}RB=3FD}i@n9@C7JLu3GR`jA@lM%nG{%uYV=e-!!AlpN5wQz+$+OVk0EKrG-$me8P)+vY6sn1G zT$n2;G2j~s-V73~$nbGa2L6t2q(2}-ige)20DpqN!24hcxCBf9$5@E;#3r9O;wokj zm~OnH7S2G>22B1&IV0uMdCWYtN;)xh)==P{1+?vz62&OC-XORwK((1HNn^3Jo0WED z>gZz%wY}=<{7B{5G&#l9+UE4Wruy2(sW`g;J#9^Pn$ibbU)xaCXBY5;EA}L(_chf& z`71Ts1$4SfTblx!+uY*N7Bww()==P{3(l!Q%el+OX$+v+Om0n+Vi^Vg zFc0nLpfbl&Qbd8H1D(mT2qkJFz{f3(lAIC#P|#rm(f$sy#~ln0ID%Adt;1cOjEZj@ z@OR_@{oG+I6GW$M9Q@&66Y#P)%&WwM!FtD1aXOnv1>fb4YwBfDvNM*AgCE`~J;euG zN?XKDobdKx)M?M89h+WWio|n`6SJAmTEF9&tuT%nx*=^cBJGZ(R%b%xs&wA)hqH&X zjBF2XGx!jge2`_tdyq@V5%Y)*Li-CCn9GiFydz1Sl_LcPIK#lQ1jh&N!mf*3ie57g z&TQc2)Le4BGd%;n=7P*6`Hu|LGB&7fh7Faj0Swt~si{eCP7Miz>By`X5gpM5>5n#) z>`+ixOIT}V4P470CR)%92??fJl1O`IBT31lb>lxS%(FcH7x>PMw1Wu9zqUC-6}56o zEbtd@%LRNhtCl0ILz~v>FJQYPNNsctd_wGjAeXv&iT^ZWug4VDlGf@k;M*Y6grHwn zH+gm}guKTENMDFA9K%tns$nhhJWQLffys;2QbL*pmV=99JnRnvlLrepH$r$8`1g?< z75@rLMEmb4G-TrRhpe6S^{po=__hPdZ@|CNRruKMlQWTf!X((QG$-w<&~JTw`kdoG zeq|1SehMjOwFT1ZuFQ4)P_=KCN8@;gLBglwQ7*tQKt1)fD4%qG|EA^474-`K`i};$ zg@jC>UKt9z4wzev zNW0b75Y-`R5HI(}h!6&V*FCX8{mxi^*~sUoq0(Ph#7*sxRG2@1>*ZlmN^lBxJuj96 zJ#AyM8{@v11Djr;?r`ZcDn4xz8rwv_aOPXC0&)f!A?mE5)1~>l(a&caO!r^`M8AZd?BQ{wx601v z(O^JpK>z;H1FNhkMzPm`hSyQ4DU`pALlz1cgr?~=2b=~pUG$G}L89+IhEDXgU;|S{ iFFF0ve+T~0JMa&!=JYl?M>vfD0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NH;7LS5RA>e5nOlffRTRgayk$1( zWNBuXVJf?jU7(1H49ji`niNDyk!VvOJ6mAN<0I~vX*b5^nwpw7V$Q1CD8304m049SHXMwqCxCy7R!`i@FlV0r zkUXTEoCWZPIqoX-PS^M96gnq*1A0r)uWpw+_?f%=8?r`+GYuSYT&b^t!C5hVZfEeL zfiJ2lHYl7^K?g87h_Vp$`eYItKhs75=UGKbdrpjuuQ}k|8RJ#mMo}|@!bXKf;BN>x zD?(0@e#I{_MO?u^XMmw#8_>&l5-{0?q8Vu+?S)_;SO@%A2kAcy=XBcHpdRc6ie1i{ z@GEWa3WMDMz6CMa)8&)zau~6+z=9y{%+cPfxqD57ek^EUR@FwumM(3E^X(2E6(dg?yYHG}#umF+qmIpOFn=1`LlYrlpeMi48S8y+q z81qQ58F;z)utUK1tL1+B=N>kwj|hx?CeXBMvbyY0uucJfzFtx`pbAdvSprN{+Xm$c(&LsYqSUXEw3+^e$ z4SmE70XEaDMIRn=d>{W-U=ptjZ@49H^hvx9cOqy7CWlbwc}|uNuLitmfl2!ot@c(? z!KZb_q&16lzA=(E`tssC4rtK|MXT*C(d5nuXIU7S^k1Pp!cj{q_B&jRZdUrS!#LZK zq)selNEB@Pl{U$lh>F%sWg`9hFwXk;{GC*cpRUz^#<;%4ex007&Njc_@r^ZO(*7Cr zt@|j-PoNEK2Zw-G$?*xwZH3pvSql`~&bC=wkC927wjNpU!Y}x|q!(2ZHM%R@@7e#i zPF>?&ZBnOMP5znlUl8^fp`Wzj4b_3DOZ)}sbY)V@Rn}UkAGF~{uET2b@4ydcOxk+d z)VCTgOb78vKuJ1yj-xLgzHUOCw&0_I-Zeo*d0o%-Qu4*7$?yVp!tE{$FcNstSv4gP z^bN;LYD&YYMM{g@m*5+qgNfgw&`pVEv`bP0V!%E#V2_CLL~M1$Wib+dy-+(G??%tV zUI+ZQAERoDU7x^Dz2?{K78MBk0ASJ{CCLb5sj+A^RYnD$?uZ=|b$4$9dT%ZODl(K^ z81#jrOVG8y`P-2;qL*8VbsjN!+47`X7}pppX)jNa5(EAzKu5zo@=%zEAY0T{qK^sv z*2gyr=oo5pm-$jHjA3A>F=;elXz(=n9h8%sU09b2SvTOS&>r^T=o5<??WAeWFGFzD1@A#Kgvq|X- zLuOzfI2iXa;N|LE!w_+|k3!c=l$tJcB`Zi`ycs|{Pm@n7N=4Kvi%eR53LIBal7eK$ znGXC}So&ENr6WKKTMO`_N9%S_TEWqEGFt>*0?&g+&}~;qU+>5Q@D9+&vbVuJ&}~7Y zuc`P65H5PRR#d!^Ni+_83PNeepi`8775_6EZ!5|yP!FyJn?X!;L!Jcpf#-nMi%=F> zJ%w7b>7~|bsoJ8se{P|oV?iX->ibp3RcJ8%BC%h~hiH0T3^saWMAxHsTC9%H*7cD# zG?wd=cq)FO0qE4$0$yhqsRdB^ZUYYj{~dKlV$+`&2hg=`xs+x;m<)~uI;Cl*c>&HA z+FVlc1?0(^T!`+Vwg_z$RPLCWC*=UA-`;_L0smWhZ~)*hH~;_u07*qoM6N<$g6-Jx A^8f$< literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_name.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_name.png new file mode 100644 index 0000000000000000000000000000000000000000..bdcafccf4c3064e5f25e33d1b5a83a82dd65e985 GIT binary patch literal 797 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUU~2btaSX{| zeLLfzcSxYfv2>q}WoAi&m$Y&fJGh;-nYZheB;M|55es@^fALW3g3~b_J2--(wq!gH zQtT{PsGzb=r^D$8$0E-RnR@m6Jn8e!e}DI4?>@nIjrsR>exFx;uKfI*-|wpRCx3io z`~V6I8jUAhz0-a4k@Ky?3j)8--yElKkNtzz?6Yzb$J_qY26%ru)KW9o=v7da?h3b> zFHH9iS1lKtaX3+akJ&?^d(4(#*yMhu!-++wc0{ifFLw>^74Ldw4j{=904N7q%UG3+srJG2sw1z3EUWoJnSPCgB)KA*i%b5h{1N)PkT;Gi9LX5S}GQdO}QNnH8Y@an%AF013D4FcmbLr%L>;mTUe-R;mAI9o!?Bx|#JN z(AJ)Nj7#RsZ{jTQ(eg`@IpMx`bKQ+ewhHpgmOZxf5%kXbV{LFV|Mrc$U7wHt_{qgB z!Ron)fBQm>HqrkMQyN#>%~=27cie;jve$b%BIbVabnVdj#LpwMQuDvlzinQB^}lEb zPI)oio#*BerA;euA1?b#S~|r0MDE K=d#Wzp$PzGwo{z| literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9cdb8ebeec6c71b79398d72ab614f6f3368d52 GIT binary patch literal 1526 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NHU`a$lRA>e5np>z~E+-)(gs@0YH|ar8A9^atUMhMhGGBs%Ac#bJt)K|Wpn{N-2ts)zvWS9^ zI+=8{3))Q$G)vum|8dXBzvo(OU)Dal_k#m|*BE2|bIdW;oNLat_OVhqCB3}^)mFpT zYPH#Lt^((R(^~PTsQnmmeg_lPYIRSkm?S<5wt-`ySE8|%!{WA!fII+R1pOxKNNAvC zA&~kp`EWDWH7x*^mW|6nj8))jaI)5aMPq?$z>`2ZxD+oZSXysE)bYBe6`zDgau@+# z#CYzokY)paU{~c5d*CFm)gZ`Gl%bG@FNpuB^evo$ z*bh?K0zRg15Uu|?F=(RD=0)h4n43^?O?ZU`bhU&CtYvVcjrtTj%}-{h>Pj48IceLz zCna=hcU1s`T?zdB*wQS4dU0PHC!VP0>qzakfWc(6-HDxNIw$R)$8YNEwt)0=Z=~sH z#~YoK_HUzmBcJOus*lHK5vOa(abtB7(Zwoj<~Em?iAO0^0f_W4qMaUdkPNAKXyC^S5*T4*0&Vra!8aZSn( z{G0nGi@$IN;uw%x79cV_O}mnH`3ggKxuw9IhvD51-Zs7-=u6G+TxF1UXW${YE=$tUXk6d~^cQkC z+B&r(1<~`BD-fo12JW>{wsA+t%noWTDD`V<>vt#p-14mP7Lw>iX1Aqww1gNyd;bE9 z{JQB;B{{uit^xbOICvi9$s0J2)Ekt`qC8SFpBE55^(Ofw>un*19@Kcipnn(|(kn$g z2F?bzfZX?f{J+uf8|!8=jAfgW@9B=t8bmti;R`n<&VZDN-(Jw_To#7lRmn5!3{ zpZ|QV=6!IV9wOGS+EH?a8N3y|0v;)t&Ct(dr11mCbJ5*bu32HA^bZ^(&Z2!8h~jOo zLzoNxiNsp%VQ+UG&RfRY;BC@ryB_H6G{{!x_zcMZv^DC8*9)5d%yTW!I`s9g;M(3Y zfTt<<6In@Qc=EyXSr43Pv}w%Mv};3{34%Nml-w(w%D$Y@^@PjX+@#$}3i_3~AB$M4 z+&tH&I^@MbuL1g-RIfy1Zv}6_!3Td0nQ$r=3PyrT(jdUdc~M c-`;`$0qYD)S>^Ba3IG5A07*qoM6N<$g25%n*#H0l literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_time.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_contacts_time.png new file mode 100644 index 0000000000000000000000000000000000000000..38083e8ba5aa82678c3498d37b2c048ece0e7bd8 GIT binary patch literal 774 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUU@Gu*aSX{| zeLKU@TgFl3_+165040wm*8@srTFZnE%~TR}vT`&u%Ti2QE_U$N70pYp*adhLSN>sJ zK2bpA3co;S`qP!6T($w%?_1~fZ=bz0<^0^e)`@KY?wpxD^Z)Pt<<^_6FJF1mb-Dox z57?e-Sibf5K6|%nku6!(y|1tTxXq?L@A=&$-+F)WWGpd~cmKm|`eNrQb0^bjaflf$OR*m9}iCbqK5f5n;~t)r$h0%4KN)%i^_TI$p6q7kp~IW&6ST9kH{z!(?tN zIQm#yh=fl36!>E!uiKkTQ{H~x%KN|5Qs5Kgj8hew43Xl?iW&?{ST5YoNJ=c^@M3!Q zsK>NN^1wHz+p|lVi!3kfVe#ZMIoSBbqj+_d{@3NJVspRp3fHkrKE7KDjq6SP zV_$c?Wd1Z)c=-wSV@|QGv*#$klKk;=K8N2+{e264WlFaz`kDO={J{E$P5c2%%E9Un mE8Z#1WdO$!FqYcR9?)ev$?LhdBAW@620dNPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NEl}SWFRA>e5nN3SpK@`XD&CG?n3`+&URn|fhL#PiR3V-6dh0wBfn^t`UcLmWx zY?p{DAt*v<5vU7M5y6dH6GV_QH)fB&6O5ea;(eK!JNQ6z;LkmC=e+#q%*%c5eUc(-b4Yi9mtY6@$}s_Y{TNwzlWYj=`LfRV zk6BP~Hzny4aDS3X?$i8(^Cxi2omE9olH3CaK#MG)=ini*UH=s`*JK94_dv@V8XYx- z4;u!eUEoZy|Ay{#YK3Havmp2+eY*bzM_(gr&!F14Hx3?y2f%k($?>`lK9lc|tD8V< zMpggHGn@WFu%_(lRF4Sutc<;`aMrd*-Pln2Kb7EjQGdRJu54dT?c2opNS=h5n9qw@ zG=O&H^jqmheTSmS@6p}@@}%__YTcIzvExh1hyI6%(u4D?!26fW#&AA-G?aleHbe zWhu!_`~-E1{1Lbay30tJPuOL4h5aOw!$2xE2z;kozKL$~5IyA@B~~DG1ug(XCe1{} T0uG%n00000NkvXXu0mjfA~#m9 delta 596 zcmV-a0;~P22J8foBYy%jNklm zvuDmbGkbRT428n_==8f=QdRSA;5cv!I05W5j{XR^5BzD;xqs8?>t=tPfT*06v>@rH z*3VZ-+bhPXEGafO&@v9(0d4?W2A_&ber2*#E5NPYEN~@iUjdeYRpYpGz&GQ)&G1V( z6K$3clCDacXuAA4idDdrq)&nKZzUZXrQ^MlBDIB%1ySZVa1D4>(QnKbL#U{pJK%>e zwWI``4C;%(i+||)9$*HT1`Yt5G750d*mK|k@XlsMdL3+^o6)lFleCl}oYwKiZRM1o zsae|_)WcbD+vP5B&@?lHu^+gXx}(W^AjTOz6SO@A9%pv^5^&kqPn#_Gw`Gru!S*>9 zw09-#8bajRA?ZtRkd&X62X8E>yKkAU!A2e3rr${x0e|s~Ev(yW`whN!wC>4tmfX;+FUVa2}Y-7}4CGUk2uZ iXTW#UL3g3h0N^kC>5mft83aH80000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGMoC0LRA>e5nagiYQ542o&l(kp z8Hq{5&`1S|fk%je_7AAe)Id%B2MCGBP{n|mgdss+A?h(lLX{}OM2wZVejn$^%DQ`> zdtSFntmMntd+oKpwbr?N@3YUj9UcGWAH4&OMq?9r1RkpW*Of`q_dqIl+f~4#b`it7 z)^OXlQCDxavw-T^gC z@D=10*~+K?k5xeM?cf2ZDpL?_o3}y;wiujmk@Xzov*1|*wWZ6Fa||wSYas+!3GPI) zc#i%!=mniV5p;`^u@hWhfRNlqxzhXA(ibt%9rf}C#Q?~?qsbN=1oHLr6h*y7K&WXG zy7L#%FE4wC@a+O4z>9u~`lb_Pe$IbGccg6M-Vd%}AWkdiyj`h2jM{Cy)Rugj6aiF( zm#yh|=_`zWtGrN}tc4@7{B)XX;gUTJp&n9JwCHlpdF(cTy$LpCNBT92t=5EJ*nN3? zgEo-qX=!C3XqYH5)M7sjW~@`vmQG`ti<5EfPFBXVVn)YcSPks)K>K`jt7J^u>=i+5fMOl^%~e28h1L`TuXf1P)A1+yINK>Pz3}x_bab%ZcwoyFZDX=Cn)hpq$q`e}!hAyu| z%AC3^UwdQb;Clz8n+C@~w(#>!nxAmNE@C@{d_`}KVkzy-rth1ly&^|nzjjO%%g&DI zCX!Xa9mjsa^=JC>Xb_8%94aBMbN~t&y>!XvE zZ**!a0xl&lPAg|zjpe(rYH{jQhnEo)U1gc&3;eWE3?0}q7klBD5bBLfADz7D5UAI{ z=oagP$rcO(zhF@{o`8BkY^4c^7=(Ta)IVPX_1RD_BTdCfmyDg{It@aiJKvtaV68_qhtNc;?F0TfGpo2=Falhl-fcx+pw8?Xe7lS~^QuwCS{lf2t zY9kQ87S4eFg@$#EiJkKl5wdi&?X`&@s8C-jASe9EmKU6BRYYGB~G}!YBM?wgxEM2ooy4+ZH=# z`H1OIg2cT7^`!#HYl5d>Yz#+^8tEHC3Px3sz9Kyat$)xCr$An8+WOO19w$u9q9v5nOtCcOKqyOdKD=dV{!FT`SldN-CtL%00UDG0#T_^dau@f{ z5LO45Ab-ka3vcvl1PIE5Y{{-BFVhBZ27#EH{8IFP+TeMyGVgM*w4dY7L z6Z{!VguHr?m!!7ssSg4*$CV;Ef^V>iqHH`zrb!f*aeFnI&ux!L*TX`SazH|OJ%G~<*lmhh4RyJ5xfJm$$u==2->d$ z@hiL7hqgM)Ohm}tLOwqllVgK?o}9W2;n#rdR&w7k_7!KzEW3}VIzn1NixZLZ`~U`F z1XxP#Ks>$2)C%glKt9PwnfyZOFP*S)Bdi&2mKnh_$|64$r+yzmZ3}iEq&49-<@DCI>jSBI_Pj&zR002ovPDHLkV1g{}m?{7O delta 873 zcmV-v1D5>L2i*sdfqzFyL_t(&1?`#7OI1M>$KTUZ$XqF8ky8Ia7%uDwEy9ht3R~n- zTDEDCinxqv&ASAU#dkKzlR+dqkb5qLSD)R4eyKDa^UY>319nvMi)H}&^M52-z^@8WX%L+H~JY>mb-0C5NpO=m2RY(+%@4N7zglMmmBIM9KR)zHXqSyq6j8vt{T)Q=*kF z^3!0`G1_)eqrT0=FOV)DnfeA5pRTo6F`jmg!+#qBTqXDc_;ob)7xlQd|7v@Zq5~VF zePWY@?!*dwwkf*4hBTRFhZ!>Vnp*7_I6>p%pq@+UB>f$Aqzu$e|kv;aLndeO6_o+sBYL+FapGp3$1y=brKY9`mlSIGJR2Cc)$Anlv&_72)vWR0OsiVyA1CZPg zNxf+A1Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGXh}ptRA>e5naPh0Q544e2~9%m zT0+vMg@hOqe*ilcgq_4zV(mXbSYTn;SQru{L_&fHI~It&DPm#VkXRZTL7v~&-syaG zU%jrXSN*y+eUk6pd(S;%-Jx#XH#9UuGf$w_6KK`aHsyA^y`JU{uo^5ew5fjrA3JzS zdArqWJ*RAz2znhj3EqOLB%Kpr-Lz+c)1}}N_zUWiY+M9O2c8H{hQTrL6XelXn0LTw z@Z1Dc7f*eX$)g`IkAmTWB!b})@Cc;z9mZL(4a^Pa)USh}YsQ}kQ?loPbW?f=VPV(K~bV5-JHl6d@_Da1wkgJqHCy5q% z+LoQPCaN!Nl(gG8>B*N0z7tI41T2YkB#x@DG!dxwdEY8E=L@HeJ3zj#1Y`qUO($Oy z+G0oDe$;10B`FWnjxF&o_1(Pszb7&SYvSvhd;<9v%>#<5n8;Me1AoJwDc0(iz((IA z5Z17vcSVq5S{r>)=8eD}I)gt({a^?;P#(aiVh|}N#g?H6)R{Z2afRX3NwN{bw@$EE z&AG=m&dwyj5b4FS!W3>36o%l^yP z`z47VSa@8=3J+nA>3fV_Q|P4$Zbnh3z(%PP!zK&DV>C8Zgmn^i+Lo1={uaS(_kgH( zok%lLA>g-c=Q5oQG>GTCCGe&&1cde78>D-iTDwu9!$}0>8;nITl*cC#|KEjB`ayHH zP-#E{#8UV{lj|DAiy%msPMHH#uF@1U@wo>0h1Z4BE>P4*y*{La^ntygw1Jv}@&%rS zbIP6{^*vpoq>EN3U3JtwUi9=A9r6Kgxnt@_qQ7*Bk}kG%spOC4 zU&f_`AtjNHgmwsRbA7)jq}#FKyA7=NJ1{lDN7fkBbV}C*tnoi7&Qt1@UwC$sOh;Ba z{*t0OPV!ND+EiMQ7#=2}Ltr1s3s$!W55NbYQ)8UnHA*^8>x8=*-eg#RhFOrQ5V03U1_ppr9wLoX5H=rs>=Qx=BblJmquq#cWP|7O_M2k+B oPG$e-evxNqhBxyBruhl{1D^9dyF1Gf*#H0l07*qoM6N<$f-OEq=l}o! literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_delete.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_delete.png index c61ad723eee6a7e0134e8a1bbf2cbccfae9b10ef..6feea8c6891148975489d9df905ec8181609f46a 100644 GIT binary patch delta 886 zcmV-+1Bv|L2kHlqfqzsqgVVn*ki96Oeb1w~&)@QR7DZ~qZ(%=y3rB!)oOb{sZl6h0L2C%TXrGK-Z^wR1+1vsz9wV^ct2GS%o z&4mfgAn!!-LggA0Ia`UID_gDtIE(A>PQGcm#zf9mqUXdEt$;YkfJ{`v zafiW)DSuai3Y`I&$dPCDc(TcHmW#|aPMEXRdh2IEHZouv71#p~`Qq;yC(PMueM$ff zSiA!8OecjCR&(4LQUYK=P3G`&dX32m3*x2(z<_ca?+Btco8YQ0TW(>YX&Qj+)fp38 zPGdYyRunTO06szj%7jr8<0Mz0l>qc@%!EcCqkqddAv#&XjphnexA7t&F(H{7tDKNl zDj=RQFcUWRnl^Gm%2%KwVqhjDKhjmtEzF6E0-BFdg~GrkE70f`7N1fBXr%)1Lsye| zs@(az)Bv~wlPEpEyZ9Mw)&pu8^QfteAsjvi;dU(pZeuF|9}(!AjR}Ji`=@PfJ07L- zD{td_Ot{~+rZGN+@oR{D=}B$dvEdTrDs6m9dU+KNU#4u8RzCo6cX_WBB1mpSeiioq z6Yx$es`iE;I}UjWnS;pBQ0omu{tr3>xeF=%cH3U?BjiyAhA0ES0e)l~ZD2%G5C8xG M07*qoM6N<$f~S+19{>OV delta 876 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_devices.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_devices.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc97c95c9be8d7581c7805d885d4951df21189a GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?oyYK1Z7?Q#I zcE(08W=DaxVkvCipbcoVZ)Vk;uktP z1olt7{dm(IHEG{(dIsEw-<>)4*8cPPyiGYPm-tEsuuWl1b&!-uWK)`d zr;gWi*y#s~nEsBNeqi+p-Jq6j^QRt&m=>7h60@}0!OTV9;r5xXgEJY!>=5Bdo z-a(sh$6Eh(ZB6gH@cGvNdxh$KEW1-x18zKsjb5RgP{$bMS;i{8Lr5cH#=C-3?^ZrM zzrpuueFpzZ<;!v%>wnDIto&}*uT3BPe({u){yVNBk)A1Y{-b%_?byUZi7KXqD>lsM zimFXGpX_X%<|9y8pZRi|RePeX*|jq%^Ei8ED=bNmf4{7>+D9_wpVBt<`+a}bPf$yk zZnb5dD970yy~{;6NOG>tW_2>odz{Idc9)556r(BZ+Gw5(QXZja!*%3mvv4FO#r$y B0)GGi literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_discussion.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_discussion.png index fc472d16914e94380300cfafd88d672427243d5f..c621d0103dda710eab6c0084f8d27979fddec605 100644 GIT binary patch delta 1218 zcmV;z1U>ud2-XRZB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z000C)NklKQPk{kAQNwjrM=!eLJ7y$3PJ2|4sH;W>Cs-kOu~Ew|*AfW0 zs)AZv0|IuSmRG8t8rO650-)r9M`PbEt8K z>W5+`z<~LN{ivN&q<=E<#?tsRA#%1_k6m4VP3MKhR@dVvcEX zlz)=}O9oNaIywh5K+X+7a$9oIb1EY8fqcGN(ugv?M;&8SLoPXfd2S`Am0ILn$-5A6 zSP_USe{S=!>z&Y}CpprhxoAe@kjL;*H$r7^`gDY1Sn;+i8l_2CBh5J@r(Au1=cfeb zfmWa;knJT2WFLN8Cqi!piQPKpl0mQ+Xn!$Z?Pf^AeaJTf^PpHZ@=FpXGXo%zb4*Ld zb%zFN38=HkRojYQY}S%+9}+pgl;dwps_aM@+z86SGT?aPEn{Fcr~u|E9Ht?;#joch zlytj-lx;Km0@c5(^bm>U{yYiFfK_-8_9ptBK(>JL&QoE9<#dYt`ZcAe7J8cfh(z_t0g3x&@Sg zWaJyc^`H*au;RUb$*kh+;tyif<5IZ5POe})2IhiwU?IqjVt}?iiVj-2y&5R`7j1CD z6}SV&68X5Q2J3^XA_-;+D+Bstsym;43y@EW{XmXjQZA1F0jZ24m($3ONH#Wax$OP4 glQOvi|I!Nl0or}72BTd=bpQYW07*qoM6N<$f__38;Q#;t delta 1108 zcmV-a1grbj3F!!sB!2{FK}|sb0I`n?{9y$E00baOL_t(&1?`zzh)q!#$LGRiMoegi zaw#H(lm}5nAztKCBjL@Hc~ZRaz>}hsDVfwLrG`X2iINvQ$u)*t^58ZZm!dJvxE{a% z*yr@^b@o1cpR?zjL(W(K*6sWL-+%41_S$>xQ&m;5$`$y(uYW-GP)=m86SzafD1{3!oydE3}LH3l+Hn0ke2ur3h z&quzB2{PrV4}aq*s2{=^;C?{1oAj+Ih?F430&%#eTr&#g^~FIn3A}PLyr;e1=a`@& zE+9^8$~h?k?cfy}1Ia_nO8t6b;s90R^tdT9rrcu!+@re)tO3_DRDUXGD8g>SXwnD| zaRcSBCJi+aq1nR(wOSVHS3p5qT{e4ok8*gqC^FU>9)A%qLfAO)F%zCjJ*GY?z_ln{ z$_11&ZPGF>b~2pX(~(}eB6jc)Ig)pUqoF+(H9^|%drk0}Sb;@wLW8{@q$&FOfK!VR zujVx($Up+@tRF=N6xjhikIW>ZR|C$UOu*hE>x-mE%U+}BlN;dMUvV6b zL!)uJVSno7s#*<=p2mz8-vsD&AKkArp5?2!8hjd~CZJc`a+|9m=LFmd{VKP5@~0dP zzB7y~xZ81_=(NkxbPrCxCFM@wjic~yn1FA|pf7v^9Opjb@Wo7Gk*SxfI^QJjMdN4F z&aSdeoi+RJ-E5E2_MpX{1kXoiCt$OgfT}}tw111tob5pFS&o*C*+4QPqp?(zjo`iW5=LmpX9}-RgYd2^N z%YP9TK186-#?LGp^`a~#c$>jxCzoME;`aDKR-Y)R31l=Z&s&B!xyvf`E zNbJqj>5eC9!@V51%apFc@22{%A(=rmQ*6dI1u-(d0qg+t!SEm-^)aR!bTQZm?tvgX zO=s+78g+AQHDU&+Uo>qA(p5SPmYMzm`hOqO{s8oDrJYNk*9E;ChCPh*Nq!ISIvteB z4H4Rfv<}mDD$PpA0?+}zrw0?1%CQqPr1|qHbNvEaAktM!TR%w-(O380W=c{f18)H~^*sy>?6i`V=@8`~*Ef|JVp!;1;5bciKaIElv0V za@hw4kAUe2`uhxF+6}Dr(YOutq+AO^cbihqCf5?uadRoqC-o=b1wXrcz^1!ml`HU1 aUxDA8h_oA*spHT90000Nce7ZMVXN$Ge&Yeu_ z8akPBZ|5EKe_*Y~yQZ7zhwYptu!`mVZ;9+IfEk ziZ8bPF~@YtX+I&)bNWmj@&_#|s-C0?EZC`(QN-|G)iGnnUxkLhA(dWd`%?HWA2Kv~ zt?Jk@qgMF9y{v=o+ZZOP)*n1@`KdVLn$(8t6FfLY*!T6jI6V;i{*rt5o|*j#OGO{- zI@VcS@z{Ka9(#?-QUyWFDeQHOLQk8*CuqpqC~xeqtmHBN-1k-M*s3VT8tHo>thWyC zVw$Qsq4wYhrnsi_hIiiluIrEE@9>|sY^HambP&UX;~i(0{1Eyc{bkp*Uspfqg*I_? vTr+oiUQu*a+2m~RgcE0&*EMJdv@^{YE delta 551 zcmV+?0@(e{1iu83BYy%0NklI6T zesQs6zCQ)Lu|4ksqjma$x&pWOod>|?0D)<1czm|U6qp2__mSArK;UGb;;#WCF$G-g z0hV(Iegtf*A%AcN_>#+UwMk3aM8L%^;90JK$H0yO1ZIKHx!+!C+7mYwa4`Wq%@wi$ z?6mE^zm!vtrPv#Vji>Gq%7`C=*B> zS=apa0wWdMFGxDpQZ4;>De0!97ezZ%J;Z;)Q#_Yt+2Nv%Rku*Ie^zSHE8Df|7P=wn pco$V0t00oDcX<3nA`uly-vN#WF4zxF<@x{s002ovPDHLkV1g-~1NQ&` diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_draw_arrow.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_draw_arrow.png index 9a6ee6d4db14879f4df6cf4b6f6834a0b42757d2..d0fd5fa3f2655fefcf6d79194f39e02d64d88aaf 100644 GIT binary patch delta 1358 zcmV-U1+n_V3E>KmB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z000EbNkl)@-7s_&w^4Za88)DSP3bU9MYgIhWf61)ZeZK>c-WS78k z@NljObbD(X+5QD0DfWq+|I%`T?gHmxHu{>?lVJDI;PL^dz#kyeSp>U=#%#4$An--V zaEHDIw6E1^fRGsb!FiyVPFLuxJ_v%ung1Kvs{?8*GJhrJ5un&kXN#P3Mnuvx?{t&S zmMt`5YlHa36T&aIChB0mU^P2iR(zVoIjx4~I2DW`LDWdVcZ1pH_L^p>6!xXw+mzhM4iH|EMN216YW{0*zEvUs<_ zb^m(Dg0AUo0!BWktg-P${BARX^)QUv=w4F~VjI=d8RTrnxb6$F z8rx`mgf`7rAH80*{&ul1g~VQCP|;+4(-gq|6vCH1Lc0YV}mVlg=h`~x7F0Pz!u1PMXF@&yQyAuyQ(2v}qU5~~A@Id`ZUZr616 z^x_#Oe$t(O_3EwF-PKh!z1{|Gj6kOm=y$SCj8|7z_aQn6_J0_p^~LbE-|v5raNUW7 z``{?J4qkz}Bwg7YUAH0#J`0|Mt|T9`Q!9jEGvHxG)_>?*0x!Vh0P&KkFGun@Gtoi_ za1Q(`$>0mJ+u#h?kxN2-K}Wi>NlCuXf2r_pGC0$0G6rp{#(Y~>>*#oE-= zXQ{p%fxAhB6@S_{z|K;m210!73clpiNin+@fs=IPzal%;Ajev&@(JYIX}*?mP6vuvqG>?msPnCK;8$CAY>)n|H7sST| z>s-;-tifQo4LmakPvN)LFn=AYpsz{7X?ECI#bBZ3fq!8& z&DEZ5&{gtJKuV7g)Gh+uoxrEq=T&(R`!Lel#_95~a}0w~F8S!MX%YIyIE`OBp{+$$ zq|Y$5K2qqFC9kDJx_qczgkl5#VqYIKhP@sJ3n0?%u?8rhoJ&6X=~9H29g!9)^FeE0 z)C|`%m462Lm~V$lzw2e6^!&QGU*j3+mPJ{ z$E7&1HANkI`HN~@Q)QKdAHcoz=!F6p z4V{?1Hii60!;~h>dJYTZxajc;1%wXG?~zV$3%A6^w67udNsIfy_yJp1fGg?4R`~Lz z4kp}I?A;c_b2G8ARNZMq6J6n_)+`kD(|;@W?KU)Wgz+qJYP6*cKDrjrZc7RT5;>~5R-FoKjkYcS(@?I8BwI%fP(m^zSbo^5IgM;=+0m!uS)Fyqpe{dv4XqNCPmS%yp z0bc^kCKWH4Z_cfIz{+RyLtIa;2~RM6?EDCFkVT81>Hf**MUt$R9Xg89X`Ua5(X1rt zuF2o5zRvdCTJa>ML#M+)TRi_@% diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_draw_marker.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_draw_marker.png index 71280bcea2b38469b7f9c884c337b13e7803f1b6..6f60bf53da366ed84de1a7a5d34e9183e9480057 100644 GIT binary patch delta 1484 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 CYHWc3 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_draw_neon.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_draw_neon.png index b6e7d32018ffb0975671fa1a5cd8fe6f1e22f630..e7da87f55b0ea2f6b78eb473ae989dedeee9d682 100644 GIT binary patch delta 1599 zcmV-F2Eh6M3eXIYB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z000HLNkl?HT<*|Cbexk6? zY(a3IDZbR${0k&teUYA(D=>Z2$-rU$LjxWAT-twMmqHREWVTAD0r)YblK#~ ziE=JKrvssZd%&M1J@^INUa%g_&vgRdf`TLNuONzYZ_33_+D_6Quq(DkU9-9!%$;a* z#ej#vDG+5RhMtM$EafW^cs;c6FLe!QVQJ6=jO17Zo___(>9UW?)CWP5IPx88x7ul7I<&A5p%%T0r8E+NuAuDAW+GC!)kUa zbzXgf`vpkyx%IQ7N`Tt+C!s!6Znv47pf^Dht}NodKbnaP1&22A zFwlG8L4WsC9|FE74!FOoPOx55F1tJk$4%};f6@KYvAt`YgC+i#%&*Q~>>TR5%`bJp z{aGDi9cWgP=%{QtZKw|>r-`5qyiW{S90$4IG_Le#9Pje^w_*-!?AW zBN^u$FzO`qmL(QrybiZF#2#{g(&6Ym;nMxv34gXevXbZxTl$j1z7*^S+GJWT=ck6N zl<*G%i9Q0aD2u^95BM8c04~q^n>OT>)LTSml1xrLGS3D%HV2@|>=VrmJX@bWLs4 z;{e?0K_VYb87N0hmwH*KSE*_PyLf)r#eea>_$1fnc!n@9x$OxYGos$ow^}`?PJd?k zC|9Kcz`HFp?0sw<0PFAsWPM5`S(lU!WgLJuVJD6aX`3Y|Q{w>IZeJF3+H@_^ zMOH6U)wVyW{bi&U8>5aF8okD|4S(Ug1-N*FG51O*qW88Ctb(u7g{JKZ@aVOE(+f)} zbpkvtB_or40!o)1EWRgzpFZ9v#da2EV8muich)s!5!g2y@2@gWvcbE^xKam`&r9q> zz<)=b*ri^{NU$8lpH=$3p@O#+UXoMM?{!GJin`q8{vzKB2)`Riedvq4RDW+csM>Y^W=hEf*v zr_4E)?70%|cgBA>@vyB0KJ%jONd8HeB+-w%`;^T@dqTh4=%m x1|_5)33O4?MMS0k(cSV%jBQqCXJDpg;6LA9rHNX9t?d8+002ovPDHLkV1ll{`zQba delta 1388 zcmV-y1(W*F4F3v{B!2{FK}|sb0I`n?{9y$E00lNlL_t(&1?`#7t5sDL$M2P}K(fpP zYv82eE5nI2yfdN4D+kiRCk{j~niTY7(pc~XM*azj4Z=wcG;ri7$()G3AjCmN8NBd; zAr(@u&-b?X@q5-i``mNieZAMI=d@Bbp>h6@Gv!G3TO+yq@kT*d6)utCuI09*yrigFCrZ6I_u11_{w z{WrcPa2^M5P{A^`bKnqovQ&h8i6gFJqA2%#DSp*9kak=#ZJtj+(3P}tnQg0gOd3J ztJ&#PylR4b3uL)vb+)Pms9(Pls-bhgRdRy-RjK>4c7NN@-UHqPvsI8O*dKr_56o4m zIA?)!X!Wjywr(eXCN5OYE(*a~q+Av}4#yMVCnJ2~e(CrwoBwiy|BU&S>v8AM)=R== z;QpdcgtiC1!s<0wd)v^~?7L`z+UZGY?*-o{>&oY~JntP$GJxwA=(@}=ny;%GV?3wp%I5=k&O3O_8)Ni0@V}op9|dl0p$ooJGsd*# zFMs9e#Q`iEvv#S{mxOoC?`rK~cSnm}iy4#OYw@emi?>j504;^cRV!u;H@hc^@d4b; z3G~}GfSo+~V>^MPcltI@+EL$@Vq58{2H$73UV%H7O@$q>c1cz7aUx1ww=1U0z*U1U zd^ci}s-5n`?U-9VUz$Etn+D*d9k6OEUrazd7ID9UlTE*6CH=ClNGn=Xh z3$z|+jINVcJiYC5zw2;!0hfXMU5C`^Kr?a$xb`a~`oNOu4e+70qZ(&1&a(5PFMq~5 zSADAQEM8N#m4BIm)7c^kKG_e&PB_>~Iqg&UA-*B_+uW82ecT&Iyp^UQ`cu27fzqB_W&^y{}lyhQ?a*mRD^4vU9z5xD($ zs--Dc`vOGZXGHlY6@59l!XV}>n}2ua#TlihI;VM0b`qUR1mZ_tOvCRsUeKi&8{5QOQecv=`Sou< z*{;6Urg$%aq(^{1*ttU;*nb3{gX*^MSn2X5j<|n2$1ZNB*1DKZuPRiMVU>H>>Znrye*(>7&z2Kqn|6 uAHeUT>mVZB;MG{$5@Xwx%^BFJ8Tbe598oClWC_Ut000025F<6YWRDT|ppqBWE*#sj3%fwXy z{RfOKB@nB8uF8LanCUKM1U>={M6pBx6}|kvTiw=o`*!!t>}B0#Pt~`5`ke2aKGQSP zw|jPCVp*1FV5}MFjTM~)_xt^gn6`lR0k;Oq541l5wR62*?^LiaZ9~C5a4&cjoCIxU z9-?9lg`mXXVbG1^5*CUuN zg_=bz!JW77#2is@kojs6kTynUXm?iwGEU;s1%JR(Zp(yJO$6`p1n3()Abo^%7>UwH zITkw|+UF|V+@n>Y4_s*tTRkAX0G*_woZ;m3d+fAnnVr?}9;R7)ZL#$`pcuv0L}ROlD1RSB zrPy-S>48Rvigl#`e17o1L|=C#EBLMlepJ+Il@)lc4m2ZofM-n0-~r2e3;GMzPgQ>z zPZ57HCB#0y3+Vm~*WQB{;cDzCUQ@J{TV}w&e`?mY=h)ak22tM2aoh&+{Ya+$$bC`A zu0y?lN1ctn)-4G(gY>h?$c(``4S%A{Gz|dpBz-RKwj(d9!{3_gW&U zI%)lP5$LOd&(ssyL}rBlB#5HeRnd*E4_n_yXK0J>NsOzuB+-Xf7kzZvp&;5xccAD)J1g8FZ{RvWA|A)qa?;j34N6d8)<;oQABa>9`gumEvz&}uq zgFT?Q0mP?`+2cT5#iXL#<300Ua873ctxmJ)$Vp#6eqVuO0n%lwiE=J%waFFQWMi-? zZ~}}g$}!b6-lF*#d=k6@=0ZVRnS-d9!3s1^aaZ(3p&;!_^*gaXAbup!DN3h3wfaZ5 jZznJ<%km5?*$i9;(R7*4J@9qN00000NkvXXu0mjf-3P(g delta 1310 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 V;C#3oTn+#L002ovPDHLkV1gP)h;{$~ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_activities.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_activities.png new file mode 100644 index 0000000000000000000000000000000000000000..898b395d1a3aa3c49dea1cba6178d385ec9ab544 GIT binary patch literal 1413 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_food.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_food.png new file mode 100644 index 0000000000000000000000000000000000000000..a95a9e3b765f4d9713791cc957bdf22b5b6bf323 GIT binary patch literal 1292 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 VyEQklLi7Lt002ovPDHLkV1ftnJgNWy literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_other.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_other.png new file mode 100644 index 0000000000000000000000000000000000000000..14449416f67f16eb704ac1488f8722cbfc2101b9 GIT binary patch literal 1245 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_recent.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_recent.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd9f5f53f7ac6fc90784a044de7b9cfd31dfe8b GIT binary patch literal 1190 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_travel.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_travel.png new file mode 100644 index 0000000000000000000000000000000000000000..e4685b932f487752fda2e1775db71ddd6d36046b GIT binary patch literal 1165 zcmV;81akX{P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF_en%SRA>e5m`g}hVHC$3Eh&*+ z+G~+So1lmy%^(N~B1k9#i%Nvtv~kyC(ZWqFTLu>Nz-%F=sXL*9N+BxC>_J%4CSCNP zd{k%|IsJ~^>zsS%&dfJ+N5|kE_|JE~?|kQf&iA2T>MyWf4oUFRp_RBiyG{oCiLr zBCZe~R-{iNmh@}H$pL*TUWKnH5XtQKDnfaXr&WlxSH&AZ&rLZX&XtPnVah~FIui4i zihCxWyW?TRN$T=S+X+P94^{$^-MrfF{8Oj*mps-J;RTSd{5ZG)et^56g*@an?i5KL zGy^Z`boQS98cCe@N`$s19ervAFl@!prHx8Ij$W_oGoh9eq%B6EVpgGBY^DQN!dd1rB(u0DUW$R#CC=Z zq8iw8&Th|CNg^e7GL-gVGIlz2YETZ_V)vXm3;7ILIel_R)z5%!+h{A4@06ZNwZ{rB z2fhNGh}QsCSRF>$YhUfoIOc)tU>J0P&9=>NDO?t(aMy!87v~36&sTc1it{fZ(yOi1 zFHE*Ze%_-l(0x+Tg#*ZSQcJDo!ceP>j&1F=0`n~AF-?N*zUmdyCLce)QUbwh7l}KT zzU<4}aZ0=fFl97QqR%7-P6l0!d6OByO;_N4>gl*2$nj;s#ogknn^)Oua-9>I{8ZbX z)a4<*2IQ6Y2yC)#eoNs3kHH|Q1CEE7x<1%#*YS-1l;Vvf$Jr|FoGu-1IXXKYPE+n= zwvZ|3jQ0EQ2VlH~^t7@kREgzg#knZFqjBvIRLsr!-t5m~h zr91BfVu0WXh5YX+A|DhP&=(+gg(6@l--&)2i~v8f4CflK%Oa8ObO=bIaw;eTmw|kN zhd@576#qlVAmn`?PvkJ?xy1;Ow7@0jp||k@TDFtMp?x8cWgBAoCcOHkqm5XyJ*$Ci)m$J~+Sj0+xc4ao31%Re ffnWw^*$n&z7-`28$AB*R00000NkvXXu0mjf6q^1@ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_endcall.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_endcall.png index 81cc06d2e2f0dbb0697e7aea13f7bac4ab2c2e20..ee279e3a55ade09c42af26b5a920a5121e3a57f6 100644 GIT binary patch delta 853 zcmV-b1FHPo2gwJJfqyeeL_t(&1?`tTXjDNEfOGyK1~nMv6g49Fub^NsiinXE32AH; z8!NRI>_iYD3I;IYs zHaqY!yR);iv$OBFqQZ->fUkhBfUkhBfUkhBfUkhB!2ha1B7e$-)9Lhd;w^<5sDxPo zW9ZKT?-Pl{1no#s&gi}!LzRF*L3A-Q# zwv1vp4-eEpR2#TQ%rh{iVw>g*8XNPobo6kV0cYViXc?y?iC4)qw60uK8@L|CUP$~l zuuon#w$G7v*2G{H+yz_2wpLH1AKM1ZI;^n;o`5Ya#(yWL@mK?|EzckHkHTL!I=0w1 zAjz?gToLEMmWvp&dC`y~duMqJ(GR`m7%R&LOodtR0DJ>2mt}k!w8Ap!1aco;$K&gz zF*vk7m9%3#QWLqz{m}p;D)3=;b5J(Wtc+c>o0y;-)o|um<@;u{G7hQsWSgJV1bIh< z3OPMuaDNZzIfrBebJVOJ9OcF16m~4WH(`}>=u_>^#COZ2;{*dJNuboHO8+6$u$f1!1=$PYzg>iBFR z?t$N&bI-l^ob%3m-uFx-y!a0I4)_lE4)_lE4)_lE4)_iftA7K@xDuz+X~n9AI@kc^ z22|pk;T?JmCX&fy8ogvG_ySD9%~Y@#_JHiwun_sqq9^bG?#qtrf`}C@6kZSKVI1NT z#Zt`r=@-^O!UJ^sDGI+K5MGY+Pi4&%_qv)IA6TH^K7n!tMCV+q&shrc_s+j9Tk{4W%bD{*J3f%|Qau|7r zZXm!7>nN5sHRuRdO;%KEpK8|~NWoe=gYJbEHokFuMKw(=Ev7bGi)v1-;HTAk(7h~f zcgFcleShaznYKm&+TFV*YCm=TWWJrQYuQn=wpDka!VIKdICiK>fKyE9jcP?7XNAfu zXX7qnA9u$2Ot;1g9a{rnLp;a=Ox%S%c@2>&2eC z2<&E<2+XSsvzy&41=_?q1YZI<^o804tKfQIPQwdx=@{rZy#}u6P520ATqpJjY@OR2 zlR?ZncnPlPV{goLU{Ay8oU}M~5j_wkx0sAPEph@c!a?kExD!#p2j<*UGdntyx`-46 zpJ7Sejn3@V%QGTR63&9U@5)mKn}bwb`~B6eRI5q9?s$S=zk{Eu!UsDK&RXg y+@yvXv=`q2-vQqN-vQqN-vQqN-+}+71AhU%eKaNydy}UC00006gB0F2&*1?o*VkFPxhoeeSWuTOoqOP1gRqj=vhy;J>~>h3IbQo+&N1D% zm!qQr1^uyZ+@uq{#pUzHT~+V1+_QEuU*@?xalUNS47~$9=VjhboG*RqOj*LVZ|k;N z7MN)_PUo**^Yi!PQ=1%`9`4+DUm)YDk^2)42ATJ(!Yt1&S82lw~Z%pVEQ zdMA2z&TrqYV;EV{Ei}1ZK1gZShgvTe@qe?0F1Ec7Qu_5l*30DohR3zfooDRx&)EJ~ zeMg<|o`=qvi}q;?*8kvFb>n`2DCo6%zS8mH;GcPOi}_#6eiCLB6o8|~OimldGj%)X T9=|wE9uz>Hu6{1-oD!M literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_fave.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_fave.png index 5d667c129e2b7dbec981d6bbfd63ac9ca31d8fbc..946c4fc45f7990ac8cafad98d391034d0b1a5344 100644 GIT binary patch delta 1303 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 BmEQmW literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_folders.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_folders.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xhdpi/menu_folders.png rename to TMessagesProj/src/main/res/drawable-xhdpi/msg_folders.png diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_archive.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_archive.png new file mode 100644 index 0000000000000000000000000000000000000000..037e56ac92e351917ca2b106012245ceaf1e0076 GIT binary patch literal 874 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 F1OTgRMvwpi literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_groups.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..fc437bebd7cdbea607f552878419fc7a70e34581 GIT binary patch literal 976 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?oxAJsx49Q@9 zJHt97#8ITJd@=`Tm%^kUF5Mj+{1^N}Ix-TMFY0Yt_9?P^+pP%ArmYJ+Cth>1_Dodv zYFY5Yjd_-WR+j|#=L;&{*WRx=XSLJ1Jndahnd2Ph`m}eJ&;Or4^JcE~ceUx=V&Mww z9AX-GF#Z3`^~6~{UTdn^0a2f(g*A5eVymtO$T8n%XKTnaj``9g$}8)0Es5uYjz*J7 zwR=LaSnQ{02la@lt1Gwp87{m^nc>_PtQ)eM&22Yn3~r}SR3eEf**s9@cyRTW#r zb6g*6Z=NnTH`=W3nMCWh$gY`A&fAm(-p%yjystUiZJER&b>T;L)7LIj64?HG!pVt$ zucTbMPc`ov%MWTl*z{aQhJ9ap=%yGw_Q-wv+8jI1I_~1ulGplD zdtPYoJq2;;)$ZvZ9VUeCXG{^;I!h*J>gL9OOBoIpTCnRl|C3hQDEWm|WMkkH?{_m+ zIsM}o`j!9-su?dQK(kVS=P30Ry zmfNPEDX?BY%l&`!miuSdTRQv2%{-v=LDS)_@tic%&Qr=<&!y)44qecfyFKIcocT*% z@~=?-Uwvy)#Z=A*6ArHwTy}k;v-Xi|T9fP=-=B(n9=86nP{ixKk6sE(9JtBsr4`X$ zCUdrXR^HE*OJaYQRPX#7x8lgEa>Z{=e{5d;U81$FL-MxL&rkD$7gYR=o@uq|SG&=R wKPumO|Fr%-b0)xM*)h=$Z2?#^UMBj3b*1MC&t-?s7=m(>r>mdKI;Vst00}^-U;qFB literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_muted.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_muted.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6e8d77ca1717d1d481ea96e7244e8a1877074c GIT binary patch literal 1205 zcmV;m1WNmfP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGA4x<(RA>e5nM+7jVGzf?R+>p- zNH35cWJOpc*dj=yC)T2larO~3S?K{zg~e@Sk=el z@dC!K2eZHv&=iZszM`WSiYWniKo?k*sRCm1zi6-GR z@WE8ogS|$RV^@Q2!)G$DXy3>*6;%N_7gWAu%+&(0p-um@IAJ3 z4q(?CE|YmN^unn?_WGkX5&j-mWzXQK-&;-)o@~70ErtfT6j4#GKn*$jvc5byZuee2U@EM zunR#uuyV}s!y#^4GKGCm<3rIT-0MpE6MvB=!yXS_x?;8(eiYn87jNALjSWSUX`juO zwBifoVakxvpIz7r*Xm2U9|DnU*_YM2VH zQDkB-r^sgf141NaEc!ZpvH0+JQR_jE_>l<7Q+)$8_mP`;&Z7nUbRRYzZ^h5kg0bri z->+{#$MCI5PczUnU?}!2X*6;cJHbnG?EOh@&`dz;ajqQLMc{!n8aZrNj`kBE zya_P4yvXEq?T^@Zf^45%uFlSfPP>f1*iI@in}LS`zi(bb9g&;r1}y}8Hu&PO@wi;z zYLpK}lR&Njvbzjae$jEM7KdE}q;M6P&}`)c*9^W(GyQ}9O5aK?4ttAhEct1bDj%q3 z;6_)nfx2($Sf<5cA94-UfiI_eu)?4fK%R?1$a4mf11%xgvYlFy?bbO%G|o#q`>

lA{*G!@qbOI~(3KH!cs6yV&DdANK z@e{#oU}dFOd}!@t-()LDVQ=?JPHZLkX8N4+iVdxu8~ppylb3!!HMNF32OP zI$dmN9ErUye0}adUIoxUU*N?@(oO-jK>i;fE7=A%Mv^$2B)bCH709kYq$}_ji*ulD TTs#m700000NkvXXu0mjfZD$bI literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_private.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_folders_private.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc50195aa4edc4f1056db796ddab44bbdc0715f GIT binary patch literal 1102 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 Yj8~OdmtT)|&j3ZYr>mdKI;Vst0G?X+e*gdg delta 594 zcmV-Y0sJmUoY%bflDtcw zvG;)=Bzd{Z_mjNKB_R+91OkCF6IIGCsVJ>B;4bhI7&eDW(|;(6lA~_%oh}9UfS!1_ zy};G95=k^QK%m81z7k&z|Cql}L3LEpC;iQxTF1&vfdZzwC4F%uZk9>FRIj9EN8);! z1WffwT5%+aD{bdp`H6UrtkvLyX zAnT(<2XF@H1%JALUD;1fO`4nub`3ZdMbUgx!?ceQX1^Q25YSpc=xQ_r{XlMk9l#WD zYQrM0=V_%M(g=(=;lBa1zysi;=b-JtEnvH~?KW^fb5HT0>UIXz3rSrC4d5e^J~)%w zXuWr#X{)n$k`5OXzEjeBC;Ygis9u3rR)@m{g>RR%odhP&}pqd0nX(KPey^Sc@B`kerwY+;B-7W=Asc_ zB`yJPflEj644*qZ4f-zh95~>svqoG2ul&~ni`JcI3HZE0nKDsr3@iWxz;R&gAIu&I gYa%>V!Z diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_forward_check.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_forward_check.png index 830bc50b4a7ea7c5f1aa31210a13a04cb942bbf6..41df12a06dcb4cc4eaafd7a09df95f6cb1df35b3 100644 GIT binary patch delta 530 zcmV+t0`2{s1&0NYfPVq;NklPzxWyLJL7GMMxpOfS_V&L@d34csG6{yD%(-B%XNOVg`QBoZT}sU;ZSU zG&Nb61LlA^U=ElA=72e14wwUtaG+c+x1oJ>jiwsW(_0UKTYu0I3Zvw0xa%N@6KFdm z57qqAvTyeW;4%o%`3U?i`!1KB-f96IL!aseJd*c$18^AxXdb;N_&4%l zm!95g0qsV23jT|H+8cn&AV4#yq~Ikjxb*Z^3up?R3bBeUZvZZX08XN!0+)0THM{in zQVXQ~Q0*ce$A4^EeF1bb>=2!x-g<{pvw?J+u}Rn4=hx>MwyLJzllRx!jI&FsR?-`k zt+l=(=NLFElU2wMPQF@m&P*bCM27J|lB-ttC-)h=8Bzr66YEf=VcZ);ufbVaBp;}B z-ph3WR)j>wGxi@3954sW0dv3{h=~K=)SI?l U#J$hs01E&B07*qoM6N<$g8F*%O#lD@ delta 552 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_forward_send.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_forward_send.png deleted file mode 100644 index 0ee5081c11aa02c3a2bb99ff51972571b42420f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1219 zcmV;!1U&nRP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGElET{RA>e5m`P|A{g8RX^5IwpRL0m3w!ChQ~ z8jM@wS0NpWPG{aW69<`spRTU1`m0_~PrvRLi)AD;1DP54e`lbfp`ka}3*LcWpb9Jp zozniPDY6fE4qWmY<5G~Fwhuya6|TxH+Y|b;LA$hi5DMxJegh-tP!@t~#$dJg=ub_X zhoG1NR)IrJao9`1U2EKQucM4JzW=PHh&)qKQ#(T!gRLEqrSrIH+-@o{4A(Jju2X=l zZzE-{0vOB&@@IZ!9If^g{XwqSl-o#rNELG@Q9}GWfz{xniZSXRl*6DP5l7O;NH`A| zks`WzCBY{LYzAL}Ek7{q0X@BVk}^)B0;_@&zr@7Je`q(TvpA&t4QvIue)&TCk>nXL zvNI?VfqlV2ptoeh_X%Y!=p2;Sw?E|NCL3*)??B6u*g|j|)B{`IU|0q^SYgq-kS<99?RR0MEO z26uoQf=%e3ev=GcC5*EFWBQcJbp^ zi=SCa(rVPuF9*JbVyED|Nd??x3Dv89qw1%yLMvzjeO+8*(Jpc;&R3Vh$KtpRjI;ud zSbcw82sZ#DpHW);jQ*Gsd%-&l$VJE{CozW0OW-BNcs6kv!AId92&6!l$k&fW!C9Lk z2+jtzig{&dGAj_yd?1%5*GW|_Mr%N{?@thn0$L*9b0O;q%7ARGw#Y?j3+QS+Z@4Z* zYgL9X=ZteMDy#@I11+xFgv}nh&&$)`ScU24}Q`(qE!427b<2nl^bl z$)!LoV}u<;e;}V)*iDZiCZYUaDy` hl9_?b45Yyf`~?CodfZb_>>&UE002ovPDHLkV1lCk`xF2G diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_gallery.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_gallery.png index b392961ec2be3b3bfbe2ced7e1189f749cbdd5ba..e18e43da4e51084080e6bc70067900dfbd1c32b6 100644 GIT binary patch delta 1213 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_go_down.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_go_down.png index 34888b613aca57636d11a22436aded57c2f5fec1..813e06e9c41dac4ab19608e406613e3dd0933dfe 100644 GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?o6Zdp+49Q@9 zJ1v&$kbywU?*;y^biYLQ2kI|YdNFlx(3S@WbY(QX!x z1{4&?f z;Qpc%?M#j{AI_fkn7KEvOnfJI<7$n{sVXdAoIe|V63X2CTcYKO^apQKmX_=-8NW(j zmzjRhoHDtkA+PGQ-s-Xr&$HR>Gmh>F>xewt&pWa8XT5VuYF$Q$&e`K_CvMfmcPO3t z-r`Yxc-O-y?T&VHvu$-te^)O^wYt)HcbP!yjPgW*M?G~n?RNfM6gDH?Q#^H6nkSNf cmMMQ=Ok024;CR05E>KW;y85}Sb4q9e0D2~w`Tzg` literal 288 zcmV+*0pI?KP)|0002zNklsw||$aDj|sV2sx>XR`!1JgRlbQ>A9Y{HoT|3EQOt(Z1Y3{)qk3)Cmd3F89l z1Lcfy1%;rzFg_p+${XVg@v`(FXjaZBT00006gB0F2&*1@5Up!qLLo!(3 zPIKfsWFW%o{W{A3Lae@Koby5L7ZXcXJ~!}N&=_En;d4uW&jICG7t-!sSme7{k=aNA z2_>9uC|;+2+;FeyJ{A58%sVF={CTceIdQ5lzgN{nPoic!7L+b$>9^ zzT|w@H`6>0wtv5r)9L@* zF)hZ^=Fk0RJ(;+yXY$F?JjxoQ}mEXeF+&wjmOzG-o@?9Pd{nt63x tM&XbVkVuNJt~?0q0RszGv(n+d4tv;OXk;vd$@?2>`grh86$- literal 281 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_groups_hw.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_groups_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..38ef333130ca5c18684dd768f76d6747eaf6ee2f GIT binary patch literal 1687 zcmV;I259+-P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NI0ZBwbRA>e5nQMrZMHt8T=xXLI zW6L(}vXX6v7@~QL3X|+ZAe2cTqT81&%OVuX3KA@oE?Z_11(n?dg(xX75==s~l1fW0 z%d%Fp)RfetwyEps_dmU}K4;!J=e+MZ25s#F|D9)^%YWvbnRjO1vo$px(lG+Mehw7!7*c>UXG`zACghv4?`yPYj6YTt3=8k;0mw= z_;PnKasums<$l)1Vqb2EzD3VCU*eLaE$GuXxCXm(Gy_#^zAZGjH0qW&lk@~*XqbYivl&j4o||8Apyh29v| zw^4p#d?8iW>PsTWYRWx8OX#!67BA?84ySFvm%HN8$1McU@Dr%(Txfe3^hGA-&Ewf& zjo8;s{EOkJfR&^XV5>=%S}-$y8vY*@WaJz4Q8teH3&y|J`a(LfI{BSE6N)KnBdaHP z*kwm$T_^#c4j;SqYBub9kWa%l6*y7+fDoT-_;fF_Tj`Wyu|@3=j0RTPmV-?qpuY`5 zzs&lb9>v*9;A(6I2c2TEbqDe}If4@UZgAA$lB5R55S8yy-UtSPQ-S;wz}vveIbp_p z=j@ePIXdZeI@g1KKsVs;fR*Qq@s+j1vfeT!(ASqDC11?`3(aWsP?gQI7Sbn9fSm4z6Km*XFs2RRZl>Z+|I|G{5-VqK{ z>Zg?~qjrokl`!&GkuVbxJXrTQ9p1U_A}!vbk1pzE|fM5tCQ`^bC@oawiS z?eYp(^@TUd=gQ9jjtgEa{lF^ff08?g(VJ~KX!9ZJT1K6%J<_{TYP0aKFPiP? za6J{p)np*j5?LAuR>K>?I`Adf39=EiWOUc>6+z3Z5e$tGI{N41yO+k*i9|x*^zkwm zTxk;YzFiB?J9!&HSzu)Yl{4sm<3JPB@-$_E;MdM`K?L1PdV(H6Tbq`W zcAD)#zf$j@ED-Xwqb&sbdFEzf%6VgLF^rMLnfVMGTw0rCY zhaxCfzyD|l((>?S8V2oT5BQEs>ns^6h~u;ZE}X;cwg h?eKMsz<+WC{sR5%+aRY;mcjr4002ovPDHLkV1gHb5U&6L literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_groups_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_groups_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..c9988ab24bee2356dd7248ac9116cfd23e60a2aa GIT binary patch literal 1606 zcmV-M2D$l(P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NHut`KgRA>e5nR|#;RTReW9h*|p zlG4Nq$52Q@(o%x762S=l!>DW=OY4t}B8b8U3n2r`7%~bodO=AMQem%21WSru7Cj8? zNs(GQW{EiEWR0e`-*-FvxXwP0d%AO{ncyz?X05&Ux7J?goPGA*=T4zem--#((H$sO z6J08mCKJ~T&IcnvH`oT&foF@w;sJF36AB**UIkgQoz4sUUG)@oF4&b-x#>HAebIk$ z5xJ%i#f+txO<=ew>Qn3uKzb;c1{MI9vjclP)2S2PcS7-v;4|Rl5XOy372&@U{Nae` zA$y|K5;vI8bsYtNdd8 zHpF4T#>`IOJmL}>t&2U|=k};g!u!ksyRnDlNeJ&56ZeFT!N0`x`KA_$(UxDyJ|>Mo zqT}eh&h)R~h1_r2n#TiZp9dy@Ge9Hw4Or2hQ5N{~G3kM??Sb(v5oj6}Zdbv5u3fA)N@aidVwF zz*9g2`=UF%39JQ=g7v_@#Nn|5{|K-MOz{iCHyF4J#4OA6{B7{Lkv0TP8zBu<(SeiP^bR_;vWYhK$co@t5ny=JpuYYGjsoFp4gyNS~(^RI;1@j&~6mFY=I zG{3f(js--x6+`Eqa0v`J;>R{76R#U`8tqGrPiLrHLhNL)46>Hn&0f&WUi+UW0oMR4 zAJbS3elkwI#7_2LoRXLfCw+GMC}vz5*ZSd&23io(g5mV@_!l|N~ml{%=` z0k;vnZ4(5xX2QK7b|~~xl#A5Mqk^=w&H>?6!9E^r0eM6(`?awFDmaK41YYt6(2bZ| zAv9k%iS(pi^ak*ozu=gYFJqiVYy(*3CDpXNEzYjeL$Yb$X|N6GO!G5%543`ls!SUR zBab#z`##YutpwRSb0kY2Hz;-<=mu7FWYJ0a{~;7R9dz0&z|KBi^tVf+U@a~?%tdJ0 z>f57``az>kNSbdKgG<3wa4I+%ly_@%nw03+3p#*y;#a^%K2naLGlem=lP?1Pk>xvl zrw73U(fUDcXV8u-63qgigIbAl&5Dl{^}u;I$ADdM^fee4b$|zRB&n97qek-JltbV4 z9Eq2>$|F;OK((I(&5jW09q4xO70|b;rbw1(>S+pSC)V_Hj~=ruFYvd8DHY2@4cfHU z0J~gjI(`834c$)MT6A0pz6)5;Y2y!3{?l z2^NHLUeJ%U&rG0JC~^*&Y#e{+O6buCjxi=K$q)k~|fH z{E(V~F4Ri=yMSK(q+*FHs;seM7~|Y;syV2!vx4Zq0@&IVerqHK$5rwg85JSau)!Ej zW*nLGDy4^W8PLUAX$|A>-eY>S()6k@*4JjdyYmbNe>U*XMYp@9NH@Kso7<+{cdcnFnNnt*qh~8u6!)e2Z=DI?Cixqj4=^x1>b`SZYbKx0qY-@J5ExF%K!iX07*qoM6N<$ Eg1nRC4gdfE literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_handdown.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_handdown.png index a9f92fdfcde8ea474dd1b431a897d5745560e2a6..526b55547d9b363aca42b0cf9346e31b3df96b22 100644 GIT binary patch delta 1133 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 DmyE=r literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_help_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_help_14.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf6d2244bd15f039ce0c9eae6d9d9269891d70d GIT binary patch literal 1417 zcmV;41$O$0P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG^GQTORA>e5nQN$3MHI)qS@}rI zh?49r5s^XA6EQ@hED$oX7e!Vdg!*8Zg!L_`s1Fe$1Q`Vp7b7SrO8U~{g7hH@t)zq^ zEAxecUA<{)mbc&kvgi0`&YnHz?0vkqzy<#^Yu2pwUo*33@0q>NxN*m2Y-gaam+6Ox zhtGm<9yk}w0Mo$`*im48Utixw^#6{~>1p6`@EQ0AC4eVbs{6sqaHobAbcfC z@MI5YTNH3#0rpvrZRnF)4owt@E(N|;-)X{^iY3QAz@;~n1mj!AdJtWY!($?Fud`fx z(5Ey?1i>WWkGvNf5oUtPH5<4r%7j!m!?e)Z&@ZcwXx>VWO_sC25hFx;RtNbZMTWzD zU;r#n`N&TDio);ClppQSfgr!9{5rD3G7y+3SC<80p920ezn9V5_6BU)X@h7#nULVS zF*p_F8D)OK)|MzV6s3;DLAC}ZDi2W~G~2`IYe;@lu%WL)e>Bu7cZ0)LcQwxAeQ>|L zPU1g`Sy1s%DuOoc(($SELu`|Q&pg$Uo%fmwuBmb|xjE&VwL{`hpa-e~@SO#=TVkoc zd#kQvL$dSYr(H|Z<(8_vxh3?Q1?z1qDIABtqw#vM*_?EY4zdSjK7L;YL!yjNvpSL| zB{zU=7I~fNr7E5KnFb9aer?=`t&`4+caDBc;(NlHGAh^cDZ7??(I;m@Mw;vM6rE3noGPDNj4^`y#`@TZded|4&q=(uKofjPWqdOa1=0h0|(JMlmZ=++Eutekme< zBS#YXR}KK*XCi-nqRCEDt`Dtt$n-+~b(G}UmP3hx?-BD)zG30>nE6TF3H$Cr0(It4#^w z_u7T@K<~RLxqyZ>);Q7hT58h)=uZrnt=y1bxxsbrhP_@#-yhYxt~OmlTga$?Sb}JV zt7KZ#xHGDEU2QY~W?O$J{b*V5GQCWlZN@?3eel*aiYm)uwLK_xBv=aCj>6dH0-ZF2 ztm{QLYj0#BIla+2=o{eolOC_%f+3(y>q0OKxGd%h^t)lqbOy03Olybb2lzFfyq*r2 z4&4oY$qe96+Ft-|ORR2ZdO8bqOv_0BSn6gy2k1+NHaqPN8^9+lo2q>Rm*evPnt^`- XP?KrpLLH6L00000NkvXXu0mjfh@p@z literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_help_hw.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_help_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef039b697e0e95626df3ae325d39382eb3b35af GIT binary patch literal 1400 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 TfXxSh00000NkvXXu0mjfGS)uO delta 1119 zcmV-l1fcu;3G)b$BYy-sNkl8iTMT(#(V) zBn1Npp$7yJL=Q?o)Tb!Or2HaOB!L>ed_Xm6(qqiXQpz5r8A@-1hBA}E9I5%ohIMSs z?wm7c&fIe+;r?MW+_TnRd;Qni`<%7*&_okWoZP5+?NiL{{XB5x`B5J`qK`~0;T|8Ss)4%7=S>)#so6DP_)yF@Q`=0Js)d158fg7`DfY zz}3KX7xjI>ynl><1^Eu(u&p-^mvX8^zF%umgL-}7%ts%1oBjepbInxS*5Wo1>A)gDR9BwZ%y zG^c-Ml$G<#WWYzZ*P>Jwy)G+Z)81)z_5#aOY-Viie6&PTe`sRaaL`hb-TE3E2{Z|e zG@1nJh*G}%p9mbXvSUaX2?AN~`@L4OF9UWL{Vt3Ifzdg#Bf#TU7#=KQEdCNV0vigf z@mo^`>*Vdp2Iu$0^QxXM5c5 z&^ymavAsN+x3mfZi>%4dTR4z>J%dcRKDjBw_UV##I^92_K-GmnJmyI{=H`BAsUIWh zm46fh4-R5)rrlH|_(al~!yyow`?(nxPQma#H}7zC_(J2p$;qED7?g)1(oYv5u*Xf< z;11RnOM7RuNFer7w9s7{+akQVx-xF+(#BYOlO_1mf|yHSvzrhO~^pPlSmN$1tk`DEN1`LHsNKzJ3tmg0DL z{oNs{)fs-$$^VkHumb0?k6f2qEBniD6V8(Kh@@{MeJ5#!q^T);f0r}*R7K7w;}S`~ z+FGd>zMeob#@I+RI9k#XM_@t41n_SPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGsYygZRA>e5noCaY&@11TnF$N5<0ymO~FZ|BX zHQX+`p}MDs853`E=&I^_&%IS$@1a!s$E93!{3|Of;@k=LMv#lS2n*$Mc|`>+BLv(A zPJ(OTBUlD$qIc4fu58+xRuP;Z1UJDV$SblHNAH$Z1ZQ2~2KWVvlAjQbgU+lK2_6HG zOZObO2zDemQa_&pFM#XwdP>}Q*hl&}7zSOymn8}=gDZuO6@u>okAN@VDNujz2bmfJ z{ej3<9KJlHpu?|St~^8)@E%zCO=c2w=OQ&ma8x3$KRm6xBU2wg1Qjq3tW1+RVqz#H z31=S=w-x!$R|yQ&ZTyyhN!ji~B2FL?H;@l2`V!f?69#4A_xZb&wI}#3v`9X{Jzzy+ zB6y6IP`+TTNvl;F9=vM_`2w$i70rN~3l^H^myD(QWy88nT14^*?3nmQe)Dw#B`s1; zG}{zDVAF#3%kiy&ZD*%(UniDFS=$4pF0B;qYV9A*oh@YGwmv^C~!5 z^zFmE=Q&mZ?_H^7W*|Q>ldm?A>q7qL@w=3Gr%IjO~J zEAYg<<*EKw*JjRe6_Ff(#Gb|;J5pPL=M;W*FL<6Y>1HQwEQO_YK zyPB>k2Bfh4?1*@N3NT4j!L|o%exQ*xioHO`HYbybtO11(j5rdWmjX-@Rj|Edcof@# zL`7GK!niTep}x<(%lgFjn2^=Z>0_%qS9_=*bMI207<2+%VK~v%Ml-He_TX11IwxV* zDykV4=bcsb-0F+1?fCUCw$7%uy8i-W9pQAHXGPb2?Y?f&d3-4N`_?h(2O!(Jgn=%1 zb+Kwit(M)x+seN?*OD3GlNc62QX$O*`jIc`2L~N6boHTSeimrIF35-WR(pZ{k^t= zS2pV}X)Sp`I(Q5OaMe@@Eb*T`+%d4G_&-r9{RKN7_of&>Bk%wK002ovPDHLkV1iLt BNT>h+ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_inputarrow.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_inputarrow.png index 7bfde230fe6d62c090b83cd9aebeeac4bd26a90b..6a6214fb7834a64968e557b6ba8f1f0c3bd28d69 100644 GIT binary patch delta 428 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 B4}Jgu literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_invite_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_invite_14.png new file mode 100644 index 0000000000000000000000000000000000000000..e25e36a037ca5ed90b5aa6bd7e7184d99d1039a0 GIT binary patch literal 1585 zcmV-12G043P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NHn@L1LRA>e5m|KWdRT#(5Xlh6r zDC9$o6-7}R(ZwDje3{NF02q5rYbXq#|DmOj2K@q9Dp3#~vcYdgx|_puq%! zmtwM^(!iqZ!O+IXvp5yf32miCawZ8kh?Y&Q}c9AA`20F@y9~~X- zLU%Q|1I#aLS5j{Ty#eqI*wWF_aipYOu^Nd_0k42_;6l)8g7g+=R#F3JPhW_vqZpd3 z#br{=-9k9I5+{RTMsRk5b}RTP^jpO=M=ZF`B}x;~A*h@&C6 z4h)z=)E=U*8*C^Vx9;08c3|tS89QSNv=7$>8BFCB!1?9){0v-`;d=q&8#81Y?g3|j zZl20ibO!PqKZDSc{}p}(SP1mA*46827aeV}o52fC@F){;o9nlh#d+oyLiP(VTI3@$ zI2ZH>;RY`g&-kVwQ?uF2={L27Dy;xPW)oBoInf{ovVWW%|D~^k+6^|qYo%i9a|7q~ zY^iz%{8g9ggT#L$$!A@np7r*_UeGLGX$445L63%D^I4I?CuWq`{jUFmqGqCby7a=7R^B-Z-~`u8`1a+O>giPeahmYt$m5^A0dN3$xN>)-pB~Y&Rv^5wOJM zzGb|rYt-8|@Hi_|z;yIJ0!B)%*POx603Vo;Rv#;mm^^Ng`2t>~e@(2D+s9xISO-1^ zM}bkpyO23T;Zm^66hr$Q?JTg{jprsWf9U!G%=944?G`VyMX3|~2-4`gOvCZO(=h6b z41ah1f8iUpm-mUh2dKz2(o13fYM}6Snxz~2B+m&l{Q4Ed~Q1CfyR5+r*rpqltJkHm0vF zwA}Q3%XsMmmPU>n3Xo%TbY;E-bgOvMLu@k`+j>5UVAqB0XKxUA9o~7dzV(r{wgBhY zKjeH~gLLe5K?TnQx|!nb$Iz&XUS>YiTI8)S0H@CbPie`$g~DoZ#484V#EoesGmAjh z+5&JGCqK;CDv);NGMpe?!D~S;@I_}9fnMbT8t!?Vtp}czygt^oRXTu@I|E{(VTBkhGP!H}Y4yfCmZUDG?BX z{-`oi^7Vu219~1EeFNkYI&l%(y#eyv0uo7j!xVmJ7#pJP=7VN;icVq(osq;qN(Y_S z8D0bQp|2p_3-P!B5)%pe4?V$YSMw#p4Yb7 jn3jC2177r3Wd{BODUzg;JF&&t00000NkvXXu0mjf14iFV literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_invite_hw.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_invite_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..234fc6300463e814aff81978fb299b6df750bda8 GIT binary patch literal 1376 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_invited.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_invited.png index d37f1d35b70911625f5f02acf21d3714567b5210..b75aba2439aed34adba8cc6eda28c6c78a77c709 100644 GIT binary patch delta 931 zcmV;U16=(52$l$tfq#HWL_t(&1?`wkYZO5chO>g2Ks<;NF^8D=af#+b@g%tz58_4d zdi0_f{Q;u6MgN3?2u2UaOJYtMP%jew1BnWX#zTULCL)4apIWDv+RDyO_sq^F;1s;u z)!kKZRrhSq)J$7jA;k{--#buh_43Q*atARFf$k{wBJF&sRDb#v^*3ij;-|o4unMfm z*d!R;blH>C9`FSC$~1;un_?j(as+(z&0N`iKtH^piy#5nd7J!q#%_Qi&>3Mk8k0FK zvWShl5(J;o*`PlK`{H($xnA%LXqk?)&vl#(($qGt)C`W30g2@5ZG89UN^HEKJJ`l&T zC2k_axO>7nig!*4Xx|!J%UPYyV*%wVdwM1Dz&q+Z7VyQ9N9_UA_vu<6sh8?X9t)T! z(oYrboYH;Ov&wK4eL?l}S2=Xeyp2A}C1aAj2yTO68-IYYEDy3-{I#64{F(c(-&7Ia z*CS-!R-kE0iK%+rnZ``=vW~a~G%Dt#fZGv4^f92HzI4mYFXkZCJ1;>b=!v);VNS|v zNhDOnr@7@cgySX)Nq!_Qc{h$t7qEXPLsioad!dQQrQo{eg4&k3dOM$(yyk&p6v%6% zu9N6iM1SfXnF~L#|NN`J<2tD5%%s|R%j5d+wSz%$I>LaAx%uE0XZt2pT?BKPcRo0w zPzRD60rn0cyWZ5D56#QhzEU*FB5;@ioiUCpjGy7#&C8hinql~MF>ny<1>0&S{X4%g zmAYzyxL*_9WD&q#35F_Ti3b)tc^$j}UVuNKS$`s2&%t@nxJt#qF2eU#xgX!xAa9u? zKwrbFfk8jG6QRGMF_YLG2g{&UvP7U`NqKqAL(~mEo6Mzu3G{)jUPN__#5dx&OuGoQ ze4-=gE1N*_P_v@n2RpN|uJ;yBFafkYSZ^6H0+SSBYl>06=QKWK0sPifxWO!NBC!Xp zoqu;9=Ua}6Rt|fww{uEEV#wc8$_^*hhi)(>3~w9@?cHF4ln%tYr{d0Kc_;2sIlNMO z-l~q(lVt(&v~{xVloqs0D#q?C3(yC4O_AoU>hDgaEDMm&9Zt0F#`0>VE_0GTE(hr< z_y(px+Jem`;@uK!JCL_FiG9V}u`n!lpd8qNVh3{Bfxn4et`EcC+oAvf002ovPDHLk FV1jxG%envn delta 1035 zcmV+m1oZos2>l3nKdgb*%ipHKz0SDa|IGpnS6YFd^P#%z<&;~3@iWxpcgy>jfq6! z730hj3NHuOz+d1ejS!a4m<}jrGwAcH+PXe~y){S^vHpc9Vgp4y1qG^@U+8zibMO_E zf=!?n6ayo_QMU1yYBG)~9VxyPd;nUWV61Q}1piX-K$FqGfJJWn*nK3vXccoF+xHiT zbHu2e4%X$1`vn$gx2hv*k4oIjLq&2B+8KQeCN zEYhtf!fC+PH`5^Yc6cu}FNjVoc`tT*Cw@r0P=9BpiF^dC16t%Iq{A+6zA52=^=3OOpvWp_H20Op30~V=gT5MQvb2RjPI6&bX@cXgz!)Zl+y8 zw$XMF=&M8cEY2C^k*^jlpdTD?Ud>wB709l@f42hv0DQyrTC7O2hX4Qo07*qoL6gB0F2&*5QUU@G@?aSX{| zeH-bk&*CU>_u$D#DnfaB77B`XV)o7g?C{rZ-P@1DF3`FiE`s&%h^zVclfQ!Kecn>j8vXF~1${G*9t63n|A4c-d6 zO+T>kdFA^=j{Ql^4~!4U3T(aGWbsq`;7qpG$9f9#rbUlVO2n$wUp==y#9DAsy|CHb z6m{=MjbG*;iJLP;Ro(a44Tdn6&b5l!=2MQ|jgoEN?f&O=)X&n}hbtSIB36_-6o_~J zkJR3ub3a5(NoHnr$ANUeVwSpzNqg8PEai*nW7-t9`fl0sgz&d97XuIYxBWgaU-@qP z9QJhuvuhXr`=G>@!(7(De;`cwzL2w3&65o*3*~pP|MNPnIAPxc&y3Xeg=>x*C)ji( zY^aB7 z_DI@ddBqYgQC*GI%qbi5btEOtqjY}SEhx0ymQ;R$CTo9V^<9uN zrz821dP0@Z>EHX_dWG0*yqeH7kNKK%ShLFAMG)_5-yA(@gU2hAO=4S^Y1D^-9l?wY#~F%q_e+e|5vGi95d5M>d+D zO5#7c&86?*RSA}RfBt>i=4Ez<TGgoR6|4EEspJT_w!%Ysr+}HNgo^ zrrXwde@nkotMyh%Pg3XLk9$Q2-q^9HM)J<%HIXd!X1?9<_U%{QPFL;?R~G6jUKMy! z_NABM6MK7@;njVPyK1cLn1P(1=PoNO&y$$msFLmdKI;Vst E0CjCfPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NHY)M2xRA>e5nahtOvADFY(3r``TMK->trPdU~3XHknE)ryk#_ zQ|I(~-P5hs5-p9uP$SSDsYjuPXRv%31ga_{W03qkO;JZhuXAWr?IG z;N9>HJSeHoE`NC9Kko&Nu7&r*f5XF)Vobwp7ri4iG6wI2FT!=yWOr;6<~Kk);IT#N z2!Y4pFW^k)F}w;t1N$#>3jHqlZuomRNSLSK*I?Dn^f`v{%i0M7ZiY{$mi|KD3*V&1 zC_gg4Mss5%f!u**3;Lj_vkHScuUJlMOPj**L?9)9)_Vcy8}>^S`&jWY$|EDani_Fk}pPf ztAmg`o`1B<_;hYKJ>vc%o;s0#i5(d?r%nLv^S<3_&R0e&0$@J?2OSN2Qwi``fGPLa z;jrsh^);alU`-vi)~3L4kamc2!R8A1P6Uwhx*?a(k_G0KgWZ3OYx* zoE|q4{!ao-d7u%P9ANzr`#8BPD%fk_^Kg*o*vcK)5GcySMEc$II&rlbPnq0LJZS)Z z{C_kOIb6hf*Z`FsF?XPQF)P6HNyyKJU#*dTqGNlm9W|9bmr93o2i&Poz<%T%@SnL~ zy$c5L7-p`Bo{Q($Glksgl`7Fp@zEQk1CE_f2Y#|PJ;$C7_#xA_N=@RJIsP!YpXgYR z(XXETo?}l38hhFh*{8y_4VXH!c9tNI5r4K^`lx%3Jst3A;|n?m3|(7o(0rys9oDB) z_;cwU@Eqstz%4mSjqZ&vW(Pc%IXj?7r=a^d^_GXyP@XaSjVAXK#|_{y%>1ud^+Xfr{wn}jB;4!xOvM|9EbJ1=cGrcaylWa zQOCU1)Bw1*;h+-;ZCPMe!U^TWKJ#mJAZOSYKDrl*daA1!{(yzr zeJr~?$wwjt)pW{hLXGKR_jUMPDMs6@?h|I0_ztW(>PRNFG2FC?hI2_^Eo|*hKH8`y z`4o}-VZqs6Rxm*^x5EotuxdHkxpW#?15d-A80vyZG4{dpf4rS5xj}q1+JSWr9ES%b z)p-T(4AN%CmfKi%462ie7M&iQ^lq~b);%e<+q1~J$Lpr6Qh#)pS7P)fS{i{XH3I(t X2l;=o6O0eV00000NkvXXu0mjf9dy&Y delta 1437 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 Hu0mjfpOFV& literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_accounts.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_accounts.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc50195aa4edc4f1056db796ddab44bbdc0715f GIT binary patch literal 1102 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 Bz1#o* literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_links.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_links.png new file mode 100644 index 0000000000000000000000000000000000000000..309290a9eaaa11cf9789171fb3afc07b4f8d4742 GIT binary patch literal 1161 zcmV;41a|w0P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF^GQTORA>e5na@j9Q546Wj1~n- zxT&SpO3KJ;XA7lPg+CyIvKD4VtB8I;7>F*jAM`gwwhxL{1rlhR3Npe#+uFiKwkZ0= z^f``C?>lquoBQ54(?E0J>wEXy^W%H(+;`u(&xVG&)Mw!To`GDohM&*p+sSnd>;~Jw zRl_m-HV@4cN^`wcD+Li=uKnO=7_s3HQ!T~?) zmw1yURw^G7_kn3J3A$4`JI46RaCSao1)kw=}MRi?2f{Zb5Sc^ESaX%NAxZKeZ#edL9h zwZ>P&(myIjN^YzggxugfpaMkA$x{9pCXtso7kn}3ljZYSjFjy0`4s7KJP53kSe8(C zk%Ob4zZCghU-T0-*DyzI-FsK@aI(2}%#u4&_yb};#f5Potfk_{w$zmJ@wE6(z9 z$(0{bpLNBs8O*y5+>cwfmC$W8g39MUS2jVYiR$pHtBmfYYNUT3?ejp&-Dl{s6FK8}%Ovw*0$+Ja$v!VzWxthoU3DbU z4>GF!M3yA@>GD9f%G8IVRJlpe3oIE+6Nmt3K(x2J@rKgG$z)45`NVCBd~`}&PV`GX zZ!hcaG*D2tP?>AeqbHBM6gB0F2&*1?oXY+J%49Q@9 zJHt9dG*F;z^T&%UEX+z=PF)X}b&s$s9&=aFSk&63l%y!u)f$nZD|V}c!z+L#uqk1= zg4lM!BTfOAG=FHgY&6*C;j`$N)8gy-i)J4;dj96-=IUu8)*p(?pP#Y+Z~r`PbNTj# z3%jz|SIKJBvcLNJ%d0@xhCTkEa)F%5^gOk01vcq}k{`G;J~lr2reo{9`sj=q`xox? zds0`tZ@)>ho|8nE1AjqpAlLVuU-;sh1r6)ZUj4bmN-`RCsG9G&qCc5caevi29y_=2CSNQW*jjngUc{YS7Po4AH{e6e0@muMNG^J@%vWrOWa<;VCE#n>`;Tb|vs+2p>9 z_6z3JBMM5{bI$G*yHsLWAz#s?_-lRX*C{*uo_ROed~5AUoV6|0Z0gj86Gk64KHz+E zaG&jJ@%L3nrZt~u<^9-eCwnigrn93=)Z~C!JpVnLp7U({+!7CZw|D+`d0l(p(jTGh z*SfFQd4Doi3{R13h_&x}^e|?X@RN(3&ifbpFemI2p4rW|(*H?2Pxi8sN+6$Ae0#$; zo{wFBtTwRnFke4m+b~(++3bcrk{1?Df3jzX;PG6CJTJXM{b#JdkF@T&zcaTWSXqC6 z#B!FMWeVoYx2*70Y_m9cP_w!F^^>jk%MGR1lrrq}y!j}PbP0l+XkK3%Y)q literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_link.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_link.png index 4c3724711da57602dcd85f6d816a33530a3b5d1d..135cbdf5d2759a39ab34576d82cff0c5498ff7cc 100644 GIT binary patch delta 963 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_list.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_list.png index 020aa7a2da2f80f014b2d53d18064f36fbc260ce..2c4d4a9a8cfcf1710c1d9cf58b702d502bc9bc41 100644 GIT binary patch delta 452 zcmaFLc#nC4NGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mmUEMP{kK?-l1=kNfPd3d@whGek5ong&)$bhGfGs&T8tqtFS1ClJydJ?6-y;s8bheGMzQ zVntl#zi(Of?)Sy2yq=qNe{wp`8#wo0nc5J=xZ>S`!skWbc1&9!d$8Y!93eEdF=(y+T7q8_@qk3XS$k0aw}GPNa58ZsI?4 zfn7{0*p$)4@aBQHhO=jFR{t$pn4(>{@n~_bYR-4}^z4kT2_GdxXC&CRg`e<>zwBqt zIe~$5!hzE)SNwGR9pon{PnGx=l((hl3X4MAt}jBx3oNTQoj!O-p!aK9_j50W#^yJz zNfPhnS1UYbo|0}WxWa$o(JD2STUWTI9QvqL`qA=6nbf0X%NXs6AG~0G|DaO99y0aV Up3z>% delta 201 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 delta 1585 zcmV-12G04X4BHHlBrybMK}|sb0I`n?{9y$E001~;SV?A0O#mtY000O80f%V-1ONa4 z0RR918UO$Q0007!UL1e;|4udl00quTL_t(&1?`z@h*eb-$7i(6oKPzx(|i;$VMQ-c zODD@HON*gID5WUtQ`!4r5tS5SghXE&BPpA*QkftEDG6Z^!ai7OPtyz<8%Jtttgx&} zoqqqBb1v(yv(G)}-Wg{KTJUGDz4m{tz4p0#pR>-nRaO6SsXl)k`FC}79Yfs7;0$m) zI1U^DZD3E-ep+2!{R{fPLr8iocnE9(2SJu}Lf8QA0OJO16-<6Qcnjo78d^}~`zjdU zZwq0v8n7H30DUEY5@;D1o_8S?odG5|j|tX*+LVdfv2OyKK`ZD0M}RTlB%re~3)Fy+ ze2uZ5GxAMnuvdRJlD``0N_o*XSOaE(L0OZ)849ifP2dpl(t+W!tT<(j6L22T;q&qy zhO^2FX2|$X2F<{Ww&yj5TDeM~X}~AHAKRkJqZWG->u%uB)IMxy7ce zGri1EnRH@m3+}ZOp??QX$aGF4;JnTS)K$@gs-(af1jc`WDPSrX2L_jPVi3-B@E5T1 zPL^MAoCvdRlt{lWNREtf>cC6j=ZJ5cpXfA#X&EsVTBk_AsFY7|49BlrpcO$PMtHi~ zx)bG_Fc zr^*D0?$v)cg}B(qgLdFWKAXX6@Mffk?)g75HX$YUlZ;te9pa_h@Ei;-0h7{5j6Dpj zD9KkqqPD>{0jvjJKEaT90Ad>j?5$OIza!IfsmM;iIUp8IwlFIYoJFyNX>SSnF}~4o zq^b<*TOsIt&;TyZ8yT)Yq&q^s@a_dxo(b`C*@%BK99#iT&E-&n6vf(2YvoMu!r%p# zfc{3zN$k0JAk^ZhO7csv9&D$7eTbLWMz#4HTvfGJX4p=ow>g`t+HNUp0eI*xbaIbt zcX_-x(tFc<_53zHCK>pT2OU3xqb~p>lRuI=g2C&RXLmwa)s`SMobF5Rlif1)oXSUw41} zWj1a?hpa7OWov>IFyNpoYef&ef-o@C4jR1?JuP{?hH7hBsVxLW2{}%*1oU05pVsxf zQylRN`YIh_X+^n#ht$pBP;87_GCm4@Ik30oCb&ffUuZ84iGxI~o`QL#(~*=wL72Fm zq^4k)3$}rE*!0CZO>{dx-wf_Yf6#yQyVcMFJg3k4B)pwqPiF;Wp^w73)$x|%-{NfD z1(~-ESf9kTU35tAcS)%FUFvMz-G2QALJ7n+lGp2JBbXW6qIM_k0{q%K=-?k)Nvyu|$-RX%A<2q=BbWhN jKm*&SgZ6)^^a}g~IV=ZWwe)-M00000NkvXXu0mjf`1Ix$ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_location_alert2.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_location_alert2.png index 2c556f1b4eb770b4585d5597f6b0f7572849dcbb..5024e7051d223b7b1be0ebb95f4fadd8b4ebc56d 100644 GIT binary patch delta 1021 zcmVe5nLB7yK@^6wi7x`d5EU&H z8ynFSL4$>YXnd7IY%HvNL@Wfc(5NVaAU1-PT3Sg!u+qYy5)lQHCWVNFh-nlQjf#SK z7{3#LcEY*i-kI4uvrCFS@aLYHIrE?M&%K%Z*ruk2HC7;M1xit~J(Fi4k%Vww*9!1Y7U2n=lUf9PEnox~`;1e&vmi=Ikn~KzCpSxN`+`@r zXdu~Ai};`v+$vgERr6Acfa|srFjQ3`F~O-sz;jj!cpp=fcP@!`>7W!M;E?AhW8XD@ za-S?8L9ZsJ9rZuK{KLRl%>{fR(U;k`#z!O1iLW;DkiD7h~xr9RXs)2L_h%%6Y6xzi_|vNPUk{g0^fkK z<34r*y<03X>wtWBf?GTE9tA!mR&A!p*0Nm4#O&Y=tMhG@VdJr_PZ z8wpQ{h!ez_|A{MEhALYS^;yLa(vI4_m>(jdlenE#mYWTSU^S2(!PqC9mD#9bEqJ^l zLYSSO*GVET**6r?0RA)8uGW2j%}s9Zg+)X_FbFm)qG9|!<(r}EF5r?tKc~}-wxmz7 zUP+X@0?3zwl$KP4^AZw;RK9`3HP8hXffP0g$ssP2xh;}BwY{8DRPEys5y1H^*2fV& zP66^T=7cMWLqzR9#hZdiE??SwzY+W*MqY+;Ek{Iur3q0tB%6?HdYZmuyLP|T9w2VY z>dQ3CTd4hJ_caq#s|KsL7~BJu>^_}KLUR)GW3i32y|K>JJ%s75U^B0Y+))=MjNG4lAOUDuzrw7`x*PpcbXR#rn ztiW3j5pNOLjeJ97>Oq#8d=! zlL5lM;g2YfmL`803P2KT5$Cae3hsdx7zdld1ULhp04<+T><)1#Jx&r+5urrHnFhNAsGsiu?SfSS6+v5XB#K$T{pAS?!+X)PoIfnG5*Q6Bwlhz z>!!H~9OYoUay6Nh)sbwne?wv_f*^8ra^=32N3tE+rrdvwv|j?#%}yu9ZyTu15FbeqlQ>Ka9(u~YSf-IN0Qo+u%*M5d%76vHj5AMBCw z2ygsB%4`Klf`3s&)&dfXSQs?BmFPK`=hT(Md+Ec*^w@!&ytXd(Vt$DwoqYug0=@0j zqCfQNgx!C4Y)%2W5L7SBlxYPDCfHk7Vhr1pg}YbeD;8(n_Z}o%C?Z3m~A3A zyA~L_om`*F+RWq~;EMMU`v~Av*-H5G_30om>oTXk3ZlL+U~f7TeaXuzNGzWTwcJXH zOOR|UvC%?+gfrM(_Snkv{J2MNQ7vP1NEx_mKLbTzk{+Zj&-wDD;SG4mKK{*bE%gl4Gf>aK b-x>G=--brUoByR*00000NkvXXu0mjfs(zeG diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_log.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_log.png new file mode 100644 index 0000000000000000000000000000000000000000..138ed4af0a01edcc51cef6e52bdd0ba44e27d54d GIT binary patch literal 971 zcmV;+12p`JP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFHAzH4RA>e5nZIjPK@i9DjFKV| z6e1X~&=eLbg84yAEMjRCD-p!b|3DG6iDIGlqP9WnfEI!_B8Wdy1%sZ2X+%*QEfgcD zA)cR+w_$j<`)+UFk9#K>__DJ*Gdthew>S5ztEB<>-}F)#tP09VX5Y~#SltWo0exSG$Qe^7I+ z)|q?;&%hlz*Dq~sNr(Ihs3lIX%&Fuyt=P)lb(+#qMu>P0HdrIeTU;j9I8Q>}OB%#l z0OaM`NWg9tv4~y+D{8F>wVO@%fSqdd*XYCE*NFm70xi=_ti`G%xv7#1T+js2Pk1N5 z`KAhfgI*eWLsD{rMaAQ~vFUN0o+!Ov=`|jmbcRwT&M8;ch;+aPaTTCXyy!dMKuRs> z+?vy>i>rWDhpHj16Xu1rk+^9v7!sd|Sz>;TJHL=v_nHP3z|KPcoL2@vr%Bv` z4x=hpD7edoK7q^e!S3)o;8d@FS18pZ#TZlo_w_q_o=@4gG*eZsP;kK=UqH|mlH;P4 zjxuZ)J)`^}{vp@$cgQ|L1wj53$!0|eM`=o2WMm~Vo$0(?)ZD8I~4fR@?=9)K0#BTG1)&a0rz z1wiB=ke|(c_v*#>639h-lcptmh4EXOgT?mLvKF)y)JAnCTIwgR#4gsxfcz-cOr-BW zYUbo?&s=~ck|G%H`XFV?OXr=002ovPDHLkV1mO9ujl{( literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_map.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_map.png index 64f3b7bc428c824c611b7b99d5d7c9f6ce399dde..79b9f226859928ef20445c938ac6f38a098d2901 100644 GIT binary patch delta 849 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_mask.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_mask.png index 51b53f4f103eeb31920d0e7a9571c25b808c8fd4..d4be58e71fc98fd5beb1e2f483d578e1a8a9c081 100644 GIT binary patch delta 1758 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 ASO5S3 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_media.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_media.png index b512e340c9c1d70b3826d353d3b347173eee1680..3a717a3c8f805cbd7f15bf8a0aada5e3d4091e59 100644 GIT binary patch delta 997 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NFWJyFpRA>e5nZ0UMK@`V#jj2Ry6;l{6SQ>(gA0OkJ3DjNdlh$uIdJxTpE)!4?wzk%EkhoGJOcmq z2-J(JZ#J95*sp@;z+(lz->|KM^YwcDeSu$%oFmvTgX7?#0^cocufS*I+$r#jn`meZ zd<~X?ZJcM~8Gmakeir;vCLz9S;8-eWR8PP#ShjdVTJW9UGht$M&+pVUafYvr1 zG)eUfY};RBMI4MN(P?4UaJDHXlR5Za-|h>}Uqs*V5Hy$g0h=VJpS43jFQ13e?CxRB zGd(HEM}I&q%&NkA*a(T?+ER+eD0ktrz0@uUjBxzJhM2u><7UugcnLw=| z7r;%h7yQ6s9qcOJH-=4}kdJ(Of!dr0yH>V7U#58k@(A=80scVx6EA{xGlCd}U9|dC zHd1M^-Ecng?FDL69}sQ+%L9ShfLGnaHo_LkrGMh9fIg$igMzS~mP~*qva+WKwzz*b zk)@Ur+K?Z1z0(H#F4$`+F^SJj7jxQCORVl5hL_eD;kA^w<@86Os_CJViwQ&d*bL{3 zV(&dG{?jH#o$df@gTK;YObGZbnYc$WH@~@=HO310>5iQKd!RYe91?rvGYxA7Dg7TMqE=eYN1o8+B_z3(0V7jYN TBwr?K00000NkvXXu0mjfgn-I1 delta 982 zcmV;{11bFa2kQrrBYy+3Nkl~9UVb;!vrMFk<_JX=##Y0*AJDol6ouJ?3OgwbZQoX>Aqqe z3`klWaDI`bJ2h>dbv}iB9TVZO-v8kFf^#p^lT295%E zN^ClZS9*Do_kU@7iT)!qpPV=oL>1XqOdxpJnl1`X9$3ni2 zig2(KwkOe3176O}qH-RY$-fq}*0bc>XMs#KX8@#>w z341OdIDY}`1AZWq52Oeb7+W%53b=88KcQ1#l!;7Z7zF-#%-LZOcqR}cFyc3|)UYTp zK126zh4sCaIfRm7e99@e7i{*KQEC!j@RRsU;9^8)7O>IVo0qWnH}Ea67x+G*`#Aiv z_pziKHI}_!B)uG1MrTU8Si|1U;-H`kf#s6^s(;Z~fjt2NyM|%!s`Dx2YitO)gnY7> zT>`$_hXQ4I4_N2FFY~qs{juK$*dNJAz+HLQ z)ajS>ocT7v4}}8nXWBe$>YNVw8e2vu8967RcNk~;Ak;4r-7@q?d>TSdQlELA_e5aZ zZhw;cXA%v8r;VJXJ~u?Rp>N2peU}?E4H~&pQh&+FFJ>n83ys{@=A@H*Bf2rT0P>}X zPeX|9#O`L~9WT3p?s&|AN2gEz3v~PF)Dm#J=xqP|8Sq-0PCMLT?h^B^D}(fZkTk9B zXuAsBCC2N4U3G!qq3ht3^Qj5}S7u8(UQe;HKZ*oAQa+T_Q_<$vl3uBs)H~Ln0B^UQ z@3-T&x#a6k^v^PL$yYYFdd(%@!}*ha$=9GkgAoGYU+8`AG@hoe`v3p{07*qoM6N<$ Ef)Uc`uK)l5 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_mention.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_mention.png index 8a813cc720e65382dc9156a738a6d3d8227cfdc4..376c68b7ac599e3b6b425e870c5c5a34c97b8daf 100644 GIT binary patch delta 1406 zcmV-^1%dk73XuztB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z000F0Nkl29-rYBw`eWQ>ej2ft99ajU;Ay8SV7@k9(c@&bRkkv(KK>IMDgv z$6o8Zt;=3}?X}P8=x9rO2L9hO(AkRN*J`!n$#Wfa!4#OBA^i^64%^@dSOuSVc6J`( zdgO#okA-{TV}CdR&B*UKFN4dD$OvfoCio6oAuCC8Zq zxrp5`3ACiNw626xz{^1tFTg^UR=+p4q)z9r0Nr{o8&Es~8eCHF83QxnS=a?$R->4h zOj5;2(s|(5`OoO?fiV?xP9*j@*aucNQMsT>&cYay-G5=TXXTf8@`D7)%672Xp-xepIA4V z0(u<-?2^z@8)saiMf|RJv72Mg_}vdd_80m2?aA&oeVhz;6$PPt4D3m^yX+|vzxRo? zvwt~-9!`j~qYt1UN8^_}=%ogruc(;JGKPLS^_HoZDK0Tinux1S-4=Buw_+!FK%W|b z54MTy?h(67*58*ub&46T9;$v4ha5mHME=KDyZqFYK6Z*^uTvi5>K*Y;jUC}h_?uAUo!y?FSMDI^ws{lNvn^*R&fz)ot_!7fZF)9cjn+$KR30FcSF}*5#!;UE(tihe z#@eH0ycdNCu0tK>9>B*gC55W4!`z#o8T=6X!29iUI{iwa!(TT%4SzroeafB}?X)%E zsE-*di>=+4aeN&7q0Yt^m3O05J1-U)3v|!>c9V4y=m;D{C&JTH0oc2s><7(Sd1T)r$(FB-83k&;zWjC<^=#(T9qHK>CnTK|xSNQXk4MeaMWW=mAn!ti-|_A(3U7 zXo7lulxSt?)lR>aXJ7wk?Y-yDT#r|wv*5?S+EOn3-rP|_!u6A)Gf3nEt-cx?d=vpnGVtOH3RJ#MRAOu z3-&a!$_UBBiJKyPguy;%A>Z&!)G zY=847Cp^pbLw8eXG`9mDz+MUP2PZ?dKeaQ6wx620C-fGVJ6gK?B6mtaG~Z-wyR>sZ zzeu8{kMVW<7m#@IAMP{xK%H|sO?=!Eag1RO>op-m+2$?Tk>Y`Eg~Jpw9n_+q%n~55 zSHs^#SoJpgm&980kyK&$$2wiIp8iJBd-?}m1KrC`JI6_)E_(kU3n>;wVjK)U z6$EU5NNFM;!c`LVNhD}G&>RnIMQhEfO9>6XUH8SnG|&g$T{@m^6Es`0+B?DMoS3nz zK$jjCT6QtF1FgQU_R)UXa zk*&cK-T%|oH@yVdyRTZ|7YKx-VUY%8+V+S1k>NiF=EAqI2^NFt{R1zG%{mCSGo@x{p*njb0^H%L^I@K5Wos`a zxp#*?#+I^V-pqDrjRUbyhzr1f>%mpYY^gG3XsegKv2%Oi*+VMz&kgQUc0j+RtlUgZ zgUU%L)AHC$&Gm38*ljkDd$Y6Y)(!VEjclrQtaAoBXJ8O#;9p)fldeYF3V8qk002ov JPDHLkV1lEslso_c diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_message.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_message.png index b97215aea1f7649dc08e3abbfbef8176a8da878f..29a5fa84e75cc3aa3ee8e56035c9ef004c565f2d 100644 GIT binary patch delta 1244 zcmV<21S9+I2=EDzB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z000D9NklDkd>L@>ANsBd?ldv14cPjAnv zr>C}h1?m;3SD;>j3M}|I?P5bBxwE2=O!O)qA!i#*p&%(EaL!hffRBzISkXd2;+ni%c#_O>y!lnY1O z=}!|E-`7OL-EH`CS0i zK^neI(y+18p#5M3mGF$8$<=kf{|LSU?VDmiLpNS=#Ptsenr7`Ze@icjpDVYH_z?JM zHdX$g-{{gR-gMBXr?!|$b1*mYyH)NWnSSunD`!=^kHGv+nRhWMlJ|q7;1|%XiF*`$ zR&@-Gssc8i0j;5~myM!-aJ;Z_wO_A5y#n_8L% delta 1113 zcmV-f1g87&3GN7xB!2{FK}|sb0I`n?{9y$E00bpTL_t(&1?`#dYfW(+$M2oZYGmTU z@*|}zVTf#{wAyNt6q!6Bx1@w9nG`847A=o>;EA;2i9GNZkRS2DuhL>f+Del7H8ZnW z*Xxt>z5ASR-*fLd_l|qZ`P94b=g0f=`Tn@ybI$jin@GeGuYW+i0`UsOD^S1+Bn!y( zrKZ#ANjO%3d0>`@*|Z|>6#CE~CzHuB2^3WrbQRbHE`bjqtn@?d0-M3qe?AF1tp*+7 zJ1A6!C~yW$&u1c$wh*06rjtG3IG7pG;VAxB;5``dIMZlrzyeU=`RwL1jt+31?KNx% z3$_`2EqDf8@_zd z=BWD>-})%E0=X304}MvlJjHGfOo|wwRwH<9^)ZHhIASS3odSETqGHNckz3}33N_2X zDPYUNygH)F2B24d1bb($VsK=iH-UC=(SzvXD-V&s4S(J+Fe1N1Ypy(BoP@<-&{Uuu z1?zkyhXH2?=mS9_u^o<7p9@Yi_^FEgKwst~1sM>_z&({LYSxt}UJ0%UF{E6ER~a-0 z@e`L{Ldye;+*=otT(nv`vvuTkCIhlX9&&d*xE^?yL)1NK6+M(S2l7<#MJ4s1=USVA-GSGMQwC5|9FX)1HI>Efb)ZLBnI>( zBsc4YO?)-bav-R_>^uFWy&XvO0`TR|q9qj~C#4h6n?mH=P&qwLK7<*HBz3yT)>K8(UAH z7iZc8Xj_yXq~274D)jBj4pN09TqC-M@!9QO<#@q1{HW}4l@+|Nt`xZ=<+{a{+--EX znty<(C&s7e*5JtbM@vy3WO9pps752F(Y5ZOk9*;`&Oy135?976xHalVJ4#3ylH@H( zA7|xgvBcfQA20FJIm~&JNHHia?=hBVn}nBF{NuD4Bm+LHXMis6#0@4M)WVSqySOhj z-fGHw!3Ch@8^$gW>2plbWVN4~(%;0rQh%D_6g>@WxrJk);S}0Zs}Vf1Iw}06-VBVw zN37yv%7uOotTMc)ExB^T_`9D~%%JFKBj^P#d5-fKr~`oyKZ${QFkv6IBJE{5mLtGX z&<29u)JBNC1oF6-Pm6LqDgLKL29XgaQVXsE`P5RV3{gOSk-R?cW(JjyLZ>yL4N}M( zll}~XnN|9Uc7ax4ALAnpCDInkR+)iJAubO)`7pZxR0G*MvZdZB^r4r=9~=xMmUso? f6^K{hKVO007~B7ZxSsNi00000NkvXXu0mjfru`7g diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_mini_customize.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_mini_customize.png new file mode 100644 index 0000000000000000000000000000000000000000..997e453249dc71ebf3d7537568b203f36128c853 GIT binary patch literal 755 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz07Sip>6gA}f5OZv>fz!dB0;usRa z`F8qV{}4x!qu(1_{FpjhMI2NjqCN<=@V!tt=$523b*@L!@%Y5{w@%3_E&myWGB!?N z=rj@Nov`6so10=}{qv2}_sFK-KUBT>LcyfXp9`PgGk$;eOzq~@L$byIcQe+!?MPT|QGUqi&C0DeCARnewG^>C zAYZ6^`@Eu6^v2b;Vow93bl%JtN_Gyp@3CIf_sT}wqFa@-&x<@@)N#~x)bGClz$klI$mE5@xdXQ?+p2gwGzI4#uHu;A@u+mioFfXa zGFMjcReuPH5fxy(fBc2^=V;HHbH4F>PhDmnu$5(|(v^ZF%iV@&57pgZo0>nREso2SYVJD?ZAUAFFI63SAbNv+bDmFZkepNE>|V2~$hH4mS9i~Q?3M2s z@BGkKrY}3OuB7s#6KAhy&G8%D)^F`LyqBH3_w)PG*!6Mdo28C>dQT9oTGZP0S$tl} z5pfRLr|t7aXRm8cbV$f`ijCkc&P(C>pX*fav(Aj^^0GM1slp{&>$ysg-)Lr=JL6kS zlU;g~n6Ki}5T#jPem;Mvydh}gKldwMNAGXoopIr++LpcmRVAzU>lYq*lf1>VcI`rW cWtO~_`Um3H6OY;&SA!Cqr>mdKI;Vst00k#FBme*a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_mini_premiumlock.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_mini_premiumlock.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1c79418c93d05ff803f28414b19d31ae022f1b GIT binary patch literal 503 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_mute.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_mute.png index d959f1e2480540b5ba4a91a0eed086685aaef67c..c5ccbddd13e016fb9ccba111700b06a6cebe0a13 100644 GIT binary patch delta 1477 zcmV;$1v>iU3$zT7fq$M!L_t(&1?`wyh*eb>$LDC76d^QLl-ZgH@gXxv(j? zh9(pYD#!>UC@O;_GAIb2qze`J&_frafh>Y9SkXfdMg?UB#d1cw%w$t(m%(zT-*?*U z^xtdmGy5{fp@;Lq|E%x+t#7Y&)?VlI^mM8F1iDWk^#mp-Cw~`$r@>}0CuOWDkf#@{ z0%zAuQ9g_!J3%1hYd1k`AJ_$yh7eYlpHW3mk`HP%_*zX6cM&)k{FRceC3W#Cs$ki+joH#f`*-nQ6kFgxgKk0f!x1Eo?;5U>Os&_MXDpcib6^eb(W z=r)M{JNQSy>3_8wNRm2|c%U?86F4pcKWG5_)-VzHV}P#Atx2tCq8JkofqOyi@1Q*y z2Ru;9Z32e{U|1dDp9+%?Bf9b~h>x)&pt;@Re5GW99q>RY)qezrO=5f*KKILrKC=SxB=A`Q zJ_1U=AeWGB~x*mp{qfYZPt zb7FMB1Ep3IQzlA`1QxD<=E2`iFs0Yjp3CDsA3O2P}K(PyYZ41 zgCEG9cz-fMI|_e_0!;iY1i?Gtfl{d^2x!{?HhYJhAL@h=-8^9Lhd>@C`yE4hEch72 zbOgo5kkCeC2Ru+JYy#)p2GFkse<#TvXH1>{$ODNj4A<#=nmm@}!J3SA6kY)4Wt?j^ zL9W~{G5YO5=`DoTQ-+@fz7~f!GjqatyEu%(H-9otkpdqFJWy)85;(P6fwQp1SCEIb z9QM1V$T=oO|9c#dnmTY1@uA9O2_`hv&Ii%YtzR3M3{+(^W5*IareH3f~J7gj; zdx9w9gGA-*ZBYVivqepmNUWE(?<4`h76hh4zuq zNMM>H!4H5yU#5&T1(G@7fl}^!0tdS?=zou*-;hrUrQw$XrOS@m3WTB+x6>8G=@WjG z_|cGy@k-(Ufd4?`=KbbAY44kqahd{o9q>RYwGtTYACa-dVFzRD0mIJ*dX;!RGbJ3> zfIxPETb^;6hJt(!c%T$F(TmaUUwYcu<#C+`!P^V3Cw7{TZU`K2M(8lu4aQA~=zj>Z zo!8H^%pXR!wjzZc#&=TmS-VzjzT@DFe7M9qM6{ND|#Dao$D z_y3onn8V)z50p|Xp;>SmR7d!=YESVP?HABJU>sDTO{qi$0*M{)Kq=D%#;eo;eo#}V zwvZZd>_c7!mV(w_fbfCrra1ugt$%q3%epN%6php<+)nsdjTe$!`x(!p##mAAQg)Kt z|2ThwKoc-Gl?qOr@OQuirPfNIv>!5Cfc-AkH*}RU?R`mlH8>0c+39sd`-rRse+N8J zYBiCK=&**W{lLD=f&PNIHm?kN+tYi%DP@2&u9@NV4wzb{|2SsmNEcfr4q*;gE1EnWIlSh4|>SJ0thkv$c62v&*L7>cU z=%O6cvQzagU{5+GJJU}rlRg|j2X+Hnz04J&?VGqv@-jXYU5uX{srC{Y2D^BZzQfq1 f?i2VwJb`}zYRFtHyx-?l00000NkvXXu0mjfHYL5? delta 1395 zcmV-(1&sQ%4C4!sfqzX&L_t(&1?`zjh*o77$7i}*V5TNWBuY&dR8Y~7)h3%s$ZFHY zhN7YbiD)FEvPIE_7KY763R)CJHwdFukz|-IxI&qp!1(z19bgCe5P!_f8EXpUnFX!^=hRG5 zK8zyUK+q^m?IDPr4>kfPQ%(!R|SJow-bK4irazH z%V|-Jx^;pck{w|h_#~9cstYoh<|!=`TxtmX)+UADKt3)lgsy3T@WHkSC{9=3=`g~| z@T|P@WasGi%2o$|NL5=>f8udV>E2g7j>e+p!i7I`Uouzk{G>vV;>F zf@GBj$ZFm~oUVS*+ieHHLr0;`;*_>V5Qf@A5ZiVDYxp30 zy)ym?>wmBZAlDj#xRwK;9|HdX(Tm`uq~08K2V~4>joV{@%fp(jZ?g7-)0>=8pszdx zG3^F;6`RurgxpDn{JJ^pZ0ZT)1Lm+BzUdrKgYc;|1pe&?Sb#143G$rR!#)U{&P^Ni zpUz{wy}d_0K`S1gedw2fFU)=kysn_i+-EtPhi8mdUE&J@uypm~VNu z;t=DO+4&ywY{zyph$c^lzcc)??}z^(WY&dU89)gu3~}rW`&E3O6kZ8R^j?=^WwR|inyq9L&F0?&eXt&x;H%@k>meli_S zjeizbpDh}qMCOakXNU1(&op`Wqzs?}b%)^8xt4Ih?>Ae+VsiuJYy>|6g1*lgYYHSQ z{hY{r_0=NiPnbDT8eX4g^s69fXwr5didNi->xlC|+SSDGid?MP9q)OQ*&06${H5f_ zoNwRkliYI)d;mc!zEN(hZ$>s_QGmdT@pLZGj&k&mPm| zSmM^9&{JBZzWVV0xgq&KI1a~%C0AXQ$2~_8kALA#cn2;TYCy!pXbf+{ZcMFA5D^BxS7K4kyDIg`iaNGv`sX5HH zu1y`=$<)y8^buHOKDpZoAKlV%G97{+q{e3Rug{WvG4K~|y|><5B_sYFcLKY1CFs~M z(<(JO`jUAm@J}Dw?%O*CB}V+)4u64d9(WooO~Se-lKfWSN1WbmZ)#Nm{SvSh=$wz! zE?!Ry|0Y`H?23+N?gswpLx(`qH%)ZkfS`N4ILfv=;eM0G)4=`FS+*Wvz1j;R?>C}g;Qw$1{smZeU7{wjF*X1I002ovPDHLkV1g0! Bvbq2O diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_mute_period.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_mute_period.png index 61e5f32b23254a701d98c5a6b7fc71f49a706833..5ac88f770d2dfd8297d8589fde06d58a968199ca 100644 GIT binary patch delta 1245 zcmV<31S0##3eF0Ufq%G3L_t(&1?`zzh)z)y$LDju-zE1ZG9kG=kkS-Ic#umY-Y7y6 z9>{|zqLg@Y$peK4lm{aBNbZDC$fX&%l^HW4cc0(l?6GD$=X`sA-@UowLuGf`WfsQh#Ip>2!KDb*%+0LhAcM-%+qUl}e>U#($IPqKH0V3~1-eNX$i$ zNhS+#JzsJce=@Je?>;yN9%7GliBmqul^&&jj2g(PpJHX@ZMoq~3PBIhFF-NvTVUie zN&{a`Cx3{im@KOO>J%K}1V=q^LUFxD?-AmfeHVm{z(lYEQ~+DP({UTD0YiK;;lCOf z`GzvqCqC8}vVRnq4juy^IgImwSaJsO83$zYMpk8taUO@UJveQcvuI^CS41UbtS2Z3 zMvkE*bJKySFL-2_Rr>&aJs1xLfLGnang0`(R|eHCPKi04=+85e&$-jFV>!c7M<@PC7xdG8Zi7gV-&d2m&Yk zhk~aT&r-ude~C2~W)>TN=N6X57Sn$0to9{w-NAFk_X)jFilLQT=SpxL+_i8Adn>5# zTzEh#mtXF|MsA@r^CGdFi5~{O7(&`TmP>Lb>lEldl$s# zRHBo)Gk^YKfKzS?`YJ3)io2SJ1ai-p`?ire)q@Erke)Kcv@Qp^>a4B@q9P*nk5x{Y zHH5@+hF=Go*BJP1$l3iGSj0KL@^|-7P54FyeSNL5+)av`s#Zv@#2ls;5TI(^^dD!27j!!k!6edO7+REaDEALoq%5P(4#Sv zT1DcXpudG9*hW5~Y%_*xZBEy%UEu7fl0~XaqD&966-uzjtG>nf+);MUs_PZ-PDJs& z3EHj#_fh;7WhbK6$^2D7%h@yn~q-QaSovKe%n^W?=w0yENNjMqkgWQ2ICVWN! z7ujvc6Vx2Y3yqN{D4lITZySx27 z5$X4<$?M-;JpAmJp6G&Darxk6fBK^kh?6$XWchHU@*?m#Vg^_8 zQImI0ik}4T0rSr}IVQ_L^?G@e$i9JZh@ImwW3S00000NkvXX Hu0mjfz<*nv delta 1238 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_off.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_off.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3c3205db8eeb2800e4bbcb1d19d87faa6f136f GIT binary patch literal 1878 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 G5}E*$h~|U< literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_newphone.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_newphone.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa4c5fa9b7e1f7efb559192e9ea9846b63315fc GIT binary patch literal 1176 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_noise_off.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_noise_off.png index 112c073d8ce3a8621ea4348162b0407435dbe20e..fe961cb4ad5c8a3d52dc54a4ca0d32e55bf7e2f1 100644 GIT binary patch delta 1237 zcmV;`1SLk2-2R^G@PTH2WRK7VUw@5BGw zo->|vzRNr~8y4%o*X6&~I&&`j(?X$pbzgz*D^QawP%4!ktbYk{tx0M8A>=2-);Gul zwXPZQQ|w9P4=2+iM+QLdVno*)8PY2YrRpZB{4e;Ktc>J*EgS~7X648oPqEj7;+cjZ zw+Hf1!0~JDhVmp*yeViP^$_IQEf}s_82aYvC3g-5a}7b>J7M>3KQVVRc@y&tLC%hZ z0p85pM@4yAhkqdcbix21Rn$l&$!Uim?(v}cW3u00Ne>n0rWt}5eS_J9`>qV|AGl{y zBlw0PcKiK+%t(r>$PRI*4>tbIh+nOMDSqSh=%fble<87#z=M-wE3!kJI0U|<(!@G& zf8@5<8sduM?}ON1NY|3M*s9p55;w#gtqy+KilGmSeSd9S1Nfhn7!Q936yxHnVuL&! z;;OIg^rKb?{HfT#k1LLUg~TX)DK5ThHY$Zf_~M6s5e!Sc5q-hiRb$^JF$#BTTum_5 z;)aL{d5kk| zh|N9;eNtivu-Dt=ZSnmkIlH|*lZN0C6J_>pS=$`bdY5`v%boZy9l zZ;bb)))46ZX?$md^yAKmhzp01)Y2@=#jr+gKfyfo{Z&3d|F^Pi^JCpeJ72rd^ zLH}|u5@M2uXg?<4ZxOyvLOy&O#cy}QfH0*u{7lu@kFb^L&oiIL3RY({FiSnZ`K_vDa17`qmO~jtv4PJNrcJ=aGxZ^fK~} zyl@CRb}U15jSBM|_kIaF0=6%^$r7Za7T`N1Y1x$?=g4}2^?_XA?As)HYeFO85Z5K= zcwCO-Zj`tX{*PgD4+8fj5M09EP%IXIHh(|*7V3~;x1Mr(syCod363DS@3Co)426Pz zoPHF02)ARn7#iK)POFdgg50joE;d7*!_?o%L40juGuVnuakdHM4FivGds7Dlmq8nX zc(W}pa})|Ef_=0l$IeOXF*HWT4q!z4kk12q=Ud1c5x?vqZ15YW^&-TQ5f|Q0(SNZc zHldnEijN5z-YxrMX=`=a5EQo8rG8+f|B~IWsaIDHu~)kmyeM_|F0f06py>P3v_gFw zrJkkkLs0NF?b_iR=(~>CX{R8!eh)UqM!Tj}wWMt}DXwlqP{{rdpiR36e~{Ez7CSuk z`Abk}PcXo%SsLvuwk|_ZWR(nHhfXv5B3Et23}MIV;ngf)KL@uUc3N!zSGcN?J0f_) z+v)jg*QhxkLo7$^hn4+?&;wx2Yj+p8Z?3={oqFKD1<8^)00000NkvXXu0mjfT!&kD delta 1336 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ℜ?tvlF(d9Wb>e#2lH> z&#*LTM&JZah66jG|6@K6EOeR7@fG@0kaaWniC(IWw19J>YstSUbbTlZuLpEoglJc9 z&>xG!9q@tO0{=y1+atSYMP}$~;4k6rQvDQOxC1yc`Rd4U3Uu5Gx&!C9f$oWoo`ZM? zboI^TJAYuG*uF&$cD`~)VF6ez2JD)P$Bc-f1$h6viWV@9ghsi5Sqr!YeHz#!^3mXh zzvyZeuu_~UI`G4VgzRwYJzi9R#d}E{=?(Nl*ttWCe!m=ssn#)PKk=0Oj|95n^;+a4kUF$5b)}kWdf2 z-^JF?!SnFO3ctUAK<^R0eLG$kI)fG!uu3%Tp|x4)sjSNAK))z_L-qOKB0UFQfcC%X zX#oeJ?M(Q{ZKM7IY&(H50<*B3=hn>IfKx(S-}^bx9k|4bYyY~57SKf;dn#xF|3D8E zj(-nJ{(u`ZufWFR3A<8hN3a0SUSM2Ck|nl6>WY}u+UOXd1!UUCl)}&ghQXT&XaU_M z{l6=R`Ag>I0k>8@Os@7F@j@?P^Q}E)cLPP^NN{4hH$?GM<3nE&-X_=88Tlm9G4uoA zrtm&jeaDf1BRVN`t+mimH%QFC!TV77r+)>Xfk!)F6NQ)D0aoe{bgqit3UGZcYyXQ{ zWf?@C%=G5A<9s8DoP_8!j*M&IN08qZ-jCq(18ps&?PKg@0YTr|Xi30d3$stjB#CX$ zidRv3KfpBRj$qWooZRssubyzW2GH@565x}otsZcYeG=(9`8SAN3N;6MLjb>Q`hRWO zYg%O$YzK7M7W?RB#V$LMnDrp5_yl(PVpUlNN6!v=uQH3i1FGkET);vXF#GKwtPGl0 zK(c)@mIcHk6~GEy!PgD(r}q9EK*SGGY%f4vf5;iYnpZ#w8SjE;Qgnb_r`r*kpQr+M zO5%pvEvIj+NL-tI)I)3@>)rv9-E3mF2tMo!dkWY9G~vyL1+Ve62v#ozCjs3E=nx_Jiz`sVdDT$^pbsC($3~V(nA4z%(X^q d1)k&;xDPlT`b6Utzg7SM002ovPDHLkV1n7{X{P`H diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_notifications.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_notifications.png new file mode 100644 index 0000000000000000000000000000000000000000..9824165de3ea4adaad5e4fd26e691a94d2afb13b GIT binary patch literal 926 zcmV;P17ZA$P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF2uVaiRA>e5nY(KhK@`UCjYcqq z4{X#T+Gvp?Scn0Uq){9H0u>Av+Ng~RqD5jEe1TX-K`m^xvJ)aUlFH6Ur5Gip5qyv+ z*Wb}yIL^M#&dz#Q*aIJXX6BslJ2SgGckgbe^PgL{uKIhu-X^$Dfno3r-0ya~J&w&c zDIUBB+U_>L@~A?pp3;>oe`n}P41^|(_(n2#v-&f_i@SqPfR!Eqdy(CdAw4278DstH zrl?Uc3l>3VAdmBag5ULNrx)k*#`rd($(b!gw z+rav$tq-4R9A=AstUGJt#A*|+b8b#8ZG=v0<;cIy zaf?+@V!@p#S07GTIlSUfngGj6@jL!8FEWzIodm)Wn{bc&^5y11JOn<(N*q_ff!rj+ zARGt54-ne|&RRoixe!P%#R}2!bUB9XX!y=J+!wQ>Jw_nk2$qz{oCi&A3fxZ>|0nzn zxd~+kAv>Xi$uq@3{78{MHzj!lp)s#?9(qtDQy?4!UlnoK>r+Xh zq3<*KtyrywQ(eo0)n+pFt}vI%6sA*i4?!u~xn`MwJO*f6(2c;p%k63>?DgbPm6b=vbzUtP^Hh|fCYGhAZDe`hKFsGfSm z{3Fh!I%zlYJ~yaA?L=*96SzgeuNqXelpMrD4Ave6da@<~!|CZh4 zU+rcEr8vV(VA`;2O*v_mnrSz26~ZTmWJ`>Jrlt_ifP8Msve}ws!_iW?ybQh!lr7u>kt^mr)$7j@vjkiwqg7XSbN07*qoM6N<$f=YUj AssI20 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_openin.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_openin.png index 5513e8be33ee3b7ed2c06e843c55d48b7a846dcc..e0372af8158d04a2f91fa99ff1f83ee53c849cee 100644 GIT binary patch delta 792 zcmV+z1Lyp|3$F%{B!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000mpaTE|000010000m00000+c#_s z0007+NkllX9rwXKT$l!H^44Pp_>{E2QO2cV6&rsf_V%r z`NPDZ-?3ZJV1JD7CHnfUev}{RKzRbqG5!e7i~KeGCio_@N$df_t-)aMwK|F4>&Pxv z<;D0E&nMtgWqyRO6BU_%NFdwuO85O1&1MNS54JU+@Q2afF}4@Bq>X3?5e5XAl>DbM zIM1X4^lS4dBA+N#NAmBG-vuQ(3-Il$(~?Quo)^_{mVfN#(S8f;y(noLW)=J@1-_@R z0H0msIbZU;uzR5aj-`OMlD8szFQCojdoQ5vtwqwz>da0fE~kEW0Pm~&Ve;>!B3kuRcjrchjS8BB8lCnafTp3Vs|o@zE1aNNt2S0JxI!w&q{Tj-}W=g1YI z$h%}U=DsVCZv{S!k@J^OblPTbiNi0#hq0VNs()9D55g>)YZ3claRw?MPhDQ?E_Xj* zctMQqV)qRgyR;RZCai56>%6Y`F5@elWOYj;3Lwf~0jbyPW%rsqE%tIis%{k=SP?_e zHw_6`o4j)iX-PP;d(y|?Hn6*Uy*Fjp8rj#zUf5UQdD6CNEtTvjcOZ8lcOaw#e*m+! WD-jqqkr+Gx0000l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8JrcYiMR=Vqj%tqyPmhm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT-VtFWlg~VrW1CgG|37u|VHY&pf(~1RD?6IsxA(xEJ)Q4 zN-fSWElLK)N18HBGcfG%TLe-Fbd8luesXDUYF>$_i>(q+L@y;X#mdat)zI9<*}~Ms z(bCY+)zZnu(A3q*&BV;b*~QGv$ONX>Gq1QLF)uk4rZ*F$*U-Sk%+UqEUMuIK)Wnkf zqLBRj99ZlHWaO9R7iZ)bC^$QVV#`v&H!(Rg4F!Z)Tm>ZgG@2em{2hr0yfX0w>8V z*=DxptNLDR z>|dKzc5m*@=atWXpF3myzUtD;Ef3Q^OX-=*Ht;!ItP#6@`hY?P^VCVT@lAFUQeHJB z@cdByeT!B3!OPpCM%Dc)$M)Tex0Nl9RWA zL3jB9DT~Q}4ocj3_)2XBPZw)$oTI3O(N6pOKG7UcHlOFYEBN7$!q%Kg>`Dr$N(+NG zn=KO5NIbga`vYdHY-Uo%A|6!X^blA$lXg^=nj9tnX_}9&m zV~9)-a}W;R&c5rQvPMAci8t5&D869*?swm7!qkeH#dY#u8Y;}T3)N4p+_bL6;;eV7 zUAXdt<+Jz;XYr@+^7<_^=_kA6Y#Z(Py=K{VM>6el7FLD@eT?aKV2zl1=FjxAO-{2K zGH33+z`2?IX3(AcX9}xlX?#e}{-4s`k`?l-QvHn6;s*?8(v8krCyFUW=7(k6KY7R9 zbGz-8$?UUz4VcC5R%iusf6BCcaEu{t#;478H!d;0U?^d*Vvs$spR-|Y{rQFU>%;bS zF?AR|%?g;Z_z4@UU1Z+!#S5CJHGg@ckXFo~lF2*A|Na@}3V)xzKVlBMotM=4Hh2CH zb1F}e$dUdgv-W?=@ng?-Z`*N(V?(;-lU(1`ivK71Ulsb2**C{0reoiei}j`#fOg)= cm1p8%DC>0TVd=M;3Mx`PUHx3vIVCg!0Ad0jwg3PC diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_openprofile.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_openprofile.png index 46b12906283c9219ec8bf0fce677ebdc2d0390b4..37140f07f696ba83a6922597642c33e8b5c9710b 100644 GIT binary patch delta 1670 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 IM6N<$f?~Go=l}o! diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_palette.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_palette.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xhdpi/menu_palette.png rename to TMessagesProj/src/main/res/drawable-xhdpi/msg_palette.png diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_address.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_address.png new file mode 100644 index 0000000000000000000000000000000000000000..249a9f838ca51ce7a478b71edaaeae8be6671620 GIT binary patch literal 1267 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGT}ebiRA>e5na^)jRTRf(pe^N> z3lXHEE^5(G1FkGT#0@T05C}$C(EmVW11b;#K^KaNK!Ph+=mycc(VZf!fDI%qs4)hG zl(ZHLh(TomjGr^koqqe~&YSz@z3Gs^Nxr$~oqNvrocrd!d+&Rb%RP|h-hq79=?jH| zaXtbb105y)VcH=un$PD8CELBzQ1ndjI`|A+1=VDfj!(flFth0+poke@8@LXVip9JO zrZ;6EB;Ek7fV46K!TJds1j$;#fhtv>!~Pyv0iFi-3mHs*3A_)?$0z$Swl;JiBxnaG zJlVg+))Sf>-^JiN56^LI?V&u0{2-nL`hbefSR&!?aq3xy~TP7C=>^aW!c z*=TTf1LJmb3MKtU3&~o?SZd$NrsPT%_-$WMSySni&;r|6!uTutl!O$)?#2y%15Wya zgME&$*b(7h$40x|=a;3896Kc6Kj<^+<|o*eIhFaLWCX1S`$|}yAnqAWh+g+Hog?@y zA+ytDO~K!G>Te{@sb8bC)Fi+GzhM_d`(|8BtqtRG2_6(ZPJNrsmpu-zV6(mu(OgNH&z)gt=eVCq*n5Y_iH^o`s75)}`g<5L> zqY^Pk^fsPrGKzh1MYE|J7Op(7D*f1Jzc+P-)mxX)0Ud`if5EuzjYh9Ffau z4Pp*ZA$ty}ybus(t4J@nA%TCQZw!oGE^($V42kpl5Nt>2zl^0MJG_n_BmPstGO*Ni zkBirY?@r*vZbGeD;^iqDA<(15&*hE=DdhXbRZpAlC}A~1vPK9^UDlx5Emw5&MWYIvm?8R5i0`0xOLrzJoX-M%Y5E`&Vk3cgF3?kH z=Dz~`M}ZSNg+7|u07`?flcf{8Q_HhT0N0B^@BYVGahG{WVDGKEq}oe;(CM;F;!)tR z)2qJJ+tL|({_)U+nIPT_RJMdgR`-Hzs}iDbs_vb#2l5s$APMccsC%a*b`iKGeEsN? zQ_$8Is;2jMZ!C9c1rEs1tZVp9($O-Rfq5sqC+IqLQ&u}vlW zZle-(ShJ)A^=cscNzmA-6CEuHJAthjPHZkOj`~Hf@mT_N-Wx|})NewrN&G6%^?QhG z`)kQ7^vwh2`8DLRFgqE;y%0hXeZW2fp)GR@r>XPY?;4DG-PxXItLsE7r_N^2xNP{Z%E}2 dNbkct@E_Eqwp@nDLI?l=002ovPDHLkV1hswIqU!c literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_card.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_card.png new file mode 100644 index 0000000000000000000000000000000000000000..7813ae714dfe0aa01cfb3b4e026b8ea041135d71 GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?oyYA`Y7?Q#I zHp0>Guz^62;G75S1&aI+csf3DTO974CLSnY!+!2grrrmpQ;b~(n?rSS-cGMU!>8OwTr?IT$aHyujmPl(1H}(Ru;XzJ?ID7|{amDT0-S=3dQaiR~FdWq9xv6;9X&Psp)BmZx#UK2M zU#8n2(=^+nnIUXZW|ZZX^mqPB%lh*g6lE4Jo^jy7`FAm|=CKM3Suc1vC-c|Gm;e6= zUSjy8>uY;W)?;qreE;$T=RIC+eCP10=XcF6<~p~a{-v@J27>F14#u3^ZQV05J9^hr zhI==f-sLyuT%5H##`*Vb!+U>L%z579CAHX;`_-S~2X?Gdr?oDLM{=_5-|&?ozVFaA z){494r)6rjazZm^^9BaTmSmJ&U306N>uYiX$I-jxmmZybZFa;-YkhEP4qFY=%AOr@ r43F-;Ulx|0$!5Yli}CD%`ZEXgw@+aI!e=a342o(`S3j3^P6Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF|4BqaRA>e5m`g}iQ51&n6@>~a ziZUyEO$@T=K@vta=|K&p$EX4+s32(6B#59vG$@=@^uQu|h=b^1R8Zk08Y)N@MHpHb zl~z(|NqGBKo_$>Baqm6HE7v2O1wVW3wb%OhTKnv?&%QU2h$UWucm?7W7|j((W|};e zO3h<@EhqtnnS65?`$TLDXiX-QzjNRj3MKJka0}#9zA)K-P%xCqFf<6(10fqNdBVg+ zK~r~ZAp)ln*b0hW1fBHzT(*(w%3Kp&WVLLky)Ik!E(O%Pmi-)kcQM(CLU_QR1na;{ zpk-AEnnZ%g5-^|`E`}n=(V2N?fzN9GGodI6tWv?E&J9H{0?y2NO6Bk|2&I1GXQ+T4 z_F#wV=Syu=6UmOqx_xy4`keoxi1Mkva80(@)%SFD0iMBp8+hvN%=tsjTcLDcHBtpw z89r5+ZdJOk8pQ(YRi+iZ2UV)?QKMMEeX{IUnbuOoBGq@Okt=}r;3pYYt1PFWH&R5o zve|0n3XsewqJgHy&T{Z-BSkDxHmAzqL109#xT7j0QUI=)gsfJ+)C+WCk$eJ@AWva{ zW)HY5eM_d($~E84+g6N6lv=9@xs_g1c`ZlZZu*ffK$4`06wLwfPWqPYFiPYLkVGls z7tI}$G_8Hb7!w6piN93^Of~vgDnPc9N5)bCp5(=#uh6~@#>mknzn|xW$>0O~vWs>^ z1n%(=ne)93?!bSq1bPBYAm{OW&<2`;d{CZ&rRc*J;wOO%5Xjx9)j~J6^D-8Sm;le0 z7+WD|0O_QkfqkJSvYd%42Oa5%v9|;J5{G_R`RXHekdeXN%ApTkR_B{|)b^=2MY)V7Yg1t=p zJ5C|C#~TLaGkq55E44Y|>{y88YZ&gNu%jJ{hnrDt`%7Q8%n`8C$`Lh-kYJ^26}FiW z?DAq=SK}RKEJ#aSjf$1irqslt&jI>$I&H>6w-7x5S{~E61YT<+dUY6b{7Zq}exlz5 zb)W|rkpp9P7;cBJ1cNTamZrVy2nyJNOCQ^Q)N(NF3`m#W4H7BB{Ul^UIscCW{}UlS zr9DFIMxeI~-Txxn%JXvDfl5g#J);VtoWpB?yts0$c*qMSZB7F31PC?*bH|sz7azgh nn-g&y9IrsU0`UsuWd;5LbpB5eO`X%q00000NkvXXu0mjfGq(TO literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_provider.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_payment_provider.png new file mode 100644 index 0000000000000000000000000000000000000000..5cabbc43b19f5d700bc26aec6ac0822f2163b965 GIT binary patch literal 919 zcmV;I18Dq-P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF0ZBwbRA>e5na__5K@`Vl{MrLT zaKXio2-yg+krf;r1j%x7=O6?LakqXPog6rj{Rf1EIB=5eVS_}1L`H--N!A`*utXL+ zK2N%MUDGpDucy1G4_(PO^{VT=@B6;$>h9^DTCHl;3REjltw29lpx!Ncv)Npa&jzr# zn{Uebuf)Bp*X!?7#wUj%d>Fg{MYZQ78ctSYJPOe$_*Im0l}B=(H_DB>LvTQ`hN$0fCP^7Uz5`zFBW5ZHt}Bv; znV`o2a=%vjuZ7Uf@tjtu@f&3qW$K(-OWXW@0s6V{yKPi{6FR5X(l(=CKwHPMPM8W{ zf1U-?YM-Vxh2u;Xi()E(gqOj>3=#{+rBEJ_5?or0{lW;ge$bk z)A?BB{Ehyc3$zw+h`>Fd*RvoZ9yt*K{c7c-?V70oelgBK^iYxY-LzfQg&%gzkp{- z=^(eh!d@w(ybDx*{cfNR$4$S0drVI$ms=EZ8mv;saxuxV17dkdx~AXGv`)Rvo$vo1 zq7hJrw#%tP%(xO1dso(#{q^Toc^_jG1f4>cB;$Sz9gl?*;j*o^DgF=2Zf_DOpBCkF zUy*HwWEa7FrwsdqCt%3UN#FIwnc#K!<@s^f>6yfM$;y9s2gtn!`xRIe9ed0C#>g&r zhxj4T0J9X8H t@^_QmjT(slL0`3M1*#ROR-oi7@COC!boiagd2Ijy002ovPDHLkV1g@8k+uK; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_permissions.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_permissions.png index 54615a900470f98c260a434d8973b2c4caa7b915..c5f0e2acbea4520568b399bc70bd1151867c0638 100644 GIT binary patch delta 1133 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 Eg67#(82|tP diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8ea7ec6c3ce60ced22df33f12b5ad9eda4a42d GIT binary patch literal 1094 zcmV-M1iAZ(P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFut`KgRA>e5n9FZXQ542|MH!$C z0|^6-mY|7&$4Esx@C-&ZVX84lG2tH&Vn9SR=8RRPk!nJMVj%H|#N(<&4bV~*CRM+c zoRj-?_ne%^-KQpZC13X1d$09 zjKlwf_9kd4Ld!cRg|>kS;Mz|Hws{xyNl1Yk!FRWE>DwaOd}?~*qOex*MT#}|BDmy? zjniN6P1pw!1vPaTXSHY*L;RXk&^`L|HAa1#1NWVr9*vnbpCXPpg}kP}B&h(4 z0T!#)m6Ydo9_7v8k5uptzd5Z4u`OU!@{Ma#+We~G5NZHr5ZWZpuB@cw>;{$_S{Y|i zR-Vl9h`77S>C7ZS0$gW++Kk;RFLz`fO7_&$?$XJ9ShHL(2-GtFnvuo2gDBVz@zUwE)-(bmf?z< zW&tCW@Ve#V7v(M!V%3)6iko!-YbvRQd25B)%K{z?p`AtxyTigg53QY|Hza;O7gGCJ zrM4#@Q*ss}dsPU3LvmJ%2#7uk@q-j8xkAu*C_2NrNTQM;?G|ElJEP*N8H4kHqj9Vn zzG=A-+ht~01is=oPYbG|V_d*EL$iyM-%AaIheGzCwXboBpHY(5WgOsTz!^3Nlk#%S z!+s@H2--Ka>vEBiWVzsNz!f%^^YSI;p zFgF!R-XH|*yHFo+t;~Skn^(ti+guP+rgiNW0}XMxapSq}wFuci_*rl~hPceQZG$7h zyd6R8WVtfvyUjTUPH~+6>rNEfXCdui2;{X#BqrXv3SESeQ$#1|1^T^|ZlwKY)MCB- zm*jed;+_aa*-_ZeGOfT~oA6|5uacefUje(-{i3Z|?FrPLfQKjW4^uG|=(4kSH~;_u M07*qoM6N<$f;m|C9{>OV literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_linear.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_linear.png new file mode 100644 index 0000000000000000000000000000000000000000..02ea70cd64f5f6595261c5864557b1ef7f077790 GIT binary patch literal 608 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?oJLT!(7?Q#I zcII9$7DIvK`L4QG{0@f2J8170SYyjw%MxJn7*&lV@ifpm3W!Nfq{r&;I zC(}|mAKG2J&H2Z(EX~OCpO4Y(yJ4rh3=?=Hm>;JoeCD0^{3p++;0@0%_eXp?UGY6~ zTC7|DX{J8MyQk*mGX~o|te@n|u2$V!!|B0Md06K{zC;r5!gmI9X8R{E=wj?!7+S!- z?*O;Os!i*s_MJS}Wd2~9yqwwH&QCQA_qeyj&fRu#Ze#uh*3(+$*-y9=qv=ide7GdF6L=*@kMZFY0!+9%g+u6WG-j7p-MZo0xQ?gLk3Xw!KWh z?Y_UTa`<+UnWOcB%`V;e|0$AuslxY}B>zats9A6B^G#`(aM4D=eZf;kj}0~f_c(jc zFiY!kw;WyY>440>Uva^A3MbvNxMK6c^Y$kPq3+&yAuSW`u&dee*KF{pT)XWzgUXe6 zb^&$!_3dAqh3>qj<-a=7=^gX>1G+^^ea;H{krPhSmzl(D@-^zO9e`ChBN4$G~Dt@Vdz_q`7fuG_RiTz=lP1t%E elM_OC{xI%8$9!*VqWgbP?0UNTxvX6gB0F2&*1@5dp%toLo!(3 z-aN>A$bhHyAaCFB4x}k^jz>MK?l!Zhmy%DQ|Y@ zzwC*6x?l1(T4XCVFfaj4z#ytc3iR_z*T>ysf5zCQHGOyghsY3y_sofFf4F>JcI_U! pn6I6tTh_wKSyuq^kf*Dk%Q~loCIIweXubdd literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_radial.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_radial.png new file mode 100644 index 0000000000000000000000000000000000000000..f0917f0cddfdc99cc80304b8068bc7967e37d09a GIT binary patch literal 1363 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 A`v3p{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_cropfix.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_cropfix.png new file mode 100644 index 0000000000000000000000000000000000000000..e877bce0d87e5793234c33cd90fb799b47064dec GIT binary patch literal 634 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?od*bQh7?Q#I zHp0>Guz`S2gLb?^t1w3eLpQ$J6sQ9ZIa(VHMefuS66KlzyGwD)JDhcGxM(O zt1~_qlslbenv_LYz;u?ho|t6rgV(R0Z~MOb((yT;HEVd^?O^)#D>m7CpPsft@8mPf zI90T3Z41AMewZt~khOCj14o~P=S!Kyy#2G380}X#bck^NIM>PWD^je6kEK_S<@Y(x zhl0yBk8)XXwpuM^`SCwt*DVj-In4j-V?It2sz~g48K<_jfN#B-Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFCrLy>RA>e5m|ciXQ547LPC}v# z$%BTPnv~{2Nijt?M3a!3XY(*#yo#4eQk0Z=@sW~J-XzJSND~bi%7ak8GUX!%Wx~TW ziMf7j=A7IA-h0lu=gz(R-lNW{|JiG=z1Cj;z0N+LO--q!6-XDh#d42b3WFUZ4vc(D8=q5IYJ~dV>hza9o|x*9ZC4)dq>#;F}P8 zfF5|~!ag5-5#JkiB^#6sGTlPR)XpG3-^Tc1@wctE%pYq=3xP{Q=w&$)__l(-5_7Oz zjMH(5j0%|(agyObBr*5n#8l(cTqbxz#;=JUrCyi8P8PFR`t?;wz8YKrJ#jPR+YVH^ zMWg&MC<791M}1#L!ZRw z9Ox8u?L^cd(&*>SVVIOv|7JH`Gx;U@|51vnK%RVsY|zF$-hn$sdF9iiDExj z@vMab_U(}uS6j#uJj!R8J_FLNO3i6>ehYD0Y@It8tY!-h%H*~Ho6ltJbTf7A<7i)Q zGuc8viR+)5#r1(=Y%VCHxg}kIgMai>8{gN((mt*uVczXy& zF52k=xDMV!;2rQK&X!o?J9}-xgR5w)$>{>TWVa+~7ZtXuMoIo@j?)N57>jatJ_h0K zKqVWN6sKnJQJhbQ`PR)28T+>}WLFOODSj@iTQ(m~UO}5IH5pCeTa%R$#M*z7W4R z==Ip*E=eHyMq>UO+W_}8i^JhD#dJtR)?4o`S#)17jyAA9QcmDe%C^ogF6-X

Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF#Ysd#RA>e5nMr6AK@^5FNsLPp zRNOZd7hG_Qijs=~y+i~R5k!)chkyv4JSd_bT=1kv5h7k(2&hCvM2U>%q5*d!M2uoK zS0b)aB#YmZE_o@sW?`n29+(F|^|q?_S9MQ!bxlrARK#DmzP`RfhOGkA zKnu7OiA36I!!M9u0@{F<-x#|>&mNNV!AH&9(obTC?vDAlun?OK-dcq3V|QD=@J#}O zGeE0Fv>H1CN|8?;{;bL%47$~`eKEhR)m`z@~?seq{<`l1B{Wbg2en*K8oLYwOnJRA;wkDddl9=I9^5yi6f~)FLmNu*IPy4>5T$ zEd}ME4A?9G1>f>Gnbrzb(@K_M?MBzqqtx6eVa2*{Ng2jsVK9oVu}CV_L{$$N#jTZ|g8=jfHy zIx)%rsrr0Ep9u!#2Pd4n1eGR}RBnFu*MO$V=)cY&5DMsWAMBC<+XMc-y(v0CzE z; z2JH2W(PjBlGUH8Pt{S~r>4~U4R??1ilb7+G6W~%WAihSCc%<}1RDJa%|8*jrQqF;R z9@ql(lj9Gzb4Te{l>8&WNT**;+I&=zPrp4t&S%~MTar4Dq_Zr-OEt*Zw2}22h(ae+ zFOd{G%VXNC hWLF@&0t2`Le*yLwYR77x1DF5+002ovPDHLkV1itG-uM6j literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_flip.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_flip.png new file mode 100644 index 0000000000000000000000000000000000000000..eb0705bc25ff2fb7970dd81af4540837c5366f84 GIT binary patch literal 816 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUV4CIW;uw;_ z`Zn^c9*d*EJwYKES(Q4WX7>k=IAaPX7Ziy2KX{{h$Fg(rk=B;iMISlJSPLJwO^%H> z-1{?aS@p8(XJ%RXsBevpjSuw=E%*I?&S!Dp_BWC*%62Q?l=2E>vE$ptTHDAsrR^mj zx8wRopWg-9V$N+{Gt;B`1y9*@c5iO>Sx`|TC)c*QWW&G72f`gsFVJj%C;nu*qkxQc z!D@+pw;2v`6t^yWP4UZs1@edh@#8wWAB zqKjX%4ekiOUQv2s{qM+QTN9>7Iu*X%-=DL4!krDvObw-23-qkr*o+NoY z_!ihTuJC2}9w41^Yp=HCR8ECgz-SQJa&xW6m(#0!6hu?o98#Hz_!QFa{hrysbh6cn zq>NT(m5mRIE2nBd5Z-ZdrLci!e@K5+>sCwkP zUzE1)%c%kjZp5=%vR~lQJNSO-S#}*qhMB4%*PgCb4Vm`&{|Dm}EI%H9`(3XR{K_=I oY4HN>3+fsBL!NInb~XOMyY9`kCpj4hK#7&X)78&qol`;+04pI<=>Px# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_rotate.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..295b3f1a32086cb66aa88ea3618041d781b51b6c GIT binary patch literal 1193 zcmV;a1XlZrP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG6G=otRA>e5naOJuK@`R_i5gd2 z!TprPnB<^>NpfVhp%} zpfNK3o_2*dHPth{W>DtAm)hR@>U-7I-PM_@s*3&RE0D|OCWCWe`#+Z|qHDnoAa*Q` z1SX|HDx3(OMsXc%lXhB`N&<+ViQt=HQ(D3eZ{i6ceh%cfK&zP~%`(vh5WfJiePB(R zqBVD72_Swh#P>jpo?Uz;_VU zt`WGhtcf6CEBNMZo2>Lu~9 z$?21;^%fkq$6RgvZx|bNIVHR+kv)?X3nA|5rM@UB4QFx!qf3VWpKjG=UYY*Z^%+g;(|(`_~|u{__UHh z(?ONM7c-Bu#8F;S+MIjd8LT=XaBZh<)l))}a0LW2udS8gFovvYjuce(fBl?!~qfBV1y_9qcLc$KCf&PLJpW@&>e1 zjCzJxfw3raEHS}eIb^l}Hn~QwE!6CE4$ujoyrqZLwf{-IEp6T1)G?HWivF*QJcQyecDC=-E5Nf4Kqco7QU z7NBiI$ppN>&`B^$qT)Rru@7^Bu0%@W_v)pmek9Q9YbSzAUWt^%FNXIWFqWk-bj0psvU;%JL&5QY z{yMM^6vlBN$@C7pvfF!4hCUIY1=Nh}KnfP9S12XZ)* zm7M}?8>8ba=;So}%O0GNHVL%a%NekJ6~D#_5m{^!M96*81MDXhT?HopYCjFu7UL{7 zmiQJjlObvr_02%UEeEw=1el+gp0G`x)2>)$1u82LV+DQ#&n7w!#EVzb00000NkvXX Hu0mjfwbuz! literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_settings.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..0a22ffd5398107422007710012715b75d837e7ce GIT binary patch literal 724 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUV6yXcaSX{| zeH&q~&*CVuU-aP@j!rL;>lz(h{s+__IA6%n^ly358KhX);2TFE{O5+WmEN=gju3o4Gyz{{PDD$F!&Z`6T*5v>>ceqpPhU`GJf?iCD)K!zMeH zE4wD&DqPln;(h3s8~0Tjzj#b3y23d_*Uz}j=%rQTlNUPozP(B*m~;5SdPe14-GIcH8`tn2^tVoqhN9b_d! zXQtg**}9G~xO>9S{0CDw&Sq_y(Dr_sX!gQ#PZQbuPV0mhTnp;H+;zRId@jRZy(?8A zE{fK_${A;zf5h{P`GDC5{}Qq2l_d{zSOc;xrxu+%bV+Pha$&)&jope%ISXw4#Dz^i zKe}Ss?d+4KU!20rYuB24D53Jqf&2{%t@)Cq1Y#$eZgY-#qGwWL%gv~>GJeI;xW{1% z_MA0QFP4g~EVA!1+j?P*(1sholZ}ik-gSTcRB@$F$A|OHp~sV#UhkhF6MI6B@$z1K zwY;xCm{$5~drB+LsqLLxe~I_)ht9>}NN=K^Q;O`^PFZHZDau+G} zGW;@`Y0da2#V_iJPt}S&^Usw23HPX;dHCX`lswrJ#YXP`?Y7N6v-QsEi2Ak#tLu!8 zYbmL^PHtajymsBT)&&dHiYvDX@Rs}PIvLh6))~1^eX-){FXL0cXI;MLS~B;5X!n*I wCuNFt)INT1Q!9=>AQvDe{i$moQ*2CQysptQg-6z>KY&t{r>mdKI;Vst0JBvq7ytkO literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_text.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_text.png new file mode 100644 index 0000000000000000000000000000000000000000..0621d457ddf14c6c5cb609e9dc572bc0e2386f3b GIT binary patch literal 1011 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFT}ebiRA>e5na^)cK@`XP{AyIN z(2x)*5*uORS7JlD(uJ@Q3l@m9Tif~z{QLvhmRN``kw_%U1_=pCgH;;|f;ORcD)oHM zb*KHl>6`oRd$0Fid2SP~%rvXMM zF&gp=A0j^jZ$W#H*6TPHyC`>qLtsl>XT>Dg$#i-zbzzp^SAj|3XbR?d*kWN@@Ur_2b0Z{zAJ@t8wRUS0<4Akb4ei7cup=o!taAi`dgILi880osF{J zdfjSkcM&%lvHx=oFlwEk57c|ZHX4)#Zzqnuz>X8?2<3ag$nJyEeTRBoN7i#cv-`HE z)=;F2GjrWkPx}U;DbyD$uBNoJPLXs_oGTwy>n$z86#{FJ8YFG_J^hD1k2$-FD%NVAcO;KY&mI zuSKy}_*_|bpB^0QQCi~)$AY1MwRkG5om~rY+?6e~sjJ167*2?>U2&htF4Wqd@zn*c ziGO3S*J}Ndg5Sg#*oE$pXEcKR7`y>`^@6w{w1QrC0lQw;sWV~q^S;8UOeB&xZ>bkd z_Vo8B2Ab4}aXPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF+et)0RA>e5nN3JkQ544=?L)HC zMW!yI+7?k+2B}~W1XA0mMFdeUTC|909afuy2!b{uRL~|}v@@bb6l55IE{cjET0~0G zml*UxO~3y*cR1d;!@SpwZ-VB)f9|>Gp3i&ld-L9XH8oYL&cOdY1F0zGr_i-tgHKd_Y8%=^iagjT}RK3}KS7tq(O($OUQ?xE`> z-4c70n7XYxvbkksp#pTDcccrp(llWb@GtI~PyzN&YQF9^Ca0q8jL}$R_zW8=z}NYw z`_%#}y*$+wsIEYXGf>?^aVL=Hf?9AKJOgjQAZU*3$LTL{OcE`LYQ?XC118>K_??XH z;?d!ykw;<^+d?F$caK3}lXpq3fq8(=7AJ_>CQ?8)`2mtTWD?Uu+HKR!qu2$!#j-DAusU>)0jm z?z~fCWaS{;=e13Bx4FfZDeW_BIWnsHsLsGYJ_COM)M%3J`{Xhj00000NkvXXu0mjf DHo*DJ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_pin.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_pin.png index a7cc6fd527647dca396e242dcb8ef10ae89429e8..8bbc67e92dcf992d569f3e76d80123e187ebfc5e 100644 GIT binary patch delta 929 zcmV;S177^Z2et>0BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NFAW1|)RA>e5na_((VHC&b8l%RqXo}641yQV&!a_2B{C@*>Q`3lSEG#HxW8p_O zl5Aw5u@ET=#qLcCON5k=m61qIm??~TeV*o?I-Z{UKKHr5=Bj(@+d0pV^F815%zf|s z^iEe-W6cRPC-7gNKvcE*cDvn2&D~%lSOUI)hu}^WMU(jY8sd+D@4#iBm>jC5dW3a@ zt1i`!x#P8JB7YWt-68ZjbGN`7$J(h{G=VU4^0xSo%xm+JG17jf_m0wY}PrmW@mFh-yU^nyiT zDOd*jf&GC^eCB;Z;5rAyCJ5&FauU}`UI5O37vK*_V}F^&8zB_fW))fK5;)g2splYB z&iFA{rRP2I80&*v4c>b8bz1&uEqb+D`)7tUaKkzY->}7o0Vi3&Bpk<7pF#ZizE(|`cXKIM-dMc3CuzIJpxdo1v~E%~K-s&y1E#o6a=f;}%qJ^qB`mgXsvO1ubQ ze}7^VteG#dZ$Rvzn3(00000NkvXXu0mjf Dj2WTT delta 943 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_pollstop.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_pollstop.png index 76a62c35b377ae1800007c6dfee649a777568c93..63189f049bda6a9e61196d517ed3d08b1c7a08db 100644 GIT binary patch delta 907 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_badge.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_badge.png new file mode 100644 index 0000000000000000000000000000000000000000..b92fd51e0c55c888c199fbb40a0d012800308d45 GIT binary patch literal 910 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_normal.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..61cde4e1c95fbbee5ea39499fec4c437447ad709 GIT binary patch literal 934 zcmV;X16lluP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF5J^NqRA>e5nazvMVHC&bXND=8 zAOJ2hD zIr`n{`Muxsc%FOj;&4tVK6rBYc8?t(iq_madH zDS`v=7*y>MlfYL#=e&qrTUBn1Yn&(YMTqEghVbfi)K@;Iyr}H~zpJW^@fY)Mr^z6j zp0wN8|boY=X5jM_?Cw8*}y>yG3`$<1J4) zzS>xo8QBrqmm)T6sW*d0z3lQMv{#W`yt7Z-(I-A_i4L_$al4 zW1!J?3IXjZ@uoAuyTK2ODt;1kADjl#i0?pahfFQjbF$6{7eU%>@*mcpf>Cf3Yyk_v zWHTYhH$bf>#cnm@v*w9kp)5yPhjcDOKaiWUPv8l7z?bVQW2zCekd1?2L#jh^QLY8U zaE>Rp>bQdN0dN6m>>L@dr3IVIYWsU04_a@`?Bx4;`NGxw5hQM`TYfI`NHJJjn zo54L>)ka)jlHKD9i95iUA>es0umi|ik*Uu>5n*JX&wo4k2C__U>`s6gkw6Y)E!-2IJdTr8dRR%kAH?l53;RILuSUcd2$#gh?TF6;*2S`&;aG05txRIU*%;?G zE3#UHNG1;~$HD4aV~YIX8U!c7o+96JzwAKSfwBW-2b^}`FV-nf6YiN`Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG?ny*JRA>e5m`$jrV;INZ<9iGS z<7;6eO(JGADHIzYgOP*`GONjiM${w=*;ue*R%45W1t~@vSty!?vY0{=H76?xk?-<- z{C@9w{<_ZNeb0HHGtXH}y;uFu^>JVKegCifzMuPf&N~=PWx4{>6*#O{U}mM*&&|!P zW9+NJ9C&wTX6B2Pm}^A}fcz|a69NtdMkjHT@9-(AcTFGCG8wu z*OC`o$UOnwi}Y3iY$R_HA?nydKZWR<<8#uB^ilvT>Z;!fD(O*$q@cT-K8IXH=QlAE z+vh~!+t!!Wncy~XDNr(I7AJn%;vXRJD)<`sh892Zw)WFwV##0&Iy5A&CwK`6QMGT> zlYpyh-}H|TX_|)8&PiV4)lZ)vF@69R6#XIgUW)r0y+AU+f*=JvOyDk%iENJ@ZA_`8 zGhTAy*SxeDt9BhnyY7VcYZUO9ovPFc{)NK_mnX8u5|Bg_b963XIn!k3k z-2v3XvtR9c)5MOh`H87ReyPQ7m<+GPeE;4|68yV@*nGr zl8_nIHjGh(Z_Y=+R^aD>QpwLp27|9K4uaXDXPNvL#<+mk>%e|(!tEF-LvgGJ=>KKo zk5o$*kY12ji|xB%J@9MO`}%Vr;UQ78<4)ZRE-Dkd!lQ~v%=X<7f1&hQ(j505 zSh8a~0pcDjzxB6+vzzvMEDY%<7CZW_uH+r?kPCpg-$?g>Z9qGOFozPtI@-Rl5=*Z7 zQ_xwKT|jeGTp+XbFAh$_;uJa z!JkeAFy8sVE7NUnuVM&U++Of}h(PLPe6QS_fd!4~o7jc49{>|c*Jof8qt-JkS$(zm z1l$ktJt2=j&<1{%KLkDl>C+y|F)UzW>AC~{gyJMwEhlp8-SX$aK8WT>;4T!}4ze4& zh&rvX~YjJJ`{9pDV`K6sHaEov&$6_~ETbOjEB75Eo8dY#fq SR+fkW00006gB0F2&*5QUU`q3JaSX{| zeLKUjTR2dp)j0dgi(4z#wk{D!bUeYoVWWV~)V13Lyf3=dA5@B1c{XdKLfCDt(^{Mv zF=4M8T3fj$X}p-$B*f!3>EmvJ?lV^3_nI5$r*)S}dTXE;2(yPa|e6(h`7}-(vpo2G2>AB_cMTMG$_nsBF1a-eZT0Q&86&a})4XYN- z&C1!fAdWF+zS?`?fX_Zkme-bFG26-2Y{GZ*(3Tx1l0u&yo&H0Ze`R8p!?%~KoWCYy zJ&3sa?xOvwN(0jkt3{`8`R04s(DcEVss)@+BZ6&bNWD;yc`k51TI<$rsm@yrx37zL z#b>k3yS}U9MYdEH^X5bDQjO2Ies%g$xnS>#2Z49C8s>kUaHvLjQ~82K=O~AB0)47^ z^Utg4&5mBdHgS*Nn@U%+iO(bUrzYQgS6la0*j)9%Z>t5w*-aZlvN5$_#W%H_(Zw{Z!wD9tgyB`{^{?z82s9}+iAUEJ)O z#ea75w3?PitBOerJ9)GCrsbH&@)?)Q&f4L=?y9p%?8U=e%kr8!FLnIc{bU>a%SRf9 zJ9z5;FYh#b9@Z87=|s!L&j}3wj=KNb@xb}g?b?pSn^MsUJXL#chx|Nz;`ke;^cfCd dc))JPfq3^%@*CujwZ?){o~Nsy%Q~loCIGI%NG$*W literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_speed.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..f5e6c8df93ee80613e4b5577799ac3f0937a7677 GIT binary patch literal 1039 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?ouk>_r49Q@9 zJKa0SH&CSQ{nsqhS98N!lP*aHG9R(#Vc`@O5^~~gG02o+UfDUrQ$>aCQj0{OTAZM- zaAu2wQ&xh~+$mnSI2OvS6suwd{$$XA9Zc*^e&_=Y7^>$=LPbJ=2~;_9xRe|NT*aIO0ph21b*H?+T~(1r~_E zVSD^|9_!ZG2Ttwyy78639iCebQLh^!xSyO_dF+l!0dvP+hRs(Fsd&1GHOx-f^2XAM z`>yGPXuex(n@faF>(0C<5W#B~wW#%wo!W11(THO4j^gu6DhfnAj`x-d>v--jn!%C7 zy4UUE$4xhGC&;g0OFf{oVoHVN3g%0>x0kHGedbU{dXse-VCIKUi{DdD`mVVmH*n3%XZ&J{4TS6rXcdVPDgF57n%R7bKXMaOO4F zO}w2tRgGUzgH697mzn3)p^Hc9DbY z8FUrSNbyW%viw(T?Ds@*8gpf>$f&ZsxK2lPUp0ZJ__=5(2BI}Qwj=p@8norl8 zcZU5D(XK!FaK^)=VBwdEYmC<%xb8YhV?mixM)8h!1?w{=u3_n2aOPTC4NFE?@^#Uk z#P{VQVxlT6lMBqOY;u1rm>|aTlj-W4HOHi@4$L`Ol>X%g%kMbGGAX<9&7V!j$_n`3G1RrJR5w_p^t8eCg!~kT txXEiDh;eu9`mg!zmEU_ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_stickers.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_stickers.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e9266ad67f072661173f28df5ef0fa660e1cbc GIT binary patch literal 940 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?o7xQ#+49Q@9 zJHt1>*HPqnb+^(zAQrU_-P z8>VK=;@J44&hxQpqR(UeJNML+2o@H}$}Rk|~2v37JRW4i}MXsSG@4!=cgwdbroK? zXaoe`Na$GN^n0Jc_GcVd6(i-8R-K4@&aw7OVYbr153O#VU)f%g?C# zILjM;%YR@H!K>FaA?AQ%O+Q2D*G?P1ilf!Xy_RgKmRx0O_cT3Wz5Y?B`5S$=oqtlv zTNm|nN#^?lmD#%UU;VDpy**`V_7#1LlZCe@tY5_w*p=1CC0lpA@y=((%C^J1cvLH5 zPygWiQs6gx|09RtVFQ!Ome#{UY^kbNaW$9OPATaqd}Lyhio> z3-jjxie2GzYY(rz#js>E%NzE?3g-(au^TJzb@OzqOxee~ZNl?~$=da&crUR(3H_mM zz+9sg{;>E$wwB|5HnoGy1yWxmqGgidDRfiW1O98RPV1yTch3Oj6i-(_mvv4FO#m+V BmHq$# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_tools.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..e31257eb510afdd122078f873b822072595ea61e GIT binary patch literal 803 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUVCwaBaSX{| zeLLg4cc`Pt@!FZIg_N8WbqYi^ZZ1+-*&8*1!*R>WR_&8ZXCL{m5VIvqnB}6LD?x)X%{ux!1d zbuRfqh@zyx4%t0y|Fd2T*f4BrPV7l2Kd5%%@;;}sd)aI(E7;F}3Yq(G(xN*br?EWo zH)5=fdFOO%dbQAmd*2s^J-n0fXOp*(U;o8gqsl*)KXczhK4C9^|ac5 zd|2({xj!;beI52GwQMO&Z`AA4kmp+Q&v@gN!`f@FS8*?$QyyG9|E|#!^BtvE${R{P zLVLU1zj3?t$5$t3_eOg&+1@;A8E@b6UhC0m%g_HR_46Lj`}6jt`3JUp=kB;J z=j1d<6|_J5M|(rsNAG2)OXQlpUs}{(4!>U_WYolSY5&xi^joa!+;4p2lsvw@@fp_y z|CW>2Uq1d)-|*!17wbRIckm^5NU?S&aEBZa{~&UQ<p=fS?83{1OV>}P(T0x literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_uploads.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_uploads.png new file mode 100644 index 0000000000000000000000000000000000000000..e53cc2f619b5cb207ca4dd63ce88f0160df8f6d5 GIT binary patch literal 724 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUV6yXcaSX{| zeLKTehs9Ck_*{>U{v+Yeih_Y!7bj@AcrL#lkX;hOHP`D3m!MRylk;*xMXsqXN`ms8 z9U3D0&b?PHPhY$9ZsqRH>WOimjPmd8S^t0b&bxb8uKM)E`T-bzm~TD7o7-;w`R@XY z#q&0GeC;`#sW*N1rVVGWwH#u9C>-Ja-eS$6(wkutf^(m6e~_Nj_N{Q+&8;0?LOK&m zlzgu$-gkbM%X!Mg#@Gq#9X zFuC1vo696o=OXD)&W4bV!zMbrg_cOG)y`B>IGARz*y$hJ0)`}^|I-6{*q=2^30##* z&I#Uc-u1IWJV&wr@TWYDAnrqQ3U1w9J3d}#@JMX9kt)$FpBlG-?U<}XhuyR-3`xvc zybOg6=Q(P`Kdg0)V|Ph*NEgv&UC@^Fs#kOY%Ms1P1~rl!GTq4fy+8`@7LrrLUaOWdcU zUD~qG$ZDDm!*Slw_RrP}@@6Kp?`Q6lUd8vk+~Ka#alTu!9>3MDP5UqSd;x2Ly!eHW zRXKLL4a&z^-CC1X{MUcnkU zzv`_K>o|k{1ei@_UovSm1%Fx#x)05om;+7O)=4YN6z}|%(@z#pH@s+-W#)f nxBcg(CUGBRA@E1H><^Z`Q>U!Dmo0b#l%hOc{an^LB{Ts5L)95Y literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_voice.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_voice.png new file mode 100644 index 0000000000000000000000000000000000000000..c99c3f2e8e2b0c38ae4d614e4649b9b85d0b9fa6 GIT binary patch literal 890 zcmV-=1BLvFP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NEe5mpf|}K@`XDCSapz z!ZjEyj9pM{OsRzy+6H{YO1)pf&Pp(;e1JBhwgzjXcKQu`6cPk0t?~d3M({0|>+i_! z&Dq(Vd*|-X-CWHK{Mj?-@jvIxK4!L73nQ#RSb?wt|J4dKo6SLR0lWa8V~8xe!M<*m z0>{B~U>nacjQ3>|6t)e#vsJG2Z;`k5T@w^_TNT+!yydHb$OjSCZinXs*y70d3%`04 zMPD5Kt!@KWOLv9|++B+oX7QDn(!*B+I}21&Bqo!_R|7>J#Ue31Yal~hmBQB@sH)yf zp3p#MNh(%^J5ce0XVPtsJHSyP0ylx2CQoFR!IJ{+lW~q4T)pfQe@lbxI7r4SLW-RE zRATJndP?^#oZyp+Kc?+A+4T|9KO#erna6-tTY@%vGiC(e9m-$lRO+j z&of^$bnT|%D=~VQoJ-nhlU*BFFbGm7Nsh(uu|G6?+D+$(Suq?^oY)o(d$}pk=Dd17 zGsR*X1uM$OCW_B4vl?`dRKP3KUV0Asj7snWdCVk5cN8otKT}*laU>^hFZ!R#dD`?T zJ%@ZhSW`)6^GLA|fxAGyR>=_g4v-H(W}v^HICA|B_GO%WC?K9yiKLk+8!xs2FcQQ1 zu390*|IUR+M_?@n<;+#wrFbu8(c^6!VysQ#4 zoI|-WDvGIt2ABiOK<^nMi|zqvfcnN%*+o{0Tms4Pd#+J+ST`8u)7N5Xpv~>kpF}OU z3F+R{%RBH=m7`^)E-#v!PZFTd)@V4q{P^ z*{NJfb`UNFkE2L;Nq2)vU(o}~H{%eO%ReNRxNU76B7gOKT=^5^O{h&8Il|Qi#Ob0& zwD%<-m;~ZsvzNRNqB^vl6es8bE}GmEYm?)A#@W#KrjlVh0elX=0NU7+1lza~y-AL- z5ky)lUG#}ddmfvwz%_TwbbZM!pd|<8!@x=4Qf-OFQ=60z9Zj;*F^|p9piF+lU}W53 zo~B%L!ha{WhEn=whp~28mu?S`r(>+8G*u4fad;j?n;AbD104wFc&J2&JtfB9A#chBvcecLQ8*YF!xWJTF1 zaNW3%7TJ0}_S?*-&&#C8UtkJ(Bh09%C(Wd((qm7XsisB+Mv?jj%xUI!95KC>s;?Vl zB!67Rn<9k^thG`<37&O-;rIxg6`9F-^tkhKLtr<{{G`s$HB=^r+C^OoheRQX6+ko| zTya8lEzuvFSxXgLak%I%(U7EGXjoTQ4&buD+^(U2$xypzd1Y$p9@HS9nS(Zj;L;t! zMZ>165iC)`r{xfezksfRE_xcNE8ETS34i)(dj7HHrK)iqUa4c;fQPU?H)h>o>&j>5 zxSz_4yN-Ar`eL3}8bF~QovvCGUBK%~*umBN`|6V5x5|94n4YgP=JY@nW!)L^ z)26r(O!NFII=-X9GZ18VsXvx_Wpi0u>hy*TsDw_jF0UQtazo>x7qcKb(xxwE8Gj=_ z-vg~YzXH7{RT6x3N4^Y#q#dUf1rI&6F913_+}q+cl&42Si>JNr$#)Q5`Vqs8DVkYDmd#y0O# z|8?N4^b1)paOtT;P{WvDKY2iOzkd%@W5jtP@Ye}(_kdy5n98li3F69Y7}tN;QdkIP z13mM(=-noHPLx$&Tp)f6Qp{OpzDeZ}Edg;OG_m#cQF)0CLGjg6sny0OEXjdbi-X;u z{6eZP5f3K?(>|fsgXA3>TkWvgq-~OQU^1guXHKNyVUoRzlk&1BYxkU&=4)LzE6;BOSI0{TPo`|lYrXnv}5ND zE3%VBzB@p*O{#9Ci~Oj-T(AdR0DYiHR3@9*a(qM^S-J@8I@-~|X8*Ac1| delta 1114 zcmV-g1f~0`3-1V!B!2{FK}|sb0I`n?{9y$E00bsUL_t(&1?`!?YZO5g$8(}0D8Z;f zjA)SrNugk)je-yhB`Bm5EWASS5Ad+L(pEuYNMWmm1b@Ur5mH!)SfsOvl@@6f46#r{ zG=`j?@39l!ZD#Lg_D++-d+^P?oq6y3-kaOmo!NACb)+)`|9|%k6k1t+rBdmG?<7!r zAZcm3K7r3kJ5wkWbiFx*q=!Hm%z#zUNMs{h`3!AX6$BpylOQB%%)BCBaSZ;mLI~Ck z#=$c1iISQJ@4(9h($$w$thmJ4{Z|VizyO#9X<4LW3KYTKtRys+*vM8sX%Y88mVZ_1`LV=h|7v%wWbJ&blaq7 zeuBQO0r>@)hzp3*ieff*J3*iY``)smUk}PEhY{SRR4lED{0kdrJsGS_#N>tJesCCU z3H8G^{Y#98`qtP%r02X{V7gBm-Zt1A1JA)X;N&NYUVmQaYJzw!u+i;g*MxG2e^20~ z7mO2;G+eOQTmvi4DWkpR$-AZtKP_xKd6P8;jV^H3_Fxq_84K_^j`1(&K)VQ@0Zqgg z;6%J<1NiiKb|RnfZ3o6>=SizX8b0T-xov!w(AR!;^gUqCjNcC^pci|^c2f5FWG${y zV?537aev-iXQ|s6sDKr46Q2*x5dACq19we()aYI{i8*ZsZBC{;rBZGmu(wY!Ws-S` z-#)O*XF&fA;N+vvCf$c|(K*m6CvDT~3r3?Ur_8-geWuz`IA0jvC$*#gE9|v*vXi;) zSMc3Jw#o&5$^}1tcrQs@!g|Db+%tNnn#8v8ZGUc6KVJblNjYiyZ6-PuZVe8%>bLb-^|2@Lrnc7*mxmCw~1?cO66YK2yLfebR z@PAIuhs zf*-VJTz{h$+twT@lOmcu)E^?DosE*VA)}uV!Y)-jA?J1RlwXXZ+@Q#<9J&XR{(@1m5=u%ya3lR;y#Qe?>XS;n4Pg zaxlho=Bap_zR|$}$`WO$&?lKJ+fXitk^+B$@~H{1tA7IUnBZev%M?EVV}g&o z7anhG3IWY&^Tz`ZupQg!^h&%(;Qc4#_#l-~=bV>P!6_>MSJDA>%fV)ATVzSm2%j%> z6k<7MUIJ=?tG*>WRATTXE3GOCZ6upXQRluK$0!(F^9*s_QFfV*;--?5z-cjNR_P=c0Kz4VOz!#E7;>!(!Uj`0E z0UHNpQ(korQXNPIQ)29KI(zJ$g10q=Od_04JV1G88wur{A9A6YgjWVs>SYAp%LsHW z;`l1jx=5G-imwvc?+11v-mt!-tWd78wcZ*Yr4Ge6&VOOM8*>3qzDh6{lxLJEte-TU znhM%_;ZtX!pWyppIQyt)0G%g*9C_Iv>$Ih$7hV#siI6#`&6wb0AZOs%TIjag3;)r2L04a0L|!`>Wdi07qb_ZVgAKsk0uvW8 zO%^xHc9I{&(+U@H>>s2BIV|Sa=uzpp_nAY_KzO_4fYv9JP{f5pjXs!?= z#d5IC+il`UO8UmSho?9d> zE;NVefCsa_7n3>Eswx|jZz$qUrQy~00000NkvXXu0mjf De^zmU delta 599 zcmV-d0;v7^2F(SKfqyqiL_t(&1?^Z%PQx$|O%S_s09X=<10YV(dvGB3?Ukw?011|G z0Jb!|i9C@%W7jru8iGf%GPY;ld~8pgG)<+Nf&ZO>HWYr}_qUjTM7s&eVeSj<*tYHG z8M$G)6z*sn1~zCrv{WLU%?M;MG>0}hu4SfaGL1lOpq&G#27fS{W^v^_Qnt`vZAVBz_@<($(MWDE?YV2lYm zS-4UF4$zVZY5b1%8=6F7FoKMMq122qLB~NCWDE>aSl?9w zZ%Dcl@11nS4}a_xhM`dk*D%5zEM1XnZwXvy3vm$igu%c0L8Avz`I>>1XJFPtjH1vX zpHC{M2b9*gP<~V8N30U%j+{aJMq?tL0uqVl(9X*H?m{m>eHM|!gQP>c5>e)Ld&Ki< zWXtP-0|=s~+MnY*JMpYAxL@??1ORJA{vH7LfOgWNA%C96d=w>rEof)`JwVoVC7V|z? z$ty6!L~3<1Tv|c^hC`{HB?J&vZG3@U{0zian?(eWT5WvtzF>xNC~eVniux;|D}dkH zMlcq2w@_idSb6CT92rDC=>-%d$l0~s#vrKFY7-^z1b{tR-< diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_rate_down.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_rate_down.png new file mode 100644 index 0000000000000000000000000000000000000000..19db6029efec0010058274dbb5184269065b50ed GIT binary patch literal 711 zcmV;&0yzDNP)PV z+b|4tP9|B%KvHToqv;D8oFM?*Bb>bsA@r)eMo++Zel zLA-^ik&<((L(dOxOJO1GM922-L;Jl8Fs#MncdyyCJz^mod0KwF3hj5%0Sv?CYk0fh zSTuZo+!<;^`^7rYo_Qxl+-`-P$^?et5C`Ps6f(hE=rcds$=4zMLL6wty%P619Ft{4 zvR|OZpUG}LJx26PkV!16CYnTq%g#$;uX-fF^d*QxBNf)zSS~Qb8fI|`VEWR;<$?oJ zB3An)ad8%|JY8@BH!;qWzfegSN%v#y1MR3YawBY|{RPAXnhTCp6Mb*R7Ma4nqmUER zSEyP@H#In~a0pQ)`FqU7|LaGCexb`Z^zqy7-)pan7WX@nUn6F1xPHv`kL(g=7zTG< zn=HLG)`&$54GYLX&Hq0==?S)<@#0G1|3=^Lg`XlR(STkl= z7954X5soRW8E>*X*2ym%HP()ZN-qc33=>+7h0IQ55!eLxfIh+5L?=Hp{-1;ui+7+M ti$BHuGkEKKPV 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 BSMUG; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_recent.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_recent.png new file mode 100644 index 0000000000000000000000000000000000000000..87bdd4c0f907a51d93f24b6e575ae96652a7db2f GIT binary patch literal 1216 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 delta 866 zcmV-o1D*V<2l)n&B!2{FK}|sb0I`n?{9y$E00S^dL_t(&1?`zjYZO5gg)=^4M8t?h zG>8bI5;Q9j+z8`BMUX56qu@^53t8m{C@8^=nw7soNZf>g3&j^Gh)5702tM!uCJRwW z;`p60J=~tIsp;wINq3+xoJ>7#-Fr@TS4~Z&tE;eL28tP2(SI{gip#!Iscgr05NwJu zrh?CV@S;>I&ByTXoD0Nvfl2Tev}%7Ca1*TW979iJ5)Xr4pj~@KfPPP^^t(uS0Hi@a z5dVO}+Vq(=h)A+$L1sP|z!k8wfqSGG-@RZ8Si2Q*Y_q|+h{?E*xHBg9D2wr$smCf3 zX9JFp!G1H~I)CL)rrxZ$h{H!P4TrgA&eeVrA2-vc#k)DyK!+1!_kdXwFKO{N14n>! z(nG0n>I2_^Y$DW|phAoxFt1=K*aR_ZyIMmvIBkLJ0C>csTS&k=G=z9ZX&42HxhmA@ zuXNMhSLbpAPM7N1@>@mxK`;XX(`#MMFJlKY2={{@fqw!%?>OATO*r*{b3jLk%ncrw zL15p#gz)MGPnNv305cZ>2b~ORCIQaHghwxZQ{a%CuroQ?L|&^G<+g!pq7Eo z+>7uEkdnNMXez)XVv@nDYmY0VLM#Cu5vMcaU4KjK5}<7~V(b#S#wdfgrt^y_=ccG_ z)M*ld;=^=a0J@}o=yWU^YEdW1F_7p48IGL1M*fSy+Eqn!oh!EiE7796Q>jGd6P-I zq zv*@i}y;uD8B{w-umSk?xHxNm)n)zYb6Z4f?Y%B^4j2sROOsqmLe(#&Mb<@)J_`_G7 zo~&t@Bz3ee%x3fc!gF(vW#t{4)BIkv<0+r*+NOnkZ>E$?lwI@0=U-UqyH^LSgKbYa zJh11;kalGk+Ez5zYJ;fbdgk9PD#^=UO?guKKzOnbA4{0GgH>+9FVdQ&MBb@0QB&H?f?J) delta 195 zcmV;!06hPX1K$CVB!2{FK}|sb0I`n?{9y$E005RrL_t(&1?|-_3V<*Sh2h3okKGG+ zRb6zc33Y6po^|jK1R=p1Kf$C#Ab-o?h)ruKn76JhTekBn9UQhOb=&Q2_L_Cljg8%}<1lR*wYW9HE xlhY7D;C%u1fYz8jp!MW51Q0*~0R#}J0vDT-T1&lp>d^oI002ovPDHLkV1iOmQ0@Q# diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_replace.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_replace.png index 09ace2a398abfe9065a79459e510c854442536cf..ea38d468f17b02020feedf21e77ee431637e75ca 100644 GIT binary patch delta 1146 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 B?h60_ delta 578 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_report_fake.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_report_fake.png index 81066b3164f6ff9bcfb8fe6e1b9cf4c3366c8684..6cac6da0624b1abd4969151808c7987c143ce13a 100644 GIT binary patch delta 1387 zcmV-x1(f>43)>5jfqz9wL_t(&1?`zzh?P|o$IpnD%n}{QTc%<~(v7ZaMPp=y4?^@% zMm-1-MrBGx2`Pd!_)rfCL3ipwq=FvnAu6R_#K=f7gQOTH(@at`oXjatzyJ8{GwZCq zzi-YrI_FF<3;yi2)?Syrzq7u5`A(%WLaluQZ3CsRR;v@RS$_bgfK%W=hJ$TwZN2bk zMa0(_rh<#XC15f*4fcYs$x)@vrQ8V+cpP5OfaifG;YooHgD|1v@F&4vt{sJZJ{a%X zi;!o68DI=ZQ5VW}Okzu_Ggrspr-OZ9xX}9C!TJtHJQ{qN82P^m-B74{2zojZc!eLU z%oUrVQ~&>~*Td7x-Ket!bqpf`B7u+<(CNH207`3a1! z>#bD&adIm}TNR}z@W1;7{FXi(eu2Ug@+IR-s_-Di+NM?EdZ5kfD4Wc;1JxKl8qn=P zFQ*>RHvF{7YNC^Ff6!P>zCC&d-^T~?}3w29bQ#LgnhI5Ru*!i{2{(x7aKj7@VxG~}Pf;V#V_sEx9KjbmMo{R3Y z{o;Me9C8LztxPbj2%iI;hl)sNBTuuO!k5iF`oAED&QXCB$DY@8bT1|X90!3OvDPSc z%(nCff^_4-V(>P26I^Kh#G{)GUInj%t1{g@_@uS(&@0acY$}(R?X2emM6{VkEF8tcR)6FDO{Lx zYNGBMlWU*hYiw!)+iSg*ifS}mD2%#ktewEFRMvqepcP<2%5kW5JUHdP+T_uVFrsJz z?0y*RmiugFN$K)tH{hN)yy_H3_kpjnd zV9z<7kx{0=?lE9DKg5RUAXX2h;-c5yV1Lg*FQ)7Ybp&`H1o{~!dSB4p91L8m$?pLl zfv><3kfL6c_C@U*6FR>G-%&W&R3}01b{Us=JNj>OHd~Q9Kx(p6&_4x!1c7u=yD<^> zHL&IA-vW!`D6vK{z|zcTskcC{vsDiW6n#qZK7Y9~ z5!Qq#S-UdV_#AbR=M|Up)dlvZHPh5_7O9#qxAn;6}^0Blk z&%TVFfOqvhm t=m7dN`%mx<_>kL}+7TLg0>kME{0EaSxcfF=w-EpU002ovPDHLkV1gzEsM!Dj delta 1364 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 RaxMS>002ovPDHLkV1nh&g?In} delta 1302 zcmV+x1?l>W3x*4jfq(ExL_t(&1?8DbXq874$8#l%ijVph14RNxP#1Nf8+9SLC|$%5 zN(IG*3#*91UAqv32;xHU1-cNIZUhSzLBXaiC|G=KTnVBe5vuWp60H(n@%R6{lbkzu z=6;WRueqfM{+Tl~=lsu^`_0TZ-=wYWKQ5(an0UH@FIhK}B89WD#l$(%! zmv<1k)&K!|32+pA6A1L0w%@@;FbFi~g<&usXgz3MECuVqN)U?wC+$D6R_;+YMo7E_ z_5#geU(V9d4Sy!*iH3a#*a2<>U!KyiHVrVXRIC%gm;OSmuxQ%&zx*I=%L@@^bb@~;cn7R(%;-LD zhPURtmFraIjaxKNBhEVT(gc5vz9Mr(jC+Ayu=?e{NPqG!N#gZ*Is8L?uIrDM7-^rs z51eSuH+9;?k|D0%?pBV+Y{%NM{>6Hr7h16R%?Ag|(0ibe;ICtc6RnM|C=s1H9@sbR zm8fw_2RxU7lglaQ(QXJj!H6TGJX6b9XB#Vp_jyP@7@`l+pcy*gIbyh^hNmgQNs)!5X=Vll)Jym4TEJ#r13x9RYo})#%VrlIb4ILu$(fSx2lZjv@2da zPp-3#PiTTAs^6ct4#^K5XR?^>8NA1kUgR|R#?)Iu)hTzxB%%{-n;pOs(<$SY5`NHE zBxH9*9m_utfJdWm*lB7gi_Y_{C^j#BUyMD0q<>;EerWVoQuTr4WPubng_4Tvp|pmk zdBRnjSH%<1)rS>*2DYNuyrwHb_XKorW2Nxf#ga5Zw|ONwy8+loqqzQ>D3Z%Z<79Qy zoLjYdB{{nR3_&$&==?Qdx-zSF%d>iBf`FkNK(f&!11MkjJuwc+9&74F)D1WtD&xl@ z1b+b^`>v{-HM|S#x%*ncc|x1WZy~Utw+=tZDe^8A609JNJ@@!f& z!FB2D=aKEQ7spPZD{d#ck6G8WYy-r^JLZCy%kz}}nhkiCn=oDrwBI_>U8Vi(jDI`V z(L)UV@_zESXiH9?xu|j44y4+0%`h0uQ~ zzok7S`Y!1QCpqFb>LaK+4g=`|XF#JwPjL@Oe@RuRQ@n+M%fWu2`I=X>MGt^Jkp7>S zNSe8(P=q6CCW$VT^*~>9`j*gVsY=b|$G}Y~m4AZ^Op_Os|8MyO2#p)#8V{P#=l}o! M07*qoM6N<$f}$dCv;Y7A diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_report_personal.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_report_personal.png index 7f3098c0c2ecfe9c0eeb938e56be203b75cb8ea0..d4898772577d5f3ba4259aeb46418e79ceb6fd2e 100644 GIT binary patch delta 1199 zcmV;g1W^0737`s)fq#lgL_t(&1?`#7Z&Xzj$7hI$1{I7of^C%$kcA6c6XdrmFp}bi zXjdl21WgQqwSNROF+tcs3_mt5BvBd^nn*%SY%CzKD6wT>X`RUB|?|`Qb8o)uPxrO|4C_y9WsI3*KMx!q@fUDMmA8mv}%hf=Q z$6URGS}K0yo-Y?{HWECIycN72=?39v*i?Ty1lpj9*A>HV~xaoz$(d{88h z!rxAduhvc<-LCHk^D0S5;3xR^fmZ@?n#t4nd>XLTO@Ed7w4t!&RM8WwCmnaY@g4C>$$!LZ`Ro8`OK2RQqvW^^PbU(4N?byg z3Fr0TS05C~L-38}=Q;YPz*yv$h4uP)FB3ew8L%WgnV(3acc9I{zYCqimbBRx;u}Ai zEMUDqN5pj}Ew`j))}{6=@?x{LbW=me_I z({&oUULPwAKo*Af8mt#I`X3xa)c7vNixYT5_hwBl7@aR$^d zVm1~dcLD7K{d<%2`i!ZrG(~nTV<=s%=uf`!y7tyg-h2YhC-CT>z(c~Pe6vj^W)c7Z N002ovPDHLkV1k8gQQ`mq delta 1092 zcmV-K1iSm73bqN5fqx)LL_t(&1?`#7OH@%5#~q0zh*CtfvL8et)S@4d5$Ud?h!#Q8 zDhi@S1g`rdA_+=2E>c>w3ZkMis6|1)kbXdk*di+`0~3EhrPlQMPVYX>jPK37`C;S0 z9Qbn1J@=e*&wcmY`|iA{s3=qU36!5eNk4&DQ1dpO&Q()6qhoX%6LV}pdV@PU=kw~sb<>;tO6BuwUcyH0O%#eU`H2DswR2q#> zzmY>l0xY3(FW3Zh5WEF_Y^opd`6lIf%p0UpD`2TD)94uQ0mIhGlRv`uW%AFrpE26( z*p=A?#PJmNePB(1pH}iNHm3vn=1mp(v>~zeWYGcqmwzAfHxLJUk2pGq?LErrol}UT zliylUrFKM`!R|e={)E~S*ivW-Vbo&`XONG&pvXtSwCTU%`oz)4fR5)}=owD_q>+?-x+4f zb(PU67k@~R_W<6icei<)k-JkOO6Ta`9mQ)=!+PpEc6Cwo%fT6^;o1X3_|Jygq^xJU zJjMI&J2Kh@CWn$R)%w z>P2;ita^akJG$;#(s9?0?XXo!#&-kkFvwIwJ4~EpEg|(X{G9dIzn{oLiBUg zkxR&WlBiCF2Oex!pp5+}lWwO|SCJ?sbT%+hfHLv~NMI-a`#~cJ`%0m&2%o?ml70&J ziGTJ*8bV=-#4OF(19aActJWx@ET7uKW}7$+lJiorYdqAg+qo*V`=^B~1XZyt1 z*;q!Mzo-e=dbaic$b`Rc5&TjqVp&#ZQ;5`>u zXr!E!TeFvIB0qlxY_^nC4ef(K|BjT-pL})_Wx4zW%1@v)p1@!Iaec&P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NE{YgYYRA>e5Sv^mbK@jE)-~k4O z4ibzam`FquI*6grp4OJi#)dy)Z0rnwgN~AxR>F6OA@b=N35g!hB=4I%x3_yYd+#iF z#kf>22yMBBJuvs?6zaer68->r)B}l23N^?kI&j+~`IKqIRX|<<$R%V0 z@-WUj&Kme{Agd7hTxBx=b`8nLiVbQr3Ia?+{$_!^m)7+Py+W?tZ(5im-CBJQ!2AQ= zTMf9Dz#f6kl5VZOB*0_RgQ}LmJ|WDIZmn{0b~WHy0{7JcCcrU+T(ktZ0~5GpBSFLt zH-IU*ydZZ|0xlQ_qL_u$DR}1>Sb$8A5P$p?aBj8CEryHf7R?(&b%gL4iEnH>xTEnG09MtyUvyXEVm+JJ%8|h5&=6=l~N?oqu5#L*PC;z_F5aK%Ua! zmdFvC!0Lzjb8<;SfI;PpkmWIY2D||xkmLxtPpKsVKL5gli$%PeRrMXfvnF5b_-V5w zz)$EUV*P4P)xV-9kh$|qf9Jb;k#4*Ai z*-nuTOyc<)Y8#=A0Wjn{_ER!TdW5(-R!`|PlIKEl4C3Wi+0k#&xXPDUb}a4zA0NR? zM<9Dje@c{WSP)G=g?sOk$&zXPV33W0Z-;R-I{6OB^~ zn;c6_q6xIX^=~2JPmomOvp=fgDl#8|Y$afD2+ZhidVgMT#}|PHVDk~O42cfv;Qz;5 p{w?(l7x>KCE2m`z$_lipz#XSRsW@_OW0C*>002ovPDHLkV1i>niTeNm diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_report_violence.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_report_violence.png index b889dc6d500785b22d597632553022be0a1408f2..3bfeee8aa269fb3f71078f9c0873b3148b47ca7a 100644 GIT binary patch delta 1355 zcmV-R1+@C63%d)Dfqx}QL_t(&1?`zzh?P|o$LE-rQc$y;ybva8Ae!JMQ3O#m)O_io z1TRPkijpZ*MlU{@dG8{Ml=u)O1cG+OCg-6yhmyYnin)PFQZPs|9JMW&OZC> z?>lqm98cha-|Wj;d+oL7+qdsKH8uZp$y9Uvjg5`7iSIes1AjX+nau5KjyESZg5L^O zE>l@HZsM zKNx%q3t@mCAb)jr;N*K>Uve4G9pOb-562*l9K>ifXqvQ-1%du;aH6LXwU7B~*5PC@ zyal`9CM3y448DL@p=YzB6dCM?gOwp_W>?`3M7DuOy_dYUvVW1;G^+|Ge^RUVny2*yd?jdA zeB}hM$qlc3zeup_6mb!916wVyH(*fEX$h71>;iK^C$WJ{pMgbC54XXWIXPXR)e67mTTz}43*blC4)dT-PUBW6;4=dwU>W=ZF?lzq zODy{puz%K8Rkn+he8Uvj1ZN>h_F|xoBS*A|{hdVf>l^rz1$ZmRy2JtjJb{a;Fb&2* zCnzL$Q0#%P1+n}VG{ouSV2^g)!COu6JpkT>pWqI}L?`w(&^<|8b~?dWC!&+h=~@-G z!qGrj35T82NO}$3MwkRGJ6&nG0h}Bw99mq1gMUXrH%$9PonM>Ui`j~}*SJ=PlVtb( zr0MUo^z@V|7n5Cu@l5dFGa9Jd1+Rm4vGd^Ms>`%ECEy~ zqc?xZ-Ef%*1Itjv7azyKkILWfB6RGDyJR5 z?t}pR0cfFCM1ligF6as|*hG*t0K0&7UASo4mNgq306q2qd#6v@f$S5w!gOmWYt+Vh zYyieA=LN*pyS#k@6`MZlywCvrH-9qw2IYdbseJ+!Tfnga*b}&hDUtMf#SWk0|8O%lonyWmR^fp!s-QYi!#EH8OMW~hiX!zNSHDW~6moL%ee zIcM)P=bUfG2N(QiU)DNnuYLAD`|?e{eix*EZ=j>2V-hsMRe$wsrB0p+dJ#DJi_B`6 zTc_r#b4!qe;c3W{Mb))dktZS@2~WYNptl{8-%$3isOe&E2%rJ(fF-aSvg9m^dGMiU zFsWF}C7vRH%U}+?4|9XLBY)W}bU2jG5~2q8I*@=N#x*41jYR?;G}$9w1!l~X%FkP2`P z9EEkz3Nt}L-v>h>BtN6<448ByL7xa2=hRL2>`r;*bALsGp91Y*Zn%8lf3>Ijcz8hW-P19AYEVt-VkM{ziay;|*{Ie0ehQJX(F> zX*;0*<_}=^8q9zJ2`42A_^QFJ@FMJlkbHyk|DBk^s0{0))DMM+;8_@3BF1iy;!jKN zy|5B~f`6Fo!C)~APdKAus`upgl(o!NzFp%})AUhT3$Z0v8{1d#9E?f?Z3`&1#p@$< z@|e|^&Es@5D2PoE+l`N7qjQfs8QjcVK{a;o`0Vhjxx_?hKb6@jjqaBOqqF1=3_<01hTU%+T z@CE2}IRbtGCv7fMI3?h#-RtN|XZ6$>&kX~A%~ttk7-IcV)(Yn&xu#pgp5*a%(0L^N z5wzZq&g%o)hapR}AvHN)a3mo_%^C5CIqTgM9bM*VCS=r z6yri((JuohU(1$)4r1EHS3&0#BE1o;+#K>-SVs%D!AaB7D3luih`0Wb~T zHFnBYdJyy*)krwml~8&GjC3P&vPNnO*MEU-YahWM;7ib_*FwrBnANM2h%8jNRy42{Fw-#RIrnc8SQz#qj!0pEC0h3S5 zUYS-&-C5WUpLMZ~z*SdYVG3vkIc+9w=2D7{E+qD(*+yAEU^T-P^^G*cI}JC1m47iA zrutYLts(iDS+-Tz+l|ckeW$6|&#)gfWk2grpCi6Oy~=qzuqhINzn1?Rv9C;>+5x73 zju3VU+!ATgAA!E@0KpCed!~=AKz0OvXS%gVI$W7Lbp*OPU>mU)5L@r^b_9BD{;Tn< z4%jy;yTkeu5NqFS(?{`Sbs%xMW`9cP2ilOFcOziuzs~S6u^l)sM!70>w6Ps;!Y*T#E65MiK~a0>{lr z?5E&fFbXdA`5)4rvG;w9p8=<7CO1||z{pU+Ce6U;Z{U(fmWwzcmZjhs;Pgo*u*IeD zuPtJ%eYYmI*MEyx?^3JYGT|Zk%ldj*M5ST_hb`X8CB(DAV%p7}`-jb2#YSwqEvVa+ zz)BPBH@>Z`$GB1n_>uX&tx;QC9^>UoU{2z!EdlR>-@qeo$ov|xAAAG!xuL(OM}chL z1|w-N9=rpjdpK;z;I(!iSd+G)lb>T?7w8+KHg#$|5Pv8(nesIJs@w>E%5*zpV{MwW z-E5ysA>*%MJ881LW_vYq?Ul4Kb+JwlZqiKu?1qN+vFJ=VSjxB~oNQ)X7jg|>1)rm) zPqE7~uv~oTHKfg#CR>l)rkHCF?Ik)56vNzyDz=GFh1`LeL}j>+YA z;MJGx&VR5~a$1|T7iKl^>Q|kWeG>Xc2l^f%En>l{!s!Rhot{YNVgIoy6<{OC!d3}7 z?XiizdB)v7{4XqlSma&Mr$$m;{oDve*@d*#Sf1zQ$UH&!-Bta6l0eyo460FmOTxR5 zw)G!s+C@NR7i8bF`hPotSm<5QCcl8{?0Z0A+kdMIjq2wbe5eaYfK$)vhwsJ_n(r3M zeKdaP6Zmg=+K(5qoPGpzDks59)Sayn7EM^XM^rft_BeE9aS;k4D5??Ph> zrG|mqb zY%V+jjMo9D+`N1jUWp^|gBjOH0GW586Mwd^nr(gWBP-v9TV$VvzLCIux6la|o{hza z7~c@j)%QI^eRSaSzqlOrtJGj34C_MK-%MQ#hv?*JQ;lN!Kxs(>lQ+` z6{x*exd-O@rQmt+l6dJD*8thx?Y5!22l<<_iMiIl44wn|^;s=rJ_h7xYY#t-4u5D< z|NhukE@<1Fcpn5wXLW@118UM}GA$mjwAhX+frBR4V0>FykFld8sy zoCHZPD1o)$OiCC(2bZ=j3B?4y07;7Z+A2<%iIm2uBwEu6Vo~Kic!gPga#z1PGr59H zroeSpdELM70X;}Zz%00!q}X(+=y=TE4@N+ee%xBm+i|Q)KvI$zXLuiY5=>i13VusI zeDzBlf?H8ef_#136un~7>#xdpGO)S>DbPqa)-pT<^!tx~b<^G3(-!%EMLM#2qdH&@ p*hSz67zZ?{z@P$y3bd#Ke*uci$as<_!x{hp002ovPDHLkV1j1Ei=Y4i delta 1234 zcmV;@1TFjU3d0JJfq$(@L_t(&1?`x>i&RMv$7lSBo?xPp!LpzrTqwxmB}T4nq8#fc z`VU;H80mqaTx5I(x4VI0U}7ky3ZjU~1$&$z%A&}jCX2uBJl*y4?WuZG-EU^rbzOPj z6x398b#>LZs=MEtnO18^!w!7k9cT|Ke`#sy2j;iJn+N%=;eXtJ#D3dux8Hnr4uOWx zzz^W2kgy1o8rq+5I0!$3n@YlVuxABKOu_G)iag*F#;L3b4Ex}B!Aa^p_$a&+9(Y%> zU|(sVoR(V{ge8)&?n|jqFajQ32&HIIgVwp@_H(?ps|{_cK7{F37)U_rJIRTNrmiNuI;$>_ir1Jh-zk;QmaOq98b z>F#hP1^m)omNfl_sNM_3oP4Vnnd#;Fw8Ua`zT0<$^z`jc2d&z)j#7J!%9W{JM?x!V zTaB%}nDP_VF1*Dqk7mca`(6lW6PD}nY(qk+i4l#DW zOMkzz0!UJJ{{l7vcdB*)L)m>59*fU*fw|ay#Z>G_wTsW>iVLU#AV`@w-39Dr_f@<& zQrZO!W%m`c)`0B%Fu>>Y3&43l9I0ROi+0rJgL8ERu*D|KoA1ToTOCDgWfS(tBACw# zSnesLf5tvqfTzey(s}efModdL@?UXpY=69n{M9E-mrdlpE@hjxn9`L)xkSn>4E-r| zL2B(Ogl!VmSKsuV-y<>J0H1?@lP)`QH~a^D#Qj{#W^=pESL?M_G1B_rJAzF)C*9@} zTebsA8oz%`xnol$c=ZRI)1r>h%K&y~(3`48j4xF{x>Sbtr>3F~xFW`R9ij8SAAiVy z;U9x@qf}utjEF?%Rlr{OLuZ^m@AJ8_QOE%!Ot7#y3G?2B6D7Ww^y(3A#cMk;3fE5lCbH*>dgNPZ-$-zMj7MXv5*Rol_EwF*Wp-% zrkX|qKjAOF>P>70{Z%px``fok;7f&R23F_wO(0RV18$IHH?#}K;lr@rz&qfczS!4_ wbY%68nul+|R{*Z=4{6weVF!jCXix_}0W*fmjZR-mzyJUM07*qoM6N<$f?)D=4FCWD diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_requests.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_requests.png new file mode 100644 index 0000000000000000000000000000000000000000..2752acd1d8b7442ce9232bee0e336020844cbf4e GIT binary patch literal 1106 zcmV-Y1g-mtP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFyh%hsRA>e5m^)}xK@^6wq7l&| zMWW(6Q9(g4zOYnOtP&N1g_Y@Ig26^o2wExF`7Eqc7=wjDNFgFvCWWYpkbnsRA4#KP z9=;#zcl2I3JGpc3?A_UA!9DOZXU?4G+`BtxZdFxfSl-popGU(3Yb#H8x@}qyGbceDn5?wWKmiX!Ra`~qynBQLU2@Bp=M%IZdtloG|VZLDrn8hwf{4NJo2LDu0C8N1X68Mb#p zNWCuctU7p+R$?af#^};YG^01AY=k{&4Pq>y>#qRujl-kB*34~SP3{QGfi!bHz@%;? z$Ji;xehUbSNZU@|BcXZiG%|U`o&#yoP5eR@lJMrb%%6bOu{&WdVsHRV02h)A&3O>n zJ0X{jwop1}=9oAqVl|K}>rQBRux+jNT}+0FtgD!dW0UC@H`f$${99v&$4R}~m`pDW`W=Y z1?gBhc{pW{k`yqfls_rH6l~$KgCA2r<3}KUc*%%(jbJ>$_L2pz1gh*nWd|xd;B5!~ Y06Ll!y^o!^+5i9m07*qoM6N<$f*StN7ytkO literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_reset.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_reset.png index 2442830a6489264de2d93398f8a56755f9df9828..a305b62441f250271477e1b24d45e0b25a9d3fdf 100644 GIT binary patch delta 1110 zcmV-c1gZPQ2KXha6N2qB`x7FJZCnZ4`w`*iN*^E6jy=AQAom=Au=cV7SR zJ9FpGIp-RSMHbzG=nh18Ae(m}9#-%~BC!nZZLrv(l55sA){!RTGcnodO4liH?(pf7F1))!b zAUSZ^C5s=_-G&1&*DVq1XTlCR4+CIY4;4$@##*UEJP#fkQU6lD1uOgnp?^Lche6Qx zp29jmTAuqNd_zaV{{$7D1zb8Zz7#q^n>>E<_OfRP9)Hsj@Oz=mMg(+np&7JwQOLES zA46yZ{88%i{K|XYnxPkmJ1T~_r>z7)=z$XchQHa0upxr(Y|v|oytNh?-TW01s0M8f z{uKQ6CeT{YpLU}^1*11&_f_`q@C%JD){DewQ89nv&kq!YfyJO#*`tAkd=4V!a*)?^ z(hmBR7=P=|=>16r=PDbuDKX-8tJwF=l|KC()ab>|doKc!-2BW)50w`OPrt4TW9gl#1 z_lo~f3CMRun=JD+6N+Zgh<1ezhCl90>?%#CLm+o`GLtjyMpqF_mFS;TNep|IWsodh zvVVN1v*$E~cWQDnCB{>gz<&$bgcD+54SZJuNmq8I#S;#;&`1o~N@%O~Ez9UC_@Y#r z@N;|%1sFh_78N(6&0IM`=U`ueJOT|Nmbsn28b~M`gGjyr>>g;QY9b^qi{xF_R(JG6j^i!qB{`X c0e^SkAI<&*B;De6q5uE@07*qoM6N<$g1-Fh82|tP delta 1072 zcmV-01kd~H2*n7HB!2{FK}|sb0I`n?{9y$E00aCq&zV4AR{BU2PH+hJ$RTGJQ?MI2SqfIB#n?rZt>t@B2px`+@?smH{(8j z|7ov$v#ov3-sfzba=!YvzV)r|`+whFd#|?qCCW3-Xa41RVrJ z|N4cHbTW7Ve4@M10-C`|a2d$A4fv!LzRZrwlBnUfh}J8CXn~eM(h;u5?DD9 zyQsL1u#W=oOcp&twQ=LK`N1;++%eoz*JO)HGzM7)+z_jgg^5UVIKw*_yfFM<(MRV9 zi#H5WogtRGBVJ@OFLB8FgLh_J38 z!W_Zm>I3XrYswLleHgOC<^r_P^4@W>XZkftj;$u=NAw=QMnf8dm7ssf+|k9Z$L9@j zvN^&}XQ8E_$~T_W2G1CmFlc9aIT&05^dk8L7KNR#O#@bbdmb6A0?z^`-Flry3l?}D z2b^kld4CBRIBT4~p)atG^jDa1z4|*nKJd%aN}R;eJDU*79^Uoij!+Lq9~& zJY&G13z#b}+EX$F^36rk z*GuQV8wlE4w0)gVp)Fji4F9XFd^qkl&Qd>v*?-`II!;7_UIFepThQL7^=<@N6K5HO zZ?VboIg4vYQ93H@H33q!u=j*){pqV%E4r9e7OpK4&h;kAQ#aqbElO^{UG2`hR` ztmrWs>?JJF2ycT))EtYB09}L@avXVxlU?Moa>R9l`?x9MMBF$%<7ME83HGUvF%FMS znt#v{Zhg6ZFp29EQ4pv%aFZdhs$N>Dym6z7f`6t>h(0#TH_}c}H*hjUq+`X%$e@%4 z$Z^!<&Aou5@CxX;oQc(p3xz5o#(K_fC zAAe3Z4UWGIpY!u77uwe^J>fbUDx&%!z*Sm{3$j`ih~*UO+$c zhGnVGzi4b!t1WsNXaQEV)2%L=LRAO_X%`y+v^~xTjo>v1i*}rvVk=(%8R(-tmt4dl zogcB%oB@imKacn>LPznAkEb;Arp85ar#)5c2(BNmCV@`h*l`o*6%?1;`cYta`YAeo qw1JNQ$oQ_7UXs!blxE<6o`IhS7Q5$(2J+Vc0000t^|Rxa%8W3VsqgQ%#8 ze_P9)J)ITxLas`72iW6|G{?2f5ixmiu)9LQQNV@wi9!=2Z-)ZMMduTmZjSm~N=^bt zw|CvfY%VZPTfVPS zRa$8W>zBs+4sY$w9rJp%Y*M$!%U>O<%<3OYe4G{1GG#O8qgMxPm2b86&s?FuyzXkT zK-s+&vMPDZd(-}vTs=Bv7bDYm>51z*r+dgAOZ&jIqW5vhv|a93e{@V#Kg%C_{0Hxr zozg<(Oy2|ctK^kg8b1r(Au7YL+hJpO;nB!=wtEa)Ip^rf&;J?h)pbnUF79TrNG^l< zS+z@N>o+erCzj^-qevt6^+uas#jDJx@2`6;+AA_m{RBhD=4c(0U9$z^O`ljFshpl% zd+mCYzTZ5XsOeF0Ck4%UJIE$qbp)IkQueE82bD-BqdFDASe8 zTt9cw`VZj^Wgo816c2AX^;2TH!Y2Nn*Gc9dbPi09zp}MHS?<=C;E)K;d)8Cy9+qdQ z{nPqzCvy9`m=j`8)n!jcvfO!AqkeCK$^H|{iDnf{G1gh#8+Hhs@IINYu4A9+vvIA% zyr`_h7MmwMJ6&57XuNo%x!%mLmJhZ)jPHA_K6m-Ns|9+2dY!RuXN(_Z#_JT6HOLt# z_uIcRVX_R*sxL76U;kZ6VGa9y)8>!bC*A~4-)qijS)KJsAoF7!3%75A%gl>A&U^b6 z3dySXE_;3NtzxY45%0L9Q^vE}<;fnwfZ4@tI+iSEDL7pT3T{-}Gi zMz_O0hN~$XO`Z4NTYGU!IICOo_OAF`vAzoJD+g4pe#@?P{w11e-_2g1?T|gEB{6;B z$`{41pOlLB$L9&0FYlPS`^Cg&oqCy*$sxH3pFU5USr_u|OiX4b)3+Vs3jY(TxWuN1 zDI1r`TgzWDo^bm4=l3%**!hhnPsw>a|AJn_;f#4R{;=MO$y2wyQe|Z6hnN5W delta 703 zcmV;w0zmz%2i66UBYy&&Nkl7A_j~T|+;iVkAP@)y0)asBWL!_6TvO<-w?@(?Nq>tZ^+~!R>5Qb_f(OfF zejhjkWs3d45dU%us4G;%Fl7?o1PmmIkGTe9(rREcFzAWx1v-E`#>Bof8dw2*@!Y@bK(}dIoF)VFf!Ai1cbc4)k?@$?z@)J-Fb>!NoCP|8qrmbU`BQ-hMtobA+*Xs< zT51C|z~wB9?|(2*Ve+ehOD6ABj`1g$_3#~NETw_tS;WU28X>~y zOJQKE5%U;0olx6t(PMD0IsXKx&$CRMOyBdPH82P0^9Fni%!=9?fLG>%C(JCq2Nvcj zK3->6y#8*}+g7XrSNAu)!F~W+Oin|>orvkrr;Zb1hJP8;P1?+23>-_CUAtIaECG5F z3^W%ZK8}s%mE$TsuP}u>#PAM^sblm6Ih)B@o~&G`;jZ9dfz~cxlIRCBtDKE<~K!) zZ=lO-xR=L!%l`-ZW(U&2wp-NJ13Jo}F zyyHQ61|CV87accBdRKmJc~R*lInBc-E=XD{sW>_+tMTd7{})d4@EUM`E^UuprJQa_ lyCThjKp+qZ1Oi1P=@&oNs!H@eX^;Q_002ovPDHLkV1n=sNVWg~ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_saved.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_saved.png new file mode 100644 index 0000000000000000000000000000000000000000..b383a20f0a9aee59818c3ee7d6d3298601887771 GIT binary patch literal 753 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUV2bv1aSX{| zeLHi%w~V7mL%u7oq0>4KkM!)72c0-0B)nOfFM2gC72t@7?hZ?OYOfGx#-(}bh=|xl zH)TyHDM9^k%_d)kB`1FI?l^7n=G~h+v-fgaFw2{7&cFA5r}d1rR}a0&VO0|UUMTZ@ zb3MyE$LZa9C->IhyxwqGqwCQmt8ck1_qbPoV83N3WifM`dsq^C+p7ZuE zB@Ph|8>?P4>}YWU>e|LswAzee=XWc!+Sz+1@dF8;9GC*k>>6`lD#`Ag5habg{{5TA(c@owFWh0TyEl9G*IBP@|1_x4ZYcPndpUhp&Bb z-$BO!cbDGe3hvhZJ~P{7C&TW{zmjSD XbP0l+XkK!C)i) literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_saved_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_saved_14.png new file mode 100644 index 0000000000000000000000000000000000000000..d3587d73ab195fa83de4c927f15e7621caf537b1 GIT binary patch literal 1234 zcmV;@1TFiCP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGJV``BRA>e5nM+7jQ51&nO?zmV znvkVsm}V4)g;4|{4tjtEg;9eVMg&EJsAdg%&?GB}Am}j&DH@cbMNoqzs30h)NHWSS z3CoB|vp1G~OFEb3_MWHLdkyY_pR?B9YyIm#n|+V_97Ca`C08K10{`_2g#D`T>+73N zO&-VwU7#%-4tH|(W$;LE;h6z4fpB%e^^$9Bjb?e^2zU;n*=q)mfdy`z$yo@FgANeQ zS{XbF*PkKu46qCzSOko;m1VQWvMO&>#_}jqG zAVk#2f}~koo~{&(1-F5=-vsADHJA!AK_OTL&VVjp+F1r_%|YT%;3TL51t0_DgEc^U zNH1--2*!F6FG(aH*46m3_sg6Jn4bvbchU>&Oy+7pmJ3%IIjsiCA*Y(i97PpCufPN1 zNs$B>hulig2~2y-K!r zI5ovUKR|BS<@S&NEBM3JvYn0v4wDef1)o7TD0N76oT7F&uuQbsFDR1-tW2)ofa6|u z?93$fD?yc8p3^+_+2A{{Y@cmD8CR?ow;!bg{1O#6D?ichVN4u zXxMCMTI{HT*Vn+?qn*SJs!-fI*E^4K0zFR~8mfJ@p!kwOu*Da_5R&O@Zk?;X=^)7g zvVAQ3g;VL9$Y%jP=}NpnHMw`F7Q)o8n#K;saO0oQ>xX*@X)Aw|?q0WF#k{{|Qrl+&>e z;&gBmXp`+U&9N}bq|^YZ)z(Ci9wj|?L(%|9BW3k0cVZd_voguw}|3SU02M~>n6tARcq5cVI|%y;s*Y9G)H zK?g;ZVRwn|7-JIF3@9Ec0m61g5o-?Z87X?B>Oie*7xO72HzA+g*F`NF!r-vH?;>;p wn&cEYA4rdfpq~Fgc5zKwas`qr5W^Mt3kR$Gb%-kCq5uE@07*qoM6N<$f{d^hS^xk5 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_saved_hw.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_saved_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..4130f7d1a98a1e4b2319f97f351fe2c3b15cf350 GIT binary patch literal 1393 zcmV-%1&;cOP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG+et)0RA>d|nO%rgRTzdlqdA!U zi6WHcg=LzEL|vE#;$<0%by0SahzcPRBoV3PMM+2@8g&zdOkGqGK@o&OmQnlbz&ikb`tK%iAHFM)r9z{ZpC%g3m+VreL7z7;6;Zh0~;0G~(@ zkrw-0vFKx9MKQ~x0&noN=d+SaJ$NQ3VGU!JCiB|n>FBq*`9*$P1%o`oFZPg zq7G#x#_n;m6}!sqC;FrtJPGCzXDPS^+zj+~Jq=EPgS>5zGTsIP{Suf~BlhnRa~rxl z>-yDpJ0yt8Fom?&=aSt&^Bdz66{XGStVFO-5}Bh^O7jX>OaL(r!fGU>UT}H*J+^ z?`#dR^d|TB#FN<`SF}A>*j&!{++1c45B=h6%{a9@O=j7Qpzi}OOD{r(N`4ajS(3U{EXqR86@l`-Hf(DrV3_buKj?fIZ#HANO z3>6=@(`$3q+*(bbjZsnh+Ih1szn}3s_hjA&oOBhJxlI<2tuB~fdBxh3<&&wy`3~S8 z%?kKT$_d>hZ~(;g6#_M8O^<#X=t8-W%BzZ35VU24SsZO{(s2ix8=pDIRjg6_6z zbQfml*l#g=U%ZJ&ut%8bW4-Ay%gU3|wK`hdiSb5oHPGSFCh!zU(R5Sj<@N+v3e*yZ zu2OweI9fagKf1)#@y9~P8Oc{WIzM9BH@cNINAGDC4M|?+??7GG%lHw6-c_H+gMYgw zkIG}GZp~XRfG?zysbC$@i%DB+iXI&w6=zgI<@y@in^-||x5@}v zjfw@V2L2D~*Q%+cgRCrIGSD&jJspJkf4lw%M~i$_BJNLD00000NkvXXu0mjf=zDuG literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_saved_ny.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_saved_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..c9966edc0384803c547607d118ae1838e92bd62c GIT binary patch literal 1417 zcmV;41$O$0P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG^GQTORA>d=nOlgJRTze6>u6bx zBm|LEbRdN?0)-;!Xme9wbZby_BPB(pov@3NFsSIFkfNfC3bLEJv4TW%Y7~l&lM{5H z>7)fA*?25;boad5wPxP^yZ2uE|Mx%5rVn1%yT0{(@Av)3S^KxrGYM9$R&PXBI6ugb zFm9++DjUMQI|mv+3v2|<>^&CF?8@$GY(5xm*17o=Gq0--f`+DpkF813U%+bt;%*-? zncg)AK{I!Hckma$iLpU(@FH+q5!a`Dq^oV#*=O+M&Mv-Q@VUhemeKgMGDOh0&~)D9 zZF9utHHvQx@|O88GG3ULbpW%hgWbln^iOkmj=A&EvJPN}m0fH+OMT6AvT^_IocsDY zySK;SOR^o{y9yk!xOLf>BJ)a-q-+jNosDl8%noZ+#+_gg>;hMVOF+Ehd*KUsF1qR} ztg*A3qK|O^rC2;8Wr*$1A(AJyrEHl8&~KIY!TnWwl=(qhzs~s7Q|_0U;DFsX55i}G zdEkP;A7G58*qKw`dFX&<^oDU;lx>d1g&qLcgWa)}bqo0|@fTfv*`Tu_eEvtya~g!V z=bDTI7~u7&d%n(sZ@`>Oj2EUI9{{()DOA7II(XlBmTob}Wg*vG`Dt&f6bhWg`a+;4 zX8=8Tg7f)d&QP;f2jFX}y_Oo^Gad>!oZ$zU4{`PMR%_o7Jq^4K4uL$D{L6~ijy!_I zYWwjHIHRp2AnvWDeYFauAKw$OZ+Zsb3q?C0VEqt7Dxn8V_K-Cn&*MdAli3{^d4P-eKDHx zo@Bx#2hhXq)=&CjCfL6&{LWl&p(!zHF9N#vqis$$Lgexo9manc??@(=96-$#K(*a& zYpVmd+6v#&sDVy=Xx<8>?WWqDZTb+>x}d&8rNntFHdJp zMC7^xr1||h%6!{|RAIK2%srOvHOyTClVwHpu5)!ta45K z+Jt>!>ydr{@y4QG|5xV!Eu|k)_s2!X^bZ$rAjJ{X*>&qz4h}t}E5YBs2-iOTKA>H# zpyslBd*$2nHCSt@y6hSLBRbpX8g9=fTtiO}Y8*X0aO?GxZ*kUi7efNEx zd+wVzGrMm)I@;D=fm|z4%Qc(H^?JRV;wab;c7h`8FC+`#ZGWv+`&R_v77m1Wfg9jE zD9gk>3c9uk$kPDfK`;ZVvR4E;kfb^D7J^8tF%6C<5ti6C1NRBG)M{!B1onf6U;(Ux z#~|L@_}VtsUQihTyHklXbc!qD6t}g}R2oKVzpdFBk$+AT@w>qf)2{%XsiZkN#SNxS zJlzw?_X8bT`F|ww609eT66gcg26E_YXez-@+kp6+wyw?Q8jS9q_=!ITK7yC*J3Z25 zJsU;*IU9TBIev`w#dP6p0yeWTMBj0POsQvnY>fFGSITqz81en6kULD=ea4?NeoMPH zftD5;5?5&g+<-fTkeFuL3nfbvfN(t|mVlmWSJTF3>3_2~ah7?R#v=GO6Nb&CyR_}) zA&~xJG7~~>=~o~@ywfs5-z`^Zwk$P)6!A`P?j%Y}AVK_!Q%z~VRb&;$_QNAwY+U|l>QRbBymAZ7hr znO2#=6Qk7nra8M?_YNa5m>Rk?*WA{P8<6Zm4d z6OXb@f6KUb3+V{&Qlv~L&^l&xM~m|dhAY3+D)(OVioKaA)?Yu@!Ji7$FB4-Jbb2!KS0U{M6JQP~8U007 p1jO|jOn@W#m9`n$D-c|P|Lm+FhX5sg^$Y+2002ovPDHLkV1f!guZI8t delta 905 zcmV;419tp|2>b_-fq!O6L_t(&1?`zVXcSQp$8S}VLJ_RQK+vQx79NNRs1Oi8h}L3f zVL+mSqJ?KAR*HomV4(zzh>c~m5d>`vQIaA-(Ix>u3sd+B62bU&{^r;@CY#G;_xA0w zfgSksW@g`;`OkZAKki1iuk0*1 z;KbUI79%5oin)YXwZu_mbFMti&&yW0^HV>Zj>v$-l=Q2eRZYMYd!o zSnCIsoF#C0f_F>EZ-eUde-Ns&S^dCk~O0_v`?n=ID0g&H_=Ngck)XG~7 z@n=%11;FkGQ1UbAaxv!)iX z(lTWBr>vc2T??AN$x6!;E|w&|0ua3l zLrY!=uL4rUW-;POVg*3X1M>bjIS;|r_=o7TXP)b!+=&z*78Q zsE(+u^8z3vF$cgAL*^U$kg?^5ii+Haw;6Xv9Z_1R1^6?63j&7>i7)88fE1x3-}cAB zKXuTaXMcRZAH%rot4<3b)jnXi!zb*WJZ+u@Y2dq#Z$J2Ht{p{}7@@^=0XFeRj2#et zVVzdz+CA*u;H&jV(Otg>?vlI&)`N=>e7z7E`aEUZ$mhF!JWc{BDzrE)05WAVUkRPv z@5s1UsP?809U{ps6q-bwj(GubX3xdgd<9(0Vt&JM`axb;?a~Kb{*H7asTCk>T@u&o)7(Ou(`l;(e78|q>K1EfS=R#OBg)DF zYh+ok6u{nm2gwmb^c<^D0&9#fld7(OkUI?Y^rIR55}2ZhH((RGO5J~pwUfiv{v&O3 z&wot;(LOK(f^t)Pb0Jd)9J3yyY^4DR%Bi6ID7R+>PqYBq2cX-xx6@8CW}G(ZBPK~H zxo3&|{ZUgO)y9Pm@R`EKv=ja&bg_%-OR1GV0_Gg@HI$no7Vj~uR!kAHdOcwA9dv6E fd7IBbq3|Dppk1FxVJf2l0000Kojj7?`0$LC=Bpj3;vW+E!1ZgGi3ByQ2EYSSRD z55$8?^g$x^Ac8jWBEo}+#G8na5bBbKiC}89LIfqWAp}jtrD+v)zs~smC*OCnX4_|G zpMCZ|#;oL@b@|p_-};|@`}TKAN}7w**4DNI`@u!<&3ng-rhn%HFE21AybmNYzDXJ$ zgMGyN=oes0CX=Z&v79EymohjQbORscOw2t{!_Xb@2Xo%doz}nzO)LObp5csd;E)o= zTY(?IJ&=UFqR4KbA0mI@z=eS>p5lKIR*Cqh;8Y+#DfcdgriRViXp93F1-f{GKh_?I zuU|f`=Kb`#0)P73c_Z5#xWrd+`Z0R6FMzGf#>#P=G2la=laJ=O7N9>^3u=Iu(-^Jt zsg=#;z#n}Tryrt6f>Lnb#iWjbme~UfG^iE40=|x2l48q&l?OQA+5onmV2KI!bTsMRCIjM45O7Nk>g$N9EjEfVEEkhYFZK#e&Pb2066x+{J)Bzh?)Z7GO= znuCPa@pHg7`A)i{MWUw&^%PO*vANxfXWfJ>>v$ig$ zmlV)@Vy`Kr8@igNbb}`d`6^T}-TCGZg~r3KH7Ym<$feck&rp z?+Ly15|Pvhs5?kJM@<4%@}2ZWYuTaYN5PUR0d)t7XQ+vwTD}u4{6wOI55(1}6HsH2 zcz=r0PTz0xoeV@Df`ncD`mxBmC2&geg+((TAXXQH?fv$u^osC8%jKFPkRO%ljnhO$lP$F?rz7u_(HY#BRPMf2&1HBkb1$ixpO^rw< zB>o}sb8so-fUrJ8(g@M$DDWBt<$nTo|C*q`3JfN;Or~yEa5+$4erb5eAyJZ-f`2d) zUn-rka$rT@#EA)oyMwEC0&IOGdJ zGBq)w|KJvcbw#{4xCOj?7nawgV|1=Fu^Frc*#}CKZo1hw_XbUJ+8WUcPkjIY002ov JPDHLkV1iFHM@j$y delta 1256 zcmV7;{QXZ+Tt zAflQ1FaJV3*yPiQpCFeJtyRNa|-=HU(h+{V6@~e)6RiYtb42A77*zME&<=x zQ%HpxQSSrJ`4eKwZ_{T+Xx&{V zVHKzJGdG!W$A5_5aykAwxN7pKVH+m)0*>3i#1*W4so;i?dktI%zAaZ1iXFWJ`UZ>b zTZ>+m;1O^(t6=hOATxV|8?J-#-w+QoxxyFRytq6)51TbMMCwa}*TGHG$c5jzKt59Q zJdw&8W2cCNeMm^cLdhk`#{tugr;0w6a7 zZ1+UyCN~WH4H}h&1XRGV97sg=&dixOOKmu~4RVZeb8`wMOhN))%B(LDoh%nboFN|p z?$|o<5=4CA)k>0v1k|}OB7SCoL}<@qP4|NAjm{oOGOo7(kwL^s+(@9iq_vfZ_}CVb zjw1;WDSt$qz>Na;lp9-(i2C0-O@sP`kp*ZGL>$MB2KRw8?P1m;qRJJL^pONWP9N}U zL&Q;nvEaee%F{A`H!$vfQ%fX_BmgF3Avf7ELd0QW-JKu08eY9OF>b1<#U4f#pfj+| z6LFB*yWo*wss4Jto@i>ZhEWBGL`cLw>Jxw!p?`5Z5HTJfyA>lqWU572R$NX$kZUjX z*wi&{CnDZ4wOGPp1&D;m2o zGk;Fo3oD`}`HzSgijQn15g>Mm*ogBtdabDKLqw&1EadL=5oidDD^$5FcO-@1&9$M7U33n>^hJa^vx6!V4to! zdW{oF5iy^}Uwh4U$IfdZ0l%ABZ<{#L5E1iOU`Z{D=(ACn@c~*0tSu+eH$>LR$J+tf z12F{jU21!0;(Pd>1+`~j8}LVFqH~W4&V%ZQ68soSiOuM_!t1Z}8hEv!MSmDL z0QkRJQcB-a1AJE{#`FLatI=DpXMDRtp@&^auRwyvz?V6o{fpj*Iy=p^+FuFBFW|Z< z#`N^1{r?puMc7ID@6~+zi`yD7Te-2z#FdQG`uUAU6<|8}2xPyNi2Yw_C>3qGRI_K3 zI0ZHax?ZH#B|rN-BWN-c#QjTUNMXcg*6~fx8D)A-jclAoy}UX?gQ=h|=p4D(vx$1& z+K;|_>3##;X6b*nY_1An Sm@Jn70000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NFLPe5nY(KhK@`SwqZkYk5z$0J16pWhqJ?jhN`Fc8PY{gYqtZ$n145d# zf@r4}sT2gY6BI$k6k0`l3*Qec3=;8`yZ(;u#KUA~@7%kSy&K#EA9MEXneUu4JDEE( zX=y2?9D)CP1S%oQkD_QHJgdNJ&nByBw+#eZA_>zh^x!TZ4*kVSsb`78)BeZ2>RfX9IZx8*U0Ghhc;1KPj}&;y3R z4Uja&u48ZaP9TdTfldQk?qk^M!;7C3bOG1{@DSS~AC8872yg&Q10z3CPBcPDzs=yK zA&T28jc|GOA;4Oo|5(5Ayw|IYRHpaib;pqk+fsqd= z9U-`9I3U~v^whaL^D=+}_W;l`5`gv}1u*ds(cE#kh$n9_R@!yc$}={;t@ZJllUW9e0P*_e&1=U^%uy((n4 z6`_u+%ztjxRe`0&OFaiuWf_HRKoRP=%3P;uh_ES#x*3AP{TbHOj3Po{Qqyrkb2@Cs-dbGU~y6YZ3a80!ycxA{cD zZzZ@0>_a`KXdEo@;mPDfkYgYz0l8Kg2C@a0DJRz|l5j7Oo4cFfD@c<^yv(JDJ_5Z? z%YVe<-FJLO!Gz_TTM>&1EEidytpsX4R&lrr*2z?$T@IR4M4W(J?hXN&B1t!Im?KHr zOtB629Ohl-B7)pcl89WdcLCX1n(KAhS=PK>mm=`H2YP@JIROrGkosZ_g>FN9iKZ7= z7SZ%i5GN3SiKnz$WQlDnN{%)2AX!^ve4*6dg$hqwsyJ0Z*Q_9Eryl?zFC0Qt|* lZm$ldQ#k_V2+Y3`_zkyeuN-3*9Jl}g002ovPDHLkV1oK)r7-{i delta 985 zcmV;~119{~2kr-uBYy+6NklynmAnk%VY(q#Al zZAs@PosrZlX{V%Pl5Q1Uv05#a?r@lZ5yo_22XKXa7y`Zno*Bh{bY#W|MqUMuM`+&w z27y0-tH588`%L(DVEo+_&;q;*+)9u!l3l_ zh%jXeu<@1i@iQGUHSCWq-D>`O|p~!~{GgsV&TJO6sbB zyrDa!7Yb?3;=Bf80$z~R66Ti6oGQ+7MA&<=&)x8>^P34V0Z+R51xdeEB*1Xo%@;~~ zAkV`w0n^<4dRVEda5>?3d>I0&Bs>yw`;7^>&@a+;z9}o7q4b`Xv1lexD#|RcVy}kLTSE{3EF+ zuYs5Vt7Uh)>-CamHAprM8(rK#9ct&s5ps_g6BXEJCFemafSb<#jA-x4lHwA zR}y)vGfq0&=Yc267NAhG4md~GfRzoBw~X_Evwvy3{8pA{iwLl>CQ&_EUAqye6(Dal z^wEU9&aAeI3b3(-;n*FDo-D-Y1MdUZQ|ufD+KLLu+L^OxwOP{E5LWB3RC}+aJ(3Pc z>X$SqX=3;QT3Y^ci1ls59NocBl3okXM^Q#+&Iycb$3 z9)CT+<5j&vemnwv0Q?#u7=wxW23QnqSwAQ#qA&E2Diu&4CS(Kfby&S*)5>D}=|FmW z=+vb}q=Q*^A`Ojnr#+^Ioas?XlR`#$C8Q(gMtOFoq|T65)X^8t#94o1S>5R>hV_XK zC3fOSawjrl3Y diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_secret.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_secret.png new file mode 100644 index 0000000000000000000000000000000000000000..fc340aed0d15497feb75202b2a2afbad4b73e1d8 GIT binary patch literal 952 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 Y0w$YbOo*YI4FCWD07*qoM6N<$f`XUKm;e9( diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_select.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_select.png index c25d5ce120f7132831184c5c9b62abae840913d6..5b1b41a34010342fd5d0609d5aef1d0da61db656 100644 GIT binary patch delta 1239 zcmV;|1StFc2*(PLfPVzBNkl7!vz|{n*t53Qt5$B4&4uk-|fPYgm zcuU_YupLaxN&?;V#74G%gIL5pnB`x)AJPfnNF0r}W_1skT$NltU@v$BVmVC5gsPmW z_96o3q6i;pYkxp9Qk^Pv!Z8yZ1>$r$OQZQ9Ac<%GANn>{$gz|uoST5ST@IIW&N6~Y z&%Dbs8hv}w;MND?xd)_P@101<{Dsx*^ey=?iAh}lC6q(;xHw$_LG*mK{@8@1*Sxx4`3-U;hN=Ajj~@*>sNu!ubc_=7Z7K0q#(f^m}Jja2&0q6+W zsw6-EFr@R1_#E{?68&I(aaBjrAmNzWYsUj{r8@=Z+GR%a=ONr(ki24gF1f!z=>$n= z8+ZgxfT?+o=$D`$1`Eti$^Tp;d2=bK5@~bwItcm~gXh5IJdKHY z{I0|HzB&Kuy7&?D=l-jo%AJz>W9!>M{SrZbu)YD>i)jyoh1P$8`mTyI@45KnWVBQX zxYb6g1Nii>Eyh~tW&u4yE?Sg&gP>dlbbfHTKx5JvOK}bR8BRcbOQsjfrIB&&LWXVH zAb+mY{}X7Oyb^_HCvegGlr325(kaNPY|Aei3}=JK!67L>MD5>bSDN_{7eC)hjD-Ho z5{H8pTpOv$nZ}6%o3ud$nu}EGCSPka7jLKc77ajplAHscgshXYcJc}5zKCyiVJ{x8n}V+2C9!m<_j}Z#$}u5W0d%DiL{}ZY-LA}8#(@~Cz`GEXQaLOy-7yS~Ot8kRD6({hSSIk3Yd~j%E0rYhmiX%sD&8qhB*Al3n zHq&&Eia6_iZPF4g>Lb`Xa0fIMaZprSq>7TOq9^zoZ~*u&mS(Pupp{SY-lia#R$mkn z(tVHC37w#Xa7mz3lummp^^fkSl;bi!1OJB^_zb#cDxBCpi!%TK002ovPDHLkV1n(0 BWOo1n delta 1036 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 MNe4wvM6N<$g3T0xegFUf delta 626 zcmV-&0*(EG2j~Tmfqzm-L_t(&1?^coO9Md=&WWJL2LYQXSlHR92!e%(RXXiN{1^6i zw%UnU_ye>Mf}|A@8&MR*&dM@Yih_b5dVYgh7%qFe+3Z|ma2JN1o1ND;yZ747+X8igOn@icT7K{KHKM(tAcJ|MpW?MG4cnW7^jM&fzU4u9wyB;79IuppCZiWdYZ zOJ|+%ckKhhxP;(%4Y&>&wpZ{Mpf@Hnv3(d^VhX3=pFxwL2`0Y*U&3;FVKRRf04l6n z58#U~UZFq6?1`Ntd-MemRh~Dmnb771?^PCIU8`ge!d44_OfV(_qRSAUhDO+UmGRze zZMl@-h?b9PvwvVt2%HkwdK&3Edf&rSSl3e0g!ZRxBYNPn-_`#7pYvFwB5s!Nk?W42YN1(P5YY$AXEghZztr zsiVU%1C9j~R}V8FUQ$Pgwi$S2{ze&}HOpi19NgmK$HHrS-7VU$He%Aw1#RW4Rx$ap z{gEBOcx$=lU>yBDyt*84m}2Y3Xv<|DG{goehvpj+&iaT+Ra)1Vo6o#v39nfm^68Q$ z867Cn!D8M9AoXuQX$WVM$E->B>iQkbE$AGZ0C!3l`cQ#Tf%FRe0JaFeW}__otpET3 M07*qoM6N<$g88r?=>Px# diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_sendphoto.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_sendphoto.png deleted file mode 100644 index 97ae7f91f0ac0f572c6ca8884845c15bef1f9a21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 993 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_settings_hw.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_settings_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c7254803eebffc22f45041e48771432ede35ac GIT binary patch literal 1958 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_share.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_share.png index a475b29d485c63e55be3b8b21db7a720bc5a72c2..cdb2af393047a25c09100cac6464322ebe9b2d54 100644 GIT binary patch delta 1108 zcmV-a1grav2ncaz~W7;=&Z| zLc1bv5OIM-N*ih}MktABsrk3^r;L_A!(N}~-S51eo%j4+?|FaQ{NDOK_4Se#@GCchY zy*ad#pt)~a!*$Xq_CC!g!yd3Jl#`&blnHo~*v_**K$knmt2~?Lc@;1hp%vdKTYO+2#0S7{ zV9IM8^*|bOx@!?X3A_Nh$O4QD+^`~mtPq^lD|lo1NY#Kq8<6~R@DS+IjuHI+1j$Hn zM`vdI1AiO@#cGm4HC)4iSx4?qm05F>Tml{gUEX2L$eJ`wBD}@mie8LyQ<@b2MWrBp*1ut*#OnUWgGr?K_JK^~t1a?JLRK-Mg* z7U{$%|4Hj479QPo)QK#UVAxyq3f@>YSK6P1e%$2weH-@rJSg)bGv#5LlBR|SNsaO%Axx4NCQm-{nFkNzff|EJAu)qA z@-f5pTX*ihE&HBx?m6e4Gm|>2{~qV?5`RfnAX$NA1;%m(QgJ8G zWHQsq(VWZEnM$Pw;?5ZQY%NPk;}Hb@R^DR9j4eM4UtWetJ3D4-IwfQR4*uq8VILyYsVHQ+mXz44D) zOVT=U0XP+nIWPZAKnldup7)M)e$s3nmEuWM1-eG^y8iuz=LxtBYMctg-U_q~p=@&+ z8;K2a*~7cQCt%AT4A+48mxJ+sk}_^D(DEB)r=QqBV}Br(htoa^CGh|_2tr>Ih}{ij z0gOn$DNuo4gCUy;t{QgLo~K{s73Jn}D21TEa~NhCP~v{v$A}SP`ZA$*}?Gqgfv8%0RpX z)BwE_Z-3Ee1|kVLm^^JjKh(0V3D;TWkrK17?F^FbMiV7aYB`1%E>9DvaGgKVLoQ^~Ag?2qrQkG>d%RyM zm;ixtk<%xQaGe3Z?of7JS)Jgu!lGoQ8HlYGbSs}z_X9@xCb(ib^Ao@>i*(ZRi@M+B z3V+=~a!3(NG4dI>2zV9#0Ka_9$o|g@x|Zw&FiZj0wS&IAu%fv_L!_?_a-~|9mwtptA~8S*8ye}%VlvKL6_fywDh1XD8>`W z58(@)LG|TIaTNG|ovT=K6b2002ovPDHLkV1n0*-P-^F diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_shareout.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_shareout.png index 70a2a7b59ca91089b3f234ed97e4b8b631ece877..5772567f59dd6ad0153a325297f347eb9887c4be 100644 GIT binary patch delta 1044 zcmV+v1nc|u2dD^;BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NFl1W5CRA>e5m`!X~AcXWra-O)zs`VovhwJ@=f~dH?&~ zefOUCs;VkhxdQ+96-b31ekPNtN5g8E3!^ZUN~I=glWhpEgER00ti7hwm1y+{Y=RN1 z+T&j#HZySpk$)(7=n?D-9Zcc?_C=IlrN0vDVH2dm*>{}fi5dig2Aw+E2aq>S=&u0# zTpWlSz>K(LiE>Tmcl%j!CQQGI{xJPP6Kghpfg54~1tR_?P}Tu3HQEtt_nxi3Da0{r z%%GkcKa7jWRd5r0c8#EWh&%Ap=Af_-F+!F=A56fXSbvyh6r~Mt48~(rkHzGaD*r~t zNvmN$e1KwhkHlK2h0|b{Ou8AB65Gl;**Refy5Kn!v&SSlqQZ!218arN&;tK%Vd2Nt z!wq-~x>BlNRDd-)A^00$2#VP&61yO8!*c&$l9rRzz$usnpM4~F2=4fjQ?XC9hoPn< zBIACPlYeS%PG`jir#p25=Ea?(WI0aU4p!WI`aQ54&P8%`bEf~f2w{sa1Zd7XllaB< zYSHg@Nz-a7wb#WBogygV0fOf!lOu1sdB}?z9&R#kv(%Se~Bv;n1Zvc9+ zcDBwruH}l?;@j!++2s<^B2eqRGd-9)oG^Uto`08Ja;nv;a~vAnaY0*zG(xl#(44;w z@1U4zZ%`Rg9drOXIU=@zT}tT|*cT$cD)R;L?ckf9xM0?N?Az&8l1-l{A&04NbqNkE2osAa$xlU+d=z+{Z#8LQKs4pASU5T?dB*P9u zR}c|eme0aZC}vMc+=A#`3tFb+%>cwTgT6pm(_P4YiN>D|m+S%fZFxTwx`UumBd{;3 zhnxmsH_YDXF}5FKvzc!M+&6yK<i=AMy2lJifCAg%v)3DsNQ5!eIT?QL#^zRLGx8KP90OlKNMYqFG2sX>@N z+nfY@wdv+e<$Px%#amH`)O1p1t6g^-R7dIVgx`U!(28HV0tvnXzX1Ld)iLWJH4Re$ O0000FaX7BlYfCPfK&X3TR<1E0jSFG zNQEMiZvlD?@fdyr#+9Rhi9mNi_%?7I7!1B|18T}mz^Z`cPGCAv3%mjxF=GS3i{&K1 z?dxw1!C!&uV9rdS&&>HaiSMXX>hi}JNiUdHc1s!vR_&H_(DY}QlYo9ncTB(PKAuTD z#l;p-E9tW7FMpLZI+*iZ@Gl)m^$R1k_uW2!3pf<9%RN97@F=hdIA+G~0t-ql;8kE> z4$tog{)&9RwUjnG7x+Hn?GA^5(>X+a=dCpr|3VON26lK458(pXO5h>jao`i+gb{fI z=mg%gYZgMlSpPOgClG(qN6sq|;%9+%Kz-!73BY{dHGklF;NfsiJ_6jLp8|gXSAqS& zMqrkiGYNPfxEvvV9@q>t=JT%(M?f9$Rl@#sdCOX04e)1V{BM5%pDDz7N-LlS*p=ge zWy5X%Y*QhfEUkb=fphfu{riT0tN%pE4|>;_S4iT+74VrM=B)0iV8M3+&vpe!>qrnE zu7Hz<+<&^rg4ID_+A@;la|wv$LXGD0naH@y9xs{x~bF`bg3b=DTtJ z1v$5y;2rQ6NnN(sPZBT$1=zFh>f}w}_bg}U8=rD413zRa{( zRxScEt<#Wei;O=OT>kD%;#=&Ct(qW@>WIv_D(RHzPfuE~*aGfKx@h`OMCMdW8gKgN zlNKz+-RN(oze>{6!5nwp*kbzaseYjdXIh{&$g_IAODzVr0e1o`omy@JYI59oSiJ2V zs@w!*oaV~};@5m4cyE3Z3Y`n3MXPV~O|s~6p&xz1cn_&^p$aPaKS9#J?!baV?5QX$ P00000NkvXXu0mjf4gck) diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_silent.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_silent.png index fa98016523c984178a0fcd83cc7efc3c89e53ab5..f8e91f148534c0a68b6f96ec044108328561a8d6 100644 GIT binary patch delta 1012 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_start_secret.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_start_secret.png deleted file mode 100644 index ba68009f9928cc298504e8e094538b07aa8a927b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 832 zcmV-G1Hb%sU(N4{Q^qucES zpbo6v^CDE4gnUt3gmQIvumO97TGR{S?KKT%m$6f-;sUN_01(0Rb%2FyKNpw3|S&q#Wz4QS1*8`9B)pruwd~81V zKU1a@uwb*+dA})$oyu)-Lj9BiLb-ae4+Zox?FRIU>6do7D(>K*8)wBjV&AdPHTx^% zJ0-^v=Ocf>(^8Xg5q*tzEy7$(W9_0yu!f#?&D`J#d#$X9EHp^qb;drUH$pxg*}s8v zk1h2h3XcMI%}l8K6m7j2VK^+B3)zh#FK0rJFTy92z32or1Hj%h_{X7iWxoTub-cXt zoeo=zX}L^MC@bKq@%&}_U3D#{|Y>rTD<68(&y|Jzr0Is{Sf}wO%;{`zFb_tzZC1XiL zZ4~exCg%lgWcyHHuVrey0NxtE!)UvJ)wUZe7)m!){);RI0-`(Y_jklRba5}S9mM3Q z>f1^I0(XQDsuD@{YkUi(5=o643P_!~rsDqV6|n!)jsED`zzkbV%cWXsuE9gp%SSrb zszuiK5*8{GZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mmUEMP{kK?-l1=kPEvFx7gxIEG}fzMZkrU&K-5SiY^`;mFGoiO%Uh z3k)VMUZ^N0R<9ybQnuwEW5&9MHZIMK434>NZ7mM2o?A?UE;ud}6PqEh;OmdGh2Hnx z?wvb3^?lhji^(&lpeiU%O_tvw*?j5XK*E z4J#+C&3#<5ZjZKmc1%;RR>KUfA9Ffv6Ybdbgv%^L&+nNU5Vrixu^si^4BI$zR3G`x z+@9C_CD=jOu;PjV$kaXmX&eAeDTnlp8`a6@5`mBjq!q?4RiE7uE6e`9+3?$g~jHp?7#nfiWSLt^`T z-5V_Wrw)cCCJHZTsWyIU>vXT9)+^kLM@F9l7ww z{P#rvFXqukvl)IqUzgkO`0Jd&hcnX-l(m%QaC3h;8N6Uw&5Ee}-tLm)2}~jRzODae o32%tYI5t5iL;(mN{9k>5mv{Q7Ir5sCGeD`*)78&qol`;+0MTOC3QF$34-2C}}M1 zf`zStfQ4xV)29h(lKcaK)K*5TAP8a?|AVyt=mWvd|G*R}0wDp33GoM>pLy(_*@R@dH9(E}c z=;k7G$QFL#TGLhmOOW{m&I2g13GDc81wFS?0Q-3hOoGumAompf1@e6AXY`EguF*;X zT`Y`(eJ)#T4}UayxI3!`rT`E5Q&XFF8i)cspTB@}DW*^r$Dpm&jR}DAZfcD$^QF0pkImC>XV09DZU_oQ`afPKO|Y_6@3s&*0g|7jJvcQQoy57 zg3uOn{wFLHtPNY}C#9TSmcbGD3Q~{G7D}Bo=O4=*$Q{TXxMv->1YI}4>OPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NGen~_@RA>e5nNNt7RT#z{HC;cC5DW#i z2n8#`fmzh1m12vCz>$_yi&`j32o>0*kVfc22U1b5zvp^Cczo}7&v)+q?wwh5UwGy_ z?>X<^^Z%Y%uwY2T9{7Lvz(_agHyVvGXInZ*0!f?4Oi;0w0MpS=Lb+1Ak73vlIs)L=Yc&Ae7fsx+@Otr=HY0)Drtdr0*o`MYMsW9yiJ$yXOyU5mhKkUZ7h zl4M&ti+{YnmvY$%WZNN#7ZCmf%z*RoEBPj=C37C38Sp#&^L+b97<76&Wf{R!E=>7& zN?vWqd=_+0rgV^f$K)SI*;*rjvDbsa$cN@88)aTA6Uwcto4}pmDDt7X$wryTm+5q@ ztDC@g!E)q7bCZoSkuTH9ue154V$~YZQU49N34gu>ZQES*ESZ+9bWVfhRfYEC8i@9_ z$efZ1v?&juf?y6=Ky8b7@c?{gn^fwB1^Yp_!QY5}dL97+c@<+{vCArTjuqY z|9=5jK)icBpiZ(c1JU1)KZ(CMaq75;5!&d2l=buPL-16YdFr)eT>(z#U^bS?7j?9M zZ3=Os$t|ofgw7W5C&;Dbv@yG1nZX;B ztFPY(&6v^$g|VtHI?KRraMAS3idwLhgyM_9M{crGNdhQMo7dA>NLm_2{;DM zf`a@vZqR(pBB;6VZ&UxlxBVXOq}=ys6`cD5{;|}tRU)tFMW>_IoGzj@=9-j`q<=N4 zTd|Ry0J1xQlcw~u)m}^j1-;J~q(xopX%YR(1d!3R(c`hxEKK+RCy)~G1*C`8o|8Z~ znE>rtus-Ku8xO&o*00?aQQjjfMj8pdRd#!S(Z+Dn>@-hPc=fnWbN!C+&Vp^I=d*%O zK80Z91ZnRMsn5dexlgZl*MYy=zq`vAB2rMENq<3PwSszo>YFd)0;5&=XG* z8j09LRP~*-Rq9mlZo%ecg;DKHzOZ5YMmk|9LEb(e0!~h$Agj5&hPpccX4QROS7N<) rUIO|-Kh1Q}wRuRx9vJpO4?XY*z??c0&t7}2z4xJwHvZ?RrO}s^^?z2*1TFzq0;_-}z^sa| za2yx`b^-4Ldx4*`gln~byIh8Vb9NnYC(s3)Rnc(^N8~Ut47>n*o+e}oq{0y}?Jh|_ zs&$x<^rWOY)|Wa$Sp+<002_gajmU9eKkx@|qOli#5;J^gb^~+Gvv+{C!01VbOOC)( zDewF>NjFRCN`D!tM%z3|t0X-w=~vU=prpB3Bala6jWIMLX>}8w&T3ak+HU%GFS1sK zfMfh^VBnCXJg-_za*WVljd$S71LGFGYV4Ui$-Ttf&9)u zc8_(o>VF8>wAKeKDA2jS;MyWLgsT!5GuPu0tJ5@{Jmjt)suFn1r`iN>14jyU-Z0m% zSM;GCCFX!@>m==!v_;aQh~>d7NzY08PSQq6rx(cY$eRPrAaE+%g=QyMN1(1Sv=DAj zy&Sj!=mqAabiD{znCDVe0&Wgn030xLp$PrJBY(hUCHrf7A-fhB0=58)BjjfSuK=4% zI3GG~Gg##jxXC-d*oQ=a&f?E)-k$~THurbyUp(E%82ZB zzkksws@e?^aP1zmf0f@$AC>gGx07H>(m;gG4oTYryw)#pGs!kv48zg-w=?6*QOZp{nWOt;kcLN<)%z9MfSmmog z`LQNc+GhfLJ0s)=%*d@zo>^qofqlXMHGjaoIOcp_m|CyuN2!SM=hH^Tt0!MI< zqc%C9QF_U*lty>%v{J~6e?MjQVT0RI4G&YWPY SI~dUb00006gB0F2&*1?od+F)o7?Q#I zcAB*}v!h6B`D5lS0y-wGVz(p&SvGF|5*QI3nXx$H#;uOtwf_$}buZXCV^Y8@MN{&hD9g^Nrq4alV`)ev3veOE?*HvGUWKs8d&`EQ@7cUr}dXd3?SJ zM{S3^oa{@td`rIL`;Pt7mALrlRL}aYmCF~lJ6|omJKe9Z^UZ3t1L7CnnoLacRBhd9 zBB-kO$fsfHirUq$1=Tl-Z|C^w^*~r-Hw$xNvE=bUm72NhdYYa4o>(#LnmY5#lFm@B zz0Fn;{2z_x39Y^tk?*j5o@wBMtn24liq15a%rcm^t2sH|{Nh(pj_&SRo7c>3`1oPo z!9N%Kx&Qs#K67>Yi9W|Qvf@%J7;Z0$ii3 z9mTE7I-(gHH+c0Z%QczWZO*;3Q}@H-yL;o0wckv8yIJ^CrmXO({HB^XX;rBw+6o)~ z-1+(7NMhZy&G{c@_Uq?3+_PsCemdK II;Vst0FvqjhX4Qo literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_theme.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_theme.png index 7942e4dc504d73180768d95611bbae5a9df53911..4f629591dab86a692c2317faa77c4880f3639cb2 100644 GIT binary patch delta 1431 zcmV;I1!(%a3aAT^BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NH5=lfsRA>e5nO%rgRTRhPicJn0q)sstB15EsB?U!gWPiet`BavW753pvRxl-) zP}v9MLsaxoBq%5aeGsAHOBt9(gqdPA5rLM~1c9Z6j%H=#bo>3svt->p`<`?6z1M5t zEcmncTKm5~&bj-Xz4y6oZKE=J2hQv}P-@oYm&@g|iPa0{fgaEeE&%6)L9ox^6Z-F$ zN~MFer%x!l1b-HQ_274qBF7fkEx!tq_JUoY8M2=seV{${LXxKtNv4ow9ne&X z$&VPf1Di4j=${KToiwd31y_Pt?g8w5Os!3{%@>NF1%3vh{D9$Ua9J%`;dO&0U@Hh^ z2*cyG#7W{1bTK#{*3@^HiWWgo%p3C8T4U4ZZ}2 zfnKSd5l$!e4H>7Oc6P{-j=c-)1zr}#xP>+%eCVUlUluxHn*DiuZC5MQ^7O zf_(-!;(y3T>7O@(m}kIYo(rJvt1*6rC+^{pi_I4#j%04gGo7*d;9rq4dC|rSTO7s! zO$n1<=tNgb?9+iyB%d$BB-ngBapZGR$n!em?~0g-9`G(dUbPSLcJs>G2dk19fU^?V zMQCbV7xJ;`InkIz+-E{gsKc3=acPF-`H&OUp?_}79MpUR#zu+G2xl6&5lnREiY{Y% zUc{MJF_5Fc_0P^%In)zFICOwNfXRwNrv?cm(uL`nn;wS3wg{N$mzx}NDs%{Xc)ZLo z0>%ko1y~0bn!S;hIM)Mvi>bhsJ|6lM;AO;X-19Y`S2^~#Hi&I32zQ?i?^%dh_;ADd z9)FlTYc;8jEz?sSVW;a~O<%i6FMVFAvwvaWr(J4KVB7EXibXPZ0owMOXiI#mWpj|= z5c=nV&8y?Rl5zq1HFkMt`mY3fJ?aBEZ2(6=Ke(Cmz#y%cvQv(_ep~GI=%4c6j7(4+ z0ejIO0{YoEV;iw$Fn+BqF_h!B0={3sPJh-E^`Xdp_O#G0jgneuq=p_>kGk`H`q&im z^WHxX-mjJY$6T`G^gnfa^eyzixd86=0*bxQ75rv4<(w(#;^fzX?}Fi$snoFq`~^(3 zJILMq4HpOLCiBSJnJufDMC6euKbT z=7*w@svEU>o9Hv+Dxg=j&du6B{C^5|6ZaTxbA^Kavw&KDIW+@5TjiL^YpMPX@ku%v z?6vG!n{)=iXN~jMHs!2_ib{1R;l;oX<5tUCbZUCQ;LSCsti3a}hKBhh)_(#1^P+0$ z2UisZhoe{MZeX&d$mf)dlYJKOJ5?)aBb`g~k}|%`$h5ig3?)l3A>0sjrj zip*>8&x_mgF)Hl@i-FdR*auw9CuKFg*neYn*WJ`$6xU8A*8qK*=>}aupFwo4_=wfE l;xvVAR7UT>>AnO10XQ$8s}MFMt*QV3002ovPDHLkV1i`5rfvWL delta 1321 zcmV+^1=jkg3%d%CBYy<~NklfSkg@PiZ9s+wP39^Ksi{eX&0}5JN}80=Gs)haG1)N2yVh%xx}&)cN@^;HK!3BO(~-h`l4dxWFu^fLa+9R0 zNT$l3#Ry}X5=5VubTyLuPSVJ}5Ev?Ht2?asCnj8+I2&D(hDS2P6Nf)waRE1b&&fU4 z7Xr^n>WP%RQDCxJPA=d_=jS!{EJhepDB6sWv?G!|BB`zv0u7SdBL({t2QS}p7NIVf z?BUemvwvrYP3D4)$@OyB=UK4Gtt6%vVB1f zaGM(!Qu0RYUj>dt?{3aQpegGA23#n^z+woxw>p{QKzsDNJL-?fLSSsv@32(}*a2*J zvLBR5Fz8+hd=7L0ZNM^HI4s>C70LhO6;vmb)<^xWsNV@Z3cLhN1vUeplwo`xe*ll$ zynmN~%g(;oBMxUFa4G8hxce8dx&lV0(4BbJY>S0mc-p-{%7sov{Tm9%3>03BZjFb4 zU$PK581*L?*rkEMgTT^go-MsyHUER z+NB(;>C7L%RS&!U6!4Y%KD+|#FEqd-_P)arYLDU z9{J!mW%zTWT}4a5Pm-3V^kpSLq7v~?9|^ph!SEit?0+rk2}$D$>GSBVGB*L(W`8wL zEWFNj$yG4~w>S``C!4Jv+GBI)ta8_3Nn=Mbg{4;JTHH!)w3|}a)o+eM@+Aw8WrbLe zVqe(}E&@CTd~63X3;qT!nq0NjMEe&B*1;clyPasuSW?WnOVCM4(<`|H#at-gLOFex zBk`xXSY44x!v(%G8n^0t5D0BzqJO#;u-z&RwY`kp9LaB}B!N;AwWD?)cpG>*dVZg^ zBbIQrS~TgjzmO(IDKVD+_a8E@#Bx{oO5v)PU(_8i7xJyaO6+@FF}63XE64a0 zflB;Kc_VNq@POq_&6eL(M}PXA2i5_vM`5*3sPw;-Uf1}jHJbkigTJ?A@FH>sJ-ts- f>`Od|fdud`q1NGc@xWdc00000NkvXXu0mjf7LIQz diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_timer.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_timer.png index 455e059bee9938990091e6ecba5d6ff20d9a03a8..456e7f6441fd6d546d5290372b1df71efa442a17 100644 GIT binary patch delta 1364 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_tone_add.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_tone_add.png index 9b480b16732658aa33d3e29b84d6dbf0eae92eab..b046e2fa14d022aabe4f135588a8f5668ef32895 100644 GIT binary patch delta 1208 zcmV;p1V{V(38@N@fq#=pL_t(&1?`wgY)w%Z$KTTmN=eLOXjDkM5T!+g#IUeK1QEjm zJEE+_f>0ve2x7s;hD4i~B2iOp#1IjsVhAxLXcLu^Mro^6ZT-G__r0(8-SOS4HS|mV z?|kQ*&i9>r?s?~)NTi2)X5inOf%f+H0+9b#Rz~6*fI;iriht6aZP@(oR5LM!Pf`jkeMHrr%NkNev(q zN!CbIlAQ>wW_&U7JWv6AQz!+H@DxU#2P9F!B;a*x;0Yu1+M~OsQ;Ya#e3QWLyeCB|o_{o!TC4A)l+6ZppbKKRz$$(&MfI-bpwq_kp za#S$r8_X)h2L6nppp_-sLGY_VlhVm9=Xt026(zi1y?>qdC2T2)?XnAxt_WQT=%Z|O z3?=r+5;Wx}AVc849kc;WC+VD10(lxGsxPegZ1b3=y%|9Q6%Z?81#udIrjM$lc@c~4 za{H`&Xb2RzfLIYTiS+@vQ8fnBeWd7YO0ZB0h!v4VyeGhp9-|oNoRLp00YfVwR>VMJ zUa_d)5`VHxpXs@qhh0Fdh&1Bv1T``2pmjY`yJu@*LEuoIfW;7=L|#vfo`Q9U(SKb) zuzy0E$Hmgj2UVaFbQ~9KOgqFuoJ^v8g)V6#b=)D3bPO$z2m!0gJ{!@ze? ztB&3MRUFMLae@u<1QJm^awHuE>%kpdn!tPT34eS+Rt9FncMUO^uWb~2IYQq9ZuCwW z#E;WmQtXTe@y=v zcn&haR3I;`yc5BRLC1shz>c1yIG~iaUu4*9Qg*`b2TAW9vP^IjXu9mX8oajv{pqFy z+JEs*1zc2474WwIALxby{gLy~t$w^Ci{IQcnw;BUmC3(Zm8{2iGQ)^ zWQl%Oir$L1Wa9;p{2(kOd4pts-Uo&dI19+tpseGSK#I{6kE4Y#zE;U{6raSBgCs29 z$Ohdt7}pkOeJ@Y9<7rs>p&Jcq#VAH{t$$)k==T~%w5?#Vr6EFehm@_bvVnLbjE^X1 z*Skt=FDQH4n`LaWfd1}nrhgFRfOL=nW&!yl(g2OMjHv5ScvoJto^?vz=8RpD{o#v3{8Rr7P#5-9Z20S%v8&>$JvjK8tplvS@^t zf6+%kcBKhG?q#xpL3J>>>{8W+z^!E*+3{uonIMTP+jKcG9G41vt@dlry_HJu&aYkz6h~3Z4O3pRzN&0jI$d?~!^eduHH|o`Ih# WM}fM_Jp;S|0000 delta 1162 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 Xy);eeN`ZQt00000NkvXXu0mjfQz*v` diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_translate.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_translate.png index 6e1b2ed0971f038be270c26fac3e521d773b29a6..dbf37862102d897fc41b698b967f543b40b32616 100644 GIT binary patch delta 1099 zcmV-R1ho6Z3B3uBfqy4SL_t(&1?`wgXca*ahTlshF)k=-mP3ffhzcSq8V`a?4#9|o zC=o?(qM}|zFQT|aG?1gyJsd6$w_VoM#l`qVzKB*RFao!QVO33dVk>QN7tmvm-TpxJ_(Fm z&UOJQ-vJ69uZkY0?5vn$+*z2)$@EQe_xrRbs<9&CXR3BGb08Xx_9t_)9w+%$@Ec@P znyd><;5cmOpz2%rEKlH<$*w-`LV4H(?lsU6mMDd|_7q|x!|s3(aTh93#i@|0*gEWH z)!u`BN3~@QbbqV%=rWm%2Wl}r#g3b>tW`|%W^fZMv`LEJDxhVXOFqE zcg%|`ZT%Ec0luoj?qSC*O8T}aA2Cm*t%y{KDCV%MxPKj*ld-Abo$~3!o}_(7)TWq1 z@Jto>8GE)V3cFQ}iP>PrMvbN@y(3AH4}o0RYH293KGlhdf;C_RD9ZT7l0<(4(2Si1 zJz_ZW5nX0m2)^e{Ao>Z&>}xp*3c!8fCDw-)1S=De?6bZ2(0(MH1qKo%zY>I$_;U$3 zx`J?o_J1XDyDPbz4{L1+@ht{FTpXrZW6KlDk1TslCYSy~dzlR>e*0CdoZPZ@jI`Ns zgz_Q7ZlGTk+_NYL-bO!i#%1TxTk;LsEx^c6j1oVNP-BoDFc};z#mg3Y!qqR$;~?&| zmc;beii46y>`I^~=3uBIy@DXuGbFixfkxwx-G2mh0W@P5zy#xCG<|yOd`0`;4+eB6 zF!CJ3{ncnF>@_4~!CAxV=^L+loxFqi$@8BNc7h`ym_R%Sd;%gDf&PscjLh+dROnKnlg&2Kk%K1`hn=kEtBoDm56H@}@mBL6%+6%KKq=HUU1^NXrkCHD1 zer>>r>}&5do?1Dge*>L!N1D{qg$;5(?sP+ z()qxgCxM@1V%GyXk!2xoPFG!lct~6YY6Ar+XJQwFrK&4u=4K!_1OLMe`~{I#ir6Cs R76bqQ002ovPDHLkV1n#A0YU%( delta 1105 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 delta 877 zcmV-z1CspI2ZRTZB!2{FK}|sb0I`n?{9y$E00TQoL_t(&1?`!;YZO5o$L~&2p6}SqnRjbuT3;%r65MKnYgEHEEimc4XFvXi>b?~?h=Bma^?8PaxW~N#mArf7| z`}j;mrSbv$CU~vJe9aXk*aKFpL?hUJ9H-xEET0Ma!)jH;90g1AWy$7E-ud7b(CtFD zXonYB)_~6{+kYqQRSws}hR81>9#d-Xj+zV*H1yMF?_m(VjocLzKd&^tWj4ooO^Ka^dl z8B)LiOuvB};7*~e(~|K;qnq^uA}uz=oF;>9@d>#DA@o=||49M*!&kQ?mpH(YG3&R! z84x7@QN`^p#@rG)CrVNKOiU!YE>AenaXrk*U1MA1xRdJ(f}e0L`z4pW8{Hc5kjpb3 z1ZLl>{qCswFP!#)+op4e`tPW_-$h>dSUV7t zWG7^<56CvkOI7Q=Bx50)5SODXe|&!lS*V-)zg~eq*OSi^X%F6I00000NkvXXu0mjf DsPn1I diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_unfave.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_unfave.png index b36f8b4eb9ed43fd9a76c2b63df3b6eca616d90b..e4af79bfff69ac077e069b0fad8a566cc1572217 100644 GIT binary patch delta 1686 zcmV;H25I@j3Z)H@BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NI4@pEpRA>e5nR$qnWfaEex;vw0nuC+*WMY=uLeQdE4S$A^nPq__1T_ZzVMMeq z7!<8$;1V_!qz+-&LL>x5WDT0pLTF~Y=2%%dec z-;AC$_X_crwPz|Ngb)-N6ZW)P$mrI(K>i%p?1z^^PC z>nDeT=$8U3cLrZ*ao%kM&@TzTvbPi)4R*K-_z`=oiqmScewp$AOPe!S=oBpJ>NrZlW4p!(_e9vpT-_K#&6{{jI+gJ@0Y`c@GFjgZ&%<_KKW7 zJ=rEOMs`Ma(M}~s`^6CSv(eWEr)}}i!)`Eri_tfO!{AT`UT=o41z&QZ&@2$fy;h#u zkc~b9Xh*f8ePcq1$=4Ed0yu0F6YATDyD}edR)0T%w*fm=RYQ|Ddg|yWg0F!Utt@9` zk;NFqthPx->bJ*G9_@l`B*^!KqVcW_;)a7TaZ%Ho#NIdGi$>{poB|2rI-w4i4%2{+Ao9X)5P(l-mVy0|#Ah0ZJNg<$spjV@R>p|-f*^%VxaJUj^ ze(2*x7o7EX5Y delta 1329 zcmV-11W_k6B#D@jSflw!OUg|0G5U)Y>(pj< z&b{ZJd*?zhA8hWp&t7ZqZ|}9&W2;{DqBfL5X`r6l*-z4FNq_q#eIsd4y%d*9rSuO* zppNYo{>5UTR4?6`sN>=%^IuHw2?9+iWJXC^AZd=IqYIpHv!uIH`a9gLdJaGn@LsTY zZvg|U+@XoUfs_;I2CiD%=lwyy-H%HeLBQJK!2F2BexM^m`N_bSz@NaWLH}Ss!2~Pa zVe~iwYkhz@5ec*Jxf#J}IByH1Hx~E+_yO2Wby)B6l}=${ zm3nd0?SBG30xl|NLdy#%53xDN{dSBASplh!m<1RnGP5#>@ zX`7^ON%u;c8pzn#+axWmU{3udwMgnKsa4WINy8KX0em0n zG>_L>jzH+{;*|K|9MSU*U~eR6m$qM(i?=|yFVeHj^Qvs43=~*|z1ef05KrbP4X35Z zy$&3cbMYOXu7sE$2FyGJk~RtWIa2n#+kLr3Oo(zH!^gm|GBQV{n4#rVGs^|CN(8K3 z41a8o6nEx`m}7u7k=z=;m}%ojN9JdXzcFoWwFIo4m$IV^{nD3{8v%S0$#r?*6OV23 zVrM6?2e>LrZxI64&IL9E3pwZ}R!OeEdyf!1%eZITtV_%3EJ`3b=B{8Nb8}uyJE<2U z5@s%iVnrfq`QyL~n>hx#zb&?iKnw&Cjm82;?Eko z^mz@@*qUXYZ={s3_XT6dMzLZ;Q369ek+Y&?1#rE;@f2Nr*v7kVi^MMi$0|qP?WOx| nV68nzW?zC{^r9F4FG%_e)lD}+!)wi700000NkvXXu0mjfAS{l5 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_unmute.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_unmute.png index 29ee3be361289498b7d8068147e1d58e8a4c775b..88b012a680944d20ccf0627088219257a0162e5f 100644 GIT binary patch delta 1250 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_unpin.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_unpin.png index 35cc9ff9c0b6b127c3f7e92245db322dfad467d9..e19ec7d9d4bd7f43c594dba25751002ab2fe894b 100644 GIT binary patch delta 993 zcmV<710MX62=)h%BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NFU`a$lRA>e5m`#XHVHn5nZBQop$ifB-Wr_`@d}PvK%6~#hc9Ss^I|~cSj)iD8 znq-Z#Aw{HEv74-fkdm(rT|Eguv) z2Q)s@=`YV(tAD|B7zm#)-Z428qmC5XXDXC30ap*WU^vr;$6}cnGZhM%fJ4MzGF&oz z2(E!=GB9ysT9`nTPy8hFgRVfvBj5{gUVjy`c{32<8dr3!bPJ=;#DEgB zUI+J*%CBg>-+9eXYuR@y;gIGln3a~BInU-f;3RkiegYf6m^h+D^n1Yon5T1j+hjjY zE0*QuXy&th5qRFBN$-4TDasRD3d6O*l|uOPhd0#7`!*v^kwtGiV-`r^-Yt_vX}BUe*emV6TX`Cx4N- zo*kWIf0Pc@M1mWZXFu6lg0xj|sRQI|k%8h8yusz#b$%!~|UO`}&ik_yGMeXDr=# zCLqftzKsdFR&IhPz>RgXhl%(mAeD>L-ff0eWLC>wdrdI)N8D!AdVQcD&je(%f&06( zdAG?DZP(!#0v~~m`%EnHl#6MOdT zbIv~J+aSUB!UCDI_d4rc@7`;z^QjhEXyN~jMqc#5G)W&xdVgNh$C5TCWcsY6$&xxH zjg<7Wr1O$`B;7CC*l6U2+!w$a`l1VH1Jr~K1~viL=#TrrIpCEd|Iq+m0Imi|)Fm(q z_&gA}kGsIe6aZg@Lc4vTka`g{JfNcKvg9c05^cIA~NsWDqC9JBb$VPu@?ii z{6pZGz}o4+n2Nz?cHHrAF8+XK2($z9fbGC%z;*iLsDF7$&0zCXcx2!5hpAR|3Cy+i zItIspL5T>w>Kr3;C+7Qc4vgS3Thd8MBSJhS{UfQ}`P({4k0iY->2Y+%!Y~l8dnVfce!C$h2*G22F#}0h^B#pIe-nPUxNP18+c$1XX&cJzD(v9fdR>GmcZRgm$ z2aKy&oqu9Gwr~4AUz_Swp<%!+$I1SZmo5yj*}bYtpb?lLca{Xu ztP;Duy~fv^?0HoJ#%6dbU^7%ziL%+LEs%LrI_JCV>JU)QkhQCXL`Oi0t^y@CduxBQ zom?phWF)F8@p3?kyxD27(;U0~%%>obr$ov-v46-m%+5T2%@UBE6jLZ+W~cVR+QN#J zf`GBtYbdeEUP>27s?JWS2&B9dm1d`u1Z2N!{i!tOPK1PZkVbN=`AN0}0)#P)c* zV!pAH5||A97zjRA2~&xD6n$eSB`^`V;Jy52;5Zd2@qP~Rt|BE;5SS7O{+=zbODlA2 z^M6&Bhun_cEP;uEW77+~;jCHVjo=1*1HLXg&p!cviBX~%0#gFPo6Nr%SXcW~>r1wpn?`1hz!b*e)kRBi6rU(m`fd#Gcd@_z6- z<@JD2pZHISssu&?KX}gWlw>|ei3|^Oe0GI8wjnXNDuK5GnGc=$7!p@JUk`vS1$#OI zO02F*V1e_KcW=$$Gn)YH06ql{1Ir@zba;2-9Y4;Z|0B!(xkS=DNoOT}8=Zl4m?LSu rq+cZ+XfztVPauXCT4Mb diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_unvote.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_unvote.png index 1526eb4e6654169a862d7f7d5bed549b67b44b0b..122cf53f01e8d5ecc98c82d0d9a171721281d101 100644 GIT binary patch delta 1195 zcmV;c1XTOS2fhiABYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg z3;+NGC`m*?RA>e5nM+7iVHC%m%uIXJgHl0yVv80%>9KNQQGXDKBtZ!oCDx`V1m&U# zT3F$#Aflp(f^gHKvdj{qqD8d{dum&w|75&5 zI7SwgA-W-fe71(Y6nX(pg4q_7<6Q~93WAma2pj>Scy{rl5%I&==vB-L&d8(mVQ_9J z3a;JJbs<5mV3i8)!afSR)tujE5eZj-YM@VUeJB(IC+2o_i;vkag{wG>lQX_+GGPJ%qptP+X&87%RX&?1N$AEcO( z6BeQIt|Z6>mz+#S_n>9HW=zQ6qH11tE2M7}x8spHZlGTnwct!-BKk2Nbw!OcVSZCd zUB7#z)PH~^p@}fqiP@x*hLs(NInuT&P3-5gb`U4a=d^A7KjqJfSOm_4TDQiS*PF*R zH=n@fAh#08yN@G_6UlI3*alqh0RqQ?>Qc0eSt{<_CGnY5gRYAc!qRT@V|Q*WPjnJ&O*bpUf3w33+M4 zk$+~4E%^R+CeqbjuYkVv@|?I0VYx{of;}BW$jkC^tXy3(i z1BOXGdIG36<2gna(_rbOm4;+aL1Wb`XTmueB_E`OwwvVSed0! zg((jzM;>6TDro8EK{-uKE*t8a>|sQZBuW@u0LreYoJ3hEn|Jl+hkUSn(`pj4}Zg# zDH9;L1nB?79x*ORIYF9^)G7pzfg|$gio9E;E(Dx)qK$rwmOnm16kSY>N_50iJ`PL~2(gBcBo}u0%fA2RcEv zqU2R#^0FnfA!a&fj_xflc#))l~4cx002ov JPDHLkV1k{#6es`y delta 946 zcmV;j15NzC3C9PJBYy*qNkl!i5x~C=??pW;lx&5_C+4DT9h}G!&~%G_{LawNVrWArKPV3?ixI%=Er-=sf*( z=brcOyYIX^O!$EZ_nvqD{J!V>&hPxW{4bGI>$g?XP5sL+l7Hsc$sg^Pn;H#nmsHU` zZb*7$wg~8zG-Zr;&u>dgW`ltJ`Y*R7y-}9o%?NP4+n+Mt`Ty%>8(&1ggOWZ?8GlXE z`k633B%m#zVF_>m=rL(GfqlSP;HmuGQHZ~Qap3Plr6nELbX@eA$VhJme@HqlsmBJ1 zMg&|c$R@_c-18T348#I0S~p<=x2fV zfffGU&4rCgl8ojm?R~CY(itjDY1h zumd>Pq`@x&-vRx=!$m4+bOd734GaUFzRt_QV59YiMqoKG1bpGcW^B5E6UKPQjc9F1 z8Z`^ZV1MMrsY}xDsm1ZIq_&K_hfJRHS+<5;XsLPb4CE<7mtO>*G-U^XoxoI)3PS>H zWyKB^)9Ln;KW+TBW-2Xf5?6gbtLK}d3<1vgk=Q+7rRX}~%Dw0JLu+f~tNOf+WX||q z1>4PsoAGA$f142n*T5^ls=$QZ=6AJGX=W0C=+D%9{QE*5CS3@AB4vEbe7+e0ZfCmJZ>RVAwDwe< zXwfD_Q5Ukf+q#c3(xb%rdc+V=9f1LpHte_ClQqgkA?8Bn{QO6M0rf+~El5pb3UCqT z`+pYLSd$noG^2zB*el1GJha=kGp|8I0`8dSxp8f32-|k%A{Y|zt9f3TI^dLryKh<@ zu<0(LN$j=?Tl}y+4SWgg_SY$8@Qe@5FQjamM(BFo-MSqD-ZaUTlxww;2U4B;llxAP zBuT!5zu(GsxEtZ-KCVRJf}|CVeqyrM>nnYd&X)Lntja}6Macm@&Et;07*qoM6N<$f@`|dXaE2J diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_user_remove.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_user_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..1b46219c7b7d9e3f18e50287ba34e158b4f37a17 GIT binary patch literal 1359 zcmV-V1+e;wP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGxk*GpRA>e5nO|sDWgN%1*%}O7 zGrdS>#V|%@NGZd_A??B_MP_voff6AG18;&|bk~g+;zeZMRJ(C1ii~hutS%Qry^*ps z`bR31E!HOFge+2DKi}8$9DeV^IcMj*J7@0%zwq7jJHO}o{dvy&{5#L;>K>rBZ=k-~ z@TF3z3)|OVH*A9~a1vgEqj0dkzWz7Lg#{9S9*)7;@E;96gpVwk9+1o~_%FX!H1y3UkIHw8&V{%VdKB~0d%b{LtCO>55I>N z-|%2NWlf5e2|Q*qLDsL42--BkLC>x?(Wr<@66o@hIGi>Pc1z$N#{MdD>S3EUPGUO( zeqa)qLXI3ZaZYIesa`-6k^=X6zP6GH8W5Ra$6=)h4yb2Ig69HEisg=dpCi zwwrgE1UlfPGV!2I>MJ+`&q2)-AEPL0bC9!diX=22bgImPLo}{^@~$IF2KGW7%#tup zW#MDK>XRYK$#w(O-k{@#c36G5{0hIQ*~bgP?<-XO3*_C);1^wn-xY!H3Cd}H$x`02 za`i{z`uzMDPCy^hscv27pcpm7H=#DIpWr{R8faPF>nDJ2DLeu1z}cWS$Kg`nPvkQV z--h;6kjJWV9m|SSEYEA8ze~FSGYDc7E}?uTGHEHP)Q9-7D9btM-n9YovjY0Vw94@#@6j?iAuPoncz`;{EvsWDh&UwzIy`Is+ zPzDq67ldx8ombFA?~+eF^`Eg5*0x0*(D@?-&ZfeL zduS19OdYy0H_q-9n-jV9d&aLSc;n2s<3F>rBIRzbh)B){` ze+L@tdCzXjUc4S&N7)|4GY!LWhKz>U11z{Va2M8Ph{`p_ RO+)|y002ovPDHLkV1iQUYNY@G literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_user_search.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_user_search.png new file mode 100644 index 0000000000000000000000000000000000000000..4969ea719901a5da5b7c2b1747b5ae207d56e958 GIT binary patch literal 1310 zcmV+(1>yRMP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGh)G02RA>e5nO%rgRTzfP_>-bp z3W0yAh#_Kxi3}Q!prk<;UTEEPVI)!Dl^{uhiZ>>8BZ^3%H!5B^HzJIp5F=jbg`k+G zCXQkBXQh-zWh&$I+N|R{Yxdc*_nEyrNA!c2{jIg$?`Q3`)?RC!Q>i?a#=e1;dc${j zcei1?94rD8!E@j`=mH&}y``n)JD$xYBt9E-g8t+VgstHDrs)C6tN{OjJn{|X>1A~y z^AsY96(q4YO5``n2f!I{3ycQ~!5d%*2=WU`Ys01#$!prgZ+;JTqeF)Nq<#)K4_r=D z@J_i&xjKP6Jri_|MykLW2HGRLRjEd0G?GADl*I0=aj+W$elYv*(KAomtZ`C#1l(c? z{ED79ZE87zzs&5V&a1^OrJjIiEP-8lgJ3%t+%O-X41)&C&tii1ewfN8C<3c43mG13DfA85fkCPwfvu++V1x`H6!4w^R>jPk^6VP>=ItX+Oz76uoH5TKkU_gwW=pTeKPaQAT!ntF04^_C+P};$4 zYg-KWODjK8G1v%PZc+H~5o2H)zFq)+KI)`geSt~dX`cpsB#tEUDv&0Dzd?|nP?@Zz4ea+=y2HM*aQ7Vz7kDiOJ`A^~2m2Ki6$1)Fav#J_n;b zC}mACU5H$Cb$!NpRh@?MUDUN~cntK;xr^b3ZLLxvb8~NS*MJ@FZhB z<~2H|o?1mxmMH-82f#%N-6E53oSQXc?J zgeaoMwJyLX5f&QR;Q|ELf{fpfQ_Pu~zSZ>fu;C;oGsyEHby8dxot%R6?kWjcvp1Mk5mC`x|e_#GH(W#YX!{8CiL z34WIt>&aCJ4u7tLt%M*&4=MIoQ$=8?m;qMw+-09mko`ITI3S0XP|0D!R)D^g$uUH&HddxH85Tey z3ICTEObvsPmP#j@kA+X0xTF*t*k@uPj=R?nxf5usVk##{(57{&Qxu5OjvI6nBeCipWmx~>n{Wz z_o@wA=dsl<_!js}u-s~DYOJ?DYH|zy5n$z3tOcywmKjU*2C&g)GzGNjq=`6_Ak)ne z4_F!Z!hhGAu!0M~MgczB2pRPcvaLmr*2MAr)fI3g+AOGd680TqQ9+*tS3p-4eO%{& z#+=+mdFmQ1xl(D+F92V2-cFk}+QV_lXbgzsM7D{~1mlUnKwT`zp#|unbh3*Qo4gAI zX9S4rWZsQMT_F`y0FJfk+12J%R02_b*v$ebT7RAV<$T|avBU!MJOf(ikMBn+m0lY? zO?_hsC(tjNc95E<0JllGfXhzFaQ*6Wd|%#hd^1l0@m||FlBWP253F3ajTGJI`o2=k zYr}a8(3JUIb5(k1^fc9Sw;->i8N`h@T|o6<_Srao#ELO&+L0=pQ3h-QpPD@6HTuVS z=zl(-cV~Yi8)@|XzXz`NfSU;l=leic71HN` z-N0y8QjZdF3NJtbbTA7Qy}BO!VUGE$1KK?>1+skC+=e#^?pJM5TO{0(ye~9*Cgy>C zuco;t>YE3NbKWlne&P#Fr)RM4wNKLa`+q!2t;rqL>)!){%CC+GZim%6ztZGtqa3X0 zOLnvnSjS^4{n5l zZAdirH0T$D^A7sX0v!{y&HI}nT_!=Y3)}wD{Wr+^kbHOt^4)=dW53EKG~(S300000 LNkvXXu0mjfzf&OJ delta 947 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_voice_headphones.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_voice_headphones.png index b648fee7779d57a1c6d986b90e4f66deee7b0a59..74c05002f779c3213da6f16775b9cde81363b0ec 100644 GIT binary patch delta 1003 zcmVGd|*LLqZcmQWZ%>5HyndD*EyKPV*)`Z{D5v=G}W=TXIkG ze{<%{IsY>=ckaBI_fn}uk{L*5;Gdp>blknqWHRI7oC9jXTz}9D-V4&{bPwg&6FR*R z>;d;dKXA!s8qR{PVCtxkgibVrJ0OgFC+HxUG2#OuX&pEZ;t+W%yFl#AIdEb~v=)2< zw*1C$4eSIhpaE2XDzF@E0*Am$5F~9Frv)aB%SeJ9Ksu_Whe|7$?wbeSCU6zl@)Sdz zFHcE+5O24$QGb^gvbrQ9@>ThGpADU%mxn>x2QLO zY{$_BB3Z-lfRRCzZPA&B8Q_})uA2ne^6;=n1P!ty7V+K)bk0z6RDuqbs}FsVGr*?- zf_m@^7`fyV7uJU)jX-Y_7s7H4#X)x3^qf*=q%jhqM}IImj;frZuJQ=WcOg*LrEHN# zPUL&VZy{MV(0RkX3y^FyJ7Vz(nQwQRyS4>YQ@J3l!G?>~lzeV03wnI_CseD%Sv9 z{$tMW9GTTqxx~z}Y_dx{=Y{LC>?Kv4^8m24C6X?g8ii?&`2@kAGtT!dU}aZSn&3{j|wW7g>AWB_4jF0Q!$_6gWKfPJ`&I)QRrFD5$YfXg}X39zMg z6MrBu68Rg`5c!mRQ%mPpD&G#J=cs`L$a*|hp8Ft`KP4s`8~POVb*4_KFCfYssA^yN zeYC=Oq02Gj6j)$vl)5jo>dK7uFWbKRm0WZKSUiwf+12`rBVqh*b!t(*N!})_Ukz@vv87MLX Ze*rropA!1=)2;vj002ovPDHLkV1m|0(Ch#J delta 990 zcmV<410nq02+;_Tfq%P6L_t(&1?`#7Z%k1X$7iafN>f5qw5cDBMK?lX(R5d3(UK6- zg#-y3|A4jd2h>7{ohB9%D=CSv6S49;76gg3s-!_msETUG=hVE(nKSpkd2i;;sF;&{ z^X@tKd%ox1JMX?$z4^Q2nE-IE9H#Zk$Z{Q(zp|ey$2}L zNs*hN-Bauy@%!L4cmo>2D$ojcfUUq+_Yr;j*dt>clQ#z64L$*Dp9!1-vUx)dj{JHj zzz5*634)tLMSn`^M05+7a#WO`z9p_EIZfa+_yw#zBOq6_WDK!pAXg4;GdM@et$;=^ z_^5@m?O~3-Q!QRugsz$ba=Gk_r{ZU$)dA$xv3AIx6|o1!y;c?fXvFl$G&H-ww5jzH zzdo{vC6ZhRo*L1MmY0-Io#UpKxW`J?C;6ZeoWx&IvVUNaM6_KC_OM8rzZ=23W&$Vu z>|}bV*JoAo}K-c9ViRkLyAO-i0518d~`oDQ5y9;q$kno~70)OId**aT!V1(Fll;*MYL#BpsXY7vBo;)?sUy&F>ssDGpx+Ox_JnoDTtebmb7WG{gMcm9a1 zT%N~OP;^D#+9CprgP?B{2mJ*{vqA#}1Ojl{46onC(=qt+4N04P{3fpbj-4scT$1RFtvf_$mg_EkHcb{+?< zPNgT>QsWG{`&GUkiwcJ{5s~kqV<4)@=MV3zUr-883lMHplQER`HH5?-AfL{o*tuYk z#g2%bk0J<1YWEb=3++cho_DST->OOcELUg<6;hqT&E|w@N=@f;l9KZNQ=&QZZN%io zTF!a>+%GRQPk5e@e<5QVnkz|?e{A#>NA}2bG$&#U))Hzf@E@+gZ+YrkH4OD8^#A|> M07*qoM6N<$g7F;XZ2$lO diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_voicechat.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_voicechat.png index f50cdaa8d6c18286c247ea74aa20b893ed215123..ccbc396a1e2dbfb617d59201943a4e396e567fa8 100644 GIT binary patch delta 1053 zcmV+&1mgRr2+atPBn|;{Qb$4nuFf3k0000)ku@KG1E2u_0{{R30RRC20H6W@1ONa4 z0RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFw@E}nRA>e5nLB6{Q51%E6Hz2$)Iw1~ zL41KAh=n9X6cl`bNI=0?r3BPU5eui;xH8Q<6yc;XNaiR2~`DSxolp8 zMap;py$8HeV_B;UNYDxngGQBX7njo=)eozG6mZro`vv-;BEufp_Q>4=Mir;QvKcWP zP{#e}H6!m6g~J)eNz|qOoU{$PgD$6yFFkBm(eKo-?KZjB=)NsLAC=X-<~1j)TOOKY z$qrcO>DUil)^-OfMwn~$2p9s_KxTPDgh`}je`qphhd^IcuL#j}lMF`Ul8M_oFxrc+0$gLzox~EXL*F~8G8ynSHbsxa*f;S z)pXU=c9ZFa=}&YaY(FAhV$2pf;gGRL?l$lp_;TN-46QI$O&Gia|Bg7%SU%_70`~jN zC}R)3OT{xS-w=Nx78}7-@5uhQ(F54(1>8Zt-m+OpvKfp47x{_Nv9bY~#HIlhfNNY# zOXTuYd4hRdrHBtDA)*I_)Uv>T*(l7(3;fM!SEo_=)PLTDow|!t6Obe>D77 zKn>(zR77T*L0@1sq3AeK`d3V!fh%BTRP5Aa1Reptbl8AQECG*w1FwBgyWZNS>D%9d zG_e9-NXl1k`6FU^Fqq595xtX}@U0q4t?D~GbubA4`4*acK$Dk$dD<#}O`e#^1)?RF z5Mz6QKDX%>yTR<_nKJT()F)x*$w}G{AUC9zt90~#Tp6)R5Ef#CifPpOUPutOdM=PZ zt_skq>_W+@R6S;nnII{@uAQ1Wy8QUbV|3Ld^emJlD}-0!*9ty^K2Dl%N#gvsK7RoV X!j;Ukd!af20000T5 delta 1017 zcmVnNK}DR*y>89vXFndUa%i*1dBnlWQIT= zzymN?DwST>6&UheU;^YpenX-kgcjSE9EM%s7s#7j^%3=)_#lJu`gw@2));Jf1VI5HxJW6F3GJu~u# zC>)L}PNJ?dbJBmd>JGZxZHx@DUClZ&CZ?^u6&TbUYZB16N;&hH3q=g_Sfoh>cR2ZuxnFe z@_b1}VkZC_sj5_0sw~xZ77}g;mprsPFSHoWw~V8gL~YP+mIi_s}%cv|UosY!OA zu0R3fHL9<5HSDHlm4F*N2dg3hha#nFQtUvg<#ljg?0`d&QZ>nH2WC}PT35qvYE}uz z=Mp3LjS{C#@>AlS3aE88Y*%?nxxw$C=Q4}_)NbWA8an|A42eU8DT6_`a8;|M#Eqxe z35Wx!B#nQ-CbBE$cTQb9WOEia7L|bS)h*0H#JGHtJO)M@Rc$X;B{U{SViFiR6KdGR z3COH9guK@Gb{D)0y;R)xvLNX$D0i{deSwv)0{v3({jd2d zjG??)$+yuJ%1{>F2Ep$$(~Ldgd`~FbNEQFfFxY<#eBX8~i_Evt1I+1D(nGv^7W?WD zL3V(jz(r;-l3Qt{U{eC;!4D8uE=LB@lSJ4KJ~>8`WLN9;T4zqaUfgu_Wiyli2hIWC zY0)vPIt$u>d{`X;pTQq6tAIKuveh-hYzG*gv#KiEk4={^(l5X@u&%~&BL;9h1&kaC z`ec7%C3t2Gy!IpQrl4(-e$<03wqHnYV6j|moyv*a{&sQ^zE@+3Regmgb|wxWzlCNL zbOIxfP|A%aFU}j90Oa@J^C4I&&OMR8r@A3OX$Er9LiP(Vaunq-kPBVQbvpV#u3T{c zM*?EwimC0naUnl!EleQas}j(v>_W|5$>KdC+aXA{f-9Oix;*@LHY n{?nZT!(6Q2EM~<}SOxw9wPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFq)9|URA>e5n7?ZjQ4q)PqESc! zVh|Ov2t=YO1koshqM|8ml~iezfVJX}%0ECw3$+cTv$n7i{DB%%Br#e=O<_zUB$kpW zM3eI~xqUCQkG

ce|U5-oW?X%$px?=I!jh-OJ?~)YyUldk6AKmR~3oT8Vc6>`E~1 zJh49H^ZD5XV}?VKcnf#{{(!V-guq?ll@pK%+63OFm9-Oh9ywG*Qvx+yCdRP@;`oG+ z79H|2^tN$!|2=Ytx3h;K@mj%splPRvtDgx`<+2*O=;u|L6~Wug0>OCJL`b5A_%li_%Vtr4N!}#l%A1TrjZt$-y~<`$z})I`E1WAwz2ij9Ibn+8 z#>iRENqW`i1nwuCw2kblBz6aA8b-JQq;-Twd2t&lvMKzMbUU~LCV@+RDJ+>|k-W2z zUB~+h5a1-qT>|2~IgLcCiCMM)lHNwp3qTUzTg?J#`$QH%;yo;U9h?KDo(Qkd4T49Y zBoRxF{a(-vu<1lN7)(r{pSH?M8G_vf%OHxrGb#Em6W1}4_6iaDamPkB z#uBKde_ICK<|*3fw>Ax@Dq+r zNl_QD+p&7)$kmFcaFlnOm4l2;8PS1|r@8ujnA11$jJ7Gq>jFZ5u@G2xqGlq_Pl7xt z7YLiL=miy%xoj0X){DcsFF?0YDw|4wOaBi5^D=jvmicBDLocl>FLUNbA47lF=)Fe* z^#M!1j@F^bL>**vj*UE;EulN%=tVqk4PcN<9%Nax&~}{+ynK~uiu#YowbAw=K8pf= zhgQtx+>_ju#XM@x2~!laDBzw-NIqzWoJ^i0>%(mn`GsQ>FVbhJ+yn6|$6KuRJrJK^ z4Hj9nPz~wDyRQ2J^g$MS_o45$QvZ+mJqTII^E&iS71CBOY;jy|u68jN?#Ae&V_2_Z zH>dSyNlv$rOuVVrj8$He<{9 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_zoomin.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_zoomin.png index ecf15e471292220cdefb2e5076e0ee2e239bf71a..ae2a2b4427c90f109dbb27fe21451a6b359724d8 100644 GIT binary patch delta 1012 zcmV2#X3MH-Zp zn{3}A`&mU&yA~F-3$krSK|j!<78O>|-%=~6G#91Vrm|WTp*@FY^mUl)%++uF2)+X^ z_uPBWdEa~P%-k6!mn&Lv2Z}pT+<`*wK*?OhCnhG!$lnHbgMWHZ6M!Z+9H5W(Hs~!W zDfvTNcw^yJ;2ih@(wfC~fvSR4fcOG%0{ASP@M&hb$H9Vp6q5QDLa-9SD`01g@F&LZ zf)8LMm|so11~h`&U`(4kblSMBzUyEnK8vpfuRzppFt7kXXaoTf}oguIk zyo@Nnr@zHl)qirpK!ocB{UyF!spBED!r0#-@%sQBuh zp;N8{34gxDo_55jhH5*)r-oexj7^2)?17H6Cvk%bW3C+4Q0)Y|TyCKwVpzsqFRvD2 z?19s(aFqV$AonTl`M|g4C%7+tbyY*PH732!y{a#P~^MGh`3iE_bxw41D%iL+z9wLyBnF%fUNU!MCGwP6o%Z2%q5( z;D06hb~b z3VS8u7UeruEW&rkvWjQY_{wxK~poqi3-u$B=+s}-wYGvWez_epG iE3G1LaR>hA9rz1;R&;OC50~ly0000+4x>2YNfu+ktNGK&2h=v9YlU!7=b26g9;vXJ*$bKztlH0Ge4i;WegQag6IkA%%|+g3}Q^3${drUomzCyZ|~n zG99OdU;|hH@^*=V-5jfr`H7DAS^RwP0OW0iffXRR5t<7zip`riRcLvJz+`YYr~H)u zs%BM{1C;9~?tjV6autq;{G6-dUk9@a6XXJw8#rjHrlZ+;gMPRw@yoeGGpSuAaR70- z4Y$i%lMnNF@W>S2;LocGigbusE<~nkhKSL9CC<#GHNGaOoepGsGUm|kX~aj|Udt&G z-?T=fHB{$W$W>d+J^Y5xZDRa>Iaei1IN}82&g^O;G=Di9T@-A3<_}rcX`a_Vte

  • 7e-y z-BbbocGS;=Ka5Mg4}1nyBWSw?Zm&-KaumDI=G}D-*Y=pGpDJLkMZY!Q-NSUI_&@_+ zvC4^=Yk#%(7pUnoC_$y*bx`sR|0V zpLS*NZ_^$RzM9YAn)Tgv4cGRVsGlmp&*T7ScN#a_Cug8PO8>Ht5$E@SZvOK=AM?e{ z_<+s1whhPK)DgOA;S=#UTEEloCJ3dGnQLcb$$vIl06X`Tj0cvr)BH}mJB;vt(6*ua zZnS`qGGeLQxYWz6pK|?u;eIqeaBj273+A`yLOut41ex8ysaJ3x^V7hQ0G;imi3^A` zGil99CbTjE;h~H@v`1UviRHj|G{=1?7T4Ao0#m@_oRA)sZ5e#~bDYv>=A~F%AL7N} zLw`>26n%ek6e3g(P_CP}7Z)OEH3)&tVANId^>MxnB>$1f^b`|fpV8*+Ocqyai|T6d zF0W4iIXD3}fJIFzx7UuoP?zkgu`2 zH#zhFMiE&tt+c%&TG_QSauQeKKp9%4aYl;xQkqy<#G!~Uw6dl?aLQU!)4VKvA<$nl l{>|MqPcNaj1ONLD`~(w5UG6Di`T_s|002ovPDHLkV1jeS`Tqa_ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_zoomout.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_zoomout.png index f166591542d2bf54dfbeba6e485278d8ca75ed73..6f9a199a8e386d3e85a4ecc7631bb15731a09b47 100644 GIT binary patch delta 958 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/no_apps.png b/TMessagesProj/src/main/res/drawable-xhdpi/no_apps.png deleted file mode 100644 index 1db9de5dd90fc1ae7c0953c5e873b4357b4326ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2547 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/other_lockedfolders2.png b/TMessagesProj/src/main/res/drawable-xhdpi/other_lockedfolders2.png new file mode 100644 index 0000000000000000000000000000000000000000..61c59bd924f07791427d44a27d088ccbe0010a79 GIT binary patch literal 518 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 Eg66=$Q2+n{ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/outline_pack.png b/TMessagesProj/src/main/res/drawable-xhdpi/outline_pack.png deleted file mode 100644 index 7a456334f9e2a34930ff5d852dfa3add93a8f19f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_#IP){i3@LVH+BLIsy*2RooUThWV&5je^CW?r$O_(dzYhiFKDCSA%PFCq@>;B2`xbgO9 z5m}0eiL9lI3FWrZt7Gzx42pMa@ZxRY_bNTD8KVuv>w~Y&OXXDQ8DmsAIge+Xy5mb|Sr?-@ zdC#p^24^y9IFsQ_hBKKk{7m!?4fYNVdT=J=!I=zaGH>)+8SHK*LkJ;+5Yj0k@()Be V+>D0><(0XPTf1-=Kq1AYT~`pX2AN=M_gR8ejmun?F83sL_BOUZ=K68j+#l@sggE^k)Fn;8zs2N3#H4EUC|1 zUQ=>(pv_%7T>((LdR~^)UT?smu@2o_O)dTPmui>vGwG;>$fvzY6YL?O6l7`e0aHiLw*`4DG28@!Os4D}Irq3l^ zmo&Ip0nOn4#cS+=8UaRWs-%wtkapOut2Dq_0qydB*K6pbl=oqlWM0V~k~RcD%_@3W z(&0LIoBFiI!674vfdbi1T${bid6aI~a<~Iw22W ztGoXqJ=g#^yL;ab?0LI7Zp?d4T;uFeQ%}*JctRQ}=}{L2i0eJSFL?l$colDwG`tRA z<|@sX^kV>Qo3pNt*d|#4hsSKf#dUz|C}W4(a(vubHb<4q3TP3qUayg>YXoJpahW^7 z;`-0+ze_9Ckri;Z*O(nN$JYREdWD$kr;=t>Q%_dFRbFG3FBJ$j!8y4-0Wf>%b61)H z%>vjG+vIZ!0=rPst1%BHlC}4cq(N!x%>p>a8{K~;&BzJX?!ZD(Z;P8g=4{MN^@o&X zs+|iAa(Oeaeo8+~hcywH4crV2j(umI#Y$i)usLJ>Wt9YYmgiFa;q1>eGO)S8OlLp( z+6SxxmH?ZI28)ygIL6EGcAct5S2&;TdSF28`Mu5;d?Ay8oKi`EBfR|1glAhF*uB8? z0GJKVo4{gVW39m=B>|r7<#&{MW+X5RxDz-p@ck~J6L_(nV3Cpl{iCVXImosrj|C3Q*O8@`> diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/outline_unfave.png b/TMessagesProj/src/main/res/drawable-xhdpi/outline_unfave.png deleted file mode 100644 index 489cdafbf90656d5d9cce79b1cfa6f65fb6b2ef2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1509 zcmVhRUrB+s`WTmM|kd{3ti;AQd1))eqMG1}ek|Yf&DSKI@ zX4zBxQ9@eD#F!~!Iy&VevqrIOM!#6JE-Y93+&SmmGv1*4!RFqxA8YMzKi66tWt34y z8D$iKT&O9@tjDw$fLQ>B0$2~=2>|=DRFKOBse~Z}GfeGCF68l8p!u2UNra3EPGA^U zoCtz#vRozsv;}Z)MA>~>-l`}>P?X;f;C%oSQg&htfRX0A$^0J$;F8uR7=%vyIJ2;h zker@y*|a0M+{oBWa=iZLv0UqwWDibsJExiCqY0FrPx7#7|B&WCZ1SXhc&P|>Ao*P2 zcvwWTQw*i^O`AO=`)Gb&l6y_ryi%T`ZFSZ>WNCFTpzt)3hfJHfuKa0Jc93MhQW4Cj zJKS;;tR;DRgu)k0z28Vyx$m9l(Ai zzZt+f0CfO<5#mX`iNPe_(fySMuaWE$b9u>0{Ao%(4cgDj`0V~6_-YK{hxJt5speO+ zD_@mhPjytUW3Jw@8&&T9!1WZu<566qmZ(hsFq5?jzy@6ovKMv&Xwbc}3&0@&HvpIq zptETwZLZh$NznyBZvdwN=mVfqzh#S@1K=zpZ)q-Be~THsR>-zp>(eE7zF!BUYP+g(Lcw@-a_(>qy!~hK=LOiY@Xg< zEp?$Rv)HEl{J6Ts5|lKA1%n3q64(~bT4< zis*wlwfE@rnq6zt0K5(0)FNbu5o68wbP={mY4%MZ-Qwb@g0D!Pd7=-Q(WV298i>k* zAoN+yyIfoIM)iq0WG*%Tw`hPU3i7%;9l!@#SAOq|i024C1aOVUV)Cfcb`w+f_jtq@ zUo24XDw5wZj9M*^YU^Kxso}|+TYHIC8cXD8;BtnVUMmA}8jogmsY0gObtI1k z+DP6k?|f%TaIA?)i(T2@l*wW6jP6U1&-D^t9Vlzm2N`>qNVM&MA?5MBb-uGCc$ZPM zQ(vIO2%b%Hcc3G6x~%e+P6z$23)GeNPf7?vbWGrcks}78LEez5?vG)}%MBfyn z-w(?AED81xgfOUvvV`+Sro8_~=~G)%K=ux|*T?uiL~%*`_%d7ry2I4eS_|M!eLN`^ zg8^I%V1$~4Ujta8ZxI$l04xSDNP^F~TrOGozKk-;D5H%3JplX-7JLv2@6zWa00000 LNkvXXu0mjf5+23Z diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/payment_address.png b/TMessagesProj/src/main/res/drawable-xhdpi/payment_address.png deleted file mode 100644 index 5b98c004875b1eee793947d2e1f64c7b2d4a6b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1220 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
    ugPkaHKpAKS-JfUupXR` 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�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®(R~dp}sq$UL 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 Z{(pd)I}V%_(E9)Y002ovPDHLkV1l`rWbpt1 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/icon_6_background_sa.png b/TMessagesProj/src/main/res/drawable-xxhdpi/icon_6_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..1274cdb62b9eef5fd39aeb74dadf1002d94c90d1 GIT binary patch literal 22425 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 Lj0h!KH$wjn9f^@& literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/icon_background_clip_round.png b/TMessagesProj/src/main/res/drawable-xxhdpi/icon_background_clip_round.png new file mode 100644 index 0000000000000000000000000000000000000000..837660051f39cca89911df16df091e4aed22576f GIT binary patch literal 6854 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 K^(u9oiT?x2&svcH literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_background_sa.png b/TMessagesProj/src/main/res/drawable-xxhdpi/icon_background_sa.png similarity index 100% rename from TMessagesProj/src/main/res/mipmap-xxhdpi/icon_background_sa.png rename to TMessagesProj/src/main/res/drawable-xxhdpi/icon_background_sa.png diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/instant_link.png b/TMessagesProj/src/main/res/drawable-xxhdpi/instant_link.png deleted file mode 100644 index 08a6b4515a7ff955e271f24411266587fa4d4984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1161 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`ol6-Q7^MPyLR^7dV!;3Z|8Xg^wzj@~ z`}WtbU;qC73sKYG-~avlcOcu+(h{q#y1Kewzkc1kc@rYr+uQs5_wO%XzD%D!{olWT zKoYKN{`~ns_R^(G|NQw=TU!eeU$tsgM@I)-4UjQu(xj6uU@@j!v>(4@7}#L zGc$Yt{yk92$jIo;n>Rqg*|TQ@xr-Jp`uzFx<;$0W_I~^Jt-QP($k5c(yl~+HP#ox& z?+Q#ufa>B(g8YIR7@1gD*_b)_ghj>p|FiQ5h;T|sa!ECu|0>OGa7|WPK}B6tTh}=8 zV}p=#_=gLDztXid)O-cK-Y3bZdPJEh>d1!#iSx>Ny1&?|ct}cR&nthWgo~{=Z(7|@ z?YR1Flk#s~1_q`Bo-U3d6^w7Lw-$ZTU^wvck)W86+13D{%WT)~-uFK{rp?wnGRV*F z|G#AIGx=&qZs1&Fl-{@K3BAYls^)7d`8fHT=) zGR_au6kKQQv1RLu$Z_82pvU2$k}@gkctgjk+X2fAN-TG5UAuSjWh*wNC}ZhUrfque z<)zo(Bpr>KEfdwR!pE`k-l2`Fw;LVZyzgJ*!G#YeUflRyfq_$gy{UG#Xv@hIrB%-- z2VdS=u6SzE%w+*P<1C65cERv@R z9I-NIZmW7#_$ytwGi3&ogJE=JY_`Sgs{#|H(+;HV5jtUi*(-sIyW_*!Hsif}Kg(T7 zW_z>FBW&Mh#fJLgWoF<1Ecn~7@YCk7BEB+nvA+u04lj4`RXSAXK|6JhO#>+GMD zO-epl|DpX(Uz*pmckS2OV)za&`Ff(pHmGjG;e{fc^WJ`cn;xU^fM4`nzv}Tjk0+_e z81dLDK4wW}7ZXrgwKdexC-*q3)1|B1w{kamXy``IEPUg*Z^A?aMG490_Z^m&3btM__|IuHE%Bdi%6HjcHHyZL zR!%xMzPGJYQ&H}lF=xl8hN8`DcD}Q=?UI$9`z`i*msRoGwhiazopr0B;22_5c6? diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/list_bot.png b/TMessagesProj/src/main/res/drawable-xxhdpi/list_bot.png deleted file mode 100755 index a7b60a6c9e55b5503db9d7c33cf4cf95da031e1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmV2{q(mZhs40ksgYYjXXlXZF>JP9;xj>=|!od*@q-q4hU~=V%=};wwMT7_zDXMfF->;a`hvXa) zr^H>37^ep^O2bVSnAnPjBAH628Zz8XC6bss2ipO_qy zR%6f1`nqR%R{pdca;Am~B7Z^o&*hM&8d?|m*Ob30hkP|vROFxkYBM=R>6a!j$@0jM zN3x$qXIrqi2r)Mf8A~N^i_E(qTO!D&3*tSVl zU*Hcl`2>F`)k$uI2W6k`IusZK zJYzdoJK(L#KDsvQ(MoNXkvp_w+=y4px{cj8d0005dNklDnUL4|~pk_jHE4W1~m(AmS=-6_3RlMOB06A8v zH;X^k##0XK3VW_unr4&uxKVsXntr3gJKnF2Z`#fc<@~;P{33^%_!HZCsGQH6+?Z#| zrAex6V^V3Xn8ZV@Neh3|=`do-_^jEEInNw_9n1DZr^_j>~gma%xp5Fu&$ zTuQG8ceIu9(Usn&S_BCLtdrr09Uc)D|2srzXOvegVDW`j-Vas$%dI5JCz6tv;WJ~@y2EFf zp%@8=dzF{`C~9X} diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/location_current.png b/TMessagesProj/src/main/res/drawable-xxhdpi/location_current.png deleted file mode 100644 index b4fc8b1aaf58fe08134fb33bd0196f6950202129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1468 zcmV;t1w;CYP)qv`7dcksd*TDEW{Z>L`^d zh?0Vi0zpffq=?8ba1}+NK@=!KN-!x2G?9{+=QVq;_O9p5IqN&SzP@*lbaZ!T&b;T$ zyR-APV=pZYGB7YOFz*a(Z*Q-l8|W+a&+2+*-s>H%UquK%6S5Hon0G^HQOjw{t68Y` z@+<@)W>Rr1BdPR0(?06c*+KL*5ac|y!%luD*}PF}0H3L8(hqh|$oP4rym2p+hVzg} zWly7b(JgeZqO!s`JrA5LQIR9)HFOg#Ey5J`kpoEq{Q4A$XDmD=#up0#SEqW*z;8W~=K%b$SHIJ0brQ_P69wD(Cg@r=yUXKrMgy{@=iD~yRs>xk<*fEy9$&_z@xP)*PJ9glw*4wy^rQb zL9%y5HnP?1IwaU?3SiBXHbWq7jc};_980c5@c_7ps-?6QjYL{{acA9Zp%aXehj8--{+d@;a9s#1DTFx}&jC>0t)RM5% zx-TVLk(k3acvwq$snXnqCwA&{_VQX;ZuPpkeG)cW;98=6aaTgG1}NHKPsvlZ6@E)) zG}6A}zU1WbD0srmN)?;7RZ?QrX~K3|g0!EL6&|04>8n|zy=7jlu)We&jJ*(~%`Q*A zz@UqL8DR?B6D!8{1o1@br!2#9y( z`FK8$S0}qtGHjTMMwl74T)p-LNt>xAMB1=vU$vs)vrn!S(NcyFhdF|(Ry2Hi4v;h) zUdWNetG0^1K`oiJ<1dP}-$NBRJdfr+9qW`u=Z6{O1I?Z2P>lT^pc=I<9N$25qEi-& zc?7RU(r}1#L`LeD7BbhzfG0NXQv^iQAnGQz-=NWNVEW>zk9zZckemvR1(MWpm)zC> zu9e95{&dJ=7Mu$L)D$2$Pij@;7RK_~?@;b=kp=cV zX0cIhL`38lvevNE>57qBha-N%Mw{z9T6~)nU{Cgipk`1ImfWj`kbRFY`q`&hr-iv6 z2y!0vtPqqs3lKS&;8bt=>{%h`VWKLJ5^0N>L?2y0`lo-Dqmynci^;}N>w$rVV&FY- W9^ZNFJC+Xs0000g~ zUNA<*L<5>g^Z`sHE^&!Vj0;B8XpEpy6PLK)9yc%|t^q|9cgOFCZl-5$_o;KIm)kef zmHczMPgPg_Rd;Tm)77_Mze=hKR28TyP*tF+KvjXN0#yYXUV+Ze&NeUy9MEtwWg|dQ zE&zW5$v@!ovTqqAcJRJ4we8C181{@yih13$R&O_R{(TwkK5;%uIS1KUKufbrv??tI z&Q%G$R=t~mCEs9hWGM?0l7gU;Sz={^{wHu^c%9FP{psLW;1b>EF7okLxDCYi1~0nU z2fB9{NB4#x*BuN#4g9zUJ-Q6;O^jTwfy@-J!NoYx-Nl%SIMG_X1X;<*A0i%lrYNrIdPwg8vtQ@a*8m+-835vK** z4=ni@gRxn~t?`3%6~_{N?@y??xPS@b>VEjQK~OE0wp{4oSpTLj(am^VF2OyW68|h0 z!9bVUg3*l@&adzYuE&dpbO4Ea4EWLDsQ<7-x+Rv?362KBCdA z-zC4Goay5)m5qV`pLXfZ*zJ@mm~k=whk?g{C0cb4GTddSCYVpdU8G+E`(_up%M*Ub z0pjEW|sbMTgRA^K-QIbS3~%zWJ<8*mG- zM17rYeQL(z!A9c(HT@R>XU71&;vWiHq8~u6#{}CCXr+)m1zN3u*qjNhrn{1U0$BGi z?c!&6#GHiPS|HI|kNjF4AsK>brTPFwOJ8aQ#m2W)i)oEK$c*!=f_^x7wC2jLiR&zmsr1CL?hQ&} zh!q4IeZp3=ACqmO7R7uIpX0I99?K=mEkCLBM84A%J<#bZX!eA#nGE#xbji0Ur&^@3 znFq8Na*29H9hR?DdID%wSn6UC=r%K+Yz4zc@86#fuIV|v!i2LEfL=e4xUc7hG3ReE zH`3yhnVw+kPpbiC$&DBcbOlDQM%?v4t5_(@IB;$w(CenJK9420VGz3+b@58ABWOEN zi`A0V82D@jv|qUz_^gPtv9q=fdYqY?I?*%^AkYGme#VPxhv;6D`qvlu(BsD)JG>?z ze1WPwze0nI&rQ;6E0FYo5#vCx23YbW2D>HsY1llZCVn4D7=$C;ur1LNeyk72QrJLt0ni4|CHjw;l|&ewp6Ina zTk<*v#Vz4UgzKG$^i;6H$`1V!&}}Qg`3$fLSW@l|qE$4qYXz&UEYZIJR8ValmV)S> zh|?O;5`K;qzbW)2qK)8UU?q)-muMlVtEb&8g_=%c*2AtM`hT2}F!#t%uK0k(uyNEp@H-M?v)%9<$2cK~e~tZDNqX>H7jrMeY<9v3KeV?7DC{w^CpznUA`s}A)C0BKCaGFNs_L0000y=U diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/lock_open.png b/TMessagesProj/src/main/res/drawable-xxhdpi/lock_open.png deleted file mode 100644 index 43c2bef2395a44f46994e29a5318aaa5ca5523b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmV;#0XzPQP)002A)1ONa4gkX;t0004tNklKc`Z{#EP%9*G z;hLO({!h-w<(xw}U|9u<3SB%F1cX3Hzygmh6{{>!<%xIB>w^K+GN9TlxvV9vqM;r+ zk*q!UMM8B6NvDv0QBW=Rq}PetVhTN8Q)_0p)GdoTcg$G-sWJV<&meY_Ch??H8Sxcy zJ?o!Sn+VjyKfZpX`Zk*97`@0Tyj*ZjBF>&(EKfpo%MP<9LQe>I@z#% z^vKVKb<~9QnOo83E5Q;h!4fRNx*Dt}+r6K>(ES0?Xm0zS&k&pd00006vihSmI@G1i~)@BFOY1k1Z6e5QUd|0w>Hsa3$fRwL`>FNMH?IF5RE)GLhzBb zv4No2y5Otum7fJTJ2QLl+_?{Ct9$Qv&NqAJ%sFSy2oYk?LY7HpdC3mn0QklZYs@l9 zmKKrxpo?p)@(0`a!z$M}ogC>o<^m{n`Z@aJlMb*%l(ED>bkbAYC(gLfsVKC=?0G0F zQ)G;@bkih+5H!(EnlXx$JWP4)AQOIUP!U1!6#yE#R*N< zA}N39i~{@--o$nKF7ZXtIOD&8YU4YDiA24@gP6WQM!X=M>?)94VgWa&Xx*i&9`Hl~ zj0dXAkf%U_0vUP(u;Ys6C+5fVswZ33^irZ~?9@&2R+*B5)t8WE`QbfBEh=vLM&=Fr ze5H=?UgDPZ#8(@a9A{oXsut>uf;(4xJ?A+eQ#c=(k2WmQHJi@;f7QWn7jI@$BPlUV zhP?4M@8I3P>DYgDwU&XbPUSlNYE+{xw2cz|Goq;t+G>!I52V_q#OH|4rLFCT-K7+%Gg4+d;&#$%kc_jG zww)pb5G`SBhM2AvKqkY7OpSOU1hEz}BP0oW4=T(81s8AjP7;o3F@XwOO^e5z3xNcP zr;N%@DSax=yEr3%ea^%cv-EK+_To90N3kaa^DgCWOyb&t&U+X1nZqDv(6gX7jxa}( zCiXqT7&9s*PF%8BR6C}QCAy8qEXPzK=+X}67Zans7;rEbf)NdJAraaO+TR)RgWXj? zU%8w>^F^h-Yil<>*UFhIv1rGQ{$9#noKy~_!B(L?NTh=|n#hOnCMUugcw7r&^o#X66}U-A6|3qe`TNsIo#00000NkvXXu0mjfif-sG diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_add.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_add.png deleted file mode 100644 index 573f4820291e6212d0cd1f8d859724aa873f2f97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmeAS@N?(olHy`uVBq!ia0vp^ejv=j1|<7dDaZmTmUKs7M+SzC{oH>NSs54@D?MEt zLn;{G-gM+^G7xY}EPN>Y<;c9lhff+7%-RrOloxk!+sBClrH>qb|K#ShoqI|-D3+mvdPeQ zW9rwit;MT_`|IK!KG4^gQxL$gZKlP;1q?aHg@+s&Z=^kHX=d7R_6R3CYr^bKVLq+{ zX2R++A`Q7}>sVuK*3`yF+_Zb=Hh=$FW?7wlt^Q}X^%&MNpJ=~czcq_-#VgCY8&h1T zyxu;gByN7P*y=R<%^CTt1(5^7_9W vTOt{5r6xY@x176+iA!Ta11jMV&!iu$((yuPJ7)zjQW!j4{an^LB{Ts5zKgp1 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_bookmarks_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_bookmarks_14.png deleted file mode 100644 index 390f4606b68344a0ad943431b96877711c0a4278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1882 zcmV-g2c`IlP)`8>FreXN47dr*0-peltwA!s>^GGyo`Q<@7wwBdLc3P0to^d>3cIc0OHDiI&=h32R6~S4JdX?l7Ka9iMPUqzw;)UK$ z2^#Rx6TI&6RjHOu&jc>KUEo_(>7ZhNnYU9=0|Z0C-xWmVUEOq^71TFLn>fL$vJ+#g zwygYaGW;obJ%Pj%I?XZ2enmGr9#eE{xch)l4ZqU$iOv+y67Dvj++3Lxi;3R4L)W8; zE9qXYji_*_E8pG<$J!rkn5L@2$ASu<RW~($h6Cm3%9L)SiXGpWq1gskG_!EXRc3LFpWX0I1NW5nvv6|;XDPS$&rtq% zVAZ0BuW;6V%sPWKGZl$!6f$#Q6I(f2weS{htiij}&^4RN%5hBOB>9scbN}cZUl^I7 zK@G`KIs7&@QXIJL; zQdWR9*6IC)E5}`hj(vaCeTMNcL)UDoD~*Kq8#-^{_8P{M4PCRTt~C zvt(9Gy1JPYy#77b6T&X^$=}`wWd!k6z*?|!8vUI?ee=*pjFZ40z!lwMSr7Q>g^h#9 zT(70$<7_9S=P6w#V$)JHy>hhV@pQd;*zl}%Zk8NE+3x99H#IS7o!oa;!049MEHIpD zoyR+#K)yyls%F82I8rP?%fc*KjWX3mJR#w9-J1Hb$bXq1gB9tU!17a8nDwk7m z*e##4SDS^?Zk{;SO{A_ymejR)1k?%?gC#0veP?+HU@Y*BAA4x4`QH|wqk->C%g;DW zknO-%yaTjdL;gf}M_K{HH5FKoQF5&@tucyLE(ig)0pIO_W|e1_ZIf={cmSLLmK;Di zE-80i`w_V2^S=a^Xog~T(g5kJFK;xtV2NgN>V5;BG`FsPB%m4O%~p0L-J-Y-=(iw% zZ!2xhu|SAKG?({bK(Z@n3;jw58_nD<4dB^8+qrRnh+Nx~P;U_Q>5-UkiNl8V#XmtjpVQ$0Yf*uL9^buy;S- zvOffT0erHU26xRz!__2mz$E(!@Ld)4^f4P~w%IqArmOOkksUUZA&E}|x*?7$soV!P zbSESq1$a<QRAz0rJvh UUFsO5Y5)KL07*qoM6N<$f+rt-0{{R3 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_bookmarks_hw.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_bookmarks_hw.png deleted file mode 100644 index 97ff71c3b43e5c59c1a3cb7c5538f5705c5c8f1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2651 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 JPDHLkV1lMNC3pY; diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_bookmarks_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_bookmarks_ny.png deleted file mode 100644 index b09ead591d1453ec11b693231368521192e45747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1192 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 osROA4sROA4sROA48>a*R0OXZ#umAu6 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_broadcast.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_broadcast.png deleted file mode 100644 index c9977a70edc7e5c37801bc85ceecb680a87989ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1685 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 M07*qoM6N<$f>RLd2><{9 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_camera.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_camera.png deleted file mode 100644 index 9eb4c795d086988186eb7b6a294fd081ce1d5824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmV;G18V$dgshsy=N?#|JmL1pa1utIWyn+zH?nJ2M!!K za4>(6L?QKfB%_`}lI*fmidB@_VW){e(4^WCw2(pI;Dozia77(#NUD#t<=zB z5$BJbI4X#dN)1JdIHPi+M-Zbdi$@Vl9C5@3bj>t8K{P}-=@jsWUd9-sm)8`KW+B--Hgu8+-3IfNTr$WY zmpWYqHO_IH43Vl^tQt1@%q8J6RO=D(3_sFKE@#yY3i5N=*+^UtL^)2tV`)f$T6lQw@=s&heOeI!Dyp(uv6 zJhR`V(3{FiKMi$)X6T1zC`+nySTi)F+E4@^wD}^bPVsd4rFzNS)LH4-Y1UY^ieGA% zizC|nFLoKKWQxi&M|~bjVn}1O5a*Y%ls1hq$ZGY5!nh_lFG-j+pD1z=Ts7)(gS)w| z()A`CWO*w@A~>jP#M_N~_h6SFyS0yhYQO5Dl6>;1qFZ<3F+_%q6(d<Xh zG13$JKt~LlsnVT7^_jab!%mc0d7!Pf*=e=9#x1tkX%6JIyGg%NGkqpsmtRwRD5ZsA r>3^$%j$xX)PNvI&0|yQq{I~cEN}oTElM4j400000NkvXXu0mjfu2!mv diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_camera2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_camera2.png deleted file mode 100644 index db39bdf739479a58bc1eebae334a6418f1317966..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1665 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 FV1jG!;EMnN diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_clear_recent.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_clear_recent.png deleted file mode 100644 index c5c8ff47ec8a5b28e2c7c6acee44e41de4041978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1787 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts_14.png deleted file mode 100644 index 87ee57b14dd9bcec713c14e6f13ff81217b63a15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2549 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts_ny.png deleted file mode 100644 index 8723eabb0c538553512a4458a169ce9411414501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_expand.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_expand.png deleted file mode 100644 index ac051d89ca41c8cd952e9140da87ff05abbc8acd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 849 zcmeAS@N?(olHy`uVBq!ia0vp^ejv=j1|<7dDaZmTmUKs7M+SzC{oH>NSs56ZIXqn) zLn;{G&bXN+>L}1=d~D6EBdW(_1(hEy{=s6`^h4><+HgkwJpxWlTulmGP1#dAxYq>= zy0`?cuW5N4{@_5s4O{Otze~sWFSH20dN;JbRwk_~EyKf^#l?X{v_PzJ&9zr29>uLU zKlnv5M=tv0rX0&nd-8){Sh*T*o_~XBSKaru6_JWZd=v9GKHAY`9JFow>B?8}8eETl zNtdlSJ!@-`^0PU@Gj?C!DY16yn%1LN&TMFnY55(Sv(Uv_Q=sf}r}i%Mf@8NzND8x?-0=NruZc9hEt&4^mhP$aQM+ivIQw;V+^ zd$<1DB)@R;4ejd<!x&( z&BjSNHHn`x?%tW5WP7MQ>3q^%!|zwFg^HfJWq9UX+s2PGPoDkyWzDUGeSK_Y3E$3l z@%~PKcj|jfU8Hf}&6x&fc7~M}QR}jmS?48t#({ zr8e<1YHwUObMx|#bMhzLP)SQaaHHb%wGMrSL(9tUQ^XoPB%TaG+yfeXo+I$ zk;@fRjc@Khan>FVdQ&MBb@06o-m@&Et; diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_groups.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_groups.png deleted file mode 100644 index ee1bb1f4d06093d23dd309b746473cd205a4552f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1416 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 Z{{!)ZrndWPW@G>W002ovPDHLkV1jln3S0mH diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_groups_hw.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_groups_hw.png deleted file mode 100644 index 5167dfccc32662dca103140e76cf04ff43c684f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2950 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_help_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_help_ny.png deleted file mode 100644 index f2206bc221a28d6a0a7b5841599cd211782ac35a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 891 zcmV->1BCpEP)WHI+IAmWYlWFc z$)dgtvcMP4YFE~)Tc=jL%~gu}kj(Il|I+SL)8pEcndOixdoQjnSww`)6x&_NoVY-W zYfWaplm6W|Qd}TO(cdH~a*VOhKWlYwTqHBt@aRv*nP-wAQdBU-Q9s#fx5HX=>QY9V zhvPDtiQY6O`imxCX>-~ZPiTq?#v5s*(I%N;k=J}?v%8{#X74!XOVgr1NS12Xqr=bc zjLRfRiVI{0YLcRYWTiHA*=Bsyo;&PU>4>4xM;>upk4~F3MQzEvtXtl*(Fc~a zlBg}?9FTX+{c%My&-hE;kFJYavRbD~ot7%a6-h=pEU&|os2#%`lD9)s^of%7svVS~ zR@|mrr7lm)qK_=lC9lKis1?JVQ0ahCQuLAWx>S28YDLLry~^HDias;kS=E+B?O3kY z84oB$pJ}$yc6lqKc8s!9kFvdPj;mmp`waG~cD7_4>4_cqvQho__{ z0+Y1L``v^n0)u@guftnPQGYUT>yo$2tx8GGr6>jqoz|;twG_o+v~^CQtkW7<)R!cS98DhcqB*jtH_N;d#pFRPSYu#R zkPM1?Gr>MR4qD_U10=}+S=5_>Ht2Rq*{?QPY?@Nkn`E{>Eb32_kCatvwOT2P zz&(!3+vd6`0-2S%R667FCE3=G{qL>`>xfP}vB1O@ltW%30yz5D`qexUbrzMI+ zl_(NbqDWMUB2guZM3pEKttxd#k$6G7Ui+d*46xJ|-`ekp^`=KdLqkJx{0$OkOD^T* R!aD!}002ovPDHLkV1hbtumb=9 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_info.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_info.png deleted file mode 100644 index d1d521c1c5ffef89b7f2a41a9bba6fc920f12b92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1600 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 E0G(o8-2eap diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_language.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_language.png deleted file mode 100644 index 3705c9b8a6ed0bb4163c24a3351ff722883fb027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1134 zcmV-!1d;oRP)YDDX{U3)d%y28=E8*w7cO*xGUrm=F2;yaAvJ4R8S3}Y1tz#0Om zNTjg>3}Fw}v4W4MZC#r$U|w8vTrg0jG2+=()6WYkM$ zc*%HMbnFhovM526#BZ$_A7nxO$mI+0Yd*T5n6v-6eV}hixS!}G zTq9x5DCV6Z+(k0pi64Y{8^^;%78YeMK!c2(;LME1+!@YJ%f=gIFUX?hR|5ki%zMw!xhaRtO^K~#VA~;cJID~3tK#A} z1{UaUL9}kJ9M{#n;hJiZxn3@PpsRVpH5UZYq;1t>UCkiZ+!UGfap^5x%?qxn5FRA| zVM$kWi);Es=A=_;ldk3+*PIYUE0wlfx|$}#c>-&qgw7Z_@(E6%$mhy0x|-8mvnnzt zZIq7cYPPuMupruDuH4eq9OIgGkvVCfrMrQ~Z>|x%{79EhwJ|c%KWvN4am1%dNW9ek zL_Tq~J3Q^=_zRi%E1QpOu52=f7FkWW+H_4=+I-zmFlS{o;TCHp>-%w3)9VdZ(+8dH zLrf&3525Pd{Gchua0jQ6jCa`9!C{Os99Q+ea!mHVqL&bmqw0N?+TS${S?n5yZ0{OI zAMP_nCR~A+F{EKh&~JT-bjIK%-5h)St%=^r< z{GaEZGxN?nb8fBHkxmCX9q4qR(}7M0f(~>AeBx35}Gv=ECyeJydq!4m^tLTN0GC@>!55=%vnROffRKNc%kfWnRv=^ z%%E=|MT`RXgMUH0M7fl6R4W_UvWo-64~F>jAk9}uC;S(|Cty3+7J*IekO<@1>eDn2 z=t7btZ((pT7m*!Fh6Cm}O*KypC*nA|Ekx2Jfy_gW zB{~(bcbXVw+9+p~n@y8ERA#Q+v7j{_>};afdpo5mL?r^B@xa~EiR<)ANYy8W#4-@d z?zN2 z*#8Oii9_Oz!01$A{MDM%>)p_q_1IJW13 zJWcD%E8p`niOG0a+ zV<)oJ(o{I(m+uqAnoQnbBiq=GxM8c9;l->Q-P%~kG7mst2?*u(v^j9RGjxu|S^^KR ze!37%0XpX7&J1~PHvyKU^)GBk@)d@_{Ir4bb!&BRqj#UcU14<$$R?D{8S>5#of)r4 z>tEQ8WSb0uGt&gdPfJgs{DtDEB!Afe*@lv8$q1)2Lr2D&lJdIansDY3H<#L$GSF0G z_a5h<&y2o771_MkpzIyEn8s|^l6?=<+shXG4_UL66Zn)!#;$g}k$MF-@A9eFm8~1%fl-@zwW$D$%cN!<@3yi)&71_A+nTy%r8x7o7 z+STHG8+3Uax1k|Q?_iqIHK{nkZ$kM&(}7y;5gOwP+hrOZd(`-S5XCfynpBRXtEI^? zROD@(y8_M#gZDFDY>w%6Z7mJD9PGZM(Y|y#1`aWP_ZeNBYPvb#YB6Rds3_!05X$>$ zL*qCCyc-6n8|yKjRx(HtL5P8^C_fpn; z#5feZVq(RqWP50iJkOed?SE7Vi3Dal6fs6ruV}N@# z<9uV@S`|d}zQ*?;lpBg>bs5lc%|<{ z zyc72fwm_z2S4f=ih@iVF*}KgakkYwMbGT44zfV$xI>|L}bFcAh$!cJn+rk1N=5C}> z_go#?wrWhS>y*&QyjJBb92c_sYp*t>wFGov;RFc*$Z;_E!Q_84!L|CskUrZGm+FyL zvm?ioCbzDvr?)zHDe)otR7?S9l#;*%A)i)PoGdlw15*Y2ao|T&g-*~T%VteXO^4Q- zd|Ck+TXw#d#)Gh1%2921mz|iHixt?&HD%{&c|3~H1DQ3Z7_Ix4_U59;%0|8VdTaPoMc z-LToxh5doR|2v{S*09^B0eY~~ z-&>bq2Y*H}YuGi)6-*;$16@^_yU@36_wLxEJ{UY1_PN9;X4Y-?O znxlzqH_$mu|GZ!$Sivj#zq9Q~rvsf1bUM)KKpQ&nKZI>}&QIzAjQ{`u07*qoM6N<$ Ef>XmRt^fc4 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_mail.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_mail.png deleted file mode 100644 index c634fc890f55c54a9e5ead7c21be5e86cf4956d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1980 zcmV;t2SfOYP)Lsx!AuB=5XX}FCKxkBgkcA(Z_)$=%si^7n`%mZIIkRV-bM`*>oSA#& zEckQwS$nPjT6^6y`<#6~rlX^hssdF7stQyUs47rZpsGMsfp)Aw=U65^FfcHl`18Rc z@FbWG9s|?BR4@r#1DC-ia0>haj)CvM51pNzx7gnKLb0ZT^k2$~W3i${Da^qnUR zY$4bMu7WZ|yy9PYM^ul2ECt_y(G^3mj zBk7CS8~~c^HR=Bf{s1~5=)|BCgyydYz!N|x5uHq40nXr!CTHn<6BIfC@kPAiPm>y*GfFK) z2sz2j11CX}{6)tma8C$tsIB;;IEt4fC+V0M%3ZiUNz4V8K$2{yXlHA)L7~!0;AQY3sDWePas;(&Kz*{wwc4oXi2qh#$?CdIVOyeff}f0N zn%Ab}4TSGRuo3tyn=l&`*~({Pp1Al;0m|DIjj!1CJA^CUDA9gzp5*0&|0-}gf!9YZ z-&J|ym*J zEjI%DJ!yVcA3iGD7Y0|eDshGuug3_gaTaq)1<__BfbN|I3p{B@+70@@0&Br+pt(p; zTRQd0CP}u0CIpdAJg#gCIR!II#j)oCG9@hsU`xAECRaKa#2?&F(i1K}ovbVs6t(SiRsU|px} zG0cNh@LGSiisgNgjO`BKO6ol4LvF3%eheC2N5^99-Fsg*(d9ncV)4ZxuDB?cV)}|T z9&6kUKA*zrsgf%{yNZncl}7(wo;)2l^g*hKW3S<4#Wc(YRn~Z{aX0*Z3in{cdZ-aP z$1NCgZM3YxHaY_v7MB$>iPjpAHSUJLPvNYy%ij$Kzs5s`*B1!iYbCw4)EWp#@GisF;%u1t9C5+FMuUB* z(d-d1#ALUurPdAG)YMw@**~Ubq|95md(%jbKC5sq7*O^%Vh^EgGXISdeDsIdu`V?R%b-3W z8&^(;*2%PowViHcx45qydC#@awGXp(m$Vgco$EQQCAu-GBkR)$YFjsF zQ4gF2lXDfyb%LlHSa(}{T-&UDc*=ZOvkd;UXA*R$ihP%4jUlKX!nSxkNS^CJp5n=8 zT~JYcj3HeCEa~;}w`?FQ<$*N3OTZZ`*#wuHO4;q|*?*rqv3-W#TLrgPF^hqgVhe!QpY=7UmQR9~Zd!%(6Yn-# zFM(SZxX*$(-w`;DdJz<1L=rXNO542VRYVPPaZs_OEA5tlu`t(wi*%xReeNL_?YHc! ztVNE$DJ}}tHZM;%HPE7+DO?xmkB&5Va~?%YyslsLxC`N8aUzun#o*FM@PeMjv@>2e0POD%`U^v4(pV;K5+^AbCDm1T^srkAi7HuUSn3 zSAgDM6E1*rKqrDj;B%&fKiO7NRiLUsRe`DkRRyXFR28TyP*uRI0{;PSFcPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91PM`w-1ONa40RR91P5=M^0Jud2M*si^|4BqaRCodHn`w*`MHI(bZUi-W z;DG`H5dlS`hRXvH@Ia$Tj0R&O2@xfJ5~GL^6JsFp#xEpb6i7g#Am|6c!~6Gf`GFA{!7m=Q&Zhjea!66PQT=z?t1m!tM~ppU0q$>+pJkCDFZ13DFZ13 zDFZ13DFY44Kuv>=o-=q|U0p|-cY5f<@qDj)7spNDJ)x$i<_}L_-3JJ33nqga)q@s<>pSyd$vP2zH^r(T@c60ojD(lqi<%Zd*B|1Z7HbJ;BFGv1N&)*gb=CsJK1~8VYQWTbBA` zsWisWQWI2`w_Fr*3xzBJ?E(t=fxZvHmtX_X{I?%S&H!hE%fLV|9P|c$qPcH0bLsnj z28~`1Y5l+vU=!`bEdYbU79tKOSj^m2r6jJ4C5>`yIBv9zYsYFElRZn{BBG z;|J(&2fet>KM(Xcm6YWE#dFUi$0xrn;5h>54}2R~5fDr-hE~GExi%XsaTuSCu}Jg# z1$|B5V3N2AECW#{W?MdG(UI?QupDTE^Ln6qY@#_+??q2K^ay zm8HMpRMhdA>H*_{KFu)Y5)=hDvjXB^S9hghrZ?@~Ucwwh6L0e9v{054mC!V&b9tGOcIR?UteB`Sb=9LpArFtJ?jRLlO76%5!sW-6ggowOH z0-YGyPg406V>A``$-8u1knd61E!6{5m!C{^st|8&jlbg;1^q$r5~yeb zmA_Yq>hTltP~$|Lj4;*)=G%VJJiUI_Z-73|fg6FL^7ZnzU6yoZMfHdOq7x^59QZ77 zc_E{Xzo$XpM!-!$3d+mNPk9y-)vLPWtzii;0&E4Y@*{??fO|o=f-1_O(74|CGdLoa_97;XW-f~{aT&xMgULCHz^YkT`5&<%74 zSAl`R_V|d}SG3poGMG+I*(U@)YiHsz0Z6tJ=Z}Mjz^NI1#G~FNYy;Zs`#T3JLTzm< zwgv5h{#ZI@Ai}zWHXx4ZRpl)30)*{x4HTNVOkfC9A$NfXz%Y>5B9vIA7H!1p)xbQk z6vFg}3MG+=%N+$0JJY@&i~)M*nn+yYBq^E_)`Nv$K4kqCCwSroLZbeC=o+AHXnlNh zB?x~@$0?>9!~YwgZLwPLIb`kUn201!oSBt(N%u$J3uyB0;X&u8fw=M)0d&Lp#e>c_ zgEdhuLHwMgPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91PM`w-1ONa40RR91P5=M^0Jud2M*si_-AP12RCodHn|X*;RUF5)G*dI% z#xS*}EX$0_R;4VZEV8iWkIG6bG77D1A(UJS1Vf_IsK_=-$|y6%i1uvNRBVyN40khe zDO=2K)amn`-jVx`=iKexnR##K{ou>F=XZYlynD}b?=)#rrg8$}RDhyg0R9Aq{^Fvi885ev3Q(Y}QFTaA(tXwIp0u<#1yHbw+1WT=PcPY?qjw1P30~&X=a@kXz zGr=}TmA1pHa`3mn>(;1?M*$84D;>oVYcLq*8CwGX;6_>YrYMZR;gOjR zzbMzCCiYrsNqVfOAPe9hXqpb^$Ok<#`-4wBHl8cl!h{7*vO_!xFNJ?dm~L&Ca*S8O``*EShJ(w=K|VHapg%0g%Uz#IyT5~fD>hzn@Jok9(vv`3(n7a|ogKX9 zz&9JaY>&5XWZmB{Yl9AZ%N#rxOTWND{8DzdlLN|e&QvO zbil_Rn^zZI0n!9Sa)$#wuxs(c5vFF89nR` zvTT~}J4U7?Te7&$WMZ}NWt9+iXIQpPH}!TdtJqT6A$s5XO>4T$-pXUE9nkG*lWyaV zse-RhC4zp>&Lr2rKI^!!dyU7}M_Kza_97RZMleZB5;_9!=g?UNPwTnct+8tQud}t< zX7Tg7=(U7#BXG^c%i$lFr_iKHUv&Cn_hXA+oLz!_3M8Qy<7R?U-+IvJ@0qx^lgQQ9 zCVzW^AoMFtvIv%}bQ&JOJr?h&p97VejP;m<)*#NQ?Me7lG8{7jrM!o&+Zy$SLPhkq@o|u%IvMXYysI! zLz-Z8LgQLYkbp9Q`Eh0sov6Te4|%0M|Zl@VU(}f;~3LzIU2;B{w3#o z$1pOscKUNZ&iSQ8#-RFyAKrfT0#_+lkndiVIK!=vDBJ0B#*E`UBrzv}~ z4dlZn#c~I@ALv)*iVb!i{YvlrRH2}#*>ZlKxqUmcU|j}k_Pn%u|G6C4v=zpQsRBu$ zBp*P&Y*I`$?`vs0fMH+}2qVqbLlU_EUlgS&Ay(%w*4s7;?^ch_y|!#^_3?kNCx*L% zK9SKQs6UwPkr!LP&TE5uq1OmMAT0;!ukbK%-g59i1UAirk@-T~mwj&jZHtiJ5x8Ez$w277kMWhjrn7wk*A|}uG|SqwF3cao72thaDc4^?n|B1~ zIvvq{-O6&ZoBn_p=UT4y*)GdgU36XF+f|1-Cbx}@_XpD)a+UA~1^Icm5LMOZQNMzA zK_RZ6#<0FR3MKS)JM^}MR@0vX_W35nlFO>w8bkWJ=_t$K`{WS0&?N^whQ0zlE&XNm zyI^CF#jkng))hsY^q(w8?j!7AAm{sL&9+$|{c9W{J6Qy$Tivw>?rs$9TlEAp5NPL6 z<@JGn*yZyK&IuE!r?JKOof+3R`TmIPT!;J_hG!Syn4U#bK_6mD^M`azbX!f_ zc~dM*J;-h9$NkrI(Kos`-nrK`M34QN1lf-1WJ^xqCm69FwrTvM@% zH#Aha#0QlhaNTjLN7u;o5E=!1G=qVTkw!{LK=}aW<)cxt(m`7rMpOA#aBjT113(w)U3KT8^)u^~>PoP-8_lsCaX6yKYN{_LB0~HZ&Qbq*K+g zK<83Xv=D(Ypj$F8btA2~a`7q7C{n)4+j)EzJ7NsztDhAhF8z$)lR)oVD`Pv#P*8qz z{wL5Xp18CE!O-I~g&F(a#hBilKLqXv_OTPJP|{xaTcB->7Nsk}3b2kvYUptfGF~Dk z#jnNnv7izh2lW44df6T8U;;Tq+7&zj#u3vt!}PVW3ug=vtd5)>1b2WohM%(4QPV1* zL&kptP!j6vt0!&wS_A#D)EcN@$AA`~5c&t@N#HRGwjr*e#Dz14DWDR$8r%#n0`|Ta zR?(97v7drh!E_3?cMlpj;?#u;I-rOh=-&he0DYU0iCyeuNqQtK1aE-XDAw9SjAx!8 zMLdjv^o7y|pcl{?R`Mwwr2?r6{qKNIbH4=NP^>>_Goj22XGfL0rO$zXBGALTa}K&b z7!*o>V?Yy*PDBJ<$0`002ovPDHLkV1lu+eAfT~ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_newfilter.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_newfilter.png deleted file mode 100644 index accde523bbe5ab2c0f185e2a9ae73e48208263c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^ejv=j1|<7dDaZmTmUKs7M+SzC{oH>NSs56Z>OEZ? zLn;{G&T{lSY#`t&eNBOp{e|TNu>zJCj60mx9bnXOZ>Wvj*jT)wU1=(B&Y}6M6ppWT zmp$$|=Ucx?)*PQV@7;YK^Dh=`X7OmijS|c`MHXg;hL*NuZ$IJvq;N%^!gKqDpBXEI zMUE=9rt#hpVUAfUp|aTS9pgKzRyp1~>}(dEh8}LUXBgj^w9aE*I=TGmtpI)1*^}AU zvCPd{(PH*u+RiD`=iKLV>4m=JjTdl{PkY&YrrVK8#Q_D`3JcitS-PH^ zxU)4wDEE=%Gg0ltos6HqcBJ3%W-IjoFJ)Swsy1P> z{PZjF#(y?UTY7M*R`|x4;;)aN^y{nD^A<}!o@f0;@{_1#qy6_b|28*<2WcMWX;HT8 z*K#!6*zWCn%lE+w@2#H4ciz>$P~#i1>f-0?`(*wU-YDY`n8SRy$fH0k%1`&8rGZX6 zOZvj6SA^h#xdJkA)w{ktUi8N_Lq<8({lWe_k3wwcSpJv4rfs%uN&L(BZP~Y3yN+tS zvGVyRb>!#m72Ce7%RS$ee=gucyL|em>k9(^?fz7-+kIi+RdF*()9sc!LJWQ6*3$p}cRt2>#y)aci{oD1d%{LY) z?*H>=liKVW(K+@PCfr_mFw?vA#GI(>egzXdIQt$bak|_)rVgRE`TNiLKk3bOUykpb zcQ(5p%deh(Ge+nD_lNncTMukJtEJ>Dq`-)dBp4dw9Z&V}SzNd<6__*`JYD@<);T3K F0Ra6EE64x< diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_newphone.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_newphone.png deleted file mode 100644 index 068c823c7032102cbdb64bfa0bf28eb53794a09f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723 zcmV;^0xbQBP)y0007-Nkl6y%6vtmFW+*m|h0+uRp}4x)FW?jlg1psFP$)W8NSvjUV3!Uq4h}9QHDaoRbt`ny zp-Vy?94ZY7L~9~Swe{zq+}tNrU*5a7_dLA+>A`)R{E~3az4x4d5O{fcc_kKel&RAr ziF(v2GiM)iiZx7VjVYU$C0dwLi;^wOY1)`nn`t|sRZOdDCxr&uB_y9HN}iBiEt2`P zqO5{9DWr;2ps8ZrF%Mc-!Nb(CLKW+|dC)=K%%_fZR>kU@2UR-dXw0xgjSqj#%6+an z2IXGN0*UlX9^43y#!nD3c)2fC!*IpijjVzZu_dgqqt@}w1{N!g$Y zKhT4E&@6*8%NBheGbSDM z4Rw>81yFLV&`sT=JJ5D2c+DB}p!bb66u)WDTjoK##z1>~SI@_iLHiur1kKD}pJU}8 zZL>J~#8=D7WT-stX_zmplqUn2g-F5QKIwAedJ7$k^a`uwEth974@QN-E#W%_R z^ZsaNh7Fk+-$Vyu=j4J8Gh%c*1|Mo@>&M`xjRh^oph3V4w|UA(v14!

    2X@#!i$O zgVw)anj1y|kJgj(gSvPLWT({FzD$+5E*`a8s{}oU&=*ewc zvknKp?89b!xm8QH;Xl%o#+iJr(kdQ^76`vegcPDCph=O0B!&P002ovPDHLk FV1lIdR=ofK diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_night.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_night.png deleted file mode 100644 index 6b73b75476d8ecab8d3676cc6a6b1803c543d797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1189 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 e9XfRQKluk#|BKozA;9AR0000NS%G|u)CkWs zUtb0-Ae)1Mu|1Q41;}CqVksbIU|?Fn1Q!Wez>HvnB&RHRUj;PsxTlL_NCo5DS-vYm zLq(47{Uz{urLdrufIF)eFN=C>$Kp9298C&0d>j>3Wi(#QmI&+e&|JD$K`LCqX^9Ox zm!FhJ#F9xCg$Z0rV&~VNx}I+vwd4M->iL`R@BDt}_q(0h2j|y*J04ZN_WtefkLQ#> zKT}xDHee%bW(`0_>b${tK@5i>RrqyWjXO`$a6O>D@x@wPCN-)<)|wI-GN@ zz96rWW^cGd(fnS(dgd!hUz~duN&cSx@880<&@h_@mS>{O>(*2+(RmkeF1%&s2HC8N zEU$!p3IBAg8tdFNi&rp-TDj_fRzH&;^dsiH^ZbQVc+EprOgVUGg~4Gld&{+&(tay0 ztY8T~_$Z#`t8;Al6`^FyT@CXV=FL7LwJt@E^cMbJu_|@G&ukg#I>DP?ER$O| z%y@sBbF1lz<;C1{UG8o;WuR&(G^78Wi%{hCX%z+se%<^m=Vj!s%o-y3ieuTQ#K-c= zv&Hv4xw>8ct;Y_{PW{FE&1FvSs5?08_KT_o_n*xAK4X7|w)9V(1CjGQBC8YF)4c1Y z0wzuJe;6)w(l+@|xyplO4S(xvg$sm7C!qr z_1c^7sVd@my`U8;z@%CY(~Qd851FvhM4T>Nf+wa2#Eu z9&powHMrUU$+CU9lHs{l=5^ zIPsg1mO=UADZKAa$0**K=9O)`^2mQRM`LcaeWmx(js?B`^HDZ1yV)z}=e+E<%D>xv zzZSkZ+AJ`8{+Gr5?}IA0^$IU|9nh)ye|de+n!UHCIV3S0zjED1dh_kSoi1KK52suS zU2&vZIp}H6yUQQt&j_!&;k}^lXw5fS(QI?&?CB-z=ZHN&Sk1q+HP9v8Ppj~lj_B?GHRIL$zso3w;D~~zx%E@PCnXaf$3>KBv+PnDB%jq4De?7ZoJT;06Z3-7L2^k!=o z9WxMR+P5?yvRIj6<@EgQ9=EL_;gZXm6x;+ub}pWDUo%qsk88&D?0YBNX;kl*yoG&Vo_*{`o1?^GMVt^Rbp{6|jy_t|eamK{=j z$M+>&<)7{`F8iJt@;8LF_V2N7{^utAqJin9oA(~k7XrV;YJ2S*xKAf-PBXagyw!j! qqT$W^c_p`^@s9l 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 N002ovPDHLkV1ierS(X3* diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_private.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_private.png deleted file mode 100644 index 3dc67187716bfa421bbad41aa9f5a1bc58075b3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2273 zcmV<72p;!|P)NklkLM>MgZU;}-BhSK!#?BhH!Gem| z&`^+2(4j39WDBe?7A7ofD8L3Af*O*|7D%vBj0p0z?E3q!bKlN8@7(!*^WNe+$)B0I zbI$*KyqURo?%ZX=hOvw*Fs{J30^U=BP3gA#Ge$KG{c zK$7Ty1<P?3j7Z8tqFcoAdkHicr3Qe8xnvo@y%|*AD@l zk3~oO6L8EmY@t!UlNi{za=wKy`dtu8R?+_8{PupUc3Tt!P%JTNw|GRM+cPHDIWaP$ zc*Oz~Q%u^qZSk&-z;LEhFy1b{II;ki+XeRkSaPr!gE&#R$9~T{#VA zr~1zJ2vS6Wtzniofzmz z#5utBSj1V!Q7_j7v3IrIF2}N_4WF*GCW;nv7FV4s?{*+cZR=fi5NYPt$}$a=-#xL_ zEf$j-oHzn@fvpL&uQr{F$?3J9rraKcdbd?hR;te=!!&2vI9@Cl+L|`D>Il3bAJcvq zgby@pM#-MeB|6fzBF@Sk2DXcqkmI?&Ac{0#sGdgyLo1c1h9L5KPZeUiNKDd^F7S$X zsVIllgHKaZR+M}B5d%gumWktg)@jjWZ1vXR$>E|LK@SpLot{)4=RxL8hRy_^g|`st zvzwLK!URSUA`M`z=(!cWJq<dA zNa?^51BldNSh-k(Pj4>v`TM989|U?+u=1c3iBX2^rX}Qfmr*NxC|if`W?=$H5k7qY zvf{o;#BLKUOR!RRxxuTJkmFlUThS)Z*7H%6PkLUCUM;%oGc5T#wt?fzPTQz8t<((2 z%h4U?#ICqEoB*ymZDpG7ILcaNQ&l|M->Q-&c3zHJ4AdvF!r7qoOV0OMmuv8Dt^MUF zdbB-T&qt3@&Vh2YSFNqZDn+btT56S+6_!-}nQo}C@AY^Gc@oEBh`LB@4mt{+4@b>! zN^-P?v$gPz)kS{%Drs2?=W@4L+3}1P_0<-5NAi^`oft7{ zu}@l-)8{kyu^Lq2M)D;;T?}%sRk+4))eszkolgIpW?!#StxhY2xWX3ywQf~g^=E;& z?v}ttY9iC-Lwt5dsQ6`P#~|00yKk?sBlhDm9E%2Bzd#nxi=+{Uy=kp>S#nxkZ=8oOyvSm zqf_T2QlDrTYs9Y2X2tN9^6-Rn$0EUW zJpIybkb761yRZ;lU1?cG(*(j9@G;QXscgrfM~GH3$@UX)2G~gnn!2J``mQ|Mwu8Yf zEL4?oP-rPDdU~eCZcj~Bod7SF{^fEE#F=p0=`fmCMKN`sdD;hqU&@*k@9b&_{r_AK zd2vb)Wl!`R@xIjt(?+)P0la6HVmcn2u;0$&X*tB%B#188=bUa)ulH0UuZ5roy_GNE z6;H7##&f`v!7SHLiZ_KvJ431o|2(Lr+H7}Qq2fntcsaEcZZCMw;w z-m@bFtR7A?BCUvg0k2mL@hH}IZ_ilf1acB&6;J0DLFEZTp;@8?-Ex{_{NBkec{ebQ03Q10b1yELWn`wZp^&1+%3ffm& z)-A|sR}_Pay}pE?JD^Gd-71u5l+R|ShK5;klF&@@9PnP(Xl_KrEg!m-pD!V)Eno)d z)8ivhSHvMMadxMT+NfIIgLR-WkgOi?`a1$m1ZbtZmOki#zZrzDYx>%xrL^iuZUL=p v(GrdS&wuquvSS%nU|fN51;!Ov2Nn1i_ZTPS-m3%b00000NkvXXu0mjfMYB;i diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_read.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_read.png deleted file mode 100644 index 5974ea810b3b3c81ee2e96d0a12fccd923f0734c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXoKNz{uh0;uunK>+Q|GT!#!KS|1u$ zxxUh>l6@DoeAQx;#d(hwC@6I(blrWH<8Ewla!vnm710AVO7IAC1};AjpwEu zJ3V>RKfPtg=hU6PS^PXlVp*@Wdg2Zt@c=o2DZ6E!E?TPL_u}S^$9c^WUL{~{Vlrm~>(VKo?uyFmXnXTbyd(n*8U{~S KKbLh*2~7a_E{5m; diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_recent.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_recent.png deleted file mode 100644 index c8abcc8e402df536e3ed8528b35f789e85c35dbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1623 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_secret_hw.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_secret_hw.png deleted file mode 100644 index 8572f1e03f21324f96dd4fce32a853478f3053d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2165 zcmV-*2#WWKP)(U<5!(1%JQ zzw{vb5@{l&DHVa=N(0kwSbma-kb=x!3PNFKVWOe=3SYP1nmc>$o;~|@_L+O`wPwR& z_Fn71{%g%TbIzH)XP+}PU)InJD|N{x1y*0**QK?R86w0I~$#oJ|2 z`U+!(Ay<@u;!Qg)w%%@_OfJ?meI9b3(^~+#(Hs{x3|AC`yi)A+3I2vF#UBLK9s(z zc?lu-+;l{@z|`quFQE=h?o*@3kr|3W)loZkiH-4aqVLGb-ctx&z}`#@Lx< zb{aZ3)Hj3sPBX++v7bj|QU{|=ROe&p-Nn}&)@c1@20?Z^DR%UWk&6_zIW`q2D!_#? z-MDZgHv;Qm(eyV!i+S`R5F<_MMV0f$PC z!=*fQR;LUrk9e77-O1}4gDJCCN2!&oGWCO|NiMah(Us%fClmSSki&?y{YY0RFc|&r zvYTZ}0o z$_2=8h^=iv8T=fqGoOr$pxH{7EhC5S!IUIgy2B;#Jp}pK66kky8<1njG~|B7-#Yxob3_4VQ)ou(6e z!5$+VH`T#Y3Q;E^T#sse+e(329YB;l{mKciZ`I$1hik8vVDv3pg-atjQ86Ye;2f&) zZcd_sV6sMXWfFSL3-U_peN-{hnbfymz+6t(-Z!=B42*JP3{dRu?Sh zg8bU$T$BC=7f(!b-N0P)si(OPP z7>8@GIwm|#3iC;k6l zqd+$zZz6|~cH3D9+)k3RbMzh0*&N084ATD8D?eMf$J?Gl~XV%rpeb@0T-v*J2gxDUuczuHtnq7z$etBWT# zo)wq!8D}L5DftXr$LG@#aPqCDt{B;ObuYHhLjKBL7mwmgJ$9^cl3-q-w%5n%;z=!< z_;vEF+D@K>&bKLC;!DyLt|?q%1rptwE3PSAVg(Z2nkz1`aQ%KC$4#%y4CLpJGP#%S z4BNR6(|>S)s=Y=GxuKqpj6r14U^g+&aqPF2Qn;g*Y-Cyb1o~TY@&4}=SfLR7YGfHF zc|a7g4S(5N@;vesGS=po$51Ajv3!xs9HrEbwsX?V)vlWQR4on-3CZ%%9;EKIdfC~! z1$iIYiR?wB$tIlZ5cy}BJCKwY8#ibB1IrX%yr^X@Crhk>0?JyNY+kjs!zjBE*#QY)x{XAA7!o3P<8n$d{1aNNf|V r_+*6|R43FV(^R0TKvRMLNCo}{7xJfoK;VIw00000NkvXXu0mjf3!fRT diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_secret_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_secret_ny.png deleted file mode 100644 index 8edf03256919b2ad7f4e679869b0e3def59c0b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmV;k0!;mhP)TbFs9s6>QGNLbOm28$W=JZ4SZg34)>^qzU*5

    ehCVl`5ZBqCN z1O@dFD=n-f;7dEH3PRJ2E1X090QEA$(3)i72&_)vs|&sI0NLE;YPgO zF#~rl2Aq`M_OZlW5YLBp#}a)~)TFSSn}KVI0dqb}o+A&+JoBFCBl5n8oUpabzP-c^-ww zvKhFd)}&!S;*aE0GL`A}q(Rq|9l z1XXq0nO_=PK^v|e^;@&$k&;I#ak!EQdeWRm>wFV8&cY=Nm+3v1=4o|xPpdc26|18 zt+nBF+vzy1wGLcY?R1Y?>!PEtlv?Y$)16Xit(#8wN_h3^PCQY@<&@`){IO(ZWo7kW Z=^dZHuc{E)Lizvz002ovPDHLkV1mz@L)!oV diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings.png deleted file mode 100644 index c90fad6ad486824b8394771986f651338d8b3425..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2378 zcmV-Q3AOf#P)4U2+E+ktr&oO9{m9X` zk0yItGdKlY*@fb%Bw5N1$lew4*7fK~5^o_kBsR>=mi9H!FUmU&v}Ref5-($%r9f9ARf1lJxZ>1`ra(cN{2QOO&5( zZ51aF`hr?aUr&w1wg;F4&Vh>P93x+ADNgZ(r*bG>xW z`2qi+_<{0pMfv7C2ScFskR>x8@VX=lkHltL$)TH-h`=(!S?7X(4C4LhYP;^S0;+*d zc>v|(it;X4tL* zuw-Ey!z2w@x_~nV+xjH_Np0XC3^szKx6)-N`$A`F_|^kglz*3`xs>d180E6i)>^E8 zDk6_DJYB((GAEnVqFChL)iXpYH9Y-+I9(Z)mT0!iK>LSOBpzdUdV`-0{wyl-xVO?h zBZt-SY&8Oy?ep?YyWI?jlZGyps+{CroW`bd^c#z3Z$ZU7VGLu{p=9PO+@q2}PAk#U? z5?w>i2P%|T)L*vqT@x?yI>&UtI|W!WJjS)U88C4?*5b5a$pLMlIC?Rgt3 zHgQ}0CxauvCvU}Zc>7_rW}4_gJ7@$S%h9jJt@Vx0_YRz(15O>@u4tUtMKU&XTt}z9 zH9-h|6Ue%Q-43bS{KL;sy4|D|zbm?}9XzLnIMpYAARbp{B=G&*b&9l=Z}&J3->h2l z;~C}^K8y#8!L5?A`cK?9Y`sym4({vKRLM1E|8<6kHJ)o`-D*;P%5!`x{T6WoU+$eZRxEGdekKmZ>pofjTiqttyFFPPIK*oZCvNIac^y`2s$O` zghmf)jvCx~RN~A1zy^*LMiB4$((%Fts>gMI{q&_ir;u&4$jWLbw zw(`3c>lHPi@{Q-Jt-D|9=c@I3l0Ss_+Ru}G?R_M)u(jw_e;ehLZ zX`ABBs@mUL6^-}fLPexToj|5HGVyyl#C^Z}h_7~UWGXoZ7zZp_Y9)_h@OU5M~C)N)34b}+g7K758i){4`>Urfk;L2tcLt_WZ zX}}m-4ZIJ|gNi5~#nnUfY<2Ed+?H&}8A4lkMi>b6I{-_P{LVps+5@!*loDt=LjD%K zuYn`LCwlUK9E5)7Fd%;<4g&+u1x3h7NM3j7GdJOS4t!rgU~@AE5$8y7s|pCPLZN4y zsqXVfU?dm;6pt0B;%`a%WfgA6 z;C;YQ(9cIs-vF=!xKecCbkFV$D-QJifa1J=zmT>9i_;PCo4}PK3%3UH$K&ECs^51% zt|c9)??!HL0xOzT9QY_@UOZH|T`!iq=%#L)=PO_P|<;1z&KqxE=}} z$!bPE1zgc(ne`4xRbH|KvUf$i^_dyVQFX40u0{$DBPF{QdiNF97t#Gr-!`_#0>clY z?^R$uUsx;tfN$Ylb^Vqoj{bqvVPO4Zs;tRfz_ITC&8wc1Llb+2lAH=|XRVUsC!VQg zUZ<-aHrewgfr}uI$lrQfsU21wlbU9NAyQcbW)@glnU4nXLpUNO zHGPQCL@^&kLRn#?D5RB{BKa0GO`!)wl%SOr>ubj=zax8GdDk?;|8MwQ!Vkt$iUNnIg;the2GKkW{1uP#iZ1{Qd%OgZ4?qqw>(eaG*V} zP9>bgeJVABQ2B0MZp zqWoOzA(cN+SoTnm5k8|}BU71$z?NTWMgm(Ugfe;_0h+vI^V9SYv;gu~7TFFW6VrG! z9bCaEFB<@BK^x7^ro(MO)`^FdkwuP`(I?oJks(A-S~yCxI!Gv{agD zN_5(&C(DzcE%pswO>U=2Vv&-_{faKnwpP7QF@f1mi45pDrB?{zaBh7`CF1Z z!?iYL4dmuCTl zS>pAl=}B33J`xo;`vRG%`^tAX6ek)?iVWUAlwjNj2pnZJF-5j!5);Uu24~GiJjyay zy_{G;DIz$vU7uT=+Oaq%_Em*{3P?(pI3?v^L_ji8mrd5N$jYLX>24bwe!{S`VJsVi z`wg9UksxGuc5Vj86V&Yhzk!QD;&>o+Z(M;rzH=1La&$KZHcnR@W+_CXdfth^Fv2g`9SPIQdf07_6yn22K6zgN zQ?`f9oNpnKQwHXsAlxgQNdiNht_RvjSDq(cork?7dJLFS613-gg=m0DMp=@-(T59r zd9G^DUD5e(D@o%xjs`Z7=hba4L1NcOA^8`b_opq~9{&3jUOCknDfo2*+P5H}oEk}z z$p98@yCopMz>Rd^QxP0P1BcLcYbGC;I=J2q@ddZfW%9+SC)f;R0&NpH1Y}N2(r8^q zp%?I2p5|3ukg3CP5H<41g58wErXogJJxc$@6vIyeOzKmTxRxi68t?&eV{%X+=Q-K%?VRH8i&?asM$O@da)T?3M)hR zgScNA^;Heo*Sy6!sllPQ@-S(fg9C}?rX!V=-D`fFA~bYdZUXE(0jAS(ORg)=7QZDI zKDD*Tm$(0#G@3Ezlm$1QCYtC%JXLIHEb{YT{}E%v}<7>s%$pxh`JT zl+ccBj>eUG`LZVWdNBRZ>HK;y_d+_o<7#Yw*|tt(J!h^1<>>o<^}C&=lAVZcP;4XC zt9=CGZsI5~(vi1Z=M0@*B!QXf9e%m=sczkPv}F0ZlJ`f>8R9%dA&`f0kuymHGbA^! zV_s@{kjRqj05D|}ids4Fq6SijO7hZnx@C6ZHZTOS;xHL#VjhDETpH|^B;|#TCVod* zr3YYX4YYTw(tuazVK1NHx!_}99<9i_!&CgFT;BmTM!-xBU@ynUDu5~R4o{~#Z!m1~ zY|}&*>|HYjmEw@&`ddQ;^6?)W<>y)tS7-2ji2n!f<-I~i!KNKp2xMiTNohucs7e@X z;|C&-Mz!l&Pkgs4SxaX`{XpcD;uom0`+Sh-m(Rc z?0=FJ1P+<(R3s(lMf zAC`@*{}LG>h~rI&%fjT`?*v}~Szq@9=1kmwk&B9(@M2ayS zGNm|Sl2exBvJGEI9EiS7S6M0;=>(OEq$GOR27HI^= z@-~-o>1P9DH3Bd45jQwWgF>;6VL!5t@fyNP`tkKAD>Q@&tmh|&tx*`B;X2jsaFB&G z^A(}KWD1Ko%w4KoVS+-i3zIUnC}UEPKj!d&$L&96$rmSx;WPQ+RbqKrZe+MXEPafY z3!8}P9oaFN+r;!2lVrmoLRILYlRSAk>7_!beM-l3B!no^&J0x{M}ZO{9@3;VOreaw zlT4QZIZorR#6+cIDTDYqN=7Nj(v6=17R!#QoWkuS8Cj6!3~pc3BsVhb!mh}4Igq1- zT?eD(i#I5eu3aAJAl)5aR~Y7T5wi+2Q2X>OKNUMC2WiNIma&n-BGIqPk$c<@ygWGAcvS18naXZCS*|ChP z_~|CA6pZ0h{0y>G>1g5}{?3q-0WF-x-@i;!8m5sDqC^KXRfQIIQYOR$CMz8u5~{*E zx+qYfi#{rZ+9MmDCG8?O+{a{1wNVmK~e%;r9i+dZC_ zKR&>uL@kP#v?~NpbB$`Z*~@&I_<~T!Xk-EV`G;zQj8_=eGVEK{Fit~g<#&Aj!fP7B zQ?&6N!&WO44IE*B{VdQ3WO<8zT>hYqj7DG~2e`t=H0aSHkIQz&L>n$|DkfgSWwBzS z8J9-I#a(P}DK>hr`ChTnjm;;DjUCv$r`VXwZzLonBqSsxBqSsxB>c*3)z#HKq5cPO WBr$N>oOr?j0000Qmm5TaNO=@BZrVSxrCDByd#!~xnEu|!Yg&0dhETAA1HI?!ZN}*iG*k_H! z+;gwJ&p!82F6o`gJo7!*Tx-A9T6>?4j-EnyclQKfcV)aBNC8`b7Zfmr3>1@SxdT8N zjGu!z+Q^E@0;pfi9}71<0vC*bC8Y}FY4JH{DMzs6GOUZ12uF@bF*8^_=8*~DVor^(Ig3bbdY~=rn&zva$#xzNdjA}9j{4X{s zCKyQm3~ZQy8IT{AUsgC2YmLKf!>2pNjKKGS(_^L-1BYcPeQg~QY_IKH=7=O$fCQEu zq0B$0hj(X;0Ar2PJKcHdK{v>jU8@vuCSME6Uy{l>=;j1!^`oJ?5%hnPJx7^D3h_#8 z=v44LYR}P^dc_o|HIg@=G29z;JeN<^N*Ds>%Q?u)0?mjjF}gF-C8=?o8xm&~%Gub* zOIMpB_?SshK3=sm4tPg)w@#7O_hV$RiCW#iTq8&5CI|gKqZ?~{izl!#t}sDH-DHhzn2gdz8Vp~QL!bxgKt9j~ z&YsO0ViGZMItttwf?|y1Ku^hF;^JvDOiIwVf$^Tk(*S`lF_=E0K_3&)Ca|XlXFl1{ zlM#X65+CS1C#OZUd;s_gt*pYpL*%_)S!9!((GbiT)tiBjU9kbONhg|0mif{EW@aYb z{5cfZ*Mj|sOu0nCC|j&3=ugUEgP@B~FRRb-a9ZbsDa#4$@nAnMT}z69{UK;BDFcEW z6Sqv_9h4x@2fV#)nTgsC8Vsm20vOrr;W&}3tP|6(J}6?jDJaEWg0kgvu+NG_V;fx+ z+n5}>hV(%mFFDYwpcDJD5I&7|xkf0i@{K^3E6&|FMz9{uE3cIq)2D9!3j?Axr_jY?a_S zf`r|LLQ)Dive$%lvV;F1)7<=dQ8rSjV{uM@@6C|NEs{^vba#)Cu970)jS#fQI+{dF z3{RGw`L@wLZ+Nm?0qI%udMc;YRq{x*mKgz>oo4<`RrcGd1duqB%~t-#PWFfLAvLzA zq=zos+o4T5OYI!V>Zb?cU8@w2xzjb|%Wf&qu>+j_UY0#jT_`;FMnQKp=#`rb+GJ5K zPhLc_vp~WxWC1@X)8v2bOuKN-!F2@iay}$KO0ub)mQ(?tPZ*x;Cr+lgmkB|0#X)|6 zMh8Bgvn?J4!sa@K?P&VO-_q?7c+87lY34*(gK+20WUkmU-+~^2Gl2gBdRSd>h5}Bn z8^__^2R81E`KJU!p7Fjtl96Zwvl+V3 zTQ+yEY^RMr@kJ$DZ8d?9_rgADq_;^>)U@8_7>plKBY;D?o#)zsDvHIRrj;x#KyI>d zON&K8U8>5_{=c7<^&Eu^0djR!1k1iDdq`jjF$*Ps_%V_R$^#@3J?I*?UEijhmoa9Vt0y z79)LP89^Hf+bUxhy9N5cc8b%DIBwXW(XS$1>SoK0 zox^GhMV3uK^=VN&4;4e&PI03LH|my@ggfgJ0o{@h~^<9Tmg>6A^S=unIGs50(m~J zHR_B-F>{PgBd2rEm=Y|49}d0Au2%5e&`H5#HrzNgocD{Blv+g;#}GT*3o0TQ`AstY0dl7T)uL~;!D zWX{P5u&;Bz5;qyQY8DaCD9TW-9||{2=!P2~J%e)%z`ok}h~>`dgE_}`1O#*C#gVgc z+~+XHhP6STy?{4%vV~iWjcJ=lLT)f~+tk9>mB=U?MyDIM%o}9u7m8M^fDLb>uiif?{z}a}_1TuFOur}6s zYX%Yx&j9`mnEEgb>KyRx=W1YKTg7%hE=jPczfUST&v&-_N^za`CWKFECF4W(IOEpRz zTG~<3+9$AW2bOMmR^*+BxD&vh!U+VHZkJZH%lj{DX6Jewbg;sHnvwhTHEYeyaxG6VAbi* zBU*J-m6ES0;$#+l<->u#K*qF!R_(KP_JMt|u({4)4XNV z*9Jrs{1(CXx z3JnB>FQDqx=vywye|UL7$8Q#%27c`9k3h~24Ct%QMltIkDBrHr*8+1f=jhPJzpW9x zuf>{uAABFJZ;o$g;7;ZuJ36YqU+@KF1)^gYflmU5hfZ=j;s4b$!nH%u>libSIRMPX zoEJk}JA=`VZ%E%H?F`(7Tx3VbC?{Ld``(F5!rz4X3C|k{`Vx?z@SL*=N_hIv_sbzR z=N8)VgM2>cloxy-eBF6(BegSd{^^FolDePQi*98vf z;us7Da_Li5evAP!wl0iOtfdIv=@KMA#I!NuYh9{HJ`w@b6cp$&C$rO!Ls$5I!}&Hl zcz($I4POFuEzdZ{Fcw(#F*M9cV6Ci~wX+W%c)9ltAoFgQ{UaxP@ntA@^ris$>G@$` z6HfUMQFm-6pQDcjQFFmwX> z(u050IRmT%AHs=?_~f64QU$+J?UNz%fV2#hhipT3FNgTtfp{K(YMW=0;%ElW-gCak&M)a^PU+ z!C_1pur0PZaUhRP?b^_hp};4ASAZ$F1||Qbn;f`cqfZK$levf1F6ef2L?tsIIgn51&mN%Td|lTCtPAv=@Yx%wiXLM?Rs#9Q9uL&5tOy-6aRe|(+s(*r9~_mz d5f~hS{{zA5jrW3QAQAuo002ovPDHLkV1l(~-4p-- diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings_ny.png deleted file mode 100644 index dca31bac80c199d7d625da41897c8b874a4ec54d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1222 zcmV;%1UdVOP)KVo40!`jAAM@DyL%h;(nLG?*v=qY8!kBG5Q)#%n*zE~BZC5*aQZV{srQz1`J;Ce;)|C_F zL#{E!>B5Okl)cOr0h?tnQO80$%@o(zt_N)mPpwBCaE-Nd-3RSD9j-eLSYuCFqXTZE zc-XLHG|C=kBw#b_DST&^|2g5YQ3u@1Lhh2M$G8J+ob?{QmxPawnaC<3m+!M+qo6R-`?CD@M0NSYh{a2zue4mFtU=Mk3aeF39 z84zs;yZyxgOBcJLQ@wDD@^7WC_^;NtAb6pKmC7zMn4HM>-paR?(8LL5$gnGDoob3W zc#`JwZNfBjQp8@97lXj{I|6l_7X9Ii7UGVipg#y)mn&n)Fvv^#0za(`y0VolUBUjb zFUTHa?<>hn{SG6 z)1qUX4%^6aw!rfJ^eIKSseCUzYzxfUJZumWw-n)S38#jT%|pXr3qLU-+ODla@`@td z72(t>+O88M*%Cgxdqqfos|YtDoL<$HdcG+nzfy$zQaHV(3oa%kkE)$Ra8&rjbir*C zlAoxZ;P9#N*rp4v(TWykuB8+9?2Aq-%TAWm11^HsKrel))o^OKmOgrED0f*H>b$iw z6>GJeR7>GXIpe=uX}GHXI^v6J{;s5+F-%5^e33JP$#-R6n*ngE`a`Q+i(>;M1&07*qoM6N<$g4BFga{vGU diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_support.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_support.png deleted file mode 100644 index a7be48fadbd707633f15d8de1bf97b47ed87f74c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 zcmV-61y000F2Nkl_G0~M#Qp9%n|{Qy1}k2U>@g*vD8OO zoTnpJw}bPP_-N=q<%DmT*NsJ95YXvlql17|!_IYoAiItG{fr`wiEK4e-{C^WkuW7qsgw&vSMU`woKmUHWrjsmJ?hn%8G$svh&b1^Ru#2 z*;Rc~QT~-ZnY!gY+OAHzc_H;-?+_Ua9lTIhJZ`Jjpg7C7{;yEPwR$Vpd_serl1e>_ zqE5m&m9E$kIpujz!1?<(|D1L2Dl5m6KyE9}GUu>NKT`&wD-+OSZ6T*P*4y#yJ(RB< z_OTR6kzWy5+Zk2#YDWP~%ZZD&)Pp`=#qjwlYr3)+1}wEEwzyv-^06=h+g+uo=tLhH zuE|NOwtTb7M=w*V0^TZErct5R*P^F|9%9V;v+L(^WOE8&Tp#3o% zY{b&$u+*5XJ|WB@?Y9Qn7kZ*FbrG|c!8-?6{nz$HmUcgIrx_x{K5mw7VR1tJ}XB1^N!K4_)Y$6z3DGn8%)uk7q(k=ueTCvnC}TXr30Bl)P}RuG+-8Gx3fF z@^2(D%+8v`Iaw%@NxCdH6uBrT+}l#1_au&s-ooV!V8(~bLhvyC6O|fhn1FcbHKpVC z*4w6ZTGQp4Jpe6QI*cS~M}I)A(~cF1+|jxNy=1jrs0+-3QV@G;SrDrzG5*fp%wg`;x-488Vzi>|eC9>l`GiGVBL#b( z*34kGrYeIAL66q@^EfF-jpd$?wJwXEBt}kZy);?0Y814yxz5R?h6Z@A7<$iFUSXb7 zZhD&L7a@e;6fY~^*<|^8WUUDj}$s(rLH!2zNhU2ihRAO+fK5`xcY zAy0up#<*Fd(X~NjCA2GiHI00qVe7CG1x#=IW^4)eQ)qA3QWh>h7}y5CaOh%)3Fdgj sAFKoa@|tBHF~`KV_zA|2>_{EtKXi5lUg!D@hyVZp07*qoM6N<$f)c8ZiU0rr diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_support2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_support2.png deleted file mode 100644 index c403167f4fb200784a2d927da7b315a92c77a40a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2097 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 bzbo)B%ehXekKPBP00000NkvXXu0mjf*t`G( diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_switch.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_switch.png deleted file mode 100644 index 0e0afc601d782f3c0db6f95a21f32e56c125817e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 783 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvNA9*9rJW? z45?szJImiY)KQ{+?^XdNCE=AEjvk#Xw|A`C5UU&Yo0BCx?-#?nUp%_EST1VC>=26G z!NJU}6V)XkvDHviB;<DpU?eX``ohlc})NE)!x1= zE)E!I!84XwXP+P`O?z!WuJ|bEl2gF5Vyjg0PxG%L7Hk1~ z!vmx(R)6_^wT!j$z)n?*fK4Wwi&%~`9hjq-$V zTin|4rFF(Ei~m_BQpXjW7yV{B{>Q0o?VM{|r(S>Va0tGr?#p;jyQ69P$NGq*i}fc= zk9bAt8$RC|GW}fSoi_G&>zu0egumt~PGoLsV~FDHnBD%`%yHinK@IPo3F~hNblNSN z-PaO*qg=LDF>SMFz5C^wz57~udfuJ3E0NDti2mJJs8BU=BR4~n!q(j!O;`E^{x+2~ zDim(~HQ_t&@#L(ZJ1f>KvHqEAE!%nLa0c(pZGCcczpXeS*}63M&iihy$$PvtZho_@ z3<}xjQ>b}{b>)WiOHb~2UHVyH^H5>$ITyQB1BZK&43fc16?uam$o%TOw;)@y_{b`&H%$WabTKT*& zKY7@Hj>xy={!dRDRURyiRXtcZ@t~eX(_|-wrQK6MOJq8i88V&Y+O)Om{@SPm3ZHK~ zxfcjE#LZzopr0LF$`Z~y=R diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_unread.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_unread.png deleted file mode 100644 index 34c8294599f6155907c7ca2b78663d1a7e256b75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1919 zcmV-_2Y~pAP)T(BDK2cfbT!JIJ)%RnuK!aP=Pi%WtY z1Hc!tJ>w6k&wx0;x#=O%155>5LE5swN`xRP+NM?nQ{T2J9)VS`N5M9bl|14XjzGFR z>p9bWj`C6UvhC;-Xw5zW$I*Wl&`mi+^bq(FtOXmv4zLU8q1D}CAnj0~GeP#Rg4w{A zNhmJxmF%m}TrdxO2P9{MyTLuce?ZEId_4uS6$;iB%mX3v3q}jTSa5tOGi;9rJuG|l zy@2%~*o=OJ)kiuV1G4c&zC!=`aqg4#1Q-gw@gsZtf3g1@I1l*$;p6}TNAWox_;LV6 zY|$!iWdmgE%lL{->MfCO20Q(Tk^Mbv&jy*^aPhw+60@>7Cp2L?%&ByWv`a$!*JMY4 z>wv~qaWbC+{c3Vrr!jHX7$k;;x})zfqyL)F{=s%G(4R&ysdNV39_%ayLl;xAqoTKv zAfZ#YXh*lLH<$DTr@E(YF#<`Yd!3$uxe76@+eL8-2f@Bz1F+;RlwEVJm89t9Sf{isGremWZ$L&hhh$ZA@(G&WNe#OED{`Yni{f1gIkT$H003JQ_!|_*1#8a z%jAgb`ZjUW8|;!dPd=>AV>Z3umg`G?)hr)cy&-9Y|r1NTsql{MvTv90HH|Rb&6%!c{7U5M1@N)lfx~0J?JY zh9PKMIvq=Y`Ut0=0beG@@GRA;0M+UMG>_)XDP@HcDnPYP_bbN!uL)iLSBH|`RnIgk zka{+gWk8G2I{TR3OE)aZ326mGPU*E@!; zJ{70#rT+Qs_S^geO???1oV?Iwy3fe#l6rj})(_`RV4V@?&n=Cg3^X51)zKFU0*0E*j*18pBcd zwR4TsvR4s!tU*e}%;(fkND&U#gSekT=|z5ILicPB5&RC|%Lmy;P4*6%o?s@3en*IM zl>XLaFBu<&z``gaw>>@Mu%>%rYnj6nV7udCHF{gP%XE;J5(1rp?i0RTnHLAeA^0FL z4aD7VEBu<-I6qHrW-LhDSYZ@twahhf5|HB>M86D{f+;{h1qvSjVXGBLqk!IGR)G*% zjFI(i!OX1|Wn!{1j;s~hZ^TUkLR>?X`@l3%NuqLt-p_HZ4rm7395nC0AE>C^fmXQ> z0cU`!KZnFdqAzq);8cuR9Fo+EM{6$Ys)KaBKiFOkz65!RCL{EK=<88w+g%9hChW_4 z6o-Z(Y-`{-1}p=4iGCh61N6zOLcy0Rr1Yy9Yi-<%=!bIrLfUJ=C~zFeL%t=*BJcv2 zrS&;8GY*H&lxh(u%)Qt=Z`kR6)WOhOsuq+lfdk-Ta2g2afUS!2iNo6zYZcpVBEe@I z?BZ7QgcfZ%J{}_3&nubo&(N8v@0*(1(YBza3G%ti;Wyf~Lf&T;FKv{vZ0%Zlt3X~NnE0A9W{sr%dMZ9s*ryl?S002ovPDHLk FV1gGhmMH)L diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_wallet.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_wallet.png deleted file mode 100644 index fb83fb07957f92d7a7df4576d9dc7a206d1cbf6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1089 zcmV-H1it%;P)eE`IO#88PMb!B4V0ZMrRBt#{c z5KqvKz{ZN0nUFeEVq&;VOl1KiF5jU}l{&|XPwX4w^s{u7*zx)Ii{m(LZe}wU5+DH* zAOR8}0TLhq5+DH*AOR8}0TQ^x1m-EZFPF=8=-+d)h3y998lQ=_QlBRQ^F!CtW{p#L+-UJt#}RH_^wTLL%Dp*Ul5 zDZH^bm_XnAm{Z?o&jT>mA)z_*BaUrDu4i|=VuKR1i(PWiisURe-@FAzcQtQldkQhn zHF={;wy@!Xe0Ho>XU5?M<)=!Y-e*Y5<^H( zrY^snWDgG>PJJ(^7dK~ifsve)JWspys^igjd2v!HRa@NsqV+4C61FM1PGSERT<5h zHByn0IXakV(7_P9L>x4zR#Nc?~RO~k%Y8179O(kCP@)+nZjbvng3ngi77ofh5jC#LK zt4DPb#S|x+6scl}UKB`%xf)f@gBIdn#??N|>UL+7avojZguDOH$rz8uV41NiXb?oV?g@7xD`72Qr#cgPJDI)P?B9TuRYe&ox=1y{TFaL~v-4A2GEeIraX`kZBI} zPZb>VLs&i()=7W_NPq-LfCNZ@1W14cNPq-LfCNb3G86aeE`IO#88PMb!B4V0ZMrRBt#{c z5KqvKz{ZN0nUFeEVq&;VOl1KiF5jU}l{&|XPwX4w^s{u7*zx)Ii{m(LZe}wU5+DH* zAOR8}0TLhq5+DH*AOR8}0TQ^x1m-EZFPF=8=-+d)h3y998lQ=_QlBRQ^F!CtW{p#L+-UJt#}RH_^wTLL%Dp*Ul5 zDZH^bm_XnAm{Z?o&jT>mA)z_*BaUrDu4i|=VuKR1i(PWiisURe-@FAzcQtQldkQhn zHF={;wy@!Xe0Ho>XU5?M<)=!Y-e*Y5<^H( zrY^snWDgG>PJJ(^7dK~ifsve)JWspys^igjd2v!HRa@NsqV+4C61FM1PGSERT<5h zHByn0IXakV(7_P9L>x4zR#Nc?~RO~k%Y8179O(kCP@)+nZjbvng3ngi77ofh5jC#LK zt4DPb#S|x+6scl}UKB`%xf)f@gBIdn#??N|>UL+7avojZguDOH$rz8uV41NiXb?oV?g@7xD`72Qr#cgPJDI)P?B9TuRYe&ox=1y{TFaL~v-4A2GEeIraX`kZBI} zPZb>VLs&i()=7W_NPq-LfCNZ@1W14cNPq-LfCNb3G86aEd)~eA-K;dSJ-ajW?eFYe$I8ZrHz(i(oPZN> z0#3jQH~}Z%1e}0L0<+nyfxUnoz)oSyZlr;9{0y6!JeuUhB|k>ZFmhimf)dXQC2&9d@+hQROy*N6TggU5{aL zJJod6UgPH046GwnHApasTHL2;tNp0P+9rGL;4*(Y2j}2231o(uz2mS}@4}90(T*DV zcBT1JA8c@(l+T1e0&spQ2@@tCQXChE3%T2)RD=9gUj;}}EJoV$xv|~Y8gWt$(qZ;d z?LxA6?%*)g zy{iJ+EhPEk&?Je!;l*2hOLk%S>qNLO=JFRooofz)C0F#1<-zgxj#+Tw?eL z=Ka0}xEy_BOOG2>8qsU)K8&{LxbY+VdE;DkEk&Zs^w$xy?{OMbf-SvcjTtA^p!#MXRT5{pIk?PU$HA>2 zIPMSpFwGKuA$PB%n~6e4=#T%^;U5Ym!UlDZoo`TaW$+KBFZs9XS1owO`@U)O zQy)9rS$7b8088DOT8%08ok8>t-s27>@#^Mq5x9q7O0+JG=DMdrBM|Bx7f4;)d9QK3 z4U5;jFl_2aTF+@|dXs`S^@+NEC*TB}fD>>6PQVE`0Vm)DY7zJk;^B<8`xn1{00000 LNkvXXu0mjftUA`n diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_actions.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_actions.png index b50b233b22b4524a8d0ea07915ebdf963941d7c1..164825b4fa4f2f1b52a5f8cbbf9c655e77591eff 100755 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{tijX8F{Fa= z?d`z6Lka@N3U5BY%Ut2m|1_}XJ5#k#?fbgP0gs!l4LA#%{>&DbZKV3Cd0WY%c4lcN z4uu8=IB}qe>Gn3!sgqBIJ`L-Bdwb(1nG?nBtOX%ESNz!?dH3VbIjP^S7S6VmJJ*+H z`1-6$=`Fp5_ug(fbLOVCmgMg9U-GX1-BVt_%s2MrohvurpX0mlt!Y1Zqx0c?ZQH&z z_NFrZWwTM<*qC;E;Y^3;->z4?xFpG|`|e#_Eztk-8V6TrYZANAdMRC%SAq@`S zow8h0u1WO&@-PZroi}ECL`Sp9w!OeBUFuOQTofoyJYD@<);T3K0RU=yx&HtF literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~eSlAh>wn6C>Fj0EK%+!Ug8YIR zI7`m`I9tRaf9?MjS@yy+-%jUWl8L$cR~e`v)6>NuUe{OfKFz-uaPU%m zbII>eDXV&KYxj>X+jyC-3$8uk6y?F4shFy$yQFo?gh_Ur#O0c_C#%H+EoJa@^>bP0 Hl+XkKky(t; diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_add.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_add.png new file mode 100644 index 0000000000000000000000000000000000000000..ee38a0ff90cdce50beed2d2eb3d8c2695554d50a GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{EX~u!F{Fa= z?ahO{hYWZe0v{aUGcYVRkm(7OS;@YlXP?x?QyTk&SZ^%#l~ZGXUhpBnfss`NK}ZB8 z%vx4FXS;>`=bQKDw;ws7X8ZWa>Enf`*U1`*>8vf9c6>3@v5kimX8D-)CCfzCoWGHI zzWwjx%`8pvz6y;F441+tI4Ce=YI`UMG;9%75#VsR#U;eSqL9nV$-*>YTN4Wtqeryk zezvY>_p6(0Z>qih^(VI{*8KGTD^a_C=dhgNKh+*+zpF|)q4c~tPn7ZBPjAEZv(9nBRpyfR>M*~2`)@zG|JF>rm-zBk+>-G1j?q)xnNPiYy)R-}kj}NuY@)Ld zZ96Q;QNxO9HB%$QlC|hAEt$$yrS|wt(#h1@ZL1jWPR>l*_+%5KQ+IE}JGS2pA%20V cVdV6H)wj9h#iZs3&p{#Y>FVdQ&MBb@08relumAu6 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_all.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_all.png new file mode 100644 index 0000000000000000000000000000000000000000..d646fb9c4b357b22cba87af78fe4ab2ea0d08e5d GIT binary patch literal 1160 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{{FA4PV@L(# z+u7C`B90Qri!W+qG->?M<5?nfc?F}j>k*@b8WW);MWv>>Zb7#-IK^&tOf_q2{jp-p z=c{ZkflP}OxRf3-Cxy6t`SbVW-A&dr_uk$;_w3u$=gs!kpWnWD^ZoCQxpU{R-YZG7h3{9INNvtn+_ie=Jj2PejoBQ7rr*)soap%K zx8&r!_TpX!rarbOnped0LKb|IF1jltx8v+@KmXN>4qYr=aObFkf%JlebVqJe#>{!a zCEW%F^OI(=JiBWr{2=s;NUc*>rGTuHp3c0+)Vc}g*F~A45*Ii8-?BR4@ZZ_~8;dH^ z`%YEaTAaH4v@XWyz{QGRe7QZ@ldqhwWYT-4Fn3G;&z$nPlfPbXTAXm>fB)Iysj;&x z*>=9!ee1eESC!=znQZH*rb##SrFtj)IIGgDox4mrWA=*7YYq2=j^<6evaR`c0{86W z8B<@C=FE5;Ww-eJFEQ)zR%MAP@tbyru=kW@M?PA2)9*2lRobu3YtngNw5nFjKA*Eq zq+LWJp=za#L)FB2=BK4Dc)@l4m)3gDeM{BXOGf&Y?b^{)H=#T1(YuBDZgKZ}cdeSmyWZqa_6m82 z^oiXwdfv%~O7hI!7~JQ#zVcEl3u8^EwfymW9tAab)gJzfy_3X$SazAt?l;=08k^g9 zGiP=4{IwouKHZ`oTPpDLSk zz59Ej{M%nEvmc3X+Zyt1fy(=ghmVc)cQY(e*veLXL+Gt(jiAGo>WiLN#GXA8%kFlW z&3lP?mGe5$hNh=ytTsMPD!7czOB8qUe@JOOMx?2CcuiyjFfwui)|fwW4avf`TdEGFlxQ z4(vJl<@1JppXP8xi7Yn=JZU@Wqm0AUy~#P^aseD!(c`s?l==XLKp|F}Y^R_1T~Yg4-)-d~)*)RtW~ z$uIm<$$C!dmuA&`?d#iTT)w%h`B78zjt6SLvfdrC{qtMv+LoTXU+iLUKQ!@)yWTe0 zTi)#O*CPva-Ylrweb?`P$j#TMZ@88po@LL->UVE~{9^xh^N@;~KGXTU=I{1g_tDu_gDwDdcLS_K6G z2MN|i9Ge^%5=AnHy zzP^^fzK`+B{K#V)&6bo+sG0KfT=$%reczUI?B4L}=F2(1&YXMbR)1y__nBfYjRg%% dNW`CQ2iT7~3l&}Y?Rg3m=bo;9F6*2UngCfa^2PuF literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_text.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_text.png new file mode 100644 index 0000000000000000000000000000000000000000..d0580ed86381ac3c0f74f768ad9f9875178d4d0f GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==Pq0foY+qi(^Oy z%OrhK!|0dD4z5P5%7De8TMPskKS>U!_;}?Csd!AQ$ocb%kx| zpHDYcDj3%;p8ToV>s@riK5unqX^Xz2DusG!2Flks?wOvKU-0ij_Vu+)OJ-00-pl7+ zv7X1ibE?#Y((ImRXHxp>q8;zQ-|~KudgJ^xGo>!1CO-}5d2ipn_f)KA|3$W6opB2k z|D^V%hfT`AZE|b>}x!BEIT$$YQkv_15-XfUCovG8>gv=7GF9PF0kD} zoqLw+;}=$+?!Uid9URdnxmkL~{fzx?`a6^Onu@RHO?t!86}s&6g@jG}g4J~H7GH3g zx1{LX%riINpV@WvM)Ni0b>9q<)@UqDVu(smeaIYZ++BR$%73=xj3S?hzO#Hw+y5ps zxZZQioBZvxvQ+av$GZn>(!=JTjb1V+QEM;ZCBJ321D(wp5kY>UwNGT#&N0N zh8K^5m^Z}<>a5R@J9%t5+m@s?f4Uz|z2?RHV(rAA(ucFJ6y5K7728=a#e412zdw(9 z6u-axqCBf}t3=Y;g&SlNz8ssi_);N5q43{N9I`?4yXQ{%|4i1p>{A6p;s1m?j_+0< p(-`=t6+79|BHf+$p_fXCAQ^HT>y=lh^U>*?y}vd$@?2>@bFOm6@H literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addbio.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addbio.png index aaf83b51a0ad096979b619872a6cbcd30347cf8d..19028341b8ce52f6b8238fe5d3ee9fcad49487bf 100644 GIT binary patch delta 1859 zcmV-J2fX;g53di9fqxlEL_t(|0qvY!h*eb-$M2*WV&=zaO&?e&X;jif4>d%EQBVj% zL`6)B;agD<1kpnfK2=x-1?huP20=aakWku0nfV}5(1S)zF;a*V*|(E8sZGECbdDVN zUHhDU=AM1-z2hwSbIx9S?X}ikcc1-r_PLG5G)+ffIsy?R(0>zAca!Sz@$s23mxAS> z7tBq-r7@b|XRhCa;hvtJ6I|O$Q3FIk7E`-b;5KjzxDqHxA#@6%Z^51f9}%!4Aq6{H zhM>#=Yr!Bm1*)QxDB1-c0_S&h5G?0#`XcZg_zT3Q-!bqkxWw|Mqj)$u54;GDfx789 z2KA#{5GyDx^?yM)Hh^QBKwk+5N03$D@&h=UfJ;MU#&W#VsI?vFF^NLxUIyL(8h_P%q!za(iUU5S7<>fe4cj}( zzs^^_YCg7BfOmk8{v~5W)pkvN7*cS2bd-#{&4M*BvArJnMo_h~xGf0-_W@ta87A-A z8sd;^0v}ca4F(n|csJ!Lm~1AB)gk-(oZaLtnyl`s%i+sh@Gh|EH<;H{Y7>PT%6+5N zo8+Basei!=l;P71@E)+}5KJwQt09#6<~eFP9T%Lm*7!CX>;)FRmddqsMe~5A9iIA} zj(MznmBhydU_Wq4BiqfsazT6)Xl*s(Y9_7Gs_h+eP$dw;*Gs`Kz@-B)CjSIbSPM^! z+BTGj2E~=5651NE=qXn=D2*m-K0WHvx+n{peC*V%;9##YtzO^(96yqseGEb8zRx$hei_Zz%s7EMi?Q`UN` zlKmXlBDQMlgHqer)P|i)+FL4~*CC_@sY^qt@)%c)MIXhoeq&FYZr1$n!K|ElPeJYe zxwP37?qVhte8H_G=`DFxO8X$a)N|<*mwzz@(z}g1wZn`d;rwzgo~T;JywXq38dj_8LSsNS%Jg#39FwVsM4SJDpUf-a)yf_f}DfUu_o9 z1TI}_=zdmIqyH-(Hf$_4coQrI$l64TG52wO*a+iEaB%|Nix-;?8V0;?VH6;D_J6GM zdgB?J))@vYo*~u}%YDS8%)8`hXMoglT(WqsOsnZ#hJw!x-ULelI;)6|dM_1z6dX?Q z7`)GXLD1-BJx2N1DCwLx+^%<(+bdcMkQAm zysl+2zghwYfnGf5x+J(V2)AXafqz|-f*mg*h#>_fOM@kfPrM@eI$JuqkNVQzus6Xf z<#?blirv@eV}V5*=`g>?D6q=lbt}tV!nkQ~z0v@EY)DkTd2ZO~4i-(Y)-6{>rRGPh z$z13!Gtq*WI31yY)r!`KDw^_ggm`UJn8(L;7&FS8$gnlRiV z_JLf|`lxbpjVK*zB<-XdJZ67W=vAZO0QxF@^_QPm} zx$-FQ*pFFq9Zxdd;3yqZu9Qp?BwtIC&00T)D&xGIbE!=EU|EdlaewpmN%BDfjQv5K zX8X^8FMwvdHxyL>nIM1<;|a%8u}%>w2&aNOzX>CC`Gq3T1`U z`#kxU^Dv?*z>d^d!F949_4c9nF7Pra`a$l@s}$wkRv)}4-L%xmGvwxBcmUoe;4VvC z(QMlKEL?tQiK9bX7k`44$(2hX=`SpnvjQ0QN#dv8V%(m|*WX;+kx9q9#kf9x(E|4v zsGIb-JzP{fWYQUT`S)T)%0u&UqRzjjID);6vKi`M$H?Kdb|%*WjWBuB0Jc8lZpr`v002ovPDHLkV1nlsiw^(* delta 1878 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 Ef?&oBCIA2c delta 1457 zcmV;i1y1^k4Z;hMBYy>nNklLH2Z51#S^=0`6% z7{P#wCs7anBm{(jg5WQBFeaBMNU|y(baN0v1qJVFUc8u-Xe4MZ#$6M`Zgkh|Bl;}q zwPqQcs-BrQ-7|0Ee9$cP&Qw=_(_P(NUG>nQL4yVj1{aZ}8GjLlRCpM`?Etm_xD~*S z09FB54xkO-cL09?I1S(gfNudD0q_-og-}XGkw`^p1Z@RyACt1afSj+Htd9VE=~2H* z2xKIF;UL~IA2tlMvw?YP=PW+M2DzcnD$1C=&cf`5!5I40eBq1SkW)q z2WA1h4d9u6UVjcf#a07&55VRO&vpSEWn1zc8{*S!n12Is1sm*DY`||}+qDV6PzL!O z01pE=nWqCGr`X*@G@UY`&J)pLes-wOX)wg^A7*(jO!Kpar&v*fcBUvgOGGab(Re|- zW|wi6JDbw}&MFCd-l15Jh$e_=rDtO7GRE!n9J)ML1%E*10rgdOio0Opp6P~YS%OdbW30E018D@MO|g4~x`O~_ z`W~LuV3zf^u_H|zmytH^g^u+vtc9|GgN~a$q{eV#S zX#jG{!dU>HWbEe>Tm%_rZA{jI2?r$orG73!n_|Pl65eH3YBzx5WlS;f^qS$TrzDm~ zQ6z3zv=Jn^PLBp6r%ZJDe$B=vO$UvjtwP-wbz;H+sUK2*7oib!n^5c+K)wN>l_fXl4v zWdJT@RANdYITXytyC$RTQ9i^bF&{$TI%DnclM$kE-&h`np@K{czi+|u}0FUN)Um|Eus9VIPO1&8YS6X$(rku&B z#Ai8eP+2=^C6jgkhG*rOMe|9E$PzI?<6SKW~ye$wF%Y;lET~WxJU?+`k{vN zHK+N1k^3~iz}F?V@NJ$HtqR)&a*nxfXIu_569H!9p}I1|ko1@OxdfL_+W3U*mw&q) zv8pbMeWI2=Y2&cB9-Gx=H2D=4vP6`(j|3TWdkL2Xu17Ky1hygDydxUzaf9XhE zxV4l^y@P>oR;NA7e=XF_DmVtvM$dDYT{2SkRNe^Hl(L?P{u25yk$g`>*65B?9KW1I zoufMzI1bxObcb;TyeZV*1mK;3hkweVh&b}zCdc3n*9krq%8=C}%wG0vFMO3!Bg}9S z#VD=~MG%@O*K~qRdD5Z4|2|GSE@_eW8%ic;!yrZ4XCbM_VR~bMiCMwz3|y{8T(V^Q zycj6k=LI5~Nol{*Y@fJf%@>;_qPq&@i!I~#C(Fzi^ObRE9QyBO%s5;~WPcnUPh=d< z^NnYlckgk=;ms^}v*7HK(BTl}T(JaYWj&kN<0o?7q4|Qj%X`ar&Z>xl_F=SwtmlcM z+Y6OAjUW$*^XBgdaBYAQV-Cz5bq1aL3AH`f)AbBt}*#{fR}s9)s-CDG!T zz%6WmCoph1Jd2Y`P7Wbe}Gm9uSA00000 LNkvXXu0mjfZ2`Kc diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addfolder.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addfolder.png index 01810a96b2d3f852898dd09080df144022717b91..22dc7ee695f9458d63288ec512deac964b0cc843 100644 GIT binary patch delta 1307 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 AYXATM literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_admins.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_admins.png new file mode 100644 index 0000000000000000000000000000000000000000..c2dfe4d8ccd32a78e75b6a2c13b366b161ccdbfe GIT binary patch literal 2795 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS_RY^oaRCod9n|-VvMHR;HZTXT? ztAz%rAgxdoZ7s9`N)<}m5E^KKh?gZ;2MjhhlBIMgJ3)8ro03BJ>V>` z*Za1yNNzW93b-9?26aT^&`m(&(m~*h;8)-^P)B6{YasvL_eEoo$kE_u;1y6uwqZOU zoDJMx9{rx+%RqLruOrW6d<{5kz#EF7W5HEm6{ssqaF`4Bt&=$R`+3&^=r|9Ye+=sMmMz%-9?Svl{6dl06K`*D9#{b0 z1+lUL!|9P>`ps~}WGw6}mKXH*8kOA|hC zz|(*>w347h1GqK&R*(D^*t0{LC^z_Z3qB64Tw6(i$2jXn`9EN{O6LX!@Xyc0y|V#T zlq<0`LAA2bI(zrrC#(_W=h%~Z*U`74B1=sLv?r8`X3t%l9wb3tN`qyN!9&JtpwStJ z^mJ`{(xu~f99~c7n02i3HsSWRY+eI-J?LN7v8^&ai| zS38NOsSo{*^fWHK?H&>0+)IV|hb`hWh7`q>Qr znVf6Jzr}aSYl)%t-qyUfXB+p&d6m98$@73_Bh7lTDWFZS&1fvQsOvE+E%Tj>=V zD7JD?E?0uW^&@p7fR*a877y*)TG_*1Kw8F7tM8@~%$OlOrYR}@SEPB`BX#>b{OXxG z@kVWLOJjS^D__vZ22ErE-Fm4dK=&BB1y*0PT=sDBUNzZUuE*Zs}a;a%JsTqE{9~yn2GY$T*c19 zY!2Gz_U?PfyjYcR+>M1ettj@)Bo|v}%llddFPwP}$RS zGCEE6f;|_<)>S3G_faV>D~dTI$-&lnmjsNmNg!X<)6&Moyr- zuudZ-whQr-uNB3Zmc+DmW#zF>2=oUyY$;uLo$as*Cx+OeLVsL5JGTaEUo_yydSSg+AG68q_WON>Prn>O- z3r>yOK#pDChSgk>v$EJVu24eqs3oF2D#1@VdV^)^qB_~6_NhKSK3WkzsK#+5*q#z( zj-L#SixfD0I^&q0D%rw~Gmi^_+auBewws>A*) zV8wedr7r#v25sz_oL_Qyy=(0=D{G)T9HLVRQfCGnJBaELdn!-R6TtC02kv9n z$tgC5Ty+Pik+Sj{g$J{WsB;=ZuSN99ot4X@2r$C&HtTH4|Db#h2*wfVk~-Ox$!#_A z@xCg%A=W>zBP)H6Xhq)_+g~B@l>)mbtaDOc!|_63w{`;_*(A2|@#M+C$x+~Vy622; zienz9!dZjtI}Y(>F%0-EHop3l?;F5Q^DF7(llbZf%F5CzXN=Xz%d<|&`6E@nmGuza zb5Y3D@%+^$twCn5BZvRlt*zN*!Y=VLcSs)wqH! z2Eo`7!#R*P@7TMNj4`Ol8-jTv@_tz3Y2;g+P*-ng`+30 zqU`)}*Gxy0rP<;n^9^8JZM7vVc-ETIdmGRJKeI0zb1kx ziDkeO4SpBJv$bbQTs>{QxsLMG(D0S^qE#>v>;SL|6p8NtPPb?)qKDPQIt3KH_SS>s zg3znW8iMMdY##$f@&XlI9hczW3url{M({-Qx4JtJ?X?`i_4xm@msz4y;=cqV+l#uB z3C<~?tQTuDZSbccB%!Cq4WLZ4e!2jZZLdVNAsi#Xb-wtnSvv)_8^6{?HZ@j)U@oZYO_=n3taSxP?^6`*C!GwIfGW|C@|mW&52!y0?+Ne0cN8H5oB=O zD7p~AokElZLCr$45ZsGyBE*eWlp*l|F{wv?I7@d)J&Wx!ojrt<~Rx6L`c4@qk;fODyL z3XrfG)rj%r0LICB8ESe1UdDM7a=J0ez6pKXLs7ye|4nX!8b)I3qW$II&@Fg* zjnKthNiu`}>;R}@Qk;QbSz_)8fO)CdSyt>t(yi!XAbC}@;%zMgiGEL`n%|_)=K0Y6 z9%|(@hV^-VmD>ock&{QxXSBb7-ifY9S0+c*WmkJh6n{5&B+-7i;K%@N75b42J0DN|% zo;)8&)qkS%tB%8LsDEiY!RMR=x=l)r9Gh7FsCT=~*}iF={*&k|YULD$HEF->5&Lbn zGxf7*{o9NndPDYJ0t?MKS)g8-*qW29C|~f6o3=KpxyQ;gUJlvlsCOVM58D1!7OM{t z#O@;O{UY1y=T6v zLeOz1aPIuz^zUc#;(2*(9FGi-H2L+AfvtzMDg@12RMh)DVH}rSlNZm+YlB>64b)FK zHknpA_MY3W3PIiz<`E}Z9g`Q&%WHGoVSf$OzjtghX#?L%k=xk%EU)uk5#5`#5Q6I# z)XE&?_GYjtybv~#QVlEf*iDgsJ~2t+G{bzabh1#@;Xgj)AnxZd|?*9 zo_Qr{_D0*6=Ur=*AR?O8yiNl=ZFDGWvC1?7D6};(vi+choGPpN&EU5(nALpBD1Xt% zzN45B6yJVOhNKyYTC|rUQy<5kw9=1vM=>QRxq@T+ssR!4?nxVxG?GFa_`0HHr0{n! zf_i(>!M$brx6#pj)yNW*j3muTp^2NOLL&d*R}7mo$s6x?u>jzxzRjl?A$~{T66Jnb zwOglYyxK>=Oc6xeq*_;L@u~eBt$)(>Ic|RyjkESkZ#olEYo>4zW)csLKNia8=LoO2Xp5DYHzn#ppOOz1Z)=*j(mm9+p%eOyo_~0U(YK^U zPY$fwG5i$Wh)VR-oW}o~rP?5WNT!#-y=dOLi{_z=@(V|ymr43*9@>_ux5ZkICIagZ zPrFcU1;ix6BU~%%onZ}clCMKQL}M1=TUX;W`?|VwP?Gc`ywm%)Z=f-D(44Y`x#fqE zV1OLmR(T_5o_76>O)F{r?|*O@6STHbS0wS3NBNXDB*HtI+l@rJw>|k2<4*MAkz6U0 zM0u0^!r{p-<1+XvS+7UE3Hb!}ErZWkKB91-!ed3a3q9S+XH7gvphu_`U9l+0Nl#38 zP;VsleAh~SY9C3s7WLk9cGeC)gaBaG?QTW*3oj!|!6NYEHXC(KjDKU9bNYc7t^^;4 zW%5`*-!kplwb=cR;~pNLXB_+3O$n|&4v@V6B|6>nO<97pwz8u2Pt4-s^UkC4Ib;d) z{^F)ZV$9;<^UkC4IdtEoxr-NxVqf|u8OmB!M=4+yUg6HlIWP}wGb~F`&;ALCy6ss6 zF_kqvTRelroxR1*npi}(ZknU1TAa3C3uu<04@@LmH_g#hElyh>3{Xbu26R8VkR0_b zD|-2_;*Or!24KTL!$8A8!$8A8!$8A8!$3X*{{Z*6z!dqd^|1f|002ovPDHLkV1lLM BfrtPA delta 2011 zcmV<12PF8*4#g0VfPV+CNkl;YK5oDNan8Nx z?6dZseeRh#jdd3Mnb~Wv^+0$n z3Ef>_A6V7i-hLuO`ZJq~;!FUCL0L9(a`BlxstmKI7;l#=Q*qqE`RJH1XT=!(2W>_$ zrq3wSu(YvdJ_iwW06}jDQ^1vAXaWvxKPA}C@k6kl`QQl0+=P54K>j5-&j|7zx{2h_ zY4l~QB9ZZ66@NGeVnw#{8J}%7)ok$J1P%a8R##hR+#+HJSPo8s-imz1(UEa_-E?q| z1iOGGv$_qlJR#C#aL|g_OP#nTXPILq7u;h&r;*zsbVDj_8$O3{E;wlfYg8r9xeX`i zA%J_TC&8s2m-^KjfG0><_JDohnV8XFw+y&) z9L1;@|DX*d8ldmW*-PJS&?iVjr)&~i`BZUG$j{pcncj1(Wc1hXb#cl8#R040f9#>ZP)NfoQcsrun1p+sYSRT)>)>R{4CS$LCpK$$}KWYYit& z*7e0=?-YjwX3m6kAIeuh4JZ{(tfd{sHOV23)z%8_4Rwdz#BYTaW3~ zrB<@wc_&?EqwR!qjlpB( z&~1jFHp7;5D|$|5_MDn$)|_))*)q03T9v!3?u) z#$t6aajdK7{o0IbHTYUvCP80(9ssUCfg#uJ4uvPiN;lJ_?cMGur;XikaMbV* z-kR7iF??Pr^VW5Q$XYRre-VhC@M~h?tGVMXV2QOZvpB3P{7(o=kLwzTL_z;fBj~+8 z`=B184v_Vht8S|mz!L5FT^>w|PJe7(ww%$u81kimtl{@Jy5JT`h*QaAwP}A2Tn~fL z*NxP_B>pb}OSYptH#8Xf-!L4%2>C?yK|0qUu2gBz?q?r82}gh_;5Fd;%1KvAQa|Bf zb!%d49qtGX1_$NSX*fO>@{8_+SVi)E{xRa#rHcI~_LPV9g|va-_q^eI2!CC0A3Ke= zsvk1lZoWCmh@Yy`oHM;DNT7l3jRxa$0hdx2J{JNjZ)?LXjV|0zpbns?oAt#5b+oL- zGImR&J1Kl-fvpLm_Q7rMqKdz z@5yfxlXB`dZe33?Dz25WwjT7pqD7>(D(m9FK25qX&{JhE&|di041dJhRHrLl$oUqm z)`NbD^`{)~hx1_44jxhmM}R&e1lm{8`o_CEM_(Rt4APImdtfC4J6UfK#xNQm{aS4& zSPRFgdO1vch&B6f21OC&GRaJ~nM#t-FD#Z8r7A`q%1u{x^M%0L23Th#RWy}y9FTW~ zs^%a9s=XFW4FuN2xqlI864hjyhiLNGLtr8ZEnwHte>ZcACieV=0?i9tCL8FxIVocP z$q+%Yl9-C^lX=ZbW*ix4b?u72NoBLk*1$-V1F-UwZd?P@ajpc>f8DsE9m9L#81lDL zF2LHw41W7+I5UE3ci-CZn%^*a#suU!AGo62$7UR=hYs=uZhu7D+rYo`DD6qD=1e&y zxpAnH1vSQ5DG0NrD%9!5oUHh><{`Z~M!s9Jj#J_z&@dyICceSB1k8X`xdCg!PWvTU z-O;t0zsB&|6uX!+d~;VNxot86Sz|HG;#DfprH1)dLsvAFm7_J5hVu3mDD5X}4F%1} z*~&4O0v$3E{#3!x6-{O3XpN<@yqW9e=`jER diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_archive.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_archive.png index f81ca5f62d6194a3411651469b71f1d046b1ae51..513412710460152785cb0ecf124dadfd119acffa 100644 GIT binary patch delta 1332 zcmV-41+at+1X9r zzOJqyfq}q4U?4EyEd#YYkk#w;U5Il5x(B)&x&m6Z%p>6&=xgZpTCMh?YygRTAZ7{l z3Un6glPmztZGUJ_0(4muNKSI@Kz)`8fLmD>C(S%aN^7wO$hQH zTK>aU8uYEL`3m=~xb^=ug|Th3vvBT2a>&U>=t*`=qTNB*JVSsQ3T>tpL-;KJb-_LsxA{k(_O5taO}pZ zzo3|}#1zQkO)0TsP?MGi(_Ji4bd||rF_3xg{bqnnNKvSeh@^-zQD81HPorkC2USDrFsAjm>gASe)IVZdSzJ17ujVZdSzJ17ujVZdT8_H73w z$A6P6-}X2b;kb(@1*cu!CZB;`U*B?!tuQf}l_h9C!$awVry1f?J;cXBF6kbgkZ z7wMM8ajGY6#&8iSPh;rf-&~tppk_pU2f6q=i>uH_QCryWybwPjdSrOvL1$zX*;dpS zhjN}G$F6m?(4!QAjm?giJ-(A=-8f>db?GwU4uVSr|4%Q=(D&m>JKUAsx+m- zud35t6WAW-fhNgEjMv${{aZoYP=Df=WjqsFL>ZPNMPnv84z0xHMw}5|6*(}~hfM@& zZ}W75^CX%<_B&Lj@aQsRs?A2wb~rzWt~CXzsEt3=82~|VP54cRG+&#g^9Yo|I!Rd1 zh>aW;Y$S*a5abD(0q7LR9U!cOJBM{y#dwLy-qC?}6!Uwb{2FGpyvD;ZpDlBED}M~V q2Vx$2h%rD43Lx delta 1257 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 YW@xrwc(L#AdQe{RboFyt=akR{0QF0OkN^Mx literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_arrowright.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_arrowright.png index 003fc03d7f01bd65019f3104891ce0aefc92c80a..0bdb7bff15cd24be2be2a9d2b6bdb89a1c1627a7 100644 GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{EXmWwF{Fa= z?XBIshYUnoAGXY!)#rGK>5SuPA)iAsJ_i)8c0I36Sv*z!91$=myrT$f}Y{c+h) zXxiqUHU=gRg$4|w*WsQG?}vbCPs1+DtXg@la^8Km8D(<8EHYo)tM1OL(s=gqE&GpY zhb*od+0TE!Qh6=ghK|p@c`5d5?_<-`azc() z-}e66c)s~p-2F}W*ME6)<-ctIlD$WjqP5>{Rxap?XDc{h$kHQplJU5JftL!qjPn7F zi82K|jEh~0KoXNC3G3zzZ$B&SD(MhUm>_Bk*xvIt-hjk}nZPHDd7xmNyGnb0Ee^|toJ=Pz{e7`|nCV2S)#^W3_6ph$r zlrs|APRJDWG)O8H+wg6#epWNZ^1+#hF8dpn&EpUHE^+q$^!M&v=lOFV^GKSov-I6e rdcfk>QYOk@xKE?P6`Ri=Y-gSKx~1B}#`I4n0}yz+`njxgN@xNA619{z diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_ask_question.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_ask_question.png new file mode 100644 index 0000000000000000000000000000000000000000..1338187d3f08f45a3c0db6fadbc6bca2703f0914 GIT binary patch literal 2128 zcmV-W2(R~vP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS?x=BPqRCodHoLh)hRT#$|H7(Rc z&C0OE%F5J)f^KSzW*SBL(8V&)5kixwm+CMIF zHuL{Ub77r|Cg36fpeA5m9TBH$@t4LA>~LGmMiQ);?U1UMb+09{G) zKfPRqD$5u|Kw}8#O)xEGV26_v8E zzYr--U6IuxoQ(y03PklY{m+0jxAN2p$bRHU{z9a9$EJ3WRskooz^OnaKhpO!xG1gd zQsm_?@+<#7Qrxpj@e|a=_*@XWbuXpAqE}2XKsx0gC=MSf{<($hr0&P)Z1A7Q>!0u+ zNo}-(3W^6PE{l}M?6SGX*ko|d@&s=?xVCK0%4kS&Me)((k@A^bvOA271c&p?Utp}E z>C&H6p#&8lP@EPiFU_-xBa}7p`Q{w0^l3s@^Q1U|;<|`8m zQ1M1_)8x^jm}s&?OpF6(^Gszj`{4~wW~H{I6gN=(E-BA(siH+;gKLFz4Q#iiGE`&2 zia*MOCWkg84i&ZL9M#T~#fgp7upsFy?o27?s5w#CsBF$ryKu6Xrntc@k=N=8k%#VV z%Eu+GRE7zS@vc^MJ~OOYU%lis)05};U?wOnGZepu*A!H&vrgp$l$T4(ys03mOV65~ z&+{tPaR<51bE^~OZ%=;doMI>(hgZF|lqwcnc>(3;QpehMPbVI0Eq5);mRbsJIEwOG zYb4fD2e&{|4dIUsUL&!r{POF-HP#E9cCR(guWF=fxVb1lBWKm2SB@-a(a?I+pJ&&&pFTEprMq zAS)efEyY-O-eGedr<399^YNwW>+|tLI_mS0m1lcB;#bf)L%Sg!PK~@=mNj$McAK0l z=!C1qxph?;VjZlF9Y^^GzCIsc7JPj^en>}sJ}NxCFi1UR3{)$87A-#d^*TteFmit~ zCr1P(7(zR9gc6)YMXLBMyBI&d@UgYi$bC|dJOV=uq5K(Tj#mAjkaKVFkCFS}yzCIN zW|Vj22{sUeoNqUZ^LsYM_+3mqYsoSH!7Z!Z814N=8e6kGw?Lm{J7VpO*l{BsK4>Jh z&fvB0jJUzL+{C)sRH$<%d5!ht>)-5!!Zt%`NuAfi44*ug8oBN;g|kc)o;8#-%KNLD zRj#9!d@ctkj9eE4(?DU6NAdljVx4u8;}WAdC*fJM>fG!Qdeu-COP>(bJ(0&~V9kBr zNR%APLxJ}5x%4@V+@;7w7HdaH@dM@IlHP7ymN-&`Uv@1-=Wiu8QiFoz@QNp|bX#CB z(g*DE7z+<%HCPyhL@wHWYte3)eN%^x(j;JQ+|)LhX{il%p#t&F0RIA)l;532hlaB6 zr>0lb={6k|9Ytx1#Hl~D^-2qNW^qZ@F`$?HAIXwIdbq9W*V4o{6&y2S7i$$LeNzTT z1_Em{=ig;6m-py+4F-h~3gxW=g#L+(R^m%~C= z&uz~E%{8)j4E;5==JHtteXn{190kW18_v_}rl6O3di|?!DYVow8r%&usp|)lkTyrP zVDoSi;i6;+R9`Z?q$IBl8KhrV%MMquz`4HV(nI6f0&<1A^^`z|g4%OM`R^sLqN5jz$0t#x6Y^FA$x5fxcv32Xqxwlk{ctN>GuvFNMaS=P88y z*Ek4oBLUq-tM4}M1^0nM@7qg2wEvI(pNs~Kag-5I6&XxI1N_9%ds9@~K0 zIGy1{yFT2)#bw;%FJLSnk!{!=#<2!k6MQBv;N?AN`O&Q$ z_Cg-y+G4X(gEP@}JE-o(e@xo{7!=YTV3~rW0cR-1g>?c`i+3v0h=o=|$a~N!nk-30 zO?FxHIlajk%2$f^yboM^IF(XZI$fqpI=8V^Jwnma2A%?4N$XK|7B~h18{niZY5g(f zsAvrWw~r~*paj|;00)6gU5%@gN>N$xJa`(+Oj>VDIVykZ*QxG(k{q!mV+t0WK*4OV zV^qrde~)uEwNNQI>^krM|C7U<<~NRsXd!;5fM>xe;9Bt?3=~*nuFVl`$n6qZ^!544 zjY=i`dTx%Rh;iO$29t8Y!^*+wc7jim z7r&ZIp?eKMxlV%PPeXwhf$oer^U~G8iPdSm#|@}8p0XaL0k@*BG(y|q+5wVuKo3!_ z$CK}~22V}D$QtfzmxXIu)XU30gg8lX&Qb0m76ed#^CaYVgXeNLFKK|Z;_2PEdv1j^ z*~_t|Wdp(a(xV7#dri%-!wQf`4Y5@7VoQt`*u&wagk_T!vtBP}+{#vfth>c}>|Cxi zY0JOMBR$KLjRYEhQExb=?plJgFQ$yI%coo-D?rw+h}mvMA88uCAD(w3xZbABmWbnWMvQL^I z(WV=~KcL#SrQuSfC*s1PcIdnIRjL4~5=`!_TR>j?N9j?Y{H|$#X+7J-KLitD`^$PaGL>}p*-41T`v$6+w82^>-b22IRoM-q@w^3Z9{OEV zz~*L;Oceu!J+7BZdXQsBRnbzNqD{-z0~M{o;kjHy!v0#|!8s~Or5&rG?Ru~k>;mg@ z364l1*J|WWV41d|lzvlZZovtN34+$l`>hC7^4{QoXibO*6uBModo#E(HwQ_H5uw3e zRFJgEv#`!2zU~0ugTOS7^z(&E8Wgu20(2*ZJ#K-}UQUuM3cB=((r{~R^-kc-IW9{? zl4l_V>7BIE5oRTQ|3TdXoO}YR=doSCtMY7nUEC;B7huR$Xrwhcu0229pzc4(lql-m z4}$4i3QkS?gIvvVXSSM2`?QP*D&miN6`);cjCyRf3cHF)|GjD3l3P8*YgnSOnN znE7Yn5)SFNA;d??*PZO`N6#}*ng!5QiAKw5ZM7v3vZX+MuD}$`$H2vt{stEV7pw!5 z7zZOSbASfA+SR5VB*GvF`=1xM)U;*=%wXulbU>imN0000svLh!5y3#hAl_{#6SL8B`u%6lwlnK|`*QYPd!Ics=Yzj{ zueI0ufB*HJeOb4$rKM@j2s9(mj6mZe(Ap^1!^6W<@jVZ8fXl$e6%2CR*4o;7g5%^d z0@4P$z$VZKhCrC@Q3S zAEdRK070|}{Ob_@O8N;ftJFb}I7ChXYrzqa#mq+x!VM9m2e`Hhc)g>h`HDKi7Q(d| z+)@YUQOfp%0q`d{Sve1TNgw2Tn9bqBo8V!ztl%YoJgi{h`3UL(Q7>ICkJw@U-2%G7 z<@E}s&P?z*h_g59<<5VlJSwLGeU;*D2L+Y^ecCe{Ja>XmfcrioYs9|J>?A7zGTOne zQ9Ysm_Ht!OR$pQD;qCzXLb~>RSe-)hQFArucU4uTf8qR|Ld4(%UyH$qK>e$ifY%pw zUG2cR?wqLLZ05SRmw#R28eN!%>zxz!Se@nCBaPN*`A3)Tc=dmk^l|X=9<==ERt|e1 z4{~j(S*gL9=(-hD_u@Yy?SBjkX%DbW!O?)Tl!mr<4be|~6^ny~V90Q!$EuWfP7na} zSpia8ZVJj|Izpu3!yaH+Dc?EO4My}5aLy3_J$c!`c95(!$d#pG#kerEZVYL|Lzx-? zsYd12z*GI4ar1vEN9zorJI1v`WL%UwNL1F8g=K|x0#l23D$Rzt|U-zl0bNkvU| zS@Su)$r#F4iuSw*TzfE;Qdl}&rb;@uu~j`n(b5K<1YJq%QFabE1_B%4q%CRvG3BUe z4FY$JDb%0@+U^4fflOVEE0ao5S@0Zq3d~MgZ%jEV>eooA?tPLRv1MZl7MwuAT(EOg z%K3kfb2hzDDLCvp@BaUj!<^e@a;F252u>a&{)Mat$r3_I9>^?4r-w3G$%J?5kq~oQ$1{T7Ii};8&gv7 z8sOTIEMk(@#i{0PK69NL>2*mt!^*+wc7jim7r&ZIp}P%1xlV%PPeXwhfbNVq^U~G8 ziPdSm%MGYCp0XaL0k@*BG(y|q+6j_$Ko3!_$CK}qBm@y!fH+BT&Qb0G76gCuB;X@Ioi>D{<{ZiY13%dw?pBfXKGF=mv+)Vb)%?AyEIuJ zY~9nGQ@VL2DwcZLCryxO({=OBt+wV1J!KWV677G zC11m;>;}L#n z92KO}j@8h1E!YNjgY~%tN2HKzHF6iQOxsXOzo|2~-~_}3L2KsyR)i{fuXBI2Cd31Z z+>ZFY5nP{}gQUcW&|ohrNZRCCSZ5Mnw}J0KU>ZmI`9dWPidzl=x|6~lw?JqwCrK6s zUHU|6xHYzVJ8%r>6ZuuI9KiTg{|>T1EsF@khN1&~7wFJ+@kfUCpHb zk7?VITRp^USfa6;CZe*K`Dfu04(T@`#7D{3o$T#L&ofY(1<+K9M$2h!jU^DWQ3W5JnJ12o(`!K|-3QIcnU#HJm-{v(DQ0 z?sM+kbI-l*1wVVQwb$Bvt^e+G&YkN%j*TTr3?v2;1Brpez<;nZFkV;U?RI;LwVnbS zz$&mD)G7b4*h%m?m>nM<|Fq7kcA;2UzDra9g)T1~h(} zb+@vc=0fZDjiBt)`I3d3N{-`1NLmL;KRAQmMiWHAw-6}zku~6EZ<2ZXb1ZPwvyI{3 zLVwV=HMoC-{C_7af1F%TiTPi0ek)0Du4z6vVpc7(Hvb|ISeRL)-*~MB; zlv>Xf1w?WyI!x&v7pPW#w#5YG(q;gzN$Lyg5Wr z-fK9tyMF^|hU@|Nym^!e3O%Mn_B;~-ZIlR_3Dg*}2i)`Kks*k05uZ@n7Vs62-+rXs zlG*82lk2L5H8UzBLx@^38JQilWQ?eZ58c$tC@fYn)Ha)M3H2fPV-`UlIQCkO&|L&hr^F}isk z!#;c}*I7AGXEF$#!k=T^*SoC!EaM08t@QKq&=N$!&rtYVUC436Pt*B;nCqP(wjDS@ zB!9hJ5Sy_0;r}GfK49Hni!4YtuRhe(Y=P`7- zAz$m;v;KbC`@xIAIuEc3`yu8i^??wR7bchiT4wTIVNC~$?t7!I1@b7?B1Apn`}%#x z9tIb6P^Q06yGR=So#4N0OgG20L3Dquj(>f8`$iCRhsco}MXmt3`Q`-M25=r&@-aqz zmPsx}`EGRC3b1Us1v@DO_k|$l?M9BD_iHE%_ZZrB;H*FB^$*j(Ayf}zkAr#7KiCb; zQLr<^k`u(7Wyok5k~}wqcO&w3F5l4EMB!(h zp<9dZXA%RVV`R=c36k}Ek)1P1;y;2bU>Eux(Cuj==Y1Z+UtS?7CB%F|fE*bAD>iUY z1TB)|CrSaYqVE85a@LZcFizoj%6}S+u@NiBVkTpJ#b*!%ndG>HDc~Uejo?pb%i8a0 zg`C9$>uNk&WsYxSoh$tT7dyG(*O46OPXR}H#7v;?1Z%)|;63aYX={}bLDs4BUQfzL zk>jd|47r)U;q*qee0tjoUlQ8wo(_^T-`XY>Y1C&v96~$jFvVO3%et080ZCO~hZ_C&#bmER(7h!{ zT73KxGX*S>7un=pEo+O%Z|@48vSzlnfh;e~RQi=nS%tWkl|@5stq?QTPnM=H zg~?5NBUlammtCxzv=AiUV^QSi&#U9DX9_JXkTmq~&6h5^Y=G<}(8SA4a*|!%QKB!g yj_)^R(?#4Nsbdi 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 VnjKa2bb9~*002ovPDHLkV1i?Pmtz0` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_unmute.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_unmute.png new file mode 100644 index 0000000000000000000000000000000000000000..122abae39ab45f9c7499ed1d24ad9bc4bcff15cf GIT binary patch literal 1774 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>SV=@dRCodHn_Y+%Wf;eI*RnK? z&^|<0%?t~x6)_0WLNdG1ppZZ$geAI=5U-<)iY~nLwi~)X^u$q4W{neqL z*CWKeKugt<{Z=v@CxOSo4^~i%I&q0}l9e;mVShb^{|)rLp`W)Sq)(;Zeh z=Ri8y@`*;?KTKs zbbayJX81|<7P!*&uR0cIz|A2c+tT>)d?De@9Mk+W^$=-QSof2=qJj9#0oGsU2>NTI zzCO>z4V1$b)iTG*h5k0+-p4dYbJbZKmvscK1+E;p>=2ybu)}p?{3lrG`uZM|pF1!tDm>U{IT3 z>WR%Ea9CwIX6i_AsM*}uzxPCguxyT5n}eS@lwYz@;u7b|1(eg3%@z$#OI=6CT4DJ{mq7_36a9aw@SS`>fpf=tb6j964+GX6hi($8%I(i3VWMP11V8 z9fw2CKUBI-2=w$i1hjJWjud+>V7wZ*a`mji7dapf!u@4up&MHotQYxkRKa7DE)H$wcYNVFK}dt6Jl_|I65k)pO(g`rc; zi_5W<^d`Yvpbb-&Xy0O$`&r3qY+7SzZgA-lb#gZ9w`byM*hhmQY(T6R*Z5vW#69xlt5@Q3xN!TcAx`x4G$RH0gd zYIfylrIKOOt_gRuk;a97k*t*5bFgX#u4pc;--`&go=i`BuDxS)%*T2}$$d6T{cWDg z&luI~S?B}wKN_~NteQn}{Z4@w7=P#J62r_la+-0Nh^2|B@u4`#CWe)HQ^|Y!-3q~_ zJd!T7|4YqJ7pXh5L3CJKN}dDO&$>nU$EwdW%yaz>z zAeQf)U_O`}wROSyIcofpRb%ZT>Vop?61%qpg)cGRQ{<9;2+pEgK=(mX7|Hkh`1TT2b;b|M$-L=tRaWnD~02FW%Bb zw)GhlZ8weDO*)(z4bWE(j{&{&g}YLb%707*qoM6N<$f(i;-IsgCw literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bio.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bio.png deleted file mode 100644 index 7a988c39edef527f189f39b28629b1f187d73e28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1715 zcmV;k22A;hP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>9Z5t%RCodHoXv|IMHt3+ObmoY zRueOY$T{BbNGqdRz9=f}#`u%vOy1Kr4R#tlH8R!{kk%2*rx}&OhcXtnx z`6hS=90jj9a9DZb@R;L0@L(_){L67J(g{Hja*XIsgO9+6;B6q1azy0Z2e-jCxCLR4 zI4-w9$|_g~H^G0Plt`C!O84s0v4qpd!6on~Xj^1MwvI16Q8>8#sZvfzm(wZTDUol(Qg$cO zgW3UUerXvQ<155OrFU(^V3sOFUSevBY|MY@ljjeV-D0*AXy+O{6Ouhp79ExI_ ze(c808vI!@w^w;CDPcK+P#3_G%VF89Ycy%f!WxxtWht1T5Oy@y`VKsF(0TS)E!Pw} zt5D~iuw^nd&uZJ0Pci_T-t%$;B(5MQ$230A9pF|{!tl}XeLk-QK4KL z6)JRsfis~I@A^z3Gb1(V*7z_K#TuQNd}(y|-pOa2YEH(NXIy;kCloq=FQF%um$)sN zr5F^8FN*b3Kfyn@2wL|Gxbv$_LTO^FwEUD%n957s7SD1qTs2BuFw*KtRJCKkdQOYY z=lE8!)ma-<*~R855Q<{f%1c@(qycFtTAON3FxJUi%ntyY*39HNzl?d#jhi7mTwgH@ zFL9z`GUD8{LJHd;E$W4GD@@o2*H%nc?0ccY=t1z0!EEtP+n&|=oDriQ>rfPXZME00 zL2u!1SYU^i|Bv~E(VkTola`%)QS9PiOnid0ULMNbFroA{zuF;i5mZABogXS~$IxfR zR^!00G1_GjN*jHj(8f0;eCZ`t=U;hgZJb)M)j05LP}qBxQ(EzCTdYo+l~&phE4CU3 zi$Kr`BXTRvC^l2l#01S`ZNJ{^*Ptv$_Yo1b$BEc#9P|W@|Kdr49*>uOe%0FAx?!v9 zBrCQW2YwCGKEP14KWD#+68_*c9(n`6$-T4{K|T9C@)nMW`5si2h@iij3INkrb;*s!i&U72WI^^F`^hXlDLzUV2ka)2}aXW>n?3X(K-(*Rc^5@+AUd{1kmNG@!pe6?hWNH5%rxSug z0wJv0FsVI(M}fAYRNGOs!$QzT0Fw&%p9C@IQ!kdF;ywcqae=002ov JPDHLkV1k9@Aa4Kw diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_block.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_block.png index 5223dd43ff6b34371cb236d0db4e5d3314543b3c..47363d84c77add87eb14b71a37d44664644d9568 100644 GIT binary patch delta 1592 zcmV-82FLle3&;$RBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8 z?*IS=vPnciRCodHoUxA-Hx$P2QXmom5=ujqW(!E@K>~^(Qh%f;&C%|EK|#r1am8s1 z3QF3OD4^p~(Sn3T0f7_<3KS41(dGADJaaqN8_$f#_U@hLNuOqCJ$~?IR)lm7k~T>Voi1BL%vQOd6h`w0@wj#M4`HA@+sdJj+{`Co`L(|Uy$1rL$PLS zFBBwCfIHw5C~b09@_C?lads1dqTo@B(}Q>YQcju+M_?;3D`H z{06=SUAD&sztfrj)pcR9a>Tg=UV)Ikr*Hvog71csQ-2*-cfnD7Wk$dW~p?k{oqvd9pChLE%vmk$?$== zA#wDhsa#JtYY1?E+1KdL1ktSAns{!Hb{^pXE`OckRBpLeV=>>9OS)A6obC7#IM*n) z_^n0E-r`6kadcccG;F65anuo)TI{lh^mj)&j;IWeLE=;)sHdrpZ^~)>q8m=;zGu!g zSxh#!suBqui5De~d{S3)H*11B55??NhGQ*p`nKp*InhM~j~1t*fRBZr1n0X|dDIaH z8h;pCx7W=mhY^*CKUy4x#gCR*d{b`m14k-f_dRm1am3*DoCs}{R1$HVKw3|-#&Op} z+`b7FQf93VK4i7-Q%Akg#S#Z6kAYqZ`KH%FH{hX_$X@0+YZcQsE64hpE`jvk$~P^O zX0_DfERnUiTRGNMVg!0t*Us=Eqc~z~aeogA6igAaFM)4r`dN%X$@(0Np!4tN^U}Ju z*LQe&=X>M)`(Bj?UWDJQ;)ss88~MB&NcHe?oP9AI#y=JhT{k`vBfB^XNE{7YeEZTM zGvowM*##m-5pi+}l=T)XDUK6p@GaK$6sz8JE;l^A@f>Xu2Pcm~l5tK?LKb%`$A8*g zmp~ej`8N6~wjyzqhsE8>vCg?mpy&0KhaWB;ejNU3h2n^;#ofxWPAoeQ!1YAip7n_-~u6{xZZ*<64|1S?*BsU}fScDdMMJ?r@Gr zEtsu?I4+L`TzuPA*(k%~-1o|PuYV<1u3LG_QS$IO?KpF2*nE^Y&Uw_LJv7!r9G64B zMSB-u&}*MH6DRL$A16@n7l-R4j^n=FxT*d>N&Di^1?qhDyoTbGdG+iBnjwI-=&i@M zn(^B7IgYP5iJNbEHZQoKZQEb8v&$kQa{4~&AW+kV z-B#*%%537SL?_@DXtTEz6x&#(SfH&B6vwjLfR{v?Hj-Cjv>o|%w4vO3{OgyKX@h`< z`pLG-$d~hJZLFZ^z{KfR8-MSj-$O)wk~+bVX@a`|N9vDRray-&*_3D<8YdmAKd8&1 zA0la5qPd$Ug}F^J6l<0xnVe1`{S(kqNvJcWILhQxzSC{z%_&C6H%VyGZ4R`2J4P(k zl@IwEze6=d+La~iqgkIB delta 1444 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 afqwv7<8@G~9R)xD0000pKKNu+bT;Dv*^W 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 M07*qoM6N<$g5t0KasU7T literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/blur_linear.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_blur_linear.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xxhdpi/blur_linear.png rename to TMessagesProj/src/main/res/drawable-xxhdpi/msg_blur_linear.png diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/blur_off.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_blur_off.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xxhdpi/blur_off.png rename to TMessagesProj/src/main/res/drawable-xxhdpi/msg_blur_off.png diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/blur_radial.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_blur_radial.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xxhdpi/blur_radial.png rename to TMessagesProj/src/main/res/drawable-xxhdpi/msg_blur_radial.png diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bots.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bots.png new file mode 100644 index 0000000000000000000000000000000000000000..1fd1d91815c13c5f33948605e046cd1b34e7df69 GIT binary patch literal 1627 zcmYjReK->c7@x5zhbU2uP*f8o`AWl3tj>I$OpQin(|mL1W0dA|(ug({Nx331OjePP zg%Z_P7}_dgXA2pY9gc3EyQjP7eSYun_kKL@``?f3iF8#_(pCZh04fMK7jGH6tz!dN zmVIX$U1cN}=k4kQpud5LWQ7YBg$Q+b2S8PEQ0e@T>^DS7?iq_4*F)<>6Ay$uw-3ilMN6^46y{gMvW zrtUf6VYb zew3!%8tMxa$1esFQ;!f@CkZ>Ernp83UAG^Bs?fc*{SI9q5ZKP!Z!811bRg?N;lRQN zqaM+6rHZ#M?#G3O(&Nx2PCndpQ1s?~q-w(*OVH=bmi(`Tv|!a((8I-X z&kjAYitxAw(Swk&qNE`5kAC`qZWBW#Fzc4J1s8>(;wwHbLr?*qpYwE_|HV?7r91KG zHvZ&<5)?*m1LHdUMy_ykc?sy_M7rUK5DOkG^4 zu6LAZByX(}_L4psM=PMg<1Ua>4n@!{6kYw_iO9FuU(=h0;E6BD0Verm3&lVMKlqiL zJ_)}_-zVO=?b!{pd~W7ryAG{#H_D^3he*fa8B_2{Y{RP-{U?;7IOPzihV=o(eG&6gz3H<>PsC05qh)RQ7K z(Ijdm`uD)D(7@;s;M3iuHjC{EJ4L|ySk-P!<)J4{O>-f){Z|NyolbTH6EpR^c&4s= za`i^-;x%7v$*_aUzcu=%OB2>Wpj>FtW2s#`ks4<|R{lLk4B z-{M)K)dM+{VFIGLgyt3NTR=aFzDQEfNX;}wfSro>%Tx&TyD}pp`rQ)VUr0<)8 z)O2BQ-ZC6&c>1Z7dIk%6XUXoZjWR3%)#%FR_Ji7a>kmpR1e)1=v4k0pZQBFNy1S!4 zFt2)T_!Hr!dHWyT^qQRo_5stq2c|%n*F~viGirx>W~3XE(e)*$sIS>`C!?*D=yP1Y zzK+Y(oYh5|rJP$up{gJ;Z+s6PEe}t+Nl8!gkTkD%pC-9_bNZRAP903V_ zKRM0;vZhDQHM8ykQ`|j85${{z@6~R;dRfb6IDif=;)@u8vMX$`@`CJxLMm&{PO|CL zE&Aj{%7(-!j;(v2!I=Z{gktvP0Q=V}40xO85zgKAx44Z#bV z+h6?lz^XVlN2~MNg=2fMTGN%^P)y43o76lH!bNBCxkh-qs+S}D%^4*Lbuhw8c%IP? zq(K|;?6DnAt;%|MlaTww6DjV{hJ-pLtC}$O0%Um8!*ni=OphG6)WyB`4Ps;3;oRH+ zX)>GpQeZ#8ILN&~x*AhZi_=n6naest8xxM?#Gy}=6b~1y3iloJdsrJxn>J1lGLPeQBo#h4D&t;7BB*{Pl`Z~|{m5*|e8@zB>4%!SpKD)p z77juhuA^qFYqN5niT0}Q4*|9Hofb@v*f?M+VEL=DkJWhw(jaq(m@O|*w9!ZAC-LZe zfm0SSNYB($O$_3lvmRhIUc^iDq3_##{HI}6;c1sBx2-Ds4fVA0*QSi(9Ie%qVseV>o%ul?1mV6lQFZn!r0I! zws}2dXj4=0Pni*zu#8^!Oypc~S|n{TZ0PuTkk|CS?AWB@tzWiMTK_`Ky9MoX07T|= zU(J22yUpNZB@pP!I%I_?r7VtIdWK%6I=&S=_ntL0>nyWno>qGYLs&=7in5xuydq=p zGi4Tx!TL$L!4spqN9CDYifxVmZ=nBJsgNoEUEapR U*P;yOr?GDAh@(gsx)X-Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=4M{{nRCodHoXd+9M-;|qBsvm& zAP71MD6<(b;0po7-7r0jtU7Dbf)pccXBbZe{;Vv^s$SMm5%qqdz z7-5(|R6?%5k96a;=2SncUz0lU(cPy`o%7W<)qU$$U!9qW78QsJLcUux4F- z5vbWw*2o?O$`LOLlq1jwIqidN=0U$3;+Mez@I6b0pIaXYBt8U-pti{52=*yPu6ghj zr1lRdpSLOy1-}IA34>=GPt+km{~+ri@<^Oj;M(0f{7Utu@;30oVelu{Crc%Ag6S`j zG?RqVi$wbP#Gz^Oty8YKOOaPa!)l9El{H-U18e4prg$B$n!8dz3XXwgornaH?<_L- zI^ml#4D<}yNTBmEP@7_Q`0~h4`%Z8RXcyo|a3m|f)i%gzCjA0Zd%%fzpNY1E;0{Qa z37qDdV%6thtAh(w4C33t7vPjHCv9`!D)S%iap=1Ju{Dt7Y?b8qWxHYgwOG8sNuO$*C`} zL{hEc+-i{3n#DEUBBf`JE2eS)>vp^2#`f|W@>(HVi@@ul2$NsWFV|EvbHyF1eyu!^ zTymLntxuxd2XfKE%9Z5g@SZId%~3S2iB0>jjN%VNzDiDVJv8cAwT-ait|kQf#3*kK z#t19r`oV~{YU|7FA@B&ies8}0cOjqJ4jK7umx7Z{r4!O`6}Yx&SE}x%fEJUkty&og zk^p)3$m(nQ$W%EYeYIub+AgzD4JQS(>UM3zN=cB#sZd|vE%upJ$nh14ak>P(w6;_x zo(d}-|FqkT@d;!GPiN!Y7xUbS(`6GsM3^_~tQkJJE`i73jV>IMPi=}RX3V`h&!Dk8 zcey@Sta9-va_Y;hYvbY>I*Np`wn<$Zg{DJ+kz0i8+o9_O&j-mZwNPwAp!iiIPgQ17 z{IZ%Q5(35Tjx2%HhDdS4EK4K=ngiMnwJdJACbOu{roA@uM__Ai+NZON0UiTcZ#HPI zWW#^$GbNH{lJ9n_qK zwB7R&BS^C;_>ULJd2gBk=Qn&DTJ=NZrbA4Z|AIYPL}=HFdkKX2`O6;isHSV(iUb== z9FcqlT6@EwT1ia~o2(m=pmA*zm3NLSS+l2!HcDT4SANskwI*tMb5i~|u%@(_b@La4 zt!j&aVd8q+JD|`F6uW4UkgGFs(lLsIhug(8rtu>L7J&Qux0X2M)62l+1hrl=lEZyA zit9q-!b}&S;2H1){0j6BM=BfrC60c8nVQb)iljA>xQXML%H;ackpXDtxVGE}Zoan~ zZF95UdRV@;dCl}ipwPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS<&`Cr=RCodHnmvnENf3r-{6IEQ z!9dVOL=*)j8jvYG6ETaj6g;pBajiu2xJ5@0vUmf zKt^EP2uzRLVU@p?m6dJu%@+N4r>CdiR_T6sa)AT?1qV`HfMpT_fH4=4G38te=xj(K z2x8df#No*twP8i605t3@J6KNzpnsh?crr)rvxv`gHVF^?PDz^a zzre5Hcd-1Y2UHOl#Twn9R{I!%u0RsN;@UeHx)whPT_a@ zFfJRlb3`47{Bjr3yKHn{Qa?n%Z;b4VDr1yTkHdT6aQ4v-wg@jUcA3&8#vY{OKD@I~ zxJLOaV^)fGdIdo%FKFrCE+*gxN#7B89)1m1k@{}Im7ghn+u<|o>9_%;Dr6!%U;(oX z*Cpv{%#Kv&)k|DV@GxvIr8FCn#vbk^n3_g<%|Yw=EGG5{ovn_Za@B9}QqlJ#h$(P!nYoZpe3hD*DtWJRBJVv?X%UCv=|N0RJ|XA0WqU`w6vNEo|g4N^a6Cr7(>e0E$_y|len zDH{1K^?jxts*%gs$?(fSe+;#fLJODHy$P z`?4zVm}J#+hwf!bKX=4uicyQ9bw5DpB~aIn{9q;&0c5jEO9Bb@t|^FXk;ayuT#=Q0 zS-(lu33ea+5dH{1gOAz(Y4`SMFWZF=`I1lX3S`}X-8up8hnHYW&%CHm(C(%qKzvTJ zW7Q`e_hAgVegI4Iz2EcKR@Pe%BCsC_;wgL}3PyLOEu3)wkL0UO#%U*O{D(uv>9hI( z$8-1-*-`wxqfCbg_!R8X!=a+YnLaCzPW9!p&1JR9xA*7ee^5SOHJ}Ii1#HMiOkOOp z&iLE>l=fQj2kl<-fj1-hfaNRDyrO68O7@Pj6KfN|j&SGK&D0m)rr ztn%MU_zgZ6T%}1C3LMy;k4n$ClRUr9u>+3&+g(g^oelS3pwA@TC7kf^W^H&f+dr0i zDgcdTvTdBC0+60;WAbFN&iBzK`6Qd9d*9~U{-gqlvElD(jkfu=KJ&PYKt>=VkP*lT oWCSt-8G(#IMj#`Q5l9n(Pw)O`u9i5E=l}o!07*qoM6N<$f-~ZHtpET3 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calendar.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calendar.png index 005d52e223f43bc30051d0cad955fa944a861522..7fdc3bab1bbc0d816a009bdf3966835cf61744ec 100644 GIT binary patch delta 1284 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 M07*qoM6N<$f^F{{@&Et; diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calendar2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calendar2.png index 965ac9719b96e07b9d1f145d8dc23c7e493a32d1..9877f8dee15374ad08bb653079590e938d0b7188 100644 GIT binary patch delta 774 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 VsSu5u;?n>C002ovPDHLkV1m~ZdawWh diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd5596339803bb8d1a3a4425fa741059b7324a0 GIT binary patch literal 2358 zcmV-63CZ?}P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@ph-kQRCodHoN1_4RTRg2&Soj8 zmF7fhnUYyhR)n)@^v!bkPzD+nnq@{IS>haus92b0U|Pv5Qqr;li5!s73{%4)GqE%^ z$DGqr`z?L@y6?K{O!qzYom&h3oW0ky*IM_SefHVsyjOHhDe3(A^EGkN6SMfK6tM9>2pt2p!E3-$uP z7$->l9J~xsa2Vw#+!_&7Z|)S)(R!u zLV@=yUb*Pza|WF?BA0n73B8PREzlKg1Oq_1qiH8;Nn7TjI&mt3UVYFPbc~~)N*$8h3^YY9_%P@I z4ts_(Q(1thph<9&m!xYh4YNb3Eja3wyewQc zMTiQTB(2L#p0lzDz1zTERTS4qzvLVrSlCeS7 z{3L37K=S~1g~=x2)slG(I)Kidg;|A=tVp_7jN%+Y=iU%Eg)1WQ3gCy3BArB5kWc%u ze^m<5DWE`q!|xv3Q6Vc*h($(`&cM5?kn@h68-=(XNI^8MgHbuQqqHlM>_gyTP(|kg z?+swlc&%HIeKIfhvR_L(>zx?=DnK3~H2njkV?h?hB}IbWbk_9yJGnc;YXhuHZ9n`} zZEYmoavkJ~;2m@37B=?RBOmSQxMp1%3n^08S?7eQK9W=;AeV_xatjaI|EY*?#9!$kfy&Dj^K+1}C&(NqgEuweva`OTacT1yofkSzYAS!3W?Ja3r5K&jE7BjV2V| zbe7(6wr>ev7KanS?h;5lXO%5B@ZSbO^bUfgOOFeoVAlm4RgTB_aq2d@BbC12l|8PU zB}|qN6l#D!eXEl8eZC?*DTt;CzK(07R0QN#3!+aE$d~%D34NI(Pa6(bhB-n1bHm1G zJrZUwzqWiyuW5}oLP5?PO}n+8>!T>w{7h}&^*7Rv^{x!P!QiZC>o=#nF|8wt!+d3< zJ;Jif@Gy{PElt*=MWO<^0dPDx%6i`?WTGd8b}o8^Mcxi5a$GXMlt-4P-r<(60z)fgoCeKt2+UP3ZSGoXrVzfbv|! zz^o{Gu_tM3KQ2sD-D@r$yt?os~a(7mKZy0%Q*K#F%;z&S_3qFo#pW|bQth@ zFkcTGvp=>pAu)zL5^36y;}ebdwN^>LTaNN&VldtiAdAsBBzLgEr40oiO^m^Q%kqmt zUqeY)A7&}$(ZNTec?$jJU^$2)d5C@Rd5h!8sHCrP@Z?50QuZT^DdB!fpJ@dFF_L8h4MV` z3<$gnBO3%X?Q{jQ-mQO+c4oha_6wf1+>YzJz~dazPkf05`Nda9@CC5GO@bXtvfh&1 z!V*A3q0CzvakGHwx`SY9D%N+PD*bahdwQm#D#<)I^=|GD07s!W- zG0IFYlKf8PWseR3`Fy40ch}L$xdgNi-N#1$a_B|yJBXr7zo>Q;(8r-X6?6n6!BTJp zgppj%uY>H3G8h|_mE7*K5~klt>FDmFfH-s57|NRKRj^MxG5Qkp7*Hw4Q63EZ+yXj- z=YZ@K$nrssa%tP^Jp|U{ML#`0dT)UsI;8b=AHzC8l9lyU6p7AQ5bN(h^jKxuCkWZH z)FkskRevD*GKo&riY5JbeOkL7^axfqje=ICUmk zXmOZQDr6L?FNiaLpcYB8pVT!Ki6;q?q`CunHgaSZDM5|7|FH=bHOoS(K(oF!8nkLf1DJzM%F|eXiM_)R#mn!Zw0c=aTpu`>zRD_ caV$9c7mt?Dp49VP;{X5v07*qoM6N<$f_>#Nn*aa+ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_pin.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_pin.png index 9bfc2da500fcf49074388a74c4cfbd6229640d29..0d8309ae6dabe6d3b034dcc1fe37a949cc1ec5de 100644 GIT binary patch delta 1042 zcmX@k*~~eip`Q7zr;B4q1>@UU`~5`%1&&+RFHn;b@^Q$Wcy51#o3K=`Sc8=Fg|5Cy zle+ddwjA>k=I-U{jf(W}c+t~Z)^<+enEb?yq^3tdCGX1IF)Al(BL0vo+t-dMfJ+N!m4-Gk&G0(ETmecS7k?n`cITmOLj$7HXi zK~I0wOFZIvxc)!?N8h2DG( z?MkmV9&wY5#Kn8Ic&>Z5r+!E7eD<3Uzi?&LAN3biRhHlsYqyft>sou(egP}<5jK&Y z)Oo_My=;Ot4n~BjWm-;6yy>)&hs<8&JNt{Uac&&iuFW_NkR zmN~7$M}<}xY}~}K!{OM}g2osHXU4_1wNJ1bi5TqK+l0)mN8|5G4!sbmx_(a#e=5lE zkbMOfdsybKtQOpLm*bn4h{xNh>r!TMZlA>AAuva5T34-#*qhJ&2@jiA-YjWZD%#%i za>_BY&R+5J0sRc`Dkj$ie_d>Sr)fn^T;3PfQav%-qI0GKo;!Swotn)lu4MjkEnB@y zzHtA~uiKdRJ-Ogx;hPfW^Wvbuj=ukwZV2w~KK^U!8eP{Sm7NxEj2@P)HQO;)U1eX- zX+G|=?}Tk`=-Ex;o<3(5=ke~hk3O06bFvq{y}U^v=E&ljrp#>~Cucr+w&C=(&M#)O z<+t>w^p^$x5U)74F!}xoRdYQVlik80Ep7=Z@9K|kZU0pK$X)tuc6f}%gF~vhpKQ9~ zT~&5YIp_0R_TH!A!<`PE7xCJWG26yIl_{yQ2EyO-7Vl8UqVeQFVuK?s6c=3%3A6L(tb*-k&))_`Q@+}qOSDM$qt58>YZkrlWHNm_~ zQEU=Nk@CT+1Gf+K0%PlLx=n1G>&r$hZwjS7#KWV{an^LB{Ts5 D;ehBf delta 1110 zcmZqXJkB|xp`OLi)5S5Qg7NL_*bd)7k>k(L{phOb$y>^%!qJZH9u%PT%&^*wpr$52>GYX0FfKXe1P-`$lyzxJHn_j#-LzPi7+ zdhOopzuy19TYkU#{LSsl)FJ{DdYM{HnlJas%E`&O_U)Qc$;RDUf5_p?zI(f-hAOZ` za(!OAfb|TkaAWt^i$7IgFf12*v-0$VJKtPqL_U!DklCza%_>!7{n6scj00X5m^W<- zSBaBp_kQ=wp+@k>l&MCpmDQDc`H}CZ-IQZVyxAb%%qqAh^|EYFhj_c&1&PQv2J`F} z+�B<08Fn=T9fx~?zyc-gLAs`{W)fb?|R+Sd-s8Laag({4Y0wz|Up#{RIh3!V9C zQAJN?uwZ!Uv++!a?L0C6}nDFSvG;M zay~|?f0KIhM_9&9+N_t@r7bSN&qtwHt+mPu)JCP(R_R zC?^wZqYhWZp+r{vbmZCvC#UTS75=6ta6LWD`1f4Vkc2hoZ^f}X&C#4-&3tC}(!)RA z{Z^5im@RMfsXSCLh_yg6qf8~qsnc2H)Pcjo^32&Uwb+Pu$Ze-aJBI7o1LUuja_nVCQ@_ zrK<6s(CjEazAWCZ)BB1!Gs=8qr%V)PYBv%3VdaokK0$f8bK=g^D zSvyhqq>{%)(F6y@FLL+a=w#h03M!YH(9Bc6jPv}{Z6EJF5}Di^xO=P4?{jMTtwJh` z{#7a1_*C~LJ2g#t=d4k3XwARvcc0BW`=4XSmZ=ZQuhg3=E4NBFe4ALuUVr7Ih;ne5 z??c9SjFD7B!KUZs#VV@m)bYi7y zl%vsy`5R|FNq8oAf#Zp`!=&E$xD^)~Iv;_th8{>^EdukU@Jm*FlE`Sxmd#~!u} zwfd@+D^#nxL#GtZ>}GG&X<~0|au8$HdAOm8INE>Dngv1Pzr26yUjB9dPz;9@`#lNq zmL~#D*Y}5qZO!S}$P&X?r13~AW7R88)=!R&3mgIzGz3Ie>|ol@sJg)*Dc5e=Z3ZCl MboFyt=akR{0IDGeO8@`> diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_unpin.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_unpin.png index bbed5a69794117a1a060c15774794539df461508..dfe91e20329f5785548cf71d96522023e9be8f95 100644 GIT binary patch delta 1238 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 KMNUMnLSTa0xcUVE literal 2674 zcmY*bX*e5L7YWLMVw!sE&PU?P_ghFjS2ynl6^w zsyfuZkCstdZ3$`}RNK_FLubDEzVANIz4zR6-t(UG-sk?fX%6<5LIN-W001ClZDr zJupMa3?D>fNHCR-jl|1;M_>=^LpMqu@g2grfR}f(b3mBV!pI0cOFP+Hn3ZEcMMga-XGmEjYqL8UAF zP4XWeGcuhN78uG1q)`!vygt6Pa0Xsp{;<%$p&ptFoHsBYN7t+ zK1jtKda*8aa+oPCB!o<55S&P1WHOabp)qjZQ~odbPeB~&u#5lc>Tk*4y$6~J0yxya z_eT(*4!zO@0Qfts%}kslxz;_cueq2X-JoXj`}T5)X9~l3Y{3?2)$|C{3Y8yD^76bh zp48|z-sciMmk2T;+0K&8#49XHA}tE!o|^s64?9meDz2SYG~L>{88z#4Zqm@@(Z;Tf z9S14v5?=Ej{JPfTQgCal1-T$W9?TeA$dEwUG`O9~`2cU|eAT{$aSPXc6<%l=Nad3OG`DyOcK7*%XP`O` z(h5Axj*`T^R*h-SlP`@g9 z$FHbeANmZ+c?GC(LkIScFRcPdTOiVz`rplfUqC&1;b`?>5}b+J9$a`R$r(Ot#%B5m@oB*K}oCr2`^nX=%jik8f@ z2cMD67o~kGxz#$5?266g-oc(uT-oD@RjFG_L;X=8M0=5FQcS|;RGsO^2=DAs;_cl` z7cq8Kk6&tTdceH@uqp%Baj(0}#!f#iyiHkxJ*|Bv5;PZN+l^R{WxFnK@_s$4pisGH zUc#4vv1xC=h9j>o5^wbqu^;Z*7uyl)euPN|E@ zu1E82O~grP9oOPIS~uFgj{?lR5}J%xZ*ui%SBl1tH;BnoYPIukY`Bk}4ey1-HNtWf zMM8pQgTdTQTYO_Z90p!8ZdyNQk{Ly}PerU(Y$-B}ZZ6zgwfP}WH*EPGd|sjJcHFoS zB!n%4toC9uWLj6rzE>ZzrYlrY)`T$1j!vg#@|n?+qGC0mL(!3ipV?))_^!g^)nDkhn}uDEFT!$8c96l{xj;%=r5*^j3iiwYVm0m*C8WQd=d6f97PkBeYz{joXev3r znSJVuG-C4}X|(pKJu$CF$?`2Jo3$%wvM1AERY2@_)gkwxCEdAokCJA7E@)a(zf$`8 zsK;gJF9p^g(?*mi2`YEDm21y8z)m|F_WRh+s9osLr={CLf%L`dT9s*gg%ywKr4&#{ z{d33N!p1OUAth015L}D%c|KTk)k+?H7LF@)HG$AMrQZy+U1s(KTHOnXmtWM}a2Lv5 z;M~cBbMmI%42`xjMkux`%os{JsAkkMh+C#SZPaKx!%>~_y{z?`l+$@0<*ZWBnuR7Y*@GE^ckJ$ z&fSnvi7-ihmp8BederH$0(q`(FSldV-X!>f*%_jCr3(ncnmtcPn{0(3X?s2U^z*|hj(m42TBw61g*<5(@r#6GB5Xw#1Zm7F&|{6X_WQC zU5ldV9a;-AzLPsNSN~=5TQG*fY zAu!0P6iHDQW(W28oa+v5Z_-{VNuBrzdUa~|kBqyy$jAKGm9sH6WBKKS`yd(RE!1bv zn@Jzzvk5EoB%44TVozOe7aXNv*|?~QuDv@KTOPHmZ7{aZ?0Xd7>}ulcxA$ZwWb zlB7^mi#S0aGSuu=JI^#Jf+MmQb9!5g^ilIrXesLfqZNMbwY4g(s^w;hC}fx2F@z z_dn=4q%{;H4AUM^LhBWq2U7b1u2Lrh1WsOHL1a|-tKV9BqdK!<_^UmW%Lk5UVVeh} aKFKyjR}8)xKAn2_JG3^pH)EahPW%ge;H01c diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel.png index 8d8f0325bc3cf0e90b077ac50333c298367e2983..087c0f5562b3fefe3ebd699a099181b25d71f4e5 100644 GIT binary patch delta 1703 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..970aab5b8805931bf724cad14525617ead0dc6ae GIT binary patch literal 2027 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 Ef|W1+82|tP literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_check.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_check.png index aef869985c5f261bbb986e08ab769a1ac1cc3918..5a266d8bc3d768f5447b0b1fc69ab1a63bd5974e 100644 GIT binary patch literal 845 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==Pq0foZ#^i(^Oy zsQ}^7ZA4OiBs_&|H-Z879{j zJ7+AIT)KG$>y*VAoHu_o>ZK&E5msw3Y_?Oj-&e3{o$%Mm>lj-!zg(PL`1#Rch#2_u&+IKa@~wyp3jr^_06kR%FFv$b%`x`*6}}iTUwkB+XXH* z{5tvE(LWqjQcBKmM5VkTI^FsMGjxRSNC(@$j5))53ul>ufG_mato1<*JWAoj%6F1x5?Y64RdLJ|S?X@?ZUrp+cT4$bn z`!H(#Ersmui>lAwdGt`Y@o;GN*E?3T_Q#Z5v8g{;xF_`Rnww4UOp3eMZ|}0Ww93st z{&>UR3EJ;Yu94dMeOYrV+m3CLXV>fL$?PwxTccyX(!%YHVlMy13mbAfXD(7qntkDI z0Mo|&jBPU}f3a-Kkv>$nxTWpy%0I?uYLs`0MtQukwwhB}--#zpe6r7dry z-`4Cd-L-e$wYSntPffmW`EL`m{%Y3gyZiRPQzwvMfGMg{=m&R}_w;N=+YN6)N!ioY K&t;ucLK6U~eP7%F literal 507 zcmV><~ z9t;SIIhQ2fKLr6|_^be9tb%tShR!H33;21jKn$E#U=~BbOeru+_!YiSW>SG!4goWv zz^sIT8CPIdL%@tFFl!-TMirR#5HJM=W&^)6)zd^`18PFmsS1=N>PL_io0zF#T1bA5 zyIiu?EAxul)D6cylFJrGIv6v7eP-P>wsy|y>K#tx%N z8+sKcT;Y9!;<``BGuA#TAI5=dr=bL8p1uz#)?OsV0p{<)I8YrlmY^>1wMYAq-^zN2 z+4%Uqj7{~2L`?^9ZC|JwKEAdY*hyZfsQg$qSTg2FdY1+uh71mTCCxyTZ>K6U_bz+=*A& z?-*yWpSRXi`LlkR#fpT9V$2D)Rj(V1H+j@G?_o$4t$Nm2JTE3QpJjT|zdrVJrA1Hw z2y}h?`C=3MIp(5RNB-kB;+JEjr5w{Q3SOD`^yih?4!0^ilX9m$PmSwlo6IIB6g~N< z;}uEgTNVC`?7NGftzqN+rg7I^^gB3?)E)V{#ot*htRK4 z2Y2yih-D_*?0Og_b->sDQ|(nv2J_!pljD1zWUlNjR*9-Lm9ldGTk0noN7Oxg~vUl<2`v67UnV*R&KmEqxy5DY=`B~FSYWSkC#tV z(98eaT=`Y%t&Gn)hw{J^6Qqwk%mRXwqBW%Nb|f7!=Lhj$h=dYW7=D^e<2DvwUK@G|u!W e(OAXthqYQew$}fl_b*_sVeoYIb6Mw<&;$U6fr~%@ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_clear.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_clear.png index ea78fb3f8a61443e740f09696c7cdbd707777fe6..c1905483e1cfcaeed67dbf373712eda6d04dd7e3 100644 GIT binary patch delta 1613 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 Dvcz;~ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_clear_recent.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_clear_recent.png new file mode 100644 index 0000000000000000000000000000000000000000..60e43ee8aec450f03088a8a93c7ef4b81c3cf247 GIT binary patch literal 1893 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 LNkvXXu0mjfQPmXf literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_close.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_close.png new file mode 100644 index 0000000000000000000000000000000000000000..fda2072959c743f60251bf7a0980ca4e38d621b5 GIT binary patch literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{?475JV@L(# z+gTTLn+-%I)kxWA;~X zm?&y7mxIHBfk~i&fklCV5uI6}6kzdki&1K%-RlQy^D6Ya9&NXMxu^L2z8J6VO8+ArUT{bj|McttC6SH1mHmwjJ!(#uTayLB;pU)of1^S#)+;;ovx z-h`~VvrT->*9UwwJG$#|Tzl>sInN*|Y0GP!UuS<4*?ikFG0AYr+LCg~rh937zLqs! zdVl5gl<9u^_o?(-}d*cS%C!>`&Kji(U&$+jeQMw$984dm}n_ zF!1iJ3fp{te(WW#wMRDBeEp-mBE9zMN5LlP>UGyFweOdF=DK^g{r9fs_syTAnnSoT f;sFsm{5}ulBVE2R-V|qk0ZIX$u6{1-oD!M<>Gk{R literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_colors.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_colors.png index e3a0d0538925ac1e930b35201ab2dcd09844c8f4..0ba09cd2060499372a96e08b672a07bcaa6608fa 100644 GIT binary patch delta 2154 zcmV-w2$lEJ5!4ZofqyI+-hO|%=Xu|D?Q`}y zcfb4Y3m5#~IeYE3{(G%;&$#z_ZQ2}?)>VO0sdO@U2&@Bpz<>8(J~*p&Wzr1MQiRLE zc3{chD5p2Wu&slVT^&*+m%7w|C=!>CUxk~|D-1+Gk1#3&oULbtQr-pO`keP$LZDiR!R zB)Ik+a zSypVvTglPi6?|D?SGl{9MnB81)#^xSYGsDy{Xf_q?n{ck?qE&X*4?Z_(bMPKs`MnH zi}MCIL)!DR62Ybq_|EW^Y6a+)#ZmYDByp{>G34x!;D7Nu32ZU^rTPRM5yDfKHUzI* z_bTAZTX_P;c_8@JB`LQTv2CA+uWoD!e5@y_5qX1zXDHa=;d?AEUyIw5i0)i#jf9pI z4GykRV7I}!58c3`ye;BKz>gS-NOfs70pULmShE3-RKr_SUlJJRN#e5@fxvwSa3$Au z&5fh2tAA*&Hc{)@Mz`?8oH6#%jx`as(cxCJgP{vn)vQ27G#i{|L^ijfp<%h9FQOV} zIIT8x^`+wInFut8y;ToTK>(jMXMgkt`g_1?kcfVmw?VWYry`8-T>`io z>;;x6z-ZS$xb$r0TMeb#n+Wj4T;g*BoDQG?g0lJqf-mK~b5SmR-BF&a6Hn z(p&Rba1PM9y#;gxvp@rIWgUvK+_iSO9aXlgnZSRBJk}G_k}6|p>JI4)py|#~`5MDM zO@CRcZ^5b4OLItBq9a;&O-nYRj59?7k>+t0SfixqH2o0ecJ7uGUcHB<$)9vS0geZ4 zfi=a8x^$Pzox2T*it~!ta)_2^`sW@j&;f4W^+&h(2SE2qD%$PAhrpG!m3F!JVJlLc zBnZv&HP;bz1l->w1F_XutdZSw+&*ZB>sK$yi0UjIHV3mw+pJM9D9(^mm!c?OT0p^nYg+ zNf-KPPtv|PTs>pz0=*De@|0^I)P~8rjb=_y;FndTc|ie0G9sQX;5}f;PL#zK9dWb@ zv?3&Ke6xyFlSy^rI2QO;Wa%mu|K14aequ1>_DDs#FNCM44RN0U)*JCBsymBvH~PWk zyM24FLygYt;GcCQ1r@uJGi0A}2Y-VffF-(%T_3`eX#9O7 zbj{IAc07S_4)95gBI(I?QjCbxdTB4IF^Z(a{)#38=WO7w zCwlia0@Z%m$lud*QihvDUW+3A#W)v-M|HpwzuCYidS5&4fORwNF-R?nw10zfhJ~hp ztzM+{KIoIBbQ~SZSG663Wfke>kU`){ySr_pe^3@rnZx(}BHg9effg-mD-1dUSTB62 zODjX8!8WZ(Tj@X5$3@>UU>WeqvvjyCxjwphdIp^ge0K>2dv~7Euum(}Ci(}seCYau zHNYnix<1X`CK8=m5BnlQuYU{dlp=xPmsX?=^!HA9**_DgaF*x});I-|_%!>LL3KF4 zV?|WfDPXN`6c+r`iloKA?qDR)bgCsfs;?;=Kv72q)%C{riz(1AK;ti5bR7A?lU5{s zc%_fbEzt@~?N>_~bP`Cr-e_(o>Rkf9v?9@ckZeH{^zmmkKi)yU41YQuXy(uoo$J9D zV{FHPMc~GR1~L@bg%(NQMh`G3npef3qkz`0E%^!MC7}^uI|x)Bg|~(H;*(XRFRiCd!a>E+(QC;WK}p3l zA__fIxN=(P7&z*6WU)(7ZqH@Az|$vnlOoYhE6(SkF-5f_sDJH>)R9i1gWz|+f zOYQ(vz_cRGqF<|@`scaVfh9V1hla)!)sBHRq3uf0YXnZ`13f^x@-vFQNuca!6=^Fr z`mVIaX5G|_24 z!5zEB+642FCt6(>9#ybFvx?6H-?NUUM|y=Of$fFhU58I=SkHk0p*%IQBOraErb+Xn zqM5~Wiv)|GzFHjsdV|!XuLyrMAA-9a>;-v6g&h?wkYjo#BGL1JZn>ed4#VJw%6iT{ zI5rYK4(QJ2yVlUPe`-YUaJk;}gM(;6!{E1blGhy27%&9r;;Vlr*bLqWAM+{y9=3<% gPz4TEph*S(0~|n-yg2KYwEzGB07*qoM6N<$g1|l*QUCw| delta 2152 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_14.png new file mode 100644 index 0000000000000000000000000000000000000000..3d24d45e437fd13b14be459afd109ee6e923636c GIT binary patch literal 2497 zcmV;y2|o6TP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS^D@jB_RCodHnrWyNWf;frb*Yph z(XvINpjFyPO;9thK@>%4kOnQZAcdduLxhBWC=>b;L=b%`iWY)sp^ehYJ)?psvRxxH zD>Y3smvXuN{->Gi%rnnBXXczaSG}DF{&(hi-eF8)vy94bGv^&u5z#-d# z&a#4?>gTY4W z8~F3_w>Krn;1=M~^ps)=24|;&-y^4b6u$}X0b@Ynb%=B$8`;W7{8*Ro(@Lb2QpI*U z@aX20q8PMZb2Q)1D3%o9a~!xDXtJz??2-vzXL42mP(Y-!C%C=suwVuQc z`q{~Tv?J@QBCpm1Jz@GD3ijA(9RB>i+L5>})#%i%UZi&$5G-^QpNSpy)gv`OM|#91Xi@pCp<>m`Tm)?i)?YT3OaV5n_?!i0~n1Ae|P?8GQmO1aedD`L9!74?GmO4ySbEtC>hM1W#zXRe zdP*F!4arl+3C62MHLLa%^-FR8F=IFkGx9&-KQyv>?4p1|NFGp6i9@y_dCEA!s20_f zB-O0i^NGuBuD$l)U&*)1j$$(cRPw}$y;tc|H33U=<5=<0yMiu^2NTD466b|ZqdnpY zD8CQ3M#l-r^{J>Ks@UfOCy5IjSz1I(m)o|&H@sL(dp~qI)#TK<+-B%qLHep{Df7kA zDjbHqS5v0;gW4eegGYjgz$)-J(8oVP=aOmc$QCufP=ivjNoEkRr0-%aAp*^_!5n^G zOM>H+Si78fgOc&=6=Zqo?oS$2d|u?6TM?Z`)ADu_Q$5HmtLf-oqS-Cj0X#uGXN@LS zvm=(S&eVU*akz`v2R^|#3XO<}tr}HplJ*g6KvIzERy43ZsSur~H;){J21VXHU|ki_ zu{K3`ucl1xUW3*--kaXXaePXY{(|W%718l6^QB%*ncBSuedYLde^TP;l@-m#U`39R z#-!5<@@mS|?ltI3C!2|mtZ5PV`)-_cfq9NI$+{vPXSivRSCdzJIuMiBWx&!V1YR@K z#u10Ewpu>|+re`ncamj%G_W+LgE%L{B}=sg>-Z-w}38{gxVdm#9HPd`_NBYlqc{#$y>PA$hhN9gERYs)~Z=^ih> zm63!dcI9qKHF~RR>mtizILCU6_wt2$q}p=VXmuwx z9BBQs7+77cg0JAwxU7~%oj>@|6HIf3_Nn#xS=%TZ!DnCze%5lV5xV_3(NpYFa5~Tu zVFy?Z7NGkH$3lcJ`OyCJQO2Mfelot68hLq^AP)nNbpO`h=q?|!5)0)9ym?f$JX}c- zIl-Bh<}b;sL;Bc1zOrByIZ{qQxp|~oGK=JZlSa2KqN#7o)WcnJ8yiyFz^;y5g2)QgN_1LY7Ro z54?9S#66_{+$^BSbtNQUkx%)~Bju(XtDTU`R6+2|f%meBI78ndc@$g)au;aH9HblB z$W}gzkaD^_>8FwNN}f6-qI>&sa7~FM_MxlA;To_G{1t&i$I%f^;ixO`RL~z3r8iKV z$s%xlQG;I5qfwKAwjK@^DfZ-EDYnrdB-jbA1PeiLkzy%kC3i%lwU@Rd;gR405c<(1 zLk*LB%J<09iIp(uwT@GWzC-E7cOuZMiRPE0@%3V%)c-_-VzX2}i;uVw!*jZCJ$Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@%}GQ-RCodHn`w*`RS?H_1w;-J z#S1SEC5oahYSa)E6(WZk3`Z1+3Ge|DqlQG$81;+#0fSMz4^(1=5EDdAP{9LS6;#B7 zAZk$L7DSX&aCO)9_h+XkGjHnkboU&4WGnfn`_-$eS5?#f&Yp^jR%*>aYX({~(0CcB zY`mr$TCT6JKa9J>3-F`1va+(a0R5(^N@6C0Z^6Hy5UN9YH5l78BTe8H!OScqBO$t@ z6S&i~R0!^>kN^v<`li^?>isV_-BrQ{&nUL-w#7CWW{=0?T@-;!0%#Ac08h*3GeE@Ey<$SA3VY zqN_F3B%mQW@JFN4o0OMGb>=UE!Qgn%2TTRqfseLP(X;4D!srve7UBO4F7Y)=U1xALcoM7ydOg>Hr$AMR z-ucu^N3#2XM!jX=HJ~J#6Gix4!E-=U1&h9id9<(H*nEslv06#-^ptdtZL|yu_%#Cf z`pS=}3#Jvxy}`&J@DH%);pCRfqlwe~z$VLic+(2<0s|evMvw8k3o>3tW&H08thw4> z@Ove81?B0$qGuBuZ6rm4xDsd}acN;9m$0I&Td&qq_=Uf_iM%RI3BP9mi?kISkFfHJ zVM)t{f;Jgt~Pi%ELyt|rY2tIA`<=pAjgj28jDI`Tid}d^>rCJWgM}V7FN=-bkRE- zSfc~%98$-vJ>^J*Y|(9Fb3%?+_4V^Z9g@=^=vV`NZ5f0P@6?|Pv=!l!ruO?mom)Y9 zZm2Vy50@U?WEnZ>RH_bv~UiejSy!g$ZQT4a~R?Zhr}GyjT6=z&epU*{hVQK<`4Jqm)e2nN-f> zEFQ@B`HSku0r@28K1}Dnd_Jlk8;1cMTf1~l6nz<3;c8Nz5=9xg(ZF5L1%YbH5G7E= z4kaQ^Vy#_5(`9V;R|5`dp&i;^ri~$ZzoV?;hiQR4H^>eJ+Mz3itZm;zEn`$qQYPvA z&YJj{o+7Ic99(+c6tsKpPa=Qw)Pfr9&)`~AqTMSnxYRH@g!Ur$v1xq_jsg}fNDDQS z8-maXy2S`)W#SMprVh;-^3_gr`us)np2c$7pfQOPBt;DN2G$vpI^8=8GF~QS{G0(S zS_0ErO~msIBkK8mqtK(&MLwa3*K%Rf_|+E71{VDa^MrgYcsprV5n~U+^G)TyrEUTp zojUa#LRaTt!+<(vb;#Nh(U!z#=+tvH2|ayisl&Yfpf}h7)`Pj|t>)?_bkC#md2p#A zR0nS`HmZ%fWGougd#n#OeWatE`Cu?O5_A9;gJ*%Y?ty*iFHKdhNAT76O$IxGk90~q z5@fw1l+OifQ`;UsDoy`MYjXS%U#kiETDQ#vTIikyv`qN~L?x~B-Ue@gwGotjZ-M(e zB`@QIX0g`ic@g|;G!glGbMmNTYSNehK#X`+D0|8wt8>Yd@+UA}qq@w?~lNmsl%v!^ou{_nD~vi!VkQ(Z3y zP7OxY1uRn#Ni{}}Q$^?PRw^(=w(s#`3V8BR zI|$~u^(cX^tI^sg4pMr z*Z2$klp>#+cjelhRF(T|$LEz&yv$Qa`@-D(MeDb9-8Aeup_3VAw^-(c_aZIh7bcyj zbqu@zY)_xYYvMOU);2gjZO_(a=d5pKPjFrR-}Sshr!eb*6|9c4uDhHs)N(bKx?Lq( zc;n=Jsn+l19p9I+I^L_^=HB48!uz&P`JMwu+$vrjtDA8BAK%7r%G_z+uFOBW^Tfn& z$=?6xew$!8{S=kd-i!MU3jc{ux}>kV*6P}&o+T%7GGdE8*x(qqMV8Fvb*gy zTaMLEs4I>Mt6jQs!e0fRr@t5Y)i+JAu5Y(67kZv(T=#1JgyT|D6z7cnB=kf=Y zsmX7hwB;S&X)t;0d%Q10MZNo+_LKID)5E4pZax`Mvv^tpEB`){l)e==DBgI=RjG`)78&q Iol`;+0Ei2+hyVZp literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..7628cebe8453981a70a53b537f80d160430c0fb7 GIT binary patch literal 2131 zcmV-Z2(0&sP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS?y-7qtRCodHoLz`jRTRf({KkYN z(@06AkC&9R2aODkz+S>=poc_=37>*Mi^7+r?8S$mP%1Ng=tY9)Ap>7hLU1S%p)xCr z5Fbi|%FMnfb)0_x>p64JS$mz2d+t4Y?{pXZ=bW|nTK~P*y8G<2&zZS1FwmEN1^N}} zSK!)JV6bf0V`F3TT?HNitHA;=4@?H#ETatWCvX}Z0v~{p!NI{Xj-3&Tvj%($CW@&XFnhG-WQnfdbznZoou1`;tj|+pjK-=l=dGjV)+9&-wLMImrlLR8hez3 zam;Z($;#2fyofksqtNFU2KJbPa&q!KW77y0C4w&DWbaN>vi1p((gS$>)af07HBOv z!l(H&$LF@?pm}?M$p)jZg2k2IU<6b{GHuvKS7+5K&kab`{$$8urY#l3-*SAe2 zxP2=qaBA~552Y@TgJ7EFj`S}%9tOXF8^OI`3Gn0s#s?VECthPKwo17w$Vw}nT3@)d zAZM*PCuwsZ5V7A6)b5G++FrOlVmtmouM`xpG!5`Q;c;Sn7hKo$4A0aa`EdwjIE-k` z5-?&YWT+IB!wR2n)mAh!a*GpF$`5!mX(aZkdbER*UdUA`D1#NQd0^DxbT6w68ZGeN zJ1X&NlUZ4uab5KSt#t-*yh=v!cg7@klP{} zKLoQKCvUutTM1K{s^X(rkaekS^SZ%*4tN>-4XTLZ6dyc)Vbg~6Tj0rIjPA_#oV~H9 zY-NM+dklEHWKnENlA><}=he^w5zoe$pYvJ3`->EHbpm+LaE)*|Sc!Qvk2XMhmNQLH zdH&cg1Ks6jf_Fe2BHru4fei8=urJISyX;<^^$+g(3JRQZ_6E4Wg#QaR2K^%V9^C4* zB~9}A9Q+8hR_GGC87u?0fIRt)MsLme75gfN{dHb&tGPC~6l5i@6Sd+0rj04kf2VyL zSenO8`?APS{$)kCc<;$S=*lAuoUEZr5HWh3c+ZP$kq{|;@<5wgXad^n% z@N6EL=a;fo3W9;S>EI(TKC=D6@zGRgEh>r!;_*c5-s7!MdL)JMm4YHxVi$r74u_`w zioDKge-J#YV}aiae3Cn5)Q0@Y&l~b$ZCezVI#{1TPkBd5;FMv&eWw$zt$@BElqt0D zF>!k`ooT>#2zXnJH}c|ao9VNmTAx6#6a))#v%x=3{H~yrgaLoe98Zd7(k>@Rn^*6y zmgup0>cj_k@T!j*&0d;kT3@C&)yCO5er_=~tKMY|k)CCb-Nh^Zr0A_eTkBksOy`{} z(0WUbzMH*>_v@OZ>laBSah_#wxJ10W6aMk3H;%Zi{bQMFXL})L2JqH|+$Ji~AZsRtX|zu@iS{oV3IV@ulu!mWsGjPTz~IpQk%nC5JCWt=+2KEcU1(LlAz+aSx*h#1V@s*ZDP_2#1UY(ZkiGzG zrsPz|9-D%<0&zo`Bizfu$3Tw}Ixa60m*bN=9{82ZW+y(#-7Ap3S8nBQ z49{C*fgUV)o$a^4!!B8RsThBgiiEjwD~}` zt`?0k8mqn(cmya1Z`_-s+*A3um6ivj+c|7Xc~4wr2gP~XOE0fLs`6gY*53hoopzaR zALD8L9}7@XZJLI_jxI~6lfzMNnZ+sH5tp0((SY|YVaz=#%4JQN0%TrdHW)(rt^%4> zIxYb7fVbdb?i$gRpdGR{fg?c6MrZ#$4upN_SD;^keg*2Nz<;U6i)0V3918#d002ov JPDHLkV1jU4`%C}; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_time.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_contacts_time.png new file mode 100644 index 0000000000000000000000000000000000000000..af5c690d2a5e34b0c00906d4785e6f5df806da2d GIT binary patch literal 900 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==Pq0f$5#6i(^Oy ztp5e3k-So_83kpoS)24CH#0kGsoiRl07j;B~I-*Z_1E+ z^v4f{WtXkK7BVy%J%2Nui?KkqONc!nIg$UV`-^^!?#j|f-1cp9&z?@(BgiNy07s2m zl@HVid}01#ZDPK&$=UrvyLPqVj}L`;AvXVHbh!go{#@|l&$)mN`!4?pkPh8m&LBF4 zzw6xlJ3n)i_GM4preT#m;p?6q-g|DyTKttd_5awOhFLNu#c#wf6u(eEGbvx=x;sM} zcNNoL=C{Jz5~G>d=LK+-i2o9{3b~QKJdP~`WJO@o4)R>4~OyjJGt|0_2CwzkgPt#mp2U9p+)54YJ{Y}J=CK2kH7T9JF6@lZhY zv%utxx_0X)Awp@=4aYWT?!2iSVOPdB+U?&^6yzcP^4=ZTQ#U3l{w0 z`;#otU(U%wV7EL((YC>kj^~9;` z87>;%Eu0=RfiWU}*WsQ(mlZ8D8#k`VaSMviJJBPyJ7xYZp;XxklhodJ|C$xg(s|xc qX$R|t{k6LkR{F8HIG`Xd#Si?y)jETiTjPI$a)76+pUXO@geCxysf9~_qwTTHmCKo8uni>f1x=m+HTT=v~P|}Js2*ee#y;qn^OP7Klnj^XQA%0iPzXJ zyuJ~?pf@?AF#Qml<@u@0Z%tcyHGIuCmDrGTr@7~S;jeLjA^t^tR?sh7Pv^cfmi5|R zPbGe9RjH~fH+LO5MB0iVk*9XT4c+&h$iuf%5A)0r!$;ygb!8Yl&iF zxixiqX!@ShJ@Qlq_; zL0PyW{+Y%>#rWG%Do2HuoRyr~?ckupn6`V;-aOgctot-XcGkJuD(?=noWHSNe$o9! z7h>04)ZMjyL3y)5llOR4$gROurB1B)%@G`!EZOkPkO)oiL2`WEgbtkZdv%sO2#8}w^do>^Om9; zW|q$xy7qjEYG3q_=k}C&B`Y17o6Qz(H+&vb&k}li{X?CjCjuRpsyLfjI3BxP+%!j_ znep&j(I+gDJQ8{971U2894M$}wRB`-Zo930g40OC;7**Q--Lq=55I90HSw_VY!9Cx zoMMo$V=q>%$HOM%?B{je+?vZ)FYkRpPWi8iY1B@!+h@G5e5)7#SO2@^uE6)i$At$^ zeDJ$tQZprx#WP2-vp&xBjPZ@Ujq7hDuvbJr09v;|80w-0d>oUM85W-CyR7F5a(&{N zK*w8bpGB_)u6zopr05>qWMgRZ+ literal 739 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2U|Qwr;uumf=j|NZY!OF^!sdH}9VQeV|F+C zUc+F+GHsb{VBn5j^IR|ZKF};UDS3NK$fT;v^Oo>Bsy9AA@b}1#q6e?eS-={ihTY`K;L2T<>l? zec*bUQ?}T9nJ0Uj#FSFyc`UDLRS8yzi#Yj;d$-*b4SyKJ@l-D9Hy@|b1O;YFi1iD8J!=jt-(B7r zeqphqrnKVYXATpLWx3wIvuN;`(8wZ*AfAYcL?`avcH7LOHoEAjetz*z*4oY~dnE)@ zq~|cjSv~GC%DnbjV_GBo*6(@cdnVc(+q6CDoqO-z31>EmO^S@+JifF2hM(6W5BD#@ zn>Nng(H-i!@A_eLQ|}t~bxYIIp35a2mf^i0HZ`(X)Z${}nzIIq`tAEK{`mZ!H~-u! f0jG{g)*sv^R`QDid!?0uiI>6C)z4*}Q$iB}`HMyi diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_current_location.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_current_location.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec8b993660783a555530cad981d9547a4d2d1da GIT binary patch literal 1667 zcmV-}27LL6P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=?MXyIRCodHn@x)xRTPH1O&~5J z8bl?@Y8IM>$wq{bRd@dY2?S#pS1}^NrHd?F3BoJ_f}1P?67&ZIj09&pvrt?ZTt#8B z3Ze$o_?3W0#qoJ3RZxBB+`6YKRo#{8I`Gm}=bo?oR@JRrx2gw&UU~+41{Q&V&CShM z!CHppMd-7;kC1W_gmTgyV5b|x%%>qc(siNVk9463YIw$|!_paM?W(#$P`kZ+fapCz z3G#-C_QsnTTa@!K7=!1*A#e=r0Y$mT&KF<1$?wh*kpf2G68I6+75OU0 z2+aK8Hhxsp32+MB08NWxD)z%k6opT~m!NG?j!EN3x2=E_y98F-X2poFoJ&pjtI^Yw z0>>1189Z5`(7V{)0zYKGa@`LOWWRf*aLR4$US=R)ciPX+406tbzd=g=!azq`_9CHF zWRuy-N4_ah4QES(&a#nWc7Y42s%ifgybd0#Tc3Qh7>bn=)wHW_uEzW*B1O(G*qj58 zHkDMdvY3ipCKsB@St|~e=`tykD>Uw_72M&Z*g!eTWImT06^%jJn6pBAqc;JIGvxrv z6%*AswtQRDkx;ktpCc9hiGI1YT)8h{hAA=2WCxf=7Q(G^x7Rnc`hKf4HP%N*+Y8-n5 zB<(l~7sJDt?I+iB6dYUKtvmyAB+WLpV(m*7en0ntZQl147d`&oGw6^J>@F*JS_SmT zaf}}K7&>hfOEHs@)u>g=P^>VpQaJZ%`>LwCKP zzsa@+>8}bp-zEdsnlZ@T@p*5}gY;D1w4APxU#kS6ta<#yODyJN-7)r((R&tYHv4-l zcn!T`DP~f#8m+gpR-d-T^AZ$0onP7((NJ*O{)+m%(NtG;K8xw`kJT9KlPBi14M$;N zA6BQCi0nbo!Y+5XE-_ALefDX_fF=e#hAh%JPRr{&yk*1yWF0wS_HvwA3C3G|=8lrauLW1x?d zVzRg&Q02tIO#ca9PDbn(lKPK0W8_E=LAxC!VY2m+gWi?9UsZ>BI4{phwd+# zGiP69aYPP-G3fu)3kgYqv}+&~EwRpBTx-&EuX2tB^aLfy?+QVG7nCZR|v9R zDOtL9+30F?MrZx+^*x}EGX-tW|No|4BMeeBUz+*Uqia0$_3R`D{s-h7>tz2SBKrUU N002ovPDHLkV1jPU1BCzp literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_data.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_data.png new file mode 100644 index 0000000000000000000000000000000000000000..dbbd4bba9b0f11e0715a8fd6d0b3e35835d2d46d GIT binary patch literal 1833 zcmV+^2iEwBP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>lSxEDRCodHoXu+~P2_hlKVK+jTU3-r9d9;i?!Dt(u zpr5HFVSmyNTS&?=bQQge{*5*z@+F`0eQa=90`vm9jy^&|i()9&Lhlm=$Rp?)`WS6n z6jQN}^fFNZJC8m_KU!dO^gVd*MvZ*4%aK2Yb0?-)UE5YJdY&Os<=wd{I;~QvN zZp5xHa#3S6Rz7?pEaPZ=XDuL(qBnhLxxR_6p!(CE5&8=g6dxcT&X;`pMA*!jai2ks z348+G@*up=^>=&#uqmCOxG(ue6{ARm@kD%F@M8ilp*sbre&pJvvOut{m7vJKVxfwe zC&IcE*#~V2q?uEcoI6~9t_le3r%I4w;X`XK#m*C94m*A&<{X5*+Gcdx`@x(p~`Ov`P@Dczqr_a+EO zvblp=JMU`%(eApJ;;>yaz=?})=wAL_0~~#XUNC}e0Kl46hG}M zDN4|L#)x}N*DsC!L3BCn_YANW*QaJ?f|zo8z`klY(x3aGi^XBpan5iv6NJ?WeIaH2 znDb9leM3AI2XTpuxQ^l-(Q#gamLr2$yU7&oVBV_mNso-*9aCP?KdA?0hs`5W{}+muX#tY5J<0Y$OC=iuAuq))AtAZxZ{GTS5x zw|ILWpLG)fy=;QCHw!8x=?4P5jdnScG6}NoLDqWbRM6}==SmVcW+mxO^eyyd zcPT{k0Zv~{IkvbbO#pZXO-p)nmmD;}GYDE`HD|n37^t_Wd+7{uzUUo15Cd^B_=$7o zt!w5UKzP(HUhsy%`C3lqtru`!e_a@WKd-oRZE8F?*Y_6>a*|Z5 zXme^%6&!$DMV*$2Q{F#iiNrIdB-Ph%-cf zz}rX>XC-U|&HFAx)ug?dNy35(lO;DRk*;D)H0@)ytf=(WE+nsl!DkDO?h45T4gkJS z5maJZZ{g)*UvOP9(Y(J_TzdNXMA%OeB76i}asd_C5*19gwwP2b)GE@9u;4%QAjYV* zPI5R88$GDXe3I!)3}f^R`HCBBJ?!FALWE`P^IPV6WB*tHKw5Zd`=JW}TTiZ9F2mh}r8oLMivPiOYPZ^=wlBiW3q{`mP$P1m)$12sZ|j-E37 zhBP$!2T1hLp@ae?kZ3_^ktiTiQlTV#Btc<@IMLqAWY=DM_jXTy(#xIg=Qrbd-d*2C zHyC8g3S zg1>>MFy@&ok+2|EKBX;9!p8Z(2B^Y&PTkAuBvF~K@q5y#ma6a=I2LOMeNW+6rb>+C zE{^d=hUDmMEEb|3B44PV7{jNuhJN zFgu4=mF=r)r+>;*g;N~2_l4rv$a|2x2!9FxMWP`#lE^he<{!o;%Cn1n@8LI9KHKMA zMI?NI$q#IT9=AVZ6VFxg4-x1Kl3lM#*t79zi1f3Jv-c&2Bp=HX^>BJ#ha3zu)6EWa?RgtUy+vTmhVmuECe#{C^m+!gl$Lc1Ov_@ghI+Y?q${ z$IFo|w<|$88dy=3qOFwANIVMUts*+!@4?R|hN+c~JRBdq9NAW#WFhAuo8JPSMnKRf zbek|?n>@&;XqInr?8Nsm0(}=*yCjgMr})~KW9=A$){bR6`1Vh9x8B8XA+0ICHs)A6 zMj%y@ynllV603@+$`z)x_Ezywd@Bj%9aJGvYJpVcDkwBEtazwfLM3>NKx)f&Qgk=8MTAl>2%{zF!wsn)3iE8Z`3_SM+@WxQP;P+4;URAX)0XB z&l@~y2bBn{57&SCbrcZahKm!L4nhqw(LAk`Zy>#Itr+Gj6#Ttft{VEIYK<;C~O{ z7n-2Nye>a+tdY-j6S%c8=%@;>fMc-^(f1mDdwzoPzKdhL zZ_LNMvu~(0-$K^bQf7w1Yc>JeTPZnu8;gmkSNT#3VdPj60_~;bXc9Z$WKilDPRx$s zuCjfhcBwoe9Do15eJ=R-My^3_8U7yrn?zG=B#~>Rj6aJll!yE|k7bq5_C;5bNiq1b zO)$glO)TOkA^s@>alc;+C7hxA`w-}Qh;Q^3L!!^2WHWX@YCb6fy@UXpaC;t^Ff>peis-1#m99>keG}8nMZCpJwX#kr(;#V1L*xKL8TkHy$K=V<1LReB+y| zI|K5*kB;jj_~q^xj7K65#|Iz(ZGZfT@pn?rK{ks8yoi9LZ|F8*!8Uo2k8hT*e{bw{ zjzB*|);n8DiafrXuL>vxmED#67)V`kfHdFYD=jjXr|9|ERr1rJi{{b3BZ!3JoGYT|UAXOPv z!6-6?f)xJL1X94Nf`#TDl}6#KLPjOaT|r79Rlz7Sg@P2m;u!^(E0C&;A{a%cP>{k` zJfq-p1yYq!OFW89p&*5?ct*kH3ZyEdDi}qkP>{k`Jfq<3fhuaySy10j)1^<*oM+Yw za(}1O-7~@5=QK~#>J+`(^c0;fkP}4hZ}l87I=0eOxQbsic-9JE#Mim5i=hMxes&*`aY(~M)VfjVipTTAEECB{2}}f{3^V({X)X;@K5l!ST!F@ p1Jry~fvP}Npej%mm|X?_0ij$Vi4c~)`0@Y%002ovPDHLkV1i}IExP~! diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_delete_auto.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_delete_auto.png index cee6d944ec2d64589558b2ea17b066e69582ed42..52bd6cd66bb55368c3ccd844587912cf930f0119 100644 GIT binary patch delta 1744 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 T*n^an00000NkvXXu0mjf9nno{ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_delete_old.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_delete_old.png new file mode 100644 index 0000000000000000000000000000000000000000..f61d350a5db0ab93097099d307994793591fe0a3 GIT binary patch literal 1022 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{Jj2t)F{Fa= zZM1d%6$gQH%#O~J*>-tMyrdYYu*77_!e!k`TrRFtm$?39{nKIcY1eHfyTezMGY`zbp5Y+uc8V=7s@VPotq>Ku9Bi0>(q=_4*XOnz-#!dOuX$&z09c)_A@3<<1Y4wE;QIMrF|(XZz2& zSgkPmyZ!GMTg>&6ihu4X5}%*UecF(h<&RnG`(Bkb(!TB; zKlRzCOfmVU^__*X-8q+7w7XC9+D`WmKCT}B_;%SA-(9`3H+mG5JrW%ZquC`LxtP0d zTAknsk_b3+&CzYbp@yVwd`3+oY$BUWCkQSvSTJL4bB{tRYgaYh6~FY&}tI=yarb)uR4+#kS(wZUMI{ zdHT<}2CVefscB{IG-#S4JkjYw=b7GZ&*G<5$p;t29D2=c(z?Lez43P6PP=6>7BLmO z54UYrsaH8!`?0iK^slin`@xRDKkjp+nH&}i-HG+Mc)IuNt6h3U39HQhXxe@EshqvP z&*abK(`P@IG}nHWJu&U$>?QLTaxDJ7VAqYXjDz$3Y)?9IvPpF9?z8`7KioLC>B1Bh zg>>Fexd|$Q=c7*Tl91lZe)15*VcVC6PZ*zwJz;bCCn^&>m$&ZR!|0#YC-k0F=1&*x mx(!VKjL8Qi4A_39Kagi}y>Zb$@aqat-t%Ab(@2+s?Z*{(OFPv@U$_;#r1T)RTWyb83iXeIT#u@b9g8&m@(6lWr;w*nKKGZK^z)sX#$Lz zEF#9n9StH(T{9(J9Jm;dp5akaXl+PJV}oiFaoC^sCwV`st>eD+`4>yoTpvx`5%tcd z%dL36X7KetDisOLefJiAHRAjKawg-k+(&Eu%Jeu3Pa9gj7WG|l!%ZUn=#NRNWh`fn zWjaG2O}6;_R5zZpBL8P^CI2o?4%PRkK1qKTn!H#`(Xaf;!#j(U=D(9z|5}gd`~{9# z%auNQ#N7S!PnmI%o_mPZ1=cTIKac7CU9$hj#s>?|IWeg?prg<357@nSM=&TWo(H8^ N22WQ%mvv4FO#tBAEoA@z literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_discussion.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_discussion.png index 74975993efc7d9d4cb5c9cbb8b47098e79437a26..e68c9da066ea0dab5913411e1f5ac6869a522df5 100644 GIT binary patch delta 1790 zcmVsWb-L7J$G3WY48F#1kx7ykgwWL6eMSW7eN+@!Oa+vPx+ov$sSd)F$iLh zLhLor9Fw31;~t8ki*-uodWKK!fupsQV#-)z|INS4sic1a07_j3nKZ-2DlN(rfe4zansu} zd%^K?aJUG&qugr;m!!o`whKPwD@w$1d0HH-T^!yEPDC+6uSelx+c*WKd=-3BSP|EI zQgA)qB!7?TEB99t86rIS~&r?wp5wmTw~4w;AA(-t5YQq!?-vAad9H<>5NGj zo&&m^S9F`f*)jNMQbk+}oG8YLVwh8LA{gB?&edtf_Y|79)Rc%55H}~ADoPd)dbXYX zhH_>_omJ47xB+o=Qkk(5%UV7hG#)fz(@eLfMSmQDn_McU@|PtTSqGdvT+^8uMGo?h zxB$?t8&$3JKQW*w{(r{!*3zw2w*@h5HE}4m3lcM<@oHoAB)V%88?919aR%ZZ%Id_F zu(T(%#&vsQgH>)Q?k1i+iD+S{)fgK@cSRzDHPA@hfno@yHHu!bJz=+Y*}^`{-Y8?W zu759Z-(q;WScj{XnxIdO@w};A43P=4!O{OF1Gj~s-Mw53aV-p=uR^TFI?LFYX`n@E zD7|BA<@bufdc)wjwu{)PthrVBFZoT$IOZ-E7jxvn-K=pYIo&k6ysBI*c1;=8gWMYB z-@InS@OH7BZ|X(%pmR;-exu8)s?QL2F@HxU=%_K^9y?Pl7pij%%Oge?nIIkFg)%Qx zRzVsoYhugMUsCiekE`>;%aGhTQp>9DWOG=Bth{SaAc}fs^OM z`iZZx-UxnhUeIj>#pY9q{g%@ZPU8F-aIynsvNu;0DGV+E?jryZcmtIEfo7ENQuX2j z-UUwdJ@u8P+Kg2n!)?HgMY>lfs3JymX`dwG%0s+0H zR)If8lL`J-(pF_g4ri|i1az6{%o=~1+dK!NUK-pQ7A0;;mdViq);;4z#~<2E1#7?t z@B~;4V!vjoE5A2^mq7<8_J1gGdsx2aU;UD?EGg;LjKllz_Icn@n`^V#aB^o&nq)5J z{+l2?x$H;xBj^O$4<5lO{?=Es`u&&oj`cmjVi5PoFDI$19f!4W8l=ol2v(EAP&PUS zRJt5|6jo00TKhcfffAa%;CLR;>Nk}8N3-GP^+1!ffv{pq*Gi21rGJu`DWij%;O}R+ zA8u^#NB0xtw9k7d&^+TRkcIq?laE0=k5X4!4r7f$BtXZqJ)k)tqVb|J&=tGey1#$%{2eD*^(aMxn8&73l4?3#eyx(@O>@>r&4^Jp=U& g)H6`eK(-n9AEXSY@0efb&j0`b07*qoM6N<$f@9J-egFUf delta 1702 zcmV;X23h%z4z>-DB!2{FK}|sb0I`n?{9y$E00wPIL_t(|0qvVzs8m%H$Gv`JR(_SG zWgl9mMm=PZ5*d|c83s}sAxI%Tgw;#nOGpHf%Z3QvwzP%d++JjuO+Pvv@+1j zKq~{S3=}m3ZH*${)zvi^-&cYO;6iX-0*Zc}3HDI7gB@*cZAU5VE_F)~3Au#mW`bM5 zbZ|B34`Spbm3{!5!6vYlg#AicY#}K_!Qj9N|Ecp))Ez$y?Uzfoy5m=7+9Wv{wP8?}{<7!ju-u|9IC2Z2f8+X`&| z=K3pO3W)6mLB6t)*pf}zE+^tPDQGOu3pkz&4whkegnw%knO~We1$|D=jO%1 z+Qs2)a4f_K{p;Xj+c*cMd?h|9tcdIE99;J_iKA)Ykfrfok6O^PRedyYS^z@5TAZil z$^-`*bN&EM8h5{!L=CZWu>dxC6zImZ_nD%B=~{GL6=;&a%Vk3!zH5uQOy_tf#8=HbL(j<3&@s7=j71!O{N) z0JqjM-Zm(ZlDNjF@2@1*0nuU5V4^XiJ*qw-#J0!8H_-(by2Y+BmA^N-qN-dhF6Q9I zoqwA=6?SkozoLu9#T-nK+dA2A92HgNVsSAC6XcdJ4i_~WhW8<(b1?@Kbi^3Y0fW9G z=a@ij2M7()2aSQ;b|;Llyj8=E18rRPkWhl$BVDI6`ihJ*f$TN9;4S7};4XCr3aWFf z5nH2UVG=b6xTS%7b_AlC)n1Xfw8EH{qkkv{I_vfp!rjbmdiax#{VCn0&vye9Pv&3V+>R$4y)}_nI|Ebc&+g7+cY6 zV@=Y4SeBW1I?$E7lfvw2_zXzPKPYqnvrq!(3BWDkEU7vW42}keL0aCc+Gv9s5`Vx) z=^*%i1dOSP5(Zu}hNZf#Cc|}X4A(h<7?#&e1H$4|*Y;5o@dJdN_Fqq~+794Q9{~GQ&Y=IwG#xZhkNWSCviR z=q-6n$+F5Vv#$Y%k>FY2rXk%FHG9tHG+Ct(aHJ=L<_~GPy;9pOuj70icz+%^E~VV` zE_p+izRTLe*?pznlg~QJW*3{fjd6VpcoXQcy9CSt(f{+Ju1>Aa0xQ5a5F_tW$*nzi z(~2s~24*ZgVssyd7MmcbNB?8sInYhEd!W>~pdHS3un%ZWSmgOKB!A(HNO``l$Px3q1oZw@UvQ5goC4Y(_3Hk~mQ)(cy zg|_;eq{>r*P4%?vfKKY4UsCEIQzy{=xq8NrpgqrCg8k}+K+Xbgj|_E1(I7pqdhZ2k zNszx(OvV2d^j@Yp&#eUsuXdUQ`v3^_B25(6f)~J@U{LKIo5w=b7$mv`KAGY!pakp! wKZBi&4ZA5@(#k+910Ssnv@+1jK>aiDFV5HCSZUM{(EtDd07*qoM6N<$f?{|pO8@`> diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_download.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_download.png index 9a7fd7739d0775194b30073123180856e164835d..8a5ca1e1d05a666f7a7f10c68b1ce25b87d5b9c0 100644 GIT binary patch literal 773 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==Pq0fhph9#WAFU z@$KwDzrzMRZRQgynx@MpWLzrao%cY+THO2r+ihY0ImrdhAB|c<>bh0C7L}CkD)qg6 zf6`QwPTAkHulu$5sfh?FFhWsAze8wf@e8(H_S-&xD|@~0xw42!oSCi9;=L0ZpFX(w zr=0KY+iA}$XKmjz_v#^)Z#Jz*l4E1;mu$?O|4l{V>18DarXUWD%WKG_#8)c(IcsZo zJxb$uT#3|g{RL0wt(I+ee*Bbs@6@SH+qtYHw`tEfS+{UX>AJQPPh3pIjF;R9Sf|^t zL5J1-%y+ThtJgX@1l`jV^zhc5FlFJvG|t^Sisr0-q~-CBvGm}o2{B=b)m#GC<~Aw+ zj{PcEp%rGI&arFTBqxJ)?`7TR7JuuEiT%GR^8=sPjb)4SU)euhy?LXWXG=niz2Ab) z`#0PTukSo*p^+%9Hu<&w7Ts<0Cx>tx`x={MSvSWwKPtNjsLg9q*zbD`o~&7(Ml8Z# zwz^lo4K@^YznIMC!6<%z>V0F)i60*xD4ah>g>|jB6|0h|nU95dlSz(6x|0<9oVE$a zSk;9uSv+)^U>97T-1Bz9;p(WJPuA)xoLP{6A$~>2mLl8Dza)-YG3;!$^Rn)0nW@4# zfdPyhuCtucU;FTT=N|W8T(wR2N@XjW|JEmb=8JtCyLawYJN5~4!tA1D#rNcKJLq5g zQN(bv^84Pag$G~nV|;N?D*oL5{WTGD#rElG_sckBtL$q%Rlc)dsnGk+B=%Moj|LcW bQ2f9?Yv)PkUH(ivK}pcl)z4*}Q$iB}0tGHM delta 735 zcmZo=`^Gv!xt?jSr;B4q#hkaZ_h*YZO0?a-I>CX1t4V?5yLm+BWVfV=Ub{mySuT5= zGD#|5Fu}eY8j6dIj(e{myP zW&hM;`Ae+|XLwx*KhM>kjmKM9 zcSb4PTpw{Jf70uTP1mxX$an-deSWHN;;PNbaMMX z#dE^ybxP@*J1cLioVdD}%ku8BXF0PK!ug*bxZWvqOyj@k%vlR!^i=*YztQ@H(-1Ar zl2}R^-kiSMn3LG6Qm^h75pah8=%?DHxl7|kTtEEXVAynLsxbF+hYN*)BE<`(kJlW% z*E?O^`ra{?F2OGh2c)kzPV4%q`SX4HgrlHT#iN|h@Q0Bp;DB%yyUI)kAn@j~ccTqJL!={fS+d(&1X*NCxGqaw@kIah;|}B+_M->p4$3r@?ezM7dFM za3ap*UVm;RIDzKIoF6%-yUxCfIH2OMA>uNFYxxIC5?)80 z=&v<5#R-2QaYA!F>3Z-hvL%t8kpDqb(e=LXmsPHj;)c30No^_f#0`)xE%*AMJ4Ueq z8LV^Yr(9Oaj@Cx|psuaP-*WWTPwA z9)A$kd-SH9$|DSepL4)aaqgtx(Xq}AE)p1eP7>!-)VBV;h~V`Uu{s|7gbdEC;)K+t zilirQC+mB9MVAB6++^3iE*Q=i+_uFD4JuV6_wIJrahz#`*-BuSY*%LnH#mURwKyUD z;C~_kq!(N#D-D$WDNwE%q%H5=&I(@N;sh!sinJBLqV2VIEr`4bz8?XE-QIUD0EQMP za2Ql1K-?Yee$@2YyMP==^#+_uugNYzN);#Y>0KlMH0hR#+N#e{?F8qGDFVk2+ePp7 zBCd3C0<|GUdKf^W?Zv&!|2ulg8L?>&IDZw*A$JlLhk)DY`wf9#^*krc+f|MR2z$!4 zMISP2k}Hs#H_-%pYw1v&OAVkp*Hpm1MRILF3Y8=JioRDl|7FY&e05@`co z#m*YIn>e&dv&Sb_pzsMec5XARs(&>+P6ihzfVL=7jzfUZ*0sg8IgZ)gr^`JyU9jyS zeKU#GnAA9@llZ?l++|eX6DFFDcQ@;vbqjHW2kD`=d5uMS=b1Skh(3N+>P@R#2<()r z$~X8nf5R}oQm0qOVsh=6%AnU#0KZ~#ep&a-57IvwXZQMH+zy1vwMENtYJZX&q}@PQ z>i=?>e2xRpMG(x##Hk+B^#lWW6f z)#h4TY=J5-EwxSMa%wn$$F2>ot<6oND~>X0@3KyHiIHbDldJory&3}8D4%`OB4tQx zF=kOAk9)rB_t{6x037YZVSn86DGEf6Q9c|l13cQN=TM}v3k3dQwEU;%suyi!8qoU_ zP$*2;X7Gz$V&J<^JxaR~IP~5EqFyxW@)t36(wlS?2=2JcUzCd^qb{Iw#gQ#)XRlo# z#$P}cn2~I>C3q@^laRa57QAEVG)wSAkYu{lv{=)L>~0dORofh(Y=5nSjgz>bODKuMn=n!LZWY6b+ccL|AeL?+pn*Gg z$B4;paiGhfw#F!SiuX;f$$wC{l#=LkOrvz$9P*RQZ!&q`!>%5nIb;p~r_ouW!F_&y zk{Pq5Q2)Ch^~UWhvajBR>IK)$0$?6RluJ3sc>pX@nFK^+(QI|pO}b$&BEnXV(F#*! z3`%NKJEQ?C7&RAs;QlqmBn65qMzM}_tbcBzfmZ|Y>*y&|?{eXNP74X7Pf#r$)ki%o to16Tfn~-xMiwZ0%u&BVI0`ppde*yQl1*WHkl^y^9002ovPDHLkV1gelj~4&{ delta 1904 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 delta 2207 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 bP&4okjo@jrZ9fFN00000NkvXXu0mjf;Z@=7 delta 2020 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 N002ovPDHLkV1kDWl{o+a delta 1224 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_smiles.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_smiles.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa9cbafc0c1b42d54615c4e140d0244de1f672b GIT binary patch literal 1905 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 K8`p%5$odCVM{KG9 delta 1254 zcmV#g)9#CG_~1i=V($rx=tB~{L`5$}Ac8%FYoVyMW(ndSP=gA#Z6C^Q+cmZE^PQQy z%-#9@es}K9opA=vfzRGM=XZYRcg}Za?)>J?&YERr3YY?>fPX1q3YY?>fGJ=Km;$DN zDPRhi0;Yf|U<#N5rhqA63YY>-p+N3IR*}!==dykW%r8SFjg@gLm&@Ii^Fdg{1VW4z zH25042%XRc%U}+K>>h(R;VN8%D{vaoE^(~8)lDD-d4}rWg!Rw^Pe7J7Lb7jR5RM_( zuURIqOD;rN2!H)B2>(N)Olu8-)?Qeb=4wewQLErHn1otvg2|#5Qw^$RRV_VbGM6IO z!`G13^o*Z}eXs>yfJdUDIBzfcHgkL*hF~VINY$pdcw>!4SHl@dW8(yW32#H{>k)Gv zhpq4h`~zuBwXUwaN-VMzK7lmPri9r9?O7G5T&0}KU4N~qX4Sqlt2(CgkaRBWhP2Nd zQ}Uxzi84M>ZY_|~)Ps7_9;|jFQ5XCGNp^*RosOVJ3#1xUOOmN4?ZswhOwPeO@Gpey zM+V=5*|5kF*l2-NgKAMtsx4&dO+BXD4>CcE=o27he=w+h$L#1S;JhgWDyv6AsYcZr zGWEJBntvBO61Wm>1hW0d*nU_rJrTa95-6%qwU%mD?LJe_E2BBiBLTfI=F5QpGQ8}Z zjFYjZ6ey}!wU>I};57B#8^yJri-(SNk03N zfsL^Vo(IG=y+Bdv>Iu}F&vq4J8C?!{JW&_%FMo@YCLM`w8G+P`dIR<7GHJ40K}TGp z_`ZU9NurdG6W>w-l|-6X>Xk!<9g#rSE8NBFO}f27@flg-$TeIpVwUHu<@)%3I_(!SfDZ z(0@hpJ^~Ipg1&e7vT_YM66uw&)!|Qaxq2SgE9j&{xu5YpmXuNB#61KbIC4a;y4_}A zfi=-0j^hD*N%y-8EfUuWR~^JqvU#-D;y;IofI^RpOZ;m>`G<39n5 zL+dd92K)ss8<0S4;JQ$2g6{e`MZ*6I{C^HU`-Xww#xhiRwPUQIPoeL8Md1GhUUKEb z|1R7Emr0Yh!aPp8VayeUZwO*H!g<^Wli;(D7$_!pRhF@jwc0`Vp?#)r?c1VdIZulJ zo0#q>zHr2`7JN6v^h$aao`es);b9kh3r}%-=PYSsUx2h7Az<3Q;K5^XEAJ*t?~odIEYNtw?8?ll{Hkit4I!P|I_W zbhC_*nCTamse4<&l?Yr1)!qpJr(B-sQ3>Gw@cS^*aV*+&?g(XO?u zkGh{yqqZ@=k8$mN;uqsI6*2i?*k1uhVHAD??R(w>{YOSi7`5s*wL_q{oy0l=dm+`A z@s?=TiZlgG0aL&fFa=BjQ@|831xx``z!WeAOaW8C6fgx$0aL&fXjujB1EAgNzrUV- Q9smFU07*qoM6N<$g2`B74FCWD diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_expand.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_expand.png new file mode 100644 index 0000000000000000000000000000000000000000..73f4ae4fda82f56847fd35b43f3abd356e458515 GIT binary patch literal 600 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{?2xC6V@L(# z+Z)z?hXVv!AI@lF(ug=1kj|)iSz+VV4Q#7&nx+Y=axXCZKQ%{l)3Ob{>(|Ra_i!)N zxo!NfOTTgwfgLq`;jj?>n>}YJ9%@$C7o9$Ubj9L-rD~DrwN<;QmK^|#Y&1v zS2CwOeRQU=r30vLTK{BWPQk@~i`THLvkNJ?&2@{EKQ{%Udap&W0$BCe$A8$tigMV~ zdBBQp%AFHXap?h?9Xp57L+)fj-fs)riAwYTKIn0{C4Y`#$=^p`9EAMXU%q~JTwQkh zU-b=<>$0Zn{N+5sY`w>{x+Wy_Yjl9@p`bJEhtt!UHx3vIVCg! E0OtVR6951J literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_fave.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_fave.png index d30ab499c2ba7b363b6b23d63a22c259b7497cfc..b565095778c7a91bd5d231b3e7f7b31f9033e38c 100644 GIT binary patch delta 1892 zcmV-q2b=iZ3-S(-BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8 z?*IS>+(|@1RCodHn_GxgWfaF9%`7jJW*2N;>cP~foXEtAK!2w!Lh_;1#u1Vti0(b4 zF9p(54+)ageEV{~ea@6Al~f(5I#6|>>Oidn!^6XKz^tkru@2CXcJM0r7Sv^c9qF!( znNGf48gMuG8GrcX3UEW4F3(N-Z7~>}ZaNU(z&v{ zZqul3GfpwUX!uNVmt;b8N*h%vwyvG?)QSxzmB; zdwr#7%&=FC89twu)l<}3qu4*tUF0iDV?Z{pto8YX);IDL>oUmi;#4|g=xeHIY?m=^ z#WKuVM1RG{uVswW?lj=|&a@I_WB4i7oHXB-8K;;{Mv*_FyCAIy*#OzPvMJ3s#CW4l zG3(CL!zpBa?;258WYaT3dG5f9X_ysLwPkVVqg#TV?lud-Ja8eH?rh___{kq*L?2iLo|9?JbJ9dGXmL+;XXz3?lrVmH#WeemJ zT3#XG#bfFaj#q-?p&3Q-w&W#+-JAKU z56nVKtG(a_U@eqo;wRrIhGJ!1uEjKy+-8w5uLFd89b^FPOkl-0L?0cN@P+#P?;l5IhImCEVBG_z?PZA^BmW=l7+1wuS|@tuyL7WU==> z2U%YR`>X&hs_Qp+o7Y8Og9eNMTj_f0lds`7u2fMCTMbfH(+o3I1bN1of>Ip-?Y7tW z*NS^o1DjFuMCJ-`oeQkB8%6yI+>trhIDat|=ZHI-QKGlI`JRPv*f1*0|B8Ru-3EN8 z=s0Oh?QEDDaTRAv^tiBYOoVZK5DZ#TBi&xMSBxom1DwPSh@($b+vY-42(SWt?aP4v z8*po(BqcbDQ^bvpDXM8jkkka44?Z;0oKxzPcoyj4t*Igo5tpQyuUh5@B}zb@%YV-U z-?_}t@Vj7c(8M`{DR;zyjVa=;8p^wN5_}c-0r=!A25!tzR}fR>1j_9bab6W9Sy~Vh zEdU?;n4td~bf(1#HLhI1ddY~oCgQpvRK84cNT{{q7lCe*mgsq@^xqpQ2T(3c#7!KV z_YHvLYrwC-lJ%LoUBHN>>#fA-#D8f`fzUPA!WS!+2;L)72l&z;(}=GnRt|CLh`1TF zva1R=NU0#wr;YX<>2r?DIJ9y=sm7^{eEDNCl@}S)dDtsNv2q1zP~ifY*Ykii#eWwU4xTXp z`4_wASHvmb5=O>+xy&HaZIJ8D6(oQ$9C{5N-9BxVn;y6wbPS9Cm|5y3E%x z?1Ow*K|2Yl?M7icvn0V!vw!AEpf9#Q(U@#9%_i)28iBTF;ZuqYWULG0# zMn(J28#p@=`L_(8xat@OU&Iy0zG8Sk1jhCoK2JMzG9MPX&0lY1*?(>5^dfRK`Xj*i zdPP5Mcp2OPI--5wj~x`_NEDOZQDSjW%*F}?_4g%LHpE#lI1}hsTuGw03!_#ar2`sE z62+eB7mbJBi|^7Vr3C=yUB{xFdYO| zgEYd2u(>W2Da8VcnIvZ!Onqn##VIikM3#cxzPY%PxXd( zX(H*2gJYiVR(we5pMzQp)~)v>%b^YVr!sl3A)l^mgWxE6|6*H7)q$!5RR^jLR2`@~ eP<0@w1OEXja`ZN}8y2hp0000>Nklib!`W z1-A^OhZt0_gb9WJRQOj(4~4YoX;Mn16p2D$guM+la*I;hO4rq`#Iy%nXsDgIaeg%3 zJ#**I%$+;qG9O&_w`cA>_nU9dy?5r$8C0lHp+bf7BG8!;QGbzS#{l>lz@J4C2!cZ; zIie^c8ae^&1n?bz0RY_qE-wSIvP6&)XS8Pf62L{iiIg#d<_qE|TnJ!x0elWY(GfH} zX1@6Yz(|jLN*6(MVve5(V3sE?B8rTlBLN(+sHax7(>(C`4`qs=hXk8+bxs9vmj^x~ zij1JW02(ygTz>#(0GO`XdjOp4gH%}}=zc*Qg+~FrA=q01-0Fc>JX8dED8JBPJQeD9 zg>Zbm4{kb&h@g7_)CBuGq2G&z2jjvuapM0Z(J(^E=$xea;yaSL0dqM)LsN4eJQvlyY2{Z^i z7S-JFTg2GUijRqCT#EVO!JPOg^b%2r)#za|d5QBT5!EtGqKk9lMJ&=FJ)|Kv9>CWb zLwRp#+^emMwH(SnW%LVvCTrvQuEwR2|Ce?Ml7FBv2!j4_eMz9x0rbZ>9SDu(`b4-b zG$HQFNHi@*hZc|K&;n9lQIC)DJ1Pi*UyU_5l($BN;k!iClIN{{&ZWk~T*9U#b5Mt2 ztaj&hla_NCOGIl7=hdD>AXPeJCbdb2kvJ3h!bahidfg-fsWLG}r0Iu&I5)hJ}=n%aVd~0j~Pha?NOXN4Ls&0@qgu7AXOfYAoin2fqEl2Bwk(f5D11P)yH#N zQ$*hnr17W2)mx1x0W1~lZI1k#Aoa1FQ~NT*$+d)r5OyO?;M{BkQwkJYf8GmLM z2)3^r`L@A&q0Tif9J>_+X`^0k z_ZWoH@dFXv5#v+JjO{GLqehb9rGGNR)^INL*aUs3)R`qbl%jGJrTd}G!_0+1(h9ak z`@bE)>i|{(xHdyymjPJ8{B6#Yrj>1`D|CqdnP{PmzpLwO}dU(5KD zsIG+jJ(;#XvI;cHvYz_P=~w^@Gxi5g{H#TMkSAe>gFgR9!mytl6W$ARPL)xsz!KnZM diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/abc_ic_menu_share_mtrl_alpha.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_filled_shareout.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xxhdpi/abc_ic_menu_share_mtrl_alpha.png rename to TMessagesProj/src/main/res/drawable-xxhdpi/msg_filled_shareout.png diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folder.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..0683d22adaeeb4cbda066652bc6e53595459f58b GIT binary patch literal 1023 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{Jk!&~F{Fa= z?deTXG*wx6Nk~$Zg8> z@dr${ybsSl=a^8oN^crdimjbb(e_oJ9&XZisA_0CeEQg)c#E@fp{bX)?zt|1-%4Tb z!H4b=mGV{MRmnBlO9jm@7V)2YetdPHzM|}dS*v$^%P^OpvxmPo)!yjNE@zf4j8Dyu zPO{Zra7ASEx!hW5qbJNwH(H8z3!VPFqw)A$rXvl9O{%)q*GNf-+;jbDer`eupTJ`N znMd50M(l9o^;BnMWxBR)>6X1OjTEwP2i>|?B6;CLh?gu!K$lO3xB_DlhsE7fRH0V# zB>Bec=qN_2Y<#476zH&~;}H?@n>~__CLfLMn;FXI#^}3E>D(sv%4h-U*DVtMI!j;m zEm4=q+`Hw_BjvD^tzj?huV^hwy7~D9lk!dOlkVS_%`_Igd_y!XwDrlEDZ&}&!Ubn_ z-q{We_Rz&AE~W=;b~EJcSnM#T^oaX~Fn{f1L5j~`RCg>|wf&mq%H22q7av{_D|6w5 z64&Efz6TQzOqC1~;G9{~ket0sboth|lP|w26qR8Mnd#_yPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS;uSrBfRCodHn>}k3Q51%E`~WR1 zqBgM-j9?wHv`B0G1tO#hibVf_U5Gy*=qf4f#mYiUi(nI${Q-haK(Nv(DeTtwU1!#t zJ7?$KJ3FIu#&h7f_v^g(oM-1NlQ51@UGcU zByDxx^RsU- zB^Hnv{67pDpuo3mfDBN8Kww(^5rhYv(}5b3r(I38fKWsR-$nID`1}EXm`uV8pa!*a z&0Vy!Gu|3a-TO%PNuKa|e7-_Km+)}-tWFV#eTujpCzje{wMP(=Uv-Kpnmc)+ML+6O zfK$Y+Y6i4lRN;LlL8^d5*?qNua4Nk+0YeW?(T#!>fHUMCny*2G@fgncJ&)M&jF7yc zKivSFmsm;dID^<8+_$~B=yq2jDc;S7esWHKj@oOG`<3Ea!Efr5KwJ5{N6_mNU)^FINlO~5yNjeHjWwr_Z$S0yh_>^e zlEx-_UudC%w(~C_>3t>o8&a$JPa)YqM!*Od0V7}pjDQg^0!H8$?+fhRefogt00000 LNkvXXu0mjf#6;q( literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_folders.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders.png similarity index 100% rename from TMessagesProj/src/main/res/drawable-xxhdpi/menu_folders.png rename to TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders.png diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_archive.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_archive.png new file mode 100644 index 0000000000000000000000000000000000000000..436d4f219c5736d1aeb0ffaa537f877496ec33f8 GIT binary patch literal 1149 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{{JE!#V@L(# z+vxq-B90>agg>%(Er<({=61bsOe>HnY4Q;fv8EeY%WMCMZWOz8TSJpi*G0+WQl@aA z0E=tzk@${@KOX1SyRY)|-uJcJ%{OoNw30Oqbr20;4Piu3 zD_Y7$x|A*=d?aFD~wa9yJD&zI>+?kn%tk5o^U$n$G`j3g8C;j&x!F-e!g^!upapCwrF#{0wVq1*e&)p7_bp$j9-? zN|A|Ir6KoZqr;+mx!YglzBJ_a7d@f8nQIACrN{@K*P^KO^-9*e%-iMiZ~RL?A=zxa zT}=3{?WybVwVxlp;k(}@@f8E(`dW!9esTK_^$_80Kj%IuY)KK4&fX9v z47wYBTlm~;@3FH_Qhm$&Z0?lMiRpsEes6-*)~lS+IhtgVDcZigb?KhWBTd4aw^Vkw zs7*;TnzN(raOZ_xX?BJWj;u;i%X|9SE2nL;{o@T^^yMwZ{d!KRiK={mbWC?9cln3- zNRi?l3c|{>pNe(#zHQWB@UZ)mUiY2Wq;(}x_iQHgA6L9- zORz7jxa!)LT=2}rJpAmXk1u%I8}=7e99B6dF(=vc%$o3@Hk_veFYNT4#Bsit@2LIl zHBYO3f2Ljyzisw!4~N_S&t~18``4KHDs1jgc^=g0wC!haO3r8I?rKiK7qS2BCWVT8 z7gDYAIbZ(cK@IyJ&tq%n>=qS& u@^eCe=;T=edaD|=7I3X#f>OMp5BM8RW<6W4{PF-O>wCKTxvXm4f?{Q`!+zGj%dSL&z;joz!!3!Ca!W4rMh)ksB^xo+veP z6jCdjqn1mG8DWs3jvjP^$p!b+#&BtrG1tL)Xy)O&zwh4ro%?umP6hbDp$I4d0B}6c zo1i3aM;Z`i4UyOTC;=i9d@w*wuhC~^<9+T7KF;4CIH>d*0Em_dsP06RLMR0QU^WN< zD+$_}u~oiracuB^ekWMqfL#Cp)k3^CI`}$B9`-g+AFV%am$1>NqgQ?=DB*E}-3y6O zyc_B6c5(}-W|#AGOY4cOld1#RlMZszVg)JD_0W_tNaDA^BM}=e4+7OwNDoS~oZA-q7UsOK*gh z5y||3c+aesQ?P;HjBaYHDicAgL2r8!GhK^G8>0FQJRMWSInD{`*0zeB@3X|~Q}3c9 zF>`yR2EXQ2gda%+cu;_wwzhjw%_wu#`!w<l+Asvb68Ew*M#MM7^sbiZsXwfErG?XK(+Z&uJ3B`~@=Cz{+-;;S?F>0E3(&KFpxT{64Xo2C{ znS@(yY!j8}vh-WHD>Zg4hc7RVN8f9#ge@#;Snbk>;$gSSp&$6` zJ#JTAf?i41^}iT)+N#bB@}^U-I#Q!%8Qd~dQE5D)NR@IrS6pb0Un>6`%z7~nA(4u$ zV5Ifwh%#{xgiPw#uRz#krj6Li}b*?RHvf>eUJ$a!XofoJk9TKN#0emb> zg2Eg8yQ#IlcCm`sf2pHH0UB(oOqNlk8FeYxSUEi%h1+hh-#9E&UW_%`Lat^YEOQ#! zBOyA}^-GZc<8ssd=?%Ow6Ps^KTXo`2aqWY7mmTBpJ#zl=0KCpootR&j&Na9FHmx{^ z+`b0=TC^nilQxmENvuT(SY+Z=23zGh!_4v-^-fxJ1R8q^1XdHgN~5z?AkeIfYKCYv zm_Dp~PeajUnMo)tM8X*B9?!Qk@jRI}*32L0qZV|c|f#S5#YN8}rz gAav0G!HOEQpLx?UQq}y$eCJc)PXu_^V4~9g0UEMb5&!@I literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_channels.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_channels.png new file mode 100644 index 0000000000000000000000000000000000000000..ef9ba933e2c4f995704bb188776a5c2b42714ba6 GIT binary patch literal 1065 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{e6pvDV@L(# z+u61mB7p+Oi)XQj9CZ@uiNC?(v#X&uVX@MU48@2DjwboNy&4gk)4C2OC`WNDTCgC3 zL(thFfa8|SBtL=94z&fxR!Dq)nEyoS;f=l9i+BHi_co2~-`mpYwpkB5_PFA4ZFa}#SKc<4i7|rP3&;#37+`6|LokT z>x+*Yny#Le%-;Djqc@X(+00klC!OKGa$?CRUj5YI3_!KINEQae;o6;KVbf zw`MV^D~Xp2yKY&WogtQ*yLYRk!GTAig|9wlJ>LB-^mP8FZ1o4iTW*W)IQXw{-t24o zc3~Yl_xyj){IP1**6BA=h0bvIUD>Cn+pwnJ-)FM$&9e^wAbkqL7YTW^Z<3({-zBya43-=gyK>o5IWkTOuAXvt zmgJXxQ&?nNGa0^GCr#ZH&HRFm<(Ze~LchRH#*b5Mon(HN<$FdZIfQC0zsdK+Bg01N z+x!l*d|xexGmA2fZukERkehz{ZpW#1rCW#cC+S}Zco%=m_?X@o;nbvulXDfEPrPwB z94U~M@FPivX^vS5-(N50RT5X1oe;A4bo)<2^Mtfup11!4y4G}TQ4a67KKPCM(v1~m zYwr9x`HQ2f{Rx})^rQJEy-%i2wcL_$sg8T){eO>U@V>C~%Gz`zci+UfUQ70d%Vd}o zAG7K>7GOL1=C(lVwk+8t9D17<`aaZOXY2L<|GPEk0NWXYXCn;U3c}dlTV{z%T90Z#jm&ZGL+y^(m{dG(#+s@H<%x*pf~x0>0Z;Q#ff ztP>mGG> a|KM(4ou|FO^UrNiHuZG%b6Mw<&;$V7q0tcl literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_groups.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..e9afcb6fa7a6902d8662e7e6386bd7411af1ca13 GIT binary patch literal 1421 zcmZXUX)qfI7>08Y#gbB~n>d_&g}kpzvunF@BRIzxsz}TavE{~06>9&clMAF zf2>wVCP3;qB9Vqf005W+1b`(3 z9^W{if4_JR_?tftW}{qI0RX98g0llT0w^l29-rVQEZR2%;LZ${3Q`mzE zL8|=NHFdQ~=Fn7BNb%pB)9AW!`|w)n`(pvv8s@23`9{E%iHzAUXo6yLt088X_vRz) z<8;&6e0U`0NuSZf;dhE7|5!y#6I}CS^ zK}Ia7Js8P5*;A4DI=(!`H;fhAHUP;waEAI9twfNTUk>Q~u?w6(IcV8~Lc+RvY77%u zJL|J^w!O@)v``ef^V(j&*<#R=fAA7=JP*gg{phm28ZmkeZ(s+-?B#_%p;UH_mEbt` zcj#EL@6XsJ_4nasV&r)lJT~ix#Rd?hvB_e=Eae_pD<;@tj;RTEtnSh3>@b=OIT@(#CLBah# z<0DreM7DvHoejW#1e53n0h(SAZqAvp8+A%l5%rKHZh`OV##t}e)&ZhgCni}XTzlr2K9|00r%$si} znULEuee35@n*CDm>HXOHZT+yEx!*=)y@{?RpXV^$uc8&W8!Fyl$Eou9suj~Uh>^Il zGswhCrWW9D^EUnrd?=Pt#5atD2r^1ya#8~~tm{;^ti0bLN*gYyl@>S&Ek!0Z84kHN z&r*>NV&HzTP|-M0pIpGU|Fn=;y~}pjnX+^bIYPVCxxnq;f2nIR+}Be1tT^fq*|=k$ z&o+3ME0j~3gWa_`jm$!a=82zPj6ayrnf3DxnL)tQ15PCbsD;jJE&Bq!qK`K)o;*|+IOuI1W7TC&ULrWnGqXO_(d@IDvZUqzut|KT@uIInJenlm!M&VohS+N$D;G)=M!wBWenJL{U_3y{0?W8>EfgcwUp<pWKllAndR+bvY#L(@67*WR5(|;Ejj#@> zIq}hzY1ihbX2rHUD-JqL1)Fg%u|hTCFvqqty!wCb@~v|Ci7)xsA|J&SpEmmA<0>Rv LAUW4M1|<9gcF%=7 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_muted.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_muted.png new file mode 100644 index 0000000000000000000000000000000000000000..822de94d8ff8eb031f8297514f9eb1030117ea87 GIT binary patch literal 1691 zcmV;M24wk(P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>1xZ9fRCodHn`?+wRTRg)<1587 z9~BvzJuJsk3d?Ail3tL6L}^5QDTojf{UCkF3L20Q?17X-=7-)72z$RELMzh9NVEqr zO(RrVQEBOvy{F%jxv|eWYu$V9+_~qRdpQgK%vt}v&f5RA?&IvU&z)hz3M)ELbfD-! z(Sf1^MF)xw6dlO41O5H|SAw^}KJX=Y3{1;ZR6Ua;z75<3z5&}n$6)hu?iyfOALQAC z&70|Y2w$!$`W1g(t)e)m6a1@kg>DZ{TdjGAD!!hHJC%sB_%Bn;bj4S5FC(B-A?PH= zW>pw(=ukZk+GZ#_8t!$PG{G42s8hUwfIl@jPW7;!2Hl6!t%ll}a4*oLQO1}>ReJZ7 ztiZg=Ts-(J5xjP_~U@A!iU0^gt>Ej zOr^uYOHRcf!ygff$3F^mJMp#9e-nI3m^-(}2ptQ&cgCBHjSR)(p9sDM^;$0p#)P?Z zdyLRyz%F3f!&*2&XM+7!aE;t5ojbQag|&mdPJvxoIB^$(Kb-ia^ltQ9X!Bx18VV=y75i9E+ZE~Z!K#PNuFLU`=S+?GYpG4s2R&WJwlg^W=kI-3;*gp7k zv^cog;1}ndl}7yW#MZKpv_t2})JObWr&ytX0I_{#xQl^Y>b1#|AhwMGHwPryfs}mR znKndEj-W~n62ZH`vBr7V%b;Pu!<}!$&xe<>YSwfOl7e=C@kY^IPPKdC@ zoO8-_Q#MG%Zvvwu7307?3M}h|l*dUCgS*KJ4!EXmkks%jh&;-{mu13Rz_Je@<-ugc z;8t0|16)%#NNQLYsTK!rJdj5`mc0lWX{wwLx4{aAYx)LBUAG%eng+i|1`WI4i1&6d zTcSbIgBy&ZW%KNS(IBB#81ZA^-&64|(;(SPUT74(0A9wl$<=F-5kC?B(;&EI8YDHz zE?|dI^pc?9@bDncxkmg{_^$^7TdF})(@&t?DB9Z>lGXXiM*L~;vVLm022sxP?TG^rClKlfsYk$sydz)+Z6<|Dr^!XFLZagxiI^I=Al=4vhzU&I0L zL7`JqRr+1Y8y18wU&7v&hb%l}+q~iVnH(cZHorE5M%eQt)thH0zS0`go>F@@_!+X zmY6I*V%v2ERs7A#G9TKfzS+sOJZX+{Tx=7(JdncQUgqelVV=a>7o}23?#mu9a`zZq zekoq%wazQ8Y590WF7MT7L8h};QJQxFXp1#Sg9fo$N*dgc`n`|(1Wx{A4q4ip_II#6_= l=s?kdq60+-iVnCP_zzBEl|)*mS5g1~002ovPDHLkV1hjF5`_Q& literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_private.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folders_private.png new file mode 100644 index 0000000000000000000000000000000000000000..c5ac142e412bf4b2be345fac296e1e116d4885ae GIT binary patch literal 1791 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>X-PyuRCodHoZE|4RUF6XG+~XG zoG}CGW|n3cMH!VBsLW=fAdsM}%#@1gpb!(NxY_wSt9bJ$<_a`stk{VwZw_Fn6^*IF|zEhWkblo2Q+ zP)4APKpBB1jXV0)G-$*oE{HX!@ps@aS#K~!|{a= z6i&9nN8w)BX!K$55!hPDK;c+B)EG0`_!tM;3l$_Bnhkf1c4TVo|H$>MLIep%y5RmA z=ZbRKk0ZB@YLIY1{ceTD8Vue2?x*Sog7mYyNpj5@$;Iwcf}^0Uhhrr;>dX|l4&Tqwmo!Lq2Vp<~ z)nnC_#z;h4y=!fU`i14wOgINx&qN#0c^7xmAfNUiKo3JptVh{RE>Edj43*bd;z5_a zT;+J!27fd1^f-DRigk##k3-E!7U)HZRupW3QoZk3;0Q_UwLg^Ilr%(lV|3=tL+$3!IYaD^k7Iq*tF=!rRACfV6LAg$u0|q30q)UEV&10;FXP zD_C~QQkS=np#W*e(+XWyiqK=Zl5>vdx;3$K{{n&33cpEI_iDylMEs=jq*33WpHH5+s9CVbOgm33eMMb__|od zw7r_P+9a?{6{_aFeGCPtud2oP^L+GuLC0T$&eIvxO@>_b(Zw~uF5TRA?p znC{Iq9da?nO7mZY&k%(7_}m76f*Pl0KqYYZKHBV<#1l? zMZw!}GyIlcZ%>Rue9#oH_pe3pUZ|uoFO>gG!-u1J6)8w-U{?H#U^iR@y^nN^qtXFy zg>S+CU{<^uV=t-=9&|vR*h-6y2q+7#3($Qn%yKUB0CKjEEeg}@YHEAAVYv;qR>Cv~ z)Sor~#c*I8+yz6}O@nL99SA7I=Jjw74B=NAoE=b?ts2Gm1+4F*{*r9k^Gjh{r)~B4 z_^=|sC5HyAYH$2qhxGx>c2~{u3NWWZ`@v= zYAf+!7W^~8zipJIK7v=PJNgOS9j=5I&%R*)na#>s`u9 z9FxAK@D&(yx9IOEbbwrM^;+`ihtkmjHGXLiUdtV=Foa$jtcKmZp=({cxFAq^Ez!H1 z?=hg-1Uj**an8BPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=wMj%lRCodHn_Y-jMHt8Twbi1H zBuR+EqRorcuoej+O}j8uqL#qOKJLt}s=E@xD7)x`B*8MQi@KE`Xhzdjn zq5@HYs6bR8Di9SgD9|$0b){-@a`Ie=mVqT;euDET&q_csa6G|L%0mhEQI54*tz(qa z%MfJ*JOU1YvZfe{HPUF67(ff$1onfvOtHn$vopf`k3_OFzWF==c@^ARX_ zDjK8LU-=^xw}K17dJwwHXdRo=DaPqF3vxX(41s>JA4p^cr-q(s{xkBtksq%ohd#vw z&U1+MSGtqy47!?*{UnZN%BoIrl7YRS9-!l~#-=f5%vGSPGCg}&@hjBVBF+Ir3JVN% zu2se{x(c+&m8E9CKZvgtd1kT6>7@npjuQOFF}ey=<}Xts=P6zPatpBz2 zcwt5|M?i=@)@G#hEU?2P$Vq%}Z};yksh-6n3Q zIHC|d1>oiY0wvVA0=J$S}J(woj1j#REA*@$fR?AFrt7p=X z1iZ7zuL13wio_{324>PTnF-sR3Z2SMXOEMUNl6H_f1(ARzLam0>1((fm_6EvD>Uy@ ztQ`>oZG&nzuSuqFnzTFVB#s6aEKs7#;-qXsF;0@&^w-7N*~$tu;>^@r$G4$hjyOO2 zrV%U<*PzQG>-SG#{vpTv!1W>GNX$X~6KJ;u_Ul%+?;yGvVLmNG7<3n7_M8LhA)t>r z`_1(BRXdqm5hr{jJ{eW$40?e6{U*+D{$X%0AJI(>nq<*4*rU{ z8O-({O~pM(VlFrgd`vr$E83~>TmS1&n{Ru-1n@QWQD4QV{VwWt4I-ge8R)w9U~@`6 zi0M<|o!~>J{G`d3czR>2&8qnc^d3!%;2|K>Gs|&s6zG~Kj1$lKK@a~@<}1)BY!c|= z1iB7s5W@H1GoZVMMEQv_T2vq^5EY0DLPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=%1J~)RCodHn@fltMHGf-5;MLg z7+vTL5xg!Yk*I+%1fw!U1O;^=VoY3)5y7hG@Vs_wc&Lya^HGz>HhGz>Hh zGz=_L28Mgxu7!n#5q#bRZU*bySj%yB8ytp?wQ+>wp*H3?elR>d{5QwtC6F=-romg_ z1Sl)2D;u&kI`AyfhzYP4#E?RDqsXRgPYfJU1lO9fNl-A3uw0dD@Y-l z0#r9o!nh`4v2qjx4};*lm$H|FXTcc|D>EHeJyn9Jw0wwtoPUCiYsvdg|@QN zlm7&W5w#`VTL6q{po|gg;}xS1fp2rh)s6N5BT?ut1Al@T+3UIp!Ffcm8pOWO*==%& zUEiJXnyH?2)O`WOh}zWk^vwHPkyjYf_oKVSpf95OC|{W1u0;2AUY|>EqukbRk{}_clwJuPpi^YH!<|1ab8=shTR{(NcCdw(bQQ zj8}nsD7VK_Hm|nDXdIvNl|AVxVsTC!eOGV`4r05PV$>IlH^5mX5L=_q=XU;n+L>HR zwU*AxpQvqWt9^%(k8tNkc~^u@E+B2qR$&f6x(+&%Z9f83N; zQs-==Z;;mD+AGmZtw$i{Wt&6D(Q@S_5d0>b$r4_)b}h-1!W z#5v(2a1D^ZgA^-zR~-GyJBj1Vd5T*1JvzHsyP`fZFIU;`B1esO64Ykp)#b_#?eezG z*~LT*-E5S@kD$tKb`bk-f-~R_a4V=<)V;3a4$_{0IDw?t&pw#2iU#SG*$7ELWi6d9 zBj~e__YP9v#I%mXXCS0Ys!FJQL%|8I;y>96_)}a5faXJ0h+f8Bhu<%K#)BG+p)WAB z&u6SezIM)ckRu!D7C5|D!d_^VeIew?SP(&NuTOH+JDZepg~OOD&r!{rr8cN7>4jTA z#rBu%C~}HK*DFtS6vL;BuH(bO1&5Q5H^>-EO34UI0&kc!W*c92I(y0 zM6IPj6Fb3q-ZREU4m3C}ulEKIE$v5?igx5VW=r>s3kYCQwXt$>9E}H-D9A+Q9xTywprO zPe740Wa&eI)?R`Zs=`{JT^5TwE%dch&__LemJ#%YWu6J2^#wcmjWi523^WWh3^WWh e3^WXcGH?zs00Xr4wThPj0000jbk0?cO{A*(Q!yXm0(Y#)v%SlAH zH;k>Qw(m`=_2kJL;>*jPJ+u8#lzy&mj`8`qKyY`d>P(J~1`Om7$>OHE#CoRBy2;Nk zYhAy4F{32J>7HkiiNy=yS+~TwvOSxo3$RF>UzU%2A(>gpL&Z1+ryUAOhRr8Q&v?6dlT&x_{@r)}_^D|V*g^PDsBqHND= zg>S9Z-?-|z#GK7<)TNKT5V$HQa&!CYuT~!0y^bA|De1AfeSBx5)z@=oor1>wrpiJ; z8*FYL+<9kNVQjx*o>_sJtC((D)9Ys7ay4=Gs3^k_SC#^Sg8 z??1KpbmH-*S!PWwaux-3529}{?#w*==BCy*L*vVnZ&;q+^;PDaz1ue?!)^H%a+5AQ z?pf%&S5u+-L(kb~mM3*oWwJwp9qt8JZt_gXvdCpneXUuzK=FYHbB2b6D+5!XZp~ij zV)+TY9yz|p7yS4kQu=$-n?B(c*LP1X{`Y^K5JTlo^~U5zZ-y=2^X8{()Gobq+a~?l zo;<_fp$=*_?mf=0Q|wQ;&$-FGY5!G)kDqUyTDi8xTgP;=!aN363%_ud7bcSrTo#$I zcV^Go&qsg9^jMWo4mJ6Gb@$Y8@tt3L<9~-Z%nJ$lw&U=hs1%2+*%+y*fg{EJfjsZ$ V{qMG(mIP%O22WQ%mvv4FO#m~GU%~(Y delta 855 zcmV-d1E~Dh2JHrrBYy)lNkl{K|v%ciipM! z6hZBx7_krqiD0E*X;4TC1x2w87D0&d10smA&?1#zh(RnZL_veW#3WA!r!eR2-tOJ( z?e69MU^s5}cHW!+&D?u$=TH#tWk*SkBDT&b${ct7iS8E($lZ=VW>*f z1J{6Gz)N6hro1yNDCKrVX7W))S}O4=3VGUMKY)2feIvjY;Bz?x*4h^P;OJWp3<3+2 zGMXoWjsagC{j01<3z9IJCxKoAJAvJ)p^lp}Y!&{b4=`OgOIX0Q!K&N{!@M zAnb3>5n$4BZ8y+sGw|feKqej54vWa7xak#<`f@Yr$Yfj~)7nL3DnO(=B2t*`0-1I~ zM5Y5ox=}3BY!t|}GXVk_x>caR?OcdRm*WWJvzlLIOMih@U=y&+N0?2B^FUXWYTk!H z=D}4DurJjq$HOF;&4ogtWe#c8tv!o@%o-=Yww7ITdl`F_uAx5?@p$A7Scw)Am5(4XnN=VCQ00&NB!1sv@> z1KI+Pg#M$}&gKmpfcpXBnDer|QN@W$o>tIW;Az0|^03`@u4CyyYHf>|v-#DI{#U?O z;9J}QYi)}yarC{jD<`%%QOT1)*NfhdSaH6j-~r zs8Gc)Uv*TV5~x5Wh$B$(|8UZN%uyBM2sBjm{&~*kS{88xIu1Mme%jZg8JdTpD2k#e hilQirq9}?1_ygvBn|_jTDQ^G(002ovPDHLkV1kAYlluSw diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_forward_check.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_forward_check.png index 2ba7ff0e3bb6146768b9f928cf2476d6bf898b31..4767a768d09044993dd64025d63b1d544fb0e2f9 100644 GIT binary patch delta 843 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 FV1ffPV*wNklKVnAcF#f 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 Y0R+pg#5`ghBme*a07*qoM6N<$g8f=VK>z>% diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_gallery.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_gallery.png index a21ffce4f4bc70dacf2050c086c5f903da552ff8..9d104b20d685a037cc6d18d8be0eb2ef838eb7eb 100644 GIT binary patch delta 1874 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 delta 1414 zcmV;11$p|2444a$BYy>7Nkls!qk(A+ zF5M9D4X{o_AMjODqDrMQ@`e*=jIdNhK9J(DL2Zh)xhj+|kU<;p7;sUhf78a{Rp3V8 zr?@X@EP>7go(5(XRGf%yz%{@d{>>zTmH}^0XfgLa=K`yuQbYnBU=(XM&@)DHos+u( zI0k4|ksCQQYkyf?nb(eCSC86m<2k7Q7+3s-h;$}6^T`l8)fS8X&`DR(2i-9V-w~14 z0*DiZR<+5Z+ZQOTVvCK>YZGuGu(LsYMHcK-n>HDFjnKe%(sO|?gUC+GGl2DtYH3Q^ zf%knKlzEj(WedRp z*;v)W_d$D%fv4+3?8&uw`<^CXcTkFk()|oDK6?0wkhsPm~&uzL&;xnAGJaN2KZ^ATR(80icz~RQT)xbut zhdKqgS{DH#W&jInS%OL6lW;yc;CJ31=pLkzE3oN=lQ<0&Ad-IE#jKzJAez+Njv@legIzAMaiKI-g{ZhT$U5=PM|kU z>wlP~Kq1S471~<)oD6gVrvP2RA1U8+hz5%%v{BezZ{~T9#TFalM6?2z1J~vFe#fk| zyHD~I=xeP~akw$o{2br!_${FfiDX&D!ePKY`spuKf8@TVgMv7RX7Ju!F^$8Z_SSc# z$vjJeX6l$HYE`0L6A@k7QJmu43k9o(9)I1!k_&07*e}7g8?;_KM*NjIjkWS@Xi^E( z69qCMifjfJ;b*r?;TwB^ZlUOjE*|LVN4^M5^` z*O*4Mg}Z+;RIw^CbGhT$lyriK+$AFGMPzr(T=aGkc}7GQh)A=Mhui)2t(WE%5t-pV zZxNB_z2{p+WLX9qs$%D)%cbZ4DVLt>r4%RuU!XsYs8)xsXfzr2ROhLDfxb5)9j%onKNh_+IX6|6;TRhy18p7ok3 zYCO!+UVw8N?c+JjVx1RrM}juQ9HbLf_+{Op{#{0ETX`~FS2q^wtml%LA%B$H;B~4l zHk1eI3~D}5hekYKrzMKcHnnw?WoOc%-r2e*&^pIa1YC1|RaC7;2vftMUY~BQyC)Sy zm;v>rx5h;nuRsxVbxFBHo!+dxmt8VoP#cqe{bJnDElJsq`o{t#B_$;#C6f!_Ki$Du Umqs)q761SM diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_gif_add.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_gif_add.png new file mode 100644 index 0000000000000000000000000000000000000000..d3457be2733294180f8bebb4f08481d63e590905 GIT binary patch literal 1734 zcmV;%208hOP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>FiAu~RCodHn@flsWe~?Rd29q@ z1d}L9G@zoF+(bbn>Y^8e3i09-J$m<$gC25HB2hF4kLyVyXaZ_{fk6n0;6ViiFTx5Y z5=}%Dey$(_PQ6s^;tNuOG8&RYzS1x(;+5=sM7KpzFYt zcAz&(T}w+#>#&~%cY>?HHgFkO1162mkb#Qm&fb5rnUMIbIpcA1^h?7RTaOeVZHPA(657-DI zdK2Lun)G+1Ovz}_J`mA4gwKIXQVuO)ls9-DsE&yCm6n3ncJO=PeHPhWr2$%CpgMr+ z@ua%97nXp*ocDrX1a}lVwoFMqyFoOQ=5kBHVI%kxczQC|sl^J4e99LJulnQj6pH%- zhcn1@MVmTOT|o7Dy4Mz~D^^0$Ip$E_vmArp&k;UaCn0f)ivqMW1$CkM#b zBA)?I1H~^Q#mM*x&ryTcCcFe zc3vj?RRUtG6SAeZ^87H`0A2;Z4z}yPE%FqNs`vI~d}^=(6Z%v(bl&*+bHeq`WF*$- z;hoF$-oA|Y@x)u7;S~1@8ENWT<7gj0-HNO+IvrLEh97Cy=izfG(~mS5#y+0>?U+rR zgKTpYeC+0oTHJEjH_@QNJo$x^g`a*bkq*h1!R3XH6_pAYP_v6f&Nk9)YYd3tHAj20KZBrUr)O_`fL*odXY%>rN6FBpVOoVK6Cc`FHVnQ06B1`9(04dr z0{@wbZZq_FBr|i82S|8fxvUJ3c_( zI_QiygugV9wMInkJHRoZnXK)Ov6IL76X0pr*a0WNkz&*oOUHa#R+;Qu8@mpgw~E2O zU$+D%6D_*MW#@URzjrn%-ZtnRXDId|x|(@z9N0~&XvQVxd8wauHqSWzUzSE}0?C`u zWVUI$H*{!$&=!&GM`@$G4Lq)Gq#w#K&>II&e;~MVXw;$|Ux@fx>EnM5SWqBGr{P=I zBv(V9t<@ko6Ge->h%}S*2awjBlcFM;Xpn9hK8%77WGC3}2fM&lkb0|8JAnoRkXwct z2~X55U_KLl`33s={RqfBUqY5F0`+Zk6QnrR7n2yPNkucMiKME=nDf6pj(!nXHCCBj zYB6coL8%EqF(gJvl-JRetIA1reA2YV6 zNak(E;m425+|*+75%3Doy_+6iM2kzrjnH{N2Mr&0jMM5#_t8(}bF_~#ye{Gk53$H$ zrOCPmmHgsegSrNlbf84t&7c+DApfTf%$daDF6Tf07*qoM6N<$f`KF`w*UYD literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_go_down.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_go_down.png index 208648826e8e9b28ace9b0bbacbe185ff0e8e148..be7d0769d18d96d3609e582e6822cdbf88160511 100644 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{tliVaF{Fa= z?G4AgLk0q^iPJn}7y^ze?s_rNLN%K2Vyb??wH33!@NQaavT4x`)^wr&)76iI*f9L(`GY)_CNd5IBiFFgE=(h?d&o|mW zcY93ix{a3;${LsWBwJkHb60FlSi|C1#SOyo=em{%BwI}T8L{E%pWrnUPl*N{*eE?k z>T7}0@}M1#L1Mq3{W$os<%!sF=1J9aEGLRJ8?#?}RFI{lE4G~N(xbw-&Mi`N!WGu? zJ)h~Z`e-HFrB{Xjny>KqaRwDzSbCg&l%l{ZKl#)f!&mm3Iu>T1zxD3M;z8p;p0Sa3?jQVqmr4l2Ea*b>oszDX?|nvQVk8v2od` z9N1X6fO^hF<-)9S#i$aP6;1_J3e(1^p)_DxI8~GutQ4n?(uC#WOiW|`C%)rPZ;DC$p5Rqtmcu?zOw(IWQ9LiJNudWXJm6-axZ0(Cv*^)5=(N||@ z-FkCt+q6=VlbH;wB>WD%63=Ax+wY-#u38|XV9UPRJ$d^d#FXCGx^~O`(yF)S>F-V& z&UhU0S5fyM=YN*Fic24qw0{wwlQ-dC^JSYLzBy?ViyoP@hcGRdTr$bxs`6dtQf$bPiL{ZqqZv6I4m)++rL>n5<2gdM&0z0Qwg_qD)-IsTb>_Ag^hrmNjM zo^s6L_@c?`JnL-i72gWCdA(lMS-#5uYHsnzCqChe8VprV@03~wkp-(gfQ84|4 zrT0+EAAb&${3&U_(%DxS=o$lnZVM%o1ge>kIQhnd17uJW*!2uCOssCb%xJF;RnY zsjw+fgK#OZDN(&~ZLl0ry>LyioKT%{b+8;!op3SO40y~Gm5Mu!!7egKrQn`}=l8FH z&+0z@w3KvRb8m{?C7nomi>zHW0K33L#yi!vb6emz2Kyd+z!h)@oM(&*V;{HyZh<3W kACFS0RQmUoO1UKI3sOLvG7~-!5C8xG07*qoM6N<$f>?g61ONa4 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..5c43438aa732bc4e41adb70a86bafc30e307265f GIT binary patch literal 1554 zcmV+t2JQKYP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=d`Uz>RCodHn$L?AM-;~$#hgqu zgdEf$2!dzv5IpD-P$U-#i4f0%g8xGf?nw|7@#fLH2NS`I;z1>QSjgrQ(2&zYjQH!I z2yqkLe7EtUy?mfzNH6)8uWurd8yOQozKCvTxH-HOZ z6jQ$qG5*$V5bg;qcyaT>r1aS94CtG{+nR+rUS|qsp;4D$krm zko&;e?$AI|>mk%DfVKNxf1LER@&@}a^{2tcK);Q{cKKNoU-zdQBrhy8kHd>4>dzehCr(|g%JcVlV;rm7xOXT1 zqDT%}V_EZV(bWSO*3en60M@+eBgheKfOVov4dQFzY3*1rVW)x4dM~mz@3^+Ff_0*c zRpM(^Zfz`2v1GN#ZerUV#Gc;wph`iKoY;mLv8VS0FD| z1*(Y@+j>nEPaH|&R5{>3eXIE@x%!brb-RV;B$^sceOvEC(`WkjgX+TAa}pl=hr^*r zqh3k*cNDECUYVrzGC2#hcckqREpP>$t4?jv-9nEyRtMi$_N2S-hr~wFa~mQle=TI| z{|nIa;VIC%PD_`oI@(?=bfLy zD3%l>7@vq*9R2`ajuJg%pX+e#3MERLen4+CtxXEi7^`B#tj{q&wu#WQ?=$#=ANgq8 z2f8kxqcK)QB9O#c0Mlmr@OOMAQFB7u$qWfcV`wWww^i)Qc})97a0u)GT_60f0L`u-J*HoSXpR7df@q{?vfJnBj#qH$J77%{@>u4arh$@&<_l|j(QEu{+{9hA!xfG} z<7FG2^2Mt2G#tstd%B&07*qoM6N<$ Ef*t$X2LJ#7 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_14.png new file mode 100644 index 0000000000000000000000000000000000000000..3203d5dd7454ec2cd3addfb43496edebe999111a GIT binary patch literal 2405 zcmV-r37YnaP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@&q+iZ@4BbCx%ncz%SQNmHO4!@ZD6u(V#Q1NH3}_m0D^$D!&e}Z=sW`R@ayY1!Po%d z#5@{*24dyn3{>iRx$Xsi;I`u6k+}Bw&_;a_h#&~MA0O8)Wt|3XMqDPvb{ywcqF_!+ zV|m4n(NKYtt#`p_Fdyh~Rv<=#TGBECq^HEB$N&+XR$3eczKl|Hh^cMhGcDf_5unIy z930c9Y1H|_Sr2apxEc6quk;@a1_Ehd-9;oQD_c*1;f|B7Btr{9>UMZxF)ly~fKMAx z)B|&O1z))W7`mSOV4iTV3aB4!w`rd81sd%HLFdCOKAwtFh>zQ-o9@-i*USM@BcJ3% zB;nXmDpyw!%Hh;-Zf*rZ)&P#)jnxEpbyND0gAX~}MXTuB-HC6*X z^VUcgaW-gsZBTHowc7vujtwm|F13*qdWEW@r~p|hXQgJ9!mJD&)1J!O9z^ajdLPxon=dH zhk{9Im1LB&2HQ%C0g*wbW0ej^1utVfs>H3qHf>csVx+Z3PJ0udv{|bKnT}Nq#Rad3 zFNHElbAo@K(#7N!xqUCs<9dP zG~LxwRv9CI_=b%8}+u;jwuf0*JgmX8du+>v)oe52Z5`R`CX74-N9xbFmu4E}L=*5Z-N z33M$pZ2Xp58I9jJ6m-K&p5+s)pkomD*3iET-e52uoH6Q`C8$nSjb6RJoHz6@PNhIX zG@b>l5nc}8+8Sihy~J=%tObD*%CASr6nfOqITma)bpHu&Twp)dl?HDcip2U53`?cN z6QbRVQee;?c;SAC@&s_!kQ47=Pi?AO+KmHi44q;{ew&X}PNNoZQmqYI2QT$I8?ySm z`+=cHtP9{C-w}8VRcX*gcrOFvG>4CV6BF7 zY%+KWD21aa^4X_BR8XaBKX@K!KUGEWhl2aS3J^s{sIc}!p}xco7z*Yi{Z81zE}Vq@ zGdKqHo0|zh=RA`@9KA*50uJN!3Q+@1dX*LhWIW0=>SpfLUNTh@vx8 z%)z!^qlyuZJ`PTUGHFQ~uP~@g__$2N=sE~=09YQOP|M?1P?WS?cr1%&$Tx!*KpBJd z9eR{u&1{ysI%=xm^Xkp}mlpbm?^&`-Vq~8ve zLg<*zE8nv;$ds#jw zn$H`cs?&cgSxzN7P$L0ruq>a;H&6PGF&?jT@bYcf%Xd*bcx_31+MmZ%o(!@^qLx3d z%F{3Hs&z2$QX3H)=`zxk^90CxmaUXdW4|UctXBFGvfEH@`EH0^V&w^tl|ch({t0?# z4VvY9Aa7pt1jrf%%Nf&P9hugkS-!`*lqW#eC|J(K8m>d7HE5Rav94qa5R;ts<0>6h zY>TyWc`B_z%bY=(Tqi*K8sXEvOiJn`jFZ-OL@&&lwj-G`h`w1PV5M@M!VqnSmFxty z-JXQbz1uxr>}}QnS zD1%0VsPA7?L_=LTn&$0VGQD4OQ1h#>HF4bP=r>IuAM~`_-*l5$GYzCoPCir_lFS*7NX#~ z8DGPrk#N%lQy<`TOdxy?Lc$q6$9~}Soa=WsY3M*2p^P%pnI=Fw_Sgf00EAcioH$R0 z8H9q&MBsG35=@BhwFAC3Wg;Cr%*7c^=A{v~J5ly22(nvWboHSi3;<;<9QwByI{wH- zg#r|15$BbedR+CDVIvNnkCH9I$Bw>eXbR9L=e^j`s@kAN1R4=&M4%CYMg$rW=!?LA XI!Lx#1gU7=00000NkvXXu0mjf71U3F literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_create.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_create.png new file mode 100644 index 0000000000000000000000000000000000000000..c257933d55a10356bcedc94ac287faaf88b80d3a GIT binary patch literal 1722 zcmV;r21WUaP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91TA%{}1ONa40RR91NB{r;08?B~RR916BuPX;RCodHo4<<|M;OQN)o7*p zK}eyI10i5779mAE0!l~|LL$UEppgF|g;!Y_#O})UDNF<#1W$$^P*`3*U-`!2#dEm>wGxPkK@6FE6%h`U9)SDcJ8*S08m)27lF9%Cp8@wktVs7v zYMi;%hpeOEPAt2Qo@|fKErBr|hoB|!2uv&Tu@nuxg zt6uGcTBQa1NTOO@cyf!%*Mf$oLApRTo+PbCaBvFz;5l;Yq<6}sGrS^6dP_Ks&S;X0 zUdaY{Bl}*VQ+365FSrbvi0t-O`R}cb#Eu7gR6AXSlE&Xsz^67oLBU2OUkljAR?B{P zWRujg(}SBqHX*=|4@Gc>O80wGV$w{l*xQzEja07@iT^CcFjqSMX zk~WAwxXa^C;jxz+OygTBO)oolRfXFS&jTC1X4q@uh=EKU_#C~Yb zwsN=5$DTTcQoFr9Y`LWB{?vK0l~fZ+fluj7hIsaN_qiM@MrdVy#3Qj}@`+^-ziUI)$?`xK)Qu zFnL6aZ=CdYOiJwk#5%eyqI)~|rvv@&3`wBajOeht4UwPVriQj9um#!@`HDIPM6bWI z4uadwNLvI1H#H&#RK3!Q%|Sk*NG_f!==XDaM_}(9BDSMddhVG+sl%E^LUVSN-=a;n z$?plV>E}F}z@3lif^1!h-}whLW3ro$>}GFR2-@i!T_(Bwn>@6sSq7_M9q3LI^jmdm zt9*M>_80RTf1SKDj6O#tp^4=j-@rxN$8@?c9lEA|=zG8NcYoSe{|mn1~(ceB3-4W3*brk1$80LAsx_Tdc2=rq1&=^s# zlF$vwQyP8+I#|=Ce@0Xgl9R!j&;Xv6JgbRMSP(NdArXE8sNHT{7*1P-i7NB+~8wHqcb{ zBM6Cz2#)Mfhq0M?j8JU1o`lpY^kHIg%6W!v$IXgBLe9SzCn+t(8 zs=No^W9mO}jb>O$%vXROQl4CIBQ%a@9%CX;g046{(n#){y{6ZUAgoteAHdL zi18u^g6RS1t&=alQ0nOid1=&n)5z_%QtBec^IQq^39zCEUng^N9bx35`P7Ow9JQZw z)%h;k@ip@pdh&l|dqMe1k;D+LePYmAsG2ueI5U7JPl}_&Dv2yy2_2wCec5c zRMt4A{M*#^UDQ$PmPz7OQ=Yas+Za3qPJj&{(e=c%8PCF=ypm5LQ}dX43 Ql>h($07*qoM6N<$g0AZ*8UO$Q literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_hw.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_groups_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..e97468de44b0493c3a9714cb7ee0b720f0539142 GIT binary patch literal 2482 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 FV1mUMO_=}y literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_handdown.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_handdown.png index ca111067207f7bae9190f4849eb1b3781e07672e..f6b3a67ecc735e64c68f76e51a4015706bf9bddf 100644 GIT binary patch delta 1584 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 DQcD10 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_help_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_help_14.png new file mode 100644 index 0000000000000000000000000000000000000000..95bbeb3087e0925d472db4f32aeb227b7e4e29d2 GIT binary patch literal 2029 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS?S4l)cRCodHn_GxhRTRe^&2-W% zD~qh0n92+4gQY=~q(rv|OC_klhjhTodgvtx>mi~Dda;K}daySsl0u8D9J)DEP((K~ z5-QEaVY2dyd7plNoG-rFv(9DjbM|p&_!j*AX0N^0f33Z~bN1PLpU+{#8q%mhqXH2t z&=iq7mAa>==PV3b!4z;Q7z@q;hruDx1-60TnwpwU@HzB_qD%lw!3J;`M_DJ4e!gWAi)M4KykL1ug=bv?qcVa3RQ&V;HPpGGCKrc*goEjOLnEAWMG4;8`#S zq<%r_@3oV?{IW#x2j1L7Qscmf8QHhfe{GR(Q2szXX`(#F6^T=-FUjc2Nh{8`^xsxy zQ1JorCW-PH7*`UBq}^7l>DPj=bP+EQf0C>!J*Y1snYATkcO3l+U%n7~#Q}{0#Zc5}1BYJx{WBH!s*KXw4QGO(ck)RWRb!1U!h3teW+$2Y>xLr}+anF+oVBKC@ z3XdoP0l98*E2R8=Lk;(IxZAMbVCYO03ATXoW@m~LA3YeZ2F)pEZkLspmA~s3)+RYU zA*^H4%!L?!W5Fjtq6OVEAay5S%M!a8U>lI^2e}4`olXl}QT}nBv=C2rqtV_2G6#yy zlZNkW=u#iO^v?u}Q7`|{NcB^3vC&b9>nongwc_Xb^tr|K_Q92%98&eTN~7Is=$4{e zN5Z3wJ`Hdt`j3GQ(CS6E==t>u>+jyYb{c)wI1IDXDxU)Bl+P8N1m=U%8FDV6NY7#T2smXpT#rthU!4M2x0PH}oO$rtchj+t4MdiWaCfkvXMJBT@SvqK(|ZU+x~^m%j?X&{>1l6gID=p;zi_R4Egs)&5tND1F)u*2Y8ndnqT2LW#| zf=YFN5q^uaAm2)h6Wz2Tyt#Y{@~IJgJG$VvnFe3*6$F=d{Ra)sb-4yu)QG@08NsD` zBb3|X3*mxi46x3Dj-kIQgfqy8U>kuY4~7t0M1eeST3qN}4B-p*Az%yG3tZ8Qy7|7u zE{WO!9M%IwR6l_}n_*w>AbWx?R&+!5p_}1DYH)ZJ2>-_|4s-{=RG(Z*wI%q=35orI z{<6HmuytP>TYEK=4&Szf9Hd@sI#s14fl)xaa7%tbnd`}hU8h6PnP&|6=qf(p_|}?F z=i!KMLpI}q?sH2vq0Br3#%3z0y%E)C=52w^d~gI<@>2AH`vf4v7O>mO6y2J>W|2G!`;zPn)+o>g z?}zYRn84|^q$oVNG6)#RaPW>XAl-g>ei+^_4g6|Pxq4c?DV^2NxI{&?*`CC;2KpJe z@1Y(=x5;x1I>`UR@L9s~?OH=WI8+qr)%vfyvD}$Z|@M&JugossEbl-C1+LpM%ecQ1MWF1?4 zz?0`*pG2A5Z^XXS@u_6h9Qzit-kgT4cuzXTsjL~hK-LchLf*t$^UaAWsua6GyNp3h z;g-q#37z9-74@KF6QvooK+H8=WWC49Tyw`fN0-&KwiA`CgR&AU+|SkWwy}c#3|+1- z2Rps%(uUNP<%N?Q2n38u=f;+-M>#1iNBXA&_q3~CW5 zS|pwS++0=8mB(Rlw}RS#E8tHr(W|Aol_y#cq3>ntr00000 LNkvXXu0mjfPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS?PDw;TRCodHn}3KERTRfvO>NCe z%hWW>GPBeQBPq<@2lhuw5D|obRP+m?Ec!vI6p;nR zlA4CNEu~SJl)0`ya{GK`W|=*E=DnFW@6GJXci_vNd+s^so^#%vd+*$tH)KeI8X3rv zfu=0VdFuA|_Ku{#W^ke@#Ty28fuEY1nhsM|jdDp4!A->Dx!@cy1)K`PK)s;DwrH8e z*L~Q16RaXpn<)n`k(4IT2HpopK%R7n&K?6vlA3=KaqN8XDJYuO;(%_y!9zH7Gw3cl zGm-vRX30)fhagVfiZic*;TfDdgzf>*6O_^GkY~$(k-ZeO0vl7W_{>QgDN~a*mfAq5 zKyt3)dObKH0;Kd|x(0W7t$wC~WQ~JKb z@#m95{K1i@9cR9Smt~^P6bpSf1H1RylF4W#$~Z9;>;aapt;Ak6b#Ul+<5X8Q?I*H@ z1D6{oRQ)!Qa*c)XuwX;^kkf1sQ)$+-rZtjP(xxh%Xer8j~qy2Y|4$RyrQxeO!{LclwGotc4(c`zmP`<%=Pcx}HacNd$=(LG8vMv@s{^nLf_92N zI=kOqr1o9iB+{*EbAPUI6;gojht3_A0f>zN%u|K23Xo{ z89}{jBPi=F<}K-VWz*BOeu$-DoC)Y_Mo!Y9uiMko_m&aVy#y692bE0_$Y?M7=4{lM&x>I zk&^0v-pJZiF!gykZ+n{i!70qO;iOh1EOa^bzo0IoaDgPQ7}399bHA8!1p^Mprwi8wEj+y5bYeFz|UykoUy}gZy-`J4Ww?IK8^#6X2sU zLB>w5$WH}vn^C=&A6j>b@Ej(PGl6|Y46FBJ;I4k~wJ^keNuupR>`LePFsOM1^DwZ~ z3Bz5n;ExAd(L8z=W?|n0)Fjaaq>mgdE%G`;=ro{bFpo6iMtXX6%OjxSK&w=gv?2|- zMd0Zp2_?a!jWA0c^VVmM2x_Jitq$-95OT{MS+TwX-s#~08+FGZFntYc=@}ac0(zYB zCUV`L-ocnPk*Qwfa_If?KS!e>0lIb80(;x(70?ZwDDI8Q*W$X!1bHtR?OT#32zr_c zTwlR1COO`FG9#M3>h3kNn@wcFn^0?)E{Aoph;Rw1_rFQC&TY z6_F!-nWnR#v=6M3*D1j9LBUAUmm5h)a=AXm4~k!bpvMAD+}`R2`xsyC-qU|BG2}W) zmx_oa%%*)R&<dGXGi8Gs8E9mnk%8kj1OEY4K~Db*=T~e10000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=u1Q2eRCodHn_GxgRT#%-G__=c z60M#LB_ikol`&nQ3s@9B7$KHI)LVfxQ5n)iG|-DtFA+gRLV;M=#WD$`Cnboodg&$+ zidj-hR}|9J>GvPb8unRxt-Zc8v(L=z)B51gUYGCsKWkssKIioHWyuU=1~LQF$3TDG zp+`qY=iqYy%mqjK`}I#YHe zgIE15=&z3@z}#g(cbJ%LbhaqG5L06OBXEh+^^eRw6|jBL*R%G=KQ*gCLho2?p68RV znY#syM07S#*d5?5=7%CWPcVKPzV=4uH5|%ev_ii-Qxx)K;FEg85)He@1GXB{o$6p@ z?jfV^_X75hT5N08A&KRIM0Cr)z!C^Otr)9V$ytoUV*#f(SaPaWha~2L!+~TrTLWQR zbxm@vcXr_K9cNTH{zO~bk*OB~Z!9EIY~E?f1_NEVb(@Zfwh#%6&(^< z1oZsjiwaw535woM-?-4=vT`dcejFnXiSh7`2U)(R}cQ z%PesGld)&PwP1YjMSB430Ws0*lld-D+S;3451t2Ao8(WJujO^ec(N{ui5^Kvt7HdA z?b3fm=O9pQU4YL9Rq_{;KL9=KT?iI|D%r*4N**RJTN`a76hK4oWkxf_#A8jTUlkv*TG4GAZH2A-Ue5JUXm{%Sapi&R_@Dgf1rW=Pz|A4$4aXrsPvq}h3rHF3293?QbVa$ zXH-Ry)A?T?GeL=uzltC|nzsoTw_5LBZO*5t6RDw8t4pVfAnjXxxzQhJU_VqtsMfL4 zstD4i&X-NC+hpTbl2(p#r=U%KQS?K#j;U2`HSR&f^gUM~VAF=yaCdt%lyntAT3vZB z7Gh0ft zrlLiVFD65y627~>S@rW*-;!R{ZQf$v^E#QJ#7CS7$^<1CNKEGylnF{OkeJRZC=--m zATga+P$nqBKw>(tpiEGLfy8uPL7AWg1BvOpf@&hD^t}o^y07*WF4NPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8 z?*ISvL5@j*yr5!)xW*h`quY-|L=d+K6jse z&TX}lB?XcKNr9w5QoyA^yWJiD!{9M^pB*(GaK%iBc?9SKhrw51GtJB2Hz5S+Y?7wu zfomX-Y2Cce_0r`h%3RUTzJ)@c3uUKd7})B*6lqwylAic@^=U2-%v7hDD|`-S5O zn4cXrcA4_b?U~&~GwZ+$SGUZ+2Aet?);OEzU^V4i*BR55=QOb&e6zMVI(eJJ0$X#M z2lBg2dH3658$So}IpC73Gv;*(9R-tp&B&jv^IdYPGk?dIr%^u0t_35&Wp8k7DMDK7 zf#O^?f@5uwod0DlB=-T=jUTS|Ju_r zJWw8=iO1|Jb!v@;%qsBQ!}u+}t#uYvKA^lV6Q5Oe)-06^5_`ZG7fa?JfW@Vf2ZEG0 z%g@1T;(xU#kS30s!n42yE3L7~Q=CqX!(cS4@&ncJnRw2M$zxn@iVcEi9!Br*Z5tO9 zd7yegbzLUDgOO>pS`^s@KD$^j{}3#VPQ+3`b+h^$tR~*OETPq>NUW`V-dc8S@(icb zs#hzYLG^)n_)LA&cj=RC2GBDZmwmvoy?k5sM}LYB5HFXhpBc4OCecY(73Lp-WpxxH z&l<27tgb2FGIEKZ%T89VL*|v>r=!AI=BHOKLIUy(fj^(ObR4QF?{spBr_I#Y%1U)e zaLkhV2Xi|sB{qV|XFg$kWh|*Q6kj0TrX8!A_=%a3@u5mdEy0!=ZOgJsQ{ru@^SEkK zeSZyO+M-HHEx~31jV;S6O_6eurOx|MQt$I!8__;2l(eY7$#o_bZDyjaPXYyA@gz_Z zD4;;Vopw+XD4;;V9c>5kr+YcL1N4=#*K8cU0i#YmG1Q07g|_&*=Dhbb;$arbdmlvT zBVyw}q-wRUz$w?)NM-toA`nFMDB+VSZhxfl8wASr^O!OMMY+Tv{24K-ea^|R=KcIj zi?56#P)1`1$GhN1aay?|zOw2%*qv*2$wg5vv7%hcZ2h7&w7yK8m^-LU4~>gS0tH@@ zBv2A4pg_Q#c2E*1pg_Q#c2JiH^xfcTjt%#}8#ZMJ-8Nb_$A-HhL*03r7K0i!mVba- zK)=AyaY>{)q#kdfI*s_K5h7WaU(%SlLXU5na*3I|8#7J<1zw6IP!cGhK)@Z^K_AU{ z-sk3jIVf` zb|R!k=ssu#3H0ziw9`U$n&|%pseeK4gP!`xc^l7yhkXgU*f$&!N4kQT5f^_$|W zV1vdzVmIkyGXi}J_2b<^3eJ*j=JYhsw(MpTfAx_|95ou;L0a_3*iCv*($D!ff_^X) zG~M*4{3W;n&gHqRn%+?2mlQ|}Bn6TJNr9w5EeiYwT6E=uMkxQs00000Ne4wvM6N<$ Ef*;UVg8%>k delta 974 zcmV;<12O!d3gZWmBYy*`NklX1H4=$z(PWxLZ&G3+ zM)jr_=}m8X70EKQQ52D+x6!+3i)DYRMN!ctB})I_9B=?k?piU;C5da%X=xJA8>HyqhMw379)w(38iwU?Nz}gJt z1kD3*T8)@E-T-JVTF`p6d5hy8fOBd^%1TbSZDsaWK7W^r60{G%2SZ>V0kl{W6K+*% z6`MB1@)W@KJO%YISM4r!U;7Sy1Y(>VN1-5E7Uj}yQY%p$?*KFvBqrKU0QhN$^(%mbSqf@nuF7oy)sDys+9qbSL*%#Xjd32-|q^riS zrzjWVT3_TG{TcUP3E-wCmqE?}_f$i7lcsnK5X+=`q7g7fM2jt)XI4HQ^H^h%g&^ia zW#l&%j>P4RAZHOl3?hg@1Tlyp1`)&{f*5QH@_*}`UbP7X({ymZnNX5osUfyig}c~xGx zB7Z0-OMc~1K9qthrAA&zsgX4zh(QD~h#&?|(3s}C+T5ee23_2`{AR!j((Ol%7LZ&P z9M|;0?zcEWLz?e8iRcs&)#R31I%-tB=QX|P@|yv-4_ZS+pNq}UDz%>H8E-Rg1brc* z?()dBWV(~gK}laM;6K7?EFud_j1W;1B}aI%K+Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8 z?*IS>e@R3^RCodHn`?+wRTRe^HD4s5WE6soW=K{LMkbUjVRft`(c{<2xTb4-Q*#O|rd~ z)o<9AM&;}j`le)ombIg1kwvc)-53GqfhR#D*Rs9vZ2?+-(Df_pROr%G9Q|MRUj*$| zAt!Ed*MEu=8v&ER!{Fz^;Nm;77OezhPH@&S`0AIoQ(;eCmE(r3Y%a+ow(|1g#YfHr za2MEa$X~jhuo{+ zx&mzH7V;yPx9I+`98l3AR@ zj(_|etDALa8{6iIERb4atLZ$^V{_d&(w2ej>4$8WxqjKlHXVEewDe#Yuj3o0>uRFM zl2^&qHQ<^CZji0vn~c2|_@o<$c@olGg>|c9EJ>Bz0yX4;rW_?9xjUA#P@GjYmY_;* zff}7w9mDn)wpp>f(Q!thlkyX@8m71Fz<+;6kMa=GvVV%bu_q&=cvA*MopC^(!M_eZ z0FQ#Y^(Gq>zIN~n&>{~r7lUWDM5gAEv-)8Z9Y+qwv2>v$wVw+=>ke}LUATKp&kwtuwl~c&3Sw$~I;0cCC z-Z_$2?zD*QOKlA3t2|`}%;e4j@_$p+(uYCbz%4JDQS|a`$1|bGTX#C}p9^+@7}*rl z4@7G`WLskLy)hQ4H#pJ(=Vpr+TUSQGz8qolYD=ETnQUB^leZ$3=R z69P{7eCv*!$!g9l=+}VkEXZz+96)Oil&f(QKNVQlPGXx{6CA6MSSPW$I)4tL*}%8% z%+~Ru6W;;!Rk19}r50H7ZUL6a(N+A0)?&&&2tK(OTMuNh+YQ!aKE1`4yYA?CS0`7_ zUhe|An0y1&y-nuEhxW;T1z6(k-^&S${`Q1;6u1#s3#s|`8L`22$J<1M9rPmaL;eV~ z$eFI#4J`>4k?*}lDR{sBJb&1t*BzbPES;Vf0qe_`Yo_=cT7rFtBQ8_syB~@Oxdth; z?zs8Q+^4S%<|p7^ETZc|a2b&IphI$)fVG+!+dH1b4jntxI(^ByXx-4tPwkxOeh9u9 z$e$5>(t~5BCd4L3k0pcGJ342mb()(CtQ*>5e-?pc0eA~!BBb45sekW7;k!KxcDB9j z*Ie)T@`uV!KaV^8WxL&_>XR-11|=6~eWFQ!F(^6Pj`_tx+MohTrO?=D@e#r3s(xx00bO&Jh{WF1-z zzSjj?P(MUZchd7qR&T}cWGxntjWuU1t~-D{SC>2Yvq3A!QJUxj?}5h{PH!tTm3l}M oNE1jCNE1jCNE1jCXr&4K4?G1wCClh$JOBUy07*qoM6N<$f_=0`wEzGB delta 1316 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_inputarrow.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_inputarrow.png index 72f0c953a39e0ce5ea2f4faee5b36bae91b61138..7454e2efdaeff86736808240446c46c2e418d0e2 100644 GIT binary patch delta 782 zcmV+p1M&RH1%d~Vfq(2tL_t(|0qvSiNEJ~O$DKl~2+HhB=z|PQFxpfI1ube3skfwl%N&{Eov7bv}_Tr`hcjYz@l2Dh=mblK7SW{GhVqjH}gDayywCn z&pD%W{`WUC`0jnv)MUd57y%<-1dM1hjueJHj~GOEX^pc4RfqY1QhxV7B6Mp&!bmV(>l5A8@cf=#u~ z$sMu_jW4}*7V@+oF(9;|*AX}`skc_^a+m0q$-B=&&mwT#f424#+g0mSO#XkLroVA~ zf3;>*qJLW^@781YQD{t2JXB)4>YWMzBOx->+=~8q^=4F}V*p%_!1+V{Oo^?kcPao} zi@LW0|{8nZmMKQ_ct&o8*%48xlQioc4b8&0SQPz0uqpb z1SB8<2}nQ!5|Drd{*^#e;%M5oU1#2d>D;GH)4Y_ZBjlXmY=4lq z7UJkZ*d?DyFU}e43aM@PfOz$U7&{|7LTcLq5bp`36UK{NtA%=FK-ecg6G)R##g-}t zoFVz0KpK~-D}U6y;EWPLHhdJS*iyw9LRAAT*?X&3p02;2=z~r3wL|L)rzS7j}WUSE{x!^McSN?bgE!yH(i@Q*5b1K5?f}8sB-Re`;-YSy>Cq$8CvO~~FUER{K!1wTQC!5a)%8C)L$t(FZ@DcW zQXkSD5HR|h_h4)c99<}8aCEDY!kL~ux>-#Dv9yj!FVyZpMGdpenWL6#21iZ%430ha zu}+~EbwBny@4htP|<9~>g0N6(pMrOgW&oO#<{7Sh{E)e~x*Wu*;NxpxF0Z;zsV zKwGCU+)Ng{C>_N+PzP)We#+ri@fv5zpV|goWOEWo+DKl-a?n9aKmrnwfCMBU0SQPz h0uqpb1SAkp;0I4kpK-&5VBP=#002ovPDHLkV1h-A4b=bu diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_instant_link.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_instant_link.png new file mode 100644 index 0000000000000000000000000000000000000000..906768464cbe7a041b6871babd2b62458cadc6d6 GIT binary patch literal 1837 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_invite_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_invite_14.png new file mode 100644 index 0000000000000000000000000000000000000000..f1298c3603c50ce4c3afdabeecafa6c4e189c280 GIT binary patch literal 2424 zcmV-;35WKHP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@;z>k7RCodHoO{fdV;IN1>7X2P z48^>|#u`Zzrv8u|b1c>{WJZ6G%pCrR+5Ca!Fk?0wbDDFEN>21)(>`ewuNMkjNfjxTYj9jYS6K~9|O8y*y$e(iL8WWzfy*a0!_4E}Ut)n!;n zw9qRe-kjBOi?KlDOvYL?ZgHBu_#N7IRbhkero~J8WwF`^=$Bko9!Ss;e8txv{0V-7 z|5uRQpoXGnP*q_t(38Pbj5mNE!E&$}-5hW|s7&&d`+$jHo;ct;unKHIHw}!S+?+yi zZNN%vC|ZcSfETTSQ(uMd!ZKDn?N%k9yM+3cp7u@Fh!s2iwQ}a!7-*|Yf*N^=-A~Xb*}&^qABL~{>gdmP)sO`7>*;yzTGOK@*vElZ3o7K@9RYB3)skJ;T&%sa{}= zSJLM;qpMrB?g=VKHq%5no=Zs2U^NLo`s3hY<3w*T8YYcO&@(1tO`?w)T{YE5Fw%Sz z7p<+DL-+;TfR$D+I!LoEk@}4uH;)e6368&aL$+}1au*BvclC7I<^MQ$?5m-z z=tg_|G#xf)gTFvrv>`SyWJgoRPpwj(lbDjT+7t4&J#;3GiT~>HGHtr7>?Mk-eLe_o zb3{Ji{5KL*PEub2UIeUYUMa1hqk)zAm!jWd$<#jqd&Rk-GCVIqy5z?KEf;DR9CZWd zf+xUq@C&fgnx`j>_67^BG4*ZWrpO0n-L0gv@)3%?BVN`Ku9u+5r~GS7iD$Shzm;~3 zPX)_Bmb6xkG731_9lRfKcrW_90&Uto^q%p8J;K)|oF)1K(5?Ay$3Y&|hmZ#5?Fg=x01u=%epsA5{^0ckuc!D@lU^G= z30A0LWPYB0N*oLq8)H>J02hI&s-%dn`#V69UtKqWB{82%Dd%2o!`17ewK03I_y)?| zG(e669m3B=67;L%pt7Gs+gV__!-=atr{aAk6O03XU$AG8U>e}=1)c|K@&k=$8dD`H zA(j)YW4Se9ZRQu+cLR?A?{*xSYmIY1$UVUZgE9^H)Q_aWr^$0Px@#uS$aE2|Vw{mR4$W6#Ty=sXkN6l4vR2~j;9L>e#ElbPKLl^iVkjEDSi%nUrfe;n^n!6jESZI6>HCB}X54YZBiV zXaQG5G|x-|r5}moo*-* z7!hF z4mcd>9lQP@ZYH*we|UneR_3$8@xaPbe7GOEV^`B8UE~a!qt1-z%sI+N+o(Ey=}cN+ zVo+66h5eyRVL04G!lHP)MTIJlvy5HtGsoCfUF9s%UXH$bTxguUOCvRmW~ z>H+^wuo%1w4lCYceJto(bDDM`^=G0_f#5?cZ3ziQQPUh0a@y>AWyi+I*_OzKIJI74 zwx3Q{&zm4OyPYl@&ValGB~Cxb?ti25668IU_UtSfVfyjL;*Gg9WG_M97o*2?mIN`5 z#G?zkHMz$}hP~IqTCH{pVSF=ymA7&a4$JY@x?I=B)(N0jZf8wGBxdbU9tXVSpl+WK z3N>+ef~=2|z6JwAMx9KrDMkNuK$~_6Nz6eIe}|=v{$K896GO>Swh{@F5`(E6^!Hqy zJxP-o>lBT-D&cY)4OW8ACaW3H*gQ!|%t6)&N7_gq2lT>E+ZcMEmAOX^r+Q literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_invite_hw.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_invite_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..b6435a7c52f29925c865f90fcdbef69514e958ca GIT binary patch literal 1979 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 delta 1374 zcmV-k1)=)q3e5|UfPV!yNklIL#Dn5VQS>G*ptyjCnS+Q65+&kB2n0e12}TBV7-U?=Er`pg?eBBC zp{)L@x~jUiseT{)sea#k?|c96U)9xB@4e3Dj2Q)t0!9I&fPYcIC}0#Y3K#_x1!@#u zDqZ<}z8PYx!6GoRfG;`rfcu~moCg+}v7l3l`#-+%LF2~W53+UOnUcs^d=)*& z(!UwJQey9oJ<*^8LjF4?fj9V?g2uG=BhGFm{yl4(RDXYl{Bb3LLt&97_86dDMKipN z;p^t-C18LyE0jJRiZ76h_p+ySyrOiTulPz_i3-G-mGK*FtokTlwfQP7{-Ok!p!iB$ zi3$Xpp}>A4?%}M9NMTx+60BbFmAH}?Xh;d8T<)>rtJKx21Q@0GN?b_`^saEt)LbWl3L<5DMzM@IucywA6a^%9dRA5;GaK9lJ>Uo! zStROoq>bARnd-dnE5|-oVT@Le$*s*Z_+W4kSnUP{N0F$DTpUF#nSkF0E&^Gze+1;_ zFMp2^x4=p80|<95o`92qW~xXuj9nbNSh1E#cqovsmS&%cM1$%Qr+6kvd^wQIRkKeb zQBj@ZSVUTh2yP;s(9|pVD!w5Xd8GPCvTh62-3>?;cL;<%Etcm@pfa5jHpR&bw( zc4`yGlJRGP7O)sJ0eK~nIb_*?7>2zk$bS=nNz*TUqux7?bpXTvO3Vh`dU$&`i z0JlL>COg2FR)x360z;;bNcH%ODULuRyZq39$c$*$3&$u6%z;?Pfi1-ApI zO;S`PYO+;kP7sm4rsH8Cn+z8E4p8VoUu~BK?o^p&KL%arB7f=zSqC4P!L(a1j(=!Zo*CejeN@W3!b~oVSa6bMClSPM^P*KKms_GF za8B_h>f)8-6$E}&NGy#^AWnsBj*|a%S?w)_v~C)>ZY5gyJSj4P7(iPGd&t=mk2@s0Fdhyf-38qf$X@(Xs`nO^cW1C4L;iWvq*0i%FX gz$jo87|;rQ1enbkcS@q!j{pDw07*qoM6N<$f^DaUTmS$7 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_jobtitle.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_jobtitle.png new file mode 100644 index 0000000000000000000000000000000000000000..cac7bb01e5c2f54f1b410b4fc4c3a2c621668e73 GIT binary patch literal 949 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{T;9{gF{Fa= z?d*+yGKKH*;ivaaM8dZM^5W zo9p)_w%m))s;;I89#H$j73Gytz1hp7M5Zdb>&%?kzCfN!D_CkR&RqG=cULpfKIt?2 zt9$)!i`zYJJB2QN_ptv%R%ii7LvrC6D;CKko>xx!hrDsVU)I}HD=obx_34(?cc*@D zejby#=8gVoK?$`CZS&Kc?DLmjktu0+ymyAb<$m%R!Fu1=M_kF|u#8+Z^ z)0j*)&pY^YY2VQ=nzn3jr_Wll_WjjqtS5GsL}vD{nRnox;uq!;?q7Ua&!s}XdcAvi zR`-ik72Dsg-G9aVP760kI{Po!zi=yea)Qp|=K@8>9BngH?=Pr6Zy0gWa{7m_3^$Lw z$(pLNpzV`o6+f>ZgOf+F!=`#kr`@}|YUK=MoF25M_xx;nGt(itnD72c8RznabLFK! z*}l5gY-hIb((@a;HIAJ)s_uW`B}Y~(v(IOpug`OS@%1`do%$x!rnexhZ!_=LHOx#& zYLPonlnIL^@z2?Pv#shHV_{*|hD*N|+}_o7(CH%kx#^GEc5IR>32q4cWbi|1!3?{y z7@e?SB$) zY_O!r?Y}!^t-@-0jtX>tH9R7+;5A1})xMKm7WYGrCUqRWmDi~2;rcevN0CY4ZILfy z)~1f=Z|!>OntT^?(-$(I_)y(eyrS$DyT<3^Y2E)AU+qY(&k)*oHRCT&BjfV0jqVB! zM^p>A{xbPWIal)@l91rue=#HWp0mQqXq`DCeLJ42{aE|{D3gG!s{@M*7-gw_;P3b( Vy(H`M$^W1%vd$@?2>>D#k?;Tj literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_language.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_language.png index 34dabdabc18178f7fd060548523a44d49064b4d0..183d3009c3fc4643bebbcbe833a40a62f09d760e 100644 GIT binary patch delta 2196 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

    ?fM3gr+A5+fF) zwucjjX60U=t=-rzeT(lJPcB=3U*91vIbX$z%s9SrW$hV^4l%m>>vM0d-jG>^Rl#Kf zQ(-xO+K!yP4PQ&V`+C&fdWzGs8hwK>81vNY1>g@uGl?IkB6$uq`0ym#*)rbqOA~`t z4Sl7RD);>Bgka+;lF6`Np{3|KUF`)!dnhfgB3fnL*}7!vQslEIdYt!ilmKVBwERf{ zg*w^bNpPemN!2Snt97QeNptgVTgv%QmtI$GF@S-p?^q>W(#ch{{*)_l5or3yu8t&l z>-$rRfGwcm?Sf?Jb~kupQdAi*eoOCUVIz2;w=5N0xS7M^rr5afVp)%BzE0aNcmv-< z^??8C6m}?Q)3z?fql&7I#B8*GjgUxC7@AkzjqBR06&WH$yxjmvL=6b!6DG#E-@d}; cFGP04Wk>fQYIr67KNkStVB>6EZ|R@%Z+m8KsQ>@~ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_leave.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_leave.png index 4767b2b8183b24bf8ec2c1ae8165b084b613f997..8c6883ea139f59dbe7f6d72e6d4ea4cb6bcc1898 100644 GIT binary patch delta 996 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8 z?*IS;V@X6oRCodHn=xw?K@`VxD%wa&Ere7D3IRb#VI>y!c7GvQ34&EfpAQqT5?di% zEX2w$ASftUXi!VFFk)DLPxg}AcQbdlJ2ShJ@jZC#&g|@a|M~6g-0t4)%8Hp0Fak!v z2p9n)U<8bS5ikPn35@3LQdQMuwm-!0t1fXrt zP}!$`1HX8xH~yN$uk%Pgmu<(-+9D!~4jiiXTZD+#6df)|2hkFA352La2cV5Eu|oGj zhm2TlhoN!X?yu*dKLpU%IhQ!^f42=B+8#1;Iv=Sx$A4(Kpz4wqHK0moLr|lQ-k!27 z!$-&OThBQyz{*Vmy$;uA>i8uF+$vGG>d4O+ZQrA2ks+-uYJ!%*v=%A*La=ES{~&E@ z`^a+aYu~AU5_x*rDNv-H&~Y@aMasU=YJZ%WCsX@ftNRLm{0+ z73A7ZHh&JVf|fO0E?$4s%Qc@2w#z9drh%@M>r zP4pohq!IuLykw9{0hA0+0kZbutG%UD(ck#TFnc5fFWfcW+i2pr~+UaFqloI-HUKC4o~4pk#1z z1Vm?-e&kx~k2fJpKy3(`G2N!mGGg@06yBE?X#4*?lcv+5fBVP*4|*1z>PkA+K+`w7 zx_`VV&u1FkQL9KE)sr3!7 zhf~eI_E~fofMnl`0jV(uX=p&QFAg;nD;ohLU<8bS5ikNqzz7%tBVYu=3H$}kJnHoO S)%Df@0000NklFqTmHcK>{eE4?XFi zpdlp>02R`13k9io0caCJfTT!X0YMQF0TK{EP(>i4kqlZnXJ%)2Z11ddKFM0mjAwo3 zAN%buzvwO0Y1ihv00XtXUGNW zNgdM+I*whzk|>%hkYy9N=4HE}zPiGVbyEW)k%r-v+lh#KC zp-K%}6bjx0mVo0{(9o%6%i9xdxfTDN^k9s6Cb;FLSWePOcLiHkM(w0`g|0lWIlJLs z&pz^+^wl}}8-F+wsz9lUxdKTt_6ZJx64jony_li`Rp;=y7+R4zV8QyXM}iL8#ise7L4P?9tN~|)`*wgUWj^U3#6fR> ztH1~0+EC3c#W={TNT~*j-b6|{lJ+7}>O+m%A{~UWSS^u4b@OfDu?_!^4sm}dOu_Sf z1}K;Fb* z38H-Z;&yGHli>E3yh&cSYw`~VU4NU`{Xu=u{Xs*Z0`i;UUr@$vr+ury4S1nS zFZK!OhBBZg-H_rGp;V7(=E?zp zdn~uV%a#9nCFTPE)%(G8w8IJjpdcaPY$;K4OF3S}6ueHyXU|$^V`Br-*kntHI`J9*RsXv!jbNk^zgQh|-K0cYAtIyy_U!)1rEI(QSI6SH1Of_m(s#d!@HK8`E6xOv=zAs-hHOz?4J**5@cX{i`*6 z#lseDQc4H4|5hE0I3!-@&rjhpBM@(Wt^Mx)!Ya_EnuFZgSAjo zc&?d76l{SoH(=y2fUXZ87)KV3g-;iMeCr)G^jBX0Df&X&(lv33@J*LCzQFD26);`L zq|+uL)$FeI^W{HImtT=WY2Z{dadCE-6M4;!y8A4Vzz@&m zW<^8%OI!}SrgW}<&vZ8h`5aLeaO`b*?xoBpXRF^(peYXe_2$-xica*kmN<%piZM&v z-)|_zn}0h3k^&vZN<*0n8q-(62awSWBTTHwGNhsRhdUYRIf>?j$3#j+%5~}q#!8LZ z@Dl&Cn-FZ|cw4Ldv}SedSf67@k6(Th%p#awuG~HqAA`AG;Jbb88&EJWYJ5GM6Hb5Y z5+|9JE01XuyvcKFK}L`Kkd)yoql_|7erIB?5@(KBIq*Wx znUUvfhBCg1kn(WygG>9Ie}V}wV^*rgS_TYBF7E10+BA1;*6OSgH3w)taIIBs`*`ws zvsuNQXCpy`L1%#`LM@9;;Ej6&0&o+MI3>L^V;N(Odfr|qI>nY(d-7K(t1|fRsKup1 zf(<+?^~ClLR(A`2JnbcU?Wbx&56m{GE&dNWCI-`QNPPtpA0js~@e6M9%tysS^}&MM zl^4<5$75%QTQcpRM!NMG?B2pO773gNsD!sFe?$$&KEC9*q}k#iG-ZZ&;f znmCb?PZ!3}mLJSPUv#q%whVF7@E zze!6O+pKiTz9W#y(bejbU)t2!-Zv+tHb)OJJUev4+v)4WWt)#Y7`he@^9ybL2_X<} zFnc<);^*(y^Tg5p0TVd1O?69U!hyOpzn3K1478L`w)K17>5!XrQ7Q0QQUK=c02?CJ zS*5mB`|{ZZqtKdP>sZudti|1;jk@LOpw>WR&76tuYip+*)_JNe)}ZqEbMR^#4`1;o zzM5avYw}LB_@;jAWy@A@&DB^`7!+OE)`)%6Fj8i!>vP%544x;rQUSdczxIJoyw9|% zsfeIrEM_d9ta%UERd__J&iWjYSHhk|k7gNH%@>Y;%y!Y21VzrRdLRXO7gpr3rxM2s zx@N*YJ}(V>=X$2=T-Kqc2Ii-p&Iedl@6R0YFpkZ<*u%ht*xZWP<~+Z&7TbrTf-e(~ zkH!TiEgwUCa=)A8&WH`=5hjBhX{j+6s&2cL{5_lw8MemR7?=LG=93=t&agp~8p`DedgRaZMpS(zMyMQhlP7I(6MV#Zv3LNsN1Ui0t+d~R06k}83%!=FE$s&{F`|>X`jZ$x&cC-GX#ryx;nVgG5+FtKsTcbz} zJ87@!VrmlqiMwSfTuhQ84^;M75wDOz!GGzp?U8(m@IRVAksg2T)c>p4_wBqdt?vwi S$f>iG{Xam$lW`n7Z~8x5kQ&AS literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_accounts.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_accounts.png new file mode 100644 index 0000000000000000000000000000000000000000..c5ac142e412bf4b2be345fac296e1e116d4885ae GIT binary patch literal 1791 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 LNkvXXu0mjfaTrgW literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_link.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_link.png index 48298e408d41ce5f496d2f40e2118655affa40b9..fef4b84a5568668b100262592e4fcb237956b81e 100644 GIT binary patch delta 1078 zcmaFMd!1u~K|O;@YJ_K+uP=iZ0|NsG17mw80}GJF2*grA%)r3BfRTY2NHc=O7BInO zJr*z{*dT=y4Bg%Xl^^tUaSW+od^>AzmPnw;@p4_J#wENO8Nw&HZ*=D`Sn`pvrX|9) zK*8*!^9_znmHO6eFGVgz=1x6yOiA!Ii;Ls+`}6m1J|pvP?)teY_Cjrymylur=e@ z+n-U-KCfZxjTslpd@BPFgs-z-_`N>*#s0rc&$l07lxU26V)E41%RfEvOw3O;`Rzew zRr$wnu$?#{`oei#kl&&`=F%@tIfS|`zmsvVuQB!m^A}C?nU2@|f9|_&^QcWZ(27O! z2m7x{_cbo*E-6*hdc~b=vQ0mbNAgALU)cp2vNa5$pQfMFPvEyUHIxbl0pBI=Uq;;PO8q)>Ct|is~-bv*hIq=18>FaP2#Je2T`lcQcPX(OEk4oA8GX z3-=dGtI0R77YRIRW!bK!dt#%hd+zVKQ_dAms#({u{O+M%rMs6mE}wd$((t%Nx{>aE z$2acbYtCNxVM|v~^PX-wEwCv_?dX!5YmfQp=4}+O-y)oy6Z!hc@~@Y>lGfGVFnFPHK*l<&mGd%ty<8tMK$3hQya&kDOXz#N(EKTk^`+L!tAl zrp^*yA8goqL&Iy)+|HGEX2<#JZAndh+LPNne_P?r*NV$Fd&sEr={Vjxzwy&Wvo!&> zV$q$<-V@ArugR$YymIn{9oY{AVx~;mF~6(CtNf~4)ZF_UZzRe1d`Wm?^XRwV+^He; z914pzU0-&1%HLgOdoIk+(tdula;be*&y{CWYZu>nQg?M)TDIf-ZI17^&%2R#NcG>+ z`mbEEKbA*`76-1oxP7Mijp&>?Sl4s4E(yjYmeCGHv zm3P{&!i)K{9XB4o_xVwa=x)8eB5fd7?@BoTKg);D@p2`D=f8AQ-}4U3C9FEPJi0Aw znQ8D?I?YmYrO+g!*-i`h&7ZYdr~d5`!`stVGr4x=-@5+y(S$8o$L-d4YL+cpxUKBC zon@uZ83(U--wr13xccXX<@sqLp1*z^=hiIxROa#Ne0-77DzA=D{3}**1j(zs6jfl} zcsYDlbobqhvv)NtyO*;-o4IUzN!IG`+&wRQtDo9G>dCd-rY5}TkMV=qi^r!#; literal 1773 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D%zlQKghN+NuH ztdjF{^%7I^lT!66atnZ}7#M6Stboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?} z6yY17;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{p~b01&iT2ysd*)K!O2Cbsd>d2 z`6V`BEhv&u3vKj4u0V1X#LHk&pr7ryZ1mybXUCOy=AIq{1FNN{i(^OyZS$)sZ$nTh) z!m$jg-3L1~QcLFaY!h}^-O8fFIIGF0Wbck`vs8Ahd46clmBQMnrtN~(8b-{!P9I=f zdNw@P>8aKSmI}@fOMmkIkT#NS{;+t1Km=P3+cxINBIaJ^1LBz>PgH%Ut!Fg++0l0R zfQ!Rl(|-%+85)`$lMsG(twi1PP>k#`qmz>j&tI6&n5I>`q`y8ky{E@i?Tlf^ML{L* zLlg8j&&Y9fez1l4Rga}w^u-6CChpm>EB(m%#5dVnFK#aOvvxUt!?cq7Y0ZLp{mL$4 zLCi79@oNh0C(i3HQ`P^Lvcui?)1z0OMSr&RF$DdP*`9sL^|6)eWaqh-#^uM^xntZt zZ}J`$S@@^nSKPwaPqd0F^@S47ov{`06nJgT)V=YPWsJr8mtsG=T+V5qH2B^iY#A8C z+Fb2*{D5EP`;gEdHod7ErG$_E&U9jo4*0f|_ukh<;qSIBns!^t-qZ6!(SAeC_~4Se zi!K#Co;OX{Q{cK`(2i|d+QAn;YJ3oT@b-?^9`Bmso=uCME-N&6CO?0NdBc>-0Fl2v z%f7iU*=!$RAE9XXOzmm!`LYk6T2;5}J=H%n)#z(#OZmAuMzY*r9?mt{-mo|Sly2hA z#|BN)O}>^+?2lNrJ^N6DN=8It+O|cfSMQo|eM6J1`Pb83)1nVFs=SzLbcxAzdiYlU zw&M(z*=KLtpYF4JSzSNvqD5|09wYmt1?pXgQ@ixmXR)+ZGwf^su`gTo#pHdKZjl#@ zxGg5I*oL{?TJmC->(Zykj7`-)X>XI#EsxD!Y`}T+5PL!IyWGe}XFmpa>J+d1$ROJ` z#jjl?cKPZpb7olkC(k|M-c#PW&F&_vtv~NB*BPh%R3)Fu)dv{_KH-^he2Y!zlp?9F zlD0c9!=EX&T3+v8A^PZ8h=GUjbHlZ2cQ-sebve;@$Jv<7a;LK07+?nJ@g>I=RmxcQdF?KmDI~e7kwC~b44}8h4^|w+nwTvs`T-BYV{TC{JMH{S` z@A`07-_!V;ZnMLQn_Ku@e1{0`$Bsz znv^+o#Y?VFzH~0v>zw44lPXtQTkAkM?{Mqhm$DXY$>+A#z9|-(@=!r+#j@vXCjUO@ z>>#>w;pS)acdaTHNKWoq`u~XJo+A<&oDZw=R4=f9xRIf`LE?dTuw0_E=!x7bJI+;$ zWk^qr6RBLad)vYwZ~FyL-4i(~xC(AR<2%rrUX$DE=DX;>!Q~#`bRG%jV-1E0*r*Gk bJb&2E)^EMKq$|}DR55wF`njxgN@xNA4k-wd diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_link2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_link2.png new file mode 100644 index 0000000000000000000000000000000000000000..dbfad952b21c7347b75655920d3be23bc109fe98 GIT binary patch literal 1723 zcmV;s21NOZP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>B}qg!ewqhMlG3hj=F6|^MU_@@OMNq__!ZR|8sXn_ZTXd=*|5w8H$V5Py3 z$N`0z?A@*`4Qo-{;$%ot@dep`p$?1v&*f1v&*f1#&7d zGc&UyCtr-K7u(tNK7@FT7+wM|gN@)R@FZ9RZi7F;U*Ia304I9A-gU|c*AQhH7zd}p z9Z6WTuubh|Qp9R+n zDpT~*n}Ywf%9F|MfS~t+#ge_kF^9kouo9->?cHi75CLGTNR*X{zgiI(!=KkPodhyQS!u~aguM-R6Nm$IL;{n41>eqYp}=FH&NnWcQ4<@ zn~0^AK2hd?uMXRvhk|X-I3N^Z{`yk}<)~5DugWG6zk=>o>X5T>hJsG4|HEjnnab)6 zQ8dnRw{msJ!@0e|sZsH&R9-kV3*g(WRNi2FJXs^;Bf$nGcHm>lKf@KUmbvq;KDs;WFF6+_X4K?rk%;0V-+x zu?Rf-Y=EYV9|Ec7kV96-nIqrtE*@$42-;sZ5_mJ*V!%C+YW2bD{pD||h+{p`|3~~< z!7XnPjDTyvvLzvovM2ZnBY`vJm6>e`X=qXJSTgy&z+)YFhz1bgxvG8}b?vkpI6U-NB}it>*}Y7DFeIW5g3uRg$0hd9geqaV|^Qk$A{Io%SGL;z4y2LqR#ILHq!Dvz*5Uc^#ZGCGBF`P|{ zqnw^g$)VpCk~e^FS5k-}Yg!!TlV=qJqEE%<*`cxm!J{dQm?huJ6&nshmz8{fST_Cz z?I8P3jGpaWaNqzHaA>m2&F6TO{mrE%j&dgKOGYM}2hd}|A@Hm+xLj2(ao%!-Mw#!- zaoOSIhT*9H@{&8INC}r-uJkR7IEn*eEh$-6i8w0^Pj`w4;vWm&2H-@}$q%nIIx~wHf3{A0TD6l z(MVIOYje@Z9@O*}yKf_YMVq#H%lMUp;&>v3&Lo$V*3$G5$qPUqz4b3aO1-?Khe^GHqL1XP2V$z{OcU&To$n=6 z60|P2P@goHo%e^eLgF1VZ&OP%>8lS-sY>wbxG&C2Dc^?P1sH8Aw`_h%LPG$JldQoc z)rD=67HP}D*|N(>L{b`Y>tlXRsag-XR0mC$-WjkPH2d&rXp(i1Cw`J#PoaM$u>*_( z{VNH*sI89rCeTEj{++~c;9D@k1lJA9huaV?|9i*}x1?S6odTT#odTT#{{s||kjJ2? RiAMkc002ovPDHLkV1ncw9Wej^ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_list.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_list.png index 384d177149eadc79a50593e9564d8a1f47a34ce9..3d4a79fd5b25ba0cc7c156beb1aa260ae6bc1f3e 100644 GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{jLXx-F{Fa= z?Tv%HhYWZa9GZ>@tvT4;DzS?DV-oMQ2Z1@A`{%}c>j%XbuKgk8+U2j_%)rRR!XcpG z&;VmR@L)<_cB3>lU+{m&d#lg)+mh~YoR-@2@zuJOyk8Dix;^qX|LOMFZsWRY@s~D% zF7xK>eVnp0()rpYDPxDVE&s(#n76omthD)Vx2bK-Qqx=I0cqBcRPP3fxWH{_U}&^t z%-?uuHSdzdFppzf+9GpH_HgiSPC9?PJmA?y18oyuVI&7FP=BBsX0f%=>qLn~%@&^-`0cB$ZgL1HI5aRYGO@rI&YV6sO_olHmMQMPu4?@) z;j8Mexyv)Fw)}d>Sapok?eI!9Z-&^{v)9)02i*Ks|43s#Yry3PHm4TcpS74hqc+U_ z?xmYm4bLuk`jD>0F?nAh~>V&-qll$y%>-mfgT9^hM9BXq{L(EeX^z?=_rZiPRql|OV~_P&G6 zS-+L0MaI8boqJRC%Q0^L@c1*I%hMjMxP6XY{_~%ux6Lj*R!_3;O}gF9cIDoD)?Lxe zUzg8~tW16LcGgGd%skE~R>D5tgl?xy-lx=H{K_x?lI8-Xv-g6YUazq%?`GoCSkM3@ z0v0!zcO6`_ykST8y(i1tekwdT!#-7%qvhv<2SIDL-L45R_!wR zIU43?iM0-|{C3T$U0W}+tl-vPh7elECw`gBdehK^Nl&E!RV{+gL*es+A; n-1IbkJIqe7#Sr4aInEm9Z?bn-I$Lg}fuhLM)z4*}Q$iB}_L|iB literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_location.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_location.png index 611c78c4c6884f90bcec81210db76123c8610d2c..1375e98dfa2db686e3e091c25f273805c90bcddb 100755 GIT binary patch literal 2257 zcmV;?2rl=DP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@J4r-ARCodHoNI_xRTRe^A8DCo zMdqj^jACJ6pk-Q9NNME<6H_BdMJzG=B7&It&5FpfFA<1+@l~j$AIu2BG!yNGhD2pn zB$%&!;Iq`Srr&?&I&;sRwa(e+-gECe+NBvk%iVgy&W0XnQ>{ybF8dV3x{XY(>H*dDOnNivRCLD2E0kCbn6AVJO+6U_!3yA7s)5fQ#l>0bO7&#So$-W z`?XR9@nqoHqE-oQ=s@HmPbmJ$nM;GTJ=g~d!PeH-k69 z1(0N)6QFm!R7Q^Odg-%lO)9duVAwkXZ&ElbF4t;<>mHyxC9SYXC`+SJ>2uo15bo%c2Dl!>@g&1J~!4ZLYd&|MkwuzJuLfgLOdMFNP-P^zCrsy?#Z)Lk4JIB%|eGL(6H<*CK~al8&50DXY!>B0X! zuGi|11FeFKalm}WV#lYCL!uF< zZ^4rW$1{n^1d!JaSgQw90`vPAwdFb!k{|L6@*b*3LkbXcJJ4=wzMbSEXfDEo_AIgQ z<|pUQL)UmbonF5pr9uWs3+$GKzFt_n3_sBEOBSi)`_}M>?uB_ey?#YXg$&T~NJh(r z_R~YmnvkU#9M!PmEnZ8Hr_<|Kgd=2tv=w8SSGX|taG`_i0XzfJ%!=$A z$0reI)5Q`x-_`IJy5{4sCUqYb20GWC&L5rlbZ$B^4p_E3l!@f0ECPHV0(U+`+f-m} zN^VV2+k2xQ7s?SEhrnLIGA(O*-w+W_;%ePUNfvRf`zrO}-j3-9dY0+AW|{iYC9USf zct}@R)$naeOm+guy$@)M<~wltuF^9|gR&0jBN=?x^Ol^7>seVoe zhgP<*q>hIsQ??d(GvbY*JmrW(*Tz=E(&Uid+H%x1IVrZ-5h8c+>xW5Rq?5W&#Awo% zQ{@aHJ%INt`h~X6l~dFBf~zee)wN7IdsI?SV=ao#vDD;z^C~Hbn)70`%&DZ7=2{54 z2K?*@)2z6Eb8s0?R0mw1g%`?^zH7=@KAxK5V+$4KUGLyLWJx!^NKC8vf$DfRHYU9? zO(@&ssl#8^iJACgYHzB{2qaWNU>!K;2-VlCx%Zwxo7gN~Ab!iFr!JACQUQq3AGCO; zrPkm@t`N=Q1LE~;W(ZHkVo<3y=gpp4{BL9_Mtm`~q$AbZQI^_VE=2VO-l7^!4VmmB zh(~0OslK-l=4!841LCGT!sR{%O8V+oevXHOY11p#*W$*Dc6pkGxK)>j_z z_PE5pzA&dMuMyfE{3^wcEiFbkTuU83xmB<5CpN{DsZ0)HhXC&@n5Ks3(l$gHaf!yy|-i&3d%yq#nR=tAK?Aqie-S9^_f;swzG@s~y^{AjGy2 z)cEtfs_I0!#n96tl@GU$Y^Qx&00000NkvXXu0mjfu*EHW literal 965 zcmV;$13LVPP)>|IQIK-hEZlP9!{a}dk=l5(K+8Pshf8qQ2e7|4!eLR#(rBbPsB<`ev z4vuqy0fv}hf*}UDz;QZgpj64hS`PCAdFGO*mv>mLc%y_J^b*APY^PXpM21(n%t8#( zN{Qlyrx;){e&I>Q1!Z&+hSQWPdOX5!gykX|6)j$3iZD&`f}+C#TzFm4;B8!aOa9S{ zOD*z?t>kej&ldT^eT?8*j(gH^HZh4+r(ECSP^j?Fa%Kn|N16*l%@lT`rpVAHCw(T>eI z1;9CM+7&i-Vv|(>^kB1BVWSC~YcivN95y=?HXg^SQbw%BszG6+3abtoaR{p#g^i`; zvAINv49IW=tJ@Vm`mySe0dHb;Q7-T)R+DVfJb08TtUBcaFJm{v1DXTX3}d%fE>KGl zBW%?yXkwHgHpm4E`JG_8sMZYB@-@L+rBH705yAb)5t^x|o@S2FM{u9X6`mjp&&U;u z$l=>48M(tTd^;wWcnse*%Psox=~oKm7Q66ipIqY(uH(x%Wpa;?@#Pcwz$&KkAy0+; z;3PhLDPLGe9``oLAI{?1SMrHkT&s~^oWiBk@{N^D;K~&D%Rk=3mG>0|%E;kDj=K~M z+Hj#wQQDLQN>Z1sv3pA)82iWQ}k#dEISnk6mp(0d`F?;fmPgK zvHoVY;)8uG)_%naOUSYqS(YeXsAQal8mCh6!!8zTkK%{|zF{H0r9kn-3Wf=4m=%gI zwh&aK;*Ado;zPw9CG=s{M@I2SC1Y5OQK4j@8H?wY92{jnN0lTLlVvX56f0RMXNcKc zFnNBFl$k5IIb(2xDv7Af%XOLw|K57`_Ut?73)<7fE nO!KsE9qi^6rBbO>DmBwTq&I&VHWQ`w00000NkvXXu0mjfD`3BJ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_location_alert.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_location_alert.png index 2678d0d752451290b34f1c8903f86998106789f4..4b83b92027e04a32d7e283a4bc559823cc36eb29 100644 GIT binary patch delta 2251 zcmV;+2sHPr67ms{Bn|;{Qb$4nuFf3k0000)ku@KG1E2u_0{{R30RRC20H6W@1ONa4 z0RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@TuDShRCodHnrnzvRTRgaG_5qzOs%v= z$ya7tsYPfMVU{TL1W7GHBq{BIMP@3E1W8&@eh9LHEV74MW>Fu)e2^I_W|F3rXj++% z%x5NlrPJ?k_YUXoS?BD1A7{pyX2JiSv)5j)z3w^t?7hxu)Tn_PGEhtg%8F4grEXH*vWAd*ilwiR>`qOsMZohLat$igTYl9oEtdeqsXlRpMfP{B?&vh zvF;N|=?12QA3>?;7Yxk=J?m_S2>w#=9!QgaPGEcy=wD|NMX;T~8{jyoNm_ujj-^Oc zYI6_)jv>GoK#RaYk07@W{08=AptSy?;G=&K z_ymjvmx0D1K_b@+OaZHbZYv+nMW9)T?bKxmM3eAOo`|>6{}5z(0w_}7Zt zB~1^dt0!S>JkYj6tLLeC1UCYI`M*IDeM{#%;5qOtmKle>fg5L7|dCqN1Su|x&S5YFJO^u2iI zV+HLleEw>!p8;v&b}8seK*=i8l&3NnoDBuKuMcI8LsN0&7{!;KZZ2tC;(ZZ`%qmxr zwq9nImN2U1SX5I*IxxKi_&6cRU(sh>@uL$#VwW9lTFtHF&g|KrZ7E$w?l>ZY6SmRq}4Bfag+3ajlK3 zMEmzBFYg2~$dMS(E8<(Dh62tdullg`OHKU^gVt^5idj#(ki@!n{%bQh6{$)=LE8a4 zid-(i=xTQNRjN$3%9X6%LS`j!X<&8901j40x|WJ;j|y<>6(NQ-bv8) zfzBi&D6OM{3H{#S3&W0B`t&BGV5aJ(^=AzT4kRmxp&x)t_h$R^IbuY&oBRFHmJl20 zbpqNuS#u8TN|kMc28f*IMwhn2$gk9aLJQXlZ3WUYWKfn2y3ZIk6aRJO$AGwpgv{wN ze~;zQIO#|d^if5HA@gzE z`*~l23a%L&L1bB#*^|gI>E7Rl+}en&PW91&Cih-{3~YrMf%Ft|?h-&7-Po0V8VLxD zHB5{IXnwgF=?c&pECVmY|AS*NVdFN0#~TW-V#}&0ofJLg6Qn2^fL6HH;7$(0_d{~J zA@iCccL-kM@~10<7KncksuAn5vgo5Xrfn!RyIqCFdagJGgod|L+n+Vzh~Ug@G>w z?&Dnf*arrY99=;{R4;BZlA?v=I4~K+eSWM3suq>&IR=w2LB9TAM;^g~{E!$eFvo%? zL5Bn%+v&TB6wN4d7e;z=76N+yi0$dLXwj>O#Yogz^a)nOH}l9 zV)J_7lKc$vsOEGduU&c4CRU%pjLuOiRRhD?#qR?a?S*+!A->R4p?rpA6rTKP#T!J( zmVpDnCGE^rH|i8*C|@BAtKhyF)CS3~cHBXP>;#Z~<)g&B1=4ysd9uK+%l1=HnhInRg%a zYl5`W7h0FTiv|x38K{X2rc|H`+ZzJ+CD6exr)RxZ(R3BS>yRpsg+iiLvr80>?gO3ydqJsX9~Ed+9bfi|qLH1!ec%t!)bbY<&H|mwGEp>aF!&M_ zD*q6u$7UO2Nt<4%Afz)&ZZ)aD-;Bq6Js`T7hjgDA}m7dPJRCVk`odXih5a#7zam zf$tT3r`3U`(9}t-VHKs23@iPrOtDr1YfO+H@S!+by`hd38G%v_*DUG z2{1pZ(IF=)&@Z8kyX59jyzB&O)GT%p6sUWdxTt@51V62lT(S>k@kb?)baSzz(_9gJ zo#WFJtOQw$_H##tejt4G16wQZCqnU2b}D!sBt_XjHx!Id4`9s$NxocpH-%lfn~1BD z6dXzTXj|fvZ77RBnS?~6;05p-(3@sLC^@p@cMtH1jy4_zBSDWGC*`i-Z15mZoj%dy z=AD0&uxsz8J)uj+v$4}V%}Lh8 z?cJ6Tryt5C_aqabFPE7JHJuN1_M=y`uA?#`_K@&(bsOfnhRa2UKBxXNSID~#$h$B8 zmSl_odK)E0_h%N*?q{Hmk;zIE<$1nH{B#28k`>9gtVYljNb|XLFMX-yBcp=ehQ5DJ z&FHJ4@R!4acY!>Ir6(Dw({o(EIi8SxRW*pQCc zD}c3Gy)`2Kb2Y#rG0TJh=^?n=L6TEd|L_F1 z@$20+8d^x&fFFQMQgsZ1nJ#}4bl-!hM;*U@;Avnb2UG23MtAnB@v%N8KEK~7rT~$3 zu%yo?sb1CiYl&bzszZJ4A+9&jA6e}IK6wLUWq?cTxXlL17+-878zj{R(L;@#BNT91 z=Qr0`;l!K{bbud{k8$W`@#OUQj5Ub#wWHBnH8iwO$r0yWm*?Hb-Y$PL9Iblfen04J z#O2hVQW(v?Y-dj4x{?6B@n*Sf=$<8hZ@w**phNQm>hCui`jFa+v+5C_^9`A(=ncwe z(z#6uomIRMgNskgkvUe7sVC#_8pCn_XBjitVSuZ~^2wu>1(fBHI7_K%pa@s@v$#At*+0QN>UBb*(4W_e`{N%}8YSE*zicztq)D^YzXOw|PBPcB|BW^q~zBNe=BVs{X-WKCef|dcF zEN{-8&0ntO5G|uB+|~+SE4h hY_zt%H3P{E{0qoT^sKUt{!{<}002ovPDHLkV1oUcTgLzZ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_location_alert2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_location_alert2.png index f72a6e1d69e59f1224a3251dc65f71d157ed2ed6..836f50bd91e529d0acfbcee7ab36a62db533c1fa 100644 GIT binary patch delta 1467 zcmV;s1w{It3g`=vBn|;{Qb$4nuFf3k0000)ku@KG1E2u_0{{R30RRC20H6W@1ONa4 z0RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=Qb|NXRCodHn@@;URUF419Y-S#3WKRo z1P9ANMco*>m_ zqH#*8XTuw7-ijga20KK79a0_2Qv)}9HF~)pN`yMGSX1tfB=Qvh8l6&SOaq9Kv57ip8oNoHN8+D`zu{(5bwXC(ExF>O%J{WL;6#JF;($7xuO9g>pmcj zx3d=r>7kvQw*1x>WHA9PqY`;7ni5hF3~g{sKobACgA^Oka|bC8KqjPaX_!{vJ;_Y# zy`L8#DM&tUuW6Na5~Mr9&~_jL-SWPpTJCqPOHs1qP12UK=Qr2v#8q}dX?6vhnt z4`iG3vk(Ei-b^xXy`8+?-pjV>Ik8Y^6d*tD-L4m8Zkz#0;RJAo#28t|C%?IAb`WQ} zPYcPnX;tC#0u%sgQ;Ryp{S#`MxaNK(kyL&beu8Wp#1ZsHkMTZN(pPqWAx8T!`%Mqi zxj`b?E9iz%Kx0?d|GXO`F>!n#ZEX~yY`=|BSEd*w|3xW4Tstxa$k>T^K9D|Poc5kt z>g&yz+P@n~K9fv}$>M_OtG|fp1L;G?X{*_^WC0M=TUQh0C|+%N}ut_*iMHIMh(}D`kL#t>#JZ5buUMIHi-qryw6Y z=vp^PM!J#?wTtI}IuB|WFVk`UYIo`QTc*y#JDnQdY~Lc6%<%h>%&cvjWjjjK<}bSh zxy-4~(%<`euf>(Lt298gLMZxUlx0r!JN>3;FL!f_Nug}P5rV`Bpl$q!Z zdWj^SqT^_CiI(xlDyCO}2^>Z7G!p>r!p)EN!c(w$zl= zAt}tIe!DTI9SJ14lD;ANm_LMi(L&UM+E5QVj0R9}@5O)Vm=H)?Dg`N63=5kUoJSq$ zw+cmFdGBan7FDBZZ5UH1^_7&xF!RWjCRdCuntHz!xgOjqlozD!%w>YKGty`?8*_#v zSCTH|UM$VcZ@$Pdr%+y3l4(!cn(wMp&IX`i6cw>|+)1Wn0@=8ApKceDjBiRG49nM% zB;g8@+yZ|z#%B^!Tmf+Xe%+YRSn4mhhPszDd4aQ9lh2fL4QN9O7cL+T8s_UYB98jRVro_R;YZC zFfBj7yhgf^2Nb$fk%;I_ErrSh3A0_u1c#>jzKHc^YNDn>#fOB+mFN|Uildn*#0+9W zg>r#Zi}9ju#+*DzehK)kPSVr4)2sI^qQWM)X2HtAsfY}PHDx1mg+gE|h6 z%c*r9wHj(V*|-h0%aP`fX7wC*IaX=u5=aWg-6s|MQM>vHDij6jwB>)_ zVSI;Uz7r)4d1@@tGu2_&j8Vu0>2|oU>AY#1E1!gqF*Rf|){s9(|J0wDj2WQLHZ~LNb^tZ?pe0ED$<~if@izIw(T6AC33vjYfG6Mycmke4 b&IEn|KyCOM*q!Bo00000NkvXXu0mjf(@97L diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_log.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_log.png new file mode 100644 index 0000000000000000000000000000000000000000..575b95da3bcb59ed80ab914616d0d6f16f398f7a GIT binary patch literal 1087 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{e5I$0V@L(# z+vvT1qK+bL+*-OzoQ18le|nQL?xTs#u9 z|9x8iCYiMFXWsp}GxN3ONzUqL&*!|aDKAS)pB@=)Y{<4MEx~N|TPJ&m^$WK5ewvlK zJ5*hqN$zC6L;u41g|UaMw%z3D42_Lf?zlEvble6c%Q}X#u%=l>28#5Vlk;VA^v2U zcDk~s-qWCMDT^{Ts7fE)H}!4M?bj=rJ^uSdOejTX*5^DJzPAEeEAUbDAT^p(;}6$w_Ec;}@)&9dob z4J;P7md3CjZg5|(e*b|(r>sJMp#QU1T5hLQ%g+4EvcI{UrP@bt-|7g?pSrBgf=e#s zu}C^{F?((8U2umbap{e=y2gLcR!wx2X#covYK(j6>eHseQ|A4iR@vnGJA9Kr+i#H_ zao>+h&f>0Js?f3Cb^1r9w|p$NoxTBGmM@~^PqdVJK3b;mLf6Bh_0)N@l{*q;jwRoD zA@o) zTDNZd>#396>%tWRr>W$1dEVM4Ra-paM`*WEyPr7A{3I4pS1%0-Wsk%Qa6?oDL^6L* z{PMc>P;j~FbT`erYww!AIDg(~V@tfRTPJtJGmX>Q;SAk7{|4-jD^c}rN}2o3XL>eY z*G}G!m)@UD@5mYJq>B9L_{gPF!6!A@ds?)Q&^DdfEGKU)y^|yqZd$g^a)p$WN`SJ5 zky4Jbhk%kVm?hs-@$A*S1VfE)KMvY1&|S>@x%p01?6c{1EFT?aO<|4yBa}XZxppTe|)~w_Nq%ibP0l+XkKon6Uz literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_map.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_map.png index 82b2f7f5870ab9eb33a99c876e29e43cf5bc7f6c..0bff5cbf7544223fcf83fcafb55d1056939d6d2a 100644 GIT binary patch literal 1219 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==Pq0fkoHT#WAFU z@$Kx`48KB|R98>0N!q85s!i0GbmxN7)2&B( zr*rEIK3yyFGE*e3t2`}%Rt=l^^Ep8x*meC4u# z{(%!`Y9?^aU|QCIppJwq2-~aHxz*SIm)Mln_$B*viqYMVt9uUdw5)7>e1Wy`Yhi)( zwZmHiD{kJ@@9frVoLazd@>=zQkcngDw^KW-SDJFB@U=g%l3{xpI6?iGb?~h417;Q6 zo@-_=xqN{^^`6=(h00*ZXCDM>%BCO8TI#baPl~PoBLDp!p}txr|94fkBH6}j%eeRs zgkN~0$oP2ctjeF60?!REsjc}LFT6qg*{;cHIc9Sj<_jF3bvJ6|T;p!53bACf!1s&9 z4YODlp0~_sOf9gK@cHml#nkao>x>gM6UtlDKJ7R;ckR?a9S?XOb3ahn)8BD2eMkF~ zunFa}vTYx}_If&lugKB=uHU(xdlo!ZjTFp#b%bY*)xV8AdX32f|0X9Wm_4(f-+7;T zsw01V-2?BplhwLwdfARYF`TqM^!@gJef_MYBYrKS1#&5(PqOkk?l4Whdutz4p3lAK zCO02se(BiQcw8fz**~s++m8e8ah7Wuvp;axTs!t4s^d@ECskJ4px;Y6_sGO%pIq8F zTjlxAC#}gIE5BS#)R}J2{LhQ``nj?-V&|vDc*y^+fBofa@}BeN^RC^fR}P30m)YLO zxkMw4X{JLLQ`haV2|&(*9l5O3=2qVb7r3pZrcwN3`Q5{60*6lYZ3&I3ZTDxa*>t|p znCC6a=cBz}ZfxK<;;R4T(7VHeKa#EEUNmJ}++)@6+|O}Zu}C;XL;tz+tFsNY^IG`l zZT!=gu_SMS(lV}d4ndQ7A8fi`*_Xd<-=aJj!^aB*Q^a$wtlOfU7Y7WzZV`@n%{LAC z6Q-T~w$In#OEq8o!v}{xTs@Fi@w~hEm{ilAD|VR*(kijmCmY@^so*!U*#d#vKVuX*liU``vK#*~x)@+!HW zERTFC-FjN#oLpLD=xW7Jd7b>P9KX3g|76X5C@I=na?`Kn%hz`WPgMJ4k*W4xu~L4j z)yqi#&gs$$U-KRJeVfa)>2my${ymP7>QkY4*6BE7QQh& zD4pmPknLhO)4}vjJ9h!|w&p)ij6xTu8S1nJE37`09xsu@TIyUq>7;1cPt} z6yMr2Gvry*xlV77I5DDs1s=U-F1``2O(PyyoU>gTe~DWM4f59J&f delta 763 zcmX@iIf-q8ay`>cPZ!6KiaBp*`*-*TN*vg4o}uBX?3v}!=_cfwVZtruH7$5^g|>I3 z$IVlDP7xlwOVb(!xz9R@iOsqUI9)4p6@Yg}4=Ztwk_-{*b~+800f z-lMt2``-UOSNnYL(eIs!5^Z4QRwK30nklqNUT|Wf;7$E{rE2bHHo_CPNq?`Z-PY^& z!JS`OSj6BQIlkNRr#Z{HFMI z%^Nl~V7km^m>IHr*Qu%l_cAK=7->u_^s#iAzA9yXtHOoUWV~@&%=m#nr7Cor@ zaM5x(zXi`7_B!_o6JpP$H>}eRmMR&kDIIr72|qX|T&d`K?;`cb>wokfsPFo}YeB^CD`Hpb#iv}W@8JwG zaO6_+ILM+oLxELzNkWr|&x9uO1Y4&xwYfZTbUf*GtWZ$WLt_8-kQGAF+%fz*i+?lT zVc^>(WV7~)xk-DDPSMr;e%t!&sEbcoRkq7m@YZk(JbpYk+WyAU1#A31v3yvja;-w2 zHC4U-%2wec3e}(Fc1?QxkE`h#vv|zXT*=6#?-IBi_bHuoUZ-RyI=}Jsx>frsd}>}t4gqwJ2T&({mCi7r@O z=(O^7p~a-v8aX@H9h~{&xYFXC7S>$PY|cJ4klj`IrO)}W0S_372~4#AZ}^L=YTDgTe~DWM4fZ+1_> diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_map_type.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_map_type.png new file mode 100644 index 0000000000000000000000000000000000000000..27dc80485d9cb7cf4bd94be9e913fe8909c8ab9b GIT binary patch literal 1409 zcmV-{1%CR8P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS<>q$gGRCodHn@gxpQ545rM7M|t zC6v4d3={_P3XuVlky3;rGl`Lri5OrY#YmcyvI1FwRw&Td*EhHo zL^>o|K?YHJz;5seUSDUSXuA!EE6fy)Hv8wI(PI4S35;_8%`%L`~sfBooP9Z-5-0)QS5&vcv zA6*CXTc-XexZ1b+8l;ziXI5qS9)j6cA^7KX;y9F=@+`6XX_XJMd%?HTa{f3ja2Odv zTya40mMP!fkp3ErfncqLNB|H`_@qKXJai~5u0o7Fi$TcHol_-G)V2^#dNU0c#uOrmL=K*GT@l zOdXMnmZ(BU;$d)nU7>4#Qxe}alIxpmR3zmG)-UL`zsd>`Bwq$JmMv@RJxKS?6&1=4 zYf6$;Ku-nB{?Dgazl120=Ry5qlpPT%&!o%5DPBjYycR18;`)q8vw=3iEYm8y>S{j9 zMx3jL+OJW3-VX{<8KI(XY}GA%NKMgWG?ajblw}%{=Ej!%p!T5~U4W1dDXh}Q7VVSX z{6lJr9z&5`Z*0+~vFSq;0VrTCxZJ_|kWPsW-Pl@0Y?O^S`WX+7f$QKn7#+g3QVdBX z&QDOZQ=I(%tEkmEF(DgU#eQ9%gO)HfTnhfZ2TJ&QU&b!NlzcT9~@5-gk}2SSFCjJO|5tB6WoFZA+-Xehb=0A$SzH)ZeJ&Si3;3Ay(w_ zos)fmB1L<{jGS}9<028q=lX|O=iA>(@=p!|#Y^Wn8Q~L(n9A=c(#H zY|yL8#DzQ&-w?OX_XXAJS3%$q`1jGzrN1VhVuFhI5vHGwK*C#g59d^0U&;KC(L~Tk zTEDij10_YV70?I1M^=)Pl_?pyP^B|)2s;Fi@fKD~{$rQ5!f#zSxf z&=bruJ#n^$5+hcB&3$flh|jw-5SlMZ9EA4)J&`OkmnbyU)9nEGVReE}Ur5l~YDtO@ zO##HXiWx><3z1rIcyqP7Fyl7Ns>)4k{*h%%oVXdSh-qqvYI zic6taTwGHtxwdppp&?6@qDZ=jO=%1NBs?fMWQih?P5|$2WfIa&B%%1SCCUeUo0{O% zx||3x4V(w>frPmTX0(oI(}WPk-2Z8sU(TNu$O>cyvI1FwtUy-ae^THV2Hx?^0alK4 P00000NkvXXu0mjfnH_yQ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_markread.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_markread.png index 719fc2f16a207ef246fcfa40d55699ff39d9ba79..1adab64d4886d4e09c80f82949c111c475fe3f6f 100644 GIT binary patch delta 2301 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8 z?*IS@a!Eu%RCodHoN1_4RTRg44mn$C=3Ec8G)&7dhjJ*%G=Eeqlgbi`^h*{>Xaq@t zXxN}3Wd<2xq92qJ5-I#(gF`-YARH1FoXxb?@2~gCz5A_w?>Xn5d+t--fgASl6Xq19-I+4N=jyu7Q zl9CeX5|_jZM1MiL(YyYjALs+xf-vz9U|$B-fK^}(t_4Pd)gUQZPoT#^ohn@{5_|~!1d1iQ3H$^IbL(cUX)Ht})P*ST0gW#~;2k|VQi zw2uZg1Cd5Bg1ZEa02@Iz`Gv;r5kiD_A<(_xc$RFwr)?C7Wqb>oA@PQSO~5B-Xc!Tc zFOnSr27iETRr*T7JjXU(*rJ3>U?gI`j~fE@}KVM)0oiY z5Lt_^KhR$rnyiXAkb48L3%IfaMeV?8V%*4&ytEO{_+%6Km{7`{c9 z=zrrw;DkdO(vKBJ|2_*ugJTnL+8}r|5J5slGs ztV{5B^jGC{PRM{Y z)-WxjB#7SzgY&+0E_V#-nBJKBz0J@irlJFy9F~G!M$kj(1~I1S7)7kUWz@he(0?^X zl!JyY5f#Nzeha|;M!=)!22-4Tu5hbw88vVVWZlQdjO3D1y+a^t{dF4saEh}z&qS=g zWz@hekoB%g$wU^e0&O*DZB-hE1pBGjk2ieIp?ieltTx)hs;s_c?5Vp2I%z}*yh3$- z>Ey%cwgZhJ+c|&6wXx2zdk+08Mt_^$x{jqd%Z;`uDt9d1Fez;&EU=U>d`K)W{o-}cx{rZ@{cZBf)#->lp2A~(tDC7dfOqePYuM1Q(usq<+T zCvAEqeb(bM!}7^TN1P=_tf#%47=3x7BH&&v@i zQZu~UMDB=x3l>AYc>C9J&}nIu4Di#pLi0u7k$LEAf-b=K9_tg@YDI~k%?C~`KCQlH zO!JjEaI#jH&sQ=GsDMvT&U1iIRDgY+#xKy<4Hznv8N9=cn7eb5;PkrTnD>+l=W7OU zHkJNR1$zdBTN8#W9|S3oZ+|nXMNa1&24pkE&B$}EB|-BXbdj6kt_!RQWK>R495oL8 z23(nt(>Z_vq!WSf;{wIh?WQlv3MTN6Q6NW7ac)ifmGi*xEyr1>Dq1X;JUnB8yRCxi z!a!Zn7m~!#Hpf;4b7X$yN_aFlYF4rS%CCA{LaX6_45Y7lw71+RG=EV@2VzVDmfRJJ z3WlWyi!Q@_>T1EI|rDLT(+vAuDlopMpyd z%Xx)|s2kAK8s?1U0kVm93@3wlW-DK332;3~f3W2Ag7owGROqql3f5jUFaMjPzV4a| zhJdCOcD|!*Kz|?b5?BS)=^(NfBme%gFJKfsf%I2!Mf)~2eSEYv26_<9)gi5LHM491 zUxSsP3~U8QKv+?{cR_Oh0)SxpCkL)fw~B*N9WWmF)*voVT<4nBwF6O@S<33HbOh9b z%N6YvWvnGQ*H*$5;M;(wsUV^OdJZVaioUk5FlqWpX@9>fetyZ1V!RoD<@ z6MbN?6X+d(8CU~0Qj|o#naow7*(5U&L=}B(un0_{LwhU|{s?;SrP)k_s*bv<^#OrC zq|pD}adr@2@l-t_`PCqbXeL<vnk#h4KtTo|%Co3Ym#r)`XB6qPF1E!KhT)&c7! zo<3yS1~!28U1+ delta 547 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 Ef{C!oPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 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 IM6N<$f}9CTssI20 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_mention.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_mention.png index 662eaf0966afbc26e658b76bee1c3c54440c562c..2e3b18c346d4e2584f9e976336eb129ba24c085b 100644 GIT binary patch delta 1895 zcmV-t2blPg5cUp`B!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000;paTE|000010000;00000kTFK@ z000KyNklTZLLaeA=MPog$tK{6cK~uLw{^BU5FbOEiMcN!Cj$? z(6x|7m(p%rNEVW=3ffu~x=TW$lp^9nlnUBXaHTD^ik3G1{>gju-n%(>a_`K2?@j6) z`19_Zd%oYiJ9o}ZGB8k6U4gm+bp`4Q)D_sO6&UPg;H#^vJMs4_*bkm<;0Zn-ZGew~ zTMhii=Z_6s=6`c(aB%Q1KJPE0D0{&%umJu6MM=7{AzOR5e3eLI44emdKx&dr*&f?+ zg(B!lun2lZ@-5-fOuM* zMOv^Q1J3|0@gRzlIr=cqwvXw`Q<#?=* zcP8O1?`Jj3e3FGftUT*d@(JYIM{_au z3d`bM3xBdjf5SXd*l;36#Q+qGMcrMv@i+yntCa#8O_XD4Gl~URMN;hAj-)3HYZG__ zSk(73$IX}^btYM)9FlJ)2QWHsd4o6W23M71#pa25K52|NneaH$m7~ytjNTAz z1Kp|LYd~Z1G$)y%A_<|V{gUtMHc`Z;se_Y6;D3_#9?_R_basIYz*@^-n(@=X?;ldWC6c3Rs!(GV{L7a$B23^E@_J&yhBD- zdz2;DNQqTXKFw!Z8etsuO5^Yoic)S6P#nYT*e6$qtMQOpd&Z1+XHa5s%aKVV|)CNHh z16{2-KDy4tq(?PlO9n{RN5N|n2GlBXX(4kKGr-DDpv$dG2SV(iq^p(n^VAvfd5Dd6 z8R-D)Y?644nrr5NP>2t=nVmDpL5-G7Qw`>^>dT2pv@$5^T4GOc_H`~T=jxoT6P(p zUcLwRD0+&KJR3E#F z96!k(WYe2dL$8C?uwf+`TA-&p46YyiWbiUpOo2u-t^C19OuLJrdN-fstA7Q}%7)bk z+ClL`9x=aUc=^HLWh`HTE@u+0!6Aa!^m59pC;B$OYN=(Tedw3ES;dld_B0*5+#KY5 zzHZEYZ}9S2B(hc79fX?E*}SZfdOnkE4b(2#ou}uWL(yuOo%Sj?6X^G%Vb)4@ee|{y z#@ZoM+rT%jFvk}y`5+$3Rex`}-Zm0e>*GW40?@johW%^cYhcmgpki1;SW}PK>IzO< z@)i&ML7)bEYLd-&OB($aeQUwDQn7g$sO)1OB?r!eBBWNUUT7~z7#Z_;uf&5xVtWKw zYo#abHMV-&N6J;EO&ep2hBrOV-P0x(G(<y;PS z9rO!FZv+J!Dultw4i~M1O1->5Si6BPEa$)#pr6rApg#7e;3%-}#X?Krm&35t?1o+4 z*I)eEbYX@`(+zeqvYrC>Gxa#% zlp)nW7VuTHt7lM>MLM)(WT+P=)ydlr^dM4b|JM}TI1VK(=nLQ|i~H43rCP48KwW{l h0(AxI3jBX6@E>CPY4C#;?vMZg002ovPDHLkV1oa#e2oAA delta 2051 zcmV+e2>kc<4v`R$B!2{FK}|sb0I`n?{9y$E00+oPL_t(|0qvY=s8v-I$9;}z=7&;K zvo9hxIhB=ZDUw7XL5fA7NLE^y&Q$M3akgsCCh2(vR0ocg6s#DG*?!f zcK)RN2*|xp&3}cEz$S7B7lDf-?qmZt--A!V2CxV01qVQ9&<&_FzY+{fFgDR~2#PxM znRMpjZ+Rgxoxm#~MmA!kyPUa$#iu)%23CP`eVY2GDJ`BIf>6*Of^xDFgWNh(xb&;| zDmVpva+-=+EtVu2?*;Tkgk&9+qpB4o+{3^pp#Z3Rrhi)PdwFS8PfjQ~$EcqJ+IvZI zte~Cg;3)9P{2ZGLQxSpsoX~5vo%-Bfr*JgqYH4#M*av*_*g5Mep3!=!L*77r?X~j1}-a%c9y;i=9B&H!iqiaj1`ur-=(}Lz!mgv3K zNH??K*Aa{X`n6jDc7wmb-(VM53+96HK+7PR1;0ta65Z5_IL#m+^G!VGm<|CYT>2H9 z0Tg7c{Dk47KvR%Rg3nSIU|^&Xkp~rwo^%NK1Uj(bp}QQ!pM4}dFk11{}+ zgFR~-CANdMRuNaSkiIh%NK9SAvC^=;&Cpq@j|}BNL)WPCB}m)BuIzCYp0c%I_J5wo zwi30)H9nGPt6`U0g0wXgBUXYo#yCdWSX{x2Ea3gM;5 zo+`sEO4Zk}ikg|z$saL%gE!vy1b^xK99LqORd>0Ll&?2*m8$aODjS0@LAwplD-4~b z`pQsdAB-6!i7HPnQ6BR*)y~^VTTj8z5K%$h#|7uIw$37OjgsTUMLqEhOei_1;-iX{7UL^?h35sj>#p)h63M9zyaV&-pd_@ z{D&x5uh5wYsT&RS)kmRdjVL${GA{3|3dhxjOv$-54>CEhzu)jrRhpHT?UQ5!mZeS+ zM{ObLbuJQgLxHuKIJd|!OMd~vhkz@`QN#|)v~04-B`7FsR<31LEw5Ix17)lr8t!R) zbs5)^YIvptYvJ6}M2UJkng?8Bbdy1BlC+|Dx69F_GK9;4C7CzgAn6S>1UPIFdURi+ zR}$L$E`+)p!4?pbwNzf^<~dWZ z&IMGPl_Y4VV!f3ibQ^*DbX7Z~*2hm01_SG7A9cefPfpD5q)kKwO-u1 zueQSIxcJ9`wH1uIQR+F<_c`9Bhzgr;8*W_q2%u>|Ingv@As7crmLyv1)s`Je#{|v= z>*;t6Xe1jW|6rsMuJ+2e0qs|vfoE%m>hnNI)HJXIG>2#fQL6-+QnVc*V0|R6nfo@- z9P)fMv*Vp1SA5ziugFR82LAe+(`i5x-D-;3shZ@TpfpmFbP6m1npuwk^T3a3eU8UX zIdYXy<(;26<{_u;dqQg&8C)tS_Wzv hsAZs*f&W(q{sV+5ylx^k4L1M)002ovPDHLkV1j!Z+tvU8 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_message.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_message.png index a13e9514fb6b0ccf09d1224ee396e047f5804bbe..3763f05770cab3f2c61a9788dabcaea1c6d5ca32 100644 GIT binary patch delta 1548 zcmV+n2J`vn4V?^-B!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000;paTE|000010000;00000kTFK@ z000GtNkl* z8ue35@K9qA=M-25A^V5Qwwj z=1^(saokBC?vR2L;BIAGLlVYa89l@ZrCul8+@XvqGzoqOKD*Dv8$&5xL8_WSwSA_Z zCo3ohpMRpj6!^o}0sarcvx8Tv$DrCp4;)NW@4DbOZxGJ_-^F-^xzo*8t;eWdfO@h_ zYnZ9W?8$;~8u-My!`vZHYNeYzy((P*H^CCnq6D4Gr@30MdgL7f>di8(WxBGt*hz@? zf`?WWe7C`#Sgv*)Ig{WPh&9C~Uq8s%1Jt8sT7T2tc2BjA5NrXTTkQB2!R{1d;>C9f ztb$Zij&ipo*4#~wdbLbzOXBOPP4c|Oitk&nt0y=xAbuy%hs!}t96JN$dZvlr1=O=; z^F6__1DKA2#|GnX_zuMKD2{kNa+(mQ-Hy1D{`15i0P5W}t?_8ede&n}y5TYv;}fZ5 zyH`p=yMPx&}C zSHxJ4WO3HHa9m+QC-7_q zT8nGfqbSJQ51zQ$j88@pl!C}PZ1Bi+u74C3b*dZ>SMvKLcupEzTJ!#3GX$MClBIa^ z-Vr%^qvx8gE8eG-uR-Mi>zZ`Im*expqwQepQFPwTu^OFqgBV|B^J&fShg{Z&*2{3M zh7#TRBImN}XKd9l!n&?vEmymq&e?3|%y)va_ke537enzwvg8smKH{q#@+;Ti(|?X+ zvcaPl57+JmiO6{5W-;CoOf&+>TQRt{8=+Ayxb!x_wUwx3CkT=qE)nBLPS}|B6mw%X z`nb+hKYC4;K>9Y*wd7Zdg5aS`#5n0)xRYM4y`ryt=$snwo&0N!x!WF*$8^m z@Wr~UT&qS5pS7mGwOax$80=?wet#yv%)@ij;5rMJRo4jZx{92$T~FuCs?nLWPKvdh zG3Guoe7!D`^BcupN%}{Kls{_p%hL5AQ2wymmBT(mq`ci>OY@Hxf%1k~l|Y(9q_Jv6KYaaIGOk3AoqS(Ck;w?FB5id{(U#pK1ct_L+LFwegqI$9gP7RHj-R|ECCL zg=skdn58U8)j4AA1Num@0IZu3a7USP#UZZPpCwea7MyG3A|0$!3SeQ|82)E|P*-X_ ypJoNJ0$G8qKvp0tkQK-ZWCgMUS%Ib$_#3LPE3E2SVu}C&002ovP6b4+LSTZY#M=M> delta 1751 zcmV;|1}OQR4Cf7yB!2{FK}|sb0I`n?{9y$E00y2(L_t(|0qvV>h*eb-$7d{`sbOZJ zRG5{PeaZZg7==yKNJSVZMNy2zKo5g5$f!>RL7(~{3K30V2}*=f7!~;lkqSfT{TM9* z3oWz9=tyQc)9hIaK?zO6vr0$V}7 zWd{K}8n#d*cYhIhyWUkX;_1h^G_OKcJxG(x=_K<6cpQvNk=QY8c7jjA*WerQD>xj1 zP0Qp6)7YxBbHNqh8ZaIt$#D#x1y3@lYkzoz;+zjY07=q|!E>Mkq$#4=A$-SzcCZ%w z4w7Uy2D41ES}O^>7#vE-@H^UH;eQ>fl5 z;j_sT?7h^~-ekQJg|9;>vm^osG{A1%jgOZ|tArq?~++(@RAp#k)5rdzV_^tV_cu zU(%oly}4jw1noQJaTsL$Y^~1tgaM>z2N;$Sl<^JQ|Sufh&KbSOL6) zynosv8`-)d&ddWhKGqK}uFF$(NJbdH2wbV?RD{I3TdBisX%mtyu!^)TEl0r)9*u?8 z%;qZvo7gSRlfY5n%44yPMk54sT$1Q`g<&46!cS+LC7GX-AX#Y;>DfqgzNClTB=hh8r2KTNX-1F^F**(COMLzpDJtRFY5yzSxtVrZ* z@by$e2G6wy*PcW!ocat$O@U?>c=TT7N~Q9u&ZWT#PU60#7Lu>XBd^`YZb@}SZRUw8A)^) zy0j|G*NTybZ<%5Av8%HR^o480@nS=lMzzH->f*w;;u@wys>r8nNHe%+#Taa~cHq*O zy4+~nZsjlUvf#xEg)&GR}FQMPFa&=x@BKj zUV?ZHK27z|f!n&fp*BUfnP(59{8yWdrxsq!OwKli1p(H0 zf*eDCM+yql1YbQTY0fC_!{Hp$IY9|$eLfs24}zTr-T;>9)Ysyvh7t0a4(j*mSv@D< zSnw|J$z~d~B5YWN9CZ2Ce}D0UdQD(`fO{YKM3do5hoeHooeDG*ST_~aC#AN_Uy6$K zS|Orms}-kL)}v6w(E_T6Kw~VRii*@qLQjJ@(b)73xDiynSkx^xoEn51a|vD{SrS|Z zv`QjL_G0i1SO_vtbri+ZIM@#KJQR1v(0o#M^LJLkzmjd$zbpx8xqqErKbE9S;1G72 znED)O?rAU37Zc57_5w|zHpenxIx;8}N@tVx6$5o$Wh>FNwz~0z#PllB1@?h@OJn~l zLh;W%^ue+o)a;*Gsvd)i3uEn*ye9nh&ZY_XHc-(wHv9^5kewZ1 zGkBe^q(=)4wb<6YKv2a=Q!KrS>-k7aP4tg-f;t_!BhuKh)8|AfW=G t0-*w-0-*w-0-*w-0-*w-0{^=T{0EfHLuQE98NC1i002ovPDHLkV1i|FNrM0Y diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_mini_customize.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_mini_customize.png new file mode 100644 index 0000000000000000000000000000000000000000..0a6367cfc35f96fd40b3de3e2ca76368b9730a7a GIT binary patch literal 774 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUU@Gu*aSX{| zeLG{X7qg?labd@e24;&|*DiJ1a3M$_rzc2)b++$=Y_;KNpWZF{+9hh;J#wcZ?;o~e1+XV^BdQBhR@d6)7Wo$ zM&AAuV}eyr7(>Eu=VjL!ICigWVNS4~S*-A8*<~h$B<-7j7ru0QVR!dnSjn#T!y(RJ z?Z0~8oUYgI5OO@BcjMP!`Q{m?IBh5FZWUTLcjc`o(~f4OGIL2?u3mBG`m9BQ`M3WT zB<*>7g_WUfvU|_=x%-$ME~+h?_&}Lgk$56=4-?mCjFhJbcIbXmYwUgMMm+{gYXHb>Ba4W$4SO`6SCa4JftN zy=?1mfsOB{OHBDB5WlG2*dWEI-6CMdmab+sDYwZ|vzN*+Y_m^cV#V;C@B4+n_A$ra kpYr|5+7rwE7xRDR{pHxcZ1Te=HlQ@<>FVdQ&MBb@0Nk%lxBvhE literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_mini_premiumlock.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_mini_premiumlock.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c6136b96694c069da29ed8823f1777f4012fb3 GIT binary patch literal 632 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?od*tcj7?Q#I zHp1KQuz^5sz;usR*;lqZJoPWgzMi+>mFlV3gtL4rx%m#RbM;uk9Z=!lwK}6{}M*`+2sQiZGbA<}HZ7ptq2}cBj*0?uIi9{4eY~G~?z9Sq6rg@=SInr*C`=V>-H1 zH0cx5W1*^e&GnhxC)1{cG6=~fK(Ysyp>z2h7S z%|X{L>Hn7CsEA&}z5RszGgX0K4o}N&dG246%<$mh+WXH9b*A51^d;57cSiPw#CIuc z7)9o9F#5Lkpn2M~eP=}H-7@^|Hk;+*3k|h(M`s*9-?8?j$miatIbHTQ+sz8R48FCR zKhU0Vq9K2w3)6Y&zV@?Bzj*#OL~$1zeOK}h_t>-5?ark9>{~36nVQqGy|xP7a{iNW zszYz)s%5WMvuNB~{H%A~x|!D*4ZV`1XP9{kPQat(tX-Bn#N)G+Ht5KUXi|q41*oA}H29UHx3vIVCg! E0CEHQf&c&j literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_minvideo.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_minvideo.png index 904f978121c4483282e158b233210056922bb01b..496f5d58c4c0d52fbd291d6fd525e19d8d2c0529 100644 GIT binary patch delta 536 zcmeBU>t&tLP|x_?)5S5Qg7NKaZ$D;39*1bYOUfIb@x^pimmcR@X}#`}XbxMn&%(!5 zj|$biB){nNY90TmzFu+F;>7LF3Ji=K4h&2J4Gb(`=7V@4iMEFd=L6?`{!w{CZ;NYB z&bhqL?i!yyDj&}&`WSNH`lP;zXK&{2Tl4C1RqCqr$=f^XC!SsT`MarKqe zHA}X41a{e{SI;mu_~*;uaL|uIpn-|0ai%QGf(D0#GkK-?-f5YIOVe+Y1Yp z96QeDdp(Z%#o4sA7vk%!e%>(A&Dw6beAk<6UnEW571*--eX{Xa*1LYCyl3N&Ka+oI z{XMtf>FGo@h#wK&-J+z>D}OeNa~Z>?{K$;$bEcNK>vL|I9IyS7d$SPtbv4mf)^^!X zpRnokcscFWiqwAY#C5%7J@;n!?Xx~5^!E4uSgwCYt^WSLwKkX3&s8q{bx7xHpWl`a z%iZga->R@bA#`&^Trpd2$;#4HW{n4I3Jk0)Ovct64vdWl&hRk>I4Br=zvVc88Q*H@ z&8ws2SMT=AX0K+fGHs2zJ0te$uZX*)w~j2>k~H1h?4N9w@O=qaCxpvEakfLhQQxF4 WT#(uN`wtNYAnEakt!T5Hzy`Ph#z_E)>=iGDyGT=W|5cPOSXote!z-(jDx+6L?T@6YuTr>CnOc4Ja;Kt%?VS#G`k zX7q&V6KiF|nrd~f`7%$~lnk>b>@h!fr2ba2(eVlQ%3kVExuhhBM1e zcP`r=@uPl)#Qb{_g1>imOup`}wygHqg)cWY{If{n>9+SUxA!>sk<dD2$0waDwB3 zfMQl;>i-^+`MBY87L!DNAzI$RE&GuBr*2jNWwU}h{ zF!lIskK6r^S1e3cdttBiK96blI?t5u+|s>|^ItJuzuwSacJmr@m_5^qBv#)A`sy1l zs<~GwTv*RmQ=@kyse6L+3F#xZ;~oSwrPM~&Z!7zDefv9KuIin6n$FYqRA&041_&^G z3|LtT9z?g!ajKUR$p77ccvZ}_yUtxJAGj{E)}LzkO*MaGhvIgI#oL(k@15vP;`S8V z(>bM9*1S49DWo4PsAvWs(|r@+hZ-FX S=F>hi0D-5gpUXO@geCyk0Us3r diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_msgbubble3.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_msgbubble3.png index b473988827c77639eb7b5b241ccc0a45ab5f937b..73e488d881094940d1f71294f00ffc4989c0531d 100644 GIT binary patch delta 1665 zcmV-{27dY34(|<+fqz*^L_t(|0qvY^h!tfN$9Gd{GkYPWq$s6)NrT1cOIdx$UI>CH zDhLFrpifCeB1!FMKP-_(5*reJvX(Xo0}BlNkZcqZl(l4$xmH58rI6c;seAkV-MKn5 z_dNGL^LFRXau57{X3m`Foc}pH^W2$dp0TH=E8PloE6}Y#d4Cn?EiZIWPpwwFi1^oo z8^8iEF91!?WPsmk4}l+gdwc((ZL74kKon#t+1&;11h<35z?VY}+i@@o_JO?=?0ed3 z3q@H3UIbr&yhT3cdr{@81nJda1e^v%i()9&>W(iIB>TZ0P?jime_n<1z5ZLqgVbD% zUI9;o3tD!VHh(xn^ApfmqV@#P;4IOAeF?Z0ED73Kv_3M0(RT1WY08Uhai6~Iem8}w0M`S1~OTHzI-C?g201(Pk+`3ii>cQX;UwRy$$ z_CwG<@J2Ic9Qze)1Q&ZdPG~6KK@7!eCgR$c(0w{{0)Nd0A2eZef@2$i#-+B1Vg)f3 z+a=;WyKq7T+2LY<{s74BQc9YPVh0>(OxcmtXCiw-ZZ^YCE4S0=@u5@^2Ousk*<1)g zqOEsC)Q#G@LV{*+Do#M$ELoqybz@f|+yl;7kBAFC)+IV=(c3@+`is$-Rj6;TP7AbT?$Sa&PUPZ_NbDHq(^6Q z1>zhR<)&$vbVBFhxJULi@U2ScvAka59B`+J$Z#rFxX{@%6>&AalkK!j#U`Il(6@#Q z<(T{|qSN4XJtF`9#@^-m&~3jLaRwyy;@R zChmd#f5CijCmm|29D-bEBC;kV&&YJA19s0pZ_8!-}KH^jn>uFkj_FQKjqwd9KvX&(fMdKOW|fsjz^6=SB87I zE`Kp=K4&c4afWPLIV}(8<|@z?VWVLCM?+V2m6cN@cUOTfH8TIx&{bV!<#bs%DOZ84 zx#YjX9cRe4l~W{lSAndTZIO;Mq(Ii&mPpZD1=1VNxLB86+@@;#R!))2&Q&0-$%)J2 zxMBwEUuWcSEUa@C=-aSSuwCveT!T;!s(+gdA6D*BGj5)ACvD9lS{09WuE-wwdEH5y zXAlo_r^xdwBiBa^T~$^08N|ne+|L~{3ltpv=$zI0jYrRKR(|UNBLgdE!weOtpx%SU zMN^Yk+dZnIB?s^MAZJ!M(E^2EKwLIDJ5}TW31y#ARIWH0j8}*KV<7UpQjxlxrGE+c zeCDKs0xiR#^}6}BDitNnm3;Dhs}U4wCr;y{TY$*CNti^ZZo}F2UhM7EoN>AwSSuv< zqW4`?nL2)69pPHcn^h6S`K!Q^p}Z0(+7INnS_z=b{t^@?THSHP5#WWQlgsKK-o>u& z5J7^t)(7d{=<%#c6xAPYPXSBvTYn!^Cr^}@tVrlif`{vNozlW-9k9kv)U|w9m?>$T zYM^^p-VNE)L4_%2jbc!w3n|Wiqd+frLV@5_?kd-yNS_-8D)mVpK68N{A+)mICA&FL z>^f-zTmv*P$EB2qSV(l%N_z-B6R!;W2ikpk5mT4a0GI&HL}yg$Z#B}KZhzKK`g^Sk z1WA2{`8qfbJ_etGPnn>aplvDi*Ox(BwyPBwg3nimW7s`LjBjXDNuouVkko70gGQuP zkoeNj>z8i<`a$pnu;Lv?e*|cDY<@e$REj1 z$gmGs*ZZ?!57=A@bVF&aoPR)Fi0Ec;1mynBYLYQX-(u);3Cl@#-iO#7w1Vb&Zv*Xm z%GcTZ4%o>huFEucvBrdkAQWIe%1^+u*ug3G<-^Mlb{e3!fQ8^z&<}k7NHuK7!6?`V z+Vb7JFS(l`6fX{{L?7?IiTyzMSBt{y)2Ssue*jJ6)*)V#0rZyl5PB%(e_kMNYax;6 zKpN4^<1nb)>|?zuzGu*Qy@O}_9d;vNh%@GA&py>P;|!PuJ_MF%UgaQo3+POo4jo$4UV2f-~sH*))d&W^*JB^ocf(yc(Z0^JI9E6}Y#dn@oinP|nOn91si00000 LNkvXXu0mjfK3Xqn delta 1772 zcmVhwweRM)Aq{O5Glty@cXq0o><2O1q{bf9`2Xn(3!>YkpS!^wRbm63`5az&C#nw!eT5unK%g!+v6!Z=oqg z@G$rqq%Df6*u~s+3DV7A8Q2H17UfVb?Ul7HkemiS0M!!Zo|a~pe8+&;oRB&agGHbP z42d;9w6U9yzkh+BgXIpE8k{8>u#W<#01e_=4h254AEPB;F5^^}k3*(5G-nD}4SZxh zMs47Fpayt}Yy%(pt_MCMPE))RWMu?_Szu=gwwu`g2skq>9*PyjRO~nrw^?cB^^QZ* zk>KSxW^DTtJOFg~Wg?0l^Cw=cYCVIQVb?;Ad2_QR8o;(G}r(v znU_kE41a?_dY(lbooX6A=+p$!0N0u*U=27?PwRlz z^scDJ@-KsMvW{C#>5r~~S`$$acVJzXlsBFdWPb#(E(GT!Vpc;=)Md@*RO<+Dni$Uj zuIxf_jCYV4HB=2iwYW0Fq8xQ|>uSSzIX9rT8TwqQf*O_^q^+7G@BUqB1Xy9{@~X0G zv1$(2$9|{r$GV0Y8@A4;hWf_3$5&8u>2V0dsfKfBK3fsZni@NeI;XlG))-{X30Av~ zb$_sK)fB4TYLIoN+E51#aZAt>6<0#FTMe?VaJRdW>R|mJqlQrJR)dZ(9CsVKysLH@ z1%zt18e}=v%^9p;Q>>>gUH!Hn_-HjqPdHr}=PK%8-MXd>4JB5CHW|gAWa#p)I@Ks( zi>tF5^n+`}dOhwzXB%}|wGT97@}viY)_+V|FA>y*P~SLXlDG%mFt@m4mUW~qS z4Ozd@(B)Nil|lSFYTxJTLk$WHR=S3)-(=|Ws=Ce~{=T8JRqSe)8M~lvP3C^ErUqT8 z{%6#8sof1ji}Mg*UCcddnCD7GT@M+}`2$^O{E00Lho_A|dVAu8SjQUP2>0W`R)3?e zC(5QxkO{y#n=LLoSdBPP&l00K-RO#mDB}345m3*?LibG)C8(eioTmfpG1k(=Gzd5m zSOePU=&Sy!i*I3Y9SXh#u4wL4^o?WM5#T8|YOwwW%UnEuhNpFCsf=gMqRUYdM6b84 zRWw89mlLZRws5viHY(*ukj`s@1b;doSkIDB_uN{I!hLeW&3Z^E&N}%t`^50JA>hrx z8ss!+U*R37LWXdf9l;lM&uy8|Ah0#bQowSts}f^{yre(SB7G9b}~{gU;4v~I9v%EJu~kul&&V10RgJm2I)wtr{cfJ9%y zzUA94;YzJTK$i~BfVdaPHEznr_s1~F>67Gp;L6=T5pg=q$F7tOaWv^`28%!!h?6aB zytY)#RJN1oT!V?eofG2{uw8cs?gf8?HQ*(1CpZgu?ef@-2Q5Ia1a1R9@)<_sP?Cg}yHL7||Bcbz~t%eMy5UAPUK*QKbe(ebWbp zb)9Bk1G_<`L^J#sLGssm4^|NVQ1UJsiFFv>A9gLgh3+`E>%}9@q<=LS7C|MXn0LMF-_Ub zGIQ}M@SX@3KE85QA&-MLic(V#NU&$>40tTiKQCx0DDHrNUcm1!bhRlIV%@w)T~an; zF&~6pDXGm$6SAVfj%AXqIAox^k1N3)AeD(>LfWah`5Y$iknQ4#j5-v)0eTYq33!jg zVLQvZ5uXNqLA9>{ohdeg-$7@9UulT`c%&hX4m3K@=s=?bjSf`41OEf8h(XBjxF((e O0000`e2 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 WyA^&ccn#VB0000p4Mqm$- zAbJQEK}HsR5{rm1u*avq7=%(EBJBYZR1`!|p&3O+7FlZf?3R{fmP+`z{r=rKweLP_ z&*RL@nelcP{5iANUi-iPd!3nm_RN`%j(&@+Kxb@kAL;Dw?th-lRK_GsrTA z6XN<-H^o^Fve@ec5A0i22+W3wPR>#pCw5VT@}$N=RiB6&3s!-y2s$2Hm7XZ?WfkY| zNv}eHeZV*Q3MmpiSuZhZS<)y_rHeE|Rw3lJh8XX2H4EnLp0A}Qd8|cx0Aw$K@gC_` z+82@g56|EJCV#?pS%s{tOhqJp%1C?&-?TFGX5uyk_Htz+%MeVGo51m2$$AQjtjXB4Fdu8H6`;MY5~mi~OvacMh6tTa6Mr)i6%kC*@!)eqP*E;%`@cXz z>BKHD66-R)F*vBK4wB9SdkjIoO9FoeI>q0Kpkw*emt@K@D`_6YOauCb^6kl_v4!`e zU_SWESK_qQ_a?XpoEZ|Jz9>eqNqqBTc!n{43-E0Rj%&cx4ldxhyt@m?XM>}_GMy2+ zjW{PXnSYR9W1_L4vr0KMRVQ|>7~ zAHJ8GB9k3=`aHSXDCin_3(6T_nxAC9s z3NGSUoIu=`Epu}aFc9b&Pg?7BiRHdoC99s)ZGQp&25u9+%em=0;0iA4n7kw4`UITk zaUP~UnY=%`e&Q$5me#mA@27twV~@LIa~+d-CGhP}9OvdDPBEAqlYnyhwlc-=@2tFb_f&8shfi>$Ok@2@2>?E})#gEi8b(Bk!hYt|4N1 zJAWTGMY)z6IxKBQSV=Cvt`Wf6;kNyO6FPJ&;hVH+A8-?$V`A8s86%OXJT|AZrm^8<&(xoF54e-h&0k zf5X_h6hhmHkSVuYAjMf4L*q?;&Gk=C6ZeK6zL%T^;RFn8;So#qwfvIJ%4BT zOLyg2gUS%6;!N;}x6{7M^R=y6n*wq6JjAU1-LKZ1TRD67x2+;xqFNM);%Gx>tvib; z&ZnN{wl*s-P_*v6#;mpTbxrHev#z6xw(wN6v7`3#8~T5BlH-ByPqOG-*6b8R_@~eLN*dNxez-C909&f zZwhuC1nYgF(EsZ`m*4&!NARqrZ@NE#wlvOhB$R(h!kOS8@J$o&7u_a7#D9F~4@}uk zD$pQ!6yuw;&TJA=hJ!>?!9HI>)c*JF^tjx_>P?OB0vsW?{(HMOj#queED8`v^VFpA zR)6r6^@B+;4&TRMtlvlbJ#am1M5@1R;nLct=hGuWlBHgx;nlX~T`=1q-Hq=GH10C` z^0`Pn3h2SPWuM_3mM=qbqkp9ZNRwrn!>Ho2!35z@u-?jsZ!fhXS%SO(}XDU3^R^EK$Kk(gvi_vNeUIgZUPV9p8SS=gPGf&TtYe+X<(B8c56Qj84{T$n_1 zg7&Xt(|Bc)_M``94?>V?cbt@{X8n4V=8-g-Vhcot*Fy3*XnIJKhP=ixk1@B83e(4> zb}jfGoam;Tr8 z%sS&NnD{&pdZ4A+sc&9J+QP#tS)?1Ypa6Q@a0k%+UgM2ay(_Ky1$ddo`4FG|)?b1C g3iMate_MgS0skrKBbIN8Gynhq07*qoM6N<$f|rq*$p8QV delta 1814 zcmV+x2kH2o4}lMmfPV(-Nkl|-iRGAk`or{6!%ozC5N z?Q_na^L6Jk3l?|pwb%Nu|6X&>zWbcJnXax;NvuG3;%J8q4u1{~_A-?zDbpEb{6Kei zcYlgsXAM)FJ~TwO;ykvqs^FOo6YUMDOw9L@2IOgtMqQtfnu=~h2O?E_YF&Jyyw}&9 z|5SPv0zHJfB3mIv0w?qq6PHzu0@b=mLu3;~?rxBAJ~y*q-s9MY)g_O$NRI*R1$3GN zx|jYOa{unwtAFo8T(^}^2Fhea(x;8YN3qQ=Gj9;KL9odb1Qy^-lH1XfP03DmmIlC- z;|h7TF*nX1zf|SASDa5Ks}$B%OwSY!E8SBy9H^ z$V(mHrAA`i#Gp{o7>{>uc)H#%EVd6zjXHlyklnk9{Q?BJbl|{DKYWOw{`N6uEuqHP!?|Y{H1J_-GO3 zp6TLY+t}inZdmN%pGf&y^q+EG$%*mWac|n0pufM=i$`Tj2#-<4O1? z_S55pi)afI6}Ba7;yG{_i|QRuR%yD$azCt+Rex{l_Mq+tZWp#2c<4J4CtOsUyyt-R zA$pmEd5nH9dB2a_@t;9oT$AQ}nDL#&o{Y!lYLj>a>dGG&F3AO)A($L9P~~!ELx%A3 zU0^jCwZ64hm!JJq2J)|Vs}pgWTongz9*8VA$Q{Jiv`~5h3K&o>R5@K)UI2Vo-c8X$ zgMUO{l`os3Tzv))i<{wAl8HapIjFV6t^9=(JoG5xinwVZ&n0<&-nf>`XE@pS^B3Le z*qXYKJ{yCIcxKapzw--2yTCo+b5Txk_cI>frHh+5zU_<4V$V|`YY}`eDJheOZA2750Z+x6)XmJ#MIhyv>ZRNH&3NN!% zU7*aw3`e~}N!pdSU4hOsCUMBH#Z7wuaxiWPX#dPD_D_PpmD}Q&0MR;>XAQEp>^cD8 z6(;yOS3wUBNsIJ#j6Y+5JZaeCCM&naF&>lJ&QqXNaLa)r{fYepYmDMe!v3N$_J1mI z&l&d8O?lR!GRUbo7dycH^zU81Ct2Jj4SI^>&`38T07skXx(`>Zm6SOdx4mA+pRnCKSZqsYS(qAEeb?&wBK19 zClj@6Uw7i1YPo`xQ`BPv48H=ULXjx^|});P~|&muAYY=;O=+CNjqiz^s9DU zWZ2C&+7EGKRqZ?l8t!w>6Q0Rg>run?1ciH;B0b+QWc(a1$07J(twE6O0b#)qO2!6p zI@5DuM)$az;?@!$I^hKo*Em*CJGek3)T`31=($Fw-wfN3i7P;_P2U|d6o1>Wa*LyW zRTbxIgk-*R$J??nAYLamzD7etzr8(}hL6uS4`^RntZzK%k|p^ffVLQ5`>^S3vGrGM zaR*0hpWaVTY8h-bWL~7f)fKY?)e_*!UGUS^q8uT4FM0%Z>vpTO7`|li-QwZA&KEN*J4qIM z679xb*>CWnWbzxD>qd@w!6qte_3wu ziU8od%rl4Aa!~+O`xQ$z<^rxEm`PX%Idx)odK#UiXR%8?!8*U3X@67biLb*v!APn- z;8b+KF*amMD$s!;uja z{pc4IC+U>PNSxa!=YO`XK&D%)X!hK)w}P4Vc-#QD#2ZC(XlpzQ+Pg_`N(HVXUsZq7EJsOH1S_k$R`lCaQ9jk>BcN5z*)5Q z^6F}|aUxZxRX;&rVsTD=R>E&oMk_E{fzb+dYz6)W_K-Aio)7I4TL1t607*qoM6N<$ Eg86@Yq5uE@ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5822e74c02eb0240245085d7bbf5024e801cc8 GIT binary patch literal 2153 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_14.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5c6b1036bf008ddfe2b73ee35c1a4035befa9d GIT binary patch literal 2341 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 T;YhxE00000NkvXXu0mjftVQ3f literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..d4445a8eca654bc05e0691b7e368831a2ea99eb3 GIT binary patch literal 2211 zcmV;U2weAxP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@4M{{nRCodHn|r8KRTRd(rfF(g zshMe(`9e(1N9H3$OAA8tf%Hdd?+1ZBA&Q^}{SgE~We{131c74oFco}Zl%V6l?*TtE#F_^I5-zff)?809U?*7*wxEhXJ@B{Ns*{r+$j^ zef4sXNPHSN?HLTeq6TSVy&5DE9uNNY8xey)4mYA+3=)Zs1WMSFFCf=g4RC*e-e>e6 zk>CJu2v{-?vN31^7Fr5$KY@$S$U!2pp5QlN$r8x3(}`1V0sMYR>uGC~);%LWNvJdU z5m>SsvZb3STsyGUGJsnFG6U+`)~Py)v;~`hB^w|w@JoocuHaY85N<9=%tF^Mhd`bL zS^+KiEZG5>cRoR9AUJF}fO|PGfTTB)z?(ja=~vM`Z2ahs1%3<431R&tN{@tw18X68 z5WauZV6mC%NiBT%Vw409TGdTvKRp*goMpOx4E~>a${Y1pb+k%w5F>gwGEQ zzYiDd*U!GOUqcLhYr{tqg9}YDFilZDX&AIIxMWi#GspO*MV$b9!R=u)K=)ptt%l!3 zJtnNL#ORUC^&m(#h7A@cYXcnpNn4AszM|@t>=NTNa4Erj91zfZ0c~#6J1*g=KTBW7 zJoUO!qPk z(iP#@%00 z{s?HA8)d4lBhoHKIS(+#_hUZ&E(tIze-lA!f^_`A)t=zu?YPhbhE16Y~~(=IH7w&sgaV}|W85cEu6M;|wZa#n670_zQ? zg13Ps+MjhQHZFWTZ8?Y2Q(G-JbR?_wQJ-S_D%zePdI1G&-DaV)WJ=K;;sB4jty|~a zS)HXSimP87{YLUZr=!6)sUX69%#PGS9%VZ00(3crkqvp=#oJ6oox#yCk)?Drv7Q@m z6g9u3n!xknQ`RTTCJS?*@mD0G-F^xM4G}L@zBwK3a_$D1GQ`$a);K8{T|# z1b!y)isrK$L-&pHNbn-i^C&Y(c%2cq20GGk@le4&c3nd>_xCrvbF2tgr48Kx44N2t-NeJn?|jg9A&H_cU{0MAFy~=+bfJ zLdyuH4_!s-LC?Z0H?eT^+X);n;U+C{GqtEUxhwg5;Az*>qMqN|N)HI(NAc$K)&vb+5^Hm%k z^3=UW>k-ZouR;RK)m99tob-bF9Had}4#zKOo$-5H1Lym)ByHB_^mF)lZ<{&MW)t+M zo&IES2)J^0wsv+6WxaMh*JHGia@#B|2yHZ7(S#LvY(V>T*C=6i%_pHY$mk6Q*Mi(t zH)LPn%Hph1G%6UJ4c5Dc396g7c_Wql6iIn67rk^aG{05No$pF?t%X{p$7wkMSaW2U zv~qRi3}_AX6bQVuTx;})fK4DNvW!5i2MKQI<*O4=bD$NiwipLNIprjsZ39}DjV&Z= z?6g1A7aiLp@26a$@ zy!5(`E=^Z-$@)KBpm8YB8X_$^5HIN3PU^UkkA49A(+N7C*6O-86_nlc64`5KtY1`} zpTx+aHE=I0s2b5GHaJHVbQa_%`)IhKb~x)^iTM3qQP!hzYd@NuBuWmUreMl{o# zMUTVt0o*fk#cuxn3SNuD=mX;> zfs>A4HaHA+f(fpU>hRwE9Mu}pn`Zikw91ZsxqwgY1^0p=nPtUWR*vWf1Vxx?+s>!? zzY6$?U;$VKz6Sa~tLB9rU_LO~aaCz8`L%!9N3c5a^{%?V*-~6%0!5 zxiSrj625Vr_v+HqEq9#iR)Fv=!Kc7a_RuiKvMn{|zacAi&yIfvK(T0{rrWL_Go_(R lau2@<^XUX_4N}Pw_zxqnS#zbw{R;p9002ovPDHLkV1flB^LzjR literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_off.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_off.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed949dda7d73c047d92da87b40368ca8d45a8ea GIT binary patch literal 2820 zcmV+f3;XnmP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS_Zb?KzRCodHn|-X7WgW*oA}@+4 zYNE-KktM9$a^(;zWmsDCEp2kLVdYt_vsGs`a3gW^Wwuxr=7y_;8uka)aEjJMhc0F> z;!8AYrjjJ6$+4V@q9g>;=lh)de!TAA^SkcndS2jpPCLKt%XR%;uitf@`@Y`phl36p zp^*_78G(@z7#V@C9f6)$X8ZQ-8-s2t*xJ+6vnyuTikvo%!vAv_K16v!7H=Enli(hK z_Fv27-BFPEEbtN#4T7`VnHllMfvdoFP>*CI+i~s8p`}?uR9sYs4kgw9$nRF`)#);tMOo+mmRXb zpf9yiY>xuoguD&;S+O|M0ohnmEUkc@C6YK4thL!?y#BiVDH&pSxf4VF(ZR{%$_98( z(&f2LM@y2^+;K06(LlWfaa`>+#j=W@&Y8{6LMK}m158!!Cz;m-rQ zkZXiq##pxlg#jNn14ZHkCB49&Jw5gZzJ z27V5B(;6o58rbu~Si`1H;(Z`r(rsVYAt=lx@Y-7)22KK>0G9x*kk5iL(mZzIuo;*z zQ4+rlBa>}CLM2VzgfCH)a}$(ufG zKMh_09&JUK94pN6fYeFu7g^SKQWjPi_=`boN&geNqf?W_b|QEXcyxPeoC9h{rc*)q zD*YPXu2yAB`bO-JO-&kG4bmoHNw46v)Hnysj-+m~nZnonHIbDq=}(|PE;VUvr-ALj z($drz2h5HPAGTS-U+E=)d=7{$=})7}ztMZ{1sS$i085V+jJkm#L+x%YO^M}(;Thl! z>yYuADc=|K4dt?PVszzoY)zhFN4z=?GlBPtDApFBUzgM+8C$CBlxR@6t4Z{6&6J>{ zxZcS2!Y}3LEZcKAZl_US3%n13FCae)`^~w%N_@UZ5l+O{hI-ZUXY`_=`;%lT*M;wWbw`pQ9!gyZ2a24tq)RU3i zA>d5xcGt5t`kE~O)5g=-%m$i!EWHQ8Z)r<&R)w&Ch03SE<3p0_zq(&K4RmH6Qp4a( zpu^)Upc(pEwL7LlFzw2>M1pG7n;E*m9|635*f!+L!P%hYhaqg!t<%Uvun6c-*eZS2 zZ6p&CT>BgChdk2$>5R}HUZ1BQ@{BXtvy=;gp2YSNL5~GXfcK3ZapRPdAyH2N+F5&~ zo%ozE4!rJ?Vu#o~##>ar4+<-37$><-kWpX&yapN}O{jN)tHJr6qfG)EebT-NoE+-l zj{`cRd9)MZImUh*vim(_Bhyp(ZP47ShvO9R7)T*KS$Bf3gAaqkj~bN>20A2xp3tQKNkGP8bAQ6>5svI$`D zpTOv4M}IVW-5YtNd!~y+ANbLr7br*NT1MK#6<*gcR-umJXF%*?OO5E={}D(!Oe(mX zEEO7cY^+{9F|Gl8 zJsYbJdE$)+>%6$g^oQ&V?QI?XOrSn_^bEqnO=!g*p;jD^w6{3YHqr?11-1Ux#?cq% z2<%(>1+Mx8erMaw_^S);Bh=1#t7E(YS>Xd;!7-6>;?`V^SQ{G}ypg93`3qYQ>Q3xt21sGFq@Npv*6TY4+zn#1Ahfr2 zoK6PboK*S7mVdu0Y|gSEYd8$TE8&S5vSx=0^bb&b4m_WgQfO{ijjos6 z?va2}tIu4jD}hQ&KSVzkyYE?rc;tUae;?KJjb3+9>nk!0z5^`%z&JF`5?GyRCuvD9 z3XucCJcEm_BxcwR#4{i zaHU7^mx9CG?xC0sygdQp${}?=W$DS?4cuWNIbW|1L`W;&sN@te{tD1}CPsS77J%`| zLA$_^d>6$!g!~RLIyp^@^_YeCGq5$Z9m$Wu$CCqh*pOWHhmDbT;oSI z{-kHKZ-7_KEVkNETWZsrKX0~SvFiuT|I;&j+^rL~otRLEy z)U}kp2(|z%>4V_k;8pMjcpK=$WB&0`kGi10<`F<&VJ87?547}81(QKi{@7{h{)So7 z`;h6|oY$Xa*lNjdj5JW-Mz9SGH!ALH=sF#k2fU}Q`sl6Q5Zy{| zlGrbSen9HZEy#O;4!&HcVOGnrk-^ zV@DpK?E{ntwj~K1k4(oEL6fci*Ruvq2

    #WAFU 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_noise_off.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_noise_off.png index fa67d6680cd0aaaa0fb390f80214b2e402ac1257..0c6b5367b84f1bc4a10bc7c5cff5c9751e45911f 100644 GIT binary patch delta 2075 zcmV+$2;}#a5rq+ufq(BwL_t(|0qvS=h*eb-fM;|{Ey&cc(wxvNrIgYh7G#WK4{HpR zihlH?(vm`g(tl|`O8gN-P?i!DNmTyGvNsjwttfk$SpEr>ltxEjdIjngsDD@Be_DaYo?cf+M@K6; zOapg=FE%zd?(FHDY9>C#Spxdd4sl-1B$$*4Nj8I@fPa<7kx9Dc^6@(yJOXNXrd*%h zW=FsM#oG5fA{zSy!nQhajN2rWM$`Qh*~6^zoY|{=);WtsA99;k2kw23oFBEAIpYY?XU1#!0m>7IJ^Rj zsiY@OHvIam2|iJ?b14ECeJA1bSug}&)of98Vyq&1k?^@8R2^i0gXZqm`PBqXveAl! zuQS18U>c06iN$A4g4IMR5`Jz;t4v9LXV%=Rsh4>h(|@=(lSm6#Y2!|7&~ClGqfxtT z-B{^P!v1Sx2YqbuT+CiKmRlt327vz>#b`BnyYdtU`##`Y@C|S&I4X~QbX^k2-IK6s z0X6&vqX|5y1<;vK_UOK#?Ds)OKV;`BBnjjy68ekOB7}TRf--(*$Yx|o2)j|Bb!S|a z#Xh8yxqnGpPReN9*BO4kEb-PGvaF5zMr^IM+)Cl($-iu{oaSsZ^FNTGTjNF-FG zKV8P&__oU$p4{P%dNMa1Nxq`;33LbOH(j|?TxkV?A1YFt$ekVY!Jr0d+(|#c0<8@F9yk#E z$B@l&v8px_^kUFD7RX0G^J@hBJVn}yzJ{x;1)=o5R)n4}x{UhhA*$;vKT&xEk;7mT zB)-GJAXAahd&_V>S1$scCQvRX4aF}aFn=d#L5ZHEeMO@QAkQ4f69Nl6_*E2nYLU=+ zOdKg#t`~vada(Q*e&>yc`C8>i$Q9aGi0*V2Qu1Vrm=~XXJ)S?k!YA}RFvbifPeN2 zZM|fB$d8Rqe{c_|VS%p~Wln_Gb(92pe3pRNhKghzIWBR2u{{;E?owT1qxU4JVH1qd zmEb~U8*w%kw04j6cJS_OUW<2{P?7Ya?s9$+Ox8kZIk0wFG`tHyt8dCHl2pjrgBIdR z>$byt&WI4~L%x1WPx4h|?)RZ7T7L*#z+Z>v!`lMyBh817^JGo+F9NMCFHftpKn-h+ zWP&UlWZ6ldIVb3^(LtdT7mQ3^oN16Xjc`889&xfldxqW#%Ik?{LnaM1_xl%Y(u%ZK z7J;5L-b0{3=Svry=rye%4rQ7rWb+L9BZ(_PfPSb**5x%jz+^iL&dw8mgc2d#0S_+S9Wut_kgPv ze?5UGDqfJp|7a8npnp{)iE)h-lQ9+WCCztQKv9bGGyZbz%z(dQQ+=Gk8kWIWqM6Xv z2|MUtgxG~Hw>FWdIw?aTZ<9_6VO=tpqilUi{U*sth+o;> ziWI8{$>OX&q!(RQ|Ito_?sYwhUvx&=_CbELwb)8{-L;b{$+2ilqQf#2Xh_9@3W+GMOP8mm_ni6q|*6zG*`)kttujUvTt(vr4yvUkh*)=jE4)_mjU7i}By~IZ4)`W`Q#BTz$0s=?6{%+mlqdP_(k&IqfBm}!Ug{-Q z@yWWo78oN=sUYr8UMqPl*dN1h-ABCw^$OH0P^}952NcwUo0`<|;Ozha002ovPDHLk FV1lSb^zQ%w delta 2090 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 delta 690 zcmV;j0!{tF2+0MIBYy&rNkl5g$M$+fe#HYvP0l})ifH4xyZ6?RCmIefI+r^=kexL$>*BBMME(!YbS&V z+5v9FnNKZ`YC0bSzgw8Y2|@(jE@^uMjQkRfb^NTE!)t%HPZMhb9IPuSyThM1PBUQVkuE4XQkyfBte>-`>PB(6hR?! zzOORy5Clz{lEVN5IXUl}l0)Kx8ka-Df?AP7qJmnJLxO@@l|y2JT9-pYf;y2yB7!=T zLjr<2l|#=3H6f?CMYH}UT*ZcW)#iGvV@~8H~v(+{yy#pT?1yo zm6E>b%Szb}>g5u9)|Q+Q`Y7mTNn0m!=&7K0h3}ooah&ZUsKQg=0&o}D2c7^wx|+-o zH|bTG}T%CP={qDVQJy6Qp2*6ikqU2~sdY3MNRw z1Syyx1%DHyV1g7(kb((PFhL3?NFhW}S^iqBlIbDEatgtcp1v46g(ZfNZIGSFH= z|HVE6_q_Gg+4pJfpc>rJqTVIvym?oJcn7$ch%2nQe<9C&{q51RLrXmyhG7_nVQeJ8 YF-!>C4iM-l)&Kwi07*qoM6N<$f&sQY&j0`b diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_openprofile.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_openprofile.png index bc98ebe16a02f4b30e937ebf19da994c5090c41c..d204c9c41c8c71da454e05021b664c5e4dce8af5 100644 GIT binary patch delta 2337 zcmV++3EuXv5v&rBB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000;paTE|000010000;00000kTFK@ z000P6{8nTQdlU8)PJBT&}xI8M0znu2||4G zLBfZm9*pdzg(ArCMGOo?rF_VsqM}GcxM1WyC~27HTDg6`>&)!A=l;%}nKN_$6#Ikk z&Y9o&{l7Eko^xjI4h&4uR0XP3V6cjEjPCgO_+s={gQZ{@(D_|pP67@CmlIs#cm|vT zr@_g=!9ksOjej~`APO>*Y@Py7f=9u*mUT?9L*OvzHp%Bu*?7AqPjHJtFAC#-5Q;(LS}jz03?i5rM6v^H2O4kk=sE&l zf-isuUg1}e4$L&O0s9`>8q9??;2|J?d8Bb^H+Y>fN`L-(LlkEb_zL9FWdugRI&fQT zw9-v%jBu3AJW_0nV*ORp!|?|2drpKu)4vHs7bO&=Y$mqlqa7*64Iw)n;p1={xX~u6 z27SX|T1NtKjLJvitHCiuiglZ#*10B*c88*XKL&PzTRRtlZCO4O--;nb8kagpcx_jl zQTjDQ?tdvM2B26%)R`jTO}ABuG#D=EX=NPeiUqX$@~HQA!Oh&m508qI&-<2DaSF1Jv1yRr)pCG49ozbOZB6;kh`x%4xuYaxfPjs z+Cihd6Idj}m2WF-ECH{9Bj7a9 zQGeqOdb)DzC=O;ONVcM`B=j^MHGogWt|GLw6KK(JsgKGL#+Yu65dA>MRI>0c$3>|o28RPi^LHju+-E3j#T>QpL{9_q4a26!f-N9uSAB_$HEzge)WDtCwRQpa zwXHOYGl8{-ys52Xn@;Rm-&RWa(Kc#LU4N1VR*{Z236?m)p0;6pQtshRKRP%18k}oh z61AU$-crM!SX)ZuG9fCRfUT%`61KFTq}+Vk=*H$>-g-3S(*d?Eulme_=T94QKf-&* z;ODWVBVC`K@fk(VlbjA1vQ`alic!k5emOZ`XBa8OLRYh4pSBiKHiR&wf!n7ehJR=w z7KYaO#yCG~D$}8vvroG3qi!!bLHD$8kn`nc00o%RHSB5AKZ>xW+sqoavir`_wv?Uj+@^I)tj*O5 z3s}0AkFbT-9xKPJ7H)y`3W`s9;#q~PZ4-*Vdm#RYzzIQId7zL z?zhRMl<6Gxeokd##`-r#^q}r|Wn(vOY)EX@U~a(5F{_1JpfiRyYw~D_<+DiWB2t>i zybWSzztWNJ+Qb&kTFA;VtAB-CAZx;8DMv@8PaV9BfmJ|nsum^5u9B{76jdrHXXSV* z)t#O;IA%26Y|a7FmuNsrC^N5q!m zx@lim7M-w@++NnEy{01>xr4Nrhk)h)?rL^6=c@F3Ac_k^D{iuN$7u0F?#U zFAajzZP$xJ$)~wx(J!@Wii2SP7yllo@)*=q72||LXLMHfD&Xd0>l6)NyAW}Obcj6dr|00000NkvXX Hu0mjfm~2yD delta 2211 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 QP5=M^07*qoM6N<$g4xGh761SM delta 1831 zcmV+?2iW-A4wDa%fq(r;L_t(|0qvV>h*eb-$7k}Dj~*&zrq~F*%rb+lG?EJI!&FR^ z7HSU(hX~4~!sSA_GMRihm5$Y6j}7m3Vh|_i(t~ z0;Ym<%WyX59iSbwm9UlLn)>?sog7bIAt`5p1>g&C6vUM+7%T=CoK#t2LPNnbpcAAa z$8ho{7+uqeVgmKxLC_Aekb^i~0*2OHq98pCtOj{V3qcwxNm8E_X~>R;?8o4;5YoTW zzZz@=UP0c&xqk|{ZXXrz%Rv*k3Ixq(Fa38?$iLxOy+U%PfPa9W9H!$XaB-YjFn%<6 z90d73LjT-2esdiQxv{{n-W;dzT`(>QDeO-NsynJbmMBTnlf=lx7E*)3CW|q;|3G7! zf$=v1{0=P9Ro0MZyu`jB^r6KR-EUw*;sAyN{Eh%xQ-4{a!ad9|%U=bNCW|4u9Y8DN z%mn}afnSoAWEME8W61RbzW`SbpwJU2b0LndBweYls7~og*mnYfW|vi|Ju^>M#8geP z3in%i^5_u@LW4jXaOJZe19NIX;#rpnZM~LUm=lGbVF=u45ITWwa?g?Zw1}%Ez#fCs z;(Qo5QGX!vhCybzGb~mUf2wJVfR+sVOGmZ)MRCNq$ABw8M6peE3=H%lYAp(Htuzq+ zl$>?Il65FUlf)RUxOEk~a$cppDzYQ`H7*0%dUBmwkwc8I)s+$?i=z0(!A8T$BbMzc zmNF&XB*V|=yeu9z^ifrJg$xYq_ssR8?25&=E`Q4eS?ddJjV6(cLX5-uJ@Xdtr0i(% z%{@WdvPdG^LyW`vJ#&jk?g`R}XC=tuo9R>RM`Kb~7`nbtU26n2 z6J(4_M@12wY!t$M=t5ry(qZ851rFBU&>Vk@lzSj>2KW+Ka%IZlV!4CRM1zzz^3Sv! zrCx&wG=@Oy!3|bGbm#l%^HMh(fxf2rTYnD~V`u_Z>DSq5{6e1U=>+Z*n?hnd=<>*v z9Uo5YJj?;Xrh|^Mpyj8!gzpXWk##>DJ}4(uI#*pxy!;5{PJmfJUqmhGM0r!7gB&{H za67Q}fu71VJV74?`YLLPHq83`(GG`6K)a8w>_Ra(lLX;dJBBa15zE@!IB&=#cz+D1 za2Nyh{mqgGVz`Pvlt_Bnv+ie)gkDs$y{{wCg~JrE+au*1SI`dnYmf*Lj3GD;TH}br zMb+34mUNAg88gO-!u9`RrnSM?GayU3_gKw3-}8B3AAVPFVJg&-pB<_SgZDdAV@aQ zc?UereV-u1z&<806Zoxh^ys`f&_PHi_P2qomYUxTW zTkw$0A{ECA1L&o)#=*aezTXcJ5I(f)4@S%dkxGbhZ3L@utjpe7mZR?808&}w;O7ZB zbYwg2m%&etKCIcwfLFlvAhkWGUVG9wA4K|I1y=S|sAp5?4h5$;a&MzC@@@Ptl^!no zbaW%ocXMsD3wp9?Yoe_TEq~Zp9|IYZOnM~&QupI>nc-G{X!H<7^kpHk;BNqfHBqfS zJZR5I=S@IANV!ZP#uP`+GgbAkYO|y(X+ziYPMA7}SBT73>DP%HXwINzO6!)i2xwdyV@b z(z*vb>ywJyS?^iZp9~mUx0tRVSEAlB^ISvPo47iDHuN>2N-aTLC0YjDW6XM)p{p5{ zl^|^^xH6vv=$n%MoquT*7zwloGXx9(^3x35&8{Qpmb=bsy3J&t2Wd(5uWRD|T4Y8W z-EmgGLCKsJH-1fwXU5M3%{pS=`!zAyN=T9b)s>|{`@@yUDvY8&`6{89n@z8``SQq2 zatiHP;A$`q=*?Vk0N3(Bu3y@F|b>ZjOZ%87MMPWFVl(K#_qW1AUf({{i7X V?abOqEBgQd002ovPDHLkV1k`*dw2i< diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur.png new file mode 100644 index 0000000000000000000000000000000000000000..75cdfe01c8e767313854ac33efb8229d35a214f7 GIT binary patch literal 1606 zcmV-M2D$l(P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=ut`KgRCodHn@^}!RTReGtE@*_ zl!Rmr%xDlLgoPp!h#(F!i;7TaVuK(M2Y~}2!N5TvHgI4(YLG!tqav^-B0*RPMp2Oz z6;hBs8uUkn{DZ!JAMf0Ex%;er-Z}g1ea?OFo&_K0?sfM1*0E_r=Z&KLsoSU*}4jaeT(%mbnVi9H6(PO(57t|`}+P~Jx45V{ilU* z)^+Ds{G~s!%4!iO5Vvd6u%RqZBl8fn7+7L2;nyl*5)(I24%eh*agwAVq=-4}D$K^a zL-?x1kY~3i_u(o$$>t(%9kAY7pW{#d1x`7Da=9i=>yi~-mKYHyTxEL+n?0I#Bu<^DN60Bd%+dVJW<6-q-Mwq48dX8|wXT9} zyuMK(Mly7)_h?&dOi$xNz`KTslWDS5XGPmdL*J3=OaT!j*7pwGIlHzkfG$Z0!nV2M z7)x{V?`2~oSz{#E8qJ)`r%AeDkV*@%){WK}(+gc89ksSxj`JkO<-$x2p3JlyH&R;K zjcI*XNQ0~k@uz*tp?PI#va}Zp4r$Om2IF^zuWgs5$P%U=zevd7^Z8GD$YJME;-d-Md!_quW%UhAEXAk7JbFgO%O1)G+EjUsY4oc z!C)N5EnrKNrQIl}?+R(qR6l(7RppD{Y-G9@mL^Mkp@NVG{bVrSZ}{4FS(+^Eg*rnT z^u572jJukaChMc$D5r*tPY3NJxON%GZ8d14hDr;NCfAbfunZJH)-!Hq#?KE-YH=Vf zhQ2c)l0x2M%JZ?2tnqbdLqpGHX|Xi-=Eptq*V$0cl4FLNYxth5QD;!7 zasuUc?N|_Dj3AUe3aoAC^Y|Z%k)sR;xgG|}>6)~yF2j**4g!47BA(@3@|^_b0Lo=q z`_C?-N*C-8Ep_<*123fd>xetc!69eT)a-@XS13aCe9*T!iG9bLyu8a7U)3)zAWol2 z%kVrOqyiDN0{jMirk@YI3U001kluX7W*p-3nKV>>%(#~$=@DVez!yH{ng36YZ-FPk zoLfbjlg(9(Vv9_V;w+02eK1D_Jny04x_gEZz{>S@u@o#+9Cb2V1aZX@BAPp8H)op@WT}dquME|5HSI%fG*ZFOD zdJ}*4Pc?-DGZQAL|F|Ia=D?@yHQ$*gu!LRsl<-Wyu>0M{gA-RFn(1yCnSb)(YyD1pnCdWu^4`>0*;l$qH zUh2KRG&d-#MDqWGt+@<)CBmgo*=tzoKAXSn>DC$RC;sF8v$o{r_w*h4J3XU!Flz2x zU->U!%R8=To(qH-?ULqxxOzl0?~*CYL+84)?Kl6VF?4K==n-VdG!;EGb>&ylO|$%L zub$c^>MzLan-&voW zj4J;!^Bt4sv1l=^IjSXM{bI=uPxE7J7Jp8gx^Xu|bW1jDnZ^lj$w9#WU+4Ngdw$aLVPki{novtUAj$Yu5f>cVresYt)2m1lDb=E?f77 zSBv|~ACL5gPY8?PHWFYg&|_T6ak6%~!>gl02R&AcpYDD2*J*D=(f60qA42XA literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_radial.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_radial.png new file mode 100644 index 0000000000000000000000000000000000000000..9840a28102815ab923b45c0a617080f5bd180211 GIT binary patch literal 1608 zcmV-O2DkZ%P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=vPnciRCodHoKK4sM;OLugeVb0 zLO_$f8X+IRQ$lbj2L(NPOKx7g3Bn#0zrf-Li1#Ij@vMU0cf~zhYox;n;pmJ zFW?OLvBLKpzpB7t^s2%Oj*lxm;`m@Z9>3;zxCBy8f@@$4yakJj+RBD(om_gBNa8HG z3*Ld;BAc>(cIk*B=wHD$7)s=8a^Q&~$Q3XhiWS3;e6QprD%&7UU>6AN7Wg_Mz<<%X z2X??;;BTNZ4bBn`*s^mPXdwRyTm-SUe`7GekN&|B$XNsLK}eobc@vxiU!+E^HdR~M zkgbp?mbFwL+4TwH7}yL&N}ZCq436XqK(;EIT|_CiW4Zh$*}?G%@DQ}gODfjEmq~^b zlx4f}Azy8x7*8aa?XQYM^_&nnx2gZOzo$40@&)9xO%&^JJqc%_+iHXQY=eIsMWYcu zb=%2zn{39~>ZONw4akABmaO+OJYZvjU$+vVY_)e77}1)GFSs<;Jc7?*zptee{BUomup>7Uhd_)R&etq0xEY64#oAwk~#2SMS1&Ng(y= zIleq^iwwmmee{BUoqhDQ=w`hQoOe3@F?5Ta@s+v0M^}AklrKe56}y&teX(+#>x2l> zTCgt<{Q~d$3fIpn=-ih-{Q|D7GN)$MS!G>*ojo0`9IRaHZJOtF#U0>F>-f{O&@91N z(x98F-}Kll!KO71?KCwzN-*>U_;RYF*@3Snp;LZRTt8_G{772`<@)sEi$2XPyI46` zxz6)UCFs?%vqSt=4hs=<2)O8@!FzpM7j<{x5|f?RB=~Fnl=7v&R~Cwhe~Lr)Sr*AV(X+ zEh(E9Y9v`RP?5IbbYhO^2WQ*9ja2=5d&LGU3BD23ZA72rWd&HDOcX%bKqV$2LNB9b z3tp&OK~UMm86v3aN!C&b+|5PzebTP8E`Krg@(J3;90j%+V<(Fa&dNseE+!$V{1hRA zr1E2yE|OGFZ_>bRJ>4kY70rMC0Q&Tsyy&JjRa@Dp&!xC*h+lF+h9sS+7x~Z z#C-X1Kd942g2$lk2X$It*Tw?v;$Pk$)Diq#AW4(Swi!27doJ>we;2(=FxQbFC%}5a z-7ALVYmzJe!R!$9D$sh8wNsYjUgCZh-hZ$2V2rdlf`;#amT$Gj{T3`LYAYMEwfOek zmN>2AY=g9A+$tk6ZI~?on!+NdlobXF1BHRYKw%&&10MjQ+3+uaKo;5n0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=a7jc#RCodHnq8-1+ufoK*~L`FBE7F`7W*)Ls4Vw5+E-sz2kQ5QuK1l<%wN=2Yh9rYp{cK&#aj}yR$xcnVD~`^?mPpXJ*ZsHPhD@Eh-Qdhzdjn zq5@HYs6g*1&}=r(0q6D(FBj6O+Tv6)!r$G#f^Coa@X%Y70iZrfETNG)) z1h_>4NL6V12oTM7gewpGBdooxKR)A?v>iQo-y4|BZ_tT2l{oqG1YD4Vwj!2L# zTb#jBWfI$!^}lRj*d=kK)ALDz^bXS%gUER#o(nE%VKUnzU>FR672sK5*{VjPvB@fE z=Ob@Fbq2ttM%_VtHxc`|QC7YSauN2IdoB2ABnI1Lp&ujZpA7gXw#|3i3-FHUq#Kkd^Z;V(e#ItwC%Z@Rv` z2o}Dzk~v2A$@7Jg%W~C5oa+pBr|?Y~?NrDuaUU}BxvqMMqmIK&t8uP<8d8*GED~uI zP~YEu7EGK_pPnyIcA&Mt-S7o*G5gi5dygkr&>3&O5S2&tHoi^R49guE`&@!Jn z#B%FPLnS{;l4rX?Kr`s-3<8fDBz&%qD7d%^cH~*)A+fBA{AY4NV!4M%(yissMQ0k7 zyhE-Tz*)e-`4o3kkJCbbuV-iSZ%y)z2fKh}_jejENPU<*XR&Gd zG&y`ENTN1D$RlyyY2|e{JK8iaw-`200IdxAY%2xUi)s*J#J&)G=1HzavC^j$Z94*q zdqLV?87C-T4fN6)%!s!TdW^*z4QM|xZGZs#EQAih^Y z*8Bf=>go>);TLccjDYDtmrCO9B(iHF-NE^T@4rX5xNx!o6 zmO)zUL2m=ijmoe=f-VEqP6R`r20AbsXn_6!gfRWqqLqV*p}BS%uj4T&Edd=;y!k+{ zAi^!+0+7YNr_vVi0ocu0)6CMS>^eaOvdAKuUSzctF&pT&I?b1~hJ6$aw=jet$Jmb+ s6^IH%1)>5`fv7-KASw_Q=nVx<1Dbs{okH8QE&u=k07*qoM6N<$f{e_pbpQYW literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_crop.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_crop.png new file mode 100644 index 0000000000000000000000000000000000000000..55fdaa0aa0dd7e27f9012b28ec0cc677fe9e58d8 GIT binary patch literal 972 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{+|1L(F{Fa= z?JVnV5l4ZB@*1VAtS6dUZCpxrOwHasXM9bBpG@Lr6%{s?U)i~Ezk|ye9+!|WLd}mI znB_U7Iuq}&YwAVCe-nwaqQizSMOi>^5t&X`t&50AdVExxxfGZ z)BH8xAwD(oo6gbj=f9ZJNMe}k&pYk;6J8Y^S@}T75wr1ILr0-=UUUJ zbTXg+#*`*)W{V|7ls9bx)k*^a_pg|EYOFB77IJ_x$ntbY;ysY0l?Lzhpdi2RlhK zD9PS`{KV#$;?YRI`xEVRif>KJoYYgrp>lGaM(4lRvmM>l=5A)w6}mfb1&8`;mD7i} z%~@97vG(5oa88BzBBnK0Tx2Ax1on3QbE%D7=w#>ewNt+F&UN!&KPGZKme{59v7#uq zW<8hAy$8*=x!O95JPochf85(q_-tR2VeRZY&+8O+tl%xs?JiNc;kEjNT;!JUJ&xBR zRy_S2?_o95v4P|5%SF$muCBbGoKcy~yu`+VIi*2_sq3Z@w&0uQ$mXHAV1{lp&jcq2 z!)P{1h1Q0oZ9GN}T#QF^B*7Yg{{N}4G*!g%bbM`Ux@T;cFf)mOyI z?@l#hy>OkO#kp};Sol(gNssgPov?HlRy^>!#InHQfqCg>w-@>gBokWBJ>pn0`$gcE zuh~Ig!hJTeFl^V*J6Y=P!e?XSs{i5lKlPcxS_{_xsA!t!vRkE}u_Q`u3X6x#1lQdf zatmUczQ{UQr`Bo48@{}Mcw)`F^ozG&7~Nv6e5p2Zj^nwBQ&KMT9JTzyQ^hd#jaE%Y zr`_dAMb{T(o=uumSQ(+*?sf9pAYB+`{Zli7rd#bUOxAq)Qr~*z$|vsYPjVv$k~#k{p0{hhR`ywv Q50sNUUHx3vIVCg!0IY4EApigX literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_cropfix.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_cropfix.png new file mode 100644 index 0000000000000000000000000000000000000000..c76982e636478e6aa19584f4913c9b3b9db820ca GIT binary patch literal 773 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 AKL7v# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_rotate.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..b18afdf902a045729da7a6ad13dcb8afd4549e2d GIT binary patch literal 1532 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=W=TXrRCodHn@@<=Mi|CjSFxf} zUD2gtU8Lecd$RUWyxCGv=+Q$#T=2Sh6A$7+^ePG>*hBZ$llCA;MZ|U&L3>d=^w3(= zD%+kEwQ5CIbp5^Mdq3jrWHL!6nSA@@g@;Kd^Zt91Ofr+nym_s(473dN8v`>lGmF6y zu)W`M&&(H6mV!wjaxGJ#pBg~Oa`3A#(~;}3^Is4<0QC_bIm3`~ z8GPCVQj#%5CkS%Z641|JV=}O&Y|oDw2;{8C{}s?ka)g^`1VN6FBIF23jg=?_L5}n_ zLXO;Cjh2DBqk|lIO3Bkoo?2NlMT1k|8F&KjfLj9t1OHOiBDE3(IYVUi2Ut}yyT8!? z1xV+99>SiNwAT!E2>J?ymj5vL1NgidS(b=`B!<8PP?em)@P-m0##beQE#P5Q3}JT~ zoC2#uWLs+=qyZDWJjLYAS>B*sBAxU(um*h8DLHc7J*T4AGqW@4lYdU_RKbcuLZYK zvU3uoNuv7!*bg41*pcd=fX}U|W~(a+L;~Icd4TIl+DP9Dr50vF8dC@eI*gv6d zqm%@)1Kb31?~6z&`#Z7%qRmQh10*FELE;1DL2x{2#Ms`O6-)5r1h5c{8-bX+a@^Su za6H(IBDVGdJyC3SZCt2j|Nt&nq9?%4mj#&tjaa*_M&$Wf>0H-V&sCOhok1LX$o7$`+fQ%E9@5nz+88e{GfYeC3S z$JmQ{CE;J*>`ghK@#QM95|kWuj@@V^;rp=34*M50Ht!OpO32Xwupfma{C);ZnbNqt zO0+8_M}xpm?IhuInaK|OZ-M{NgT^wjw28dWy!W1?$rdfe9!Psn8ZTWu5?_-Rg1*kQ zkCMy;+U8LHA6sP_DA@qtqreo2$7^QN*FE+M6C~55rsV74eWOfihx5P90NCG@(!5YL z_KMwNDE7-0^xSe1ygTVR-3LKTxyL*P=JZpH{DQnFj$1B4sS5ry!=~#IAN)NCf8~c7 z7@5m&(zY%n|6sLhk}|HGN~UA+IRb1_Y`OzWm0U^Kb=_8#kR$H{_zgc{7Mi4pk`$Sob@;FTvrkcyB9kNi=mapOnh%F~$<=YwK1zqIgEait|LNI- zq(*#MCC+$@7cxlVuyg%kWsma2l@ovYiw8+Ulqr>xgR^EWpduhwpHw$F&0K=lAt`Nu zt0c*B=i({7J@S^=?Ttm81X_5FVqQ|DJ^p%g8F1%}daZJ$?KeOcUG4*!|5?yR7m}Z4 z+xGc}>aNIq_E-_}Rj1sl2DMVKB=~)(nv0n3QzxrirF;QC1o|6-{F2Zgzao&R+#fVsm*Svx~QGBnFPr$rcQqP{RFHA@lFk50000{t+nToq#>PA<4on~vpw+l4cche4t_fRGg-bIS#(=CtTprm|A}~ya~~Lz-6xd$&SSSw zUVWGIN$upk$?xxKI5ke0?tevfLNziLx&p_t)&&+i>i^sdT^x;ZF~Or!06Q zXw|Rydfh|O4F9%gnkme?q}#(6^!{6YTILCdd{Wi3w~mIqQ&)92Owo6D2P#n5k`DIW|`A^Bczqw^@3vBy*@$C(>prt$cgH8wuFlw?)N&2=R zz+pylyz@SXcM4enZ~lh!q&C~WH|txqnp>){WBPU9R=thcqRnv|YuR3Y_SpV$&+RRn z&k95v>$~@LTfEO>eo>ub;1(=h%A5M_jhfd|6}&rAk3TR?U=>-%G*5)ry**88lCS%sXWkV9q�fd$)e&A2@duGXhFDMd} O{5@U$T-G@yGywq0{BQ^W literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_text.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_text.png new file mode 100644 index 0000000000000000000000000000000000000000..234138a3a5f187656ac5587a29be782052075477 GIT binary patch literal 1118 zcmV-k1flzhP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS;$Vo&&RCodHTs?0SK@hbOq5&xp zhyo}qg7}h>77=PHpywaZ@C))Uk`{{8^n{8k4TusNgcOhqpokI)K?Fzv^Tt?~bNBXU zZ`ZrNi)W-!&a-+DBtxvbm#=S%GiD_ux%7!M6!t$s!U8EyAC`58-Vx!7I2I>j+ir5<~JU zNd6ptqfU{A^?eUK4{+J-_~7yu2;wXu;cNJLpTrICvkQE;A<{<;rv- z@ZTi+4q{iM3uH(jIN^e~Xu?aDC*g(!8^x^n{2hKXJZt_l1@8zq{v5H5C^SgbKa%eM zhqb7rGdda2*9ez>FdQUXCJBEc)`Zn^ZC-*KF8GVK>`HdR)i8=*C+*vq`DH2JIve5M zCcqibVK+^n3nbYG5^Gb4;b%O(1Ug5U?~z!WLi+^lSrQwDv=QXBkaQ()Xna6$IdyP0 zkR)>%GJ%w@J-I-*pKcZJsZ;#CrSOYx)&%-ODzF&oHV)kzA5H%tBsas)VmexU(+lv) z-!O9Q`gKebPI0u*RJ3SCQ1HXOIjMIkNr-w6M>U^eu_cc-yiHhncMj+XJSvA`+E`A- zd{LhPCgmI?PdAfVZS_;2VWTW$WTe2RP0}f9wkoFyq@jU!PTC}Wk&tCE(yg%}hM&cT1T=wiu`Dj$8nYl( zC+QptVNrNLN1c!wO&LKU*t49Y3G_D$io8YG&nqWSO(6Cz4SQ!OFU7cO>|G$nb67K>O zur)zRD~zDyxE<;(h~B{}{-8v7BH$&E^oK}G_%nAK>a=yxSW74^yYp7zvZb-jCirC| zox0mlNO}t-osm@bd5TC+;eX(5GQlgjMI5jFs!`-{$<4*KaPK+Dr6z>3e=Oh<$Ks}d kDPRhi0;Yf|&}0Sv0Y#PFbp*1DRR91007*qoM6N<$f+U#NkpKVy literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photos.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photos.png new file mode 100644 index 0000000000000000000000000000000000000000..620ef2e0d55df261199665d65865b2a950f82435 GIT binary patch literal 1700 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 delta 1087 zcmV-F1i<_33eyOXBYy-MNklT5 zsIKX%uIlO0`a!``U0v1v+1Z}z>Rw`EVq#)qVq!khRBTRLM1RVnG#BUrx`1iG4PXcu z1|HgWR;i>jv=UG|upih6%r><93m61;XYJSoWEBO}q_Ras{uR3ni^%*e$LlRk!r5&J zQ=3O3vhhO(+M5HXHk(|5%6tvl3+zkT_89mb7y%vtbAWZg*T5$!`)meI={B_DHOTbI z`9(ygrtG&+M1L;Zev-VU1UP##>_16F&e$Ne5|9aJmqkBq4UpcuaJLGOFPtn$V7tZml>!ioN8GvB5yTgeQG-A5EI2Iz)Ii? zpc9x5Oa>+^m8qIK;{uy2&@o`S z>H?C zQ}+`1HGlbJ{SCY+=%lkoeOnIzpVhS=1s<9Dumw_I&&%rSUI0sgYu--Be+~m1G`*hn zI+BRAYbIKcMPz26+Yle6FJ&@1TJ75>5Ge~%*F>bFg>Y25Ljet>3|KZK6V6YyZG8ic z6Ok(=N6L&70!Wn}5xG-Rq<$NmP(Z4zDItYj!;iI6}ft92)VSDI~kkUj{Yali>+2axt~&K0RmQ}@i_ z7=Ifk6i^lC`wVSekfvzrj7z7k2?5jyNB5^-i`24zVvTU_CJ!3(UbuA+`*aTlbH^u8 zBOLYkXMJ+f&im~)OH+5#;h6o#FqcrPjK3LXxA#P3vB!DRh-ROz5c43bc*Mzrq+W=6 zscAo%fw7ZyNRvrw<2aXHUaeqyl!({{ViIWwnGr7+Eui4&PCZH@hiyRNu zg!D{AUTf;_2jz{K;H$%u|*p3F`g;56Ghz%NF5^5c$$awpQx|o=ln3$NDn3#_wz&m&Ad)fDO?t}mU002ovPDHLk FV1j2a`vL#} diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_pinnedlist.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_pinnedlist.png new file mode 100644 index 0000000000000000000000000000000000000000..615faee3fa91324e58453d9269ca9c5521cde198 GIT binary patch literal 1527 zcmZ8hdo{Pa)whaIPmw^EAwt{wUWnw?S zm@@Exey2z^I4%GH@zYob+fx@n3p9VShlk?xwun>|(_1Gjnb;`9;)xtlBh9<+z*`S&0^^?R4E?4nq^7uF+m;U3(`u+WVN^;=eIY z5|oU0Jy4qtmRtbC1&c@7oUy*;cwJ<&>oN!PN?N zR}T@N$ZIm!oVqW+fyF9-d_9>K{L=C*k0m)T(5e`tiH>xM*2TDC?vy7IJ*K3B)}! zgfzLcR`=eJTsuEnC=4ycw#2roMyu4%OU$GMh^4VC{0ovyxHSn$JXnVw-;cPV!qQj- zmGm{VwdyGE!b4p$YHTjg1(vBwH=m2psqApz7!w*kSDS36nHKwjgN2SQAu`Eo--ozC zj7WFBuCy2&Jf)g3^%2LKO=m>cZ8jFrC2yP##j}j`@owfxdZyzW=%a@t+IbNt%8qn}u%9g0t5o+91(ui0 zcI8$)e;9CZ@NQd06rrL&P9ZWeMl`u3cyD=@$eWL>Oml+|3H2e^9w;Xf)rKw*jLEEq^TTrEiZ;zxUsQ98dVcR0*Be75 zk>~{ZI=b1nS@Xa{4VYw2Gnn2`l$j( zYLRT8qEPEJb;vskB`U-kf0-v$@@KZugHLeK<<$YKt>2KLh%~ZvK z_vep+{M-j_c*1`iew-y0o+z_2+;xIKBGebFlw}ZzfkiZw*$Yoqu>XS7!Og;(Toj_Ay@M&-GupoZ=bcI8S-)=Q)9boj!) z8`Oxz?(Id&f4 zT-taRUnsg_m}2}JWi#WnmL)Xg$JH;*zLJ}L0K=+K^bS2lw4ez~HZfn`aiedOFD7?* zLg01U_+Hne8b_;Qk+AW79G}B4U4V^@&@Fpw@AIpr(_d?iRq*PuyyM=H!WiMjg9zLp z@8-bn=1`xDdl4^{+smi-9h4~Ldr7ZXQUCHB&gopSYz_6NQjCg_o9i(Ymzp4G<(SLX zvQIFPl7WBPj`{Q@0mj;69QHP#Ka3(T}T@-ZfUZGB3?UhS??$<5)i>yWvsfk5k$-KP9- zT=E_yU^wBH(-DClJRr%5_oQAsvxvMzfy?H_Jbqi&-+4Rm=W_jT$o`EdbcyoejSq@L SCLz3?(ZwFaJJi|*W&Q(!eY3y- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_played.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_played.png index d61a99502e50819bd658cdff1f31942ed20ad637..0b68de355037bf11073b08557864de2b71d06af3 100644 GIT binary patch delta 1817 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 JPDHLkV1gSD>RJE* literal 1436 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D%zlQKghN+NuH ztdjF{^%7I^lT!66atnZ}7#M6Stboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?} z6yY17;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{p~b01&iT2ysd*)K!O2Cbsd>d2 z`6V`BEhv&u3vKj4u0V1X#LHk&pr7ryZ1mybXUCOy=AIq{1M>?{7srqa#<#Qf_FXX$ zI9@I&r28en*>!VxgN1-oz}@Nt$_)MoKC(>N!^oB*qb6xyx!)CsPlWH0Z8Ru?Y^IY&hLsWRgbi<~#f=IfX3tIAum;`4>+M|CEepS0 z-?gtO_I|WZ8QaWlzh`(ZdmGmm%D8dzr4Oh;}JDN-hXo&AP zA95sd!Q9#(@13vyi!xkNc6Hajv#Vz3Z@cwk$%%BK&z@(@Ki+&gncdF)cG=V{cH(_s1)a(F}%r>^;lO-s$t5^l)BE!WoAZ`7yeuE&yJyRSqk$?eurCDnFYo`dd?-o z2}xp;U%j1p=%)Ar2@mg>E7nWw7+V!WZ%$h>Lno@Irsi3Q^NmJMB9MR-n zd~Mmc{nFc2|7>!OE}U&PSy#l@;p2&^U)*Nbr8XKw8yeQSzl~<7Q+C+De%(giddazdcwBibBJeNL((P& z&&hc^86U;UF>6MODY!crPMEaRtB6&kX^KwhB;y5s3Qze~lzJpHh;XmGc6;qRuUT_X z`Cbt%pFH);_B$RGzod5`{JXyDjP9{|o8wAT6_4IYn(pvicFMuyO6qyr)wbVA57^06 z%l6k!$myc7W*Xbmb1uJ?6RaoK7-w)b{9tZZxXZAh|B_EfrHA*|qRp*lJN#>yXK^X? z#W$C1WccNNfW7m6ez(z5$rJ{GOTHQl3k3hjRPjeGfn-4ibEbMmj!&n>({B}m%3lUg LS3j3^P6i9Ng-#5| zWozfKt)Vs7P%*S5PI5_+A+j@H-uJ`%{{FxJ^Z!4W-}B-5^5nQWW7I&}AOHZMW^adb zm#N(zRg`4WbGa2G6JV@6#s<(hc<7@nL0$K<55{5v$7Nmx0K63jP}m!hQCmg;K)wnH zke4ZNuT~}ZpRQe%{D1x4;IC%r6#ziV(jN7*2NAej7Lo1gsUhernz+zfYux+{`LHH9 zINPlVmV+`?HE)1mQRq+<*}V72!)hveJiU7CR$6#B@_@&~Qs_jn-^05#_q5zDjdV49 zk@%RmQWq=#OxRc=54}l%OVXs}?PK2CTxrt46nR4wlJ$dq(eYpZ2h;wP+>~Mt@>RI! zx50%KF30`1CGebf-1i>`U7MBQN%9}2e?B?)7fJ^ZD5^xLXH;r;z0*9N>Hh;6~i%8m;~qvS8wL{Qj7W zye3#diu&0m{J)~bO1sRwV#s$t$@o*!k2E#OEOca7(P^LICB(ba2Rh_Hv;}dp=BqUd zscltaLKzI!7)gQcN18?i_ZNM&{T?9r;hcVQ#!A&!Eu~L#E%P^ND@3=|(jJ1qNo?R3 z%EDGIMf}0LtT*0U68*Wg1X->X_t}`)*Bxq2N$Cu$Uku;bnw6Bm*$LAw3sH_hqtq`r zVv6x5|5Q!CsTbf54Jekgrd(80=jX?H z7ms>eT*IunSsi-rf4lE>%zHh36)6!n8R080jK8%=u+S}a1lcVc8YMk` zW{r3fKWW}hT!m5Goz~E6Zhmnmx0_+M+%-xh%Orxj1zTLUNzw|P__{ev@`ze@O=iK+ zT*WHEh*T#)Fh{t2Wwpbm%(RSZGpQhTAtsw~LDiba9%B8On0}%HsjNV}Z`^wQ}BZO~#_M&34MWpB)k%lxaTVW7V zl)dv>=@61AlFO9F=NJ1=3kV55STqIQRy|L7(auV>yqs(09)!`|Y?<8U6_oo=yBu~w zhJk3Z-Ixl}dy7EA*Wqgl?{yWKr&Kg$S162yZFUv-Xuc-Xw;mB6IOn9`^h3Cb#QTQvjLat5xEvu# zYLsK86^kgTjh#$3Wc0N0LuOhg{p9gXcd9+#3|H^`azmLhlmSuHS?|8bb#f`+6i#De z{ojJu9k;UQlrcEX-`QJF=$!>rK1k3h{s$>A+7gh6xXaR+H*G4tnLqXMR8)F_yhK0i zIf5r>{6wqVHVQIItAM$SBK;pHjZ}gq3*)J)>Kl5W&Ajt;v@=3d-@pPyk@p#@q5kwq z`CiP_(PoH7J2lrCzz0(zSQVWe#=T=qE5qTdZD(eMT_H?X*wM17Or8Wh?rfEmD9Wy5 zY^a|ZFjM7UqP^3HXZbLU$#qmZ`N>34pF(Af6CdU`b3&s~8IS6Iou$-RD*yf z0Yl$F86K5AzT6B=c5y}IHUZOznXRbGCL@l3X0A>DA^<=#qtVOh(TOEfOC_oMR`x-a zgm%sLcaBLVuHw+|`_E!jo`_VQtf2IF6QjG**F1!SFJI zpHxe18%QR7DZPtQXyMq1BOUYw-e4d=>O3UmCq}f!h5az){dm YNRV46o?bhbu=h#qZJkk#Hn_CE0e6!xuK)l5 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_avatar.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..f843e00efd1311ff6deed6ed8b08354a45b5e005 GIT binary patch literal 1249 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==Pq0fyLX?#WAFU z@$Kxr*&>b-$KLzsh=?j~W8~y)(o9lheB0!*TZBzSd0Nuq(0}Y3JH!swJGgW&*%Wdm z+eI-VW1&)=0Iyk-ZqRfwYHzW_io?kJ^OdhJ#+5O)ht7$ zMh^v{4i*G;V4lO>e^VZ%=j7z{Oh{$wUC5ll@z!zo#3bIei@v`wt?HBdTJ@KA{a#52 zN$27h%0;|$SIaQnmUc9JyrQwjy}9LatT*T9!x@ZIWwVlZWIH5olYeRSqti+>%RBcQ zJ1i1hsTZvhQW<^BFS}Ro%w4C>}|EE_Xe$yr9cd(`DUo2Z5cH95g;b>R8HQ##9zW@(}9>$4lH#sU!xOP!T?%bmHZc|g`Q)0S#6;_|q zy*>YSoWjpn(|fWvGA_B=eu~+{?w9K0s2m2~P(O7;29>*WSI6&q_~PUaF=>aW?ObXN zTl!{xelfLK6QriqOfigkQl8U$3kIWgN7*Jc_xH^S(%&p9?J(;QkCw#wj7#s9KvZU~ zwVA=-C!e-XnKvQ#Fvzf3_j#2Xj2kBIe$lj85oFj)&F)jo7VQQfMP#)Tj)9a^u`IpB zaE^yfZt-8%UWw~T%q#AkT-MWd_5K1&zMZXQDKc5RPVW#)cIdJE^5Ig~O6K_EjB0Q5 z(`=u{cxD-TrSoW<+?Fuq>Sf0RA1~hDvTGwK*v?+NCbPZxHf!Jdf6J~eS}zs#`QPnh z70jZ&{{PR%t)94}TK#RP21|TXLCkFX|&t;ucLK6U+DH%Kf literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_badge.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_badge.png new file mode 100644 index 0000000000000000000000000000000000000000..5d3639f00eb6cf09ba02a2a5889e0fc6358756e9 GIT binary patch literal 1254 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS1$Gb5LWArHipH&G}>c~IiPix&?bc%Qtvq=s^RVQM@`AtiE&TyrT(CJp2F zui4W+=j_WlYp;Fw-ZSf~e|zn<)_41#@2tJ{KKqOq;lwfE7;p?Y1{?#90mp!2AX5hV z`};S5OW>l~nFf;ydrmB&fVNg@~!3*GEWsQ)5%JjCW*~&hfnmjERUrW12Jkgvw|H@5)Oi;9PSW zhaE#Cy(55(u&y1$k)ZA{HUj#)hZR8(&>TQQTvu}zBxSWoA23MPM908Q#wwJ_Wbiw# zTmr_WGr8X3XHh}BNph?~qSBG>&=o3R6nGm@9o2S8cT_zYs&@tLBe_`#5|plN3?1PU z9}VV!Bj686DzYJ4vN<|!rW$H-KtNgtv`|ioIr`^Jti^}H+@I)t178P@{ zH3WSuI0;eVe~22?ST$dzmr;SmRuBe0V_+o^Nkc`RlSoS( zIZ8H`AWg#1dk(GOoX!g_w}@YrBa-Y3SG7Z+4-`>O6Lk8wDmd8)z7>ce?Y@m}bYmCk zuo}eSbjHqrtzmN_`uiAr1ytr9p3(jU^xS7JuqE0>Z{sU<*TkSPL7p>+T1I;p=m5IX z`EBYl>Jgx$NYL>W0gI#x!QN^*yDJ9FI-a1m1z)et)Gcd~+;}h#%mCwRHIL3B@BrA5 zE{sg5HHKWyCy^!KGVs5^z^SpEM6;?ZbS??;f+C6K;EFK~m5O>SyVJ8@*ds}_fa{g{ zCGIIUIi%kPZYQQ8*uc{?DyA+!>5|Vnf&eNBaNa%iV4yFkr*p@ik!mQcS!-8w;#qs>_-h#@0dsiy4;T7~&6$x(Jz z*CE>ktuN(2le2c4UTqVk4Pg?|;|U>&wAx;Wk_0oTOHg{$p(l4HaucNmo-wt7`b=e^ zXDc^HGU+hL<_$XA!jjM!(41Ojf0)h8`pMu_4O!>~@e?3+BdIw9bE953XG)1&$c%_E z$AtH=B*gHOs|?KzvlG@Y9U$FmM8D3wnMgoe3Z)b7abm;TOq5Bvp>z>4%Tb(S3ijseGjW56-s7;p?Y1{?#90mp!2AZ-Tz13DR3-6q5Q QVgLXD07*qoM6N<$g7{J#c>n+a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_icons.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..b3565e8772f4d24b11396d78036367b0794d63fa GIT binary patch literal 1304 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 BhdclP literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_liststar.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_liststar.png new file mode 100644 index 0000000000000000000000000000000000000000..ae84e58ba020d534644e2aee26565157bd534966 GIT binary patch literal 845 zcmeAS@N?(olHy`uVBq!ia0vp^+CZ$u!3H837o`Fz#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1oUcd}zgY+^4@5%FEU|`zr>Eaj? z!TENEZMKM`%(2at%1ug5UM}2$QyjQBIh3?i1TOLma2sZ&YPqic#K>~+SX5JQ#&Q;G zX=g5OX;%@UsT^Ic3SJ>PLSG*JtbSnTb8YVIn|trR;rQMz|M^q>%=G7F-=D2pyg2v& zLB1=mzwRyIe|KnJf~vA!Q@FtFUx5>v1kI#Yo7}n>aMVv)>G8Xgf~3H0!dV-g7XQ_a z4{WmL)-rLNyKYL<-7_b}+cp;8{c!Te*_3d*&UN<$jHZQ5H5feUj?rTF_Xm|o^jqk=&fqDLNrrG=WG>cl4e(l&M zm1F#C)_oq=8~j~0z7M^V^BTW-inx~E+S+zOT42^)qtJElbhN|^a}4J)e#y>w(OZ7K z=D<951wGA&t~w!n!EYjuou713wC{Q3?&Z=MrU={X>C!)KA$1I3tjV*{4jUoSHJoy0Cb^NF%Alewn-;MlyQ_8yIg zx3nj)|7rPdz@Fa`xoqoA#@WiLb)7qluT)QXq@CWyeYvnuCa!6Hty;kBjdsV9q#tV4 zwCH^6dvN#lqDig49KXLdKaqUgTfA#ktpV%lN)ai`=B1sf6a6mu{WB8FS!x}(EaLCw zpe4RjmBd<~cZb|u@ztvP#?|2I+MSQ`J8!=4I{onex!xav@QcITPsHLEA^slVL6|D4LbDlw|?e{0}ZlNZm=rM}q8`EhPI?*+}b6Ql0$DT}FQztOn=Xyb0{ T1nINAprq{S>gTe~DWM4f%#2%- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_lock.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f1170712e9b5d74ab982336a81cb28457a7242 GIT binary patch literal 1545 zcmV+k2KM=hP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=b4f%&RCodHnp$vrAF6PQYU$f(pU zCNuaR!%E7~r>JjGuIsnTOqmGodQ(R!uTdY9H#4;`gVsU9=l~+d(^lWlB4)@a&;xYx za{zJm(*!Fkbj&F2?e)WmFH=Z3tPr8A?)43;k4xBS1p_)(l=eH+<$08gUCi$)QT1+>osik^flYrQ30ncf$i1sBQsow#{9s|FDs~Yr{N~J;i zQjtV~LPQ(h+hZD!F+ogGS#CQ`9o2yTC&Yd@vp9Gb zZ2{^rDVH@V664m)h*2Hk_)XAPle7#6)lVV2_WXnZUI3Sd=UxI(Dv?k*h z=f{lVnLx&a&kPchX@3rMf%m~`&<39L%u;_HB$aLk&hTtiQyTAs!kiJ5w}E^Sz1cu^ zv^T&Ra1zM=Ny=^>n0=Iif}LmR*aOxCDug#4rMm_&0gQL?nsmE0?Wr_pLJ-7EA=(dt5RR z;zEA4%Nh1m@Ccj--w0U#A5hkY5bOeQ8`zXhUbZ;t0AaiOKk2WH!+!#41it{Aa!?^> zdrU{N>b>iY%dI4c33XnN0#)R8v;GX07%BwE5|qiCQ#J6o^`Xrn%Ikasx+(&q0Uf#J{Uk*m z!KSqr@y9fe29r0Z-uTm0;vS27-wwU%4K9~~pYE}G4bZ>Qr~8WUy5iCnK}#zJAKJAv$KSQYpR`Vw4CQ-=;ob4ob!i$jl zaq6<`-Uj-;cBSk`N8W#lsQarhavB&T$1i^mjT-)=j#Zj1R=LmRv$`7~O7^2LIVu!% zi0F1R$PpC5Kty-ZX3!n-ks}gY;+-*#*e?`8>`~-A z=ZBH#)31D&zR8R&vRRx1Y<%`7XXugVQyHh5%w3tJLzF?UbZ9mbA?9-+Z(%E>P(L;N v(UX+K-{fyMx#qSFI?^>U;dC7XAq@Nv-reQL(;MM;00000NkvXXu0mjf!ePZh literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_lock2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_lock2.png new file mode 100644 index 0000000000000000000000000000000000000000..645997c17f1d372fc895b7193054ecb3d056d5cd GIT binary patch literal 970 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{+{DwxF{Fa= z?JUD=5l4~Z-+NjU1g>}qcgDWq+ut&EZSUHt@dqyPCuA=y?PB5KXj+ge@OEp60IO-> z1%<3j60!gP7l^A>@BVye=HA;gKh%HNvA6Q`y*=M=-@JKur#4q7M@IuTbD*@SWZ~7M5Ej3pekjHRv9 zqi4O|I6L)jp|^v%mZ99$pNr4SY~kwcuB-~u%y^VNyXWDaIL-|hp7hsE*RFkk?W=7T zf0wu4#QZ|(|4(Yx%k6VH?7#fuqT-r@8B7ZMD$P63hdnPomHFkMCPTme$vc9w-LI|l zw1XJ76izt%r18Aj&1x=PO@>{qyMDZO4!z+Pz5bH5f=}r`mB)FzK5mLizJ21F_JTL; z$LD4+?qaHCf9iZc;#hG*6LyN`w$=GHSBad1yy zkYwT6oCcH9PHg%@>kI3iYBMeS zcm2?RYe$Wi33AS_>n=GKYb(xR5BSHmTmL`9p2KGqc3Np!gYuE5tDnm{r-UW|sduO@ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_normal.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb5549196ac089f1d1a0d796b5407338fec56d0 GIT binary patch literal 1373 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_reactions.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_reactions.png new file mode 100644 index 0000000000000000000000000000000000000000..544c14d315e511bfe28f0fd738d992d6def757de GIT binary patch literal 1094 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{e1oTpV@L(# z+gYc*LkdNX%LXrEPr1;|p%OL4alPvofhq^xTdo3E4&B;vQAx`n^R@g1y^Qn#fhl_2 zN?I{0H}#CVRyZhCJ0wntTI4(5*mS|+m}lkh_8NcxzPk9q>-=|Te$G9f-uM00nYF8p zjhWmIa7ZvJC$RK12pS-Be$3~1aw*4b{`vQ6_v%z$OI_)Bw&3~;O(}=HJ7e;ugytTJ zKeO!c3ejALNy$>aN+&P&zZ3e;xZ2+B;qME|Pm=5lb~T#qDrv(r2GPIV7** zOsWbKs*$+*?tA2A-_-k>F|%eans{nmz0DTklAhd!hbHzdEqi(J=9Y$S7Vh7!2VQL! zyI@uSyKJ4$)#h(9CT^0S=X!s0R}lzJH0h&>!Jh%RL`We9y8~=c(4S z8of|ofyVulAIx&+&Gz28u2K15sIZFkj74J86qhtCsmy;!_0>??~WlTdAf!E=KH6I@&T};^}=ge_s8O4KK{^y=MO8=BY0=owM}?6+F3?q)j`n@#(kj z$I}P)O)O?Fn5TMD_O*-+c3sM%7bqB$pIcH*R47xbrW_2fMsoU6As zLFC#zQ`t}Ry;sj)b!6dz&5}-&)-U;E&QO}l@UrQDN?HiVg3Bwyo-Z*_OJ|#Z$eCfT zL*~5}haHh>`3~-x_ZIYJKG2vo=W3W0dy%_Gbb!I4uB8*1GjwG2S~Z0K*hoy(Kk+;> z!}?cDhW^d|z-{ljgq)Tx%3Q;`*Y|+?JGakY|L^m9yL+!+^Xdx$JRbTtH{a6reh_D( z_1*lNw!+ES)!t0`(cyNy=UvTZ749BV|MHu$q@e4bNnF3)q80WU`k$jtd{-8Y_T9#m vsJ^TBiOL_oSf|;OUANxFnpOSbP0l+XkK>ulUQ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_speed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..e497a6983e3be4119775f385944915d4fcadab52 GIT binary patch literal 1550 zcmai!Ydq5n7{~v+5@FMY=uYZ|G4?C+UZBhaNK*iO?>6n}@ zt5Sr^r>CUWSq@O_F=q#W)1^HrU!20cT*C|NOH}$%5%Tw^X_ltaE%?Wx8W*KVFey@h&4XM ztfKgHST$sC%Q@r3HD#{~rvw4CiA8lD6uBQcM`6eqTXY#hBLnVz{f473572)Ae-)gQ-&8CR2+YT% z3JB^6&jn~QaRYGZ;(J0wPH&?|yAKScTg4)N?~HGK4a6zy^l>EUHv$D&5@ z77BQ5K!j*gA-{0TSXOxj2>{8;&b)WQ>CL5%aPJ{ZkMMRa`oTM6RF0M~JKU|=p>O!b zV%)@UNe&E_IRs4x^-DG1a*LMVnHvSbRITA=LmZ~j#9zZebO_&vva!EGE4?$f<&=>( ziS&iCw05DO|7@mINnd19n3Nm)Xt=VfkDHZmUofp9SO<$4JEIpPqVvR9ENqNyzz*Nh-c;vuzR9O<0e7R_O45em8*YwqBVd=EE z+)5i|BbU;e4Mp0rxL-|iqxXlkI<+ce7~VDYYa2fY`k~L~+eQ+`Hyd_C^uKwCRfxXD z!6?K2@v^R1M;uHWgqeOBVk#vZdl$?5eBjG0FTJ_`+)bSF`WGuVWS26Lc{TFHk(&op zx8BaEeRFkal*uc^aetn^@-ZQ#203`5u7`TTt3jfW0}Y>L`!Jv`E>=2i-PmXGh}{*X zZY#GlwI58WuyFi!$5Z29ekXQs7_D@NM8Q*l zPY+f4ojtC)mQB*P5zMRerU-6MSV%$n zYl~uu;>4#S+1(bsX`c;R5yDJtcDBue0)O%bIq;-y`srNBA5&lNCHh+8_4|@X?6usl zjV{*B9FL3KYaOe~(jL!Mg9#PK5`jIM200Pci^7rtsguylXZy|VR`^n79UV1mnlWd| zSb&d;Y}QQ0n13J4@`QCP!P`p^cf6*$c!uEi$0mc+=6zE8giiF%+bKffj}X^O!`iz} zuUXK9yMlzc1PZ!o0KY5f&T|) cChNbeeLVB|yJ+Tl$!Zt7?mz6raR^HL8vv@q$p8QV literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_stickers.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_stickers.png new file mode 100644 index 0000000000000000000000000000000000000000..77c1746fade5d340357fdda939ce692b4f24cb10 GIT binary patch literal 1267 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*ISPk3|qlWkJzGf`YOaR7MXY=?#@h zQfar}mm1SFqw{@p@7#0YeDHT>&U}ym`OnOmIdjJe6TEo^yaHYUuYgy;E8rFI3U~#) z0$u^HK-LPB<+ETem#ZdUBd7;+zzk3h3Tgc$e+{023!ts6tgM%%JBBbbz)>&=ifzI{ zxX8gNzCmOy=mV~qa9Uebg&?pK47sLEfRAw7nMNe@7(`(?I_JQ|Gz2n;{Y8yt#-(;k zEt5cqBiHw1P+=)rgqW|?oR3H{n5)cs^!HPxRKyWMgsX5?oB9mm?2%h}516E`R@{Ig z%Foh10$9!*_-AV&mx5055L3F^Repf!n+Sji!|B&U1EleE@;5wJMe z6Six>fFhCj)`W5_rcH9IESRGp>nb+G&K*%i*ww1Y)f$tdLy_Z;YgC@G+Oimfx?%|2 ziD{2&j`NMn9hJk>mW4njVy*;bA<#eLPoU$A0_)?g#`(tO9xq?v_G_tWiTf`y%8%)KPYxra_25I;d(szL5yR`)- zYXcng{{W{)-~||r;rEjEQ=C2W>#NF2RiGYvc^I6e(;rnmF0`|DRK))k*bM5yC6LBG z6WjvaeJ5_{-O|y6CLIIqh8z;|1k4}J2r z&;(ILYqe4NNwN;SNs#OtJ_}-UEMwmh@Bn-SUt;i+cCn{XdGgveTu1e{7w_p&Bxo-O z+rT{#Hu;Q2zR=hjj-{;voB>+98qSsXZ7rh_|8ABu$0Ec2X<#*|1G7Qo9hPa*6_&H=xf|bfd8vMt= zx7|YhE5gBW2dULR#%;cneM`bIPHaOg-~Y_=otz7UonyNSgiWRo@?6#&^mTR}qSau> z2x*zYe+3$o_cpgcUAU99$!lAgqFe#3U<;@W`}u9JfLFjP;1%!+cm=!yUIDLwSHLUa d6)1fLegol{@*65sa4P@+002ovPDHLkV1lKLGHL(- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_tools.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..75966dad5f04295e9c0a95048e5d6138e6b9b9ed GIT binary patch literal 1200 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 Ub&U8__W%F@07*qoM6N<$f~HpuT>t<8 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_psa.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_psa.png index d8b034c52a1743544cceeb903633e76a7a2a0821..f6eb7acd82155b804db956dcca7e4109764c4ae8 100644 GIT binary patch delta 2039 zcmVwAC+wCllXv!;*;88F z7alhA?#%NZzS)`C*=bv?Mw$#X8E7)lWZ;U;K+k%4w!FN24Ys#}yTR??<^)_?=MpS% z{T`g^>FHVGT7SFLmLL++OLV)zFc<(wtLW*3+OXF*va zE^+R

    %RJzx~ffvQC|WUIEPq0oK54?Eabe=xU{U}Tp#=g!83*(pXv-Z zGzk9)7J&w5i3aRjKtIqRz6pfLGL>e)1Y^{nAq{G&Lw|Axz)8?e7O5};#=+)L=TtXo zqqgGcCh}zzWnAIKKLlq!_ejD_0<$29~Hx=ju7My8%20jsT4x3*a~K9e4-4 z0CELGJM|>r<2GGtb}*zD&L!ZAg32}K(C$TW#(yO=%IDF&25yWEiZ&XPtbtpxl=E5w zk=7e+;EJZz=-G-k8^F6RSwQ&*>gd%YO4J5eO8~`Ge0>JVD6nKA%G0DWL~mMTfx2I* zcSo#U+Dv%(M`O9x)Q5P^AfHDUy$GbupurWZ(uP@-$X76L7@CVBaw|iqvB#1zw{A!o zqJLR~Oyj}ZU>Iyk@Ca9})Gq)_qSrH!=#|Hk{F`pD9X1$`ql>jl=LaBpTq&rP`Q0j?~f$Xp_D|7o`o<#XU#k14O3 zHri2eMKShz8~JX~XphT8SpntRvY?&yxPKn=*-!PfyAJ#gT)8)`6MBU}y;w20vd71f z_3I5Ajb_=YyI|-;R41wQw^Q*8r@W?!y}wX?v*t#tb(5jXR3*O88kMYASE^+tXviS? z#Lxw)a8BR2o(E}yH5C;!S?v~;wYTER>D9HWFX4dJFJHNiP(EJ7I_*yzoZBo; zU)J;`!4-Xds7(k!Uo}1g4;n__GITL2D;6u}mM=m2R_=;E&D0_!M~~0v;9M4laUsVJ0;}s-FK3lO^F{|!c;TNrSp@_ZrfGY>qdRC4GL%|D0 z(;@_wy=qtnvDbF9L-~HIZc!b)QLh^2BSyDg!jZP&%&?&=Lv_p{`4%6_n9d#Am7*0x zJBfKseKSExEghJ2dLFSG<*NJe`Zn#SR#l8CKx*wH zqh211;ptWvzI~u`Q>^qUUOod$@_+VGU@(^U;m}GH{OUQK$w`CQZhzI!ql2)T4~KFF z^3l{|=Q@$cS+@YcCCe+KIoa-ltEr6mEhO}EV1^3 zVyIW@LR{_P1zEv}#-dV>zjQ_l_W{r;M>_B4{TssSkH4hOVQjiHf{wp)AD~LPb%k#` z(D(VWdX8R~>N!A_1b@(n!R82F=dbGiO@f+3oNiLwGD#W%I#O$iy0p8m<5E;smTlmB ztmJd_v6)=XVrUZhL}vmE&u+1f$tJMQBc^`VbC5iB9IMSgMM#t3yOJdJB;VtvUv3^~ ziQnVn$g3A;!adK`C-SY{p5q3D0~(Wb2q{bSf?M`KhZ1L&$bYAL#vC^(ZW%{3yZM#? zok1*8m;vJ;_;iNqCT-MK9Nk2|47h&gDVNsuai|Xm4uWwI%6o>oI!K_M#6^&PdeKa% zPc!{MhYCWsK(5Sxl1TuUg+%GK#Cmr_U8%@sv8{{CQB?c~j%olM1=dyx>QY5EWGl4S zRvdjKJ&vnK>2Nr4w}G50!6GhkR^DT3%R0gIlH1)t`#eKnC)fx=66n|pg~wCIy5k+uPGX=1$_?IAb!gC-HLmSG#O|z&}5*=!2dM^{{ad% Vkq8sEe3SqH002ovPDHLkV1k&X)!zUB delta 1863 zcmV-N2e|l!5Y`TmB!2{FK}|sb0I`n?{9y$E00#|8L_t(|0qvYmXdgus$CFkFD#cW2 ziP{%>@SV(gKu~D&Ajh>^MA54nVp$*V4#&Y18oM{ z473?&Gq74SFt}2IFD@?1_hxV#xB;xoz-8bK78T4NQWwAeD$qoZD7yh6sKPOoPjyDG|4PjIEkP z5$q;#1oT_vbAMCnL?s=A2=D*_z6h=@8R#$6n*-m0^FV{ML<9CP*aEhK^`MMgq|)<@ zPp_7#+_yR;W(XVxMWQZo3QU08%Lb^rnT>4AbXmnRRF=QddIT~8W#ej)eS}* z8J9RiqL@bN`m1G60NcTQAj)4UI|#~lxzh27Gvk&IpMNN}?WIXmR+MA#n=dl-Q(!|% zpB5KBHfFxKn4%c_n*)vd5!3vLB>gWcc`pvhviV6X0GjY(=l@)`F4q`uFG=m8ndz2HM|0l4xP ziqk;zr>JCMr-9p&Bhi_+4DqnT@`7&4s$ZnTZX@`}!)d91LU~USuT_rSltqYchgCmH z2iZ}>i6&^3=Q-Hux8N5BUy({(HQ^#<_C z9~4;KEwBF#H){)A^b}*G*}N-iQ~mWMNVG8J$^weYpAXn*pts~WN_FF_)H<%C;9X$J zgFP82P(Y&362h3e@pYYWW>EY2TfHhR?3fXmD=|BZ7u)8wL zg49`8S@KzL-q&C+&|=vKU>f*D3u&%g?<&eXD`pb(C3W37o7#B13`b8L2#*0*CVDD1 zq`a7C?B1o@fA91L#)=iYX57`6 zo-rB)uAGaFtg0Q3*8yuuMSE(|0_QomQ9O_O2)%C*23jn4WzJPJ@l3#)>%0%#Z>AY^ zpV#zhwZUp@$4w|f*4Mc;Xx5B(xp|hH_s~ADyky`{o}Xs0t-A$nwZUp@$9*V4)_(`$ zc_-*59^Z!aQG@s?l5^V7S5;YUu-e+;t(u^G->Pa*rRwwcyiCQ%jmj^OoOcX;jLK?* zH$g@7pqK!nY)H;S7(QnhPmmmKMy`m25>zSEb)qLZ*I@sO!J%E!mkfO!mG!n*ZSD97 zbur6mxK3mN+eawd?391pKyu{5YJY>()=oH~1T8oL>v4;rOQCw$AbHl%rBGRIu-Y2- z#cMwbTxn#Yh?5^3M?Z(7i!a5GHBr3T#~6Bp&S0dIUEQ)C2c-`kbQ>1j>zG})oa}x` zb)UuVo)l3V=Y2lBgEakLKh#+a-Q|FN=<0kAS+Qu|)4jU)y;UiJPO-b9)qjb&$tMXq zq%1jd%Jr~Xo@s}U&$x0ZI)0dvE|^6JlE9F*L@k&FT|=65$u;PVLi`Pb>Prtr#Q$)o zUviaS0#3GQ?`sD>c7q>)M7tW}zPd4b_?lU?S1^z#-S%-C2*0+StsRFkw{Gk+{LO9q zC@35x+c1!@=_MGeu?ZgIY^1};xqv3uGT+9O3<;}dT&J~{i99~e6IBV?qOU8d4KD2;-W1Xbr zwi(wYuCC~9b(eB;vwByE+XGZZDI`hl5xh{6NRS5A8DNQaFRi__5PxN|GWiCI!4kzh zl+0O(2uCBp+Otw%>i7FY_Dz(@XXcwrk0{pu90Sf9hr=u7Ai3r_Q#~nJQfN@_??G}W zNxnBpA?jq8X0ese66HR8S8-ftf84|_R-)_|%Xn*%TfeZoPZ@2D7=zPvepi>s5S0+_AvyrVhibSy_8IY4MEf7@u z2X)j}Qc&#T*0^bCVqRJvJ zadt2CSBR>7)udxk$SsZ07Sm3kGl6@6X53f&e=N|q1d)toLO{agTN`#;fzIb>&ph8Z z*H*Bg9nU#%CVFcI<5t=Xv>9kK&}N{`!2dG?e*^FhSE1I8D3AaE002ovPDHLkV1fvc Bk-Go@ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_rate_down.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_rate_down.png new file mode 100644 index 0000000000000000000000000000000000000000..094d5804346bf193394c935000cfdc63268d5caf GIT binary patch literal 1002 zcmVAWQ%o024Hw05&k40GPnuAanv%SKDyNx;psIXM^>< zr)L|BM3!}u?k)g|q9}@@D2k#eN@^A`0T3~x!;0iveY7lVk$7bCKytHKENW zK?1O9Ib4210DY_2S9UE`sf=A;K^h(*B7GfXoO9c?N=9Yu`X17dvFis2Ac})LI-i~M zM{;5+2OYEP5&{Tn6gx1^c?s#@(R={`4Cx@ZyhhCn9sGcoFT`N#eu$OQqOZ2? zeIv+?h(j8&q|KTzzcbL2z7BFLgIyV19iU?%5kf=y2YS-iLA)ZZd+H3u8N0rLln7mN zA?WZtkV7Ic@f62rM9z%Z3Oan1&p-m`dv>vsbchksI?tNvoR48BR+Cou0ULJPw1)RDBq*Ku&!C*2bv5?@0GQvjd$sPa0*UEvRCugw9U zxxp~TUA#XOtP*y?jPLA?Fl<9I*f~jm-GSAVgfG3GQZBpn=o>n?O=wB-3%ap$#hqs% zZ`xpc|7wr&T&@|iE@`I>V}b4dsX$NZN7nG+7~43h!FH!>x$x-n>NwtJU`nvPw`P&% zbE8dqM+e*cYhvlgcC@WvF3`i?bwvoaC%tc@w~2u#A8nb=Qi!zopR5~DF8xcUlQW$S z%n88(7wmr2J@+>UwwG}&8PjoxV$!XoNr3IDmb3dgyFZ^iWI=faa^u|RO{0Oifx@rS znn;;_1T~;MSL6NC{BlqOwkwvz2IdU5yJwecP@YPEj?am^z=3{7tSE}2D2k#eilR)1 YzZ)XrXW@O5w*UYD07*qoM6N<$f(+Zrvj6}9 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_rate_up.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_rate_up.png new file mode 100644 index 0000000000000000000000000000000000000000..334f4a8a72ca66925e54337e7147d4dc5781258f GIT binary patch literal 916 zcmV;F18e+=P)kfA{uH^X79#cmJGB2F#erv$aY>qsTH4T^c7HU6&xULx!A z09a2k`alc(H0nm>M809ax1IF(?Q`ih>(DqG2o1JZ06By0Mp)15QV2zyTKp*$OCH#>eE)^0^mdo{J5xFtcOvjbRTC z45=XQQe#*YU-!1)h>L=9tN*@bocIjG!`*2Gp}?0VjiNy&Ym*sZUiLkm)*r&ff__>3 zWkZzwy@QN5gdHp#LO_-ZGOIQjkMmh!y&jZ6NU&Zx{Mtdr`#(ORe6}C{fKjj_n&cgm zkxoxz@Q84a45w0$#(MTl?Cc3*y{=qH*5)t=UfiF~`I(vA5oPFlip@p*2VZX*r&MO; z7$xoTIx=Jycg4N=and7rVgVk(YS&o9^;>OjH9|^)KUn>hxfhSpKb9#*4j%BTpfgx4 z)G@rwi#QPs6SL4s?FL>u#x)X@&$6z8)*$a8#2^;b7p%5@YLu@nO^YskB{zSmNJmLA q7320o(N0kmMNt$*Q4~c{ZjXQ5BVeMkME|P*0000%mG4r6{7ZBIrvf z)QnIl2#LUlpt2_Vd@P8HKBgdqh>2c|prACehbXMHKuHVdAu}y=DyJMZyZ!!fF5J6k z?Q_n)=bV{4!(Q;?%wBu%|5|&^ne#p4#zl)2h!uzxh!uzxh<_D`6^Ipx6^IoGuRurm zl=K<3TJ3a3EQIL^HMV`Q3x4S6=s3c*WkY{5lP`dC;k-nspY89k8U0@pU;AuG`ZRa~ zHp745v%lzg8*T?JG?y`U3M_?pU;uok*x$fYFf*5Um4iq^i9ZTjc&P1W!o4uTm!tY% zHT(>rrkuLrcz>UMrG5g>fgho$?L^>8H(B|h41H3NJ2k3V(UO8FTn^z}j9Fdk; z(eQl%rv`~Jm^tI&X-M0f)TdMS_!jhMFz-vSY+0yY=6IrPH6rcBHzRX$$^hoy0oDOo zzU3)XGk?338z@KDwq{Na8G!mCH$u|BHAKfZ7Ohp#xF_l7Rle~desq?AWs5>|Qpcj+ zV?@}HIw`Od{k07-)&@>b9ggmX2JQNfJ*ksII#KMet2S&4?fzDLwBHg|UlAXg%Nz2p z|ET-7;)a?|ov!_XqqDervjUovMYFef3(ZOJCx5s$J4-#!*+Cb1u5B-RSMCa`jpm@R z`il6_Jj{Guyt-zst!Yf20_o9$Ydc)WC}``d+qF^(bdsw|d!ONJch?>x!OTmPJbTaq zL--WK*Y2)KMuLY7Uz4lV0%cadDN1`ZtgHQhvQlfcK<8u$w_*Qr^-luIc%Cs%7p$oFez4u*Ff)Gn<bGT`)s*17 zQ0?D(L!ycWyxjI|D2|gR%Yn@gL zMfUpQ)n~c{m>8?eJ%WaHtYb)j^bQVA3LVD zEKHvP|81=r-vIQ$D`0)ggMYhr2yPiuMR6Cy0xt*afgA2r(~ajfuHKkzv(WjlFSQ)a zod;-MIwp(ZTNDeP3%=t_V|n^$r2UJ5FU08gvv56h(;fLBxTZ%auR?YII*_A;g>N2n z#K;^%5%d+?V(3Z+_p$wij|=*fcHG1Y#0ta;#0ta;#0ta;#0ta;#2gC53XG)+{0~nc V+^3sr#mWEx002ovPDHLkV1iAG5Q+c* delta 1623 zcmV-d2B`Uv4a5zQfPV%qNklMv^PZV0Q@r^K_zL(6_zL(6_xrNk)sQeUZ7lOfy3Ys7$V1aY@1~WUJ0HC10c@+ zrr{&72K43~0Ws%;yTQlc1cT$3~jdSHJaT$GSy7j0XBCg-C-F$=+^;0zFFZ5sN3G(8w>*_bBo zPrx4VGnfT*7G4RYEpA+2(sm6Kxnim{iqit`0LzZy)PE#>UR+k%bXl$fZ-63~jbdH{ zI=iMNtn;*$-S>8+ItV1LIDY zmE&3- z>;*F%g6%wL>7i~?S)h5lBU)pd=lI4PrWNRdF}+6)b{oFQ;E~R-{1l zV}IG2->}4xs1<=?#x3w<@OyYu9NE!R?kU9>I~Rp!ttK288AAB?D0{Ih15%rK261cD zBKv#Juyh?)_A|iYuJiC}$ldvK8)H0?lr*tGLEvVC;8w%ebl2^Mzzv2kpNms)4sd_y z>3CT_rq1<7>jI#+DpAuIVi)*wsfFmxD1URX|5h%N4t7TGdPD!F$|OOq)j8{3RJhPy zS+a_W(0#d49J#bcUY$Ysl9A{KeD1_oUDA?FXqySXF?72(o|2geCyCx{TFavw%d^+R zfZivK;%F|aZn-ro9pZIHLb>jW_G`jEnr?~F`gm>nNT`K&>s7OsFR!XCaZX~iTz?FX z0N1|7p?7HY841n>2i?pZ{{}9sFLO3#H1vWY;F{i(U6PHZWG@ok=w=U&2icxolD=>_ zx%CD^XNhHZ7A7tdh=PYL75KgY6Mkn?POt-5_Ck>{mWn}z)_AS=WfHgzSc`3?a>fOd zYc}`{SoSu~lj34)^^P<_W}{Up)AhQSSPOxiIq*MTFzGTlkL z(>NN{j^Hk^$r=ql{i41jt6=)x2CS6?-0jU^W>&67^+UMcB)kaXtS?P4f%gC{k6QLJ z&WZWFH%(~Kb_Sp)?nkZB1%JM0*p7Skf=_Xe1%0f|6Y5h`SL5OsOwyUqPkVTou&?)V zIy>TQUE>B=g&;;{(Qn!BpdJmDOSS|4rxVU0e;r@P6HF9csjs}Qrl2Y)?_>>V3@#>5PK7I+9)OHjCn@jn7i%ScyC zw?^D1DT1D5mIHk+C{268Rz55^&eof+fUkhBfUkhBfUkhBfUkhBfUkhB!2hiR{{qq= V!Ug0kP-_4H002ovPDHLkV1gFS7rg)g diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_reactions2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_reactions2.png new file mode 100644 index 0000000000000000000000000000000000000000..253d90dd10022fff0bf874e6cd79eafda72f58d4 GIT binary patch literal 1919 zcmV-_2Y~pAP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>=}AOERCodHn`@{QRTRg)nyLB7 zN13T<`la%jX3>KJ?L(AQL{M5EEC>S2G>MWv6#6L(N&*e(AsQ7_M1ds{mVsZ=FnT~f z@>!($wlpox+wX6u<2n1RJ+o)doO9=1X2G8`v-Vp5^|xp@k&$bZ~90X>APr(TgB?lOM1KbAAO`9>k-M}4S1vm_%?1f|w@P4B-2Ihi&APZ6M z(^3^5=LGS*EHX4W)}tHY#z!|2d~Migp_=E$^PR_Dq{*f;&Wpe-A4y5So6mLN2>1i& zf_+&Dx`;=KF0K!9QT|N*y4I|K0DSi0|Vk*3WjGu z6-z-JEpuGi66uKb0M~zls#f=RKEde1PNw4r4Sl;-QInP?yNn{L zdf+z5TEA>INIHtjs;z2u;5O(YqjHPHFl(18tG0oamADPkHl`~lT}1~vKNeSu+aRkM z7sQdYi{*K1FX$7>qd3944ifYSME7$(J_uF&{~h}b*poKVj5rT8gV|= z(6x7!_Pt$M?J8={>FoXP*N5}{Aa3KmhAXcMYUvL2*vXanUkV<*fwj5*L|zL{niusw z>~@B8Jsl3)xx{d}L7LoWzOFgA-avgdbi2L zmIE~j_Xq2MC8tq77Mdou4*_f8DQ?Zhq8}HB25Pn)iT4I;fKQ%@%L&K1K4 zrEKz4W8Jw>klv<$75L<529|;)z&D?gueN`^|0h;=qHRq;aWAOKl%fVUXUn238%2>% zr)bc^w#>Qdv1!l)z&Giu?4Ra7k2XEQJOrfhQQ!k$&2cnW`WU2pESyn+=Iu2j?qC|4 za3RK%!LX9kFMO`y-v#!R&Wn$t14Rdl4ip_II#Anze*q?fn{v~S_t*dc002ovPDHLk FV1nI^fQtYC literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_recent.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_recent.png new file mode 100644 index 0000000000000000000000000000000000000000..8e4b4ac6e2d68bcc77a3c530cb838ec6986a66a1 GIT binary patch literal 1620 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_removefolder.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_removefolder.png index 48b46e67cd2268470b6b8a12165e7fbcaf6ca1ef..eecf3ca3deb09ecb33f33fac8e303e919478a147 100644 GIT binary patch delta 1278 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_reorder.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_reorder.png index 54ee6aa304f65a86e3845b12ff34f3720f242a31..9ac9280c053951cfc31e0651dbcb778c9697dbcc 100644 GIT binary patch delta 392 zcmeyzbeegBN)%&pkh>GZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mnfEMP{kK?)}ry1k!hs8c`jW^?%^x6N{I_iR(%vaFBV#Tj@|ljd0p)iH{16orL zwCBNpu9E+rr;`@H_c*jlCye1_lJbHpQ9GBuFpS=5I$6i;_Et-Nh?5Gm86($Bc*g`( zaiS$OGKXbKl=gNJ+cfR%X_Jno?KXQ3b$y=dgk8xu_wCY3YDo{`}c)I$ztaD0e0s!6=j-UVl delta 315 zcmX@j{EumZ3NK5#qpu?a!^VE@KZ&dp>vZZlug&}8cPr!C;JgbJD-QXRr-TuUldE=j!^iwbi$-&05J_a_-6WHE+M~{+>QNadztLlg+of_RGw|Q!`@yVpkv9muz9kpF(!cnf5dO#IT zJ`q!ox;d=eTI78(d0SDoT4c_)>|!~Hvmb;p-Cgl;?~NC3d&H$*E>Y_ibFVdQ&MBb@0Kf=}wEzGB diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_replace.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_replace.png index 722c9155acde497a291b8642c588b334b0d2eb89..c52611317cfaeb41cccab4028f5b237eedf056a7 100644 GIT binary patch delta 1286 zcmV+h1^N2Y3$+T6Bn|;{Qb$4nuFf3k0000)ku@KG1E2u_0{{R30RRC20H6W@1ONa4 z0RR91NT34%1ONa40RR91NB{r;0FW_8?*ISz^j!O(`0lkKn5aKL$ zh9nLK`nLo#3WIptPZ9>fWmRhCD1O#i;(C`G+K!;-(0gb|{-E&&dImj(?r&^%qBHIp zW6IJu7<5W(S9yBf?Lpd!5pM5$&P$bLGm11H;q{fyTZ?VSJK2K_-zS z1OSU9xpF7%ZVJQP86uYql>U9bjl*ZFt0h=Vba-(f>@_QjC_U5+lLEO67a%nu>FR%}P zP`=l7$Uh+57fxMLaokNTDU@NxAmX=y@Z6|Ns@fTXl180iTnXwSYikI?9wV21-azsm zDeFd%evQB29QAPIZw63D{MP*~9WYe%d;Pb7se9x26LrVhzYm}GQ2J>(*BD88jUxFZ z0LNG`bn2LRi}0}?Jz6AbT*(U{$`(0)H1pog(|2o@7-Ib_gH`D(3Yh#zmF4UEcJd3#zAqegr?(&e>)-y>8PU@REG^1bEUbc=8&O9b{Wg}1XEHsj=c~C15Rp6kYzCoiYN`{len9$W^CyI)bP8M;04I!xv zIT96undO;uCP`(3 z#*j2FIYQE0(;kwZHaYU6H6(pQs)gl2m-6hxF9~c;Dad$l;+*Ig(khjK zi5M8X#OkyT{Bqm?p~W}GK$qKp)6|f|OQby6O zz_9M-=kYA2cnD@O2;K|KuA*VObX3ypk*%Wk$%h2xQezR zATBrVN&I^x|0c=5ONJz751RjpVo??|z`*b>VY5!Xa?)NU&Sm4V7YWuP)p85qXEKZvl&0S60e%K!iX07*qoM6N<$g8eyC*8l(j delta 1447 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 Nx1O$kF6*2UngFYyR$2f6 delta 875 zcmV-x1C;!<27w2VBYy)(NklCyEe@6pErFQ4~c{6h%=KMNyQZQA%Qui1;$w^nd5Au{4xQiCm{HBYTzu zFM%IGJ5Zldzu90$P>RwlA_MX-Z7JJKU6K-diY*0tffZ%fhk>R%|MVhEvBf}-Lmb0E zz<#|FN}xr+6JU*_ZV)(@k$H+&1U0C)s!aMTR}yMX=- z{Y#Bcff|8sV1JXNZWP!DyvWEeZ}<{uF7Oc8;;1vR&jH|B4*sRahd>QLC$Pg&HwGNC z3wBMCRv;4*cK~}Fb>qNMyC%(SBBIuM5$O;&<05h-?`S!$c*W6CNkr~Nh%+G~Ekzb5 zv_M9jTM^>?7Lk)h7bmnpZ4u%a&enoBAqBb?BhH0d5r3x|fvVZfUj(kE&^aU~ocIXz z0nhDL=S!^P33u~J1v0-I0p{ncLsfJE=YY?yn|vR4h>ezOiT%JQpe>Ef)r_EFyWgrs z`fV`#ciM#*L6>V(9K(7$<-#y!^}iDH6uXq;Q)#Y6-BNots9ra4eb z7)txj%{SUJXjgV))aJ!{lQ!m&{}#x1;?Rh&HzNNvnK#?$xzC`4NIeh7WKf&zS zdgE*nsMVe%jM&fP1+Ym`6h%=KMNt$*Q563Ge*n$$oQsS6m2m(7002ovPDHLkV1h^@ Bn^XV* diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_report_abuse.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_report_abuse.png deleted file mode 100644 index 483b555b80ea0a3d9a3d5be0dd45a571e1b12d37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2128 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 P00000NkvXXu0mjfmYfKn diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_report_spam.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_report_spam.png deleted file mode 100644 index b785ac8771017bdb44b1dc7f457df32fc32fbf8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1307 zcmV+$1?2jPP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*ISYcwPq(sDx&z2oBV4O;brh2xiG4YN-!vs2~nB6dttTq%BQVKIJ<|9`kdu7^Fvxf&NCPo$}+Ny&%Flrkt~w(QcNPJuH?wR%Du@wb{u&G zbzJzroQNrwlVX_!NtAdf(p3#Mqas~Z@DW#Jpe79D)}T)JiQ2Rg=guVO?`M6M=wzd| zdMVtHame2x$3j?T2Jj3+ZY45YC@?s^0@34Ip&&Ax0oZoPrxd^$99umq*?v&$C-@E% zU0JI0aJ(tyTwax&PR)%EZ3&WR7(MoAMTzr+zI@vfG)@5QCc3gzY_r&_k}&v?&wY@e zsT`L>nfHb9*qv42_$YwX80yZ7}a3!c}b;xUr7q(mpVi8nkp=J?e-NAei#3G1+{3mn+ zDVT4ziN@|-BZv`HW(0XpF=Hm#h3F1zAo{7kv{nx+Um<#IW7rGR0nIy&2=je~0Z1Id z=K#U+#TAEZiiv-gu;oQ!+j$=Z zu?S*d+Z+d&R5r!fF4ZQ2oHr7kqf@J2Y}mt^G3R6vKnyH<+Ak zH~YJ`4Jlp7sr+-Ne$6rsY}2kzoe4?+urw>O4l!R0Q`da?B8V00BI^(%$hpM}o4yEQ zyTw3vy@Q4em@kIO(A?5xz6dHif`YVop~)9PY`1EWVoR~)aD?{S57AHc3(y5`_3+UP zkzXO|;pI0RULpwXbPoK!R~*ZC;e$#SVk$m*mEkF1npHZhsTYD0&n(SY@w5V(v55Kb z(!s>1PlC!S)QljuSs5I6KBYsm^OgB$7(o|M806pILXMNfcqIv9VSNRqiyY6m{+L4~U4=|R${2Uy zR6o@_-KVz{OQT3Yo`7yIM1J!cdQ8E=V?@qaXh+e0WFRsS8Hfx-29^&4zW@{|aF_7j RfpP!<002ovPDHLkV1oKcILQD2 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_report_violence.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_report_violence.png index f05e30e46d6c92dd7d5672b378625041ec9e81b3..c03fb3f55c5f5d7279061831648f02c6c415e153 100644 GIT binary patch delta 2094 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 Rw1NNt002ovPDHLkV1m=!-%kJl diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_requests.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_requests.png new file mode 100644 index 0000000000000000000000000000000000000000..38862aa5c5611a8dcb9fb39f2ea2e8e824db864e GIT binary patch literal 1463 zcmV;o1xWgdP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=AxT6*RCodHn!k$`R}{zHxM&I? zh0$cQC`hzT6VMbk3!BEkM#L&b0^3<`VP~zSP5uQN5sN^Q!W5!gY+)f5sUpadC<>+t zB<`}h`Fxj|$L!fNKkl15`(~c^z?XUV*Y}+BeKU9F-kAdjk|hO_0!e|SKvEznFr^C2 zbdlHg_VzryOW8TTnq!z*7ZImgD70=?-h(t2WV5^W|jGy9L9=u2-p);pSoX50Z1LwdTIFub# zR=wKGOuWNAlL%gOPT6Jk2W^*{oB`?w)Za7l4|7f;@UjV6^&d46C-0;FReX8B!5m3O zw{p)U&cSgK(Kt{h`mi1WNMsdQ(`6EL=2#&$9(b4As_om`G6~EB?;)_!oKu$=+?tcD z$)BFg`)>q##YRv0am>iY=lHl1(?Hcv{n< zGp2cbp5K^0OSwV?(yH9rx~*tg_V_%%E!{L59<<%T+^_-dAwzwbEsIT4H+B&p;+LPI zZQ|o_u_EL*oO)C^2iD-ZA2K$mFOHrAYjZ&)HJu^Xvc#J9kj65IRt(w7SVT<*;pmZZ zrlS6tXeK_#$D?r_!1coLy$In7orApjA@&`{!(Uwi~?qaAw-W}%hZpzjr zkI(bl+EH`@PSwFZNt?@Srx;zBA|W0IwHBL%K!aM%@4G-cn{ZmTHPO5Mph*cdm>tE5 z2$Y>gi#Xr%0?6umu_x`tSDaHj{f+a9z16_?68IgwsR7MOp%03C6lC%D8Lp{h>tC@$UJYt197 z9aPr=(qrJEN8Y14#doYhE-y{YFYCq>+xJY;nbS2ooiBFm;cvya)cg<6bF|5&IM|jQxrZ>QR^UOB(SytY(_0=Yn=UHnWHTkfk^Hcne^9d|C!1H)v?rnxso8>cPD z36x9uB)A9kK3d0#ec2w8k>bqa9aP*QIi|izfuulEASsX(ND3qck^((d;D21*C*3L3 R*y#WO002ovPDHLkV1fk2!SnzC literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_reset.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_reset.png index 4d24aaf7305488de0d838d9e5abd05c401022b70..b1b04a44175d7125a0400cd866abfc508a57a1d9 100644 GIT binary patch delta 1596 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 Y1vSN*O=~v7DF6Tf07*qoM6N<$f{C~SxBvhE diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_satellite.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_satellite.png index 978f492332275bccbc0ea632d3e5b4ccb045a2e8..e3b9586be001f1de1cfbf857f15a156c72616b64 100644 GIT binary patch delta 1376 zcmaKsYdF&j0LK5j2%Bq}5H;6wi4?gUx49FRtt27cgp%uwj6ddD)KHBb);RGbPn4~4 z%e~}bXNlZeE}@AsXUSY9M_mzVGLEQe1$bXo3JF2IpcA)cmRX1polY zOTKQwo}Pf-HcJ4ItWW^HO^|J=YzqKj3JlJv{JLWN7UK%#x*Oo>H=k84)nZ%k?+q&yQ;16G9JvyA;gZIbxqF* zT|b{q9+%RWI;-{7$^A|lMZ-&irL`pcvlHA!Xtc292m(PNmq+AS6N%)Q#qVuIo`^p2 zohRH}q{o1~t0+`(Wr}VPq6qqbrj0{`C(A7zd@5^eBUISqun6*BlN#m{e)y`vgj=&$ zvYCiwfZZ5*l=|3`GEr8wbIJOm$a^#g{^c1&T_DXjUUMJKhL4)1^6LbWgtVOeoZXTI zgvmyijM^oRm~H&$RyUR%C0SAQO}$mylfIVEz~>Zh^f$-)m*0}xvm@Et^(I&iJJFb~ z%mJeLl4BOC7q}yiB@Xkw=z;EOylS;+!Ri?+i$vDy$U1thENjkFWVDfOOog^ykKVl| z$n4{EgthNyph)8PQfUW}=oSbUf?0T_{u{5^xlb$dU{RlMS80h^!V{fPf3dMtiUf_a zsUU@1!1lo-6+>1|`zBup=`*q{=xVZf*@Ek^Zcl#ZblW+(U|adgkJLj#1@jr*cY6s> z2iL~&R{{q8oVuAQQXI%0wX?;3A%PLFQupG9!Sy@iD3cH)!7xRS3}0molp;?DU0c6aGr{Q(;>F2xYCt6UjZ(mVW2?!Cv}eTr$-V_Gd0 z6}|@v&On2QX=1g4bzRuoOA6*SgwEjtR3C7kWIuyPy?QRbAa&7WI@IoirGJ<0HT1KX zXx+J{;zhP(@>eu?S*IRAJcYrfh41x-uxu3l^Tv(G#f2{9U~D0{WJ@iaG%o@nt9z}A z=U*HV<+7f}`lZuxiCbIY(aDCgo-#$gdO5%DQ05;(NTaM#|yAg7Bn&) zz}~JGrV-J(I#W1F(!?XrKs~J_8I!{En$0=JB`KU^cF&bCg)WRSRd@4+l(_J~_WM5+ z=!L3y@n)MHv{@T9xr)s^w?JisY~8K2d(y2hY4)qZml22JcZAd)Xn6zIUWSj?^|k_O zE8&@kk1)y1+*u3#g^1(D>FK3yF;yK~Af@SMlJ^uTcdOycNs(Kunvd)IdT78YsLF9u z?+JfIH>=t>>67aHkTkjJ)D;<`Z1T5(*})vXF85Kp2IJ+(2igy#csRk%w12`^9=w~k zsIAkmfN9{ybgyxk@gORC z5JV5wvx*xYtS4~;OR<8u;d0USVMWLuwK`bud+P|c{8Djdr$z&#( zNvGcrzDx3!@BQ-TN0PGw>JB$E%*N_+3fe;QvyfPZy?L~=NvQjsWKEvAOe5KA zY2$Uk?2Ap%x&SfxN?Ie-`9pF;$eikgw$h~*G?V1p5PyPP_E_3kMDm?bzP`X&eM4xk zp_GE|hm@0Hx2KJXId12d3Y6oI+tQ0Hh4Nq+LVorj50 zX0vExS$`aY(n4nk0_x=>$(6h^LOGdm*PI`g{vMgVQ)Ge~gn`}m{Wp^0Sb(6NG04fp zexc8cQ3;a%>%1p9DMX^jg+wpMCO-Vypt%y^Q8&gPr zvW(-6IajctGlKc1B9e6vO1a{yFs4RHko3rP z27r42rusZa_RP0TR0HS&Fx}Gqd;kx#VgeqyUbo0`*)@pexO@Sy4ZvT^xhpwqdZyP& zVH#c^q(3WLoDjx%I%o}AE>wI)vbur;kael$K2JNuOaXD0ha$rQ%TaM2*F8c8bs~5fLoSCvM#(o zu^s@Ed<7>1=&4{qFk|+Q@q^;~@J%sO@ow?Q7CX tXTaC81HN)q6h%=KMNt$*QItdg;2%}h+n+GKFRB0l002ovPDHLkV1jQa%o+dy diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved.png new file mode 100644 index 0000000000000000000000000000000000000000..a45df260fdd74eaa08f1c6aba458bad41778364a GIT binary patch literal 1052 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 JPDHLkV1m+aSz!PG literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved_hw.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..805b008b33f07cc03501a1a67ffe0e9e417314e2 GIT binary patch literal 2010 zcmV<02POE4P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS?L`g(JRCodHn_GxgRT#&e(sI-^ zRLZPy9=wGQLl?3#eX0j5uzV>+s)rydDYC#G1S_4whth|vVDds%h@=k^7zJJILJwW2 z9FvF`(=yAbH1Cen@2_X;cFni;-fN$I=FHj52Y>ci-}=^fo3+?pURnm?(Xh^ z;8E~B*b6=cx0W;798r;sRluc_FrEQTIaHRX2?@B?&5ToioAQwIL>w3i!7p(VVikA5 zoDrzH9O4AN!ODn-w-NrNazvgn3IhJhlMEmG1QlyQOGXooEk>aK0GH;&_|IiJ<)f6B zgAt9LfduafZj=+WiibfHm<&DzY4ke+<(v`_*!4#A9Z^oHQ=;w%y9~KFORwGIQM=MS z32II}%F6G}Zh-Kc!IR+6ij42E&~4k$WujbUM7rD;6tcs>VsHRh)CKbfU;BpR6U-VT z%K2%5&}J;yY_t{Yi?sF)Q%^8kjUZ=c4S=>U8STZImQ_cemLrheMu3?og0#H=d}rub zWd&Z>MIBBK!l@Q8HU@qU_$`LcrlzLjVj|zn;~2 zbHw5IZV~530DXzpgMUF9Nk+12V}0UxhDLy%!N8hqDslB89MT}!4vvAmblhn8L7s@v zV{Mmw3qRgF^QaDMgTdjT4IBiup!P72PD|s+G>U8C$14x%evfUcB;rB=|13U~?0*yKQKo;tZ^c3>MqP|wX0a^1HP4WsM=>pPek&b}g z1ADB>0N&a{oQ;%VSf6r>)<-f$KQZP@lI2GTPvf0F6vYtAGzqlE2E7V}^&Hn*=?1>n zjjCYMto<#}64`P;ZxKJ}i9$`*9&j2RqCA;T79wGHT1)JEG~U;;QVS!02<7_+uO^$rJr%JaG< zTfmwp&C9DZYF9)iXGO|l&vkTFZ6EXsRcx&@jNM`IdXL3lZ4l7F=F;@u^WwB69MF8n zCHba3r}_}a^*+0#Qv~nwp;n&CCa_L0CRAgy+E+{qN|!q5@?9>o*5!)LGv{M5dzO!} z>g1obNRU?L^&-o5e}ZCvjXswkYf@FnLykgF`HOd?7@QLL&5G564k z=N2QYcN)A}v#cf0mWq$Hw%t=dy+^C~>0k|T>2DZ)VX-==r{^``5bQWG3oHhkz|SC! zmes%&QzedA+a22K7-2T3hKbT4U@lkzJ_70uc}VvLtKOtfi$ykowVRpi#5K_#hGqim zP#<;MB#XFG*=pu8`WdezAZ7>Je9<_EIG~|wOw#@-Cx_8PXQem z?gAD`rm)R>=>onJ4IMoV&y$11HYj}q_(%tGpM#gdgJ3G?u}KcE74(^d!^D6?D+$c{ z62LxnJ2dmA6Y_oj=s7eur{oE29M}&m(m$;Y%c>aJ1;9G*j&y5-T^ABGkMiz5s;(ka zv&#!n~EFFOZPs`it%?-ivR+*I#HCP6Rdy z`~+Om^|y&38j;tS?ANGphy-cwB)dkQI zGLqE^t~EAhaU-|PKwnD+y+b(kD)oyTnTOynqdx1&=_seYirZ;_4|;T{*8-wJIqDhO z-Q{3OVrn;3qB+u5~S7pHsGTtLiCkVmdt3O`s3={Nyc^b sfZKr1@IPbHxwVu%qCcqq40to}KRq(M;s^f0FaQ7m07*qoM6N<$f?YD9r~m)} literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_saved_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..70b3bdf6771380ec6d42acbb0583675c5cb5fd01 GIT binary patch literal 2084 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 IM6N<$f~;#20RR91 delta 1277 zcmV$@4G7>HQ_j)N%>tEe{BxFC@;Q!gEZzId9@f?3bux3#;jo zubyXohLZXZiJL9ts72MPn!Qrl3S#x>nDaBJnsjgR6&W6rXMNX?Nf0y&T=^Hp2v}B8 zGo{n0hI%ck$$yp6(uoyFwpCy^_y7!pC2m4=H-Rf7u3zXe1!{-6QtlItEIYsrHyh*M zK@&-g?-_otb;Wvom>wg~S>*%k5tKbVh7Vmoeo?bNs zT{GDI3*FAVu8lbFUdhYVZF{L&30i3dqT5xZU@NvrTnL|bYR!J@eZ?qtg16G=hQ4Q1 zS%Q`uUF(?B(~>1lD-cBp zkCq^a_9KVju(GWzls^t`Dx=PTZ!*$qxAWpAclPCzPlXHeH_qN%oR?ubQH?p~>c@l1zAFVGhz2z8mq6E_EP02MF}fXg2Hd+4>AD(S6~B%VTBsrO;rYB=Z`(tgM}X4synu>Z;6HE{NcvUx+RQgd`H zp??T^*{EFP4AZ>62jvQW4{_Q7j(eP~IXtd@btr;y0!Dxc z&Wbxn)>e2s6hT@gN5LKN8`wspAM;vDh&@E$cA#9!c?67uj-~0MeaG1fCZM4yTy?G` zR3hZm@yK^fDm_Q26;!(5nGQ?@Avf2Ko`dZozzM*j!lU9YQve%{T>WOh*BE_+Lhk*YG4Rg+b_e?nGKndilN?~zQ1+6g9rE7s#s zYjM)^=(9~!vmQt`rOL}8J`RPSZX|dc%qAJ*g!q83;6eoXf?YiX z=}xb6V6$tBbbN`rX6}y#*c18(gDqeT=#Gt8MYXBMmgK1TN>`8)Hl+T(9%4KIR)F;9 nCJl1ZYhoZVkQhh|RKvi3|J>lDzq(9<00000NkvXXu0mjf+1zb@ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_screencast_off.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_screencast_off.png index a1ba164abfd05dc43114b5d9f5ccf11b52790d3f..4be8b9745e82241a3e1d5b124c59671abc2dbce1 100644 GIT binary patch delta 1939 zcmV;E2W|IchVNgU;AqYjKsB}}yEK|~;KuHBl5lKn33i zh|$kiCQu%rJ|g}sb=(sn`UivwR`=r!ujAAsQ)>veAcFjr;Fcio)%R15ZfIy&XSBtp zSYsfa2Z4T|XY7ITJ076xZm^M9e~mvZW=|664K@JF{(&4CbE;A|#&iYK!8VYmX+5pm zwG>Pm6(+n8Y<~il?Ss@25X248B*avKmNJ3Y)tJ_kDJ`=!^h&l46 z6~~0OVoub~gcpO~A~M+vul>X{+H~X;MI1i`#gphr3T@I>rcBruel_TCwEqP+lFe{S zu#GV~=eL5!An(;rQf>s=?Du$FnuX%M7HAvjXiU5lZhrtVA2r%4qe%D?5VgVXrY$5M zzBWe7w66`REQ(~Kv<`^cN2e#7EkruTrX?0gGa}M< z3W=m!de?fp1b!A*D`S~R%343xpE(r?q%aUk8=XY@Q+~Z#q(GdrJ%FAK{os{7ToDjS z_c{`3uiI8Hey1{t%%SZeuU!w#bOZLV=a&jZ(tn+{L|O&A<_nV+ztLSdR_x3k*uqn(Y+W{ssbq`MEaiMHgH(JV}tQmAkz5`UsyMFfs`pC zeSb?a3h42tYr`NUQZKimh<+vlDN#iFiQ;x}P`+c=;V(y|ST}3V*j(Mr1X31=^drR` zz}mR4hnGlYH-Gw6)iM=GnIX~|io3ue`HtOy{}m#g=kSGbGZ#piBGPIKUEQpWTQ{Lg z5vhg>E*jN1Y?#zeJ>Nlz)Y?+yqkAh_r%YJg`K%75)oEI+wCAmWemdCNMDn^ettP-s4xa@G2?Q5G;73BqEZ)#u9m3t&(3`>{FLLh5Si)+mUkrq(Vb0$lqd*DBHPtn$aIsGRx z@SN6fT?UapqcRa#PXX?O|F~Kr6+$2c(CPLG#bcmFzGF@J^AIWbcynLSNj&5t(maUA zfhCe2|IW=@q(TXV06LQ9QalMPk$)z_e~3t-dn>ritZ)J;Q$+fJ;;D$NbsEmeOQb>y zBw-NgeTu278}#l8&ONqvb_JdMQ@sF+0_qK*|e|v>!$7JFg^hLxtbM7i6WBjk#w(Q*_((o&1y)(RrO(1l0c*SBGOcZP#%+wKC@}F zo>&@PZK|e^pg>CcyG?(;S%0RxZT-|;k=2Dj97X!eUrzw^B*3!ZGjgjvk}D_BL3b2~ zYhRZuitmXuiFoE2F;)C{q?|xIjD=^h4m* z0KNOOhM?9ueX8n8Bx0OM5FJ5NX2GyXBRB%uvMIqJ=xlxI6SaW`hkvG8CytI_ewpAu zYWIRnKBLS6e$(#YLXb^XzGqwWe+w6A?S z6SH25umwz0t3mJSf*je!;84M(@ zLrkkZM>o8#=`_suF9!Zas`3BsFi)|d8pNe<;?@G!miYZL*`)o+t&&Iv!Vd!dKu@br z3Y@t~Tk{f+V)zD(@Y?nF+?^a{%jM@TkQYRu3PjSYevblOb(<0A=RyT|Hkh*t)UN{n Z0}|t8@#u1mObh@3002ovPDHLkV1nKro}>T( delta 1930 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 Z@DEfxtIJHO=4Su^002ovPDHLkV1gNg4VnM| literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_secret_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_secret_14.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc5967f3425a68313f2797eefcf69b0dd2bb828 GIT binary patch literal 2310 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 O0000CmMx? z!X1>J&&g>zDQ=|*@tmKwZTGHSuYAA1*=1{(n8wo6AZWnkc7Q{I zQ8@tzr!kS^OV!@9FO+`u)$1)-xvNm3SR&T({)NabTk?8z{%WRJ&vH+-j#rOlo9ECJ zz3p;oQp!tj)7t@}eO)mgz7p{VFRog7>*^JW$X|iI{C!-$QI0=k-SsTG4EJewJaI0V zcX_|ww~&vPZ8Zh!E}GAKuOP&Ku+s5=3Dca#KWbg|cKbcv6w#ye+p|WyXm5RS$chJN zjtCup&he`$rmXqc#x~>UtGc#@Sp3rZesHJf{ZA4PfJ$Sumut>(KJud{rmXweNuBO~ zRo6$k2P{2gZ;YUkMS^F{3jqOuX?K`(`Eczz=e16O3)U*>8@ZnV$mKWF=^KI~{x%FX*ibM_vIbkN)F|MHE(+^dL~@X-8xyq z&Z55m#p>E!FHW1^I+x--L9O(rw$xf9>+rH~cU~XQ{4!ym)bI86 zYA+?0D9DI9^ms1WU;nx0+KcnEWfV$Rp4mESQ9;)eN&D6>TVqY%U(-3(cXaA1mX&+B zO5WcMTes-Ld`ByDy)|V#;dhqh&RxdX^)Y1YjNdo^J@=mL_uT#B^eWZ1b94NZo-UQJ k4?aF?KA~KY;{QNAnN_I7BK=;|Jq94~boFyt=akR{0Ou{Uvj6}9 delta 643 zcmeC?_`y1%p`Izp)5S5Qg7NLmvtH7H630GX(czk^wI#NaF-q%^Q^8BG33{*h&936C zV!gC(SJ7kDCEe@x2z(UUq$#>GgZr-Ntbg$*J>w6}F)lt9l-75?v3=%~8jJV(>dr#! z%%+?k4opH58dy{m7_l%HF-<<1Qs22|QtOKav-qCvQ#ha1_I3U2MfWDnKXS`5^5n{< zkIqG2YyPUq7e6bn(m5*Q)BVUGJKa}*mSo%KOta7LPtIPJT~a2qHRNGLXSlE4tU^PX z=*P8_O|7ikn362Q?yPusNOJO_jizOu^&=Cxq0t@*t1H_f4=pb z`karY;%7mH27!2z0zV%!RrO}8*)G0J-y?zn@5lS^IXw{KNFdv zl|}o77u-^?m6&7ZvD2cb-o@|4tiQH>&Xa!4+%kLqgq<&LZI@2o^xpE!Plq+Ns;`&S zTkw`&;_o{Bt8wl}wpX|H|0lfLGuvAIL5s5Z+*_W-rgv@E{CVVgUeB}f$JSqsmzh=y z9ly5lmub;UQKjcKe-E8>=z6rn^wor4osYSC_TJ4Zyd$NrY`yZn#X1M)U(fEz&A0Ub zcii|4ulq6SOEV%iOaCo=q5a6i@%%}-vk? SJtC7BfWXt$&t;ucLK6UububP9 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_select.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_select.png index b4f5db3c3f1e8c212b93b59057df49cf2da6dcde..ee6af1fc1fa61b2edc0bee40d7d9bb611e203adf 100644 GIT binary patch delta 1740 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_sendfile.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_sendfile.png index 47146a07934828d5c53b456b36d54e8c9835603a..dfc7c38c6bcc4d786540933726e494a9a2b2dca6 100644 GIT binary patch delta 1092 zcmV-K1iSn02ek>1fPVxZNklfCw&CBllnf083;oZ*8 z&V2WKbNk-C+jm`ECdPmB;j=zoq9V}B>s2XwB{Xe^f) zx1LZCGl)*1i)fYdnc$P?(RyZ9FbhEY(HXRE`Axz*=$3+0sBSpmhR`4AM#@u?@2zf@ zIU@r~$dPw326+VtS@$ZD%!@Q&j)3Gbx>Z3mkL@1%9Q}qi(LC}{88nG)7~QG#&0#ym z0=}U1)oX$vZGX*K!ajlal!1mg36Z!MccJ$aohydd91fI`KX(iO$l1yjA!i_WP-UQ- zK-%qYG;e4=*yhlK?Y_0XCb^u-U708wgquLxZVpURv6{?dte+&3cBAffj=W=~e5~3D zAZ9|^`&+MZ8c#T`7~XI=)bgw4NWxwP%*`s2D|r$X)PKs0@0jL~?Je5d@~iwvvXcss zb5$f(@}v?Z`SHJ|jlm`)^;Ll}5tBr6?c>UsgkuQ?H;J@;VR0GN#$kJh9`=n->)({t z5oq@U4~$dTjccG$f{41ZAHysp<*KBj1i4@~v<*pD0dPeDAy?YdkhD$dTi4W41j$Sx zX^g{VWq;Q44dAw7U)R)e1j%e6X`I6)W#%JP(Q(C|YU)UWWVVnb7qEAonag+23yy8w zX2%k=I_vWsKROJYriwN@w$x^<1pRUmGpWqCaH%4>qcH8nk~n>iEww54kYki*fI8*? z`wB^pDR)!unZFDf9cu+W3ISihN4uA$hKrS;>wlpAq#~}_7$rfh9be#KBnFbABuI(` zl4d!`&pWr!Cum~f##Xt+x=8<>_-Z9xEW!c{`w-)`d)z@`qphGI^ffpcK^~HgAS1}b zfT!Ck$O!T<;OVvsGJ-q|c)G2Ej35sKo^GokBgn&mr`syX2=XxC>9z_of;rTvXgy2zswXkl(Fh7Y(B} zmtyna_odqQNf$%9HX6)5sO;r#7uo9_y!~Y@TEHs;*Rs<-07{Sxc(vX5Q$d6CIFYcH zXEpL*bH{*n0F~!RTp4tIOKp>_@~3@@0DlIbe5|B$G;(IL#?E{SByk>?O*kyChL@^M48H3@SRBG~#1Pqb(NK*-sxj_2k>SeNS@!BWcED%Tp6Mkt_ULp_!} zJhB_jylpovZlGPhKFGf_EU*MD1&%Q{W55_N28;n?z!>;{8TbP^Cywi#=BNAs0000< KMNUMnLSTX=#tzy5 delta 891 zcmdnW`Hp=;Lp^hZr;B4q1>@T}_SqtiA_t1KROB(kxS6U<)EL6S?8iwF|mIKEB?)kNtn6k?ChJnZ_bUr*L?i#9`pKp zfAZ4GrqABF(^6dh0n3~Q;R2@3UI_-74;Ej{m}k}YBJzvGtmu99mkwxu`I%rK@icEu z;opWxm+Kc~w{TZ_Eq*Rlu8{7?6z%qZLF{QUMx7^bvWxDrs1$fjS~FqNHH8&APG3~3 z3})usW4aw;pW<6(|28d%ajoD1Q`HXs8`m!Scj+H3nRI4*GgG{W{fZlTg|*8j-P?PH zEpvNgt-Yk}=M~!&)+gET$*+Itq5d_-#kn$Cx38FSYUWbUYcIoklh2!8yc3{w>xh}C z#U+K(nGMH&Mm3it@OM@<+dOaCbZ*aoQK{nP$Ft8)C`*ZIRl1zdd?R@0?xhTulJ*lUM5bXEvB|ezA_KeLs2nlXLfecFjs!BU#`0kw@39 zi^*hJQTuuMr2<-f0*hbB7UV6u@6`};ORE0Me9j4Sn+^6WY;1~i)L-CRuVLX8dC@IM zMd2mq1iMd#+XL5YwKCMsf3mkr^W~-;n$tvTxo65wV7$p_snFc;@SEV11|Fui+wK#X zjW{Io?d~KNXfr2DX8Q0mUumopHWkjJo#+-Oa>tEboFyt I=akR{0J6!IRR910 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_sendphoto.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_sendphoto.png deleted file mode 100644 index b96917111a17bb991f4c6515efa4f658312a6b2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1509 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_14.png new file mode 100644 index 0000000000000000000000000000000000000000..87e65292da141ccb7ce43cda08dcb17e2cf60fc0 GIT binary patch literal 2533 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_hw.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..74a11e52789481e2654c9fca9bc79f74663f88b2 GIT binary patch literal 2988 zcmV;d3sdxoP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS`7D+@wRCod1n|rWTRUOB@f*=ZF z2+_rOBqD>)8RU<$v8<+4$^pqyFGeaU8d7RZl=9M=R2<)l|AByC(^^TZzdQKcq0a{!!K; z0tVh09>``RaDFGYj&%sLK3y`{-tclDAuiK%C_i4Gh-=s@gB%L)xH6ESdl#Rt)G*xI zcE#Yn13MBDAs6#RbGhG-vPW&B-;cd9m|pONYosOJza6&8=>F-@8`U~a&fkw=*QRL( zaUQHSqjDVQqr2RpZ$YQT${vzGVm!JwqiMrl2)aLnW)0@Tz0eVq3|m?h4$2NN9a_OB z?_;mepD;V=pgF?ILLkq&x- zo;c6Ie<3D%;ViE;zM$}NC1|YAKdYy%);!(Xu^Eg@LE8z<_G7bc{9orZb`)F&e}Y|* zA_`;zM6Vb=dMDErwq*^9lTw4nS8>jOlo`DTKW!gIL+8{!a(-025OklXCI#2RdoURe z&o$;L;HN>o06x)R$9Sqc)%fc@PcOIIAw@RebSrdqHt15~d~Hh086Q1f$HAel_FOuA zhrwHrBEP|@r>h;G4*#QJChUL|`Gv2o3O%jOOK7nbpSds`lJ_0>c7mTkH8T_U!hhhR zieMuO>hyrC;SC7M!bnql&9pK*)Dkw`!@q;(y|vvdLx_E=*z3uhDe;_;> zY_(9Bv$sa%jD~&?Y0Q|naB>|47dq_P1uLPuAyxGH;1fMTbrA=IhJw8t=&7aI9+Rn| zwsJOF8X0TNvg>hPv2#Ut0z3?%#B9g@AlPyR3e^pX27WK(5=FTQE{3&`D$(soIZ3oQ z#L?<9bXy(ztm@AcJ_qCBMbNDn5`9%13@r{P^RoIiY@yE{s;Ud{1jzR^SO6i}=`bEw zPC)F0%34V6ji3^wC&Oj${;M2}i*QHiF+Bk;xU#-}$hvSKJE=MD- zuaC=((LRO}w9a;>+}+mE`4)6PxAl(l2y{!ibb4Rv=CDUq)awO5#ql-xe5ArSV!IiX zsH_~3EtJkTI&?)9;PUt6r);Harp&3wa0>4Ax8r6dc~~em!Oqa5GpPJ-<9c&Z8m73KaHbTu%Cr-3ET-4Gq_aIo+Ufc|Gi|h z53U4#U^|&|nH31!BrWZIc+96Pg0l%gN@QU?x1`V zthV(3A|_v-wNFqfID5u*CCH610sATNtTl*i@w3@N>3jyq;SRk~&E;eW?N8=tf2#1# z2z=|7psgnI(y<&ggIEe*Mt?4(u2;T4R#;3MU!c9O!`qxo>|5WC#u+!?aXp6dFqC$lvz*EoqofbD-7pDqepO^}t#AtiISw9yLTOOG!yXLU zMhv3fEXb`btW)|(XV13K406Twp|A7MBJKK>G8dfHsNI$Z<`f2X7=~}dS0VPOSG)QR zUfTj~IBl^X4zhQ$oigQZnR9chc${JnD(ht5*RqACu0742SCK)s(9Q~&23;UU^mxAm zmQX*pa5JNHA?z98irw_%TEJbmUD3a031VQUf*$D)LGG7T6M4c>kNYQS=PAfO`t6Hx z;3SBF^oCzDum#}T6uNH5zXTF?Ha5+sJ3zC`p4p9+AcE9Pw1d)5Hs43D*MqU(TWem# zHU(_C8^sy$x@{a~%As&2=rQk-UMTxn2F+UEpzE>*4YUGO(YNqz$95wOCIJu2F(g`q;b-^^ zg1cZ>$UkG#Ho_%smLS&vUDH!Roa~Ckp__wFiMauksAR!^Gw7C5Ur#4gyq;O)dVIH8 zg8Ddu*p$@~fd2YxJi42+ddK-9bf+`G3qiNmJ`44igBIzLuqM#ZC~PZ;Z?xsJ!78iR z-=Qn2LTga=F>30sG$(ZYMb7^U_dyq<_Z+pL_Vn1QQqyl|m_VhO;JS#}_Ov$YM+W_R zGOT1+o^>dl4{_+iDjKwZYSB|k-=X#4Tt7MQi@Zi9?VfXjF8WOxAN|szpOfrgBv2)Z zzF*IVPk{ZWGHY`I#R@cV7}y`g7o)ogQvVnLSFh;L@U-X_h4Wy7u%83}fE3vhaZ+;Z zi?1r7t$_)(9PlZQPPRF8S=BNMXM%Rj`UPVXghanZO#-cB&IF;?A0D`Vbw!<%b(C(0 zlQaU37eH!4aV?5(6Pr&?se|)Pt%RczaW&-jL6p0|1Xu$hS%^`IvPHXO{UKIJUdMPI zNP`&@$JsbBg3aJ zJOnYhtz0Q~LQAn}{Q^Fzd!J%=_#X~4K#AQ~(ccJt1EPts$4H&w5W4N2vg>%uG&CPV zqAUIwi~>EvlLddRQMxs%l{r+?NS0L7@Q*_+S+>=b$3n$A;Oh`y z{mwNNVnO3l{L3^jt;?w2~{NDqg zyn*3URkWwXOovU7Dl2i+Ye{Ug>kfm8!{8p!{huOl;q*;NN)&$mK(o-6MJRl4TfrI@X7#lax?fqIIdD#M}s*?aGd_ zHn@KPjiIV_(;0L~Ne4&44`DsT*s*hGqCRP z`|?n$JK2r0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@XGugsRCodHn+vRuWgN#HM5HB` zl&usZBf419MQc_qvl?3))wI@H6pgh;mvvo>YDHPp%E>gOv_@3al89q2Nx76;k-Jg} zA*avxbRPSk*K>K_|Ly$$_-)_w{NLaG`Td{wd7tO`zo$lxlTGTx4)?hqX23`hr)A3VqHgx21kV*%+cotN2koN3UVddworXyU} z0rIiGQf8XbMyIG-dZVY3jaI?D8aNAttQ%MfY_z_p3uBU}XQj5@Rq~F|j z?xL9{MnSh^@14hxYlJL!_0qxr*TFYzt(jW;3WMC6m(MmUG7@M57J@@y9=O2e7@6jg zr@%iT6H=@ZpuQ(oBjnS7<~rTRSGja^$|vxAkV>D20;1d=EJ!s<@L6+N@Ck^{n266U zT<3Q*DIho;Nn~HBK$2J5K1lml#NKuJJA(e8B&L7c?c6GkZPs*1wzj1=hmr)qz6JQi z;wP0giHl|l{pz-g(nU#pWUNc{j0BFq{S|)1s|A82y1wZ3D8 z4K@RKr-5f3vO;C|^(3~@Bdg(?gI>jOuFv>5kd@Mh8EN-}F{lOMePD+fkDgZhr$$MG zVUx963}3ClpCCkQQ0S2~SEoMC8iJ8P>k}XCMyPd7EvK`H0NsoWgpUT`d2j&uNR#rz zz;=om$t=Mo4x56pAhgRyrGi%Qw|krr=%rmCY)e2tp#4@{T8v_FPZuY5J;_c1L%<%8 z4th3p=0K~jYnbd!~bbi3)ct1>*f?hJHh6QTtuTw!AJIanZcZUyT= zh~7t`h4F1#cvpb$J;r|{JKgAeTNLkbIMM{Ik=4}Y0GTFDjgrm4M;dLVK*ezu2w8ie zya}nCPAcH1BA*`$%gRB^@Ol z+P?}y^V?2z27n~XicaV+0jade(hWBYOF4NLOa;B%ntlnk=U4imNkpOLgbFtbH1ua+ zmtv>Q_WfW6cnvu33cH6ab4lQOpeIH)=rf$O%W{gVsiB}wj#IO`_wDAb23cV4!N)?dJEpHq=#_BeDjz+4Sq}l*$;8pEPpXacGfw&f7yXPt@+zB7;|zW~@F@t<3KY5n z>sAB4wk>yoExY#u1+zf>&bLX;=>g z725+^Yk^YyHb7@MH~@U~2SSaIqnl_xUk0>I@{w-mP9|RL7Ng!koe9xI6ovuqi+pq# z;b>6h+?s1|flR{awE`c35UoMsPEZO$bD4_T&%{XFVys2oNZ{H5BZ@^|pw+>a0Q^`5 zGPda70Db_OkiM+3zwE@#WQd*BeZ(k7Pi3%iN*l4qx8hDNp<>C3YDX$aEB6%VOp^3B6eVFyq{; z;-DsYnc#~-+^X*~$yQUlBWBz_=&h!I{X_cB0%3SB7y?{6heOT_T(14x7>d-zm#3@q zvN^g4v^ba!?-2{X5Lx@9^z>7RYr3yAEVR z8!^5u5J$h93Hy!aeY|S@@}}iJq`o z6XoOnbS>reOX&z;`+tf3@U^IW3AooilZsYGdV z@mJ^n0_bI`_kf;6%R!Y%mTPZ;OcBu2X{LTF(-Tm?r8P0KPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@;Ymb6RCodHoNI_xRTRf(Obaz7 zD-knC@`dR5El|)Qw4^|g9)1u+NyH$~EXc43!B6FfutEhtn2CyvntdrT12Ga&G9*YM zOrm`>ssKG=X*C8ptBDmtWI;*C~~RNNy^)0BRBWPpxp? zH%F410&dpQGa+B`OzEi3v9A3>+a{UEAv_FpEK1HpG=h0a$GS@Qy0Vwa7jv*W=M4HC z;Aq**{5uToi=e+#D?ahQ=jc0EkK%}y01&xdX ztH5ax7M0h4X3z_K2rdGjY|RrJWMBCR(QCq<3%UWtp?It~75}I_?R$M7)Jn7zTnBM- zi^_9x2Gq5IcfF0pRN(gpNQ&VvY!pYFh(q}lvjRf278D^rLGo-&A0$@cKNjpSA{aO{ z1=J>xEGQrtjjA_6uKCW*Ks;a}h`WrbP9+Om{?ujYhXCzaERp^g_|K{gbQ;Q^0zJ+s zT;SD{fmRSFitiZk<#B~NJ#xt|IQkl2MqOVqa_j@89*O*cnksQrW`bMA6}g)~oMbFAdh%}s0o zBVDWi7z78<6|-+hjH12<$^$4LSCn^YZuLfh!4lUiC{OS@<*a~Lk1=KgP3Q_(yJ0f|Z@@3tbiA+XP%u{yogJ zs2Jy3Q`TN)u<4Ld3D3h|dBDjbvnUq%Kb)~?(;S|`K%B0O^Eu3OEh&F%8fR3((;xh3 z@aIv9$9)8wF`}|LJll-`=7q_^OIy!yMR0z?&}C8u$?U^vVkSqwv3T|s)JeyUW~%xj z+(G9IQP%l{E=! zr5NuG!l;lvuvS>{XIkB`*JAMjuvXDujpo}`IL!h+IZVa0cI)^vY_&AIqLGlPb1JRK z4_G5lW&@3ABEpMTr5#7{IB^(iOFnxS7Oe zzU%0ex5qTyUWHR{u*Y$Bi@&#fM9(nR4%ihv4vn32qD<8q`2+E|GP~L`TEgKI*C|w1 zzP+Pf4GrN{tW?iCsLPy80?R;KNg4g~WK>n9vA)3A2=}!rtBi%ff1}}Mwda~yk3f{4 z@|+ap?fS%*=~b<4--mj-avGZ`M%K+>A^RY>Csu+89S_83Qd*_I4%t^uUr+LjjG(Xs zy?O{tL3bmp=Ugj+ea})h)SkwbBd#K6+2XOW~Hh4#~m#mt38*)>Yy)`r}A};y=9Ek?1OwaktJR@?!|r37sTZg?>;EfQ7|O! zq<3P|8F$jU|B933oiyHE_hOMD6H?GYzPow#{)2rtPX{yuOS+y1X%NvfGmYNa8yaAl zPvO&!JMLMuZahB%x_uZ3WUr&j(pxvCs7oT=OrzRO0RO#Zs;a*;UAs~llZ91g<-%&y zID-^)TjBJ=`ygwdFgR?S=bZi08T|B+Y)>A4!$&;h174## zlgi5Ps>wi4cD)xX4=3+?v5tDPI)XSl-Vc66eI5t z*6D;cwEDgc&Vh<39>vv1&2rS-s<`wj|AW((==Y(l1&HG*=)oPVl}A z{s2DFo7iI@?mOwGm?q+@AYK59kQ0!+65m?-TDYD8-xLtog7mF=ED2(50fAH~^lmEg zIj|=bT`F2Y-T{|Ety25H)li^Bp|3)hg6jzp-J*UAIG$j)#n%CGdN@ae{R!M{)GLlS zQ69>t*spdW90gW^(;zG=uK~?LhxX)rF}MUQsmH$;Q#<;oVk~F|ipPpm@sEo8AquIZ zkpW;N7~~_Qt_kb}t`yxtdS>*h6$ko3KylXpUmRKiBX_ZxLPI3A5@a42;z z0qgnm2Jy%E7E)FBUw}@~e?)Q^SpUIE-XzZB*dhP>OT8!Q27YBFGXu2c?G49IJTn4b zr>YYd8A(&Y1yGB~-}<_v6ZcFgbduBNaUHk@vWV>Em;cT?6i1fRy3avYFeIwSACrOp pNwywtS#f9rez5)*JQD77@;^17s`ZVZX0HGM002ovPDHLkV1g?Ae6auk literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_premium.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_settings_premium.png new file mode 100644 index 0000000000000000000000000000000000000000..50e3b653ac7d4c0f5c7feb198fe3f8d06ab8d026 GIT binary patch literal 1612 zcmV-S2DABzP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=wn;=mRCodHoJ)ulM;OOuIR%nSNDd(^0Uw}w zfFVSYB)UEp6juD^eno|&EPndz>oevCaI{O#(h`o8+U|9oBDUDa+=Q$rdI z*f5Z@QFf_2JUlF4UI$OW*<3C+?9zT++k%{BpbvO*hQhMC4$77D5HSr5dd!p@RX5$$ zIHq=*O%)yL?Z(y&AA73Xt*TR*Ujr5a7GHu0 z_Bkwjfd)N}xAw-ZfrpqY5Ei5isgKHC_@5vMnLxuQU=5fHCW9=>J%ZMg{x4uJgx$_T zj?(`(upBg`$bjy;i**;%9MK@BNQ_r%rO+*c7I`&|<0u9eil8f_sv8v^0|T0abUQu? zbhm0qk%0#kmo_s~>-pgWaJ$%+`H~(HK7yNn3eQ1gl0H583A~nZdae`yI>`B5JQUu= zs5ry<3UEXX8I}Ktd$~uBI4BUL6B=%ESOt1?o-sK@yl=sQ7WE1;f*{q>VF+xesLxXL zwO1D8Yl2)&+@t2Y7-BxH6iZctqy$N`ID7@x>fDhi zGcN+od#6i|+O5zXbw7w&bQ|9cIX_ezs3t+4GDL}>9iRh@x-`9hWyiami-d9_^pU1+ zrM|*gCumsc+vuk98fMnw!=JUx1t!Qdg!6MKzX#^$F_EL*f`v<jHSdY~3q9@BG|`v@Ymh{Nl^iNGP6cYJ`VR!QqaaJCctWgc&6&8>C83}LMX$3ur_ zr*I2(>p5p^lnmpbo|*Q76;X~;!S(>Ra%~HxPaviZ{0fqkdkk)!070LK1N{m(G#PwB z=VPEPkWzG=w2`^k*1R>to&yjwld{&5-tg*DaBRni<2HUc$sowl|IE?$Z<@#vFK_D~ z8wvd`<~JAw{Y<@^#0 zqUIrEu_B03-vuqkqsOCYH4oVmv?ZPxtwyoRAgf85OHA9=+L=weyuw6%!Nf`941yeO zG}Z$-;>9?Nj0s{;%|G=b#`92G2-2r=+K1D&x1h4>T#0c889Trw=J&?{s17Ah=-mVK zyfQ*mmv2)a7cy(a08yUc?R*CwYen(RT7IezaIyNhzSdZN?WUL5JATFj)@gfa4_LyT z<&RoA`94eXI?^>2<9R6bfc&E00~3+nOQ8qMD@YfZj;+ne=miJ08*u}Kk@IxcW}_34 zEg+j=M7tYNZAKR3Vvu)Mf`@iX5cA^flTArL6>C!0000< KMNUMnLSTYhO~PXU literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_share.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_share.png index 5b54ca176e392be2d61e69ecb1a3d3267dee42b9..535a8a1015001ee63cb2983df935cc621d731516 100644 GIT binary patch delta 1603 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 delta 975 zcmV;=12Fv73FHTmBYy*{Nkl|F?!mFtt3U%B9(#>Bt(p$qNNcF z6&wFHmWm1*(LyCv4lE<25fL$>g%*|u4Mx#MK_m!?XrqWl6cf!S1G9K8JGV1)vv)ho z{9w2+yKi>q+nbqvZ{7ugKp+qZ1jK92Lx?BNp5I{eGEq?$y0n7q;0$>8bO#nZW zMp2~fwmw3jf|n8MF_P?u2|j*EAXGcf!H`6!U+>_!W_m$9fO0<~FO zsFhSL#euY|I=lA*&Ogf)GtLi^LnPOb?2w;BvObMvWfkaXN@wRt_9@QqlgE=BGtt4P zA=aN#cMZT(#eeyteps^|B|c5k(*U{?b!%n4itd!-AEGEqwxh%+f#v}$Nz^Ts^(s05 z{7M{Kh@z-N_o6-xvDuWm&J3H?DRm!BF6xs&X>-l~44XqKbrVkRra-HgSh`P={O)KK zJ6;xn+DINCIi2BgnZ5^A${^4#lCSi9Q6s9Ri%-#3v470~t^ydyp>3~yu^s^9aw4uL z&LV*O0A3rmFC5Ji8InlzL;Nsf|S&=@C=NN%XHZAv_-RRXOdIb3HVt>qcX0Yy6% z>7$Lw$$VaZj>-B;nq83v5;uI73vacWBy)dFTqsm3a$eBaqH}kZlZj zUV76iegn7x;1Yn(7VTSO@*dQlalDZjuu2@E{2c)20lc?tyY)DX0oU@FWN)*EQr>fr zs~E6glH~SQ3*%ZKv2-W7ka6*gDK@u?B8=-v+J9LLIHjGI;%aBrSqwO1HETMqy!n>I zfQv>wfkX;P5}O$CbDsrL5>~NnfmSFw8{UKP&ljs|blQ|flDA2&^L?3*|IE`D8wGH= z$iA488pUnB`JI|}b4B*%bp(n_-tnL>Bv1Jm52`KAiYOlTF{0?An8c*t_!yIRRZMp^ zwtu?(M*AR8Tuk=G9+F(&;GF24Kym3IIWFIk>hXulnqi8 zib!yvm}uCf21bK$QUfiqL6Zy|6f~$oMPQO82%6#tex(>G;`2N8`GIDUuivtBp6Bkn z&OTrJdQH}XKj)ma*ZQw@|M%Q|_dchs&CC=q1xx``z!WeAOp^=&36l;12Y|Dq_;AG{5Yf$L>wDfB)VRz@iD27}Ll z@O%S$mEprX@v+H3cgGRC(aLZJ~}P8kRPJnU`2vlJKcnHQX%3J!PFQA z-UB~^}Z~|y{2`oJA)%C zl&MdJ>?v?rsVI~5JN416yP}s_;Iz_b(k0s!S(=0~$T~pU1h*hem1->XcOUp3WZ7N< zN-s4Ux`eC`*qT!HlZJ#AIOuIQ=t}7^>Hd|AuyZ7YvaizYCx4uMTA)WyN$QUPvS`d> zI|(YaSL-S0or9LQta36gC~Sc7z>Qe7tH$HP|2&qi&T z4`or9*JOGK|7Ait3TXSCFYH5+ch6+xG4G<4^FuaM%U{&%ESLuWBfZM z_ruf#cYx##3c*KiTr02XZ<^BMT72GTLDDlZuPeFoEPp8LVcgYZ+5IMepE1|?W(q=) zzF-P?D}tQ&_0?ot_J6Uh;p8@7d^|?nARzOpYuW$KWXyE4xZV+yH{%HZB(NX2Cce~X zN{o#L@@1|D{fhKPytbKLl*vJ&w)R<)nOHJ_da_N>?pWMcO~z)Y(K9A1{lZTX$axdE zwmPj&kAI(xJ#H4)&-VlbJb`y4$g{4In2`ZX%RD46GhI9BtwHoHKwBIJc`@e}rKuYyN%@?R z()KQA6p~P`H3f)@#O9^dK3kmzu0Yz~rGIA6+ln5y821HzsLm@f5*ymO6hc>%Yaz_) z6XU;(#PP{%5#i6MQ)wMkrK6P3JJHKYk}RN(L|Etz4m3!uXMn7lT@zpGN;*V&_!olI z&lp<^Q6vNhP0GIOSui%@+s*N3{*Et4*LIQn8j}tI2N~c7SKwcSQ!+Cu&3v)|0000< KMNUMnLSTZX@{Ym) delta 1334 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 literal 2187 zcmY*b2{aqn8m5+#jy8SNR;|1!GfheCBobR=o7NtLSZWD^Bq~Adq^dz}RZEKqt?p`b^F+8BUGXk7aL2Fx&f6BLOXzf!BVmIClP^UBGf;K9Ds+?h>=2+hzOE~ z5Sm0h)gMG7Mvy278VdXsfe_j|ZWtK!6+#V1fwA^ZpyT8yJjej557h>n0ze=TGAbw- z;exjQ9xmLWz@b!XBmxGDjg5uI>Osj-Aut^{91hdgh3V>Q2@zV9I1<&LrbVKteM|D+ zJZL;6Fp3aKC6Gy=oxJ`5Ko;+ULj{w0221&{!9U+ z{%NR)h~$_Z+5$rp{aEI6uNqSoZd6`9sQ>XTs7YIOP+{Be<)w zaeXqpwtX}ucx~~LN$k*7Yh}rwGTmJUuMuu7sBvzwj3 zanTsMqlLecB4Y@ct40URdPPi&ZfW3bZ6B(KOX=k++KIDMKPMl_XtK_XY6FUAW(@*S zEpqyx6NBts?;OS2O4Rc4yvo=9B|$dTQWgR@_= zl_GYVrHRc-&DZpUHfl}*H6_>S{LVrnufDw(kZ-OIc(-uo&jm5kHoH7QwA#GE@we{K zzN1HOsdMz~(7hl9boL8oXM}3C87!pC9y!pe)X!F;ReLp@HNm8~IOfOPt9mqI9YK9O z8MC!!VorjIIAWehcG!U}C2K{-XoG`<$|`X|j$Bz@6sC@;iB^J`)t2ZjJGlDHAkGqX zwdV{3xFe-SgFORji`(n3VEjVh#=bSIbUSRXTJpevD}-F4 zJfzk6g_U`wgZIzM{Ej-TM#YAE>sZLM!e=N-`pT3WPEaZEa4M z&&A6wle+MM=S#LCG&;oQb6CFdf9~!YlRxivA=5VBkO@nBR|J8680Jp3<*r~alRBSAc`%GInF#2`H-q^Lvc@!6zErQa4RTOKL0eOL-BAqFwafS^K0 zb$3lfmDSA87zMS0$4wEzot)h0<#&jxE=L6F_*O8mj9HJScBN* zF6#5-rXv4y^f=BFR|*UdRcjXTrCo_h#&;3G5HrE*EJ=IMICdyW{0^fWm(~m$T8Fw3 zW$C)|CWH#X(^P{r%`ev5hsO6zrd)uRt?i0byW0Th=D2&Z>OXb??{fO&Vurl-_GP1} zwaEo)c;Z0!`sql0VB?K=qYO880FHZdMWXdLonrg _!hcfPnNGFgP2=v z?sbPxPWp5E8ylWOeqZ(XXt6#j zw%+^<3dW=8cuipHnp!q30-$?%>c|P1|iSO~gM-msT@n>wa2H{m5H{x>P zzUi=~Iit!#!#m-rYbSO1SzYtn7cjw$PJa5ZuV?_cdQ_CC;ns;c71*>X$g?7QCs&Fb zn{1jEV@kAo^RDTtb9F+WD*TsRK}+_z8rFv{xyw&l!Lv}J6|@XeX*(s|&Ms0_+}fd3B>2qh7h5g2cwMhqU1OMDY{+hfCBC{!R~EQN zC~@WbXec&2efcIMk!m6Hd|&#rb8}wbx!)*X{OnBiJ^S;v#qZAa^sMM?;OIa@2Mh#W zl8ac;r*(fFiUav>ras~Se{?57?d7Fo~VBPk$X~nip!3|yoEYEu!p07!Nv14lU zP3aQVgncJ(*xcfd>6W#6Rbr*Saq^^F%;{XR3)F7KH?3K4+OxZl({GdhEQQBMBf3s* zQ6y~I>t=jj`P347jL zP!x_|#A^21K6S2%9lyu+i}SYo&zYBZdFRcFpk^@vj;1TG-36D#wd~OIXi8B?Ffd%R zM4HWfsc*;r2D1xVvoznXIM=BXwxw|YT5Yq!`HO0b*K7E{>Iy%p-#M54WlQ$fn#srB z7eCp~&Hgf4^%Lu4#mz4+pFGDdb;-oD?v&8orxCaJHM}qUqSyUYo=tqx?~5nRzMNf= zU^`{E%N))UL&d4umUYt#19R&G26rHa~24d)Q&AH)r0rYckfZSXi+7bm;0tBkO5T zi=0KWvU$utwalO8Y+!ek+iwC-b5pULsP0G1?m;3SD;>jdIf5=0u6l;cz1VqBYrOf=Yg}pL@*KzFX0HkdrR2GZ$}9m`2C=v zp+SBBEutusz<(p)D{ut((qR-o1`mKUYPw1!Fc{nd)`PsL4Z{n-z?vx*!KyGzzz$Fp zZNt%>U{F;TiU6+!9iXr18ysJeRgp3qqzUR6f_fG#j2YZ!St6e3%~=t|2Qybr;UFmLoJ$=`rW;)NDT zeIT)3PaNo~NMU!<${x8)esMGhSo9;zlcSu_uYbEGj8=u|qTr<$w1Mn;cE80`$xN5MSI^2$u>vhUT>8S2kIloH z)_*+~#eRNK_8M$`^}>?FUbB@5yqRG-75OM{HjJ*RsOSh_!}oRVrRTUm+9VEZn)3Wn zfg~3gyT~YxW}{6>>{OF1u`e)k(#s&$aM3Fll%6n*we}LKu?G2!00)h{%-x1cZ!v2n zzM|S{Lb9yQ@k(_2o^?5e~xo zbP(y1xm=1WkhM9kjdqusT}GfC)fW&e{BpP9@dShS@9BZX7jJ^m@vXt@YgTJS0Dob9 zdkmdq+aEljKe-Pn?NeRD@Dh&!u8lNp{3jj*(HRb0N_O6l_V2C*+GV#Pyu<;fDTt+8 zia~!UP51;|N9{9dSJb5)mhDg;+J{^Vw9WHx_ZhzZEy~V6&a=2l*7FlzQpxX>yriu9 z;v_J5H*jfnVnbD+KoXkwyy_-XYH#G%YcFW3VQ@FRsJpHT%F#On;#D5s8GpHmrBfMe z&DqK(=uff?!@D?*-G4%L3HGj#B*fN7lcUlEgucGecWFf$n}zEV{nKs+fwqo}ruqhj z?u`LkJ(v1-0xdCWg9vs2s5GHljZEUX5;{Y`ufU~zzmm_R^kks*(g8P*7rhgvOeuu`9xl@RWfe`%fVisDun2)gCA?{ zSa7=j?np?F%>Cd8kcJMTocL|%A9=x=B&V<3r-Nre*a-t&CTV}!IteW#i$1w!Nq7v| zDQO+K=(JWC2{W|MEOddb;0^E?+Zfg{I9+wBSD;>jdIjng_+MAxANOjz$#0T0a{vGU M07*qoM6N<$f{GlpaR2}S literal 2374 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_timer_1h.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_timer_1h.png new file mode 100644 index 0000000000000000000000000000000000000000..8325c20bed01604ae73f00003030282ee290ebdc GIT binary patch literal 2621 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 delta 2079 zcmV+)2;ld?5Q!0xfq(N!L_t(|0qvVg~5K=U(^OZ=G}Y znVwg>3;yq%z4luFwf4T}?6c24`!#7&m1+-Ed!X6_)gGw!K!3Fd&e9&Jsibxl3WYA@ z^CsvEnt|h>9vlX{z!ndyIo8$G)EwdX{}DQ98E}<)48H{vLD#dsmuO^jZ~`QelQ=B} z!$3vd6`B5UH121RR)k| z$C)FL)Vz4gLkLvJb;^v(M@jqws?Vz*itlmQ&g8 zlxK=Fh&q8WU;)?<(nxKJRARZ3l};JHh+d-0Qfs3NZhI^c8omBB-a7V z2J-0FWDCmV^Cq0X(^x}vQFE7X^6ZcxZt@)ojt1oYBl={wK8_m#NKN(c6y60-g1suiI|Gt@Fi}2` zjRtas$bXaTHX!p6pP;J+n*50@GZ~2dR^$oLwQ-%XgJ`eLtR7aG-S|oH6z(q=(JW*U`zD=;(ZuxId zl%(PW@B0>asd&3$o?Hd%XC-FixSI3gI~d3HhJU_vI?5$t$=E!)__^4?*&1lG|D`Ve zPBsMS0kk>B@Dc&_(}69sO7&q!+eyk{_HpZ=8>PiSm(7G0qIZ-4@~f0zd^wkQHCr~j zG{$z4vWuUq4RkeNo$y+++?6BH4#M-nVT)LbV@xN??Z9!Vu%w%5r=45&#iC}HMhEE# zEq@NW%hT}604gtqw(LdG+9pQ#y=_SO3ER#tD?XWCK@yJ`ausRgIR)`7Wh? zE^95asBVik@Z~e-up>v5y|tnFirEN7=dPmH|5SeAp&A2reH7crG+R@r_+)+sNj&1* zqQsK-%4AC-ILd6)78#FPnhiA1shb33Wq&}%qgf#Gip8dZn4DRi6Qn87mPWL@Bswf) zlN)4SC@hZh#HR%a>_ppNiIK|{ByoxLffDZpGp7dcSZ1YlE^EQIL{8JW-;dc&6;xiU zL7RIw{@P2!#}twl3{!t5XMgSBkyWM821`(&MJmE>XN?;FM14 zpwy*NwN;!CDY|GC$?X8PbdUCoXMaHec_H3r2lC24aMT(VFNkLiSAUP!Jk*(FPFIlU zu+?<*&aYNa16$;y-~|CLnW*6(0*={%z4C_~%PX020^-*zfU`>+p0X`u^3>A4Qa)TZ%ISo- z_ko~YB{P$Rh3`3F%Z4OeWgpmNpN%c^$_6=}5cClcv=89*xS`>yvl~KrT3jBVJp|fX zuB-`N>@&=%K%A#Rko0#A3x9#EZE0U-Zgk~P?I4xSO0ouR%WTyl2PJ{!le8u;x`xAf zi9(QUaJGX&{DwjucT32$FQ*c8xJ#m0*$^+*BOd!_B!5XoCT5jWk%s^s zfVR6-e$8t#4VDoZc?|&a?+dnUM3Kd;+@C3=kK2*Fvg`r$t;+d58^1(8mw}+2aD#Kn zh=6iGF94b>M|n;zfn$=AM_ZtMMMYhh9+NJfIRVZCYbBB*OVMS$eiJJ};&%mWl-xx1 z1xWiY7o875x&iG29DnNK|6MfNkiSA%sF{R)?@_$RpTFyw&CP`rY+5>sR z{{#fxPE-|T1%Kt=v?@bLrVUtBOfCA)QA}i=c`T4CP+nzxGh``)OTa)d0W1SS>qAue zWEQ20m~!}j9g>npJq5J4f7GEO>pn8L%R7=>ZDF?#)v9bmd%rKKN-U6MM=%pa-3FLs zBGRF+f<(9OX@BcO5|&%!Eg)A$9wHBiDd4nDPE&U<4QK^MgHM61My3(zY?(gDw&PsJ z8Q)--y7e&$Xq5aP>8(J%b;&A#e2A2-xN>`#xyeqF{Xq6w%XcgJZngrf^gfGonva-C z!g!ffqw*aL~dL0;IB%x2dX_#?SX0!oEV8c@E;|}5chMuRB`|S002ov JPDHLkV1iWb?+E|^ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_tone_add.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_tone_add.png index 56d9d307fa1f47938bb55cc0ddfb5ac9098de694..76a49f2fd75ae119f8df94abbb71801e07252c6c 100644 GIT binary patch delta 1802 zcmV+l2le>%4)zX^fq&phL_t(|0qvV>s1;QhhCQj7S)^uVl98tirc#+@mP$or^-l;a zJOvtLQDC8hqFqirs%1Td`Vcw24r_li zd(GZ6`^Ns@WoEwh-PSuZYu4;pyHB5%v>0eH&|;v)K;1IXR)4pZWl&geZ|_Bfc_;|= zQCnNv;S9nyM+lJvc7jl}FTz?P1|VZj$V_BACoMbYq;+T@`w>R1md-Fct7>L~&i1l` zy?zz=*2Igrlf>55r?h!~@6)Lja z)(t^)@;o|rBYy~q5E)}Ylnf4wL{pV#K=Tj;83X9h4IoO!SdPm*VJGp;ManHGRWT4U z2!{v36rd|(9Ow_SkRF1(oJAljM(zYb&LR>o1{Ycdl&RZ|-wy#kVf@)uW}K34xe^39 zZ&JZiC96m_*h{m>=nA(Gawyp)yVl$Yf}Fc3Gc7s4;D6(i(Vbm)(?`mUAWB(SqMYAo zcgZ+V!l&xZc@m__oGWjk*Z{h?P5y8j>+v|3R}F42&1o)kI(!0Bo(AhHC5QNP!TtdA zojj=zi8DVEZ*J-UX&p#55V&$QZ5+#Ab!AehXhedxhQ&ME+d1A!$Mt%WD1nXQ$j6dG zj)o(M@#`CUw8ZKax>4X;2)H+{6y~W&4l7Bk*7q}wbbl1M>#}rXhg4AJZ7!H<$T>-Q|yy|3F2`QxJ1X*>JqieXC zbbmRWti-29Pzm;01eGADHuHcIMP=2@SU8keGlO`mcnPiAkNt^#sE0wC8is(qAQbHn zNi5uGZ01{R2K~J<(r4{Umr9zMpvw&=ES+I?R@IPW5VwjJEL;pO1;@bw#+M^(Gna-T zC>TFx!NC1sD$vrHg3$ge2OGg!u)fexkAFK9o7qg7So-qtDzM(IP@D22+7FDD&a`~h z^%X=1uct$6z_^qh(^49tVyRn#Am=)Iw;8w}AS>>4ngDhA6oVYCC;FlUIj3pg2@ZnX z#QO@OXsrs<0;qeyH9$`gErQbOi~Zm`u!X0Ima9}MFA?A>BZx?O54-_>Cf5nJ`hRI- z7@IqQ{IsUAdP4G{pcDKBd}Jd=`oYSTqdryRq!sek=Nx^DPaKPAZv*o{oOJrs;B7;e z2f&|k*;49#37T!h{STd%?s*BeuNg64P|aMtYmkQ;>Ko4tcrh6K;Gquk}ivWJHifM)ajgK7UplF*Lb!#p@PRJRHvj+uZ=hv4(>lL+`2q4J{k@^o*tmjtsZX+*6xt`c)N`yeniLG|2CnEm=!yi_LKAk2U4Q4`__2afiXD9W zf@gth@RiLNPD+u+-;}@$W2(^8Y#uNlmFUNVwZIZRVk`PfHvW1-b%6K5KA3?pJg{&b+(TOO|+F%+wH36i#?=3PvL|N)7(_qX*%B6F|z^7Kv zOX&WleRd>NbMMkwT}^s)9|m!9hK6lG|HR4i@0T?tH`Ulc$922h3iK0)zBcH%8~hHw sXRxe~)e{uck`@Ck23ia>0|Wm99NI>Y5x}an00000NkvXXt^-0~f)zVb`2YX_ delta 1801 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 KMNUMnLSTa9Y!UeY diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_tone_on.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_tone_on.png index f8d0bed82668a37c68e86e4f634da13699e76364..78ad4a40aeea19c5852771263d66ba1f904a1126 100644 GIT binary patch delta 1481 zcmV;)1vdK047d!Cfq$Y&L_t(|0qvV@h!s^B$MHbUlr$ySsZR z;~5Vo^k5|AKi~)OWvNu^q)cV~Rv^TARhi`L7Xl&1 z5C$MIqM0Ev9smPC8tbC*^N93|Z&2X`LX5#AKMqKQXm+%4oK_4%OxuM(x(vPSnhJy% zgUC{1M3;!lv47x3P)~atk+%ADQ13+gKtUjf0*>l1gMvT~1sv631_gl}3OK663iZfEqfz;j><(AJn0!M)VKQP&@W~X1Jq`zZ@^gJf%UYzpMO%wY=svHaqeSu+7TB20W$NT(*zd! zE`~VTPxP}xoGa98Pte~WcS}8kNLstXv;pdAa4*muMBC%E;ou1PRp4%Nj z5{a@Jd;<2-*9FQZavMRR%~9_IZP03*(fKgY3Qhr+b%2M(n@%yk`b&-!(YoT9%tYkj+WxB&*w3 zpp`}kOVbVv4(o$m>&sJhk%oLGL?8Q-<=k$R!MDlqxm=r#2JME=bR{m*h;tVa%Yh!} z--thP)>U%RZZ@#2d`qruYaJ8# ziV>_u|0%1z<)iIlgX1#3W~;ro4}xb6V%^?v^CqDo?N=E*mwh;h8wxs%_|y2NR)6E5 zejr$6#LBgyTC7(cBySqzUw8#qG=gKI!K3xd%ZPo?h>u+BId}$Wt<;AhQO1DR!9ie| zE_*#l)@G0_G}srXWrd^J;PJY|)EBWgfjtIC+@mE|(Rv z-xUG5j{yab8J~R&Z(>`)}z1G-pfaxT1SV0F1S0q zg7Rua=PjTego5LLJcbKWEkKG@O^yb9_PDh^Kjnz6qb*{ zYBqfZ&VeM;w}2bK3m|cgD?;obV~J%N00Y;ZNdE=B2k6&^=sW4d9B*T>{EsqNP#`D} j6bK3g1%d+CRDu5iMTAT@xZf6T00000NkvXXu0mjfYIDUj delta 1498 zcmajfZ9EeQ0LO8&H7l0qOWYV6VbyGs@~{lsn#anP*c3J)iCZevOq(KyMj}rUdCZuj zq3n*RrUwtXw4~B0)M&#z=5)QfclWvfo8O!N>u;MzuLl1jr$*f=i zmI%G@p4=T;w_8JUy{zzj49}WCT>NS9j45Xim|~Uh_F@|bN(qu^+qtA!3>J0iyHvO_ z<9NrPoI}3Rz^T!?+{Um6(D`!%M?v^Lo?d0>c^N8Nk;ISJHg&}TkJ(_8#vQC$?%z<$ zFPkz9#Bwd?tkOHefBV9+f3KUDnK6rEPVdOCLnWT5Erv_l3w`v=CrP{vXY<|&j%7WI zTXQO`>_Mq89Kl$dc_5L((jp7m^+5riUxt*5Xl>xu`+>u6bf8oZtr+x7q|eze4k}hl z4);WCW%Sb`s?cuh`cVBxfyB=aFPL(xj7D-*l@?qbJOHdZvFrcJ`OkwYh`L(IE}Oah ze9f{<-r)<{1}GVoKG#(3rWaYjNLsgxUF32V&#vn(B!QXYl#k`yRNZ|RYMmzVpBekTa~c695I=ym`}ynYotrqZJzw)Cv7xYQy==U5<`K0P z+~V@1JEjpZ;YV05`*$y?4-g%AQTLv-RceSx-OMAZ&yKL=c60QfOL|zyTR5{LwAIWh zaYX}eOHx0;bMe);m9HD=As`d?bD8KzFUO-^3N^(d>ra@ji+h1RuD;_1nD&#Zeje7Kz*Hm{Wn(oJ}w6O0t81LiW=Y+Lj28wh|%~p$MLPryH5Ujb z?QJse^7{Kg6YB(b*vY{tBj>y{uFiuzuHI=pP!o|L7S%aa??S_9p!5!T5SBw~I_cqf z@XUBz?B@8lGYLJ-hi^95H8e*1%?$-)R{19rFZs3{idI?m5RE@{Bu_46^hNoJ42q%3 uD7VEDC48wA8$e{gdtm=BoIl*Wj!~d#0mJ94hK+4hevC};ac^)9=Kcd#%CRZ{ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_trending.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_trending.png new file mode 100644 index 0000000000000000000000000000000000000000..9917d22d5672837a02a533a8e5af4d4c087bb7f0 GIT binary patch literal 2598 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 z z5p))Ss{!nkVecEwBi5T=0klf%=5{=M6%T3J>z)wp0NmwM zgq)y8kl1ZB<9m{w19e@jM#Dax*9N^%{&l;|$1LaFK` zm(UYv0gMGO$I_91W5(zDe<5ZF(pcI4l$Z?01rC0 ztu=_B1P1~Fs!>@9;8OsbvK(Q7PJqnC5hM>;7T{b^5p%B;wkaw3L)ieACRwD@5+{qd zNH%p4>E#rC+7Wk=z5u|+9EWm^%zqUTY-_0V34ogb97@Q2xlDVt?zI*xmcMlmi6kh_ zWPdVM!TLIZ&H+#rL0TP{%h`o+XJA3x7vO&qzV`nhYz#~JUmJQ50DOGEh73T z%49MJtuLu1g;s|ulHJqV_=T)B$wdY~zDcqMnSxf7msOWdnp*ge z7&w0+*(YUjx{_RJxv&071X4D{LZ)zogMX8KL<}8{h=^&3(>EdtaZ9#t5`mQUixBA! z2WPv>w9?_2Oh=#M42rmip~3n|1!_(9&tS!%e8o;$jQuYLcxScz++W zaITOaT-!DmfwER%>HJxTn^CVFvn`w()!r-t-!m4jg%S}pw)Y_rB*<>UOO8`wvSqKd zo8YkAb&N!n{!&4I&N%PMSclJW^fW z+p^YC0{PACiv@B7m6||4a};&SP`PHLsSxS)0G1od zM*&zZG4fR4Q=rzGYx_O$s^HsDNdeTMx5Sm&dFbl|_!Q_|&9$wbxa$Cn0e|p_Aq!0f z`L+P)=BdAb;p<#XO{JruYjr6keJYFw@B)BFnzFwD^at>vD|uRZ(ids2eeH=mjClZV zG^7tV2Cx#qNMD`#66g}mwe_C3byxwQ4}hOEW$K<50Jz^rN4^BoeKL?n;&~A309+-x z++k!73#RLqktE0$fz$%LSbx6RP^TiV$yyVIN_mQz`kDgZ6~lVv2FDH7pPEfvoP)u! zhJ?;6s-#X7PjgG6DJ2HfqP}+0-82quj%cHT^II)96vj4r)3cfXidyeX_Vbd za({w;vq8HS5r?1i(h%s0m`+afAWYcersM^)MjD9_CKUS?$n;fC7PHgJXBKN1<40-~ zYLk%<_jHK<^wYsf-4}whQWhp`>Q!T==CMA`(q>HPsaK(!Vn@CLW>-qy;FpqC8|P!) zw4h#In}{FbAYK?3%7#;=04`E~N2UQ6P(T3%6i`3`{|f;48$hDMyBg>-5dZ)H07*qo IM6N<$f(yT5H2?qr diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_unmute.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_unmute.png index bfab737e79a3d26ef14b861cfbb54d4798ce1dbf..cb7dc121d6a7fdc7f5f9c65e954272e59289eb95 100644 GIT binary patch delta 1775 zcmV9jO z4Mu|rK}^IiYNDW+hy<$!s`y2GC4Le3;0F?eA5_q&s8NH7q5%}e6k4M|2?2QoDy_eB zy;HZRXZG%G_ulT_yC?ZGGiT1sob&JQ?Ck7Zh7HRkV<2N7V}BrHAY&k7AZ7-7dU{5J z1~4|}uG8BcWYmKB;A?OKIQf;#^WfC$3H~hbBM6gyRNgqqq0-l!pw9(=g)tMT z>mq+$`l1}5#{@eSvoEZVudOVg}r@4?r*c2ql^?~hJFbDhs!epsyGh`{=4F{_{ zULHe#a}?*Wi%gK~k2Z4EE(8aGPZm1+AxZJ-O^;{)pua1sQ`iwx*qQ4Y^pDrn)T|&aO7P_k!5&$x^V#*cCZJ*yoLl%KHNrG6Zc7iBGXi~Vq;(PTsS9&E~AFzF&! zxNnku5eE9*?!+Zm%W5OAX3<#$jWLY(8-KdQsq(?zf@9Bt9_3&yW#5zZV`VGFX8Fe= zNc5={Na_ZQ31Ep4#7wRt>j||H+iqn)1KUXzM^GTh7V?_{WtW}jGA@NsxkI+Naz2%Z z)U=8vNUkITd_x5-#mfzysCF6p`idneAMAP~=qZLyRC^75#S`==LF>7tk-5dXFn_9# zAa1i05G0G%pp2j(Pqav4F&U|08jR#AgrB37uX`ZwxY9|n-q7u>Xo3j%QX}YgLno@L zBxtTd#?OXMRMzC(S+Q3Tx7SSsJ^G{_wuC%2=2z*8sWOi*>QwUgU6u?Xr= z#!|c!riXOH%<#!l?J$%dqPvQ#=b)}5Cb@$i)q2XSoV}iyWD7FQTdv~??tgtClkPF_ z0%##v{knlVw|lyPWO=U8_n#TG+1ghXC_z#xH|<>r_&)`l;>uP^{ZwFm_OYIFeY>Dx zYCrq*jl?by-zZ?6d+b7gq1{SpF|5cBhs0F_)&NUd6%FA%AX=E z%h6!}^9gFbV_4P;B=TT5TB;wj$h+0<06#JhtppcDb}lJ~I6V;*^K+k+)1TYeaP3xadccFHZl`qt%|S62!d@+K}%urz#4sjfdx7H!5r#z5H^_!kjWk?%x* RbH4xp002ovPDHLkV1jR4UJw8P delta 1835 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 delta 1117 zcmV-j1fu)43-Jh$BYy-qNklo(P5tUML=TqdqC|7x0S_KT!?=>cFRfUy8B0)IIFFPSto=_y=*P5@Yu zTHFbsU1)x;83CXTz+?b}06YP31waYFyF3N6fUH8YndDFYolb=psi`@1k$j?=M>;o2 zZgZWJS4j3H`6XjQF_0FKd|3siG9{8@VgaevVVF!vq|J^n>AWX7KNb*@LpLT;y9Z7> z3t|DqL^9#1BY)!*$qgizB}dt%jPqnUMkGm~7)U0ZV6 z$p^;<>Ce1k07)ZB;FOy>ao^L-sT3PX3TeF{PPt7a`F~3@r{1xFT1cKXARP#>^R}&| zna@lUP!B)4KUoZ*3&7pvcEeIb-*o^E3ytfV%bNaerW(CG2i%q1L>uI|-J0Zet>^fz zd7-w5C{fGs)Z;u3Y6c8;ch$-8pJC&VqyC&5>ehe%E! z*)!lJK;G6w@|vYt;o% zY^1}D2-J{Bv4K>Z-bhHb0E&&|^=nD3fYkT4gCxI4LdyLGw-!JO=d@vGe2{c^2fdJD z1Ap1#)qnKaSy9g!Ng7BJ#};WA$;la4<+C;QoRB1e zY;eXp;@BX4Ciz3N{FR}eHIfvNdI;b|ARHScU3OHdXN4pMv@9@=D^j;*Jrh!gB+$MH zIOR5tqT-8$=j*%u94iHvz`t~{e`Mo3RXy6 zjGa#ve;N>{vh`2EeCu>p0G&3y#a#aNoX+^MT!*p&jR2#GVT@Ouuy*W00000NkvXXu0mjfy*2$& diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_unvote.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_unvote.png index 9128a67c9db5d2b58c9bee31f1df90d9c1e8c9db..9fe6d35bdaa9aa774ee151365df7368bbcdd6c49 100644 GIT binary patch delta 1617 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_user_search.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_user_search.png new file mode 100644 index 0000000000000000000000000000000000000000..79d4bc88a73304676d2e3328b8e12323b0656610 GIT binary patch literal 1489 zcmV;?1upuDP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=J4r-ARCodHn$N2iRT#(bHBc8} zLSX6@7bX(q%1sMbdatdlDEbTB8AXd|)sKaOC~l%ZLxeEO0@FEOzC4G#V}8 z`+0B#>;^l*L;$f6f**32W0Pw{Lki`MBJPlzZPnUNZJPp?fcFp>HRn_nhHuSDRuoT9=F=}E zdfaAD`)bO}<OY%r zF$yB8jubekck{KkJE{mOu0zxk=lSc7f{=X73}gm820ELAykK4EnCtfA_XThm>;lE! zwKmv(0aw5Uwrj6(oF9RhW$+D%71=I#$`Apx7xWr9555M!f-d9=PTkRsek-`pBB=Uq zO-d9F^`!hc@LoBiPAdQ6?Vwix`hDR01kvPUpBJN+4kvm#{wP60bzHpXC5Z!lfOVse zqY7L3+Tq2D($QI?=J$#qsW1PD!zXNl=r)6|CItI}Yp;N(z@ua6T)HnoNaS;~jaS*G zlUC^eguHgBf8R@vc<%;c-a=pbRf%kXY(06$iy746;RvX+$J6M8sbB);0=aAhw}F+P zQ9NnPgH722^|2z~+kzd-7ci8Q(6)s>Yb$T0xDkJV5rx-m3#N85( zWAz2{VP%hF{y>HGs_j8rx7C&hR{fq4`>2ys>+cou>D7AFt8VSpGaa;s@gC0JWDRrM z>)4a7SXY(9eOGQYJokKfu@=?{BFJ-2pl>1P14rMds;kdnyiaMoSoaBf)~WiOqw8B0 zT}aKuJTkmk_X+a8$GKcHXcy+*H$hJ)2;}+jV%-bH9CXu}47Vppq?HSDnvQ=l67im# z-R*`}6*uTiZtMRXPAUcQsD}yT>H`!SRyXF~4qKHssUQeh{uljn{R3)gKjyLQ?N2ikw1DMjl(ZQpAASZ2kX4}&C)bP8Jrde;>zvR!*G#_{xoPQxK-Ow@jgeG6O$KLGvF z2s)Qe*Yx)FAwf4kBt2AljYb7Yr)szwu4x5H-X7U-$p}?8fuuJ=edbONNoRnSJc7z2 r0d`&o+WHY*Enmy$nSsneCk*@#vYC;_HO(Km00000NkvXXu0mjflnbp! literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_video.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_video.png index 9d4b0e6decc7f73cc6fd30937cac560022977a5f..a5f8e3d8c4ee833fa4a5e4a83fddd58539fc75f8 100644 GIT binary patch delta 1659 zcmV->288+K35*SpB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000;paTE|000010000;00000kTFK@ z000H{NklE2$ila7IofsTQWfvII+CTC>p>+7@F>w}jAc5!S&9^>Ruz}n2r%!6D`8xsU6a|E*h z=D~qnfi<*qhkyFZUaXI&% zO(f|GYi*TPXydPA@ICM**b4@J|9_fePI0*md~fiRBFOCoW?Ohd%=<*~ z3E00OntxATWEaa3#E1&Pcsb_JZol zhAU7?ml}hz`y;WpFnS9dZeUz>Zv|To%v7)13PB;E6~cP4dT7a#va!+@NyP~w5p{`6 zV1H*K^#?1Hx}n3E;I3YF@pGJHGc_ow{mr>%H#|(3w6#6&WDcsgRdb~zK_KS zB1FxQV_79pH|E6U?0Kl`25#re+Ni56NsyKgv3wRQCOCICoUaK?k5(y3(B4sZz3WC- zSLJLtUv=%;@+Ap!i@%39ih4?C!}+RbHBq`GK?#?Q)icJzy3u7(l_cnqi7-c3aDT1k zd*dsMsw6?KD;&uXwX@-TWpI_=QOsf7&3r$|VA$DkzB0HfOVDK#;V~w4+V+@8LfvDg zvh!t%)mIhkVod6^O{xWFELwoperO=nS&WTwemD3smzt}J5fnl@YeL+IZn+Lgq3kmC zR5upqBQ7)Xc~OG+X0?ZW!$hZ@RLqIWo>X1ga0N=~Qe)6#<50ggWD%0o-R&Y{(^mcT>~i_d zC6^+|Ei_+p2Ab#~N|Q;UZE?BS1#ha0IfD9aXHn3f%f;pFL!jx;f>^o-s0MV=^dIm! zexG3ny0-^qw(;>DVplH1a(^e}Jggi4ndZ|y#5s;42Ez0{jpi`nFvZFFjOt*5=*6Bf44 z6e$(6o@$F%2xUT~HT^ICu|TaZ=BS1!wWtL!57Y&xLDWk0Gg0GzP0^U3VKyLZmh(Q) z0|tWIm_nUhw85wC3L)!1H_0ApXRu?SW1wT8V;~;`e*szTCc2002ovPDHLk FV1m~=0t^5E delta 1232 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 M07*qoM6N<$f|0l~761SM diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_voice_headphones.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_voice_headphones.png index f1c2f2c784ad60113b5180cb8bc40cd245ea9cee..2a440103ff8cfc3052b96a449946d4cefb7c03ff 100644 GIT binary patch delta 1483 zcmV;+1vL893%U%Dfq$e)L_t(|0qvVz$Q4Bx$2}^UW|?L5A=GP>_CZia9~6B<5*Tz5 zUPXa+Q+IYzBt>3Cw{|Dpyg>+E6qJ>eq+Li?}byfw3|Ut@J~<1D*kUK@)b0Bpblx z!w@8CAJilH0e?gv2_*X)<@SO7Jse~S5<(ge5 zSF*Yg(b+vy!S+LrElrk?K*XC1UIj-%nSH^5(TW6t2YI2oCE$=)81@6c>r&+L#URftpu1R^HQy(}WIotc!ssLX7x@~N`Zzh)0PAX2 z|EH0Ab4J4VfMwfoj_iL=Zi!^sVVpx5ClypD(Q=?stZNfEE-O@M*a3&KzuSgJs6aqh ziEGDj+<)8%0Z$Tms86ywZjHFdJk{$RCcz3|*_wKh)7FNd?rzo)U{l&mebGp$XRMvT zwI6Y4Zl_fSCykR_Q`az@SpWh*>}KojuWXevJu-09VA2|Kj}L_}$;Nwv^lx?yC0U}N z5Y=OeYkDM_mng-5VF)-Is3Ugmxul5_2ZOAh-G8hH+^0iRg-jzT)?Gl;5dC(BozMCm zZTrpC#|b!nY4Cc?@R_bqfvl0}*AUPgOxta_RR=}tf( z>wo=~l{6&hD9Tt|7lsh=3PcdS@pNsHOLt^%J6$pX`@b4xtacTOg$QH~sty+-wcBCw zwc1r^MTkJwtD$ZoQo9`%U#ne(R)h#tsB}I#vOu1*odxm;6gz*cHyS5Bv9-Qu7kHOD z-us@iQHSC1EEV;@d@H!LB1mjID?;`TL4V?UP}e>ofEGz5F=8zSdNEkX)`yU3>M!;r zWVX|XxP0s6_}?x(H2WE4u~$%NGE2nhlR{GK^^%n%l%KcUum$oG zXnTPykmn3#fwDjz1w4oI6_f??DBwAqub?cDM*+{_kSoXmz5=kG z>*A;pYz&+PWu|X6v|xJ*r%MWIF_Wf3qKvu=fVEg$>6CLSzqVEON)&;rN`GY2XO(sB zt*RU$#~@I)4my;Z7NTm7D7_KbTBjIFOrI`P_7@?HiJ`@ryF-&Y<$huR+K@caWk~Q6 zIPN6&?QW+)GGfHin-)#T4PyErZ&7r^2dPM+E5U2vJ79H!xc?RL8@5_$8uT7~Kn^pB z`vMS$N#L6Ly9uBh$^C=G?nEz}gg69r7wf;1br~L5x8(lZNq@sZccpXfA%D<7Fe!-~ lEGv)|$O>cyvI4DA;2#tnz^Xi&Q|ABx002ovPDHLkV1hP{yK4Xd delta 1380 zcmV-q1)KW14Acvdfqy zR6L;^RhW}#&?IOO)VQe-R5%D~U_=sy5lAUiS|Mc-W`mdZM=P^b6wTM~i)(UEYoEQ& zIs07Cd+r4v_nme2{?@m@yU*R{?R)OXNRI44b|5>D9mo!32Y<2yXQupD1w(W|+{~EdTI%^c-#=x6~aBu3E zw_!=U9h|!|m48XeRxw0ffT)e&c89oW+H3{y0&9<5p@d3!|M0QN)_|H}Et zLE{-K4)6fj31XoIqL+NoUP6j51mBjZJjuD2fG(M&0e|Nlum&6jWwD==m1k@cu@v4= zqD;acOj4+Xgc{4i4<$Nu>I*QhgeLtd3O=pMf%t=bFMU;;ky;ml4+C0GrC+gow~(dc zN)WmM)RZ3jzX8;o2eyMy=yJcQ1v>^QDWYrt%Ycf%$=^NLV|Yi@z7&)#7#mtwgMf!Y zD4uIwK!2nF!j^$U0fCxD+CgY1AfF3%1&Y5<-g_h0j=(-EI-Uw>R9ZK)?F8hym$5>h zN7uAdwK^+W&IP+Iq5a%-)mbAwAU+371&Y2J=|1$+=zJ)kRq1Dw3xf2XKtau(tCAN? zK!~nw0nIxS&<|2jXnmmA`oWgnIYRG~0nJLMyMMcfOiTOkVm0Ev?pQLY1g%#XdQYY9 zA8c(Oc~>26te^vgKi8I*%ZikDZMKoMqfQe!)ws>0VeGPc0GO!2-J6R(eN4++E4j8TH(w$2pQzs z+<*5Pv@kHvnP5=pn^>1Yt}Rg3MST@K*Dz^}59y;uzEdf!>y{w2N5}7-L6$iqGr=6o zm?}B1K~*?sRoiS(J*qkhb+QE&iWAF&KsvE zH7W->w$aIYP^y*|&kS;jltIPtbfizO*pFk+U`%@THTZgF<3iHt=la;FJ%haNOMh5F ztM0&Eb&LI)aMkTQ?9ZU$m^*)*4T`))*`RDt#DU1^JcF`95eFit^9;%cMI4Bn&NC>H zL4Ou`xHG-HnCt3sKyDY+v<}9t&nCi*r9ayLTWeV{V#}~&K3w{1Q zjP(hfufrvcKw68jE>x#-9_EQ6dw>7<7hWF&*Mj*5R*@^l!O8;q9UwYbB;!~$tlH8f zZPIAPL|q+bKPqgps?^ABF$*}7)Y?*`p4BD⋘z80`^(eD&|%@yfB+kXLZF|R&$ME ziCLg&65xW-qE$mb>}~v9pg4fIs)jU=S6!VXwRZMY zgkrbxG6}Saei^X#pZ_Ai6THkO;_JL73+k_eOh1^@!(9suVr}heDc3hCZ&3eZqfJg_ m2eJd%f$TtbAUkmOI`9uBaUpkJxf{#?0000(RCodHo6U<9R}{skHR1;(29*TG zjYK54FcMJw$WDSF3hE-6t+#?!cS_N7KS_MX@Kqq$U>FMbe zjM)VAxfDeEV9c;=nu(r(DKOdTbo80t5Tygg!42>R)X@~T;unw7H#OK1XRDC>EZCS{ z`jL6O$;{(q)csHdg#satmeNJAEaa$$?T?9nc^4v07RBCIpl;?!=_ZQvP7{f=u_%*V zfx2t-27@=e^JG5nP`(DV0ao4gAlU-G?h~kzU=t!~Loa6tq>aq8M^x@A=cQV`6gN=( zo{dLEiwEuY*5v%NC`T3RtoVT^l2%JO!@&yRJ<4mDIhHltlu6daSMPOUqvKvXn)2;` z@W}e~5Fdx*UXQ^Xr_xhW8*-D(P&#M}xaa;^8=6zUz9@8?W|*@4MxZepDiZP++G~ z!In+)@QT?4id;5}3}st3&BH6^Tw;}fT{bcDX3HRgu*<}jW8$3Y8=09i<7Ru2GlT3h zvE|vuJk-q0nL)D^AT-WqqAiEUN43{cAe)J{93?=ga~%Z=aZ1|W3KWpD6{r;`pg^Fx z&7fAGfC7Q$HiKG$0ty70+YD+23Mde0ZZoKX0zEgJY}qsqR;*(Noimhe*)$J-R?PYL zAl=zddcsR}r+>ib1E9lQI{Y*NvRO`nbZ7VXM4seMbB^a9eE!(uH|u3ifrfggbE%X~ zpvXI&YdH?ATU9n`yZmfRh$j3Et!VVK@FUw-s1_dq%~Q4|~_IMm&J{Sle2P4Ws6Q$96R3Go>6Cow{Gdi9fq0-y8O8XvFN5u^kzh}py;=+TD0>AV;QFjaM0iOd+>LJVP19K_6 zz4?mj6sO`<+@6W2dw{c0GzJ~?yp^o`kA8Q7?wI$)D4e^uk@1_s1@I7m_~ z&4~mN=}hv%sEO&!7-hv#;2mnGI*FZ#jqAPsgfIvEoFJ5m_Z$Zb%(n~2A%=W{-#n{+Z=;XX@TggAMd>ap8ZATH_cI|%LG!T z1ft&|(C;y>_nx(l6GwzX0@1GD;ZJ~mc8`XYjT9#&5X9$!)BTixq5e1UX=BAH5(wfS zgDaq)ou^?zqs8e8r0-$Yexl-zt?ViP!gZQA+o~%J(UU#I%Um9=I;W)Zp@`mV%Gkej z+Lv_lx;TUQsenQ+Xx~v6KFQ;Ry#BbQeaCyxxkmk0$tTU=F#C5Kg!q!UzXj{SpWt_J nkuQv~Upg7qTB|@9-4u8W@AjFLU#Npq00000NkvXXu0mjfePN4! delta 1307 zcmV+$1?2kQ3dahNBrybMK}|sb0I`n?{9y$E001~;SV?A0O#mtY000O80f%V-1ONa4 z0RR918UO$Q0007!UL1e3`DE1q00g>8L_t(|0qvX5t4&c9$M5x zQVOFtm6;J!GZQI8dNT$@1_tyDqv`p3mYwz1Caj?7iRJ``&X- zXVtfJ*Is+Cy}sYG_c`ajcW$FmTdhE?K&?Rc6ljJ{Ju))V!X!P2hxbW!b|l#{B)B zQNcP({lF4Qc8i~ppa)pD@=~rG%^Gg9lC%k5d9HIC9rx?e_>bKq%hN;n7##Oo3?>0_km{{fXAx(UqA}pot3L8mCvH_FdzH;$;*_ zuSD$!3E+R~TtiT>DUd$1+Mj6U2N`$^d}1$FdHrxGgJ3JN^avi*O?{^2Xuc5GX>lq)EtIKBO}ACfC- z-=YXq*zIU-v9HD{m~OO1YYNQw0CthlffH38vmkKf`WGv9tJnzJK4K*I`da0e} zD0bFWM{b-FCV>+XN;#Q3kqR>3EO0Htym@~qgjbwP0f}~jXL++ZVna%UOqVH;*Ug_rx-dIhGN;4pwG#`bE3{ z&zAlrk(b7Y!F_NA+@_A-9J^-_9R}JK=T$`Kb-?;1j^z0T4gv2Inm1S1V-N`vi2i@u z!3SX37aC>NR>vUZEf9U>$9vy^W$$R*S{-FtOd#bY5dDsTtlPLe_pGj*I6}xJ5OMh( z{z;H!F9 zAGhSXV?F2GqkV1kNfRVY{@n&4R#CV7FMSPo1)hQdzA%P<>10@KwE|^R;1BBxoFgg! RkM#fm002ovPDHLkV1hqnXyO0> diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_work.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_work.png new file mode 100644 index 0000000000000000000000000000000000000000..d669cc11617b2f5064a60d9ba6d46fb071f6e4e0 GIT binary patch literal 1306 zcmV+#1?BpQP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS;gi{29o^%mVjAcuGwt8Q*b}yz zMuT#8b5jjm7DCrU1ugR`(4Puk2unyc2z4zpvqp$LXdOxUQ9g=iy~T?O*#|kade>Oa z4b-*U)P*3ZZ6>5Pil{v=&nfk31#vyEEyO0xYuHl#M3Cdpl?ZYW)UzQuY=aDATNp*6 zOTa-R;TN>;V}IbAYR9CEj}d#gP1*>#*eZhUJh$)m=QY1FJ`_vJ!*kSrnotpiq?S_* z=Cn$r7swXeXmu5&j1L9zsV&AmNFs;kqv>s9HXrhHN{j?KiwKP(fCs=|z*klz!&n&gsm;2A5P-(712=%ffRE5~`~?#L7@Trs4lBQiJeQ_1PWc1CdYIe=r01( zfVdi&eWxoX?J8lgCi#$F^DE;+v7|g&j$98X+Hc-V&W7$Q+P8s2xueoBeDbDZ+EM35 zLPPTtOmmgyL;BpvXxQvKW3Zhu?9JvnI*);~0RNRjjcW$T+Nv=IG8^er^OI~do#sRO z%*OoW_R?b^T@OCOaT?#pyygLF=+mYyeNAE8?92Fgl`dUYCj`%HfyklM+67b7m-P{* zSyUCiQN(hq^oKrLzC10+F67N@U>@w4_o=N=sE<=N8K2Lpop>zj+u~t3s>^D0$2TDHm2z}8E~{> z+@ymY^U{gRFVfKw9L1aTPjk|R6$FFdFgOQ%Hx0LWo5(rO$)PzHR!~MncN4pX z{wd%XQ1-hO@89vW+<`u6L#9249;-VNIf3d(X%Yj8fy6*!ATf{_7!Cvf0gUucmjw;Y Q*8l(j07*qoM6N<$f{ZLc6#xJL literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_zoomin.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_zoomin.png index b8863b8eb524a25e901f03eca34c29fa66142e05..f4a292e2cd5b8f0445cbc7a1289110b3ab698154 100644 GIT binary patch delta 1384 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_zoomout_stats.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_zoomout_stats.png new file mode 100644 index 0000000000000000000000000000000000000000..1324968b64cda939ed3dfde4bf539619f6a93ac5 GIT binary patch literal 1205 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==Pq0fkoca#WAFU z@$Ibr*&>c2$BU(W7jrD@O6X#_bi~h_)6qlm+E4B`Yd+QAP^oWN`jg#hOGn32v8L8g z6EQ9^H^+-=6ASA0?KqVB?(MyE_s-mVTEoBZ&AHp=@Av+^_vX!?9V<1((+@}%u+3pa zrY0F*@O*c%;KtiB{RMHX-w!bD2uqmu+Wf=L1B}n+avFsv1U<Q%*-&jr@P=_1oP&StPN~$T^BgUtWbK$eEz*r$NOU0`iuHpd=4}BJU(b;5x?AY zllGg?^*$o&yN*~b{B(Q5l4El=U4PY)F6}V?M@Hb@Mf?6lEZXtdR&C+}wiNGu3--vK z?Fw|PYxonnDK$irU-agy;Jn(kS7xl*sIiOj6T8kNk$Riu3@T}7i@#W@ytGv8{=~iJ zdan8w*~*zN;SH+NmXnni95eAgmVL~(EsCvW(R#ndj63yKe&S!V{&rcc{LQyrDqF+2 zQf;dXm;^$C+XANeUz1;6cH1LG_e|fX@PO=j!PWtt3m=Jm+%ad;)=65Lc@= zF6*CpzUk1>W1D%#z)XhSs6h+p8j8556_gRf4GIr;izx(}9q%T-s{&jhgmvZ&h;975x1H4MpdPS?9kPp(^3u`oq(g(v@|zBrA@X9|fE=4}!^|7+9Nkj$6U7(eZw z<>`Kz%Q4E}SJav=OO8)h|1dPw*sthPuw5+vvoA^1Q{YMUrBD{py(`uR_saiKn3ltL zs&L8qlND2*C#@H$U&3;Q({EC; zwTrylu%z<#YMIm39zp(>3JY#8Vm|uDR+ICk%B;`-9s575x7Up*D)SJ!yhY)({h1Hd zvOa8{tbwx%vm=w%-VK=E1x#Y^kBG#sR#BB)!oGLDiC25oYKPk*+z!%lO=WCbg;(sA zag5fq+PLD+^wl1dcqgn6ICt)VY}&j{cgp;|W>#nKo3lhJ#M;v@h?gyEMuoqZ^Q6+4 zki(x@X7ar7&XpuGq=^>bYkoU3q&K12OpMc-hQj^&B3mDU*^5Gw|w?2EayR3 z+NF)2OEcXHQsWZLHz>!+18P!RA(8o-(M&@O1TaS?83{ F1ORSN5OM$j literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/no_apps.png b/TMessagesProj/src/main/res/drawable-xxhdpi/no_apps.png deleted file mode 100644 index f760eaa843d1d828ba8cdab09dc251d43f86a1ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3573 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/other_lockedfolders.png b/TMessagesProj/src/main/res/drawable-xxhdpi/other_lockedfolders.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e638398016dcd01f41bb7bb8e2afd772e7f9dd GIT binary patch literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uw}2VJ1}Qw{XwC{$=I`m^7~;YE zHgtF1AqRmYniDTwU{&n;;}fODwXaqGfquq{l@nh4m?Sc>K`S>ZU2V?VkN4*49FkH= zSUU0g?-@IzZ$FQF?-n*^arCrQ`LDtcm?hfp>Bnq8uuG$BzQE_*4kcV~8s`|Ae+_04 z=6G(o)ura0(z#fb6OvXeOD;`+E7MbZps&37M)g+hUku4vZyx^sVDJ3d=jMa_BA+ue zZ$+-#X3Do{sp9JLtl5Fb=dRYx?Y+1Eh3}#Dc9P5be#F=bo7OL!VC@xGty)ubyCr_< zV}-hNSEb(ezPjDAm~H)m$DHny4`*94g)#7Vc=yUYk#cpCN?`oJTOn;J{pg#d{)P#S zddE(xtMAOt{v)|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S)ZqiV@L$& z+b~1F!wv#HKN%KW(GaR+j^&b@IEnp3gN#5Al`-Vp$#x~H6wT7Y^WqH8+nRKfisIxF%6CWBbbg-U{#s~) z`v&=>35TomCwj;nYma^99`^5`A;Z}On`OBU9`lMA|3pUjR`WY}GsRbS1#VunD>eMC zYxtqO|81Y{ow)zJNba%8t36FW^nT_j++;kLJjZQnxPW+`<%Z+mpIv==oNEj?BcIl6MqxnHghIhKp=aEfW`zL-+FLSA>F?J=f( zO`RWZWFJ{)ac}W{&8|ng4sBbP0l+XkKzRuO+ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/outline_add_gif.png b/TMessagesProj/src/main/res/drawable-xxhdpi/outline_add_gif.png deleted file mode 100644 index d63045ff1dc742e31039847870788d6e61fee679..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1579 zcmV+`2Gse9P)i$1EvF)17m=pHTowW1AYSb1KWYmfvrUpRIQ*_151HB zil|IKunu?%*cqzmw1S=oyx2fOx~v5r0FLI(D2<@E051XK^A=X)90KkKKFU+gN`fu` z-e@e{Dsm67I&0#=WzJO+^MF1oTYx>lAHb>X?I@Iyz&Kz6&<5NNOiU>7b^XmO>KV)( zYHf2Qnf)R%Uql8uY3gYksBPF^rk!)Lw8w|>S^=8X??x6puS;|+etMGnYBng9EhYN3L2OwXkdyG^b)l? z%$!Y^zLV_jFz^mA0~nH!$7J9uE6pn4Tr2V%j|7nUW~VhiW@eS~Cne%_?ySp$#2|5e7-Z}P*ifr6rzdGlPy}S&#M)!9EUk9kiHsH|! z`D7-Pptm{uCxMl~a|zdPRFN;!*Unzx`vCPA5g?CTgc8*C#(d%FWL$QJ41uW?LUl@G zo&CM~zUpiK>2F;_4x4OxoP9Igc?_7Vos!`{;AaheS*;$Oyv$GVT^gYu2R0S$FfU3_ zm&L#m?aghj)#-)nfDYjAoaLOan~ztt6Fd^CQ9k<0mcPLxW{FW6)wihNI*c!4<_4p$ z1l^~PcoN1&pHy%i{;W`kAQbh;yJq2XeH3rf_o=yC&vCA~AV9e%6FS2aYK?UTD5ESz z2|7k?=2EX~BJ=LH&Ufg*evoy{6*voTYK&*U5$ciu-Pxa~ah6G}FQ~Wet4=nNP=aec zhx8q0503`x7<6%k^xeRQMi4aABQI+4JehGGf0x?-dFvLcJ+7s9y00rxDs+{;JNKka zBRT?jw#FX$ZO;Dos&fc9r)0J%BJzZY>@X2233EwDMC2_InJOZ~JbAQ<$N?+O`yw*h zIzPgRwmu{xHwOy9Z55GCB63WBC!|dqBS!)g=j8)q3+ldz(eY%Y3T#0Sdy<8)ubT>6 z(A}PfU(uwxwCcQ9xBj-KO=t`18yd_CQ@^_7HDI=W(l}cUmQ>iiyjf6Svy*6_nu^U7 zXO9{uc7W~av{q%B&uZp3*_R-M47gqAxn{ZE`jHHRF7sT|suNsske>oq&~FpInrqi6 zkZ1^0z_+49iwZl=lk`L2E*(xZGC@CDI9g_2X0Cq6(;n|uKjqdOsb-0c-8!!nBKo5i z$nPjha7Qi37voUjDHx^lDBQJ#2=|Tik>S!^7FFnV06kTSh#RQF4>cUzGG|-OmGYvj-7ZYez$H$Do3m={> zGmoH+O#FDZR)~TICJGvuC}?1!pn-{k1||yXrzV2M8i~xoVo^{(_X3{+$Mtt%EmkrT di9{L-;D5!@jy}FfIEMfL002ovPDHLkV1nL#>Q(>% diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/outline_fave.png b/TMessagesProj/src/main/res/drawable-xxhdpi/outline_fave.png deleted file mode 100644 index 3bab4460b203e00a78d6e6f0606a94f8132fcf17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1602 zcmV-I2EF--P)xVCt4)1TFvJBR5^b;xED|;(B(NZKQA0JCRQU#eQiJ@yQWAR(->(r7zx$Z6pD=+#*CgX`TTO`^?fsQZ)JYTN$K1(bI$xb zb00JJfI<@L|M!{=sI1&WVzVJFgjPn2u*g9tD-7bEUy&CHdu!JPP`X zXTPZAP0%JX-@ehvo1iZ-WoKxLpRx4MHxX}3Rw!b0PZ2X#ZX@^emqn` zC%ysjpuuMnz>j3-0Q^997Qh&Q3pRmlR_rSgw1GCw9tN<8ewRYl*d(Rl1ps{&)O#Ml z`&GuiOu~)=7y&Ryn}VaIPChs3T7?kZLWm*7O?9>Gs`3iFD^OlT)bCcGPfD$Ul9hZf zgjnP0wq^~r7m8LJy=jAHaP8ZuHP@ zf1yw??hx1rI%RpK9H;Zp*^-m~xsr>)gmvovxwYitSXXk3AlTfi@96V zx1OS(Z$YIU&;;(9rDAqz`gEYwH-wPsj=rR~)ua(I@Ad05kjy+GFW+AAwrHYmP{)`0eXL1>$Je}IIA=GCzPcth~mtyZg5*L{T=4SwW;@VKC zO*&hCrG?#6Zm05C+y>y6vRD&T?o8I-DP7By{TVPG2N#da%NwBty_uQbQ)DsWV%AcA zK?o)2BBpF4vY5KKTz*~%CFlc8*-)rX7~tY^`FSCfppP+SUx(_10WL0=pBF+2`Z!bO zXOqhvE-sg!7ed@N-38$1va)e{nJg8H`uhw*mb1^H?Qy1ly>CH%Px<9c*_Rge+5!9ppv^H}8`W#K@a6L0@~w&( zf}YU$zeq1|y#-)yg)!$+{XuF^1(%0+L5(<0`P0m_;?^Bk2_gC{rt|>4NP9i~9I&X< zN9~u#T*~;K&igs^3X}AllH*SaAr4uHG9`rAsEDzVj+;0{@rw24F#cEaENFwGgN<}W z?zIp>vd1#s9?SN6DSo5kctc(VU2NGw6>_Vh$#F(BDYiIVSe)l6&)u4s7!g9Ob&OMP zYpESqTyE*C^zwa`clpjpK1Xk&wMpCWJ5}^jJDVJz&nx*ZsyZA;if(Vd$fyvat;!K; zvNnoi!g^0Wt0`X;RlZj_UDBCJA;i1I52zwqE5)5G$z_`Ia}v{5(9r)oqx^XFj|^Aq zOOdPe*8v!)v;i-lCMFVzL?V$$Boc|l)dhgR0hL)++i+;~%m4rY07*qoM6N<$g85Jg A7ytkO diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/outline_pack.png b/TMessagesProj/src/main/res/drawable-xxhdpi/outline_pack.png deleted file mode 100644 index 576d80899b6d1d894fd9bb4f401c70eafd53da8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 751 zcmeAS@N?(olHy`uVBq!ia0vp^At21b1|(&&1r9PWFm3a6aSW-L^LCD7p0J~UYrXOz zE9(st_oN?X6>2U0=CQNMd?%ax2R6L}tQHNmj4D%7WEGFCxgosJZ5mgmgw^9uA)&iO z|4pu%_|50Wjw4O@_hFrn(W!|Ky#jW&5D@V0snr zgVMxb?b*wwY}r1iz9LEHfYFOX3Wd{qGgfVsstS7Xn7PwLW@p&(SUz7@ zAU{h}PGhN=_K{ay$6K?b&TPKt>|I{q?c=+r;A~2SdE|1Ng$p-c2uROZVQg|mQtA~C zZ)sbbm9z8Qg$vI`@ZJ^sm3DQ#mw#sa|J|w!u3jiz`2KI>%8sZ#EFT;zeY4iI<#E+M zXRx|iVzDLj(ez)-GHR!8%zCtXqtvcRvF|jtv{e-B;u$zSu8cmMziU$NTBi z{(m(ICr?*P{mR%NajJDM#GyUQ7w+!r^Jb9e<^Fxw`O#dPf^QoqBwrWaY9;x4Y0q9e z$D>I*4{dt6Uqfv5#tr7;-I2@x1U^`O>!U~R<-!TiPFekp))PC-xYak#W>(V1lJnke z*Dh#ADIQI_X1;XYhVPcs)n6=`(7Nx$tz|R!G=00dY>Ha`q|FgMN0V|PVS_EmGFL|U zMDGZ74))bPn$#|mclAQZ=PN~HrwlC^o5YipRVuDfAadSJ^SB>vox13 zTqgB;%Kpvo3i>zb%!u^FVdQ&MBb@02d)-UjP6A diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/outline_send.png b/TMessagesProj/src/main/res/drawable-xxhdpi/outline_send.png deleted file mode 100644 index ed3e8803bd23a2e53676e4e90115867a97eeebb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1468 zcmV;t1w;CYP)2BNA%IZr*K^H3{C|be{Yo#Y9W@&r(Iq#V{XU=)wvpYYSFY}%=^PK<8Gc)hp zh(schNF)-8L?V$$4K1#Mh=>+F6_^Pe4;%o#2lfEpj8vgpTIx$SHe5!eQ7ue@L>HPlzomB7O}?CAwIRk_xN7W6yd!~k}g zw)O!VDn&>^rzCVXPXK#?30CYgfmRQZ?gw52Uax|%X@WWgBTTIPW!dwx#PeguG z-brGkeNRiTX+j!fJT#rC#QmD^tf_IUfun)tz;1{1SJ+PLDPVrqf^RfFf@opBO(h&lAtF1qOfL%`mGpw*_L#~Ug zurC7h3b3UZY?VJ>alO70Ty3$4>~?GlxVYc+yV7EKO+FhjJ_MH?XD*!?FnamJ)YC z09&$P=2cGtt_FUr^S+rPy2s9nbu`G<|1+f8PgdOOV973@6jq7I?+(pCU)C{f5rUfV zrDA01gX}tCtz-MT)ptaYMi!UHF22=raiFpb!JWWi*3Ij2rJZWLqjU>vN@~7R+CMZ= z4ILWh*qWGzndn*GD3>>3zhYov1L^?5G)eC`2)jc>=9TU8h8L8$nK{xc8e{LdK&M@7 zOk%ce($*Dfk5XFgO6h*o#5J@wtZ}HVKZ{65SuTHgf)OWFNYt?+(&ZrRhB93Kpq)Ca zWkHTK%jS^XykXX^KCY8@r|T#tkD%Bovs#*FZqftOzD@&HCA=~oxFKkc2`)3m!CgY~ zr|pGX3v33)iO43!=0EIakGkZoq2B`g^B0#h<83eec!7Bg*gXP|*2EuSR|)EpS5SPm z^8{o@1MTSEvMa4g}>yA8@V_mdmSZ;`@P} zX)kBp!90jIL^6{Nm*h;hQCtT+sN`*GXHUwU>%Zi!p_eIf+F#OUr_G)X(8R>LdRNeI z80G(zy2|+L8UM>Gt9+}j{Khcl#<;_kbEg2w%!DfqhlG$n3NfbvSiYz@B= zILqPL&G!81juPw|hOeM!C~=<@VAmjvtdM6rJiE=FX~=nd9OWA*jhy~U5Izzc@p}nwn0Yi?TkeUI!L@fG!ltKB9TZW5{Zm3fPVmt W9&HuG>e{0K0000kbnP)BuJ1T zL4pJc5+q1a_$YGqfMh;9IT1h)0G$Es0PrP%Ir$8zsK`l~9g5IA$wcZgF^@612@gVO z9xw>NT8rB!0DO{m~p)3+Q(z9Mp5r)wE z05$@+2;fHm9byQyuZVBmoFNRMivjcjP#r*f09ybI_8jOlnqvp#5kC-6zicBdWw@+K zV*VvL&QnU#!;mHom-E97=X;c;w8@DyV?P@@q%enMQN&;uXzZTM&^f8mSx~5ib~D_i zDSSk-QkH>MHQ3C&`^Opdsum)lN;;AJ%R=fmBx_|6=roP3O9tIb8r^AyN~n_NB#&4~ zEg{(`WT00ycBUG1r)qSs7BZnq>XH1xLhA1%+Xf7Bg26^*gMMX${)9p%R7rJ`8!V)r zC)qtfkcTyG=Q-NUGhD=iCRE8CB$rx9y+-l{hm8)JaoLp$nNqCh3!TuEyiW2zLnqbo zDUS9nNgfmZ6#;#&(D>SQyATRVysumC)^|vjx3s^Pb%cGnP)Mw;C z50By-p5scPMEYIqa||txDcBU$6yRtNq(1HVB#w$=Ut{P-nOKgBYXB-)Y`h6zigFpz zPj4BL)KGLkfcs=pJSsM+3W1L?^a6ky0fJFu;xQTMQ-l7=w3oqI07C%0Zz1*r03!fg z_dq~8?gG$Aq#=ODBF$v{uM@zAD*e>-F^2wPcvRHb(x2o5j@&X+x{^F=dHlX2Su@UD zQX|!*AN>sz-4q_2d;vy8XxWR;#5o_fSll;SC|67uGXKA~t#Am`BTl+W(RWj2On3_y(5P{TY zmX8XBL!uMLW&?@KgqbcIaT5x8S(vbuWUC0I)|NVv3FD4?xY5|0UiUV6D8RLKYj zsSP8Ls>aK;7W)?i)S>D)$Q%(go?H2`!`6wY-wMSa4sETn$!sCG8V*0&3B?o;|(CU(eL38YeNBe5c{Ue68_X_O*?36M{&JY)&cWTNe7estQl~}p} z_}XBziA)T4DRe?xXpS9<$=7))B7SH%uZEq?QqPJVaS_^DbF3uB&Zwf^a{y);&Q}Jo z3c&anW4ML52z^v@Y-dcqQc!QtR{@L#a8q+$^>sdgxq00|m}PpQo78COF>P|mAjgiC z)s`jaWiD;1r%6@L$YQcwq9cHHlB(&jO*Y_`hKVU3Y13nxW7}i!|~u9lA;e z(AcNbI0)^oIhM@}X`t*cRe9zW`MX$-2gP9-&rccjTLIW5Icsi^#W-_JGiHUEgiuSm zzp#vdl=ESheh+ZiyAU+S$OuVhV@sA%!no!+rdbzao zy&TJKQcy36Q3fBQ99wr%SSJ2b?aFC%RJ^AwHohl$Pre9kY6z;2yk%DfAVFbvK!39X z+FK?5`xwr5wv=rs%gmeSgHZKp83mg{?4nCaUuhQwEoG0tttzTAgpT=m9kE|_Za;|&==n5FMt2u+c?G~>5HO674X_C#1vDHgw_>7+<}t_2Q* zNnXhy)cFI3asN7Fdznp-bGAMxR288jfIT7FsEL(@Qs~W?B)H81;D3$@z`_0QPf7p)002ovPDHLkV1h)wvpN6( diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/payment_address.png b/TMessagesProj/src/main/res/drawable-xxhdpi/payment_address.png deleted file mode 100644 index 39f1e849e9dca70dd35aa90c05395de937f24b65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1855 zcmV-F2f+A=P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>sYygZRCodHn_Y-iRTRf(1j~;! zL2N9fVM>k30zu$Y400n4pz)q4&+3&yK`l9e9L)s2gUZwIc{_Rmk1Cqo6#AVrzfKvH~qG&Dn&rtR& zz6bMXv@41Wh|@P|d)Uq@*bDJYaL!l6T%rp3liO%X;&j{$H71QS8|4;q4$`!*)<7YI z8H%E5pr$ofCgpzB;GGA4xxzno^ae-cUH@cQYFvo8fi(Cgt@GllMr1*@%U8hsPp}}O zT&^k7;IuH**sffO(uzSj7g)cqcBbW&?ML6vn%0a?q=Snx?jzh@xNP_vx)85V$9`~sgFv0z?_wK-)t_>j-l{*-Wv#&o8+C;?Xt7ag(C}q( zJwZ^T<|H)~qu3aG+eot3V1$jjLL0QmsC35gWpQoJ669iH8)Rv-){rVCv_aN>pvN;Y zwj?0wwt(2`P)nP&hU%P}O$P3nGKw!}#K&}7)kifsjJ;5-tDm<6frE+2 zs&QN1JY)4BSzJYw9RAHgaX$dZ*uxH_2}ql7L08gYtVF{$>@zZdG`LW~3DRWf94?r4 zq(Qq4;-SKc0}0SLWa!)-SSCCi(iH}=Tz7|8D<(r)QZ%k8hS94E`7uMlAup_DQ?wm2 z^yx2SIR^Q9Lx3Lt>Q$ANnlu3GQS|!Kgdsq8>&^n-^u3R|>diyExWPNVDCW`{b=Nam z7ld03A#yz)U9`zWxHn0FVNW($Iy@Z_Q^0XU%msXU&9_t&ClI%9(ir-SAs_7!uk_Wp z`K$RbWUm6R?p<59GJBN*B2o03r3&As0_e<=aBWP{aL`OB(}^%W3;)Rws3)7nUe>cv zI2HjtPxDQh7L?hGR4#<9_0_rgM~qFsmzYLO?W@3tj>{j`rRBB6kGeg+LO0)6lpyNw zP2r5a16h>Rk&n9GIQuk3@H2Tc!}D|s*Jt?4f1@nR0ui;4h$kxxgjzaaejTB(7SX`_zb z?0v4bn6sc;!FSeb@oDqzPlR&37+6nFa94f+w{ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/payment_card.png b/TMessagesProj/src/main/res/drawable-xxhdpi/payment_card.png deleted file mode 100644 index 14d8c8087b737d7756adb6eb1da6b764ff72e60c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 692 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==Pq0fl1EO#WAFU z@$GDXufq-^$9g@&;|}zS3)r-9FPvWRRJMwHci^s%a!uU)ieH%aI^EUC_#>C*C2agt z>W{N<9dm!mr?};x|9&csDk&;(Xl7thU|{5MU|MLAtQ;`pj0!1O>f+s*=JUX%YzD*c}> z+kWQ{e{tulU%h?Ft-?ai(HUp9t!aKTFQRy!C|^?9hej1Ulk=bNWlv%_D|+_ZDsJPW zCmoLDFOw`@_e@S|R_;E{J6~Otb!IPKVSoGU*WXd%Qc)#e|GQmQcs;F=?fIN%y_1#| z1Z`eByL9FKt!z_QYRG=IJbP{VEJc}Szv6k8xykVjvt_EjGp0-cdaA9#^RWW+ixW?> zUv9g)Kg{3|AD@xAr~`u$i;on$q{CjZmv_z=ewM4A{_b;XbMu+E%mNKOjFXQ!LKHBb z5HQG;VNq~Cu%wWXggt}E@2+g$`Zsb%*;dV3vHqO-+Lg;rJFX7dQo84smHeyB*==TP z@BVrsW>&}*Smr&KVIyxu!zOvdzmpBh>hyNinsvQdbm^9s+Uo@?rgcAxWRr8va9!T5 zBz@k%N3^`_#zZ?%Xa_$pmQvhy*)ecJ)K;~R79mWB1fj78kHCLD2h^9Z{JWpy$|7A* Oit%*yb6Mw<&;$Tt>jSp{ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/payment_delivery.png b/TMessagesProj/src/main/res/drawable-xxhdpi/payment_delivery.png deleted file mode 100644 index 8ed8b265545e1265138cf9695c2a147c2fedce2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1544 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 Cq9UmP diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photo_crop.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photo_crop.png deleted file mode 100644 index e043a15c27834a07e71920ccb8db7112e86757c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 755 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvNA9*t@3nn z45?szJKNCju!DeWBh$GF#tKgbN(wmi7({tlO=DR^6r|QMdWgs{aq=AyU7*PNkblE8 z+l_yd_50>NU2n3fJiXlJ_m6uwPHx(^Oo>U!z=dh^%{L<77&j*!zpVJ|X0+e_03JUL z`Ms)_AGThRa9LqJS{QHiA^noCH*sbR-bFvmJrVBYUf z>-iqO-0{idk=o;P^J*Lq#fh3Fr-gk}>D{rtW2d|+;zPNeg(%8=p z&*Egg+^?8~F?97s7oW7cu0H4b2IVKFYhOn^Kh6Bg%dwV`>vP?alX=k|H>Fw>gd?&q zDb8k;E1z&V^7bAhR#V=D)!XHR3%hlTc|U2k?z)?o{6u`OT5H3XjE0(p%~tOkYTPy? zNBmIIpZ}=x_;mfY^YNB*#H+uAJKM3Hoc?s>@n!GU=Y9P*L1cYTh>z#KJ)+gRVXtd= zqjY-rzfUcxxw6Uh()W*F|16*JeI*|glS_(%1CtAfz;+Q8hZcrHZ%1-C|0OQWoxS_5 zU`EWOzYjMUc6KrDI;wS`<(Y)Tw!3QsK4iaNabbdkD%*wZlYhQ@-};v>e5EK)nk8mq zt>w0_Dw3*4buQhWa7uDb}@q_Z!?Sak(Ux>jMa^2ZJ8G2hMxK^ zB{HdZ*HNbligIr+Uwtl`Cw)IIygw`;_Jc?blgqy@CQM&1U$fv%>BH%b>xE71-%VkB p`oDS8hhG~6Buj-D1tZuR^~=vB-mKo7p#@CE44$rjF6*2UngIFOK>h## diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photo_flip.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photo_flip.png deleted file mode 100644 index 79910ffe0c869d2f4d2795b47ef54af881a12cb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawPIrZ2?`LbIhK+*@W#6`pSe`ijBR)z4*} HQ$iB}?Eq(9 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photo_paint.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photo_paint.png deleted file mode 100644 index 316d25d81ddeeaaf0088bf2f864bb8b73819e806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1400 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photo_tools.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photo_tools.png deleted file mode 100644 index b4c955a4f5514495d091245f9b87d8ee7029cc50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvNA9*m3X>1 zhEy=Vo#oqiSb?W?cI25kdv;rfUA5lYeewpkN>Zy`uz})L=dPfnq&NJZg;!7K=H{Hh z07Ylq6JoE=j;Sxoy!d;w7>F} z@k_OWN~y!|eht05yBA6)`nH_gtJ${9XRYi!j#XEG2EOIw;8AB36i{F|lHRXS?Y6n} zft}cV*$c5TJ^^3Wl}-y5p0L@oVqS&Hf_Ln$j3V>Y!mkZ3VD=f%v4v8J#~?TuUh2>gG@l9Wu}BeW>xEMx+0@W^w%>+k(rav*_+L_seSx3x#-faGf~Oj*%NZjlkW;U8sD-#qsGLv zg0rK6fl;BaLt(eaZ7YLJy+W1+HLt@gqS6%`IXO>E)c!xAthUDQh1(oYCXarnh zx>e@y#v4z1CT--Zntw}KEHnG_%GWF`ZT)Zu^F52s+?U+*BX)0TxWv;-yyb>3C;XpW zCz@)dwEl^5%F?yF+jD{8st*iT#WT0nQXRja__r{Rf5C}4CP}YONh_nn%)t1+-haN%9gS5p^5?%6HCL7H-ahKGo#txC4aoh_|#qC`nKMQ8(5)f driQDrzDefd{@BX$WMFz^@O1TaS?83{1OUbyCky}p diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/place_x.png b/TMessagesProj/src/main/res/drawable-xxhdpi/place_x.png deleted file mode 100755 index 17d4bbd82a50688544ec4141778e289bd601aeab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^S|H593?x6vT4n+%vjCqE*Z*VzMk`(gpb0`HL4Lsu z-fP)8HhBE_zh#G~*Sf9Swy!Ue;{OMfo$u-57*fIb_UcByLk2u84;L@%^!ARv_diwe z!OOP!Ydk7^>@+_WSbFaAQJnMo&XVnKcCws`{uX9*ch{LW*`C|=;>#}E+HYn*b;fgJ zvu@=1Nv56GmWa5^$~0cm@!G6$c99A9rZ5M&(=5e-&FF5AIm<)6(gQu&X J%Q~loCIH4Io;m;k diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/preview_open.png b/TMessagesProj/src/main/res/drawable-xxhdpi/preview_open.png deleted file mode 100644 index 77cd8a5369d54530993b30ce6edc4cb38480596b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXoKNz<9ya#WAGf*4r7jd50VX+K2ei!ME@0BIVDj+nOyO)~sRGzoSPV@ z8?a}Fev;sd(RYo@L+ z`Uzy7S`1{qFuH36WG)9YW3Af7KiPh`yC2Nkxnj<&kDff%zkmjH9agM+`uK}{_S&_6 zr*Bk;dPgt&deMB(%oTnQjP}ms*Al+U8KPEdyTT{r`8y-c^^U2Ftjec){^SKp{4Ae2 zC2vEwZA0RQR|cm|ST?v%mpZdJ;jOk8W982j9gZdiAhNNHw~)`$7QR(~5*Wn{p00i_ I>zopr0M*m#-v9sr diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/profile_admin.png b/TMessagesProj/src/main/res/drawable-xxhdpi/profile_admin.png deleted file mode 100644 index 73be1d178b2642633b51264a77b7e82fb52ccc96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcmV-G1i$-rG8j*L}nSvr(x-&vdQ*jEONjUJeoo_Jt?|Gi{vUZ;5>>Mxl`Do0TrvtP3gxPvJ z&_seK5;UpUXu_*W#YBh%UI{`f9`=!LpNfTvICkQgsN!HV<|^a4irK8<;0k8F#CpsX z6$48#51Aq{g@>4>Dm*$d2Q-KSn8PYGUcwR9Ai_ANs<7CKiE9Ymn5`--`Y@kq2x~BR zR7kvs>1VQrFo}LlvkHe}m>u$9JLb3wg<2f*dwqa2wOc66Q05N%D_c789X`RyMMW4r0W)#Us*fR7SLs?lHHB z6QhG&Y^0SIA}pp>!=Z)_5{%RUGnEmqFu+Ll(Md>|P{VC<@vE}p7jlsxq;zzUn?_~D z+vKKG=}0iVyZp@=jZoT0t64{sb`EijIHp!!G++)>u7aSPPE3QmsKD_D(=_Us#yK37N<}x0 zo4lz}#T(qj5m!3ual22mMh(r}$1SW(Sk6B5RgDB=(<%}(usPcm@%u3~q2&PN< zKnW&Em2$@OBrzolj@L2W@`dx5`3jCNFyF}+wql|RjtlYe}Q z*{LB!xQ16RQF`&Z#!3xgCuWWO;~-|01~Hu@q}suA5@qZl)e&ZB5FcQElz-g7Op_?3 zm3w%dq*g#MgZyDK*<4_ehQ%T-kWGdB;yjsb(TK2xOuFSC3rQ6tq!A-Tj8yds zf`y#N^b%Fhh;jqdO}&C+GRydwnevTS_=pB7G-k}0qWcfm0O&1k

    oL0000At`~Za; zNQ6V=cww8HAZZHnPo1~)g{YTz7z#o#8r!eX`C|c zo@H*RvqFhUvYzL8WSOMI3UzLJ-fdGh2a{&IXMuedBRz{8^mw*On z$qW#{J=2jH)7-1Xm;(YoGQ(F3Q3Gl#Wp!+4=zbw=XDHTyE|B%IcR&uv0XZNC^In^126oEP)6W@SOV`9W0pFzF} z6nz0Utf)I7=I25(y>~k8+)ofhQVk(!*;9I_jf;1?(ESO1ONzy4Hs9;5D22o3-Dal2@ zp-{q!^rDws7l0Mz^|wM&oPY69SJo?C+NnD{W>rCIv_k5VJYMUHet17=Dix$-OQdY& z-_aAaOBZ!D2`X6&io{FFpgY#x(zA=x0nhKNSeK9v&5;<$ zmJt8sXHN1}-kfR|QiCzlUq|h?9Uzfieig{7Wq|!MunIson@^ z*iokZQfHmixKCz;O$lk=1W9VObAGAWeMQXIHo}&IRHqFT%eEoE)N?0QqdB;c_Ndha zYIZbdeyM+))JIy@5oP13iA1%d`0bbKg!b)Mk#?!kQt4jD^bTDk?U*5%+##d?kfW+m zkamcK_a8EN%Unpi%8(%v)?1dXp*@Dxw^kp?qz-9T>O4q$64F+FB$G;=&}R2i*RijI zBt3^j2;JTQY112tEA4LYzaH|{*K<%9$!I;KtQeOpH#;iQ2Gx02jAH@U)Y?c597-Kg*VIBttzbcjkdUgZcO9;MS*JBpBS(_Y+J7WErO%Q!`^#hdv2G4hB@d+WmHy7v zHK~{iFoA1S=4Y#Xu-e-TAq0z(bTAOoiT9v5*nFrvWTcGod?;sv))N3JnsWj$U}vPx z7?S~z-i0t@6oOJdD@M~c^HWNhR$RUW7@z0NsgF(TQmAw4>q-86h?D%efRlU??peoV z2xlGF_I(9UgPMs5L4;;v#Cf0RG^kI68MG>;()_&axd=b*)QO_gcJI=etAllSPNfyB yCX%F>CCwQbAj27HW*H@U%jfpRC`K{vcl-lO{q=+wkGyXH0000bqKan9vkve`lVV~t_I0b@tM1R&n<$wcp<_7^?n zA0)y$O@nmBRIeaoc(66B@L`Z{m~jjeVUdPGx?|2UNQ8M_4N{c_#~=}Ac{WH7EI9^= zFwLVusNI?oxkb)GXAO-z5P=Lq6*0WRI?7ID;01wWsXXm}yMf*jaM+>2y>X0N$%bT6E zUl`WmOZWVI&`^%2x>xYKz2!(bI) z?AOmjH`iF8NR$F^$@07Ejk7#s8($^n=vTdPj(1dIfitQ#4)Gt=c)&r`4wv~(wKln= zTA-EN>}{Qg3^70tT_i}*MGpfE@rbYNZGwcVLkIKhmS=)viokIu*tX}rV08>{y4;UTz6ChOyk<5TfTUNYnEo!0L{$d`bT~^hwCFL zMZ%#-bh3i0Up{z;DRNjba3}^x*~Yw4JkH{}saQA^i!ofM6^Cb-&mWD$iqQbC->5(TK@_QOqNG!XZyQ!3--57cgJt35UGUL=N+( z!mytr=D57zkQe$eTeK-0Z!wedfFCU!2wL+&N z;ZP(F@CoySQ}V+DTyr$5258|quKV)EK{j#SRn=(XKCV0&`Qs8ncWG7?Xkmt+iz*M3 z1kKT@3UPqv1dXX&BzQ^C3P)7|PVkAK7wl8{NU=;%i7`?t109UBP0)Listg&H*=d~{ zw95l2M)<}~?@6n2qrZZAlxIwY82Z#f>5WsqLdw9-nNUIxkX zgdBVOn|-PUF0o0q@?2Ey(9OS8?g#hDsMhG`4V9SZwCaV^%u>Qvk*Azey^-N6uPG2^ zi+Qe)*3Uy5=NaK1i>#8PK!F^qEHce7fAE_c8XA64{{u_g(5Q7yqkaGY002ovPDHLk FV1kDzz~le` diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/profile_link.png b/TMessagesProj/src/main/res/drawable-xxhdpi/profile_link.png deleted file mode 100644 index 10e20531f95fa0b729337d5d2649c71712123879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmV-@0)qXCP)}F zK&KycGE|x0_Dk~pJL!Cnlu90t$K&yMJRT#IY0@TQ#Dott*3QuRV8V!qHciT#iD}T~ z1p}!B$-K~|kxxvGKA$9zSrEV{eQH_dobXNxatQ)>rTM)p2oiuVPJgiK; zBP5{4L9W9;phiH*-O9QTRFZe+UYRndx8coDZ)}gbvi^O-E-_SwUsEkSj8wT+d<;#4 zTguQ=Yq9NA@pBe`(dCm z=2`K-@>)SZm)LDjPD|Jmxn+zi^2h(B$REdc`dWKpZI`rm>vxt$u~N90iqq@<*zLMn_yLk(XLtrqIYW85ju zA^g^%6PzZ3P%}Jt$H`s77=qM@HIPQkZDbJ@K3P;`(I#VP)*WiZyz1KwUL#}Ftj(Q? z9`y|1!s4syKM*#)ILji;cDkMl1W4#9|F?mI` z$3WOIq&g?Q0U?G}#JcvL;bvc3J^*15XMYV1Oq*sCpC$?6oOmGm&1hhX+qX=4wz140 zC4>SQ^8GtZ8hY+g?Uz4i4yZHt0)eo?c?h@c9uH=zws%B0_w_;$5Yi^^#SKP@X96v% zB}2t~pw90L0D_7)D&!_!sG|y0!;S#3!Nf~27qR3W=!#uYbOT&tSoemV8zRm#JyM>4 zaAaI_bx36_P)DyA;KbZw9I9&|tW$wLI$tFn60NjJ)Dy~cM}zi#l_KV?K=U- z?tti3H)rq}=iX`8xD)u`U4s*#j*47ohVeXEMoxJbQ|YElos+%N(*f9 zMHLR?xcCxmdCJZOhpd37gs;S@gs%v!{Fce{s57}lFU#aoQc_ZZ=^Lc;nviE!^l$(G N002ovPDHLkV1n&{7~=o{ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/profile_voice.png b/TMessagesProj/src/main/res/drawable-xxhdpi/profile_voice.png deleted file mode 100644 index 20a76cd02956ffe86bc62f188baaa23eb322b2e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmVwBBPA)muwj{bphc-|OW^hOf zol^2Av>=7Fm~KMQAk@b6<6wAs_i~r!?sAt3@4J3~yie|Z@4i103Te@zL#(xHdM6m3<~7K6Zg5=Ojue>P!~3<{sWc8 zVTP@ZA#BS212x29aa)_Xuxa=YbRiCl+S=R_HoyG`65`!T18E=)q=7V$2GT$p=;roA zJfQ}(*(5T`j*%Fj_yv6Dku#t#-GD!MsAwu)dTJii?#?5d&VbfM$c*jOQMdKBojS+} z&AKz7v~Vmbnt4Za*}S6L6S|kqfM%unb5hY2-A=BACEZ=8X?>6!yITyJYE?5vEvRi431DEDIyKECuSR=_4?_GOlHsk diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/search_date.png b/TMessagesProj/src/main/res/drawable-xxhdpi/search_date.png deleted file mode 100644 index 6753c4b888b468a7177a7b8e1725bf6a7befc4f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvNA9*rFptI zhEy=Vowd=A$x)!~U__Er;^Mun+oqMMNO0H6cxlTY?Gy9pQ7QYyAZEv8rY5xUcs+-- z-fUa8{Pg~*e`fo<%X>cK=g+b{{Rx>S79I^OSWtpz!p4Z6#Jrxh8x;yJ{qW1bJU2qV z)yFVRcyWbn^*pP6m&+gcRqzN~@c7?8pLEp!&Ej>+N_E_>zc$Z1`GH5NdIRGd?rq(Q zm8$jn+BO1L+ISN!c`sh>V-?+7xXxvd(}~J8Gg#)=yPx5c+Z%cHhS=;c%#)sTxX*|= z;1d5-Fw}8{T;;X-d)^es+&?@oG5GxSPoG2%?%rU1W8(A|T%jf(pIwS)nvm0R^kZ-L z<}Wi(8++8vc%jkf_)}e|YQcf}=&!=dZd;j@eC;lAd45fP+b%)R=y@DF_iX8s7j`dU z*|K%jk)E4N{yvZSbbaUZoL~DCWfk|%PSUA0Y`F5^cL6h_=4uZIE``_ftAlg;yiWap zn#QX6+SP$&i9o=eYt zo)|b;IaP(OoyxfO*4;n*X0MyIah`OI?B=QWsy6M``SCpO{ch_U@=wBcKapVdNLtj@ zW^rfAk@JaFEyrJPTP48la7p7Q)8w-4caFWQ7TIXEDX=_Y@tGGL^H#9=eSY73Joo*t zC5z=Z8l7rTm5rS`Yuc$KtmdK II;Vst09(~4(EtDd diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/search_files.png b/TMessagesProj/src/main/res/drawable-xxhdpi/search_files.png deleted file mode 100644 index 849304ae97505d19518773a6e6b74301e393c233..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 967 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvNA9**Lk`) zhEy=Von@OH;waKq-W#~Fql?SUQNT1IU3=pv_6}Dr$7T%{7G35hUk62nYl70&AK7n2 zY9y&aMryw>Brp{R!I_cXqFZocOuWIBSPbevG;&n189=JaWA66UmsoZ}NlovJ3m9qZfax@Hn;oT9;D&J|4j$3)V?7Kl~c)SM{0X zPhA;$TY}?V*#x_&HipV7E|s4j=CiHttGa&r%Iegf{2)UWry{{(z7yg5wrLw~&FXGV zz3*?^=8>WINH4oI<8=S2lQXKe9&uV#)|irXWiQ*7ze^wc=nC`eGA(T62 zp5^=$Ch?HnA;roZCTE^r5i;k8tM)vY?c>8w}9uTJTm$>{Fz!ft2#4fRzXM*SBat;+lA%QB65v-!fQ zUHn=mHWuqTr$-q4v|{pA=s%@4f%8e=fydiKQ|gTe~DWM4fDypy1 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/search_gif.png b/TMessagesProj/src/main/res/drawable-xxhdpi/search_gif.png deleted file mode 100755 index 581a6ebf2b60abf4262f41841fe84b17c29d6bf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1225 zcmV;)1UCDLP)!EGlTbM^ms3pMDdwtNSWAXtF4Dy&R?^4}62wR_gGN@ei7tMpm<-Qr@`$mWVm@LO zF2VaoSW8+PFc! z_f!gAB;RQsRLN-OH2GdoRLm!f*D*~R$MDKBUr~_cd%XHp7WCtFnxw+xO}x&iY&eV8 z8w!hBvKTpng}z{}Lg8hM-Lm6rjO7Y|OEDw7OSJ;git&}~_zmNJ1;EATCsrr`^%y_P zjzNqX1;EA6VP?t)H5h}k!z-o$xcIxyD@>6Eag1@Oo*hkIl}4aT7CxQJ1!0J!)$!&3R+0gPW|#|ezb6#y5T zEU%G}FP35S%Z|MmZ3=)(aXrjdAU0xj%8u7DQVM`epo;tXQ6$`>wPCs?4+cmm@(arxnMj1Kw2<+iJ=C#DEUVf4x$&tc?fln-2P zy1|Fst4L^K3}cP_F_jEPyL{jRKhUDcXvY|&T0ux*>l>8~-{SSQ!lRl2ypF0Y zIEvSKsuTr}Fof3;O&UkYcbtTxVI%oYGEXIA9w#Z3CZTB9Nxos$sU)mpnBvkT6a_I3 zF;N$dii9S*@RKH?C~!E;L^;}NQYbXh&KN<`BoqZPKA_MTDO%-=R#J=+PMV~mp^agR z8K8qUmNARz#3W+WFpFih(ZK-Gq)93o9^xE9h6pmim)NCADjKTT#t@|&VjERB^kJ7K zsi>&uV{$~7;{bK~7Y=>crAaC}>PRt2c!Q*mp5y8#Z} n+>)h5cMBYLF~nJx>OcPg%(=}t@Tdp-00000NkvXXu0mjfr!y=2 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/search_links.png b/TMessagesProj/src/main/res/drawable-xxhdpi/search_links.png deleted file mode 100644 index 3753a48b300ca4b291a91d37a010a3f3f8161825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1345 zcmV-H1-|-;P)1_%_5$?R zfUm$DFcXXecfkl42IpF>);+Ethd@dTYy!UnA9;t;b+85W^$%Y97bL;?;1(z=~g^w)!Xz?Ll`e)>k2EV9UXL7yJ$!Ghgf zpxe(B-HOwLoz-bTz+Zw_W)?}gFga;H_*n?#$CSaezY$j=-)TmlluMJ7CXc^^mVe!{ zddX~t5bRnjfy&4c1Nfc;URz^qYX&>-6BtAAza|Mh;<}>h;PI)~0aMOYJw{jk5&1;0 z8O-a(K=?fjOnKUkaT@CrW_FwGB<0|z*_g&MkRSLXhsx)UwvJ7GPY}QS5}=pBX&p29 zuv6P2wtQkYragSdWs~Wm%trBkMcr4fb76= zV9PPztS~%c8&jX{Yu^<;0?_iod_&fwd{W3@=x32bSNoK&FLdpFrTf0NUC|?;thLoQ zz60W;6FGFZ*ZTNEZxPT=qbVnRY`daE6j|i_OP|-oh+ZB!Kl%obub+S|TYc>-)gy{5 zaN6O6Rg&|y%?$MsFu^C5N_7}i+oZ0YK#{ZDXE5}tBxfc5?3FxC?Y%y+RI0frBmH(djAz&StG)4cY#bpP_hl?DIbGoeWp4t(xst#> zWnqa{*n2?7&3gJp%m#23xTG)0DgBN?W9*hC00000NkvXXu0mjf DSYwEC diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/search_media.png b/TMessagesProj/src/main/res/drawable-xxhdpi/search_media.png deleted file mode 100644 index 714ada423b076511ac28b9e142e2e114f33253cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1181 zcmV;O1Y-M%P)>Wh!NTNp0bcE21U(eLCFG17UZKWWHGT| zLs=-Llu|@yA+wOoEM$rm8xf5Zn?bSiF%0=OevjVK@pSGz?|a?%y$8=z|L#4{^PF@3 z=YP*R?|tVz)6igM3YY?>fGJ=Km;$DNDPRhi0;Yf|P;UiFd3QKCI5>tj$L8H`h3yTL zN~L!d=GHF_QCdMKcnyj+;UHXE>!(0MPmq`ZxZ!P- z2Xx)S((BJcVOW+*riVDeq`iS(Z&&uWjkDs68ibus%*c?rCi_WDzK}!GA4i0tKF^ z31k8V6bOWE2AMzs1p;B4K_*Z@fk4=1kO>q}AP}}06cA`cARbMaFP`fmvjL0)_rNj! zzVno8Tn5o8o^Q!hYQ>ViO5n7o&whN1llmo=3(vn{i5*3REgm7p)0^7hza2U*~W(4G~BVT5ZYu_mJx(@D}!3FY%D}OOX zhy>R*In%*?;M#WzyDMQ$-ZJpftz5nr!6$-8p4f4>ZQ?-lIryw{zfxXV zjz=lbDMeU{`WF!KeF1CSK~t8QcNb{8g2Vg1hJUM0ru+uX2XP4mp?yHx3mozr)e#+_ z{0X#`pY}-ZeKYSi{?uP0i2K^^!`}?F)$D!k*Tbeq-;>#nUp8UaWRqPoRFV4=Zm@j+ zp6gQ3;feL(n>)FflX$ zH%|TnumfxWe{>Q|wY!)0d{&r1k6{zd@fQ&bKIc6O6(-Ok_X);uk2urv5Gc#Hc{xd@ z?YnkFP?kT1X!CK`Ilq;w7N~pUaPZ^`4fTUz2ydwbI37UF$c+cBC=7-cc$)$ z)e&x)Pub@-E|yy>kd52-$1&V>HQ^v!TJsoS<|UTYImF}-TveYYO=_=7f1LjgRplTo v-4rkdOaW8C6fgx$0aL&fFa=D3|6PF}0E5vIKbgPo00000NkvXXu0mjf=w~6f diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/search_music.png b/TMessagesProj/src/main/res/drawable-xxhdpi/search_music.png deleted file mode 100644 index b55863d26f0401928053f40cc3f8ebc7f7f292d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1165 zcmV;81akX{P)Vu;H@F{pS^^ddQU5JixjyhubM z#DnO?fM~!&&WcE`>PbX!1Gh`mgMtVegd}db1O*jhhzs#6n3$gGo|%5>?wQF@1wZL} zuU^&P|Mc?SOIK8wnF6MODPRhi0;Yf|U<#N5rhqA63YY?>fGJQ`3Z#m4Hsj;tYpJ~j ztOjeqN>B-Ydhmkdd*FU5l^Wo0c^jhCfkWUaaJ4rKI05FDol2Zk6*vk;Kverqg41AO zSqR06Yy!_f-1dcptx1cN=rf2DIKT;<1@dgkX0Pbz2ZP`pm;)AoMPM^%0NHGuj&9J! zGwN@)pptAyoMSmInYZ-GZ6XinoJLGD=mdixo86*gX3j*V)Ct*BSc`mn%d&36Kfub3F*heP}z0->R5}VlaaSa)e`q3n43hsNI4<3SJ)|gjb9fj zagM>{mLKJ+swu9#*-FPClmgF%na6%{ydi0p)Tjl+p1N`n$`hiXZn9NFT3? z$|KhjAZ+e!1nP<3m9T?jj0>u{D{B5Y1lplUjN#u=ZHc?A#biAv>pHK=UQ;BCL!d^* z;1OhH)2kTvQWagMd}lWff$CLNS&XY&d>6WBGiB? z=?${T6GJC5VS)o@ulbrT6QC!Sc}vL{AY+{@Z{nl_oY+nV_qg(6XwcrzWX3EouhL>KYd@zMOr?qR(aF4gNdC* zsk;t51Yt~Kya!TH+8$<|JN=yv5*6=6I}Y zYi^F|a(}lIHksa}+8K6W0&%*w=H^_|J3DnAoE{*n^ZlN|N0_Y1^!^%{*uavRv|gaP z{JJ_;7Ooq~IWd!#kFG?VPT;jjI|trGQ$B`h6PU`khk7qND+lt|16LDHO<9u`vI8QA z9ohG}@*{trV~q~i8i~b2Ts~gt0Aa4Auf#RGl94e$#^y8OAY3A?;$8WLiigw+Z~+Vf z`MSev130}P^sS|f%Gh)c$>lYvH3Xz~qaJ6zDPRhi0;Yf|U<#N5rhqA63YY?>fGJ=K fm;$E2e+B*lz??1F1?W0D00000NkvXXu0mjfis&5# diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/search_users.png b/TMessagesProj/src/main/res/drawable-xxhdpi/search_users.png deleted file mode 100644 index 0c2a6980dc749ade93553c000c5f9e58bffe5b14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1070 zcmV+}1kwA6P)CV|OLAaUl{e+n>3aA1HNr76sn{BmP{oqgs`he2_?JMve zSg6%%tJoeqgD~U365ulWj2{?<&}Gmw(XK&g z>?pcg04^tV_X%@PffciM0oyU)oEh7jB@F7gHhs4zE58qc<`RA;>zJDc4#@^NXV&N= zZBF`EdW`OdfuEwww-}#yHAWwRzP2&fuq(DQ>u9EFcZdBg;G%B>^ffWq>|4_}zSMqb zrxWHN_|uV{?J-cX_`dHO^1g!=z=aSTo1;eSH-EaMKe zCgz+&6SFKF3x6((ArNoxw(*vp)nx3ktciT%VhFS&$Q&2rkfDs-4hhcU8$+NiL2Llm zlP)pm9GaK`;kYTrxesFq^aZS27IU6*d`b>A#@MGTbAAj>Qc8au{YAjGml$~8qUj6B zH~+;_Hk*YMn!5!^oAu3wz*!lL@lD_O()*zq{sLYlH2Dy7sdpl-0rZi^T;9LH(hEd_ zXlMlZAv?wRGjI>M3Y;?FKIgb5jX6dt(R3(DG}Zuifvm>Z>Cn2B@<)S{0AE%^jWLsz zYBnobG&%@82~dc>gIViUHV#eK0p6ij0ck6k;2Qtp(Kd_r$<@^%gy2K#5#zUmm(yKW zjIOH!P{ z>!Cmcqrh{ZC}Zx?TuH}B2GU)?gQ8SP$je&6-N1HJwmN}R!$ymF)eF``#gIqI#HQ%A` z0EZpn-pkBoawfggmGcjZAUpv``+$in-kk?JGB>~)(k22^73&Um{2=yPu-wFWsMyNC zzcUS?4r|#)F6H^41~OANJG0*?TAaQ7sMkoSKee~s_ASWG3xY2&&ixLV)+lQMtZCbP znt$|pu-dShVgGh)609jW@G+tsCWvu(Ha0WXlsxj_kjrU6Vm28(tmTr|&grvX1P|Z0 zX%|2HzcuWAS6trfc5Qnb@maOB1SK93Mt{;V8UFvYtpJW}ZCv?`zqr~;~hDxeCe o0;+&2pbDr0s(>n>3Pe%h7ZqujgiEtsv;Y7A07*qoM6N<$g0NrmrvLx| diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/search_voice.png b/TMessagesProj/src/main/res/drawable-xxhdpi/search_voice.png deleted file mode 100644 index da7cf0b9a82ed999d46b58f8cfd879d528884a7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1148 zcmV-?1cUpDP)Rf2J+oy_SygPMbd02qPyBy6&4Rz(AhtxQrLK_%& zsPT%}NwB>LIhL3XjiX{u8-I)=Z(*NEf*$qibkZ(dU4)3$a}g&lR)tJpwwb@dMwo8}gC z2GoGArG}GpD=E+#MY~`5h}P-k0$6LR?BNFi!Bf& z7Q^5wSXIO|VoMyXzNuKd^2@n8SJ#rcTYv~tG7(I;#j@A}vAT%S5MUvdKRj;b|h?8X)d5+kgt32${Uc}Q$B5Eo%D2mG)@$qDXAsUfwr z>0PF;LhAg=`Rs(-AZWd=)k#S0why&G1PO3_!Nnny7-Y^Va$oVMo&UsAxp7F{U21)C zcV{AoYf;FwI|v>O$xZy$GizT_>kr~ryVlPv2B9~K%hJRd~$U`On%VG15)x|DUy-f3@(D- zz-8AX6`Dm-YQGieLcU4lVJH0`sYFx$qPzf)fjqr242FPkl7|zT!8WiD>;PdqPyULW z;V;iPuXD=~sSfnI-tq)uvYU>~Ek#1u(#QeuHUUwjgnV<|0vke>o4a9}+7F(9Nib8B z5BZy5QzaEh?K7xc6ExYx_#Utq>;&?eBfph`pEG~(-+`Cl0eHsejKnHxnF!?S5Yhe- z4_*NnN08W;OkHcuB$g+E3Ys_qWzH|Sr8PhEQNRT9Y=b-rq<`pX-_uGu!+8?uwQ5oO zYIuRUe2cY$=U}w>+Pc6buy#!WQ@|831xx``z!WeAOaW8C6fgyf3j7B;W>zr2Nt?U? O0000=P)CQLb%qkT!$m0o%yz7} zkC~PBl6hZq?Bk}eyPIB@zKW>0yr;ST#P~4DWsZN`tjKEKCz|t%!4s!C{&lM(+#BZ7 zBb?7OFSSBYsv->@)ZE_*I#0c_F2%69*9iYXt_za#vi3_{D}+t7)2V&F=BlBwEIxIN zb?}yqVxK1usJkst7+axpLa^2k zYL5`_F)AW}Qi@6;_|OkZ9tT#$2(?7(vTRKd`9j)8Mto38@vV^DYJ*xYgmoU8sGwdK zlILttTZM3A%uo*q$pITwlMt?q8ET=B9JfKW2w|az#(l22@b4*wTvsy(Cp~ z)h>iN9-1lKL9zA`_+0B4EB5rsl*d&Ylq~<_Rm{P8@oib&G8wVon$RV_ZL+saJ`v+a z3si@YWqW8Qu*mV5Ax3juqmw+pO&(RfPlB8fvVuSj?ZsP_{GqX{wZ8IVw0QVjDKwq7 z32k=Qp4jTt0wMX{2DM!XH^dCJN=OdcpdJ&#+L)m#gyaPqRFM$=8Z*=}Az5O-WjQUR zB{B9>i-n-qr%+Sx*V0D>B^#F`eg*9w&F{vTdi2?J3&A=+s0_{sd3ivnyDU(H29M2J zGd#(^_`jxEE_99WaGdNqX<_Qn*hIc@jW)U*=4fY`y+L-QTy6J05W}9gO`ZxV3YN4} zo2&H^BdyWg4+c$}u04hq0{)huH}c)ut{MDhoekQrIUXTYljd9zCN)DlmBG=7km@zp zR;~z_p0BMCXpR7BzoS@u5&CV7#I1)VawjyO{`&p zvC!DDQoqGu42yV*YL0S>vqOemwDB3c*vKvBYuwneoEIM<%kuDGDfR!r+V|hX+Nad$ z!}{B{SVjt~RgGMDVD)mlQX`91??PIxMmii=J);20fi+r?hOoBM#n0S!`EUOKBl%Kw T-HiKD00000NkvXXu0mjf1wUG( diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/sim_new.png b/TMessagesProj/src/main/res/drawable-xxhdpi/sim_new.png deleted file mode 100644 index 2af617503d8f99df976c66d770570d220e1e0f21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6396 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/sim_old.png b/TMessagesProj/src/main/res/drawable-xxhdpi/sim_old.png deleted file mode 100644 index 23d68f24afcb1fd542332a4f444dc1bb13372add..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5495 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�PN*)plY#2GRqrMR)kR(jP^3AAv0hZXz=M;0i?0JeHcQ*KbvB;7KV}VF z!tX-8`38XI`o%+3+dMwC+IIHtqsFx=;G!W76_sWLT~9r~dvUQ4GE;@Z@hxsz8XGXw zWgjygprL4PObi=7xE&AH`=KP^t$li?41ee7toUY=iwLfC`r$#Dbh$c6MmvI4jJHV) zwB{W`bL8h0p0>qBde*q=OuZ7V>I1>1RAW9G5rm&sUDh z`?FENodct~?f#U3bmLC_EK)!!#W|sP+CZ`?Ov-b!!g6+~qFhbUNfWu`vhrvQN^hE^ zAb|ln%$AY7GDTeec~ZMXydCl{0Jbq_89gULZB7GmK&#}jXoP&Hg{=V&u3c&urnaM2 zpgH;z%gsS90lP>x02p7?D{4kG6@jR|Y)18|eYBE|1y%X}M-sJaNswG72~2bXA$4;GMfe zDVBP$ohd=;(PmWmwwh^n{~BcRlQ^OI&XpQugn?65wC42f1L>639CvWzw1lGzucW45 zJp-8-a0E;wi0X_%O&oX#=XFfiBZ8@*g{c8W@H5EQKMpb*dlMKU|9&v0yIb*+jIR1i zbOV~lk*n;x{c20z&F#3D)DV}Qz1G|~`a(e{k(N=KhQ(&4!mD-6_vjVdr+pf)q0aFFp#wWns{X+*- z)`whI3-r~Z66KA-TX`4|`3V5PK)D~!0zc}QhLjWe`{3sp0OwMr1qrT-C$OpWM$LGq zA4R=Ey>F=dTP>J%rdCzK?{n7fLJ2g&d6#8nB#)6CA0_O1heVAQ zz*#h2@*lgc+bL42GAGxm+sG>8zAot{Nq$FH)RwJF&j|Y#=+q9Kk&?V69{jz3NBmCO zjjTB6>PfZs4Is9&@1x01)|^vswJi{VklNu^YU1O1wXZ$t*`XS~#(-$aQA3U`u7|?;TnfH~D*7Gnc*uHDcY-uY zf>27I+eY6iPgr}MlA%?mLjgM0q}s!u-(z35=qdP?$K3=3mf3Hw^h`Y|dDS|(w^_C@ zU2{uJCfIsoVp(;Z#t4Lm$bx#}coZyUpRSgKwkH>K>uhuFnOYfM5P2h(5GK3l!mBIO zKk-H;IDb~#=ZVlfX#b>)Ac1=yZkT@rix>Y=cbQf2QXs8BS!`HT9JKW@`~;TH!AE)n zbP%GzL)xx!m+^h5J~f$v`czAU+fwV(k&6ZO-+ypfm|$sZ+aYlN=L!4?wVBZlrvVb` zFJ&w*mPYv)6mdA!ost|ceMbX{VfDAk&Ld*n&dinq9l4epGl_YNA6}mfkkQtXH02QM zy07E~)$OuzULfj6-I=3ucfcINt1Zb)7J$?l)~I1(C1T+46n3Cnw2FQ5=lNwh;P+Pc z(y%85y`AOI%Qir&QeZ;lv6bMd^FkNs8h`esc2ege<`e_sq_R&db%Bf$23RuWu_6hU z=zs8F*w1$S3$|k<81#F7I}bD95Zm*3nQ(i9)k7+P|0=KoLE%x!3?=3N{)LHsKcb?i#X={Ig$(?Y PN~3qv@J6+k!^8gpQ)x5- diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_activities.png b/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_activities.png deleted file mode 100644 index f89c086fab9fbb66b1f26a26a6cbcb220110834b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1203 zcmV;k1WfyhP)R6;@|KE(A%D6O_MC=ot9LTFMyTp#@V z@TdB(jPKBu?CmcWU1O=Gf zrNv|v;EBWLBvNAK&M-U|h#w=2WF@;~gz;Fgtih02xHAzA0%^Y9hDIXt1?%@1@7JBN z_{?;75i;Tkp;Fj)WBmPD@0h9;+l_g)JKj>JDNRpdx3mEGi7X?YEc|pV@B8R!=Flmo z_(q@Cjd-q+bu;swHlbO{<}b0Hzt7g@na#FqaF4$))1~QydOPM=<4ZKUq3zHOvaGO1 z4{2229!%9~4)C)qvc?N}JW-2h0^7~E#`AexszWn?bJkIwJ4-WXv>ZA^R%bgsYBL6? z(-e`>vyL!`)x5x!Qvg!dbRE}a;HQqtZf!HyB; zov?9^R5weo6@*<@a_93DN zV8R-d9I~_FUcA|FS{KOuVRvNw7@&Bz z(8_53nqCQ8i=;qG*d)B7`4y@~zTHLKDc#0?i~Iu3B44O^YlLIaDlR)sjzO!0*{3vj z(Bz<45c7lLAzsh}&5qIwt#K}oCuun}iS2S-EsVo@XZv(~uzRi6__pt6gH;>yiL61h z+2DAV*W8Y2)ol4vU)8IvQ3L2}VS{`1Az)0r1PPr8g2k z&?2<;YLRBzWgIFrJ%1r=-1OWcyq!jj@Y9DK&7BZGZQ(o2@x_0qdK}(68t2`#th-^4 zU|p}*e~U&sgg0xOJVF@VmF&7Bj7NfHt#OCC6Se#Dr3QtV-lfHK6r#p;`4ZbpD&%na z-_Zas!&>WlD$UB_{V@_Dti=)B5BPeD-&2Xv1zrhyB?KkNK#_1A<0YR_6yOynJC%&Z zh;R=;E=`DFvD&>_tlVn9CNH(9002ovPDHLkV1i9ZO?3bO diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_cat.png b/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_cat.png deleted file mode 100644 index 58f1412c5598eb37df2a3cee84b22afa35467df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1457 zcmV;i1y1^jP)(29RTq6J;cc!77qvIu>voF#HW~aYd(}CH7uWUOXtH(30?TOmP5*?v?XCNoZ`eK zI9V>GY?JafOQ)0?2r-dJCbN*^6q)D=dR*LbuLhrv?;SsW_x&Mv|J~~q0|pEjFknER zG1Pa>_fKusS>O_%R}r6p&p6fXp4H+#jb<9FG7g@TJg=u#vmGA?MU`_sXMb~zh=b#N z?>msKZc-K{a)w78*kVJXbn3mOxTU5>E`!`27kHS*~-jlZ}XoaFLa|Tkj`Mcc%MwNVXamr7=mHCMu*HQPuk>t zA8FHWw+_3s`p~;x@v>H#cU)_D?B!FY>y-RddE`@OhNRWR=thNWZFX=z@|Z6~H_AOB zS!-zIQ|)odW6EPcjmcgOptUMAK_><(Pz{+I>I1JB)?J?d5rRwWVU6RH5wCr z!WfO3z2FkBNiK_gsx6UpNTx@hFkRB-zxL?#r6`5#^>kbG3AgF#4I`rzPS&o=IuAM~ z`h;UVXr0WjRYfU`_qOD3CPbey!Tq{i9i?%KR>|4X=TvEuEO1!lQ|`x-^=hIYxLNX+ zk&(|3f0E2m7X83P9g^cCpU>GU`DXMBwN^@g5cy1!v^g>kz+}tqwA|$Ag~^uNX}QT! zz+j6c3zS73-;r!o7X{R7k+i6fBGhYZJVVQ+d zzzvesDkG0;B!5>M1vJStMG=~0nxcSfB(JHAJf=xrRTBlY%d|%k+GX0Kfa@hIRYo2c zO5Sv?D_rG>=th&w<|smw%;wm~5w7xmUo}Vaf{MuF%aUDo+v5?3#Xc6wEQ%s5lvx!2 z=P--x(dKQ*AEI|o^dnE}X^l~_k9sYV7WGktdM%O`^~z%}BdyWXCO0`T4#d~Yv)pEd z?o=7wXt2UgD>OteG+1G$6&hk6mF`q%v*qUbdUWTPwk!0uyEGUSISlh{H=1U=%IK9r z8r*4>LOc8-GIq#pw@tD_dE|1Djgnm+HY{?PBn|D(NsGa+v62 z-Q63x+#-41)#iKAR(m`Z8FglvX^NVN2uIo^xhFz(^uiQ9Esb8Nj!@xs$-IaNHKv$p zmbxfLl?9S5?y*dx}KPl z2vr`Cv`N+)9i=hY>Hed;`KqE92B|hUdZEgEJ>8)?N@0?vdRpa+amXCyuR3LRTWV6| zak!24_oTWwWQLimLr)tW9=$U{mrdT+zs@U0t@h z&)E1xoa!+xGIwZjs|`MItMbUB!dRnYFX!1J(`11YltszZxX?4+liA@$=D? zmQ$_Q-A-%F_6>E08muA;s5C^aqfPg?ckR;Mdf$perOsko?XTTxPnhEd7dzWjr#aL4 zE;rM?8f{Xj*&{|r-!R4RZTHD-@{oq;Th1`o8xB^hKf2LZqJJ3YG&4PAi#(lHneS4Q z4UPV0h&m_up1VEnB^zw9O{)(yTjx2Cn&m9@Mi>+W1`HT5;L!aKLjhsD9QF7o00000 LNkvXXu0mjfMqbG~ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_flags.png b/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_flags.png deleted file mode 100644 index 4035cc52c514e7fc0a68265e9d1f990b4a8b2a11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 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 z 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%0Dr4s-!u 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxxhdpi/icon_5_background_sa.png b/TMessagesProj/src/main/res/drawable-xxxhdpi/icon_5_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..a9daefadfeea1db7aeefc66fa4e185af96b7015f GIT binary patch literal 139396 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%0Dv0saGe*N_qZg0C@Q0 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%0AmO+8wr@X%?FV%Nc?9Uec6*4C-@nFNfsdyPe84M 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%0D$;AK?U+QC`D&MnfLb;52Sge!*T=v12A^78 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�CYTMZqK(E|=**7^+ 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∓} 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 b8U;##)pa#L-zU@r2Ye~Ws>)PLnT7lh&YFD@ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxxhdpi/icon_background_clip.png b/TMessagesProj/src/main/res/drawable-xxxhdpi/icon_background_clip.png new file mode 100644 index 0000000000000000000000000000000000000000..5e92dd50d69182e01c90487f3575ae58dded6d2d GIT binary patch literal 9831 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 q6B??*|LwRq?Dx#kv(fgOp(H13X!$Q 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 + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_2_background_round.xml b/TMessagesProj/src/main/res/drawable/icon_2_background_round.xml new file mode 100644 index 000000000..5a8cc155f --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_2_background_round.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_3_background.xml b/TMessagesProj/src/main/res/drawable/icon_3_background.xml new file mode 100644 index 000000000..d00445b9d --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_3_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_3_background_round.xml b/TMessagesProj/src/main/res/drawable/icon_3_background_round.xml new file mode 100644 index 000000000..3e2c38cff --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_3_background_round.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_4_background.xml b/TMessagesProj/src/main/res/drawable/icon_4_background.xml new file mode 100644 index 000000000..b65238aa6 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_4_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_4_background_round.xml b/TMessagesProj/src/main/res/drawable/icon_4_background_round.xml new file mode 100644 index 000000000..b2ccb6d31 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_4_background_round.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_5_background.xml b/TMessagesProj/src/main/res/drawable/icon_5_background.xml new file mode 100644 index 000000000..9df3154c3 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_5_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_5_background_round.xml b/TMessagesProj/src/main/res/drawable/icon_5_background_round.xml new file mode 100644 index 000000000..7c2df592b --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_5_background_round.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_6_background.xml b/TMessagesProj/src/main/res/drawable/icon_6_background.xml new file mode 100644 index 000000000..2630ccb36 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_6_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_6_background_round.xml b/TMessagesProj/src/main/res/drawable/icon_6_background_round.xml new file mode 100644 index 000000000..deab3c4cb --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_6_background_round.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_background.xml b/TMessagesProj/src/main/res/drawable/icon_background.xml new file mode 100644 index 000000000..27feec428 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/icon_background_round.xml b/TMessagesProj/src/main/res/drawable/icon_background_round.xml new file mode 100644 index 000000000..444b6f188 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/icon_background_round.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 19c7d4c77..25e7405d8 100644 --- a/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index da6d7a8de..ec03eb7a3 100644 --- a/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ - + diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher_sa.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher_sa.xml index bd195b5c4..7d4db32b6 100644 --- a/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher_sa.xml +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/ic_launcher_sa.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher.xml new file mode 100644 index 000000000..f542f0ff4 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher_round.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher_round.xml new file mode 100644 index 000000000..cbd78ebac --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher_sa.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher_sa.xml new file mode 100644 index 000000000..d8044115b --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_2_launcher_sa.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher.xml new file mode 100644 index 000000000..1e6219cb3 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher_round.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher_round.xml new file mode 100644 index 000000000..1b1050a68 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher_sa.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher_sa.xml new file mode 100644 index 000000000..2c880e784 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_3_launcher_sa.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher.xml new file mode 100644 index 000000000..a14110d78 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher_round.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher_round.xml new file mode 100644 index 000000000..4503bc735 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher_sa.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher_sa.xml new file mode 100644 index 000000000..4974cb43c --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_4_launcher_sa.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher.xml new file mode 100644 index 000000000..536bd3f8b --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher_round.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher_round.xml new file mode 100644 index 000000000..617ba1708 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher_sa.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher_sa.xml new file mode 100644 index 000000000..d1031fb67 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_5_launcher_sa.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher.xml new file mode 100644 index 000000000..38eda1b31 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher_round.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher_round.xml new file mode 100644 index 000000000..509ff470d --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher_sa.xml b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher_sa.xml new file mode 100644 index 000000000..9ef459fa3 --- /dev/null +++ b/TMessagesProj/src/main/res/mipmap-anydpi-v26/icon_6_launcher_sa.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_2_launcher.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_2_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bb5802800631f86d1c574092740e4f885bea5643 GIT binary patch literal 7478 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_3_foreground.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_3_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd11247c4e293ae935542e0a869ed5f754346c1 GIT binary patch literal 1823 zcmdT_`#aMM9Nvu1D2j<_r6(M6L~|d_C8LdvWXl+JkkZ9rg}HQ)>hMJw5|T^mNpcwr zEw?(_P}V#YVI&*TG@ivKm+Z_hoxh=9aUA)RRMuOs#pyAxST6C z0o@{>o!_)}%L#n>_|YSvIxhT+d_jkiuxIdikcnJFLEyA=AjQpy9J+FVK#+1U2qI_j z=B-@er(01D`Co4am3NGqfk0aTEZT(-2NsR@X2OY@DPkPK$}ulob1YqPr{*^0S+q}% zafYs*gPu>IqP9nRw$s1e?zX9BtQ+3Zlbto&Qb&M_Ok-%qewIt%V}$OttIitT3*jGd zR9;X}ex0zWW4SeIHesxVxJ>OM`1w)2>7-yEXRwmyv0q`#!V1gEUI4>xZQd8ZkVQ2L zqOG*Jrz}K;F#^TgC>_715Tsx*KEEH*x|d2NQjTAZRl>AMSQA0YBwQCmBAQ3N9rAlL zQah9=F-|PhsV^XD&6%n+{_#>LawnzSPDw2;E2erBm9Z4CoJC5;Eu773GAw4dJP!3K zM}fJqiND=bTGJLqEI={Seuaa&GV}wKDLr?s-Mtvq9 zg&#mdr1XrIIfi?6e|%s1U_-O7pmREPZavWtPVHS-ls~&&`DLp9Lcjc_jqp2~ipZn1_Y4D2n z=_-TZtPMjJ1d$VhMXGyyN4@0VwRxTU&G&L3B*`tXu&0MDncPx(HyQWP2{n$9X7!}7 z-DC$@+fk@eZqX^^SKe`a=dRq-Fob>gOZLIMYJeGGQERw*$n%tA@sJt;IsXub0PT9o z+KVsBa}pDn8MgVe1@GD&NUvmcDSm>=|HWgl>MgOB_xU-JU+(? zdnL>wZ8*%mn9C?DOrkOK!z}(AwxXy~(_`nu^u)LC5x?lA)Y$8l7y{g>$x9*D>I;&2BWcdI z?l`#ru;X7aw&d)XvtA{qL3~2G+uX}kg#gEaojdjyH-L#aO(RE`ppiv zLECh>OSs?ULBz4t@_^xDbNZpRV+$20X5@RM)V49xN`Q-Vc&Dei2usMy{z0!wSiEwi zyV0OkoW<A=-JU~f>f%=u{Wj`rvu2cL&gz_kzIhu@mo`0Mro3Z$yPzaL z6F`mitzFXS?n)9wupNL?>9!-0xw7RbjXU$MzsiIC*#agi>yU>yo7Xa7=Y!31!n%2( J>yG@H`X8U)P`la4$tQN%$+v5`y5q1@)I6LM{Y zVWC>nB)VdVnoGG=-wsPdoq5jlob#Ojpyz!)@8`XIKEJ*%bUS`G8!;0vDs)#0N`*CD!zZX^ICdZkaD`YSjU20VNm)u zSt$J>4k;>L=#hn_*JD-5wyeCYwRQIJSpVFDjX+?kXk3~E`?(Xr&ObUj+6vU>u()no z^1+&Du#Dc1^IT@cbjHg+ZokFPuJInM@GYpjvaQZD=~AI7=|M}S(8o=XGKnP!<_n*+ zCJ!fk>)!KaNRGsdk{1s6G}bmDohAt77+lugH21035jQNON*cPH$Vq|W))9B3zG1nj z(7bXB$z}ZvEG_)O`RDQW3_rHZ-A3bs_aIdx7n5Jt`Mth4)7Porpotzf911*|CS}aM zbAm0sI*Ld?)%L{d7g0Sc!S&-@D(o-0BcK<2m!4O9w8|sfs;Q`{;semb`~!JZlkd=fqE9o8MXDkR- zR61LVX$@^rddmMxj`f z7y2Vf(1DoV$)OrY+2q0P|AzE~<*^ z6GS10H1wXaOnyA*T4s<>H+Wam(>p8dIS3M>uhRR}@D>G)+uMWNFIbeb%Ns^tP-o#m zMKs|14%o+(67e7V_h~h)QsaYdH7DE{jSo}(o_||$#_PrgXAPfpio^oQbGf3H)TKQ) zyrqfg>~7 zdx!suX#n>k$PW(J_Jo>Ek2tT8ulQIC6uK6lO;94uy@sA@A$5*}BX%Ld17&H_<3Y>n z;BF8Zf#h7Rs9&-Fb=X^etg`;)iFs@x@rnXkdpwj^%r_G&vZ*)T-Ty>yxs>teKF%Ad z8o49?^I$X46T^(dc75YjDyQ9JRUs$U0RpxTzcGIU^U6+YHgx#Pb$#?oluY96rCf_U0!O0<#)(4A20e z(-NZS#Uc?G^tP^0!x=ZtNu5b!>|<~z8gekVRk#wRNqm<}q=Em6K?D!8Bo7Z)F*}D4 zJg;h3)lbMex)ZKTb%2!!r-u0feC^DcyO@x6RvL7Z{TGn9cMzXB!z3QbRs&rHCCxD2%uu;5H&ucX{Ea);DOy6EM}J9Q)tHlsWG+0)p77@E&`1ew;2|9pU|(K(+OCxC$fsW9dEgg zu30vlHwo#96^ZE;D?_ve(T9Cm?jE+z|G1QD4Znv8Q{A|Up0}0P2dQx z1Mcc*B};f5!-_sn4E<#Bh(p)o$MM_v6BT=Z8~wSj@&CTXrk2i*`Fa6kuNXmGdt_vL LS7Pk}|Kz^`(>NfK literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_3_foreground_sa.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_3_foreground_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..2474f0e3036c7c3dd59635d7da01ffd0ecf0fc26 GIT binary patch literal 1928 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_3_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_3_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..60f76574e012788d7e1b6332b1046cde5f6a8d30 GIT binary patch literal 6128 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_5_foreground_round.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_5_foreground_round.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3935b72e1f6d7c74b3eb7cccf20e0c9ef1a7fd GIT binary patch literal 2048 zcmdT_`y&&I9^b5q$qAYFH3zFaPfjPwybg*Tw&BQg4r1QiJnjh9B#+Q*lUegvi!6^} zJE4aWvMGt1hBmTb&k<6ap~1}A<%;r&@-+e|4sx7EkoiBOXt_hx&6I5RJp%)SWIsX9 zbQCMAUQl6Qx!#~0FO*(j2DfSdswYx7CVbX+q<@z{LOle!hykz{O&&6X)e0fAgn*2WT;jw#AkL# zl%|ZEGb)GXp~^HZG#qo+-nyYkO(gU`VTX#2GNqogiyH3W(J6|g^spxI*s3}yZNdki zL6X<506P`n5<6FsuvLM9N`^Vd!&JndLBIlo$&Nx2vE@#}IO33u<7qh#mX#;xn~>ynXpiAG{)vG=NG zb9Cye)v;2N_RkiY~ zHj-)e@=UmbQ61brANNUd+Qu_{+K#`}P^$jaeloT{?gK3N_aM~kD9Nwz7ViU$($kc= zdu8{I9J9T-J!^lNsV_(xq>RLe8cX%I7OP}>Nn*C~_hDN>mp*D_sNRSiMhBE}ZB7k| z#%g3_78YC(3}U6myLG)s6}g;I;vyJUwRP-5np5O`~W?la)qmy4?t|m^5YAKD9>Z+JAYhpDug1p!?!)Bh@XFH$H=nZiKMy9 z#J-?eZ0@A1js!0#@g3nUYJq^YKX6uH zW_B%w82getba82Yn7hhV+ujgz)s~X#TYtk_0ivG>o7gRgSJjSVBqsb9c4j(zMAiEn z7eR%1hkje&Qri8sBT+sCdOE{FIib3-QhGGd%y#@@L5$_&tMM8&ag!+FT5xh9%wv1% zw#i!5NSP%Z2#G}nJ!uec8#V7>Ii9UH%wFnbe8>7dB2^GT2joEQ-PFy{xwogdle;ru z=2c|OVkk2$1xs)Lbwu6+D><7Ns$yUK$6G(OgNDOP@onAOkfLe;xQ)2k@VVJ}qgmC% g0SNwICRc}#!FTbU782pkq5btmo<%z|9Ye1D4V$uiZ~y=R literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_5_foreground_sa.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_5_foreground_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3935b72e1f6d7c74b3eb7cccf20e0c9ef1a7fd GIT binary patch literal 2048 zcmdT_`y&&I9^b5q$qAYFH3zFaPfjPwybg*Tw&BQg4r1QiJnjh9B#+Q*lUegvi!6^} zJE4aWvMGt1hBmTb&k<6ap~1}A<%;r&@-+e|4sx7EkoiBOXt_hx&6I5RJp%)SWIsX9 zbQCMAUQl6Qx!#~0FO*(j2DfSdswYx7CVbX+q<@z{LOle!hykz{O&&6X)e0fAgn*2WT;jw#AkL# zl%|ZEGb)GXp~^HZG#qo+-nyYkO(gU`VTX#2GNqogiyH3W(J6|g^spxI*s3}yZNdki zL6X<506P`n5<6FsuvLM9N`^Vd!&JndLBIlo$&Nx2vE@#}IO33u<7qh#mX#;xn~>ynXpiAG{)vG=NG zb9Cye)v;2N_RkiY~ zHj-)e@=UmbQ61brANNUd+Qu_{+K#`}P^$jaeloT{?gK3N_aM~kD9Nwz7ViU$($kc= zdu8{I9J9T-J!^lNsV_(xq>RLe8cX%I7OP}>Nn*C~_hDN>mp*D_sNRSiMhBE}ZB7k| z#%g3_78YC(3}U6myLG)s6}g;I;vyJUwRP-5np5O`~W?la)qmy4?t|m^5YAKD9>Z+JAYhpDug1p!?!)Bh@XFH$H=nZiKMy9 z#J-?eZ0@A1js!0#@g3nUYJq^YKX6uH zW_B%w82getba82Yn7hhV+ujgz)s~X#TYtk_0ivG>o7gRgSJjSVBqsb9c4j(zMAiEn z7eR%1hkje&Qri8sBT+sCdOE{FIib3-QhGGd%y#@@L5$_&tMM8&ag!+FT5xh9%wv1% zw#i!5NSP%Z2#G}nJ!uec8#V7>Ii9UH%wFnbe8>7dB2^GT2joEQ-PFy{xwogdle;ru z=2c|OVkk2$1xs)Lbwu6+D><7Ns$yUK$6G(OgNDOP@onAOkfLe;xQ)2k@VVJ}qgmC% g0SNwICRc}#!FTbU782pkq5btmo<%z|9Ye1D4V$uiZ~y=R literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_5_launcher.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_5_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e97a34bc8eca6932111c7b8233595bc785019409 GIT binary patch literal 7138 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 P^V6}lcCe~J+=}@xrd>l? literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_6_foreground_sa.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_6_foreground_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..ca91a39e61b0e18835a6eda18b083650d3e5e3aa GIT binary patch literal 2365 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_6_launcher_round.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_6_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..741f9c3e66ab06bc0a00a61301e79ddae440e477 GIT binary patch literal 6269 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_6_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_6_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..3167bbbcf58edb822eeeceaa8a5778381ce72dbc GIT binary patch literal 5518 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 Q3IG5A07*qoM6N<$f@1-I00000 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_background.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_background.png deleted file mode 100644 index 9ed2c32b6bc24da0b5098b3b8d2e40be931b613e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6992 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 MD5nDcDPtV?KM_HbbpQYW diff --git a/TMessagesProj/src/main/res/mipmap-hdpi/icon_background_round.png b/TMessagesProj/src/main/res/mipmap-hdpi/icon_background_round.png deleted file mode 100644 index 356e98457f02ed6c1790ca1ecebd01dcd028ca09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7884 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 BF?|34 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_2_launcher.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_2_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ffdb4e0e0bb4c195aa32cc8351948ba19e4b6398 GIT binary patch literal 3910 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 UgN$j$2mk;807*qoM6N<$f*Su>p#T5? literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_2_launcher_round.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_2_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..ffdb4e0e0bb4c195aa32cc8351948ba19e4b6398 GIT binary patch literal 3910 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 UgN$j$2mk;807*qoM6N<$f*Su>p#T5? literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_2_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_2_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..86aa47f140045960ffeadfc297ba1d1c93796262 GIT binary patch literal 3304 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_3_launcher_round.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_3_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..13511cb4c280a358f84f16a3514d82facc5424c5 GIT binary patch literal 3903 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 N002ovPDHLkV1lkhXUYHo literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_3_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_3_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..ea53f5819e1068815e4b89e6983b507127cd1ff8 GIT binary patch literal 3506 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_4_launcher.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_4_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5e6a2d40fcd58fcd149728c468e9c74300a23a GIT binary patch literal 4056 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_5_foreground.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_5_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..879615702122022905954c5356c9ece77dad2497 GIT binary patch literal 1211 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p{OJ#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1gS-^~7gB1R}eM^pkfkoBR#WAFU z@$D_!4v}=3lH=0pQNzixZ-Gj$#6_*%2=1sQ0i7)+S&0iX7AkZs zI9jUyQp9)pih{-rrg;epZjOq+Js(*Yzy4nTM)q;R=WW@?_TGNaY@au;GOp~~XNz-h z-uTT*33Om&6$zj&!NoG`?6a(*IXn~7pJW^qnEhHTA@JD*TNN?Q*m+lLZT7{rF=%h@ z`!ZQvWwp&oiFfa;SR$tOpV0dheT{4BxBKfJ@2KgW!qB~;WsbuCC1OifR4JNy#+-5VH?v*-Np_~wvx&D= z*6UP-AHQ|^vw}_Y8@2LJTY_`1uhi$W_;*g-dF8i~ud3F|zL}IP&zC!3SJd*y_tZ3t z)!!zbTzmA_l(+Z2dE{Pwsi-cq+2MVXp)!=o>gH3nsSh`=+8R+fclZ1^6E@fGOFw8` z`M5z(p>SG==EpBd_L6q1qq?^?{fZY=v%GS$@cWyHhR0Q+>0UQK8Oz#xHwDJ~%T1rV z;A(z#5#M%gu7)41mOh)_y_t96n{DN5Mux9vRp#vp*FCK*m-P0o^w#}Jv-LY_T?+V=PMmx^ykk2g(Lp6m5b_V0$d^UhaEGcCwhjg(*Z zz0Xwj?|!BFNsEL&@B4Z&Va?Aw;Xw>%Oo5S=WccV@!MTXb8|&39oj;v=5RrWMdK<$j z#yWlf-B-W)-uv>UbA5_j%9&!F{583vEDUzj8|U2HyEr3??Tp&T)hkOPgH5h|6JlDC z=YRUy74Q2d2FKk#33o34!R{^772Czq(6e0Zqs<4?le_CK-q{mka^EHM{WJb^pB?QS z#3pH5KIqT9J@ay2@LZ-jwjZC^u0GPAf9-0e&AzZchVGAwl0UQli*M7PJW;5;?{rby z?U3yZ+@F{`=X1y?T|U7n^i*qR^!JY?hhLZeUjBQB-P)&;4?mdpxc-_^btfU`WA*C1 zAJ2mecyuEEgsgofKACm%tu+lyTpA0gK$vpvVU(3zq8GhF`ZlQG@O1TaS?83{1OSAh B29N*% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_5_foreground_round.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_5_foreground_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d6012629a57e8cd05ceb9843d292b97eb05aac GIT binary patch literal 1261 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_6_foreground_round.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_6_foreground_round.png new file mode 100644 index 0000000000000000000000000000000000000000..68cb022f22a7d01ed1dc9863827aa56f753404a8 GIT binary patch literal 1519 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_6_launcher_round.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_6_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..2626b3d0c6e0b17298a4714f6be5790d44ec2fb3 GIT binary patch literal 3714 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_6_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_6_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..a801a206faff4acb6689af7b49711899c881ba7d GIT binary patch literal 3154 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 diff --git a/TMessagesProj/src/main/res/mipmap-mdpi/icon_background_round.png b/TMessagesProj/src/main/res/mipmap-mdpi/icon_background_round.png deleted file mode 100644 index 481c8035a63ca56558a8802db535a3d6ce427530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4343 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 L>q9=N+P(fCgepZj diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_2_launcher.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_2_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b88b7b5080d473cc022af9a346b0e576e6869136 GIT binary patch literal 11746 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 Eg0H-w&Hw-a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_2_launcher_round.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_2_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b88b7b5080d473cc022af9a346b0e576e6869136 GIT binary patch literal 11746 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 Eg0H-w&Hw-a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_2_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_2_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..a63b7edab4066a88483899c83a5e74e78b36443b GIT binary patch literal 10574 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_foreground.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..820f495ef84663b0e5980b77cfa7c8d5c427cd97 GIT binary patch literal 2718 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 bd?>#~Bx(%A8ySApdj=J0=VHsS@xS#SdWEXj literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_foreground_sa.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_foreground_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..15ae585dae2f89105d29c953b849a007e226ddc9 GIT binary patch literal 2807 zcmeHJ`#%#3AD*=?l;gCW(!{Y-OlUgDikdDIYc7?@oszjM_q!RU6RoM{&Ri>Uo4G7B z*H$ZRDEDiwEg^)>WsFz9yzl!zyzdXs_j$h0_xXIjzdoevCI*rcG7s03dM(t$*oOu-M!ee1WsM+}@v1Ogi=2G8FE{Hz`Jk z-X$F-K?X6eXoe@Faw#VzLN6}t6&*Sux*@XT8$>JcfuzT$15Cekt{SLbr3HTouMf+vX zdOP|}>?a)s_bKY82j3SE{S9-xfaqLfQYML2as1G;>GT+p;&pQvn!nC!wH9oeneXj_ z5_QED;y44i)uMl7!h&zBJpG=~QZYAshg-!$4UOz)G#W?^OigxGc^KBhfuKQfxtc=qv(gC^)xEYJ=~_R3Nm)v9&29*9Dr^S^al5&f3ynpw)-T`$H4Ln zUqYl_XVPV6R&(c@!<7+DBRUTd-+V%YkhrcR=~dcX`|}@{4l8~(C1#M2a8KM>Oo@4b zpH+3X`wI2#BOp4y1n1mIS?P;C8~XvPFb4Ly`q}A#W}75=^_lw9E5Ba2yfOoCL}xtj zbstRMZ8DQGcz2;hv;VGKHl{+mOE$s4S+uIwt0utX>Q2~GCbKn7LtHi;AWbGrbP!gQ z?>YQtvC(YBNgx62+I&s>yH3qQyiW01zA?S?O9I48P3jLI$O7cMM^!$TW*)vL89>}t z>YJ|Az?omj7t3ml#IV=pA5`q_8m4*;Jx~+gKZ+rcBhzIOe=~~Op;HC1m8y$xI8O8E z2&He>rbd<3;#zf32J7S78P^VOr`Oz9m2}}6JC8@aoRb37#@8z^jurJ8SIQ>`ea#-l z4DTLrOL-*s=Od$egZz!9xNYAJLO@39lncDwr1gbu!lm%6H^&#B5&JW_&4fZTo!=>r z$6vs$I6Qs=xEPW*y{KNCtXx`p_{-YGs>KnuI{mwz0YxT_!F?i2w1ECM2<&AUvOv zr3HU~%!^^ikh7llg|!#9Q$7U|ly3O7`uACTnqrs=b>#u#k|jVeEeZQNTERMmd_9C< z5$(q!Wzfr zo|$@OAoEhY^=erl%rO}-2GRAv`E@lI*xWdCfqt2i=7FN3Y4 z^gfv#x-J_nFYCMP_;5-9s!MOk;!#nGWWmeE{q@!pQ}6h}GMtDztTj#75Y^E!7Z(id8NBPt-MTWy{`JA=xmXwEZ=SBvx_ z7K+H)l$OwILc1!)y9y64=@@!wcDrK_S}M?T1Xy{XwBBN&zVA-4mI^A_F$uP}MjJo2 zu5mueQBF3`c|&9=0e};bfE5R9fYD=ae6~ z&!`M_&fSZ=weQx!=6fSrAOBI~HdJ!n>glu`@iI*;#U8Ev!Hr@Fxd^=~TL@8%Xw-@~ zNd16kwB81r9KLTuTz%+wO&V}@0)1)nAeQ9)!m1)u} zAK<7I3`QZ3|xbA(D2B8!GNR(6acE_}gW z1xH{ul^1#Ja`K);4;?k1kcsipp)ZL|o*kzKi4`a=f|9G^@|u}#m15J;3;BPm`LAl% bYBLtmX8-M-43_-uSLsAwG0~@Ac8vNL5zVkd literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_launcher.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_3_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9113f1b61149c2fe3df8640b78ed418676d9530b GIT binary patch literal 9976 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 Q*#H0l07*qoM6N<$g4(K+^Z)<= literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_4_launcher_round.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_4_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0d4d565bb3965a91f096c6a96dd7b55087e3f1 GIT binary patch literal 11030 zcmV+xE9umUP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91V4wp41ONa40RR91U;qFB0I4%yP5=NZfJsC_RCod1eFuD<)s^RYs+KGl z*|IJ7-T|8$AYfyY4He|L30bz59w}Sq6vMV}I}7d-^%Ie%~uf$>$4FkvsY7j`K2N z*J`UFvP+^Jmt8lJzf93qAcxDF*uK|UCfCh3-&}mnHP?*j*|X=^($dmlsZ^>vu5JYd z1r;p8+X|>_X=$lLS&M6TQ&ZFGnwpv=_uY5j%De8mYcF}SE;K(M9pXXLp~DGoH%T;% zvtF=d$&zu^)z#Cwbm=m+sHo@&BzhR|MYuWx`_M6~_wC#F@t!?wuDaTQ;A<(1`|H*dZWqxMlGYa@sAX9=`HTd;WnZPN$yg+9eT zqWS*^cu<~nj^>ipt5=`g*w}b460-HPOn7^`VS7tML&Lwomy_rdF8aoS;XbqcPYoUj zgJN){7l$G&FS(!57%_wP+E8t7J7EEPpXTJ|e0lgc6v=FS23i+Q_u@BYW$y?Z|e z4f}EVenExtNs8@522a!>D>4PHk0q}{Y^sw+j2Q7VY^a>(9RfzVpnkW!vSYK%tJ^6{ z8g|Q)#@({5xe*jlQ^<*0Vr~Eh(SDk0m8#+r8P~O^j4kUSle+en={*O^#Inl3+rd|K z#M>)YthjO9xN(1m2s^@!Py_3q3V6ak4P~xN6aUB~kMubI{PTZYR#tWmlppXE)6lYC zp4_}ap4qxlUfH=twlp=^N^Ef>u{s#l3hHdfxVWzQVJDG?p|wcgk}{drV}P97Yq*?` ztGwWVE>UnF_o>GpfBdK4{`R+bqwO6*8XY=h@T488BI@z0aLt-Erwtl3XeQ3-0}rHl z&W>&J(E7FV#O8HUw|^hlD=aZ#XzAQ66>-KfgUbd7xoz`|FvqY zOzS>~LhSqj!Qi)vo9PiHF(&F3+-H*sx(m^XJe1K}AKy57Fi( zmKV5iJh5@3+`eMDe6+i!jbu@jF=meB(9IS*J3>2#yyWxJ=}{TeybjsP6;<-Xfyc`Q zy+(=lA64Xs{dIM9e|O}ON8X836Gw^}S7sXO6sRkmlC*FkOC5zTyzoNxv}w~GEG{md z-k!ckH*A#KmMxbhwV2TwF@0|%$*sUE4`T&nEHg0;I-=z!8U5@W?hma_N2wi_TaLpX zaqHkO$i=X%gNDv_fXgvG1s{Cy!RSeoCOv}_ z&WN@=SX5Up*Zz5tyt;k6C5!&%Nvw}*O&+y@N3D?;GOWiuns`sB^Lv~8c4>a1dfb^> z5434L2Fbm{rpvf4ZExDRe^~M1haaAO+;PXP2o8E62j2;vNP6B;a2Y1QaM`kD$BY~~ z@+qwM{qiYj#_0RW;+1mu^3}4JBRUBj0eeE@Bx}N`$rGNHH1CWkY3WgIo#iyu@A6r+ z#1FF-=`AiSl$)!Mk=q8IB*iJ6f@I17>1c5Vw4igwyhryHCQ32=I ze zV;t(3A?d5Uxdy1HBdX%37*hg?YS7|)#NW-y7a`+ zqenjnwu)RZSb{aN;8$K7h>0EG zeaXtOZ~EOPePLwDpkRl!O3&g_nK}H+^3}>w6vzj)xL^1y+-&{{#DnexnmibwyM$DcIvIp3m(cizsehqdQwhDo%-C4 z*3oubj?XAT=ThT36Pc9M>}!$>mOU+ZZeo7(LO0xKKK1_l?~eo3A7A8U%!j169RWtb ztMH9C-WbFU7t2oXY(d6!<43FHZ|AQ@&4T8D)Fh(xz%+PQX(e%bp&iq`?#Xc;)gSRH z-fXa7!quMDV?7yl>M%VqKG6>v>VLE5b@}gWUk$ENWdz7Y)#S;OpT_BkHx=Fq6g(ib zc~*}kg9nJ{`s=SRpD|;`tir;=u@POX%=5SYxLkgJ3i)faz>ewck4IGisl+QzjAbjYs!{N^&B!} z$SLdBum3lkkT~@_1a7u1W~XyF71!6-|L^khaz0wffvewNEf1{R1U!S{P_il}@ET(6eYLq5_e=XIds4OjP-2$%3t&hciKG^e{O4^Ru!#cgLVFDGM7=1$x<9mk|Ni&o)AZ|=+vKP7*I6>jVF7p& zl4Kfo(#@)1K~K5#tuh+@2-`Z(SYKP#K@qnbuJ>BU9T zxF1WNo8d7|&6=m`F>p!;&ZoDQhS#Z18Z4+hWdY7Z9mz64Jmtt^__*}C@>2+-f%qHMDgMYiQx9!AGVbzVI)()W$?2BaQP^l1P`(8 zdmCl_-nzUuYTdhcKYr`ht-qN&cP@L#HK@41(2Hy!jy+b4&({11ZzKLNo8iTcyX7l$ zmO*1H22V;$)elLvLJg`Jtz_xo^d;3UuPZNT#3wk`X*H6GY1zEam&ia=`6*95)JGcx z(;4&T;OHYjW!ms1%b%CVT_mS>9}?uESLE=gm6eru0L4zA6Q(>cWls&d#jD`<+i&lI z9=tZNrC*y{TIGhh*mMED^k}JKp{AqH&9Kxur!Q3V(i4oE3Yvmh!}$_GovfSgL_Qm@ z`WOm%X$OT~dFnBb>H)9HM7Go>br??lkLYgS>1bc~$sB3s{*?t7z~8;~)?4{7$sMGV z2@shLWGKA)>Z`B9vXb*m_J1wdEX#K72?1IFt>~0=&`d)CDaOMj(0L-v2Tcw+h{xso zMHEm%GaJh1%Yow(d9#&a$3rulH1BJ@%fN1zU;v#vH#CV1mv3<*u}p7jp7YtvjH zGXXj5b;AueTmdYXdoz;eaW9E6%TjRNb=P&pw8AKOw+A&^4XPPi#(J8O$R7S)f1JJOA_pLs`EO^ zgvWGIrw<&}Um*Xu;ZL%2e-jO60A|4rGiJ;v2NFW=WMCm823jh_l=&8tn)7`B=L@$= zJs+?o$zbB?BvoK9VAk>9+)ehum|p|c1X0fXQGICp3YjDWYL&*)_!C*SaYgonyyH-M zf?U6QmdKe7Z+i!+PA1sxlMi*5XI1M~8m$%|oB8=>zCDl$c%!P{9e3REO<=tP5{A4T zfF2`r2Gs6tkzXv@YDx7V!2;vn386dC5f+GX1-g&e>_9Yl^UK$A=dnA_;J3M|G>^j) zqjG6$Az2Ym5;yr{zNj7h5%VOn&_}%c#tzUn^^wMO70Ayw&C7c%#fOV80|W1lDUblY zBoL{Z-g@h;(Rg3?IK@UU|GH$G)L`^`vNiE)6t->T6UVw*AWbjM4A%Jqb4f>l%L9#g zLm*Bw2b>;UG`-Ymd^%ET)#X@sAP#lCoJVA2mu~XiL1Sd*xRd0UV^5TmyY~T;@v0rx z{WAH)el{QJz=6JF?;iQrE%Q;&1myIDIdkTW0+u-s%vK>M5hRr0*mN6a!1sxa;i#vU z$RgbNx~L{yyN{6p=o7UtQr4|h{%oA`BWupjxt{29Jjc?(c7r&`T;}H z8#;YUO5~gUhsb5Pj_KZuUL??jo2rrTJSpp&>w_3gaUne4l54JbTq8*Ll%x|Mz_f5pk@Ksv#fEQ{( z!Ht=q9fi8i3@ZbFpc^yXp%4TpM;j)uc-(8KyV^-qNIrJ=N-P$pGW%K9DnK$y-}GoZdeMmvPQY2MQQ(PokWR#UQ|VY__T zuvLyO=d4Nt9@Jfo*5Bi@EQJp6P*ShI{`wef7(>${q4x0doiO2SPPI+f6J=-)kYx0$ zbAg~8g0{0ODM>VSBd~}+jw!)A-CfCUyKBG?C@qy4gNMj}8#Gh~m+=5{VBqmta}y_< zwh}+7g9u#S5lJpdv%G@;p>2!g=pmUMfcH^`z4FQ{qww*ah2$p0GoTP(UN}v$Suanl z?Gq?#w6=OKS_xKFse=GVFPuu-wPkcy?k(gxq8?T8QrxjB|8Oc_F#|Gz(S!) zw6nSF06ZS8n=clN=fwTuUb19Qjg0M*`4|mL{8Whl3fDfWVFzexs;a6A@Il&>iHza3 zjdj?IkSwe%OkYSk^T8wlkR)B-QB@3+W{FX{vVaHw5_xCQfbhcjG#+S3UwTT z2)#z49NV*-TsM5MTr#j)y5O@shXRfGT>M$*;-O3jNbj5{+(Bkx2i? zo?+cPic5(8Q(4slhv^UeQX42W5yaur+y`1os!%Q))L-5`^>~>(^+fs3kb#Gse0s2| z5vL#eppR9|7ux2fK6z=mQ~#{4e5~W5uXg`3XZLzEG68#RpJ$(ab||naoXh}xx-IXA zBLBF#0qW_9x}r(cM)bmDGr9CL)KSp}3-z898{FQuxJcm>RUg?pqR4}bW|ci91G<#R z)x)dh%3=MbAL^ertk4dCRy`%bsM<9vnrz~bGd>|TpAshZSw{(jfl%Oix7I$Okmc+c z08qn!b+4S1LCHGB^Bj6Qv&fKDF(Ry5RsBiLl2 z#_71qqQW}CJ3|pjwx5PP@qtPC*EiKmeak-Sn)O`-+zT+*YQ<+j0oJCR4p_De_X{wb zP8uCFPbiL#_R*^&U2zmJ8D~Yuv5Qoh;nYuhp*^b7Y^naz!jybtNME^ObU!(!GVf=< zTs&|2?B*?U-TZ~J4x8$V=~HD``GJq2%d`VLp$x!AGA;PX*LrpUF2lHk{~8DCt>~Pk z*ocoV&s^Cp*EFCrfSF0*R(T}#$FLM9An*CGv;-qzP*_sYA*p0k1orfD0&U62w<=>( z1!)=`=UnLDrC6>R)mN?>*+=@Iez35$sadX{zgQl_N8ouE`!7dM>`?M)XKB6702>5q zn|{)NW=QdhWdOi)^s&tji8{+sicjI|RkBN%40=Z~NrQA5KuN;pK z=qzm9(>RGjwinXN6>Y9a1*8prYF#oBpCG&WWZ}Z!f6@< zNjt>E-Iv;Zb`M3of#sT#=^21z<#a%8GkTse5x~wwCSX1&finb->4*=E+F3e%A;4Gy zq@-_`Lb+;mm0UHZk5rc({4(R3SpN2tP4d0@E2L&Gf`t7P{J3}0IGmOS#cT(xbNS&g z;h@(L-CxGey5_(e`P7B@!;=CCs7%-!_?6mhuw1JZZo&%rI)F1kxdMkKSd+|AfdAP` zla6?%Uj5-RW4ci}rgxcqcYGhYcvz)y^dAbWZ)}n)KUg8NHu2jw(1bmx2-bdc>;$=N zaP>i}UR1~BC&Z+}aYrx+v!Oj6?sagyq|)AOXVD{ zoA$wg4qsd2Im&FL2Yu!=4FYK1{bie5!FfY^$c+>F$QS$NOfa$>G(5O^i+pe1D%r)r zENP{%^M6m6AmE3v z08nU$kWSwSs8fN?f|PVC$jt%1DIn)l=z)}CF)$-g%JPwD6kQ)Y=l7VG~@`owoWkUA@-(=CPwg5jU zgnIzygE3Gy!4jx}6VD1u7UbcDggf3&UqA+MIXt%LR+Kvf&;iNW)H9A*(V8G#PmfZP zdAbNDxy!3f8qkVT)v?foW1J~)@{*T7kt<$bBX4aA5A$4SN6X)>+Ac@TS|GDF?4}1A zvfCcrwN&1kcElkkpS~<_Xb>Lu!YD($nq-s-j)`Z&ji#TpAU|=qbXjnoxC}Zgi%L<+ z1k1H{Q?dl%$0;_I;62kAM)nA8T)G{Pjzy-R6Q)#G$O(PQWn{Nf*|Wbz zK0@N3Ub{;kUA+T?k2d%}*oAT^YL%mVbw%>WNUzdl+(7%Gfp!4%7_alTfdhZ!E%MzO0cI6>ymr?X09PbX?^E_l@|P3 z)N+&=fQOPYvOAX{CWJ<82B;{ctqe4f(bl@*RT*(uFN2GCMVqroXA%P=U4vyE9n62q zLupn-y5ilgr>Bhm)RRvOAMdsem>$9wBhdAob-n0$baCx>yz}V(V0b;623h`IQK8DB z9l?eT8<=ZGuiUBz9~xQ`@g&t#24YzPhkpQ969lT3o;YiJ0Hg&csfNx|o-Z^NG-SvF ztupqiGU^p2Q*vsb3K`NhbAKY`P@!2*K>j{3{fsW!S1_D!zRH6U&a$lySks!4DLwj` zj*OxeKWxHWYlPH9X#K$tey|g3CO zEobO*>xeG+>Em=}Av;k*whu(`l8tGXOb$3(7c}7$v(*fo8Z5ykYI6=#68` zn*+V{CMETjT@O`l|Y%y0IF?y z?6Jo<1GHyQCh(1MJ(wk2Oj&v)ds`FB&H(7EI?0z1M4Wi9hcc~GWwSat&C4W+tgLO4 z(_UOE-W#t;G;JEYije-^?o&e2iaX*%!e^*TO(zm=&zBB~q zS>@tpX+)N|(j%3LXGTe|y0*zdJkUD7SPyMwHCo^@z6=d%d0no+zp}1broOmDZvJ4c z-pGOdpkRB`URmFW9MC6UO6Z6CsbkXGKEmm<`>!%!Cr)Kpa;B!_E7*LqlMkXGw~wRn z^`DkAmmm`FzWeUqBS^eImkC!K*)zDO&KM2GlEi8ta6;933D>lZ7yMW5Fys^EbUVld zlpl8!97SD6(BKFNq~xB(TVyhx8NIvBmy@99K(8O|$~ymhBK;JkHW>#l$HAUX!;B*- zd0;K!7rA=ys2uaiY2%%D-uW~LaR+EOJ2O@6|HUtUQG*|xc)^igo;jkc99h*x4SCYF zFU+`pGQ#V06j{S7fUkCC(1|6VG9fP3wTmKrkP9=8bTH$8S}w>h#olo0OH1VYA9j2; zyuZ`$fP;;&7Fu2Xit21TjvbN=!Z6~)EZ}02lF8jG<*cgQ<0o=D`~Lgy=ck<60Ty*w z`_Wb)k`rtnehcll0hRfB^YOhy4#-JIa4{!Lh@WIaa+rK~+B!mqF=g;yA-AwX$x|}1;FA6CF2coX&Kk)v$j#Np2!l< zI^h7)qHI-;_0xc(@g|PSVqSiHvDTdBX5d?4;#QyXuB8N|&dOTP9S? zPbLn?`{Z@Yp1m@3)?ED50CJ)7w1*2CLP_by(%_@9Z0fj<4y)V}JMk9;4M+U97Y2F)TIWIU<> zub}zJCq74B?}XF%z~eJ1c;T~*G}j&M1EDz!HdbK4Y+VYu!Dsh@p^06IViYG5{u>Z3ON980R6v2wZTY#INS1yhow`Q>fc^~yzdXzWF1bG?) z5KmnI%?&+JeJn||w(*em#j37yM*kl8P;arkxOta6zTSSjRJ|uZuF!+&G6zQ<06(0Y z=;mk(_P*Y~S{^$(W5G~%F|&Z? z$uegTV6wA;)^r)d57EuWvx}S)(SV8~x$`tGMH*S~jZ%m-URrc{05;%QAqW0hNeRs) z^n^{7`nc?n&wlOzHP@-hGpe4NOkVk2r}?3Fz)PCzOdc2#>yI0hu3V_0GdH&{07?h2MieSH`$E!dt2p{fBQt1)nI9Z6qgqr7+?%b4coQ{5Ca~khuw-?%rFV& zms$__4E_vx@Y>J`@-S#}p>+EJ?>sEkAJ|I#(6ygFFuG`YQNM_%Uo36#>huk`vE9mL z?vxXyBG1>Okh6cluL|D{VSntv0ZpKA0@*Ww1ZVJB(0uN>=l&dh0y{-aEQ%Mb$dx6U&UN{eR z0w}NVC9q+-HBF>v$TNXy9<2xIfJZ$^a9pR1KYlQsv>N0Kq`as|p8djP8DEin#1jGm zkfWNJGiP44V8H^8d~UkTp?MK_;#d0J7Ldk^oy7M8c`7;&r=ppt=fLch_418pHsFaV zI$K9iSVs711CHusK+zYC#g+l96Bm|+K&OFlj77;Fv7r){6E17`pg?l72W%n_LDU&@ zf^&J=Vx1-a#quhnqlf+n`EcZ9J&nVGN1i(I2sx`?ZxV60wB@jbA&6IxOjGKeW5x zG4mrQjF+$WuL3<6wrtsQU%!6+ehdmnzb`)&=9L$io&y1S7z*zVN|5|={LO%0;^)lH z$tU>6x<;J|yPEcgpefCu8EjNf<7|^Q9^!o_XwpnZW6-+uTTGE$+J^BkZqg}db+^kh z;9Q@#gN)L&6GFQOKBmbJ0Z*;Mn^SoJfBNe80|ySg5)a)x`8j9)JYvZh$w!NEoJLf* z7rnga%U}NTwfGBkd}k*IP90Px&tEi1`r}@KF{Urn5R0G1!#WNIj5yyD6cJ9orUPE1Rz&npycRlK?=F@btXS|Iv@MEkcbB&d6eF!^e`#hx56N0*iBUTH36Z3_$&pvw^{ytd0KuW*%>sln2j_)q> zw>8PCntjZ15XI0A$I`Sy4tE{tWHBo`Q`k0ey5h5m-iEB7d_w8Us3d66v^&2mS2oa9 zKJe-kBp!Z$rMeOy0-hivy5`>Hk{c(UkFL1lic9g!>HITSTy~gzjW{Y%%?};zfLNN! zTk+SD_To1&pF92Z(@(&+{szSite0cTUV=_2!Mge8`o_c~`j&KpC4+6fR7uE$cADXd zcA3DUSyNnE#20)r!wMBpl`+tiXN9^5UZRq&LxT7sT(=)JMD9CwI6fE_=~l_`f>q#M z{G$9Nc%K&!m&8YZyPIw#uGQd4Hn#0H`FXM9xF?iOpFX|ElTSYR0QQ74(9R3f3M76gzN4J^S=pd8ykgCN{;adky6Vk0-{i<=@;UO`J#q%g%vZW`uwbsIJ7MtP z!R2`9^iTL~>7{KcV@hVu-zB%cy;XMV2JOj=lg7>oOHxQ0ge@ak;185-b1U;exSNiCqj~;cw1s6Pk_Yp?6=LNq4`@o-T-oLz96Mr4P zB+f_5?Ll*M^YSO2c;c!{FTHd=_&oW3+M(HCx;-U%XmsmPz{1jT#(jaap%g#(-Q$4= z9{4*fNtdAAt_?gwl9$)i%Ogv6$B(iu1oN)glN&mL+@z)X zH9we5WjGX^H?*gGYh*9^Qgyd5!NA)Nv~1h9?a|9Gzx>C~J@*_R#W4Bt6V6U2pEf;2 z);kNXgG0zSXD&%4vu4fu0ygP8@ZNIHyK4E2@q5X0*4E4G>l@_N_4TrF2V>Rl2-##> znN(U-tJXF=b!zIJj!{mSP}xPM4XBW5_)^I90o@Kb+EoZIIAVVM^2;y(0GsW5XmYvn zV=Ihb23~XF~}d$#%hClbA7V*sz=MCBTFFF6mZ$vu6JG zJ+c&!yO-gILzbZ2f)7*G;giy}_*nC9lpN*VN(!U`PiFb0!oFBmM&qkhWAW{tG5D(N zQN6n0hd;PNb{zOXZPlt(cb|CTi8C?!eYx>b?E@e6XSV`2;%X9ijIM zX!E%(M}J@3vJYRreEI*xrnaixY#c@+mYP-Y=|}VpJ~Hw2l|J(UBxCTzf9{hHUlrm` z@a2d{Q+{EJ!7<4G&p-eCc{ocyjPEGd9L9XBDcIZz+rOJVdp18T+uwYmZ}gGA@<0)f z`u{Y^hu;ab)e#(BT$=b$y&vBEANKCM?|ug#Ui~#b#Iy(*YWWO0qy@Sc!p5)OdFP$W zX_L0i2l_&v4twGcSFgIAxI;Ltd2xz!q$L;rc1_h~mtA&pb#?Uwe06ptK2<&DBewJ{$1F zd^Xy1wYohoeQjmw)7|TFoBRd0+;U45{)lLI{ODZ;{=h_60GA6vlIwQv+*!Y4$Bx>S zD_7RyQ^-s-6Uqd7Vm;|`JLUoF;Y&P?5j+v0b$DOhHp}dboe*~p>E4dzVvl{avh>7f zm!5Fv@sfI2KkVSa9CpK524g>1_qNx)q*zRg)p!Eq(i5DGb2-O*`>>b)4{VAXeQ7&! Q*#H0l07*qoM6N<$g4(K+^Z)<= literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_4_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_4_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..89272479cd981b17870e7db4236654efc4799c28 GIT binary patch literal 9841 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_foreground_round.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_foreground_round.png new file mode 100644 index 0000000000000000000000000000000000000000..58208bc4aca933027b441eb77007da23d85d8edf GIT binary patch literal 2920 zcmeH}`8OL_8^AY6)s-MO29?8no0>Q@YVKv85T}VjCnJc?)!M^HhKdK#GH_^H4wB1{#Jy5N!^6(d>rF%c! z4Vf<^c9mc5`K6f566y+H7g;P6b_mT9iepx~iofHSEv)qWh9?jEE}PZe+F;uLY?A_z z0?Np%fd4iB=M&~#K0bEPG&5v9NrZ`l`5$|}Iz)Hy3US_X@`E%R$nZ-#n+Ve0uiN|f z&RVk3O~;^pGKOg;+9%+(E-TJYvavCvIDha-8jxh?puM2WCQ{~BM3#n@S|_zq2cMby zVd2~xo|YBrE%`wPpx!RO$lupIweddJQSAx#jmBo>X|=rNk}RC(9R-RkXvL*kH3k)` zQ-|DGT2E<< zjSUOEZA}Ye#zg^ysh8*oBX2mhAYErjg+_h0n>#ppsK}7gRfp3GMLFNB%O|u z^``~PVr#h&NvhS=kjs`9(}~{va&#`p+wi4tR-Up!ON%I5#*nN@EO&(u!=IWy$2b_T zo%dRyUFuD5_f%Irm1g|MlL-t7g>>{2P(61{SKnk!*1)5J-RqzeRhgf&EfBR)%w^ai zpn%go`+zPD&zlo_P{{iXTX^{;pT5ikujb%-)FRUNqhu3AG^m;Bjii46w&Q{>)6k+5 z`eb3B^GZusf*)HW0vQAWl2DJ3R`~5-mr4`0ax|&yANj&NswUSr#>7*)C*y!>A4eRa z&QFpo%f1$F`o+fg@})-_l_tH6g0}LYbqtOS28vH@_vTNQQ3si!qG&zq>msR8R)+c2 z^~yQiRzdfmjA13HpfE22Db`Ph&k4v`(@wd`)urh?gyqZ_3&FfiRzia#ovezdiq`$9 z*|Pi8uH$`@+%hsbMwQ9~@-B8@={D-7C$z2ilgEE8k^h_ioVup zm5uB_sdOKDjmG{(w-1@-;UCtzd^xzb5^u*GRg@n7UBdO~DEL{Xcij>)y1djx=*^nres3IBE@hWmQjSlq#JR^cB&6 zJT02CUUI~??PW#mar>;kZyyrd5Q@*V;|-Bj%$RA-8y(WL(*?-SFDQY|76nIKYKK@W8E_8qIAS@h3SyubDz?=QK8XTx~n&&>1JWlhxYfeOuO!?yB*gCM?j>Df}Fi7!t1@9j7~Q8@`^5zw*xSZ#>J6C+Ccx0wRpkOJMtyJMspF9vlrcUA2tmOrd?Jkb zrS2CNM=7T>5`z@KRxd$Z>dkJ&!&>VQ3@gjtmFd&H6o$)t2=l0QHVMsx3x^S!g=b6= z_4`I8s1$fS_WtgRubKm7%aoNARp8P%GP|op;OIjO#%dHybgm3N{PjHXSJsoM{3)Ub z`4I?<w(@kAg$i8U}tV6$fjik`&P>nlY=bXSMeD_QVOY5tOyt zMmIP14QR;q|ik`AH@!FkT-{L=IIRP^DXKw_MdLo(=V9~HkxmrkWa^zAfMV_U9jY$p|q( zpT#*cffh@pM@^&TGCc6ZPYb_K;4IfxuW9YKUDkg}u#x?HhAx1E z=JIZV?9Kgml4GKA(Fu)OZ6@S}2uW8cqQL=A);+mq#Ir%S6wzKq?-_$mT`f9EkSn+L z894X@Nq`4|X5<^OF?{N5XMl%av**7nOOpTejaIHfoxRc>xB$;qtmmfuzH_+QiO7vHlx8{spk68Zg`ztQtHryFhP! zKAgB!t*q>DrX)DkC98enbxAbhU{d_({W~EzL}pyvl*WexC<`D7EP!Vv>$~Ll6(r9M zFX6J=YIqoBJ;CKSxy@RCJIb$v@$km&p?O{i%k2STZa0k1cc-O`{_4X@9(B?NOhm`< zS9_M*Oj{Np9i58#w2?p*Ek4F}Wl)@PRQ715oy@!oSoL{Qv4}bwN-sY%J-~k++G^gR zaq^1AfV|3KFkS)1k9*KWg`U0eJRn{8PlZ(a!2^f=z{D2;GGvbDh9-k~KUVwSVM_j? b$|fl8T|oMg6q}xJQ!d=j^<3@Qpxgfeaj4{x literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_foreground_sa.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_foreground_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..58208bc4aca933027b441eb77007da23d85d8edf GIT binary patch literal 2920 zcmeH}`8OL_8^AY6)s-MO29?8no0>Q@YVKv85T}VjCnJc?)!M^HhKdK#GH_^H4wB1{#Jy5N!^6(d>rF%c! z4Vf<^c9mc5`K6f566y+H7g;P6b_mT9iepx~iofHSEv)qWh9?jEE}PZe+F;uLY?A_z z0?Np%fd4iB=M&~#K0bEPG&5v9NrZ`l`5$|}Iz)Hy3US_X@`E%R$nZ-#n+Ve0uiN|f z&RVk3O~;^pGKOg;+9%+(E-TJYvavCvIDha-8jxh?puM2WCQ{~BM3#n@S|_zq2cMby zVd2~xo|YBrE%`wPpx!RO$lupIweddJQSAx#jmBo>X|=rNk}RC(9R-RkXvL*kH3k)` zQ-|DGT2E<< zjSUOEZA}Ye#zg^ysh8*oBX2mhAYErjg+_h0n>#ppsK}7gRfp3GMLFNB%O|u z^``~PVr#h&NvhS=kjs`9(}~{va&#`p+wi4tR-Up!ON%I5#*nN@EO&(u!=IWy$2b_T zo%dRyUFuD5_f%Irm1g|MlL-t7g>>{2P(61{SKnk!*1)5J-RqzeRhgf&EfBR)%w^ai zpn%go`+zPD&zlo_P{{iXTX^{;pT5ikujb%-)FRUNqhu3AG^m;Bjii46w&Q{>)6k+5 z`eb3B^GZusf*)HW0vQAWl2DJ3R`~5-mr4`0ax|&yANj&NswUSr#>7*)C*y!>A4eRa z&QFpo%f1$F`o+fg@})-_l_tH6g0}LYbqtOS28vH@_vTNQQ3si!qG&zq>msR8R)+c2 z^~yQiRzdfmjA13HpfE22Db`Ph&k4v`(@wd`)urh?gyqZ_3&FfiRzia#ovezdiq`$9 z*|Pi8uH$`@+%hsbMwQ9~@-B8@={D-7C$z2ilgEE8k^h_ioVup zm5uB_sdOKDjmG{(w-1@-;UCtzd^xzb5^u*GRg@n7UBdO~DEL{Xcij>)y1djx=*^nres3IBE@hWmQjSlq#JR^cB&6 zJT02CUUI~??PW#mar>;kZyyrd5Q@*V;|-Bj%$RA-8y(WL(*?-SFDQY|76nIKYKK@W8E_8qIAS@h3SyubDz?=QK8XTx~n&&>1JWlhxYfeOuO!?yB*gCM?j>Df}Fi7!t1@9j7~Q8@`^5zw*xSZ#>J6C+Ccx0wRpkOJMtyJMspF9vlrcUA2tmOrd?Jkb zrS2CNM=7T>5`z@KRxd$Z>dkJ&!&>VQ3@gjtmFd&H6o$)t2=l0QHVMsx3x^S!g=b6= z_4`I8s1$fS_WtgRubKm7%aoNARp8P%GP|op;OIjO#%dHybgm3N{PjHXSJsoM{3)Ub z`4I?<w(@kAg$i8U}tV6$fjik`&P>nlY=bXSMeD_QVOY5tOyt zMmIP14QR;q|ik`AH@!FkT-{L=IIRP^DXKw_MdLo(=V9~HkxmrkWa^zAfMV_U9jY$p|q( zpT#*cffh@pM@^&TGCc6ZPYb_K;4IfxuW9YKUDkg}u#x?HhAx1E z=JIZV?9Kgml4GKA(Fu)OZ6@S}2uW8cqQL=A);+mq#Ir%S6wzKq?-_$mT`f9EkSn+L z894X@Nq`4|X5<^OF?{N5XMl%av**7nOOpTejaIHfoxRc>xB$;qtmmfuzH_+QiO7vHlx8{spk68Zg`ztQtHryFhP! zKAgB!t*q>DrX)DkC98enbxAbhU{d_({W~EzL}pyvl*WexC<`D7EP!Vv>$~Ll6(r9M zFX6J=YIqoBJ;CKSxy@RCJIb$v@$km&p?O{i%k2STZa0k1cc-O`{_4X@9(B?NOhm`< zS9_M*Oj{Np9i58#w2?p*Ek4F}Wl)@PRQ715oy@!oSoL{Qv4}bwN-sY%J-~k++G^gR zaq^1AfV|3KFkS)1k9*KWg`U0eJRn{8PlZ(a!2^f=z{D2;GGvbDh9-k~KUVwSVM_j? b$|fl8T|oMg6q}xJQ!d=j^<3@Qpxgfeaj4{x literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_launcher.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_5_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b966b5a4087e28530d12eb1e69ac4c7210aaa2 GIT binary patch literal 11034 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_foreground.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..7e38f4505aa465fe35c851de520e2b2eed9dbc49 GIT binary patch literal 3319 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 HF)HR?a`eR= literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_foreground_sa.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_6_foreground_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..82b68ca06f2e8d354003301fb114e0ef227aaad9 GIT binary patch literal 3465 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 Z{})|uc1?#GG28$E002ovPDHLkV1i%I^I!k~ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xhdpi/icon_background.png b/TMessagesProj/src/main/res/mipmap-xhdpi/icon_background.png deleted file mode 100644 index 9c23c07c5557043ac96a3728652f5c0a8d5b7d6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10703 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%0D3qQkNa@-&Bz&*ZqX8RlEta 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 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_2_launcher.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_2_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..fac63dbe9264704853eb107c57c5203f549361ca GIT binary patch literal 21531 zcmV)&K#aeMP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91ke~wq1ONa40RR91kN^Mx06#wphyVaU07*naRCodHeFvab#kKa_OBYlS zu^@`r3mQ9$peTx>Vgg3R7P}@dme^jz8e>7D##mzvmL$g5HENV7HoyXQqhdp`S40#= z1-<|GeQVb2Ifrx3y}$+Z<)3@^o|!ePueE3Ivuj=W?<;kUnB3TSLnHK!jWLfzm(GtxHr2_`@Wl++f%7sxBmL;*WG;c z&C7P|*m2cXty-}HbLPzJ5&UP62wz~CSLF-Jpe)LyZ0bN=qE4<~u5+H~K>J~pAFA@X-X08k zzV5BJ-deqL=gwPTX6e_WMT^Y<>%4$NGWpwYza5R4>Ve6VC*Qy9vdd0@K0Y($vlZ2J z_ySh>|E73P6xO~abEawa;fEitg8-d_Y2~eXHMKM&-?ykMb*AoEXoK66+X(RgFU{eB z+^K2z^vpBQbi;1qDC{zxYR2HsS60-WHqaJ0D&NiJHaCY4|0{XqPV~fSHFfILZE=io z7a~1lzD9fA3Y$TjXd5D(&q}!u{wtGUPK?f-ro`ca=x3jOHW*v%_<0-01<#!}($;wJ z?YpuPcph{|XZ6*NZH&$Q|f@ zM^Ic)sVvZ6Zh7!rq4`<6d{3OZ2@@u)u=2_)pNpU1J2ZzPOn~QKd?k!|^oj8B_@}}P zFTNVydH;j-gSjF8a<0SaB(_oRZ5TVavA%Vf=^9w*qg=+vpxg$U*3jzAF{i1RIOU2)WG3XWBMuI&TDAb2flVdo!j8wPE&g?5YOESlO!GQT`!%9KNK!t{R7coMnVUN@E9T;U}b&lQ)Z6T3Xt z^+z0WM62P$ho91>O`D_9_pzpP1Lk8-J{v|q{8+en#NPvtTYSc-%!DH7-|~dA-4|(W z7nab3ZWJ5@UN+khpT%ai7&qYj`-Tyrb*q+P%b)C1lBh1dZJV}Xn=LmDyC9kRZ?>^9 znf-Oc*I$2q&ah#_PCoCv^JakD6N#MWTN2Gt&}QG(lH{Pw`e&bgb~)_N|Au3o-m}XO zzfi)>cibH=xb!b!+LzPAA{{z}7hZl1Wk2Z#NTfU&rNtm{U|*pA%T*Cy8E(S!=VT4sadHNX0O>SALDL- z{c#v@7w9~RJbApHO_ohVPc}6TeYUZjKkK@I0|&Oe<(6Ac$1dwg_GgFNKW@4soOS+X z;obM}3yPF6qN$lc#TKrag2*mOG`ZB$T^V_5hC;)SiAc;m;#eX_-)AiT#2PI$KQ3=T{A&Mb-A#3ZM|k(^90qrDjqi0^=F-R)}pKGvx07hZZb z?03kq;qt4m51)Vjg(&HG+j8L-{QFi+W@M~BBJ2T5`>7;VSip>aMTX=~Se$lv zJgn1m^{Popy0TK&vSrKOyY9N{S~!1p$EZ=GzRkvyc^Rx(n)8aW^JQIs`|Y=P#O!l3 zj(7StRqHR{$g?i^a~Sd0>jHyRsd(b}7R+>@z?c>aOg;-S;~O?{(B4#$6!Wk zzfjZ9Y~Z+P3}&Grg9Z)y6l{E#CJnf1&O(1TcX6Jq>mPso@viHxyY3x0KwPV-g6_pR zoFk4uBfS5?Mkda$6s?3T6D3%;W`lOcQzb&FSCd1d7lS6uN9IHpHa7-P!`r=4?2xa9Jy z1JC1F@SW0GGq~`vJDD{LfW%Oupq;=P6oO?~oCRW)MukB-A1GsB+!olD^gKJigp8MZ~90B8Wvhmo>&Mc-oszMmU1Fqw5SC#!2S zXu_y7YyxUc6z9Xb#X}E0)OC|hHfeJ5+w7Unt~2hvAQjVG}|EV%$Yl z&<8^dl;RCS(E}|~i-53HB&U?6%ajtt1x~DDyP%gG>KSDkYxK}4l7UzSjq6WH!ZAX_ zk}#irjgRZ>zUb6(;c&qj$A_(Od88=?a$bMrkw>=Jbkj|_J8RaNsA+RyZ7tn9tn078 z{`yV>1`HU9W1dxOliBEHf4MdsisbnU#|n&)xtk#YJNqy3zeO`fH51@Ywt$mR9E3r| zxUhI|)hCV**l=7MF!9WAoZfWH^mH7{D)8~d@d0OzJ~M%Z!lRy!WmMLqELq`$BB|4H z)vb5l8x~z;;jrG?Ylu~?75H>oW|?LB_w3p8`WtSzfsXc)adyz`)pMIbt^jNPRByNc z{`>zE`{)guqQ)8LUJ_2nF^~JxgQD379iN353pqAPL&G*lh%uMDyduDcqkbGr>BSqevYJDMbkosiD(ND*hI9Ye@d39o zhQ1rG@8YZ0pj~pc)mGcMef##;H|J0Mxk(`R4D0%S{ra{1;~)Qc4Gta$RJ9@w@SMpJ z!%h#Jeds%1I9xEbt%#tmJ|!sd#y#;L920#Mw(hq{l#??r zZDX&{y;rYZYm6B)=H^M0CY9uADQ44qg;q_caZIz(Y;F1FmtUUIu3bBxVXj$t$>D%Q zhlPLNJ6d?YbtwWV*ktY7b_Ep$a=81!XsAv~9B@%PYE)ooz@U(+genPkBv9p4ktSvz z6Nkm9CAH8vk~m*WSz;TFT9n5IZDwI2CHr#(T%(57|k z1h3YZK7IP{7g}hc<1n6|v5tyVqpA!qEUG+S4eE6K71!c}4?fs#i6xe}8EuDGq~px9 z_b-kKBS$@$jT?zOCHhdTeCs1}3X~jeKj5kZM+XDakhaY};xh`G0j6mDrRmC28 z-05Y>LsaSv_s~gLdEnjQ$#Dv`InyO679wI=t273FI{ZR2T) z2Y_g~OUi;qb+3c7;#HD)}T*AvztIJK>F{s*IunR+;GFc!nj7C{ygpMi^AV;_$NJ@ zgnPrBV{ooxtTaqPbY_c|^JK_<2B0lE9WomWhdujhJi3 zlLRr4q*BuqvtR;QdKtE8eHL;wBXT`*4JZp(4gwGLGX*FwC6wd?KoThug^~`-KW@Gw zobiXt3SgBMW5(Fwat9wHA}JRZudUa}dbW@wbJ8&JTHv_nG#vNvX0V#&va7BQ$DfKV zg9gi4R+AB0(AWY%#}!Ti6bMFA7y9+-6|TSP!qBt#!0-VsP0zUkOEeEH2;ecU!zBDe+Dl zc33!I&!4hev*38>92^gw03_d)k(^7D%IwTQ9ud~{cm};clIN(#q}+{Z^@KcmNRS1J zU3a=A4+G<(ILgwX+a=iQw`s4Ga59sqFjpju5Q}wyXNBMtJRo}zh#kqTj`St+6BFlE zP)T2m8*kPoU%`#CB_YWtFz(KT>%1azq&NLdH@1nDFo8q<^jS(844O^Ghbo_R=7qQ~ z{E^7Gdc_zrmcU>xxV2taCyXPrlRzXPazUdP zVDaqPDGM*W@Nm%0)~>86ClcLUB@eEtthmAoEBqCLc<@!Vocg;9!!5XPIX9{_j3A|R zqJvbEn@dA;t<_fzyA0VroP6wIdQ^tP?eT!$CL69B+O=yNrhfK$_!JAbNI8+@q)(nj z$09^hlu`}oYy~EBya$TdY_GZ6%Hiv;zp-0pGdzw{S>lxNWk1Sy-n7Z|^WBe#rK{tx zu9JG?7mKrISA2mWc{a{r(U;iInKO<9;T>Ff{rc+}Ve{S_7_iD3H~RJ3cH3=lxcu_V zc@GgeNSi9?37l!0VC4WY9LD%i@bAlxmGP-g+ne`7hT69;lZTIT}8Y8^AawlE)#(&4WO67I(~bSDqj4 zzV9JDE+kkMK*MxwP`VwYr^txFcihIIkV9xK=9g`J8`@5PN3omM!$zBYT?pKYbHgl;%cz2fA78b1~ryEye0F9 zV^7sBo|ZH;sF+$^o08f$8ES&|3wVyjeAcU0neyq>@brHsgqL1@jf9GZA0Lp9 z*vbNqnJEgSn7RfOiMDsqCMLTpuef~Jc!PDqPw>RVq6_1Vci`dlUK^beM+wHApvY4? zVK60=>FuZD*2aDM1_cWXxZRBwWy`=d=-;9(Cd1y>|}3`QJk#$I2D17QDLA zMjQPI?|S63W`663vz~>>WzRAIfRAa{g;U={arW}6N{9~Q%+Y_)9=bwo(J&Ud@tS5M zfonx9wo~9ap1hCa9=z1x)hF-MU4E}kdMotmKO_a8sL~V+ET$%tp&~!=jRLG~ z$gFaOcRTKbOH({1@Ld@Zqp(sMCP%G8Z`b2zUJE>PbWANojvaI2a3l{CmnCjtYQte! z+&Cpidlh?O3jt7fijRPfH`sG)VtMePaahyAktfE<+W8x2gK>akDtTKn+#iOK=*brZ z&ph{{9wVCY^2Bh>jkkxtU;oealUOpy14IfA1w=u%yUBT468pGxp_%w&g7Z)0k>2fh zeG+3~3Da6pzH|U&p@rIp<+^oM;&(;zuq?kE`fIEjx^-PDv~AlO4=2nF$DVqw#%iq? zYsMTn`L3)YNwoxWb6D3u_Sj>CaGS=O6*)xUKW?}!jKhlzWUvCnT(BUs8$l5UwvH3& z&G95Jjx!vGC=ZObTSVIB*M8c3tQnm$fLou>Rn5G zVs!n@cd&>4Kp+dCEg8^3WF<#B1fYB>C&{b@)M6myu-=b)hJRf@BCN8(R(L*aT0%EI z5f#vkL_NxvCLD-`F))1yumRCILafC*B4^~$qJ&gNg|3;5hI4iMZKxP0M&#_MPA;%* z3~82|RZ=p<$$2{mcTtNVktXAT#+P4vBg{m6GJ~~y8~5+)^gLT7mV{xpdIFCXZH8ve zW1&hjP_#&v)xYt^8~tk~4~1QO({171ck#q1ovq-QIodj-gEWK{YcF)3ZFvSXe2gl( zn{U5cN*>ZWJ@Ldh)}B-;d8iZ-@Gt$O0CkLRC!Jun_T-{I3ZD2D7;+Gi zuq6F4T<9-mSdqqL7+wJ~?TJC%xx_Xpl3H;F6CaarJR@7-NwD~k3GcV!wL%u&XvX9r zrF0W&gO1~_|K~{IR9i9Tj6KF{&O((Eh&-tp$Lg0_YN?us?Yzh5{7bGhis*R@2UyrY z`JvE^=p6Q9P#B;{reFz+-gKadxM~P5zrvsER^)i`q^gEqY^j`e@`6C4E4_Rm$}d%t zgBHvZ@v%dl4I|SZ6k>^$CtEJr+QJZTXW&VbXvK#;Xi8h$|~hNcjwi zpWxvH@}H`iS|dWD{nU|T7vSj^#;#V0u~!}dFKLw1)JmYb+itsUDV!VFGAAf+-*nqu zINE>9jHZ>*2eKH*RF=if5K2^qadAfyhi%u=>BJ`y`6#iy7=NOOUOd@$RX9$*_Lm1o zc_G5ci|wd^%V%wT!8nR{Em#|OHVn^$==23fq@rFK1BoOPaFQGdVW6!|wiv{cZ)n7} z;*1JBGRMi@@YJ&}*ts}yqw2Z*y71;(?}b}%V}7l|*fR%!L*hbMMpT|aj>x)2pFVwd zMP2h%5r4S&ipX1DpdU&_krSP(0kqiyP6QJm=ZKKNShA*3l8D7?wFN2Y<8TU)4U5F& zM?IpBiIrti(%WR`8c?jsXU#v3dXRnQ6NPvqT$vI^8ugd`Xd467MAfJm5EPRgGK5Au zGWiiZ=_DlLumF#;`P!SvPB62dl=ver3|?^A-;AdEx@F7(9t)G5FNvZ&fqa1QdR$!F z%>k9_QFxx~Mf}WVG546t?(8%mXL8JD0y6{J7`otQQ?d0KKjWL@i6}bLJ>>FiD~k?_ z8nGh1NoQ>`9By(*Lv0Pq__+o~?+la}7~&|~3m53bn51bz{=fo`%=GwO7tQ?aD zp$%kJz>+MG{-=}7s!cqt87Q)MBc zwhob12xc+yphLrgOqkn5a`HBqc(E-AKG@N*V;HjIfbf&;w+wWMtxjJ#aBCy#RmJ(}h);GnG$I@sx5IO{}4A|mnMk|ak{ zJB=|YSt3O?^>~JTK)>E$=uU(16lw38KbxKRB)mAQ*Ven3&Qv=9AIYuC1Icy{!yv%HojA)tXNE~6)YmCOXtOuK>W#%$wvbmQi#wez0E?F1c`6tB@&@W&LoI^ z)##J21=EBoc>s4O8V_Kok%a_($rb|+f?hazLP|=cjrvkIPejSD3(GINjNVcnYLcZH#7Ten37^lB7`R=;oJ9-<3c~WhMP;NyE}!(SNp!d9iAZ{v zUl-*^1q%M8Cz6Ws5=-a+0enE?; zPV$A3Vjb;{%0`wNHJ^|_4X6v;jnzsZ=E9?oKDz408*ltP2$)2vcmf$Ga>Iff#x_qF z6&i2i9voh_$Q6;Da;Pz}wHda^q6_QHsI%fT-7|4@`@_kTEkPIr3dZ7wnsMG^%+a=p ziH$@>=R{A>GM*9%$VpeqK;L9RKgqS8(kY5GQ7#|jlJ9gRUK88@Mtagl!mE^j=Gi>~k0e2+EW z^3e~RUWkmHd4neq;3_)W#`DvgJD^g14{ntIjtXOtYFTiMC)*x;)43tMqWg8~!uq(q zlDa?s)PIaHGHB4Pc$DNEZL21PrQlh#eKwM-qH}Uwxl4ntAN^R&md;b8kZ;;kEw<4E zt;jWimTD$C?W@;|!}rB6ss1>&!4@h#n`5P`{jyosDEQhCAYX|@`S^1^sUte3p6IBb zlr8+`{wcFx!N3?#C-MgT{dONhZWT++iAym^W78SPJb@^+Zt=wzugBZsH?7De0>?b^ zSZt9bDhwkmkuplNgZ9b5Pd@q7jFZ(Fi)g+a6>$lo-SmaqFADZ4Gtx+ekT42F^&{)N zW65I!rl(;>Uu(eStApW`*D|0^_u1^R^N!(XcoXZgbN|+P*RrI3hc6LDDY09Au%zKw z($jT}Mwk0Pw@to?j&wYdH2{hA!{eT;nLx}5=Elb#e@t|dqE0{K9auMVK7)`%xUGGP%p9fcxe3;JYq<`ttt z(xAaMS(@kB0ED=4AkhO$APz-`M#`usxj=i86BiBMmALO7KMgxth9liT)V^Jtu+xtRhW+;3S$Fs4 z)bq0a7H$CZV)3_)$YH9XJ9qm^Z~&yfkO5c1WoBo#3Cccgm!D!A)u&TG$46;i4Lw({ z{&A$38&3k=xz^3H3&T&gnz!$dd3Zd?K~F{TM?LHZj3N?YY}*!MTMxQ~NUR% z1yVH5gK3;?*c=qMKB+-I=#xKD9LBcz5TK3}umok_^dUd{1!x>rSiW1>XOEr3?mr!* z7dRQ_{9E%wF-h&B5fw0h%g|(Sv`980BC_9n;l82+jFtPs*jWOCkUjut?6@atCJ=Ii zxAcICxtd%&fgD(mdq7s=K(#XF5hPGFjFqz@1KAMQ?9-aU2m-7a4DE^xjEiAs`wotTugc`mi z-1Ns<8x8DFP_rYtpOi#NzAClJ96oZ}CTdn){VpP{0yv_fuhdg3t%RgpR+3AET^ zi}7XED^wzO*bCWf`)$`NlXNgfW9^`f#sE(JXsDq?g9sxxtx#L`^E`|af=q=#dNGh_ zv50&G0KF`T%uS9ZR6!mSEaFf%>O?|PFT8O3up4HY{r21iH_$I@Y!~2~0eu7aG0QOO z5p|VH7-PCPkS!J^0UPl^Q2vi-G~0b4y3}!MG9a<>;qAM%3Uh-w^2sNkkb#&mft*|2 zh!G=}Lw})aOnBB(mmz>qC=POHDke~n`k1LPiO^Tv=l~gH;+&p=7Zt!t2^kcvBCYsg z6)la}Nxl-t$D({YzA6lh3P?}3`MAyjKif6zGI;yIuMd7-3V*^+|N1MaXg-QgO}3j4 z%p>$Ai`gH2havi2#}tL*h-SGtGYzN!7YF z*Icvu5fp^HhEGF!;3-ojT0&*=v9!H#JSiR>16=yZ{A9++ZsNM(1fy*{nV=l71Z9gw zsN!#Z;tGbY97(Xo0mr$T0eFko4S%^PJbd?!Iyi2wgSr>%AU3aUvwWx2QGwgH9 z`qkIoOiuAxl(AMa&?hQ%02>-mEnhlFezYWtAVB0arHv;R9dCRSW1{2xv2WnBohzzc zX%%ziZXfeq7`fEpRUfqzXyWS@tf-_jk%H{RtgygB!Kj<7NW3E0c@kj+MB4gjF56;0 z3xgzI>4;(FBON61<`lNMn>ujspPtF8dH_T8(RK29^d`BQuJoSa%Yj)kDT!TF zg*xU4xohzm$T}@sE?I#lfhHn5S&HqSWGH4YHK&FVMkT3cF)TVaR89gUqAT}k6z~iF z#!72hPhQTKiDtwumW~^M_XHle&u(}j)y8sG#-Ul7A5H!w3_InVz`GGx%qG0h>G&fw z)6I<#em&ZF7F?oxGT*wh2{NZx#f=AaATVDRJlJx-5lQ2~Rdf^p!YHXBOpHlfN?r7D zAk7>hvQ+Z~A_jQWEzCx>@-du8rIP|;Q30El0Liw5A{}UiiY$#901(k5BbpVHgtAP} zNEfU4i-SW{p*_CY#a~mLaq`EJBg1B^Zn|xxl4r`)sr0q{K<2+0c6c}#-?5n6;t51A z(JuMgnMQxg9~dn487Sh$WOT;B{BI0MXZ}YkhQV3W770W(Stp6p$SjSRBNU_J2}A&n zGwVA$ffWTXJu;}1ESN<=F`X%K(PU-@g^U(aq}3S0b*fC zBtm=E)ygz})D}XPTw?KX<|)SljmpN%23#CTOijGR;0rbu6!Dm6O>7n7{oXTL|H~gnlHXUjBAwg8OV2GBEewI z8EEDVyy*%Dr~B`{n{NI-@z;lkzg}}=co{$M&E8_V^(};qJ$bw><6w{*sc~swxP;RY zw0SvvjP{U&_6~dEPQRwSg*~#FtBS89KJoPP!smGVnS$p*K?GX1Y!NOy{|sH3pDQ6{ z#IH@m_+e@5-O>;>%%mWP5oTcJi6wvMaAqqIe>e<9Mw*58N{Yq zN*R$6w|B4gwR;-4b-za6?*O*WSmvT9$L^W(2GvJb4I_s?)d<7pLRQT}2$#@QalHO17rS4TH zDyJAwrlb*hTDjlF9H^ATcQU>8>;nm>LgO3g$A=BS!ZM>|2C9Hu0@`x>p<&I{R|#j} z_-CW_*9m9+{*v$)%s?OD6ugX-m8HgufovcKN^}mJu#0Q|0imZBhU_>n{LcYz38op;fn1AjeGPpY6o0>#J%4aVz}f(@(>Fc!}m^SNvVc(**ugZU2Gq%QT?V(V-uRb`!%8c3pJyt)hc~I(!E3ai zs-Q>@_=L3z+h`Dr=W9N}J0d$Hxx3@VQV-*f!fCW4;+roWJJN$vtYjn^p#ea;Oa#!v zja*!2jsPu{@&uYz>w~Tf@c-xwl| zkE?Ag#KB|a>1bgx5%KJPV+mBABRrAl1y}RGYb1fNe`G$;ASMVFPb7l9Ez7gKp#b44 z``AOFceudVpB?zC@Zi|^%g08Wef{1CABLg(9vTk+-&6FGs-%CWrzcULO*Ra-{QXb! zC3$FQnt>E}rAo4&AkPQ-i#oz_=1=tbt=WmZg#>WvPf8|Ec@d1OQhIeMgMZ-B*exzG zN0Nj*f%ra|lKoq`4vQ_;Ng&xkJ+S2FvTf?6+>oKfqH_G3rN9aAzW+fOvd6)p&(=GI zKjIa^{)VktaOV(k-A%WH_fNy92gb^`xfaY}D;AXP@#Mv|S6tAjBb}-_>X%;O{aH{% z%0v%F#aMBX&kf7`NPl9X`do-qY|z$D!Qgl@n%Le!9T_lor0?7bPY>59<&%sjkl5g? z@`p8OaUi*TR5W5qbE-o_Vh2MsHd9d!h$|`SG7<#|p!|fFUI{1s_Uy1GUfQtjke`K% z{&ZFFI{=(!cIvm@emCsC-(lgGN1de4B8Zlb#-HhD8btB9AiHC@;^MPHn>JNXh0Tum zCgW-bO3q+|4s;Ka4TBrmQGYBP^*YBSE@^WZ@lsKfD{&B5q9V$Qctvonf*kn>Wf&FGu?{Ly$Ni^m5gaoXcAvA65JFtxpkXtT;TaROV)RXWVb*Olz*DDw7DoK_+VF>quf)p(aBatfk;&)b zKuUac_SyZX;cVQ`L%rr_c^^N!d1IQATK3a@F~Ow^y;11o{&RdK5%5w?}sTOOG~_bpu{7{VKjMo{g6_SJn(f7!87I76sE6AZ0r0 z6c|GzD*s~~EqUBva!Vx|E<`371}K7;O1NBj=~ba^n>Jzn_0|sSud`NI_eX2uQpYkn ziT3$t({w%PUhJlB#YbMg;DuiW01POcMNM>KU<_P`OEW{mnZNm8! zIps}>F4Wc&1ty{E$)S-fiAY8mndzXKefm?3IS>n(5GmHgS!spZGZ1qGL?o1m{AYZ_ z(@#JB$~x;*KhwGb&V^71B}&wxyfQ}=Nn%!*A<`2Bb#7HTG5ho&5u-x{VmpGTlL3e`CI@*R&*>)}BVG$)#W%bu5ul9e3N2_XItn_KDjRS= za!3ULJ#iwuM4sYAaEc3=;lENs(T6>{FB_Rwu9zbjQSuO@AEz?OeOJ&))2yeu~nEC2v@=xf)Y^XFcXQLd4sh47m~wcB8l92$Q{5#DRqR|715++ z^p>eif^2Zepl!oxCmv1c0xJ_Ap$HD;lC)b;XvLsX3u#WUc)9oax{F!`ZexmP0AyTyCxSUAd7+nMJ zZK_q68_W?Qn*t3!1Cfpc-{BRp`9TulC8clgjk3NgBDEP!;{pr?)>M{`ras2)-(WJr zc0VMHleqC0OPNe=7`8USUStX2nx08tBA-|VeRQ8#ab)0teqj;3r)WVI29cktlBrO{ z?590wXSPts6mWJ7LoLFIN>fR*DBi_1;({}bUKqA=Plyzta{k2X-D^EVuCk7~@g0T} zJ5L}2w0!p2XZ+wr)v{UdUK)$>jChG3`e?%-863f$JhGF79LJx0gl_Jf)F#}uaA6>j z!w7enBqq#R_);c0Sxv#fMfJ@$r57B9HlJ5-;xq$4B$JsE+ooqqda6tVxHz)cw74)| zA0^&#VE?du_ilij-5f5+jhXx`G3ZD7z8mw=_v!_?!51qK+ZP=JMREbZd+xdC##Cn! zLeDi<)2r%aP(qCAWtNnTLxOCN_?9GuM8hJo!6Q-}OFiM3s%CsKUq$J1nByBulVNIQ z8US$D-4CRvY@KF)*Y=8J*a6j~9Thc|p-O5XFdm|)VKqF!?W4p&iInUiepcu|=dPIu zoldx(#(Rru739WPjOQ~@+J#YqmYsIm=|4EzIHejR3hcW{+>L?4g3hfVDoJlRoLZtS z5XYrBfpM}%Uw^D4o(v+C0F_v?&!)Uh9%M%tIoJ?kq$iw<%T+C&!r%(8Gx;q1?4Tp` zK@tHL!0LsU>=&__Vfy-RO!~u5v`#RYij}z!+M;2EQFD3$iPOhoqdNLRKEasrG!|UD zpU9{8M(fIVVp3tnoM3K{O}3Q&3d6v6c%|!i_!#}e6?i02pG~18m4^)$aMp2{@K_Rv zeebXhoa7h`aLDOt6p_7ON=RZ9;&35SM0EDpvl<987?d(f1h&<%sWCc2oUuZiikEst5aD`G zxD&lLDl#FjSfeQ)v(NtsH*tnT7=y#w+e9`Tal?&R?}zPvx=$E>?#1){xM+fAph7>_ zku{6e=1&i}+$Y0{Q5SmPaqWHg7!v-1x8C1&&7TNV;UnGSM%@@LKKnOerycPDV_wIE zGsroSqwW2z@OqnCCFVp)@(|y7F_E~m#M0)bn{MifH!yI2SG8=9YgLbo!`sdnp{j*r zQAISp=OB{V{G$dOX6(G?s5!NUj3__xCev8R+Z-Q-M|i=XfXExw>Z`02E+bu*{)Zly zeCo-=+jRf=_e*QCx%uXs`(PLL9FV@oG82ntqZSzzHC7^BfBp4SPdxF&J@J%A)!(_; zCx(%@_tv)-b3kEu!Ix~QDvLRV6@%*mF2>9x`A&|aLo3jW6`5e6hrJ)YO$sk1)WENl zkWp&*2(KN!26ribGvgb)7jfNrdNcoomtPH6{ryH)v!wQ9B2XsAQTG??@9-t&C-4n5 zUQ5G^pTbg0E?)6%vHbG&Xq>gb@|v5%G~}epNYhSbk2`6ke<-MM|OXUkL>;r2P+j`09Se!+CJ5&ozs4GAf=hz4)9{ z!&)^QYjktAzV7Bb!XZbWOohatR8RB(&V9+Yxy3AFmqq?Shr6tO_t+_%aP%()=LWvd z|NL6_dVigrvM~FdI^fK6+wj~Ych-D36T7cV@DbjVz*tXWpymujCh1og+A5ls(E9eF zhaS2i!YWq$q~dl1wp75S4pz2x16^$=lN@wnfY^;q)^ZH-MP|vPHU{LXh(N=mubpvX zV*oP25BJF*yd$b)Qv?2)at-162``7Of4pZn`}{xYW3@?WGc}&)o8DX} z@HFX#eD|fyr&jK>sH60k15KgNr%elgyy6;t=9>_HFKpz!qxA(t_MJZY0u1QW0eHg0 zZ&fB{1lJ^wMap>xBO3B?)NG0b zH!$I*aBW4A-iL%hK0qaXN(eC{7TH)W@5CnI;s@uDRwbt=6?tILgXDNtbBwfgc-PO& za2CFtGXRO?2fWU5ZtLgpjGYVvBbRSHXFUv{o>67hX15*RiG~cI_6*E4kKpEd7W=w2 zTQ(@Su^W9s`^b0b;Oz*lT9^aO1t9ot3moKl*6C+F+g{Qv^#1$rSKdiS%&oWFEUbzH zPg+H83LM*UAsU*BZzPEw0P)WU_4u@Dt5!G^BVIBV9Rl=EhZ>pjqT$BP@m;XPZ{EDN0o zv4o1KB5}Qx1W`{}3w95TD#NXzWOE%aDP{|9C_%0vWF_V;S7wc?6ny!B&>w3UlL^8x)tsK1SqE`+zJOcX8vZU z2z=oj$&s@_6}==F+A@mt7@`b!yxJTW?>sT1XsRo`lC&->1qRx%B1m)NHzhHpGD{K=@U=Kb6d_tUWg(i|HBU6JGQD;Gh+@g zfw)jpE~zB;fOtFooCmB8P99y0H$ZHeD9RcQhvN%_c;Qmy)b#4MJ4c264*9iAOa{wvv5&@~o!L)a5`awwRhS8Xw5iJD>44j$j z8A$lyc&wWT+5XATh|r{JG+x%8%XcFBPQ?dfT|WCzKQ6>hwiQg2JRB4`SJIzEjugUS z2k%oed59TfUupJnhvY29oFcd|viv#EyUW{t_0?A++q7v@^;X3hc$9YC-rIzC@X4UG zwS%zIEX2n~+O)>84{uzTL0rLgP>Ej~=6BEi9W_2X5U=3HEzXJsIwlA@=4dgE2qAP_ zWD$K-O+RHR#E3L*;yuC07fCNZ94^{P4q>Kr;?HBaz26CA|)v3D9rnrt_4SGZ62VmEN&K|?kB?C7GXIVYCb6W*uA%CCM8~_f>=C_53Fp9 zG5&P_1`E#t&W!LL9_{&L%G4}*=%(l>xJC4teEEaJ;AxKZIzz&EXPm-cbkRl3%NR1f z49CbVDLi>hWH~QSvRN7MjPglm{5}lYb^qWm$;>pErFp}xcZH8Xo)QC%Vfw{OmE_5F zE^>-G(MK`oSc{MGlTXkT468y+9lp(aaLwc)8^oNC9;X~Yn~Z%y(@MSza~Nw!B!iio zZMNB6_&GNrM<{RazUyE-F@YPB7|@J?+7ZUB%M*b$W;PkdT1D1UwAk2+##0^CzIBNw zU{(_i<3^VFlLudWvd}{9@Vs|>b^*u|fix^4jcs*fLJ>~ADTK0AXZn*cjieaPbBPZ7ZZp9YDcYHrYtYICYAaODFV+YQ>Vu)XF$x zJgOgh;emwRYJA?3d>CuQd?cFu0mU4kgd_#+RKz#+tl=;w7mpCR8*798;m$aneTkt| zUi0KzzioC(KXoaQ%v96bXsN+*Fp2}|E{iXw2MPIlx1s4urG16n<21a0iNAi>CUH(4Nu`3#XynJli9t!i3N5988Dqf6gfkvL4>f4J zt@JG2cd+dNJb63pWV{ymqmK<&CQ^fejzDdh06g`}v=>)>?}vl6m0F-IrhcqM&Fcn-(T(m9A+S7hWslu}~X)Y^?3O@4h=0 zyQ>w@uUbwx<*ab=Wmidz3u86wa43c!_k(pJ-rTvMU`=t%pBTJQ7?jD zehvDOyKiXp?Hf-%`Q*OqufP7kKaq7e)ZygJP@kpE(x`zYR3V&st zfA((+=L3=36SpuHZE0%RN^lH$?Km2h!_Z=#(I>wcQsPeu?sMYs{1Wdu{(Rc!#-I46 zhA6d)yj{Lr9&w~A7_wHIxKv6Iblx@nkogTd^~VW{J19ZVY%$An}Y)%qIW< z6M0EQK~##BI|1|+7&upVrf5m-JkjR+t@C3n2FURvVu^f{Z7R6eTt5$x`cgAWOv(XB zUrPaNk{|J1H;aY!gjO;h;St+?6k1-pQVX7eRbJo zm+f=cU3c*yjk_&RB6qd7IArbM(stA_ zF)id1WYR(G9kPsivT2<{M?y47u;B&xo@$Aok9nQR7pM%8zBRrLc$ejm!fpS!tkHX$ z-hA`Tv%7cielGa&xQ9!gK$K9iRNIB+$Rtj?F|=p?nYt=>-BlO^E}dXFnDaaFJdK zOM}iz`cg;Y#D!xfi(!wLnHXm;vy%K$dg9P_`6*K=(V{`HhN6ztQwxzG)^%i;LqzL@ zOGSUiD~W5pb&mLqC1Z*vlg1M#-+d9SVreXaq%$a4lOdVUc)@V zu1keW{&0o{SZ4p-?6y#AyLZvHefLx4_ zWACDKextL_2CKSmKrDwbroixBSDrkjtjpLmmOze9CS1sv2h=k*-+c22ajC!Nc_HA1 zZMN!%*8&eqfuzUzCpV*Qj*(}HZc^ZwJh%)}t5$xaaN{vC%>!f*`U*FlE!HvYGGqtQCvO>pL`#P5 zM{_t4SQu;zi22=S4UR}Y3H4tv5IvDuP)ld)DL4i;xChs3AB*T<9qFkYS$geo0ws!g z*5tQH3h{;fQt}8d5M3nh64)mkRO92hj>y%wglb?FR*Y)Z90lmq$exc!3Ih$ zU)%{6l7^$P#)}=>SmKNVlx_NNrcW3|Y*o^~lsxi`hAaCT!XCIw^!RvRbWUI1X3Q8n z#t>uquFDh1j43B9>(}}jUxu1R)kf%>x_j@v_lp4o228}SvLCZwPL%hz#qR96=U)u` zbfyZhEpX5^dYufYIqPoAbPemQ(=+gmsk{}W8{UW97FY3kvhpk3%x@$)g|Sf_Gq5FO z0bq+I(OU)>FkADjXs4cdOt|*O+X}`}PghbKgOZ9|AqkbU^O|rjmV7QQhG+RPO}i&Gy3%Da}V~VmlCN~;k`pwTzX#E4qx7p7r;qVzdHpU_vB%{ zB3@|4_cH2^MfAHYwix<7bnj5%w@4vBf*##8M*rf^0!PiF^WE>jb@?1sn~hlb_I&;f zUZ`DL2dSngmyu?MD4z!SnAc_%rN<%$Xj646jM5HoUR!mg6>!YBx$xHRxklJv-L-M8 zuv63vMD{QIltz($+pYVB5f`1==si9pW~>-9G&%F+vyUlbnh~|pl5A=e(-0h=HIvUT zwzkIi#M{39`s;sQWRXR94@u3!yBH5Y=A>}-wKplGDTr`}b_J1|LTJ&JoAnNB^;|vN zgpZNDgC|J|B-{ezSg|HBxaOwHRjFFf&MwTExP@L5UWWrR?#@PG zTHF{HT)R1PrJ9Cshu7)yexOIjJz+tskUUQNEfS7jT)uydy;+_yu;4oeRiVv=N=lwM zoPtWah?7%@7sx#zBwG_YNdn}H-%)3WDC~m?bL8d^#%aVzRIWOrV{u<$ET-ZlJ zmp9oz`OI^=sgB2dd;|Rr*kH!sp}@~R=cSm43T7tWWc}(F`-R~rA5$XFFlSwV`Q?}6 zw%l^d{U=VG$e--K>*B9!a*q;HJu8C>kU2>pvT>i4u*B8+?{Jp-p6$2aeoNds(4}Os zLT7XAB6tfcUyR8jr_)m&oS0O+TF>vbPQ~}TY_@>&JmE6*LM^Jt5(nuTfJ$c}JBHv8 z3n_Xmzg!r+Wm93U?Sz z*mvK3cfb4YyFUYNo;*Ap;lkqXuwE0^bDBV8ZC032Z}UD{+%i0K6wWOS#2L^<8`EKf z^?nrA!P{2v#Rpub<1t(@hNr|Z)=U;APudJ692ophl5GR|F}6{Ava2sB zaWu%4bqGNCn4rtz$HS9&Y+3g$3Db7%9$wy8emUM}z02V3$)(YPTQuH0`Q(#_{^?JD z`Vh!@^7!mS9g)@eH6Q%8L^?G?7b%s6ns z7WfsowD|Kr=KJvJ%lq(gmitlb<>yg1A$S{g&ez+PM8u4VU_|Out*E7F+2N%Jo8g3F zNhq3z&K`+8~KmKIou>uEsIZvSoA?ySxDV+u`Toeb85ghVP04YBG20O50I=XIx*C23)|EhWAW$TFoUxppQAAkHLbUkr+u7|s=xt@8zL!~(qh>Xf3K@X_l!Tc{LOqg)T z4m<3yeq+DRoQC%k?Y-x&dc@}`91DC0hcb8+5@Vm$22H_@ns{teC`g|e02&dDEBQt~ zQ3>{X;Jfr|t+5)u8Gjm%O_E6nI`k2KREQP%MV?}THhDOe^p7Z&kBNxQQq(PR{qJCW zrTWTC&k3uovZ4()Va;D#d+oK?o+Cz#@M9iNpk_@Ts?uBuL|$$=+br(81|-loBS((B zW9ZPKtKwOsm29~7nje4d->*;De%r0W3lm<#H^p#PmH~>>3x#oUA>L-#QXDau+7g#x zp{d@i3_xQu17H5M^io~Ib@+BX(JV=`Gz{x(O#rl%JUg&?!dj(>)^PkYmQi}&7ZeF!utyk+;m_~5u+c@5NeE9I;d+xpW-cJEDPadCn=2`Mkv*^~^O3vY^^JeWc5fhd( zk!B-Y!EcMJ!bjs1Q$GjH@zHF0x#zyo;abc}cmDfc{POrF&K*YYvyo<^#FAo|1}J%O zIU}IYSgQbyDU%;CD|v+D2^nXS1S>Nk@)zHNZD@ntBJWJ#2ky3N!cAY1w7hC~=bd*h z?cKZgIk=zMuWK=Z^5dO(nmkmf%;It#=eqCwS#$B@B2OaK_uO+&UrfKJwr<^eg*lbT zcjEl>j(;ne9v%Ng`sLZD0iv-FOiI#YxS#tWk@g8Oz2AsI{)?1GOu_uk!`N6Vp4qnf;ti}jv*Ssz+gEbeQ zjd*aK5(x)??QXyQ_Mb1m{PMp2Q3)SlJ8peQjv_fr$2;PZLtlKrmmjFvddt50IG$0?*&1@bnlx$B z#e)V7x)eV~{2pdcobp{3m0|JPddmZS=$A!kCA~hZkOa1>eYcPeCu?@3RGRJZmcBE!m3M$bdy;h+kJ%ugeR35|#3UESNM*7_ZBd$ED2EkT*D@Hp(&dNj8})A2SCek%KwiLZxOCr;91&y#Vre;UqwPs3x-ctSI_zf_iV z=+ItoGR2$Pa9b^w4h!k!puE{_W!&J#i?1u-W3_x`ZgUsxu3mravB%EHZUC#6IP?5? zr@3vLQ+`YyPaqx>aW~cm3*W)A2$s%Rmc-Hxvrv!m4p=&3;Z^*luyn)O>*dFc8FLVRvOfKP zJ&R}~ZKch$J^FyYpik%<`lvM)`YcZz`f|RP1tK)F(&e-E#kVLr$QQ!Y9yMxIADlnh zf8m7}?h|3Ce(+@`J|#I8GtT8(ZMD@{Si{{E7yhF1Hf!#t{ERY>Z~Pd?Yk>ayiYE?h zKPK|s+CqTwdmWvyq!|hA?uQ?K_=YdO_~L1}mG=1`>a0ZFX#;JcO<1~N;jBwrX)|r7 z53231=(7b{7PtbL^|>x=b74YxQgIgYnaJC!an*UXZMWTa@RCa|xg%~HVF13j1$S${ z|G@_z+=h$Gw;XW50WU&PKX2o;&ph7etm6mB`An0y7nr?y&=!~yWrA~^$`h$PnMx7~ zeCqL2cjdl)`}W2K+f8r)x)Cm!a7$ib1=p#j;3xQaTg;s6Z=|lAX<<6fY-$7{!Kb}?);;6?b@w~*A;ii ziOP2K!bt2&r{hMhH?V7(IC=8qXKLkmcXvB zJucRAS%@`eE-kbVv&a`*aLX;1FIi((^aYaT!%si`^tHF&e)~0C4Sx+MLEnwZ;z__n zC|@|+ILzCQ&)OF>RoMUDmOMD$TP34nxvt*!1S+pRVan?q&)a0rHWwDJ^L8FYZ|8x| zXAEz9l2ocmo8#p?DVN1z*885Wb7y@|RjjC1t~cA>XU(K>n76Cdj^{OnvF*j%c`&`r zx_l{5it;}39Yz^W&o&GDKd9mk`avn3DO;|;_gT;GLbf@5CMGpKzPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91ke~wq1ONa40RR91kN^Mx06#wphyVaU07*naRCodHeFvab#kKa_OBYlS zu^@`r3mQ9$peTx>Vgg3R7P}@dme^jz8e>7D##mzvmL$g5HENV7HoyXQqhdp`S40#= z1-<|GeQVb2Ifrx3y}$+Z<)3@^o|!ePueE3Ivuj=W?<;kUnB3TSLnHK!jWLfzm(GtxHr2_`@Wl++f%7sxBmL;*WG;c z&C7P|*m2cXty-}HbLPzJ5&UP62wz~CSLF-Jpe)LyZ0bN=qE4<~u5+H~K>J~pAFA@X-X08k zzV5BJ-deqL=gwPTX6e_WMT^Y<>%4$NGWpwYza5R4>Ve6VC*Qy9vdd0@K0Y($vlZ2J z_ySh>|E73P6xO~abEawa;fEitg8-d_Y2~eXHMKM&-?ykMb*AoEXoK66+X(RgFU{eB z+^K2z^vpBQbi;1qDC{zxYR2HsS60-WHqaJ0D&NiJHaCY4|0{XqPV~fSHFfILZE=io z7a~1lzD9fA3Y$TjXd5D(&q}!u{wtGUPK?f-ro`ca=x3jOHW*v%_<0-01<#!}($;wJ z?YpuPcph{|XZ6*NZH&$Q|f@ zM^Ic)sVvZ6Zh7!rq4`<6d{3OZ2@@u)u=2_)pNpU1J2ZzPOn~QKd?k!|^oj8B_@}}P zFTNVydH;j-gSjF8a<0SaB(_oRZ5TVavA%Vf=^9w*qg=+vpxg$U*3jzAF{i1RIOU2)WG3XWBMuI&TDAb2flVdo!j8wPE&g?5YOESlO!GQT`!%9KNK!t{R7coMnVUN@E9T;U}b&lQ)Z6T3Xt z^+z0WM62P$ho91>O`D_9_pzpP1Lk8-J{v|q{8+en#NPvtTYSc-%!DH7-|~dA-4|(W z7nab3ZWJ5@UN+khpT%ai7&qYj`-Tyrb*q+P%b)C1lBh1dZJV}Xn=LmDyC9kRZ?>^9 znf-Oc*I$2q&ah#_PCoCv^JakD6N#MWTN2Gt&}QG(lH{Pw`e&bgb~)_N|Au3o-m}XO zzfi)>cibH=xb!b!+LzPAA{{z}7hZl1Wk2Z#NTfU&rNtm{U|*pA%T*Cy8E(S!=VT4sadHNX0O>SALDL- z{c#v@7w9~RJbApHO_ohVPc}6TeYUZjKkK@I0|&Oe<(6Ac$1dwg_GgFNKW@4soOS+X z;obM}3yPF6qN$lc#TKrag2*mOG`ZB$T^V_5hC;)SiAc;m;#eX_-)AiT#2PI$KQ3=T{A&Mb-A#3ZM|k(^90qrDjqi0^=F-R)}pKGvx07hZZb z?03kq;qt4m51)Vjg(&HG+j8L-{QFi+W@M~BBJ2T5`>7;VSip>aMTX=~Se$lv zJgn1m^{Popy0TK&vSrKOyY9N{S~!1p$EZ=GzRkvyc^Rx(n)8aW^JQIs`|Y=P#O!l3 zj(7StRqHR{$g?i^a~Sd0>jHyRsd(b}7R+>@z?c>aOg;-S;~O?{(B4#$6!Wk zzfjZ9Y~Z+P3}&Grg9Z)y6l{E#CJnf1&O(1TcX6Jq>mPso@viHxyY3x0KwPV-g6_pR zoFk4uBfS5?Mkda$6s?3T6D3%;W`lOcQzb&FSCd1d7lS6uN9IHpHa7-P!`r=4?2xa9Jy z1JC1F@SW0GGq~`vJDD{LfW%Oupq;=P6oO?~oCRW)MukB-A1GsB+!olD^gKJigp8MZ~90B8Wvhmo>&Mc-oszMmU1Fqw5SC#!2S zXu_y7YyxUc6z9Xb#X}E0)OC|hHfeJ5+w7Unt~2hvAQjVG}|EV%$Yl z&<8^dl;RCS(E}|~i-53HB&U?6%ajtt1x~DDyP%gG>KSDkYxK}4l7UzSjq6WH!ZAX_ zk}#irjgRZ>zUb6(;c&qj$A_(Od88=?a$bMrkw>=Jbkj|_J8RaNsA+RyZ7tn9tn078 z{`yV>1`HU9W1dxOliBEHf4MdsisbnU#|n&)xtk#YJNqy3zeO`fH51@Ywt$mR9E3r| zxUhI|)hCV**l=7MF!9WAoZfWH^mH7{D)8~d@d0OzJ~M%Z!lRy!WmMLqELq`$BB|4H z)vb5l8x~z;;jrG?Ylu~?75H>oW|?LB_w3p8`WtSzfsXc)adyz`)pMIbt^jNPRByNc z{`>zE`{)guqQ)8LUJ_2nF^~JxgQD379iN353pqAPL&G*lh%uMDyduDcqkbGr>BSqevYJDMbkosiD(ND*hI9Ye@d39o zhQ1rG@8YZ0pj~pc)mGcMef##;H|J0Mxk(`R4D0%S{ra{1;~)Qc4Gta$RJ9@w@SMpJ z!%h#Jeds%1I9xEbt%#tmJ|!sd#y#;L920#Mw(hq{l#??r zZDX&{y;rYZYm6B)=H^M0CY9uADQ44qg;q_caZIz(Y;F1FmtUUIu3bBxVXj$t$>D%Q zhlPLNJ6d?YbtwWV*ktY7b_Ep$a=81!XsAv~9B@%PYE)ooz@U(+genPkBv9p4ktSvz z6Nkm9CAH8vk~m*WSz;TFT9n5IZDwI2CHr#(T%(57|k z1h3YZK7IP{7g}hc<1n6|v5tyVqpA!qEUG+S4eE6K71!c}4?fs#i6xe}8EuDGq~px9 z_b-kKBS$@$jT?zOCHhdTeCs1}3X~jeKj5kZM+XDakhaY};xh`G0j6mDrRmC28 z-05Y>LsaSv_s~gLdEnjQ$#Dv`InyO679wI=t273FI{ZR2T) z2Y_g~OUi;qb+3c7;#HD)}T*AvztIJK>F{s*IunR+;GFc!nj7C{ygpMi^AV;_$NJ@ zgnPrBV{ooxtTaqPbY_c|^JK_<2B0lE9WomWhdujhJi3 zlLRr4q*BuqvtR;QdKtE8eHL;wBXT`*4JZp(4gwGLGX*FwC6wd?KoThug^~`-KW@Gw zobiXt3SgBMW5(Fwat9wHA}JRZudUa}dbW@wbJ8&JTHv_nG#vNvX0V#&va7BQ$DfKV zg9gi4R+AB0(AWY%#}!Ti6bMFA7y9+-6|TSP!qBt#!0-VsP0zUkOEeEH2;ecU!zBDe+Dl zc33!I&!4hev*38>92^gw03_d)k(^7D%IwTQ9ud~{cm};clIN(#q}+{Z^@KcmNRS1J zU3a=A4+G<(ILgwX+a=iQw`s4Ga59sqFjpju5Q}wyXNBMtJRo}zh#kqTj`St+6BFlE zP)T2m8*kPoU%`#CB_YWtFz(KT>%1azq&NLdH@1nDFo8q<^jS(844O^Ghbo_R=7qQ~ z{E^7Gdc_zrmcU>xxV2taCyXPrlRzXPazUdP zVDaqPDGM*W@Nm%0)~>86ClcLUB@eEtthmAoEBqCLc<@!Vocg;9!!5XPIX9{_j3A|R zqJvbEn@dA;t<_fzyA0VroP6wIdQ^tP?eT!$CL69B+O=yNrhfK$_!JAbNI8+@q)(nj z$09^hlu`}oYy~EBya$TdY_GZ6%Hiv;zp-0pGdzw{S>lxNWk1Sy-n7Z|^WBe#rK{tx zu9JG?7mKrISA2mWc{a{r(U;iInKO<9;T>Ff{rc+}Ve{S_7_iD3H~RJ3cH3=lxcu_V zc@GgeNSi9?37l!0VC4WY9LD%i@bAlxmGP-g+ne`7hT69;lZTIT}8Y8^AawlE)#(&4WO67I(~bSDqj4 zzV9JDE+kkMK*MxwP`VwYr^txFcihIIkV9xK=9g`J8`@5PN3omM!$zBYT?pKYbHgl;%cz2fA78b1~ryEye0F9 zV^7sBo|ZH;sF+$^o08f$8ES&|3wVyjeAcU0neyq>@brHsgqL1@jf9GZA0Lp9 z*vbNqnJEgSn7RfOiMDsqCMLTpuef~Jc!PDqPw>RVq6_1Vci`dlUK^beM+wHApvY4? zVK60=>FuZD*2aDM1_cWXxZRBwWy`=d=-;9(Cd1y>|}3`QJk#$I2D17QDLA zMjQPI?|S63W`663vz~>>WzRAIfRAa{g;U={arW}6N{9~Q%+Y_)9=bwo(J&Ud@tS5M zfonx9wo~9ap1hCa9=z1x)hF-MU4E}kdMotmKO_a8sL~V+ET$%tp&~!=jRLG~ z$gFaOcRTKbOH({1@Ld@Zqp(sMCP%G8Z`b2zUJE>PbWANojvaI2a3l{CmnCjtYQte! z+&Cpidlh?O3jt7fijRPfH`sG)VtMePaahyAktfE<+W8x2gK>akDtTKn+#iOK=*brZ z&ph{{9wVCY^2Bh>jkkxtU;oealUOpy14IfA1w=u%yUBT468pGxp_%w&g7Z)0k>2fh zeG+3~3Da6pzH|U&p@rIp<+^oM;&(;zuq?kE`fIEjx^-PDv~AlO4=2nF$DVqw#%iq? zYsMTn`L3)YNwoxWb6D3u_Sj>CaGS=O6*)xUKW?}!jKhlzWUvCnT(BUs8$l5UwvH3& z&G95Jjx!vGC=ZObTSVIB*M8c3tQnm$fLou>Rn5G zVs!n@cd&>4Kp+dCEg8^3WF<#B1fYB>C&{b@)M6myu-=b)hJRf@BCN8(R(L*aT0%EI z5f#vkL_NxvCLD-`F))1yumRCILafC*B4^~$qJ&gNg|3;5hI4iMZKxP0M&#_MPA;%* z3~82|RZ=p<$$2{mcTtNVktXAT#+P4vBg{m6GJ~~y8~5+)^gLT7mV{xpdIFCXZH8ve zW1&hjP_#&v)xYt^8~tk~4~1QO({171ck#q1ovq-QIodj-gEWK{YcF)3ZFvSXe2gl( zn{U5cN*>ZWJ@Ldh)}B-;d8iZ-@Gt$O0CkLRC!Jun_T-{I3ZD2D7;+Gi zuq6F4T<9-mSdqqL7+wJ~?TJC%xx_Xpl3H;F6CaarJR@7-NwD~k3GcV!wL%u&XvX9r zrF0W&gO1~_|K~{IR9i9Tj6KF{&O((Eh&-tp$Lg0_YN?us?Yzh5{7bGhis*R@2UyrY z`JvE^=p6Q9P#B;{reFz+-gKadxM~P5zrvsER^)i`q^gEqY^j`e@`6C4E4_Rm$}d%t zgBHvZ@v%dl4I|SZ6k>^$CtEJr+QJZTXW&VbXvK#;Xi8h$|~hNcjwi zpWxvH@}H`iS|dWD{nU|T7vSj^#;#V0u~!}dFKLw1)JmYb+itsUDV!VFGAAf+-*nqu zINE>9jHZ>*2eKH*RF=if5K2^qadAfyhi%u=>BJ`y`6#iy7=NOOUOd@$RX9$*_Lm1o zc_G5ci|wd^%V%wT!8nR{Em#|OHVn^$==23fq@rFK1BoOPaFQGdVW6!|wiv{cZ)n7} z;*1JBGRMi@@YJ&}*ts}yqw2Z*y71;(?}b}%V}7l|*fR%!L*hbMMpT|aj>x)2pFVwd zMP2h%5r4S&ipX1DpdU&_krSP(0kqiyP6QJm=ZKKNShA*3l8D7?wFN2Y<8TU)4U5F& zM?IpBiIrti(%WR`8c?jsXU#v3dXRnQ6NPvqT$vI^8ugd`Xd467MAfJm5EPRgGK5Au zGWiiZ=_DlLumF#;`P!SvPB62dl=ver3|?^A-;AdEx@F7(9t)G5FNvZ&fqa1QdR$!F z%>k9_QFxx~Mf}WVG546t?(8%mXL8JD0y6{J7`otQQ?d0KKjWL@i6}bLJ>>FiD~k?_ z8nGh1NoQ>`9By(*Lv0Pq__+o~?+la}7~&|~3m53bn51bz{=fo`%=GwO7tQ?aD zp$%kJz>+MG{-=}7s!cqt87Q)MBc zwhob12xc+yphLrgOqkn5a`HBqc(E-AKG@N*V;HjIfbf&;w+wWMtxjJ#aBCy#RmJ(}h);GnG$I@sx5IO{}4A|mnMk|ak{ zJB=|YSt3O?^>~JTK)>E$=uU(16lw38KbxKRB)mAQ*Ven3&Qv=9AIYuC1Icy{!yv%HojA)tXNE~6)YmCOXtOuK>W#%$wvbmQi#wez0E?F1c`6tB@&@W&LoI^ z)##J21=EBoc>s4O8V_Kok%a_($rb|+f?hazLP|=cjrvkIPejSD3(GINjNVcnYLcZH#7Ten37^lB7`R=;oJ9-<3c~WhMP;NyE}!(SNp!d9iAZ{v zUl-*^1q%M8Cz6Ws5=-a+0enE?; zPV$A3Vjb;{%0`wNHJ^|_4X6v;jnzsZ=E9?oKDz408*ltP2$)2vcmf$Ga>Iff#x_qF z6&i2i9voh_$Q6;Da;Pz}wHda^q6_QHsI%fT-7|4@`@_kTEkPIr3dZ7wnsMG^%+a=p ziH$@>=R{A>GM*9%$VpeqK;L9RKgqS8(kY5GQ7#|jlJ9gRUK88@Mtagl!mE^j=Gi>~k0e2+EW z^3e~RUWkmHd4neq;3_)W#`DvgJD^g14{ntIjtXOtYFTiMC)*x;)43tMqWg8~!uq(q zlDa?s)PIaHGHB4Pc$DNEZL21PrQlh#eKwM-qH}Uwxl4ntAN^R&md;b8kZ;;kEw<4E zt;jWimTD$C?W@;|!}rB6ss1>&!4@h#n`5P`{jyosDEQhCAYX|@`S^1^sUte3p6IBb zlr8+`{wcFx!N3?#C-MgT{dONhZWT++iAym^W78SPJb@^+Zt=wzugBZsH?7De0>?b^ zSZt9bDhwkmkuplNgZ9b5Pd@q7jFZ(Fi)g+a6>$lo-SmaqFADZ4Gtx+ekT42F^&{)N zW65I!rl(;>Uu(eStApW`*D|0^_u1^R^N!(XcoXZgbN|+P*RrI3hc6LDDY09Au%zKw z($jT}Mwk0Pw@to?j&wYdH2{hA!{eT;nLx}5=Elb#e@t|dqE0{K9auMVK7)`%xUGGP%p9fcxe3;JYq<`ttt z(xAaMS(@kB0ED=4AkhO$APz-`M#`usxj=i86BiBMmALO7KMgxth9liT)V^Jtu+xtRhW+;3S$Fs4 z)bq0a7H$CZV)3_)$YH9XJ9qm^Z~&yfkO5c1WoBo#3Cccgm!D!A)u&TG$46;i4Lw({ z{&A$38&3k=xz^3H3&T&gnz!$dd3Zd?K~F{TM?LHZj3N?YY}*!MTMxQ~NUR% z1yVH5gK3;?*c=qMKB+-I=#xKD9LBcz5TK3}umok_^dUd{1!x>rSiW1>XOEr3?mr!* z7dRQ_{9E%wF-h&B5fw0h%g|(Sv`980BC_9n;l82+jFtPs*jWOCkUjut?6@atCJ=Ii zxAcICxtd%&fgD(mdq7s=K(#XF5hPGFjFqz@1KAMQ?9-aU2m-7a4DE^xjEiAs`wotTugc`mi z-1Ns<8x8DFP_rYtpOi#NzAClJ96oZ}CTdn){VpP{0yv_fuhdg3t%RgpR+3AET^ zi}7XED^wzO*bCWf`)$`NlXNgfW9^`f#sE(JXsDq?g9sxxtx#L`^E`|af=q=#dNGh_ zv50&G0KF`T%uS9ZR6!mSEaFf%>O?|PFT8O3up4HY{r21iH_$I@Y!~2~0eu7aG0QOO z5p|VH7-PCPkS!J^0UPl^Q2vi-G~0b4y3}!MG9a<>;qAM%3Uh-w^2sNkkb#&mft*|2 zh!G=}Lw})aOnBB(mmz>qC=POHDke~n`k1LPiO^Tv=l~gH;+&p=7Zt!t2^kcvBCYsg z6)la}Nxl-t$D({YzA6lh3P?}3`MAyjKif6zGI;yIuMd7-3V*^+|N1MaXg-QgO}3j4 z%p>$Ai`gH2havi2#}tL*h-SGtGYzN!7YF z*Icvu5fp^HhEGF!;3-ojT0&*=v9!H#JSiR>16=yZ{A9++ZsNM(1fy*{nV=l71Z9gw zsN!#Z;tGbY97(Xo0mr$T0eFko4S%^PJbd?!Iyi2wgSr>%AU3aUvwWx2QGwgH9 z`qkIoOiuAxl(AMa&?hQ%02>-mEnhlFezYWtAVB0arHv;R9dCRSW1{2xv2WnBohzzc zX%%ziZXfeq7`fEpRUfqzXyWS@tf-_jk%H{RtgygB!Kj<7NW3E0c@kj+MB4gjF56;0 z3xgzI>4;(FBON61<`lNMn>ujspPtF8dH_T8(RK29^d`BQuJoSa%Yj)kDT!TF zg*xU4xohzm$T}@sE?I#lfhHn5S&HqSWGH4YHK&FVMkT3cF)TVaR89gUqAT}k6z~iF z#!72hPhQTKiDtwumW~^M_XHle&u(}j)y8sG#-Ul7A5H!w3_InVz`GGx%qG0h>G&fw z)6I<#em&ZF7F?oxGT*wh2{NZx#f=AaATVDRJlJx-5lQ2~Rdf^p!YHXBOpHlfN?r7D zAk7>hvQ+Z~A_jQWEzCx>@-du8rIP|;Q30El0Liw5A{}UiiY$#901(k5BbpVHgtAP} zNEfU4i-SW{p*_CY#a~mLaq`EJBg1B^Zn|xxl4r`)sr0q{K<2+0c6c}#-?5n6;t51A z(JuMgnMQxg9~dn487Sh$WOT;B{BI0MXZ}YkhQV3W770W(Stp6p$SjSRBNU_J2}A&n zGwVA$ffWTXJu;}1ESN<=F`X%K(PU-@g^U(aq}3S0b*fC zBtm=E)ygz})D}XPTw?KX<|)SljmpN%23#CTOijGR;0rbu6!Dm6O>7n7{oXTL|H~gnlHXUjBAwg8OV2GBEewI z8EEDVyy*%Dr~B`{n{NI-@z;lkzg}}=co{$M&E8_V^(};qJ$bw><6w{*sc~swxP;RY zw0SvvjP{U&_6~dEPQRwSg*~#FtBS89KJoPP!smGVnS$p*K?GX1Y!NOy{|sH3pDQ6{ z#IH@m_+e@5-O>;>%%mWP5oTcJi6wvMaAqqIe>e<9Mw*58N{Yq zN*R$6w|B4gwR;-4b-za6?*O*WSmvT9$L^W(2GvJb4I_s?)d<7pLRQT}2$#@QalHO17rS4TH zDyJAwrlb*hTDjlF9H^ATcQU>8>;nm>LgO3g$A=BS!ZM>|2C9Hu0@`x>p<&I{R|#j} z_-CW_*9m9+{*v$)%s?OD6ugX-m8HgufovcKN^}mJu#0Q|0imZBhU_>n{LcYz38op;fn1AjeGPpY6o0>#J%4aVz}f(@(>Fc!}m^SNvVc(**ugZU2Gq%QT?V(V-uRb`!%8c3pJyt)hc~I(!E3ai zs-Q>@_=L3z+h`Dr=W9N}J0d$Hxx3@VQV-*f!fCW4;+roWJJN$vtYjn^p#ea;Oa#!v zja*!2jsPu{@&uYz>w~Tf@c-xwl| zkE?Ag#KB|a>1bgx5%KJPV+mBABRrAl1y}RGYb1fNe`G$;ASMVFPb7l9Ez7gKp#b44 z``AOFceudVpB?zC@Zi|^%g08Wef{1CABLg(9vTk+-&6FGs-%CWrzcULO*Ra-{QXb! zC3$FQnt>E}rAo4&AkPQ-i#oz_=1=tbt=WmZg#>WvPf8|Ec@d1OQhIeMgMZ-B*exzG zN0Nj*f%ra|lKoq`4vQ_;Ng&xkJ+S2FvTf?6+>oKfqH_G3rN9aAzW+fOvd6)p&(=GI zKjIa^{)VktaOV(k-A%WH_fNy92gb^`xfaY}D;AXP@#Mv|S6tAjBb}-_>X%;O{aH{% z%0v%F#aMBX&kf7`NPl9X`do-qY|z$D!Qgl@n%Le!9T_lor0?7bPY>59<&%sjkl5g? z@`p8OaUi*TR5W5qbE-o_Vh2MsHd9d!h$|`SG7<#|p!|fFUI{1s_Uy1GUfQtjke`K% z{&ZFFI{=(!cIvm@emCsC-(lgGN1de4B8Zlb#-HhD8btB9AiHC@;^MPHn>JNXh0Tum zCgW-bO3q+|4s;Ka4TBrmQGYBP^*YBSE@^WZ@lsKfD{&B5q9V$Qctvonf*kn>Wf&FGu?{Ly$Ni^m5gaoXcAvA65JFtxpkXtT;TaROV)RXWVb*Olz*DDw7DoK_+VF>quf)p(aBatfk;&)b zKuUac_SyZX;cVQ`L%rr_c^^N!d1IQATK3a@F~Ow^y;11o{&RdK5%5w?}sTOOG~_bpu{7{VKjMo{g6_SJn(f7!87I76sE6AZ0r0 z6c|GzD*s~~EqUBva!Vx|E<`371}K7;O1NBj=~ba^n>Jzn_0|sSud`NI_eX2uQpYkn ziT3$t({w%PUhJlB#YbMg;DuiW01POcMNM>KU<_P`OEW{mnZNm8! zIps}>F4Wc&1ty{E$)S-fiAY8mndzXKefm?3IS>n(5GmHgS!spZGZ1qGL?o1m{AYZ_ z(@#JB$~x;*KhwGb&V^71B}&wxyfQ}=Nn%!*A<`2Bb#7HTG5ho&5u-x{VmpGTlL3e`CI@*R&*>)}BVG$)#W%bu5ul9e3N2_XItn_KDjRS= za!3ULJ#iwuM4sYAaEc3=;lENs(T6>{FB_Rwu9zbjQSuO@AEz?OeOJ&))2yeu~nEC2v@=xf)Y^XFcXQLd4sh47m~wcB8l92$Q{5#DRqR|715++ z^p>eif^2Zepl!oxCmv1c0xJ_Ap$HD;lC)b;XvLsX3u#WUc)9oax{F!`ZexmP0AyTyCxSUAd7+nMJ zZK_q68_W?Qn*t3!1Cfpc-{BRp`9TulC8clgjk3NgBDEP!;{pr?)>M{`ras2)-(WJr zc0VMHleqC0OPNe=7`8USUStX2nx08tBA-|VeRQ8#ab)0teqj;3r)WVI29cktlBrO{ z?590wXSPts6mWJ7LoLFIN>fR*DBi_1;({}bUKqA=Plyzta{k2X-D^EVuCk7~@g0T} zJ5L}2w0!p2XZ+wr)v{UdUK)$>jChG3`e?%-863f$JhGF79LJx0gl_Jf)F#}uaA6>j z!w7enBqq#R_);c0Sxv#fMfJ@$r57B9HlJ5-;xq$4B$JsE+ooqqda6tVxHz)cw74)| zA0^&#VE?du_ilij-5f5+jhXx`G3ZD7z8mw=_v!_?!51qK+ZP=JMREbZd+xdC##Cn! zLeDi<)2r%aP(qCAWtNnTLxOCN_?9GuM8hJo!6Q-}OFiM3s%CsKUq$J1nByBulVNIQ z8US$D-4CRvY@KF)*Y=8J*a6j~9Thc|p-O5XFdm|)VKqF!?W4p&iInUiepcu|=dPIu zoldx(#(Rru739WPjOQ~@+J#YqmYsIm=|4EzIHejR3hcW{+>L?4g3hfVDoJlRoLZtS z5XYrBfpM}%Uw^D4o(v+C0F_v?&!)Uh9%M%tIoJ?kq$iw<%T+C&!r%(8Gx;q1?4Tp` zK@tHL!0LsU>=&__Vfy-RO!~u5v`#RYij}z!+M;2EQFD3$iPOhoqdNLRKEasrG!|UD zpU9{8M(fIVVp3tnoM3K{O}3Q&3d6v6c%|!i_!#}e6?i02pG~18m4^)$aMp2{@K_Rv zeebXhoa7h`aLDOt6p_7ON=RZ9;&35SM0EDpvl<987?d(f1h&<%sWCc2oUuZiikEst5aD`G zxD&lLDl#FjSfeQ)v(NtsH*tnT7=y#w+e9`Tal?&R?}zPvx=$E>?#1){xM+fAph7>_ zku{6e=1&i}+$Y0{Q5SmPaqWHg7!v-1x8C1&&7TNV;UnGSM%@@LKKnOerycPDV_wIE zGsroSqwW2z@OqnCCFVp)@(|y7F_E~m#M0)bn{MifH!yI2SG8=9YgLbo!`sdnp{j*r zQAISp=OB{V{G$dOX6(G?s5!NUj3__xCev8R+Z-Q-M|i=XfXExw>Z`02E+bu*{)Zly zeCo-=+jRf=_e*QCx%uXs`(PLL9FV@oG82ntqZSzzHC7^BfBp4SPdxF&J@J%A)!(_; zCx(%@_tv)-b3kEu!Ix~QDvLRV6@%*mF2>9x`A&|aLo3jW6`5e6hrJ)YO$sk1)WENl zkWp&*2(KN!26ribGvgb)7jfNrdNcoomtPH6{ryH)v!wQ9B2XsAQTG??@9-t&C-4n5 zUQ5G^pTbg0E?)6%vHbG&Xq>gb@|v5%G~}epNYhSbk2`6ke<-MM|OXUkL>;r2P+j`09Se!+CJ5&ozs4GAf=hz4)9{ z!&)^QYjktAzV7Bb!XZbWOohatR8RB(&V9+Yxy3AFmqq?Shr6tO_t+_%aP%()=LWvd z|NL6_dVigrvM~FdI^fK6+wj~Ych-D36T7cV@DbjVz*tXWpymujCh1og+A5ls(E9eF zhaS2i!YWq$q~dl1wp75S4pz2x16^$=lN@wnfY^;q)^ZH-MP|vPHU{LXh(N=mubpvX zV*oP25BJF*yd$b)Qv?2)at-162``7Of4pZn`}{xYW3@?WGc}&)o8DX} z@HFX#eD|fyr&jK>sH60k15KgNr%elgyy6;t=9>_HFKpz!qxA(t_MJZY0u1QW0eHg0 zZ&fB{1lJ^wMap>xBO3B?)NG0b zH!$I*aBW4A-iL%hK0qaXN(eC{7TH)W@5CnI;s@uDRwbt=6?tILgXDNtbBwfgc-PO& za2CFtGXRO?2fWU5ZtLgpjGYVvBbRSHXFUv{o>67hX15*RiG~cI_6*E4kKpEd7W=w2 zTQ(@Su^W9s`^b0b;Oz*lT9^aO1t9ot3moKl*6C+F+g{Qv^#1$rSKdiS%&oWFEUbzH zPg+H83LM*UAsU*BZzPEw0P)WU_4u@Dt5!G^BVIBV9Rl=EhZ>pjqT$BP@m;XPZ{EDN0o zv4o1KB5}Qx1W`{}3w95TD#NXzWOE%aDP{|9C_%0vWF_V;S7wc?6ny!B&>w3UlL^8x)tsK1SqE`+zJOcX8vZU z2z=oj$&s@_6}==F+A@mt7@`b!yxJTW?>sT1XsRo`lC&->1qRx%B1m)NHzhHpGD{K=@U=Kb6d_tUWg(i|HBU6JGQD;Gh+@g zfw)jpE~zB;fOtFooCmB8P99y0H$ZHeD9RcQhvN%_c;Qmy)b#4MJ4c264*9iAOa{wvv5&@~o!L)a5`awwRhS8Xw5iJD>44j$j z8A$lyc&wWT+5XATh|r{JG+x%8%XcFBPQ?dfT|WCzKQ6>hwiQg2JRB4`SJIzEjugUS z2k%oed59TfUupJnhvY29oFcd|viv#EyUW{t_0?A++q7v@^;X3hc$9YC-rIzC@X4UG zwS%zIEX2n~+O)>84{uzTL0rLgP>Ej~=6BEi9W_2X5U=3HEzXJsIwlA@=4dgE2qAP_ zWD$K-O+RHR#E3L*;yuC07fCNZ94^{P4q>Kr;?HBaz26CA|)v3D9rnrt_4SGZ62VmEN&K|?kB?C7GXIVYCb6W*uA%CCM8~_f>=C_53Fp9 zG5&P_1`E#t&W!LL9_{&L%G4}*=%(l>xJC4teEEaJ;AxKZIzz&EXPm-cbkRl3%NR1f z49CbVDLi>hWH~QSvRN7MjPglm{5}lYb^qWm$;>pErFp}xcZH8Xo)QC%Vfw{OmE_5F zE^>-G(MK`oSc{MGlTXkT468y+9lp(aaLwc)8^oNC9;X~Yn~Z%y(@MSza~Nw!B!iio zZMNB6_&GNrM<{RazUyE-F@YPB7|@J?+7ZUB%M*b$W;PkdT1D1UwAk2+##0^CzIBNw zU{(_i<3^VFlLudWvd}{9@Vs|>b^*u|fix^4jcs*fLJ>~ADTK0AXZn*cjieaPbBPZ7ZZp9YDcYHrYtYICYAaODFV+YQ>Vu)XF$x zJgOgh;emwRYJA?3d>CuQd?cFu0mU4kgd_#+RKz#+tl=;w7mpCR8*798;m$aneTkt| zUi0KzzioC(KXoaQ%v96bXsN+*Fp2}|E{iXw2MPIlx1s4urG16n<21a0iNAi>CUH(4Nu`3#XynJli9t!i3N5988Dqf6gfkvL4>f4J zt@JG2cd+dNJb63pWV{ymqmK<&CQ^fejzDdh06g`}v=>)>?}vl6m0F-IrhcqM&Fcn-(T(m9A+S7hWslu}~X)Y^?3O@4h=0 zyQ>w@uUbwx<*ab=Wmidz3u86wa43c!_k(pJ-rTvMU`=t%pBTJQ7?jD zehvDOyKiXp?Hf-%`Q*OqufP7kKaq7e)ZygJP@kpE(x`zYR3V&st zfA((+=L3=36SpuHZE0%RN^lH$?Km2h!_Z=#(I>wcQsPeu?sMYs{1Wdu{(Rc!#-I46 zhA6d)yj{Lr9&w~A7_wHIxKv6Iblx@nkogTd^~VW{J19ZVY%$An}Y)%qIW< z6M0EQK~##BI|1|+7&upVrf5m-JkjR+t@C3n2FURvVu^f{Z7R6eTt5$x`cgAWOv(XB zUrPaNk{|J1H;aY!gjO;h;St+?6k1-pQVX7eRbJo zm+f=cU3c*yjk_&RB6qd7IArbM(stA_ zF)id1WYR(G9kPsivT2<{M?y47u;B&xo@$Aok9nQR7pM%8zBRrLc$ejm!fpS!tkHX$ z-hA`Tv%7cielGa&xQ9!gK$K9iRNIB+$Rtj?F|=p?nYt=>-BlO^E}dXFnDaaFJdK zOM}iz`cg;Y#D!xfi(!wLnHXm;vy%K$dg9P_`6*K=(V{`HhN6ztQwxzG)^%i;LqzL@ zOGSUiD~W5pb&mLqC1Z*vlg1M#-+d9SVreXaq%$a4lOdVUc)@V zu1keW{&0o{SZ4p-?6y#AyLZvHefLx4_ zWACDKextL_2CKSmKrDwbroixBSDrkjtjpLmmOze9CS1sv2h=k*-+c22ajC!Nc_HA1 zZMN!%*8&eqfuzUzCpV*Qj*(}HZc^ZwJh%)}t5$xaaN{vC%>!f*`U*FlE!HvYGGqtQCvO>pL`#P5 zM{_t4SQu;zi22=S4UR}Y3H4tv5IvDuP)ld)DL4i;xChs3AB*T<9qFkYS$geo0ws!g z*5tQH3h{;fQt}8d5M3nh64)mkRO92hj>y%wglb?FR*Y)Z90lmq$exc!3Ih$ zU)%{6l7^$P#)}=>SmKNVlx_NNrcW3|Y*o^~lsxi`hAaCT!XCIw^!RvRbWUI1X3Q8n z#t>uquFDh1j43B9>(}}jUxu1R)kf%>x_j@v_lp4o228}SvLCZwPL%hz#qR96=U)u` zbfyZhEpX5^dYufYIqPoAbPemQ(=+gmsk{}W8{UW97FY3kvhpk3%x@$)g|Sf_Gq5FO z0bq+I(OU)>FkADjXs4cdOt|*O+X}`}PghbKgOZ9|AqkbU^O|rjmV7QQhG+RPO}i&Gy3%Da}V~VmlCN~;k`pwTzX#E4qx7p7r;qVzdHpU_vB%{ zB3@|4_cH2^MfAHYwix<7bnj5%w@4vBf*##8M*rf^0!PiF^WE>jb@?1sn~hlb_I&;f zUZ`DL2dSngmyu?MD4z!SnAc_%rN<%$Xj646jM5HoUR!mg6>!YBx$xHRxklJv-L-M8 zuv63vMD{QIltz($+pYVB5f`1==si9pW~>-9G&%F+vyUlbnh~|pl5A=e(-0h=HIvUT zwzkIi#M{39`s;sQWRXR94@u3!yBH5Y=A>}-wKplGDTr`}b_J1|LTJ&JoAnNB^;|vN zgpZNDgC|J|B-{ezSg|HBxaOwHRjFFf&MwTExP@L5UWWrR?#@PG zTHF{HT)R1PrJ9Cshu7)yexOIjJz+tskUUQNEfS7jT)uydy;+_yu;4oeRiVv=N=lwM zoPtWah?7%@7sx#zBwG_YNdn}H-%)3WDC~m?bL8d^#%aVzRIWOrV{u<$ET-ZlJ zmp9oz`OI^=sgB2dd;|Rr*kH!sp}@~R=cSm43T7tWWc}(F`-R~rA5$XFFlSwV`Q?}6 zw%l^d{U=VG$e--K>*B9!a*q;HJu8C>kU2>pvT>i4u*B8+?{Jp-p6$2aeoNds(4}Os zLT7XAB6tfcUyR8jr_)m&oS0O+TF>vbPQ~}TY_@>&JmE6*LM^Jt5(nuTfJ$c}JBHv8 z3n_Xmzg!r+Wm93U?Sz z*mvK3cfb4YyFUYNo;*Ap;lkqXuwE0^bDBV8ZC032Z}UD{+%i0K6wWOS#2L^<8`EKf z^?nrA!P{2v#Rpub<1t(@hNr|Z)=U;APudJ692ophl5GR|F}6{Ava2sB zaWu%4bqGNCn4rtz$HS9&Y+3g$3Db7%9$wy8emUM}z02V3$)(YPTQuH0`Q(#_{^?JD z`Vh!@^7!mS9g)@eH6Q%8L^?G?7b%s6ns z7WfsowD|Kr=KJvJ%lq(gmitlb<>yg1A$S{g&ez+PM8u4VU_|Out*E7F+2N%Jo8g3F zNhq3z&K`+8~KmKIou>uEsIZvSoA?ySxDV+u`Toeb85ghVP04YBG20O50I=XIx*C23)|EhWAW$TFoUxppQAAkHLbUkr+u7|s=xt@8zL!~(qh>Xf3K@X_l!Tc{LOqg)T z4m<3yeq+DRoQC%k?Y-x&dc@}`91DC0hcb8+5@Vm$22H_@ns{teC`g|e02&dDEBQt~ zQ3>{X;Jfr|t+5)u8Gjm%O_E6nI`k2KREQP%MV?}THhDOe^p7Z&kBNxQQq(PR{qJCW zrTWTC&k3uovZ4()Va;D#d+oK?o+Cz#@M9iNpk_@Ts?uBuL|$$=+br(81|-loBS((B zW9ZPKtKwOsm29~7nje4d->*;De%r0W3lm<#H^p#PmH~>>3x#oUA>L-#QXDau+7g#x zp{d@i3_xQu17H5M^io~Ib@+BX(JV=`Gz{x(O#rl%JUg&?!dj(>)^PkYmQi}&7ZeF!utyk+;m_~5u+c@5NeE9I;d+xpW-cJEDPadCn=2`Mkv*^~^O3vY^^JeWc5fhd( zk!B-Y!EcMJ!bjs1Q$GjH@zHF0x#zyo;abc}cmDfc{POrF&K*YYvyo<^#FAo|1}J%O zIU}IYSgQbyDU%;CD|v+D2^nXS1S>Nk@)zHNZD@ntBJWJ#2ky3N!cAY1w7hC~=bd*h z?cKZgIk=zMuWK=Z^5dO(nmkmf%;It#=eqCwS#$B@B2OaK_uO+&UrfKJwr<^eg*lbT zcjEl>j(;ne9v%Ng`sLZD0iv-FOiI#YxS#tWk@g8Oz2AsI{)?1GOu_uk!`N6Vp4qnf;ti}jv*Ssz+gEbeQ zjd*aK5(x)??QXyQ_Mb1m{PMp2Q3)SlJ8peQjv_fr$2;PZLtlKrmmjFvddt50IG$0?*&1@bnlx$B z#e)V7x)eV~{2pdcobp{3m0|JPddmZS=$A!kCA~hZkOa1>eYcPeCu?@3RGRJZmcBE!m3M$bdy;h+kJ%ugeR35|#3UESNM*7_ZBd$ED2EkT*D@Hp(&dNj8})A2SCek%KwiLZxOCr;91&y#Vre;UqwPs3x-ctSI_zf_iV z=+ItoGR2$Pa9b^w4h!k!puE{_W!&J#i?1u-W3_x`ZgUsxu3mravB%EHZUC#6IP?5? zr@3vLQ+`YyPaqx>aW~cm3*W)A2$s%Rmc-Hxvrv!m4p=&3;Z^*luyn)O>*dFc8FLVRvOfKP zJ&R}~ZKch$J^FyYpik%<`lvM)`YcZz`f|RP1tK)F(&e-E#kVLr$QQ!Y9yMxIADlnh zf8m7}?h|3Ce(+@`J|#I8GtT8(ZMD@{Si{{E7yhF1Hf!#t{ERY>Z~Pd?Yk>ayiYE?h zKPK|s+CqTwdmWvyq!|hA?uQ?K_=YdO_~L1}mG=1`>a0ZFX#;JcO<1~N;jBwrX)|r7 z53231=(7b{7PtbL^|>x=b74YxQgIgYnaJC!an*UXZMWTa@RCa|xg%~HVF13j1$S${ z|G@_z+=h$Gw;XW50WU&PKX2o;&ph7etm6mB`An0y7nr?y&=!~yWrA~^$`h$PnMx7~ zeCqL2cjdl)`}W2K+f8r)x)Cm!a7$ib1=p#j;3xQaTg;s6Z=|lAX<<6fY-$7{!Kb}?);;6?b@w~*A;ii ziOP2K!bt2&r{hMhH?V7(IC=8qXKLkmcXvB zJucRAS%@`eE-kbVv&a`*aLX;1FIi((^aYaT!%si`^tHF&e)~0C4Sx+MLEnwZ;z__n zC|@|+ILzCQ&)OF>RoMUDmOMD$TP34nxvt*!1S+pRVan?q&)a0rHWwDJ^L8FYZ|8x| zXAEz9l2ocmo8#p?DVN1z*885Wb7y@|RjjC1t~cA>XU(K>n76Cdj^{OnvF*j%c`&`r zx_l{5it;}39Yz^W&o&GDKd9mk`avn3DO;|;_gT;GLbf@5CMGpKzPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91ke~wq1ONa40RR91kN^Mx06#wphyVaU07*naRCodHeF>mlRdx10_r1&s znMr^^0)$x*WKb%|px{UqS_e>25%8~dwpOiD<;S5GZ50Z&ihu)91m|k0%8a7OEb~ml zka?c--n;+zeQT|K_Px0Y3CRoLulv1w_TFpw*09$(_uPBWJvXI4w?Aj#&l&i02L7CZ zKWE_28TfMs{`X~|`rj9F>hGAF|C@5!-^qNwbGfegI`KNuI>pebNIKC%cU`=Yc|rE; zo3Iy3aGl~QX&R5)Zhq!Bny4M)%;Jn+S- znU*xGYH>={;zmk~A-kli(&LbOpxK)q98^^gJaOL*vs}I`m~tF>>_iLR3#u=Z`+{=3 zaJEwnL8~V1dho>Fsyd=CRfnh4w|6sDyMj3i1po+?3neksEG7aE2uOjh6>n-w0u(St z@9NTMRE-6|eX!YV{;5$_*LL;vT=V3EH_b2$5^(^HW7CNiye+=3v$Vy#+Tvil-!ZQy zPCax?>gqYXFEx*7Bot0F?H-y|2q+;fJB!B0Q3Wa>)&}T83|L2SIpVNUt}G(aL9*hs z!h@~*A$Lux@K{w{JLBOS=22Aub??(mkNFngw`J%B=P&)Q#_zS)kg8|I8!>)IYF0;K zeYS`i%!D2gX|tO>6NLb?|F4y_ax01M8JQqtg9McAfaRlQZS`D@^Rzo%;a zboM>hE(bah!i_N2J`eg9*SAHu#rYQwm40e`_~C~)?t5n0D@KnRed6$8LynvFPlc&Tm$C9sU8LQ!=Rz>a01!#-NTavnN5LgnI2i&AR*s980? zx5xO#_19i|ZJ+CwFy%O)x2Qg{vqd>oI8*wk@q~T$8Pd0W$SI9R^^s;@bMh`bPe~(3 z3{SV*c~7zWh7b#vZERkQlnz5xr)pLy3^JSwr3#Z!)ryM=7w`xeSVxy7lJX5kgyzYbiw=o^neeg|Ih$?>vy z%CTE}e!C7Cd0rhV{n2>h)cwZxHM>8My1M=rSs&x2kanHAV;YA7>h9`RLGg{9Ufa5X}w54+mQlgMd&W=2e z4PJS2Z7{TFe1i`AC`)>{#rJ5nnJY)#qBBOEcG_r|P6%Jl7OHrx$P6wD&T>v!)92i4(NH+Se_2RkkjQ`VP2TlgIXev*H7$BGjTtpE z?X%~uX^&lZPUFUnA%q^3m;a7yO2oGZ=XOSu|& z)6L(yHowViQ91P)$Bk`w-G9uGQQLn7@7?@6@-)eg09jsxSOhLO+mfZr(&9x+Q*Uoi z&Bv;UU#41IZb-zc`CcvxNVyKckA+mx)*5zTlT(x~z#Ve0-KVAxo_1n-@m}`U)0mN4 zr6-@6nP$!5TR+yKP>CHzBThq%qafsik zV9~bvNF!j-Zyu)9Q!&kIroK~V-gDzGO`yz5%NXqbZ_mdO$d^gMRa2%+88~qKE?-3G zXCpbol>#Qq*xp zyDQg#`>?!5N_6+?+`@le!kSgn*2#sk}0m4-p` zZNtY;9yV@Rb^U?`3*!AF7j(JJ)P-A{!(3^L<7(oReYfxH8gL0db~qSGscQ#omkXiA zGf|BKgwWw0%7q9nd$uSfB_A>w(*>o&6*FNOWf9e+64T_urWGB-04`Xvh4FE3I69qo z)@KFz;ZJ`l{pXKrmi;kcSG^?*0@rs{%)(~o8=?;d4b6R(bem5L6bHW31KiKp#>(3h*Qeofw7&JWD(6N zOG!wXk#4^2Pj&H_sBlf!kA_skgDv6@zSmnWBA241aHL2dk;A^K z`ti1Vz2f6wZuVDc{e2F^C5fi@c2*DD?kw!hpF#5Tjzu9mg4mHn3?pixBAHfy*p{e7 z$2=Dkm>fGf@@#X`$uhQR^@c>N3hIYg6bj`?72WxvD|6Uz@u@o+ufC=~^-TKX?RSTW z^%TUT^p6a)#iz@NpA>6>X)}`~hFXXL5}vax0ceggp0FQm9@p zwg`Dc`zAwg)X;@r@)K<7nH zN?5Ft^RU^Oo<=P`bG;19%(fItA(@@h0)tUI;8G#sMg?30#I!7^Sj4s2ueIwDZJO-pIRF#Cr$!&k0a`IdPP|6wV_%2#O_%|SQ1i;QhFPytY4 zM)CX)67jNH#uBAOdPq5V2^A0~YB`JWCF~iiL2U$iE^0g-kVv(F;XL!*sAM_LEuG0%4I|qrA<1_JW$7Xtk>gJ|pt<|Pt+9%NHp9}F4zcmbWGNXtwz3I2dy2DV zd5wr+bn`&tN%)}oC3vssa=ceWw`#XTbQAQOvVd|3@JlDmvsVti5Q#rl2`af1P$nWK zpJPfgMaf}W<48h!EQs|kWrC8%#uDr-*~p2vh0oY-zg7p|Wr<^r(rjEfjK#-PewuIY zXzi;95I#n4C6cYxK?QX5lLh9kZsOFG^a*lmzh(eA|OD%#AW=(A}?ZMZx2Iq zAlZ;mkoR8FGjPO`*-!k&2zeU{nebc&o4SDL6yE3A_v1KW{&aX~3H6yK<|@-|$sx}e zOiJW{y|k2%n3%4%6pmfc7s-~ekcpuR#3sVTkbSrly{$?O8|v!iT$Yq*XytmxGCO9RB9Lx9*wb6 z_I-V`+4w>b8BpE}eUark)}c;@Es7a&yAueYUTvt_$D< z-`KK-fRrpo$VU#)Bvc4gz@tpCvg0(;4|&;v=|8^qg|zi}eDV?CrsR+%HcdOe?9((C zzFc6+n3PEti${9+Nv7M=;$adjI;}DIwf{tAGbQpR1A$KVP1d&#EX^3ZKJlebT<4j6 z&o3}LE96`AC%yDR8upNE~-wm*HBVQx&NwX#Z4Kd1%$>k#!(H6tlCg=KIWLcL3 zpO}xFxPP@uVZF6TL!BWrZraVgnQz@XpG28;08?k&VVyXpD$I~4U&ew^1N7m_&T7Em zi@8?8MbAc|=hQZ)fWn|WTrpt$nTY-1SR@joC_GM!H-e+Kk0s|q7CcG{0K$?O-Um3; z-bOn7ke5tCwlV~})BtXghtZfC24uov<9zZ}5Kx5hFhCY*qzT7ED zEA0e8#wC(KG%&W?r(X66&}I=dw%m{S}7#;Q*hnjabsqNm&wlcQIQJO~N=n0q4owFi zxF7ljX8!Ej(>f(0NcY%!;-AEm(3n8hMmNLJ}Zd+eH4tXh>;u3VWh zxps8duu5Flcaq6asyrH+eN*R_M-Q{_12Z1*>LC{eLr{01#EmiixA@H$19Ll=*oxrG zQB~uW!?qfE(bD-d<9leOMN?akEs;00g%10!aZ~m?8}a|292bZ=r69(k)g13&Dk}zT zN}vDC$I@}fygH4?Md{Dho|yhr`qp(1#%h*ER+b5b2ibGMW1_V zWe+`Q7Y?Cx@BI&@yY9I^EsKk>jI+jeKE91{$Di&?4?g^8E>vbFKj$lZP|F5wprQs@ zu2F^};XnEq@3Pb6^s)o?O>cbNs}iq$7B0l4ADG^YrUXd9G0jG4U*6FMB+R}<4bw9y zERw?pWn=FCLBXU8`&PtuPRb52Dp^X4?M!Z(zA6YQhq^Pf2AOuWViMT69WZb}dMOt0#J3)sj>V;-(at;n z`{^gY{B^n$#nXqcaF~icP3TBhmcfA8G1)07=DzqhwH zU3t|F>EsW5D$_KukTE2-PcV#GkSJRog+ncRD%8GGJ6e_ifT70GOcJ%pY-;S7QE9K; zcS*P6>)!m6XDuryYvRKURYhpWG95z1oJH14UHq8(kx}KP@#Ir}*l5 z?n0#1HUm)5s(j|5E|xMlja`Pgy|`>~+VrQ>H8=b|z5mn`ahYf%J^J|c^!8Ifnr6(L zl@qRLu`w*)yS0R#DkUDi71*IHmb`wcB10#{q__@Z&m)cr$@ zhnRC9>p$#Trj+2qu7Y(rj&l$pqf7?|E!lY0>eYJxXVP{P(@%c!>-3vze+w3QKtL}k zY;0sYge>jL7Fk)C1M?s>h-tVf@!J%?{ljhP4X-{zHqSl(V(iT<9%7grOEu&(F8R^q zV@zBY0Q4*T=h$=!Yh!xF7BU>Scq%!0LLsRS9Wpp=J8|o@(+=CEvG{ff+bCQaIdZEJ z`j+fUyb$0HX)ehF$=W7ngrK?RLPca9CdA3c#+-NZysQP1+^^ZORiWP)Oj$mB>0a@)@y|{$@YrfJ_J> z7gh_N+oT5=QkTuF`;KNL@C-R?NQlMf_JiT_rEk<6gl~oHvD?l%>E{<3AA0l&-E1NX z){VM0I|BsH{KkS=yFB&O{R=_lxe(#PRSY|~vf?^RM4Z-F1G@*l7qM9JFkBW%*x^tC z6Dkt!DJkd_kHD#K5{8n+2o;Ns@ojhAlMZ{`@m4(4_rP22)26v#uGr$x8`+be^jQRK zFev@UTqdc2X7=4LFw9o?X`Z(D53JB}1nV*u4Wm(xorc5-CzsgNFgfppI++1dNQ>t9uo)sP<_Q87Vv7zT_L6md zibPI1juy6Qao&8qxeECOix<1E#PD3OmwofGwBM{69~!;WPD24fxPS~39s6f1pc16& z8aeD_e1jL?U61CA16y>krE#u*>q}lOYI<5^5X(i$XrfcwUC9hXG@Y=y&H1oN&OgOg z;wW_cUH9ti)-4z=8}>PEv5!xU1`pcqWRSxeManVfEp44lNRqF|6kOlDs5$a}OePb7 zhOK(Zrkm{9oZ%!p0ytfKP#|gvKNmXI=Pu}p1RTO03~UP&1}UU7XBHplp#Fr z%T55uWXr@bDa(-q#1T{e!#Am!32fbe`K)Q?)C1@cQ!D3VXA&*qr#WGV0T4uUqWmXN z**JwzMy4W8okqECEoT18#s%Y&9p+n;?Nr zA<5u=geJ!=WTmb#Mww+)tuuI8zpzhHO0n5k7Bz3pg$uaUcH2x$M;~#BE>U^$i+00Z zJ;vy5gNrZ!c{=-B-%Y(eaSjWA-2uk00>iwjueJhk;eiix9>^{9>-b#|PM3TSZSt}q z+Z~$HnflSq%z!Zyo1J~y7PjHY53f-<>ZA~^`J_?h_<(xykXUe zP*9RJ&kZz!2E!vYZ8;~KoExsmnkDCh#KZ@meKaeMJahb*TW{;o8h`C^Aqz0&sUXqR z*wLf#`QFj#O}MJ^fPG(7ay6cWdp&;QL#L*}g9oKA{>wKQh&S_8AtOrps#qdAie+IN zx?_^?;EcrhxjwF8L1|5i5)HT6c?ZVV;Su7&TBE1H+8TL$G)C^Q!-(!`)Dy5bB81xu zNdacG7%0-b;M-1|z&EYZQ%}zTa2zp0HjrUdBwvVF5ccknBn!Ictqx@T(of~f&4v9a zq+Ij_bNh9nwpe!ag@2>~yxge>(&%d7Nb~aaw&UKAUUk@Cqyf0?-LtjFr#+codh}b& zf5!~p*b~>>tL?KSEPM}+MmSXZO-@NQA#x2L0xo7WOFYMmmoHf`dEvA_Eyg$whcv!M zTU$io3Hz!$jW`CjR6IH1bf!bI5DSLn432Mf;W7dhP#k5#kn}JySf_H%AU!ZqIi?UE zF6GARSri8uvg49qmP=6Zudx-6)&az~L+Ua-cmy(04BFee3W&1RxXF8r>FcXrDG2&p zASmIWgi|d!3qkZ-Z8cnPwM!fGkt0W>9(=mZ0t(+KE}Q^!J1xcJnBGBwkz>Z5t#kln z%8_Fjrd5itOpHop%3~H#M)JAaDTTo&E8)={C%pMD^^rlSJ=cE0f<>jLjq*D)PfAgvcXS;IYqn#KicGSB{&!|Cl*X+&bGuDYZuHR6t>y zebw97I1DAyMYD7m*Ro|0(LCc83}uXMVwm8}`N4-DgMW{w{c-Zhr?6XYyUT^pQ67-C zm{E*Ij06QH=L*!7=!s;A7Q7IK19luC)6^(yuK*37K4vvYm+>gg?wiaJM8d?X(kl;p zd3yH=$D#iVT_r&FrfAR1jP>$dDo7x^vui#BxZm(iM?JFg6?#*`l|Zk=#BLRW@bQ^=SjV`e~vTRPn?jknAvF9}eKg=3~;^ zailrv_+!)d+ig=TZ^F@2xT`CTYrTo<4rm91PZo~FQ7)y`2a8DB*`u5{;&_X~sVNq& zep64OdlWk39NJ&Yg{vTLPsHt*(>pk1oL|A2>{uAAr#)Bn*O8_ zD2_k9A7iYXDC0o5e6NPckW+wQMFQB@>hjWXXiN(1`EOFTZ&HMF%+QCJ{Fj(X(Kq=B z-IwnF;`Hvf|1~b{I5G{yMQ;7scw?&YjeYGs{Wi-w3NeR_4FQObIb)FuH$JY5!F0Ke zJX*|Fj8SMbp)q zT~lWb(W?)`&|iNO-;iJYFanYU35a=KDcx z;fT$!?NmS^h!;%N-uODKlB|W0n!#pc4i!&nTq`z8)r%bqPa48?$F+nUOTm3B07AdD zh$viQ7jsy()YUW@GX)h>3bc2s4Lfne&jTYDHo5_-44fST9+#A?L%K6vGQh}1%!p$#cMg>=%Y1y#>NH5 zSm+!Y)r+DI+(aoAD&)~gX_~jJlmft#V|*iXZ*ft#NsvfF6c1&oWx~XCP%qA1rcOzx zocPxCmg8QZh7aTAFIz_AOZXN10wZISukJV8vlu;=h#9?Qr`3NeGs+?lp@K*7(h;k@O<+-!52t=Zi?gE=1#cxN=@xc~~Q< zNT6j20<#@}D6V5H(+~m(mTc>TL%A5!d8#vM`~>{+i~cSB?pIf&lTUo}CM%ws@xIp4 z$Gt1xwglim@ZZ3O8M}(*T{d7kKkGU!ZP$D1Cn(GvfJmb68e^7%cte8 zIdasF`^7b2!45+$Phlk!&t8LfwZ%j@;=m;sx9YV8vZrS-#UQ2yPML7o3dh4K^evKH zR$e!O#a?jcsO-~>03<6!9I^5qCYjoPAoC(~zIXGUlir%9>@dmjHqn;XW}orpv(xwf z^Cv3&F8ugiPY*63eU9znN2e)9<}aW60L$`^f#*45_H>BMq%Z}{QRLrK0xXT3N9Q6> z9JjW}vDvaL;xgu4AyuB;%M>-&`V@wx+Lb|Yq1Y4@)WSg#xnUG)Vk%luJi4s!5lUa7 znpUV=(0&9n0AO3-0Ut7PoKqBG9zy1u;ZEIgays>0Z^L)%kJ0z&jk@W!zx>s;=@Xy( zXI#g_caFIvRr>0gpG>>scfy`)d*tzHmKnsvuvA380*u`%2^o!~K_@r^n#dpGmr&zy-01F_5z{}xllD4yKoeHLM)B~0kFB_Xt7HKxCbbQ zou)#9Gb#e`4ab<~dtDZkH7CGltPW(a&H}YK$^{9cM;&o!I`y4z)9qkN8)j+ax3lNY zOP@O9tn{;AUL`Q|vr1?F!$D)vZNBL1dpk!m4p(gd4CZBP{3)!?!T`z6}ef{5o>j*;M@xe|9B`=PUTl zFMK3}zwrNzPkt!9_ua>Dv>6r&S&x>zh0imU1dC_FP#1{6z*F$ z+BCm@GwsQznFu^A(6AF>w=A&R4_VWr8hfFx-6XUF1B`?+M+fELZ@ zcmmFBGjzp@UKv1gIFI<%duoOa8b2qXa<5b(=*XmlI{a{^n8kHX906W{h%=^sD;)wF8WYICFowwN&E zZ1UEJ=psoGT+OjjY$?Z-9`l-4=|^l&MZxU4^NzvpxBh8-D*n+=e<59U-S6CnvY{{< zjjr_dfBMJtR=kh2soH~&Jf5Lw$q&fNQ!WNdfXSSxAvu#LZG+G1c1`y`^cYAWFkxjA z$#>9F7cyKLE{mO7acx7n921~g>*2kS?6o_8Lvi@#6* z#D~&%FS#N;gfINDdgBl)JwnJsdaAf3Lyv6_vNTYZE%a?KU|@8mnRb}8ZTj2O-id-e zHVqm$P_q5Kx%dY^O{ahHU(@3J6>9e%{&eH_;J^8`FQzxV=EzOz#zQEeI3f#}dBVW5 zKnmx`F>)Go=5ia{P=QCGt?;h8?!+Ok%ZH$)SnH5KCK95p1y>^SkAdN<5)1%CUd}9v z_kq~)WxNEj8BQr%Y}#(7-~9a2v=?qW7wvtgo|O3b)Mx)Gee=RgvJ+MsF6E{S$9%A& zR6GF%@9JRa>R;f#NAG?23F$RQ9iFI+(KLTY24xz*2Dv&6MSG@YK z)4sUL!I#eXWIAa7ebbl!<-GLWORvCpuxFcN^ddV}*b<#At0wzA$|4F4CWt>5dF(N- zK~bKVUbJUjsM)E09DM(>pQO{j@GrVIkjz*{m38_!9B)Woa{kwJ$Flx#gI8@vi=Eb! zDstqBlh+)12<{m<&cvO;i}$zQdMr}hOuzi~b-K4v2(+ai&q&BU|Iu49K@xhg&Q`Rf z$a<=XU3To)QRxTYIXCUy zk44S9XhhA*NnbqX(y~wYcqB|Hkn8n5vu(GXkoMbq4}E>;>8EF<2XL!DexAnjQYF_m>iU?xAd>V4W7Pv!Nn>b`355jPQ4q> zVVg<$CSiBMJe0G?tz37xJ=x3xM=>0@1C3Z&USyb zXJ*VwOK~eYB?F5dIcMp}FZTGW)7MOM=Fd-a@fbIDG)|S&A6Y=8Yx(N0VOHnuJi7YFE|64J$G(8^UGhy$c)(~qUN`J zgmp`T_2eiS=yP`570UhNr#`Git>Ili5$dB3Utuu@IH3_!4WE6brs5`>Km6`_Xa% zKG2x{?W?}6_BzPQWjWfz{K@3Zx*LjZr^p-0VxB`urt6nPFU zm$3s{{!`*7_`D|&!-!%N0Okrs$<_vBNT@iuCbpio0$>&EN_}bg@?*Bv0$SS}iNssX z1y&KsFvbC>o;;E;$&C#BQ&i+|l(HsIQDgZWf+wB&;dGtf!Y)H?;=wbxDd*eX{ekqs zzds`_!Hp-ac*0LN=Aj&dF9!bj;{Vtz#Y4;a2;}x7S9Knl(>j;A*rB^(#Y($`1iF@2 zlg-Q0hH2PdjL^4rq8BxQ3XvpVM|Av(bH}#U0>a&Mz3QSyvnLsd6gy!KhiK6PVencc zZL$hA%87)Y#!JuRPB<+ca@1d?Z+!dv`3_sHg3o<+*$;o7UJh)YyU~7lz~s?A>*;Vx zuRHpP^q&`;v&pU%S|6_;c<2$!V>rendfwJZUrPjXS+$Z+wsZa&j{({m(GxJ$+>p#* z9KFaUV|d6FX}K0$z32jwB#v27d<+;pX-~Ydlis+7QHbS)YmDMy=FxaG;@EoEREdLc z|Il>@T@J#Q1p#0Jk12BizDmQd(YzK5y7O~9ft`-emOg>^sD5?z4MaCPz&4ZgIbso4 zpQ-)pmrmbo?>m{*l&0=?q}{qNauGRGChPP_9x}==S2oAuxrTtEqQ3LPhI$Jb!!Se$ z?))ZItJUjhoaRqwK5)|s7~{E8Z|?AGKGJGGiFPPp_Vqo%Z;{sS%X2xFPx9oashA@e z(>FEJ>0IzRvpHogQivGa^jwytKi+aj`s1y4rqALX;a#Whm|lbLoga=1-(PmXereF4 zb-yFMaN*+gt?yo%zJBh7Y59s3@`iqek9r@A-JoYa^t`pmx^K+k`d1KJZbMI5x~HEAy( z5q>kFKt-M)Qrfv%hgs8Zu~b zddYq-N(a7VpS0gTFG}0vB`n`STfAsVx*zX@Ty@QF(~p0CCEkt2EsvE9w*g2cL^R?P z-P)=6Xy!|w`}>$~*8YB+Kr1JfKH0Whm2Q}?L6`R+#o}8|YkBh35UakS5;FYZ&_+_Q)~sM92t&D)azE~k?X*Jwt$U7B!jdN zsr7pvq&RijTc?v~3HJ6adx&-dgo?I?g>@0h;J_QStys*S3d%jAnAd@DLxsHp3xXEg z^*zck5q%CCgutY_5+H|Iw4$_OizxfY{pD+LJ4NeVL5iS+a)eeh zEKZ}ujw5a`Ou^RA$7S)b9BQ@%Ouv~tywhXT&~+;u7-GMfu$PMd|>PArUt zC6Fx|d)JSJ4gz{3K|l_gV{(Z4{3DAz5G`=hK%h}7Y2c%xG9)7m2}+Fm;g^aQ{IKtk zlG8@IG){fojuf9AeFYz#MDlCF%{#j9!G{%tEgBaOBf7}|NaRB_5iwQ(Bzmm1EOnF< z$Y@L%Nt%qZ$~?4SLx6KN_Lfu8%>KfK(;l1!MhKaxZ`%u~_6`bF>U)Sr!?8$qURN1* z7d=o}39o4c1Y%er`j&js-SNOPu6b5MSTLZtV8}<3q#*^<3O?y(f?g5bQ6cc!qYuY@ zi+Gj7^VjJALwpz7eRuC#9FqUskm+(h@YqZ|V&hG`&j0!sGX^8K=tCWnksvbIGOkSn zUnZM zQPLu*)?3V#?)>_fuYG0O5kFN$Eb2$2B<12krr8z4#U!P%np`Ur~V69dYZz_-}kIhu8l+pG_ywaDeV*Up1G*axE8u=TSrpNW*f&SmQ^D59e>o;!p8I zDAdhXnPEo&Bl71SfdT!#9)A-}5MeH-zAT`2X0y3^>GdMgVLWI+MxdUJ zA82$}!GK^Gq%t*vl^p4omqHN|g6D=0g3iqGuyEK8Kja|GgC*6{2fC?Q?rB*0 zVNPQ#ZSz9XD^vqg3w4S3rc(itC4@z@pX4t3pe?#BCS##D7I@&27)=tGfak-|mjrb& zuzdhBga{QMSV9X1#YoJJAb2qFQr%H0Mozsro}esi1%2n;_ogFWe|)<2_CHZ&vp4>< zC&ThJmVKo{@mh`;N14A!m2{L6ZKS*Rp1bBN2Y7|zFn;f!Ir2y7QkY{?#};5EPYh!| zIQz-_SOc7ig1)7-Un@$Sz+!P#gGY?r1KmrqK?z{5!Jkzxk$s$@0|I?9gqSr4(*iru zj!-5}x+OJ~Nw3GX8PK=_Y^GpCm!%HL*4v&QqPB1qE`wN-F1g}o`bi}IyyoV*e3pKE z`D_1C903_0Vu{%0xBCu`#ji{&Ci6d~9r1PTV{!BHkG${X^ob9@H{U^x@7D9qBmC*h zp+g6!IdkWyrOR-><@sRN+#*JXpVyHLJTU+9vbj(FH)j0kf{!&CMavd*77vT7d-OI_ zk4x2n@3D$iFkBIg%>j%i7g0XOPJ$zAK%`Ig~G9QPgTE@^!Qz2|${2;Gj`T zq-RlKnrxPbdy#NA;-(DWMU-XpXqR}3<*h}Z8i*dcsD*QYoKXdEPqY>Z# zx#;36a{RQ$BUld8ou@RyYbtxvvH5=0cqldaUJg#%U`~}{-!^si!S+L z`Zg{_UWku;7_{=iu)Ude+Qi5vy*HQ!791W{Q9wGx;Naryu=8Q7oqjGLUk$4x9 zcfb9w(r5neZ>80T-{pGO`#ynhnA~L7NR#U7k*ly_@PX|Xs`QB}j;Xz}R7M|=X` zQa~({PK`o*m{MQQr7|wb^0-4GR5OJUWpKFooLd7mh7=^M&qGgC34tLQ$D>?UrWBhi z+ayoJp48z$%v+?}>7M%@Oh^6YJJMNS|BsEjWlOl(-VN+nTllRo-+z1)^q~r1nvjPV+?^$)J8}3** z)MZ;+0U6gk?_0fO(Jy#~q9xf3z@iMw7^K-pWmDOuIJ84C2MQJ(3PYPyUKFkd8g*zx z>_8x$1jvSc%G+3)^#+19Jy3{i&9Di`IRPCTGxMp&r3k-j{N=BGBOU#w6VrWo$-ODt z-7Fy3&(67%*+&_(T5JOKV)mnH)rB5UiUj<6(kOR^9A!~BPG71OH zbl2VYr6Z3yK7H-H3-Hs~JeS<~cK3bwgusHX{c)o?ckm+oFm}!_}*5nj_0#b2u(jI@`>eYPuildKvV`}Z&brn!35~#0h z<@_7bPmAgmkb6YINP6^)G-T_ZS_aEIzVl|@Y(s_&(NT!;#@?ht!i*^(&3dyVCDMzG zu$Tu9HzIx8Lp7XiUEqvorvAP%Zi#{?) zHt%WIim2`>7D0px<@iU%2XT{ygN{5_KW1Zb$2!nptsJIkj<(G{snxXJMNe?8weIAj zQL$rNTLFbaSZvOpKfkxx>^)b>l`keDlZ1|}#~4nLr-kv1ba!{9(fAG%ZwSD1pLm(f z8y4`l#Q0lTqeqTRUAX&&C4`>S4v_5M%wVj5Y0Fz_-VGZ^Nt3#Kq)%*t&vCg2x;V-1 zwZ&l*b7D2ljlT5N^U_god`F7Uv!t+|o9lmfGyD&H8nQBxy5}vRvY&Dsa&!TYRzJlw zbwoCA!9oUTjd;P*DIbLaB0hO>Mq5r3QAJDnc zdEfe;FtYeM28{m~|8sSYjiT8W{bEkpyN>~7GUjW@%U9R8O!|>3e2oN}5w{cAR*VWM zY&Dy+S1f+=I}nefkD?79I`y62NDR5sJjd1Q)l2&Z4Df#X5GsU+)qbX0k36q*^hpa zeuP`)v3Y2Q8<_0NaR_BR#u*-#qTx4r#+U!FB2I?QgTe#D>Fet`YvGd*Uk^sS>&!x0 zXIobRQL*;MUh-Fs!PPxo-9t|XZ-}@I(3>UP2_B?{LI-Vc=iG9F-xS5~rw$xANZ$+R zo@t2-K-Y8yOIq+~kcqS%HDk&q_foUhXf)DxxCIJ-a%ese>ut^a6_hxo|4h343>)&F zR>OblITO?;@hdyL-7lYxd1n#cX{5dJE@Y>E;FD?DGF_K4AIU^dXC({7lXuaV=%BWyP zE_kIOFIn9dM<4$1E#E2_iC;||G-!~Ha6D?50cxW`m&lPN`A3>CJ^3a^X~`i2 z`$l~K<-+e@t{WYU#M9@9;ltBPe0%g)S6`n_e&65Yz5?@r3t|16e&j216@0-*P-f7r znqIc=`3h0#OF4F0muII3HX;>$U+>v-p1S`xkYM4&5hzk3yPYBJ~#l;MNtODwqV zQKKe~Zw?uC8;GOD2{V++V@|BaD6>H3m{*VQzVXbt_yKS zj@n93CHxr!-j0rqPmTQKecrqU_LUz|sbfbP>QTQoQ6#_3zT{lKO{oM33)!#0c7{4z zY^wQFP02I~OGVHL;{K2%{{?J?9yy9wB+3aJashQ5KNU zDb%Sw+YyL5;co6%tXQ&g$gokoC(5g9wgqF^GE=`EA0+ zqr58`xg7x1I{$8|-8^LEfngOIv=REY;Ds%4qL~~}7>hxP#c^%jd=;B890(L$U+<^q zO}~%d`;MazIi;%bI&GfqRTy;wC_r_F-dr*JBDjI~&4Y{)%fBcTa^x_3c+9yPWGE|| zkArRkp@o@-*hDsHf`8N(Q!^XU03J#thJ4kxbm?-Pu*c#FAG-9@Fb#`zkx!OWe6U4tvku$!IRa75-4TMuD_5?p1`i(or_?pzq#R`j z15#G<;R|{yhgS+rG>kL>50NofY?QMhw>AqN`D7Ym-3NNDk#H-QWr;@~D+X!iO{Ni8 zO6F%4kQrNC+RFA_ytYi`S}yC8OkiJGPTS*`1c1epc`4QLgO_)haKJ?95!G|A327wD zW-%n$^-T-65bs^__W3h$c3*$u&O!&X5oZ-YxwjMce45Ce8l0dw_3UA^O*DG3(bPJF=L1zcxbJY zrewKvsS#t!S}S_dAVCt7;VdP~rK7Wj#7s8T`Ir{mr?uoqunsO$4l4gyB*L_wEZPsh z)f<2j0|32ZqTd#P&8hGB^~iJObn*>S+d7V%027Rzjdrq+V9`H{iY6??Ppf#-aP_je zT)Q}7jw6p7GTdj|Zb$(IFnc~|uy?_N8T0TF$NS+RXdyzgHWr!FXbdpM=s8xB3cB`| z0*=GFVN%S4*J{TWm}0>X{q}j#Ly*4YtYausg+0j^^T2DhPrI@%07Wd|RzSt=!PNS8 z1mQeqDvZcDG1hc|*YmKIg+w_Mg?y|1W^dn$_v2O9Jg7tgxx<1f3~0XA&4xUM5hUCQ zK+da`OXfW`WW*TU&Ajnad91^Ni55fC0YMx_=3{y*AZ(d59fnCU2(2eC+wAKB5fJY0 zW2`|pE#W%=#hof!v_w81q_asLbTdzl4$XulEQvzQ=0Pxgf`>}jHwkR{-{NhTmv^5qD zIHO06!p~E_0aJoQ!?A-;nm8qxNkWu+Arr^ETj2aDbX?J50O(yuR5QB%v!GKnVN7qX2^ne9k#$m#x?Ob^Ohnm(PA6p1R`b zQx;HmU0~0$+0X)Nhs#B@WXY11y(^c$CsmF43fMAP%PWt*2Ov-_rgK|Fwa9f0+?%FM zo`m}%kH&51hSYezR3x-xl?i9s`KR2k1aj|sq~IE7m6P75x$z3 z`Ds|xutr-UXB5mx41nkh`y{c!R66>|SLlibp9r`le6`#aoUVn5t05_J3nsFH9#IgSGH)F zM0bF)RzxB;dsi=e-~5@6Oos$tb;Y`o8Bo!Kw0`Zm6cCZa5PLcj)!ega<|9`knlmJ# zL_#DoO3jw!+SEzGq7)i_4-EHd-WiYhk(Kdd$E2w{?TFur7z?%)g~>WX(aAx~%Y-wT z;fgJ;Y150KXTJf!yXPN-do}X&IzdCoP2>a+As>O-?fE=(6m3l8U~PXeE;-q4mz{Jg zKZ@-0qCL|A`|Xp)ju{m~vJ)P(st1*#Eu13$o-^i8zlWCrMDfI$g+lb%-uetS^d!2( zj8u?Tj?;=IbN@JK_}HzG*aJ<0Z1^V^Yf&AVW6$RbvMA6?44Y}wp43k(48>#Kw>?vA&`1tn441TK`r>E*UiYv51Mb!M zNc*obL%D<-@ZCEo90@lb@1jcOZHKr|dNgcC8Z1~pb+*BCH-CoI)o zA~G;O+MAOUEJXrRV~el{A4%*ud53iE4ZjmcB&HQAuhwm=QnABuC>m49#uP*S_A%SI>L&WBBACil=<)3h~HN z%-6f$*aD)Vh^;hQ!C`zWapkYN299_M!rVzgGn-jD53-&m++$(zXx#GRvpMtTVJ}=H zT5L=nG8u}4$b}Q5qYzm>CkB%ri$E5CZ}nK*_U>aJI2Av?@R9t~$zLdXJ#INXdHe0~ z!DCZDsl?COvcK6^KhhE04T%MCnUB8aX8Y9W#oH7!@$;Go?!Qm^BYuniQT&Q?3l4>f z7WUPH9--A?Hm_PS=i&D(Uc7h}*gWc#Pg@jYi{54%xDA^dsJ4c9;IQX;6$_J(?jb|Q zjuhbrfyGLL)z+x#k#k|A=|mFQuag3fR)alMz|bOLT93g9h#GkP1*W8F7 z_vH@bpe`*O<^#sc0wO(j21`iuk4qOmaqRNBbNSpCN1w8QOoiKxXddQ9Aed^2!||F$ zG;-{BklI%&9gwhfE!En5P?6M&LoRjMsFl;|)f06h0c~ojvcTF{TI|5(+XROkd{8<9 z_oLORZAC5d*`zh57j$ClD^(8EUvf0Is{8Bj-!aWG42{ZeE8r2 z!?*o6>^E<=J%mW~zgDxw0L{bdJddP7jC&#V2~k4jaWH5L%`2&15EBfkve5Vqk$Z2s zT59KfD;j(*>9dL=T!>L>~LKXwf#`O^u z&#{-|Y3u!XuZNeWvI^tq!*ic-4a1f(=g+BekvCOqcaHNM00Zh-`pn-Tq36+eE`DBl z-!(-8ITCFWNE)(a#pJF+K8lA6Bt3{ZjKNAYY%uW@K!-=@km@t5K?2~Pi!u{;y}0MT z2PARzbvL?C1VCfwLmQhC{UF(JO)!d;z4-1VyO7ITZa*^!5ffDk(HSqc)CYi#ZAZfG z=+0X?_mRKpP&}q6JZ(7NByCd`5FIKVi;9mT>cPp}>V-2NJRM)1J%h2EI7UiN#KQzR z40?{4=%8sFqJUswk;Ycaac(f-lJznb@X`rwYS^9}=J{=l<+vQ=_kXsN*bH>~!?mC@01`LlnapWNy*CJY= z$9$vuP4OzMlLL`yI?Hj3(<_$DyLsTSk#|*9_mL=!Arj6j8>(CzAEUFxTfs1?oR^?^ zkwOQ|tS=9VC8B!66T`S}pExdw4{!U@1U!{p_QRiX^QPT>F{ZJzvgd=4{Z>4{R@m(OqcNq?IF56oc!kzA zZ1kk<2Miv1KJG}3TZ-ltfT*QX%0cGDWmGK1B1+m5OBo%tBrAks6JXwljMmDIK2Zs= zkbH-DIj*s0vw}3=;>eQ0vwcv^A+f?DCoxtrwfmpB5j~{~r5LvoZ|+;Z=#=?0ADs?z z6ixK;3?L0`=+!1~{dEKiM?DKMRi6V{y<*XluI7r%y9Ny(gnjBD2xHx-!iOzXsoAm@ znsAm1P|B#lz)=xE4r^tw!X+Z{*^$W}5AUTzp0}PJ+mQ{6#c67WP%8$E6^F$ z!orbq(J0MEXzJTh&c@ufw8DPCiytPzm;WGI5e07e7+UCK=m1rtn%&pa^MQHO@BTGN zESM;sD4fk!JannQk3h7+#x#^I)`K*SS1z6ZSnBG&xO>3B5x6Ae#kPKB_OP5<7-%?J z?7;-FMb9jOs?ZExd|P}Ex5YaEkTe) zVf0!6ZYC=1DX;irE-cmyHFs9&!>eel7;diemuS zx;lYtVfQ1fMsGGvKME*ZHj8rX_MV;| z5HJsHnvlNug??Qc*=*<=7PT^p#w~({pOUP@aXr|gzQNGH1vu9^ebv0j{%-NyXPyQt z3MY;@EFeCp7Oflyt>1cgwcqg923*?Zn2$IwDvw5ut+pCJwi-I>G@Kuuij3A5#{@F6 zP34v%@fC$Mh-5WumX#VOqapyen;dyZqU&~v~wUY%t*FOJY90Muxa+t5>A zRSWP%g>UsNU+_)*TEJWg#F3^`;e;y$D#x7ndo%z0-AqRVrEQMm(OyU@sKKK~jTkt1 z+{ulq`)`n^@f7Fc#ZDcQdhv0z$wgxeL@#JWYnOSX7EPd>L&{~O6HCJhn#$I}49|Qq zn@ag`Lfm@9}scLkgkgDwiRE1L>Rxr-RLB$dEBSD!mRLjl30wa~KLDzc|R}Mh+tLQ4Q#W zPkMa-fjL^#a&hCX| z&Q=yrIX3R|wDpucPuACNw)BhR^0BUhs&LXhrZIHHA*nIoP<%vk2o`gf0E?`1&avn! zCeF)+E*-;h27=P<0ANQU%3C325$a&lsG1Ko`>GrJnyYWH_BE~Wxu73Qb1MzyHwO%L~_zI*XO?2WxEm)*Ez-n5y}=EAc` z+WSs4%CJS>J{EIJ*)aJpgjV_)WA^cg;^92T(U&xi)9|s|jIX)}@6y#6uyeDjP*Bwl zc-k9|r<>s@GJHil4c7xS%A-3QCm_qn@gLG#u8k(g*on<-PijtKDK|Pr)TLy zOXfZ^Tk^K}WwDgwD4LSSF&}Kvw~xi#(l$!ymgdwt{Au@>^Pt7JESz=GXr|OH=NzxA z#Ugj=NsC8WES+ey5%kg?X)lNt34B2~TR7S7cg)M4<4zC4l=O1WakRjSdHbT43m@Z< zDd+8D;+1lNU(!q37CmlH(iZLPTAb??L(s~8ZDYcgytSBVA-5MmIbYkD0KqH4I?+o0 z7Cnx{ZP89{fODPVDQTU?C5@)q=k4a(7d+9ZvgA@5GDyR2>@Wp z1_D@^9C)nD2K~1esFTg|fAaCb`H=z!0Klz_)X}mE1+GomCBUo&*?tL{nehP!o)twD zdHDkcSal#Ce5|@{HF5(ru&=L*2ttXs@%?O~MlW}%kK^9N*67ahG{Mj(;|v|mtaykK z<~rOu;IBtFmYYpXLriDL)|mTy8S`_~BnM1yNcdu}-W0xzKM?=~v9d#;h=_lLe?a&j zM1ql_EA3Ok{VF`qXl>x)+KWDK!W?h4MEKL);o(w;qZfw95%>e5uYmg(1x|QXT6GgA z#OZ;IXqpFG{91oe6MhfoxE(STJUE{NfI#KLBl+s$iDw%tNzUrw9M>)(T)%^g!{MdY zK%24f?|J1$B&qJAhH z{F^mh%*3laOn!(c5p(F-@pik^{W|kJB}gj18Ecq?BXsg2sh^fw^LFbY z_V%kumDHYRX|K&iEZcpUke!P`^lp+r_S*fN_S^ra%-0H!hM&3v|7~icNZZB)sOf~Nk!ZJ=6q*9>*rl7q=36^ zKY=5(L%ke~3j2($IcQ4Qh}W6eDa{a^d#&zE&RtVkexwTOg%nl{JN10(og9~qRwN3w z*tsFS5;=mcKh>=hFen!+9%XsDdhd_Gon0iWmuk*6KVN(fifEy zon4aYw)-jX?|=^8(S(-VB!gT?l#HX(O%1M&F?Y1ay!gTz(JeGNFYq3v_ojiN)R90D zih{L@qn!EM*jXvY9y-wjx#Qg@JoC~xZZ=aEKV|_JqOTiX-5jl9nxjiJ*7jmGVB$n; zFpm7tIwc%s1z|L3+`ng2#&`dae>9~~NgXysR~#2t1EbG8*Yd6Lh1i*>b#`qEyWJ!f zozh2W3HQ6n7;b&JH{!Hbh!EB29W_n8;JNUU+#X-y?1NR_&YAohx3!I)_`Kn>2k~UV74yJ?viU?mI)`vMUZsvT|0_So4?}@7>stL)xwStD1&1hgUfFi4wzh&jN38n6E#t<%HUR-x_|a%36IUC7219^yb88IE;Tcf56PSvVO>yc zWX4`7#(D6Exl};W;g7RMs3lEpQdZD;+<5R`TMO!D_VqW>|Re`Z zs*ne=4&I&aM?nWeIxd;CgU|phl8T#X*}o$}vSg-#D+0{4WI<^skgtn2JCG41UT8lV z@ot8fcZP0w*66~KfqLO#>iI}!1~UXns(Ql7#3jo*iO#{_#X`(y)wqCuvx@XU^(|Z7 zy+VTcgn&E<2znu)Uyi*+sUv7q$-#tZ{SvZ>Gew z(e&Fr{d^!0)$IpBuQ=sFG-OX$vx{DX#T|1K+{j-I zLQ)1XA?rtp$?K2euCCf6v{vnL5p((M>n}o$Ey~K8RKp@HZDkh7I6|vW?N}8Q*e52- z9)7u{05aTn1}AGSm!4288S8G}6HTR9Q=_5nqdgW12X55h@pFqr6>L5>?_}MWH@2hR zuJ)NI(aly+7(IVdz3b1W ze=RvZCs~tEv+KIYl#N!pwQnm!I#%3y(%5KCH%-}NDMtO`k$BDTez@3?2PuD_v z8E-bGl=gm+J8etY7sW|&C6YE;L#|KH`Kzjnd3G?)z@1X7VA;?rm|AwYCD%&0{6b8k zHJ7Py|8ry|3rtzTBxM9M7``}kcu`= zJGX1Qg)8{GJwL`FcYFCG9#e|*g(F;Vfr?dKR*N7v(GXO9W#4x)#z^)$;wJ-~`rQIL5z`dUH3AEp~aiLK6!SkJfk@#KFB$bSmR j|3Lxy|N5Iqu=)82Ga?}KS4S=C_+tgBYobHCKY3D2PM^X#o{bii9pD z5Dx(q_<~18gb@_Ilu;@uq zK0dy~wl2 zTseg~MgPE{KoQI}bA`&QqVoBlW3RUgU>-Ng=yPY@mCuhFcc3WT)!CMO-B7fN6ihKV$At`$y83XFp)pUCkN!cGq0lrqa5Mg`JHt?ijOkbhQ*UN@#DOhViPrDA&|ADN7PkSeT|-+DK(4e2H5X z4KYtM&7Nvg1@)C(?tCnZ(GV~UUNxVTR$LbgzfcdSUdlu`^K#cw%L|@;NZu%WoT}>W z+hOz}#XW8te0fN&@<66xe9uvQU-imJYtM*vGrYoI2Q;*)$l)4}KfC*U^sC+I{ylmwDf8%412Zo`qwSEx@&4g9c25&DOrZD}!92p#B^4~# zY~BL~PwAJ>*R+_YXutptV(xO6)oc55K>cSWEW8E?e=W z;d3bb^~q<0AB1(3{4>5tSLHVA?^4cB7baLkPWlb&9S<#F+CaXZ2w4EQ-j$ktBjdPM zqwVW9K&W;N8ZSDDu@(T4t)&soz#m_8#DyLp7~%FL=f%PEOSJ3d8YY^6{VCkPHaA;Y z&PF+rUqnRQ<)C4qJB9_uZZK3XO}l%(1jO606TBJ~j9`-OiN;)~R8E-RSjG02d;i7Firpk;9tuQ$r=OwuorN1Cr1{yS81 z@Jt79`ZZ$~*xXp)F*`swts+!M&VMhi=AV(^udh2wU(Y_j8??}U@aaauw+)|+JiD|J>1;^{TZ}mx z20N?a`xGX8o+Nk&zWwE%&sic9vHKq610_&=ubS#rlgN|OkwF$_r9X(W0}beDV)kUL z8P$8`u_IphdM>egyDcK7)^v4;;bMl8wc7GZM$p+CBIkK&geu3ijlnWp`;0rh-(SX? zlrI08m2G`bFI#C;idQX%!1sKVOA$p{kqUq_7vv|e7ldTbtFz$nr`WUTMvb<3L3$Q} zt8)8Z&G%pCy5rsHUmo4Ox2IOl?KQCIX&wlOqm`3RZm@3q%koSP?&VdKw`WEjZ&)@y}TI$o1 z1d4<_&4JaZ&6cJ{_0pPg6jKd1pir}Xyq&znbBXWll6dMM;?A*z~mEL+NlH)cY*&K-61Cw3Op14?5hg!x+iz+Lce9 zm{u}gWU1VhpH5cJhUD*Xq%@@i*l?T9+-x{)p(^*vC{hc)^(gVLZY_yc4sK^0>!}Ru zm((kcd*yT}tIgT zDlJhVO|BY2VYBx6`$n0Tg|WL%ls@;1-cBc29;)PrYoxLdW3UZyEbSN8^OATaO3pS# zf8&W&ss7$sWffb-H)n3&7$QjToW0ER`I>wrk=p2BV`^6Vp5k48HG5PF?m=wd-o$Fm z#JsG@+kdQgW2Kfk{_~mgnc26qK3>039+#QjKDzY%VF`r{w+1ad*SX*gS`b9u%g%}6 zfQmP9J2}`1#q#b&5d9?+T1VuBw;|tiaiM##xjek_Z1HXs=3v;yltvZ;zV@ERNa{A<(YhH+t01sK?C2uew8%cDj;`~?ejC> zEkJZ3j{z0xtP(c5)bIW1Ma`#eCF+Ef-{_rvRTkC5?o3;31M)3?e6phMu!~7xD#|d^ z{e@czra>4eonBdy5=})%1hFQbpeMU0 zth&)V2I3@J{>FmW@;c}8n%(fByW8Xv$t9f+w{*)=)bJO3YD+5bYsF!P4jGxT4tvRF z5PG8+;aER=!+4CGt?#sZ-q>VZYsgkd`{OgH8s)71N=BzH-~QZ&F8}U6r#_ z-Ev**{M~0WD4GI3kon>M))IDYHG~X>upUAo+FvRJdqxa@&^|`T-kT7aEmlKU&)R#+ z?9FeX_11JI98ZL4A73v~(e692qO%9;UwenZ+t_zXf8H8{_7Hfw39@8h)B(zwh2Q>V zAmyBr-4oo~IcG)n`O(bc9jBYrrEZGe00I4oeh14oD6E#H1Us%>bZnGc<=3gHb3U}} z(Eb42n+n~ecrSyG&=KUX+9e%7HF$ERff?P6Kz+R#H9&|@MD;HY>sS8m#VdIR*TjfZ zFODzM?nANDS!L_3iD*vB$o->ab%hqEGW1%h=2h9*z!?~sX^%*cC_<(~E8OWd-V z#zpZMv@awjt{o{LWx{H~NelNJd^0#N?L8PU11Q%TOWu#ZiEw9NPK8opVC>#OwYvATfi!8VaOv=+ih>M^?eG*5vVr1 z-%jaB8s~$q2F6(6cZEqQ)Ai|tc;rE1QcdCn0y|aRxI-_Cg|k`(>wz`IRAh+{ic47D z+t0c00r}K<&hH`TE%crGtM0(2NLuysVot%UfgDJMBSwuF^(%q3J#(Kix<~1Z!o8rz zPp(czm$&nnMFzao@G(-{ix^CL*X1$}dCI2O8X;(Wv-fG1 zL0O=>-eV}&*~pG%Yl3POkAPi(mkNzxoyF4+xqV2QA+ig#UH0PQR75oGR!X6i>;*ZD z%R{PXtpeV$Zvts`BS;Z8df9VNpw2pt^hwakX!X|X^wW;1siiL(0r69?(Sa`o7PtoE z{5anl+(l`A08R9p8Fx#m&YI1(S@<0l+JtBw4tQwC)%on(g-|H8_o!GNt8|!*Rf8u7 zSYVCw(7q+FmGGx}x+{$(rvE;d6@Ki>jVOm!x?{;ho?bpHBNowd6Q!}JhSeQ1qe_@o z{$n#dKGeP{_GPI`hgI(K;^H;`P+`aY`{{ans2;=qmO{-hLoCM-YMpbOZ%G*JX#0bC zH)<>I9@BzoSXWuP)BaV6SV=u1djWvy>2ej){IV7b?0Zbzg)P({vER54QeCoIy_B`r zu2OrFAK-k<<_5C{<&w#`NfjGfy$-ke3y+%G5j^UAY zmEj75VvDI!4aTt_Czq5NQ+}_&rWL^$!?|VZnSFx84Q8YFju&>Qz0^FKHZd(3Z5zSR zVVl5Nhlz@zbH0M&+xlH^l8?W=v)`<+aR&>R!rM(h)Kv)C2r*woLl?b-sv1}(kC+T{ uxAuMztM14@|H}U~4E}3flcFc2{R4lyytwM7b&LC_ZDeZ&wR~mnpZ-4_wSndU literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_foreground_sa.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_foreground_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..6af96e1627508141c93e89a3c69a0fe260829651 GIT binary patch literal 4793 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_launcher.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..033000f85f4bc1818999036f859d65093da32c3a GIT binary patch literal 16555 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_3_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..941db6791d9c0c83a3f221e3dccb0451dd5eabe7 GIT binary patch literal 15487 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 BB3J+b literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_4_launcher.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_4_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..85d680bfb5654afe360abc99f9625b9e6000b40a GIT binary patch literal 19539 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_foreground_round.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_foreground_round.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed490fc3b42f67e021186ad72433069ff2548b9 GIT binary patch literal 5345 zcmeI0*H;rtx4S2SEbjW^xi=r1P&$njvD1q0|`=;j)xLT zD2frJgY+(;CV)sgq4ULuyY4@5AMV3>*lYIenYGvKSu?X||Bz-T&?~GrS?TELuITIO zSkTeY>--j$OEil!1=>k#=tC@^kLaof_{p@6&T|`mcVlBZahlFTN1x(F$M|~+O>WYJ zj*cOpo{oXm(*L&Q1O8`}UMHX7fA!xJmnYtz(9wYm^>wtKMAC1~#eVb)vt&)&)fjsOO?CS z(0I;d!AR}5D5Er!I+hunWh+l3+hM_OSQxhE^OQOYs zuL9g(-J*rGA=tggS#6Lzx>V4-84bZ!>bcKI z5l=r027b&d9EA0}W1W1&Psy1QiYjJTSJpmD*U3{EA#E@9qZUc0HTXkdqtY=ZR7fo0 zAnFH@vppvgw#4S_r3NQUbDFVdx*p=45ugs0h>s@OQyEH)3&s5vRE#@b2uN|%)Y{CO z1X!@ZRaom4BJD`Gfg&(q5W=b?p;1#JL{EFF-u|>;`3dgY`8t1ad7^-|h&T0=jBGO@ z;gfhBUeY0+GI}>C?Yt*$A*1ShYku6#_})w1{wee3Huhede5i95=wp(SNLIHskKX4} zK8aEPoe++_X-J!Jueu^Mw))$|%9c+reErwSc2PA(b<@=T`>uHsGa9`MxeiG4k57k5G_HOK*FCzIovi8l+ z3wZ~m(MBwFQfNR;1nCG_?qOr}*zpP1>V(Mn9H#pODjY84KK9c$wzU^-iU@;u|C2i_ z@gE^{k9kBv)r{Ymu?<-5O_ZkFsc*2d1fgr9GSjltoX`a}>8 z%qMo$CCrn4kqZYDQ^@LR&&RD65BMOeZe>um7$uq4s%yRr_cXQ}MDqpl4FjD$O1gzr z^GXutindD871D-rZvrm8 z@xo!UsA5`FA!a_#yBAh?xp(Q)1I>1FBd0;*Yl+fEr*@>S@!UY0fYIyA&No+TJBsV% z2Aun-@EqQzc&YxGoe9iaYO4UXlt9n2A2!lQ&*m3WguY{*ITEW9!qQDF-`;O{Llmk6^Uq-ENyFp_)R)iJ_BcZ(Q=a_wvs4su;p)sQK22L|c+ z6n=5=y&ayayj11%X2maiM^@B!Rw26-&sr_uu?p&#R)~X=gqQjh3%wN8puvx$Y>c`9 z5MReowdEwT{}`c_%`-G?Xz>bC)Yyy-oO2{)$o4nyJg#L^mf7{XJy zFqI~88KU7fMXqC7ykd~8%ln3Pp5A#IQOvDhiGYlF=I|OfN0Ri)0N~j@O6L}9cA>V= z3|vkLrub^{SXftpk#F8d-ti@tvTwMzyxz40wNZr;EhknObLt)iW^Gd1#UGpsrBg zbUbNicq(XW@Z?R|_G_b2vUG&dIb^3)N1(1rg~^pNC{o*(HZsA?S;$Q?Qb`Th?Ysy{ z{HDXv%F<|2%rhRY(hrW@x-^bRKt=55MWGfgYyP|@RQ3ZuJ|2rV^htcPjRm}t-S#4- zV;L>jUK>tSa(}TfXMb@#$7|5QN-`TKCak@IMcO3W5V|4$H>4`_HZt3G!enSk^{Yd* zHvgEeK4s{($OD*3n0)L>>PSw7IW4IUb4^%GPpMRtdtqlR2FjQ1BD$-XUA=&k`GQiv zdIW}sD5KbM%-}V9=fu0q)q=0$pS>+*`X{?Nh6j`gHeU=m37fV3HZy5AfoZdx1s{D@DQrL+JhY;kt%%aftPddnxT1xgcTND z;<(P8lQ7v~_x3KLipgUCs^O_SDGeDQn$fVmoB}s$5ed@c={3>Nz%@c-maQ5LMp)P< zB>|<6p+ZvnPlox5=hBh$=n~AJ$=LTUEu@AiTYc>I69#!XdVn8G5x`HsMO=pLc1b-w ziZE+;YIn?Maq^hY$0CD~#Yh-k7UDum6nKKejC5TyP4BD99vS?MY^Ml*sA@j+S{YaQ9X1x zH9leT8;T;^52|wezOW!1m;WVhBZzKWe_>%n7bk{-=fzR<_E#MD6?MTl9L%YfL-77H z#5BrqHfO!OwSHqqbeKo<=eoq=mE%hLOfTABGDq|L7dX4oH4!lMb;h26H?#;-G2_8S zypn5EAdpR@7k*j;Jk{igcEY^O{4BcEx%fka1zIiU=gjkRq{ zEoQ!x@|quRGvBllT zhUPbNr7}Gle|50$#a>*v{zDsYe~9ki{uDdiofhIlH<8_qZ1`H%UREw0;@#yU-dkyh zIAY68S~83?)r~XrHB0cK*=`0iJ;0J>`C8ls@!;0(XfJn;aO>O z!YFv~1oH4uT+D}&r9vF7v8yPYJVa5JWUkIB;GUp-`CD4ozX}DB8nMcdjb_f3>( zw7|s?0V*G%*}(b>%oUh;#mnr1_ZexnGmZvdGxqJ?lK|5gSR&b~E!NyAknTB)gxytI zVJ3-AI5?3gpG4szme)Q!F+GZ&Mp4I)cQ8>)f4YB8~v)=Yf&IVj-uu#-iM5bw757l~E0moDI z#~$rr`ogWZ7(Fk}ROu9L3L8@$T0V#vWAv$O-Yxb||4lyfAqY^ligaL9Ip4dglP2eR z=Z(?a1%IFY8ez@&Pf`dF9)b)I%COr~0pqWmy>D{$N_KSK9-OfDm&Z|mhwF&|)ueI2 z)08|$b>y}jk;PVD1DB(qj>%*iPZ|0{ll6xmq0E)*i=VL&M4uMf{%!P~NC(n2jt~38 q?dmiS|H7Al!PEZ@eRF98Trl5MH6&MTj@kXji~71II#rKc68;NL8EcRL literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_foreground_sa.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_foreground_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed490fc3b42f67e021186ad72433069ff2548b9 GIT binary patch literal 5345 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_launcher.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_5_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8ea03705fd2e99c873474842f560a5e5a4ad1162 GIT binary patch literal 19973 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

    lj){w8H4w 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�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�y;-r_hgP= zIZ6H;fdc_|k%eO=jMd{9xY_#M<=X2*Wa7LikVGYcWzGn(hEMr>|y9cO+ZLrPs z7tzb4rY9NEVI`MGDncLOd<;YFCr#kW=2CBZwafo;+W#sEbiwK&A3A`(7o`3bExmh5 z^ziKVUCdO^ofdj6_Ig2582D7UQiw18os3Ka?-~6JP*=8;QhCh5O1qJJfadbCwKMsz zZCsi4{k)@#JqEqXEOM0UdK3&j8~I-7BEsZKdo?<+&(devLLaz(WmpVyRr&Oa0o ztS+)_^<`{ZXR|$d7wBs-O?Of)-0#+LfmOw;qEA-MmEVy-7cTwx-;|gV8RtW75Hiie z=o>cVM6Pm2UtD~MP{N*THx2*J`NcEm^_Q_Zo^sv|ChoMW#8G@%NvGsqeNn7zn5Drh zbr`a$5f^{J!cy*(kCEhQ&!C}u{@B$v4dx!dp*gFn=}hjr%OBo+4$RCQFpKHmLV{^? z=XZ>b&$=>W@b0-zXKgIlyznlIvL))?V;|d?P{DZT^`0~@*%#EtoaRXFJiV{r z9lWTWPJQ$Z+n~I>`1GVjU!uSFJfWX*`M-`;h z8og}ufcr##>(KE=zZ*8n#J5>g(`1Fbsb+B+8a=#4nn{g4g4U~#HAT~XJL|Y*oh+tO z0vpV4m=1?g^GFe{HT3-EuUV`Rr)3|8b<>tTzMP)qbAX$tw&2y+UpO?&d)K%7+xs_2 zgx-gxk$o(oK7<1hX*p=-(Qb@ys8zX_&BB{Xp7NB~@P>}4fA;g}2f_c=8M_6X`8k;V zn#iwQ9Q~!9o!IV^m5-!l7b~qyJ zMkdb)88l@dTZ_zd({_FUrn4wLP^vmJwZpT%0wQy)9ow?))$(b=RKJnJ112dtyueq> ze_kXnXrJH5yudnWaSUi*s}*Z)n?uwQ*!4^fIl}GGL_Q_m3RM49)=M9X zL#*7dOZ}6Eb^$!o&x(0VUARNov(q>Q}*F z_2>MnXs6k5 zydK=l-7C2^zDR|Pq zak=O(smB4hH^60@Mx*R08AI{tELkpakgaxPjFx~{Ie||GK>(caIu|zB&1X3!49%mi z=Cd^&yu-SJz}MDX8u0MCU0+DdqDnDUueblUcvw-I=8!+l9LPTlA?{}DxN)|3h7Hw|X4N+v{Mq5OfFnoBRZOwJ?)m1?P890!!=Y3Ls4ax$S&L;6kCBKs#KqEiZw%&6PdU9?GRy;g%3cZk+VLWJcX8~^}L^umL7 zkKUA&GmA;8LHb-?_PDxQidYM-<5JD}zBo&z0H;o1%pyBX{7`Re#fW3(RVe<;{D20p z>=RiCWF(p?ne?p!P3$aR?`T#a%4Hs&IG2Cd9Dh7nf3WlHX9DR^t7&Oh7EefJN*d^()aaiRx-2#~ zCZ75BX>R~r@{_?}l179$J}PqWWrEAx=u^}DAHfN#z%|cmzqS6MqPPc}MX#V0JAZq4d#qq%2~RT7ui4U9%BaN8mf8NvvqP_sUp(k1 zp$L6h2!i`GYQ0+xxsNSs719~0+=ndrTRADJ^)=q_GJ zWuJ<&7c+5O^GYhrDOs8XA8SY0Zh!m^YO~wK3Ia zzA}ZN=OA--J|$UMme_Y7=e_}dhi5=c(M>QSH!mH@oUY{qROw)%p73a_o9L6jn z$GzWI7;}KZ#?C@1MxsYi5s?VD^+_&c&+L>mxa_rSs&c=pot#(HJUYpY-j|CX#dXDi zLz>lh`)`jsojdb{hll#U^XWM>Y~&|80@|+b8@# fZk86Z#nCQJzv=i~rSW|4SKruB53XBz*D3x#Ix2JT literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_6_launcher.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_6_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ef8c8711cb80e0274a4a5ec8da38af88596375 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_background.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_background.png deleted file mode 100644 index 6fe595e31411f3cf59117c5329e5861619cccba4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18427 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 U>x8HI5dA;%boFyt=akR{02jE#-T(jq diff --git a/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_background_round.png b/TMessagesProj/src/main/res/mipmap-xxhdpi/icon_background_round.png deleted file mode 100644 index 6c83d032c526c1543dd5a64bb7903fad0e4a17d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19930 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 z⁡Vb~MebxF)TWlmq@=CviEbQ9TN!B%&7gk!EkxpZ>_?j*U0%*|lX840xya-M;4M zyX(VTprngtEY=Ia1Z+~ih=TDZ5F8#`qrOQ_0!)-1{&9TPe4V7^s z4_ydQcurcpvUxbCT#pK*r5Q_K2|7-)2J62gv<<~J5Ts~E2{mHIoHRAEl^O!Y&$vVJ z8Al$O0t4`Hj&6L(hT{|4!%?+d73pxgL0Y|T5= zqM%sfq91jR=1IFxi^|g>>sGBj58qq1_B|s@dT+)4<1-Su4~9rKMcjBdRJ~i3wY=e# zjRq?;lYJjv#((JQsk0+LUrlBhAP}e=z;U zsj1!nH2yf=5FEv0lk=#X-i>cc%({d%Pu-##rId>*tJ%qP^W?lf*!=SzXX3rbOIELX zcW*HA4!qR*tS-Fos=i}VA9s2%dFQl`63HeZua@?_qHUMk(-dCCF#zCJu8rXffP3onHL^v^1$C5BB*5lrE$bvYfG^m==mnd#3ToY?gle75Tj$lUbvQ6^X)jzmiN zq8_T}qRwzQxjJ9-q&$29kmpl7&TIL|va{Bmy?oW$KSguD3vUR=Z;rC@Xqe4QkM5%Z zK|H*plBJJYsy3oA4Tof&vTS7)SLmBFMZD z!0*JT(f;$yp2z=X&z@~#u&f)NVL9iW-#q8!osua;MMi#6kHb`LQRd#wne*=9i@}uo z!Y^OGX4M&Me(iN5y`?um{)*Iruot7Lh^Pjv?v&Dp5&DQvS7N7&PvuV;N5`EO?05M` z+UOezWIj7SddU|AExNdYpE;+#JPHKl@ENg`cR2E;3%B9p*uFZkfAcpcckjlh2&j48 z{A_CTrj&J$ItFzo&4^t(Y0@1^w3|EU^)c%aAob-!;C$8E3!XZs9^{#)2?z)VP z%`vN~DZ}C2HJ|MyxtlX4(c~esHIZ|~Rlq<6w6F+L;zJ!5KpUTEOlIifVqyf)&;)7Z z55^Qbaq0)nz3A(&OpT9yeSFs=n^Q}Ry2;IxT1Q$Rn3h5LNjF@vlP>X0xSPM{q&~VA z0_8&&LC$+;pL^j8nx!jl=#BLL0J3#NQ1hYF+>oMBdK7sI*aeiSO&EzoLJ&~tBnXw7 z)}8DYvL8&M`P)YU&#B>1DB)^a#fZ7ju-=9j=l^^E!2Yj}ZQaOMX)>Cd+q~y)e#=RH z5R!a7y7OAMsQIeYi#pH4CD&bt=cM&9-^D;1>v}6!u3Wlw)w(P2tJG`oHtv_B$*w|= z>g5(R&$}|)l5&{FZ1&vplZL8nCr!48Pqe!p&q=$78-6}o z>{qN%*Notz=)D+tqrBbfj-Iz+b_bnAYgu$BG%LqBz zOVAY;;(}Nb-5eqHJRIGuJ2OLvIMe6Ey%fCe`V`p?e8|Y~|H#asH`vtcHyiMRoDKLP zc718`kp1aX&9r^j> zT|CY`jO+O+L%ETs!c%ra7p3fI4(8Ftt8=rimYq_( zH|>;K)FBo#-+EVY>~a7A0R>4!K~ya#?ed3`&81`b8lz6f@>(_*-)%h4Yue>GuMgtZ z^RB)1q}^fLuKbjnAL)jiatp_T=309#Gf#RbzSgl$wY}%09JY-lL%yPI>`6=049AF3v`?r?mqXPEAMj?hD*ZgYBWO5-Ephd?_%UEOInf1;am z+7$>3K2(k7(jBSnNNQO(xb2Trb|`!6PJ24nW}Ws$IZOeLv}Q+YcbITRJy+uwWyKt+ vUFCB6vJ1UQr*9==sMG!rw-~cLvcmF500000NkvXXu0mjfOD2)B literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_foreground.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..a94b0236b2676c38ebc9ffe7f06d7f47dbfcf2e9 GIT binary patch literal 6942 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 z z8iFOLsF`0G?3?XJ_g;zd{T3`2vzxdiAvJ7B&G?5==(Q>-w>j1gsrKN?Z6jQBfjMYT7|AW~) z7$XPYE%Of`ATZ@Vuk34v?FLX+7Cj=wi$}A0t%!f>KWh~)9iiIE)dUWdepEW1-c6^h zZ1hluv!_Cp@?w3IxYX}2!OgJ4dBHOGks{QzMJu@~O@%!{^zL5&UtIek(gu-dT$~Zf z%e{3NxvE~}F6J?2#QHJQYZtSG)5-Gc13Wq1p?;z#0uAv!rvZh-A%l_t*Y1}8wLjyu zyDqVw>S!H%^>>FtZLfXSf#TEmt+9juSuYNW0`2a9z5_9`d~*@gy=_28xJWi?rhBjy z=h}p~^mUFpUcxersMp5XXNj5A)%#yI?@a6bPy%Bh^J3?VUm_h#|4dIyY)u5)T4!bU|F7g;ZR)7w)L|C(2w?|lOJu?g<8S#otOGd_}mR4hpJN&&pLbc zS|m7G-yi-JSL3hLRbj{%qA(}w7S4#8fnpX6yQb)KW2;9&@{gA05%$V>2BaQ)+x>K8 zAiCyWOHT(Hw3lr2&*lI8DHOaeGN!g@L4k6ta@84<`Im=u$b#sCjUVdbm}CbY>hyJ3 zX8UT^BO^SEo#z#}LAt34FbB7=&o4LwWGv)7c{FW+Y5Dd37S%{!WBY~Gj{3EOH&*;H z00{zXQr2>S6BKeDd8F<9+)tlz%7pCIZER-n!GjZCIan{#Q~-<7vO3%`oOQ&-elA&Y z&C3*!McI57Pp@dlf za|o>k-f{UT#}Q4C)jC{ldr=y8KTpTO?$Z-URbU^>iI2 z^<&K)eUM0ClH;j-u6Q~*S7-Fqby#Jm_Cm9nqS1%;q)cBus9TQ!a4H=`fXaN0;K2R< zyUb|q5BKHy{yl*Jwcb|zu;6=Fbyq)npRbp@D`)9m@sc`M3?O2M*inK+t8LaGchgin{;taR^KNVhdh`@ZOJ4# zNa%8&)0IjW6(6$T4~-s$%a(PZ&ik7?{i0xf9k(c*#F29@Dg8@ZdYYeF(MVwP%(phA z)a*{{3C~4&IE0{$6~Jic$hpRc4!#VM9Z2^**BuPSUtz+D`i7$4&_G26Jl2rjAd64Y zxu$iaqN<^?X)EOQr#{_y{f3HDI$FvTP)&hM19T&fJd85-mU_D-(k){vHQ*L)D@7c^ zxV+WepE6|&n-H%7Zp>auOA(;F-s7~x+UV?FN88I88q#U6ja_{EY0p^YM(B#Qs+8d* zr@^@GaM5&fSkVs?Ay}&cF2b>Ar;Vr}_oV%~Z;CyEUN0|Z{CdbHP}&p{lpGS<4Cp2@ zR3!^c+hp1JG4YnWa*b}Zr&D;#HfL_;wG-W^<2b5NCLE3J90KL-Yr7&U7U7;gn8DNJg+~_3lY~2azp+?V*eY?`aWjV44%VpsM=L8nS-f(UzPz^R>w6~aSQ?)|`vWA&*O6c1*38Blp z&}I%~A@4U!In0+un=^iYr!*NEk4A6QJJg3XU7D%LJtcz|a8@)eVtA1=AqquPEzxso{(PZl65B*pCTbOtbC^ z@00hnEDQw=Nz5{102U>eewAJbyG&1@sD7;|XE0A7U;M43{;i|_pE~NUCjPx-`OAd= g&n+AI7i?SVz?rsu$(TzWyO)Kivz8`RXRx>a3zp5kyZ`_I literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_launcher.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4c6da9fbc704b07af24cbf337631298861751989 GIT binary patch literal 24882 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≷=b?)O| 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_3_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..470554ba08d589ef1314b57243886989b1e3b0d2 GIT binary patch literal 23469 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_4_launcher_round.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_4_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..2be4d4ad9932b38c915f4d086567ec0b7ba327f8 GIT binary patch literal 31064 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_4_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_4_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe44e352bf4a67c69e68103d3cb5ba34df7935e GIT binary patch literal 30062 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⪙Glgm>jb{N;9&wzo`Pi@bo}gO`h5~6Un^m50Ek*7 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_foreground.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..9c9070f0e1df20b95b433c194f0fc9ed444b46e3 GIT binary patch literal 7698 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_foreground_round.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_foreground_round.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcabb4d7b58cc39a8228c0e4b6a9495fb9b9d15 GIT binary patch literal 8095 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_foreground_sa.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_foreground_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcabb4d7b58cc39a8228c0e4b6a9495fb9b9d15 GIT binary patch literal 8095 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_launcher.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e4781717f7b3830ff6bb7e5faf0b1752390c628c GIT binary patch literal 30448 zcmV)tK$pLXP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91z@P&F1ONa40RR91zyJUM08KkN$^ZaB07*naRCodGy$PUgMRn%C?`56` znKUv6a6nNow1`m_wN7ueQT{cbx7_lhx4rFcH@^S< z?_Y^bm!=K)Y2`ZTAHU+*VEysBd~&D_?r)rMv99>#h&mbkj{a4%}puO%7CW zA0YJIb?m5Pc9oVEXA=B3>-eE2#ziYuthn(0`|szt;QH&YzhJ-p_Pe1|?E}6qm&ii2 z;{7E5Ne>JJ^yER{a%{r!<~P52^ILDd^$4xdzoTIM(8`r7zoEeVk&X?OeuNMBf=~E{ zkL7Rrj{lSGYLi#IpQIn-9+(V_3U~+oQAZuM>CHFa{5S>IZz|9}rzpQ=Lq+;B?B0T} z_>AwgLF3B=?%Oum?jPF__;Fnc`gT{@xwaNRt^N9O+R8jd+n6I284r4ZM+aA^FKgTM zCEZt?tgYH5*`C@GRSvl?Kfs&)6Za>3fB^3gukxa8a?wQ>?RxLM_r6Li=jqE>X&;cH zw2`*bX4;+yebM)g7X#6Lk{;kaFgd8T4cO$9pZw%jciwsDa}^MuQ6%5fa*r^KWx4A*1xPLHP2VKJkYl{i;wK`I6u;j z^rti#{&xHAxBsS8*$UOsBmF?WUFyHHX1j$S zKW+MqzMFW8G}+IK498E%>#GMQ2gHHTvv93q|51Z@{*PbiuH6>XhxBFl`NIEGH_Qak z12y%&dm_B^o$uUKuO7T~i!HYJEj4Pt4cV~U?;nOM?ihw!?i+?XSHy9LXi=UU?$T$x zcdE`_VjDfF-&(hzTW>m}Lv@w6%6tdqdu}}p+j5J#Vbi7e+;h*L=+%r5zWUX#mgjAI zR9-zGw?%yrRYNxRy!Y9GFNbGtyY03kv~T?j?eQPIz8bJXL;iz1BhW8buwQ=1+;I8r z%0;{Jp1EPh-f@zkGS_jgyv}l?yG|S-9Pu6&Ghin;- zZ%|zyN!OQibU*cL+ikbq*JTeU>nQW#c-1!YoZfw)q~6ym&zyJOdAl8W;DK+|Q=MN? zLyEpm+Qf@F-_x5p-_jd6-@0LL`0huUg8lk9zVoBGfo)6$ zCs9lwN1)?Yj(K`Jqup{vK_Bog;7zlMGuuX~0F<~r>wq(-gHk-{1 zhiF0^x_wND{dvN_?$S-#7QJ3uqQAN_+;GDU zkK1|Yo!RdE%(^gt*=@t{xhsa@U#`?^n0MtEHcwPnnbo>h_`d8&u5nMfK0xiS=@A`{ zabtrU6RNdoQcjErd=;!?l|0S&3!L4zm>rJWWf+d%WoFo0+og4pv@QDfjW^!-YrE{S z%NfF_!|Et=)HlkM-MG>FhMzOma8nM>W&3YsMBnABEE+2;T zZ(5lF4*bM6#Cvk6wPhjj#;*k9yl{~~CknVKRBAN0E~r5px9JI|lX26&{Zd)M7jq6p zEM#6+4BJfnhi^0EiE!-BGsBL$xn9d@rCz{$_Xj`t!Pmax6|dm?4VdPr)R&94!E?H1 zV@%~&<+I=a{`dFad+)vfw^rLj*OtR8H6&m9fr9?BVffm$!>~fZOl-Jdv1!VF zrRv(-5z1i-ddSUj*?>N07ZDW#W#}-dscxC52Uu9L zzU4#3D2SK35#TArMQd2b)RhJMEm>Q&u-CBh&3Kw5`WHB%McP;#DL*Qoz3j5f4%ln2y*{QD>#=Lv zQ+Mgf&8HOjA3k5t=QZH5bdrydy_)(ID=Tp@T47@qj#XDm*6VPP?e^w{@71=R=O;G0 z6vyzbk1yTUiE3M(!oIaoPW#{o4ONA@aeM!h4}0u>K?IUGJu0)wf#{8wA;> z)$M=r9euHu+cJe+9|*M_h`@0SwV;632MF5KEvqHf!8ax&ngtNd$ElKnz=e~PHb7bnZCfL+%RV{B?A>?Y{p)(R|Msk}Hu(8J8iqgm#xR_F zBM{lgX~jkzJ)?l6ij>JJkJXJZ3i{ATK51y8&;q`Il5XS?wgXis>(|QMt+wUE2p_z% zMOlZFXz1&oCnR=~x2oVSd?5OEw)Qvr-0;Y4XNTX|b9Ojz%|B0=(`N?1x#gByzDw|2 z2{6Y&syu4z@!Yy{J=!c&Wt*I1Rvq+5n{U4PZ&Cu4*Is_97yWg6?2>U$GuM{=_5f7qHaK~(Cy(SG} zPT)w;vJebF0XnQAgq-bryM_fN*p_oG>RBxMtmL1iE5XYjJhR5{BTz<(*Ub2}w=C9T?`2SH4-k$Yo-RPb-H*l}W#hV*IZu~s5nNv5- zH?sJF9JG*~%b^+R+gI}`SxyFUzEa?gFl^7km$uSI*^1q8A@ueGzi>Sha9;@<_DTNP zo~feXxBMv|?4Tuu?{+nS&^OJ>ak9Qeb;?{EyrZov^t#7qu3tHvc>apvUvEmRPJKB= z#+b2Y%+tiE6T;+j;MQ2SjIS}!lmNXw%CjH+=tsAH;R|2*zx6K9Gp59tCw9YK!|=PO z4#VkJs|U-1^IUB;s%<5NK95(l)X%`Rp~N#O%b_2#3Og5iyH$o)SC+O_LAh4{vID8d zt}<>>t^# z+B&YUdhO-SjNU+oNN9PxUWXlHWE;ztHAOR-t&V*H1RSU!Dp548Y$T72l)TWVqW?Oq ztqHvI=Ci{aH3=TKZHTYVS(D)FO3!}slb?K(^lM90Q0Zt@*G;Y_t(Vl>p*(x`*=O(Z z=tn>LBn`?ztK$J%ocHR@llSWhPwOd=b=a6sAd9P!i^1zBM##cquX^H-*-hSm z#~-hEZ`bc6SRdar>bh;1efPWHz2ysD@Pg0I&dwfAzb-eOe$_C%@*jucQe89|1P`rF zW8)@((x12W&k% zJY;i=F6$(mJ@(yq-^cI1`|h9m=YRfZeSdEKrFA_4T9>LxvnQNz!X|(Er+@lU?fFkw zohJVMdAiv>CB917^wR=^!?1XeCTQ$qJ^1X09Uuspk_x3r6hMMcIe~&4_!dRT|MOJ( z$|>q-TN4NwoQ+nv%Kgt+p@n#*5_28460}C|%Gnx8L>tLzM{IJ?DSSz)9B^X*#tBJLHYpgVS2x4xk(G+K8GH9=)=GDt#5ti;*0e-Z8Q?D|=Vo9$S5cq)h`|tg?7~Xn%+2jp&qLrh9__xElb=PkN>L zeR@>-YH4y)+}{|d^UKFvl}105tCCwTuUb#eF{@t|c>U@GKdt`buMERqo~}ZSQH|YL zZi5Kx@ItSm%iJwDx(Xg~c)3C*&u*f~e`ug9U)g9Hdet2u@F&Zth-O`#@W)~%w2J89 zCO3US4tnSYhU=(_2;WHsG_CD2rAQ9c6!hl-kX5%nz%D~f1l312sf@6~W!2Fc>%Y(e z1zxlTp-~y#zrJS0@aI=|ep_L>6EQ-pNSfG8XRSMOa5|`|q}By!VV3i=dbj5ldbfv< zz?YTo*ZhCe=ZE2BUZWD4`qr^SUiHcsqIpcy8_LMUIIBb<{)^6JC}#2|X#GmqaM0J` zfXOnhf$Ovg4Nv^o6d}uk2o{x*efuYx{i_>T3x-{a%~qAMsdBU_D`XH!&dWy7Tl;M= z`l4^6)yfa)Hy&_Vx9WtAV|LnP_`N-6^!)=6mY4MI(68&=q4!Cvt^$}PRUWl9JgbxGz{O=x3oZ_)o!^^S{YjMY^};kH%(>d zM5#urzL7P5(50;Zfliq~sI5umKp=#+;Zlc6)J<1)tS(*!WD6J&tW((Xt;qqPl(xdJ ztQO6DWGIBMC0DscZ3m%|Jv3-vcR1+Sk7JkR5m2@k5kNo$_?g{loC; z&*+QjSEv)wiLskkhG#?Mj7Z9<Dc80qMh={^5j@c}tI=tf7Rs4M`au98^i$k*odjTv@-OW*ePf~- z|H2&SK&0<#(u&xU^)1{;DnvWrMG0QmKU3eic+K}$4th|u+%!w<5JOTVen!ya<>lgz z$uBD~$21qOxCixw^r;6wFzmOfsbgLIP~d9P@h{pI@;K7BuN+IRJ+y5IIzm6n zMF;QP+gA>6ynN-b+~=Fb4lzV536**i-tA33^ zUtFQ7zE=c*vNCtP%3j2=lypSQ?`g>^oz`{8c(gQJF00z*6eoXjr1tBCrndmrm)Zhb zgu?2vDccWBxg0n}?`fewZYLZKgfW{arY|al7$j1cTP&#FmN>}8kG7Po@RQcsncJjl zGvnbh(d}~S7C8K9t8J=GGEL>z)9Z>Q>6Dm6q?# zd^6chcRA(R>#n=*Xa)c4=8LYH@)uvxFEc3k0WoOwb2PJ>nzTv2b&!FdM~e;By&_>A z8KEOz+aa&)kR=o=pwXi&$y%kurU8tBY+Ln0eKb5}v*n=|vD4#Yws2Ay(WWO^`z0D= z0Gx8QrX@*&Wp;_AY|w)kB)l&D!VH`deqyCf^y2DU;3HdU#!=nw zckR| ziD#UqS@uW48S;T#*x@e#Y2T&Zy6AP8lvvLh3rcaQm*+^d8J?Sld`45MYICJI%#7x=s2QK$m@B? zj)H}{2N-VOMtcG?bit^r47g>l;cE3{j~-X5k*(Ob3&Yqbq8o?X z4m@@4T_}p_V7Ck>s395t#}&}>;)QHp6|G-ws`jHF2xYhV0zJE@wG||6)mPhu&56c<|f6$kGwcdT-Yk)!(d72=3Ek&)TB68ER4iQ!gGgr{tTLq@GvZVp`Wd#-!fq+fvHZD&`d{ zSF2bJBhW)u!sd}h@J2N}pd9+?Shwnz@6|?R3A_qoaB&5FW57cwbIY2CP}(slCuEBb z&)x&Hfk9W5cJcoYMX^bhL^HIGR>`4z3?p7g=P3J)$E6CpclM1>&cKF z5G^YaW5ilGj`Kd2h0zP!|DG^qx%9}HM4RXxj{l=SE&7}(^)2?se;9@@U#Ma>!~Lo< zd0&R_zK57)=L^Y+)_92p37Y#_xl{5C2~CGtSuPoSq9u-1&VfUL|Hvs3vMy71fjSi- zr%cH=TPPOK`l?V*8tNq*_{mSqz%Tico#uxPf)J_bh2=Ud+bMrl#eN;(fe7Gd`&AB^ zs7LENy~OPCA=w>eWq)L27@n+Owf>`hmbVV;_l7>BS0-L0NS>^A)6GtcG<{m0<-nzj zNaX0xUVH7e{9WB;1^;LC#r3Z$_^ZEbm3M!G&iK{XRyi$C$`(fHRE``DTCK{7)nu?m z65XqpPn03RkTym3;U3u#Y_f<{D>~iaCofbi+2~+%gm)cJVPan7qm>n6`qJ4khE@mu zne1>V3~7Xlc_XYajl5~LE}96{Zg`f;Hhc1?eZWFC6-_Tg;KUK_3m9n4N3ea&4PUus zZuqo*b$dC9SR>}7l9<4%=lb?Iz%CP1NLZ02`<=XbW+ZMWUnlTDp2)V}{OzZ72E zW3@jzC~2zu)t5xHA<+ovlBWY(IoANoNvHDY+1lyvB}n^x=Fm``ONZRXpNV`d;^P5-~^YNvF&$ zN4?3Syqr|>DTbW`$s`m>{Nm=@#??fYN(A^l~Qo7E5LI{i$lEhbGOrilS^CzU-O z6FSHi-8sTZt9;T<(JMDU^~x5gagzsLxBAN|$L5%P$wo`sl>$LuuA(i44H-$}s9f|c znXZubO?F5k%fw4RtTSGwErm0N-$0X%+=OiDMJ~_m*aB^GTdMuY^?uE7Q~3dIy@O>P z)#-Dau~Gig&CKxE2hI-LEMrO5AMyJ`-4nb;5UafvT86pw)XjDm&Yp3`8T%>tf2(n( zD7;6nHeJnEph-kQ^y9p;$4ERJ?8YnN37yn6Mq(jXk4`E3(8>9P4zyad7Q#Xc6AV&Y z%|Vhvg>lq@FZ5yjM?lkymDHWmAF=Z%4H?X)J-e< z!AGuSDO5RDWMpU~x`BfqtqrD^&A_RZ9GtLJ`oSO96|Sz7z;LQQqk8q-D~EUfz#OVm zC1Q^llyHT~cw?tPS&@G*sAn?#JE;$0oleMT&nE@N4OHg%&v0Wjg6RW<}Q$FR` z8lf)`aQcAg%W#aFvPMGH`ssrJLI>F_TRw2X=Ku#e*PH#K+fvBoY(p;O0RTfMQkGqJ zSv2Vsw%d=WCHoI1X=eDBAFUX^dq>o!Ja4HO{8Py~9y=WwpDsCW zrW3Ukz>b@%uDa?8x*0isT3yEBT_>rT*%{@b9Y`8|=3s>>8f6<(6;kP#M;)0Y#vrDi zvL=&dva(&gK6kn7%2NCA3ajZKgB)cDqZN_>i6DWN69b2wQU_gV)NnnJ2B9@EFQL7-1b{2DF-w2i+O+HWjq+u`oC?BCr zBw+LCZHALG!#l28-b-_e!4rr@q2gYJ%Y@OztB$|L*^Lvu7e**=qAxK2PUB8d_{=wl z;rse?YA745IwI>1=A>1*xd3dJ~HJGd7rY*z?Kh2 z8C#j9P&X2ix18}tfjGL{E4+|l>oX=B^=eP$g;o0DXW=G*ZS{E2Raa}#3wudRKf!I- zA&f%kS=7CjLS*CZk9tgeo3e7~7&q%xuH0nIpwxUAAzZ4zANzO9d{rW2aq^APY(QCD zIG=U`pk1*ud(lM~JytXC=N5*XPyNwt!|>6s1VG;r1=u`QKNQUc_FbJH&GRdf6YJ?3(!DY$d zC93tY2}Vph<=FtRLr!)O0kB;GASiW40w=wZX#23LF~M$~LXfslzLO ztPjS>eAx~vxY$QbHfe#Le#X0SR^JTUsr%}_*DQ+GXV;WoMTqM+rO;U|9zhy zhP&^TraLD<2u`nNxe^+j6Mc|8s;(<@IfK7wuosfIteIjLUddLzfPHsHFAu!x#>jHn zb0C-(tDxH>FQJz_Ub~J>TF@8~+$KZArV@c<5#u7CDybL2CmDoABR75qPUxcqgF_g; zQgzrO7vH84N0vm#sl2m(we!#&hvCQv4Z}g(iEKf!jMe*vZnWPPJVAnH8^Dhytg70lPE(UMpEK%rA5YvH0qUUYI+es?mgDl12=$%R^@QJ@DIXXBS6 zRtjP04#aYRAS;>*u_sP|)UOpX5mKKTx(F$0y!|}{V~yJ%>5ptdvoGZ6t5K}~5b@7` zxF=x-Ed+}nbSVz{Lz2T2^p_-`s6UEvxPpE+J(BFx)%r`Be|`Df@Xz}E22QlUmq>h( zn%(Fq3;FvLH5ln%_%g!i*feGMl73?48QM7g#Nn1$BoeVGoSo?BG+wAX<2pqI5whm{N9 z2zwzN+=HHaVDy+pN37u^fLzKlrcTN|zC!S}Aaf&{$4Rvc#0+xliyjyhdi|m+N4@l! z$xd=c#4!x?#V`$$`xE5X21E(Z|JqK;q`k>{FNYaYqea#ASg{B`_(+f_sVrLTXM-9D!7n{4isaSQVub+_ z{g9^|DXdt(qt(7Sq|4Ko6xOwDVrwQpOe^YdJVK8gpE5JN{m|Lr=QIJ93VvfNpr8L! zv`v#vgzzKm@CkSLneCT^CuQ1heATP{)sD)ejiWR43+^0-f74Z9+C*%ge){SAN}jmJ zO^#KjRc(QKWy-VqG27ozzABwDW1sk{Jjh0~>d>gl>9F?cptRf($}uEXTj?nGdQHD% zl#@z7YN_ARORw^I_6azQrvu2jCY!{w0w16 z$-WHC5&XD7o3cw#bko8Cw-p)tpL^42KYAhCFayj)U_Wy0%Hi?bP3`lh+5!=yzox@W zh;ouWjNh9eM8hu0 z_*Rp;Y-Uaa5Vt;Z`mX~n2#t=2=;!Fq*q(K}DpMx5=ftYS12XbOwU?RzC?Yefzv#i+ zp4yd7mp=KGuuLOJ)yTfVl<_he9eE2%Rf}hu=CkW5-*_oUy=Y!dI_#oXK4xzMkE;Dz zNT0Uos5S+TP@%(uVVMwOKqI)3ffn_VKEk12+XRahjxj-&YOQC54^8D}Bk9{INME$? z-0-QV=%?duhzyeerUimCrl0h}hgS(&*{=35E7~zD@*C|-EU?%_NRtn^G&8%*UE$G z^SgQF%x-22@Gm>AwZGs*Fx&NzueP=xK*o5{R2r4YNkDmK__kh|K413(kC<}#%~<_g zDKm3`#Fffb9HmwD6be30Ipvgx>I(=@8mXwn~{|BYEPNe z>$kxVdSOoL7rk_AJLHa*s`0^1KYIN}o8TK0`}jmcmkhZmwz>mZ^vdHYQPe%~9`qP^ z2ZS}#3jkA>VkGfQ3tJ{d4Yod+XmuojBdy(~rGBdidR93qkON&rQS7--5= z5iA^v1WoWtmk*^5(1%pd-+xfRFa7wktgemxx|{&Gr2o+_3Q4g4Y67WEcFNUGGiZ_8 zMYEt=HvsFQh#}0Aj13LL*A-XS>ciAMru+K?6|;XVlY|kFiR2tloEDk@FtQoWXZ0oI zsh|6wdbTWOR`I^g2zi!-PgEo0DbZideYjQ#XN{ zl5Ew0KrbxYuHF&7up|+HQUwOE_yCAv0C?afSAmXL1wpNpwgW<_gik7Op^3KrIXW;VbhH^D%Wz+$L3h7eFig1pT5?Uw6Td6; zD|>Xdz+EI|%)VXhQXo$YBc;VA01_z7o_p@Ohw6_PJba|G>e83b3VvC0!#WlBkLuYs z=2Y39>Qpi?&9hXVvI)kgtU}YTaxae{DfLdHI*LZ!WeOx!tOJq5 z38D(FCy~KUN9L`H0-zlYOeNI!)Q`(PZ~wXBnfvLlw{MX+h;4v$js6No^^MJ|GAF0; z%E7Esv`d6?H5%2tMIY(Vi88|0hiG{VjrtTZrIYm4$!RA5F-zQhHGxfwr307;6ep7%kD^Kc)I271biKhSLMV~)%vJ# z6joG5SWT`8A`Eq02Yqj0lp8C3ah4mt@~>Pdn`Pg=Ca!O?Rc0_}B^bJvO!IkFKt{}( z1Yq}NRfi|(>CG=5I5!;e;E;p1q0_ax0^n=)cMU-F1?^Rd4r*;f78?Jp>2?MLlK>jp zQLZaQ;h~E5eIjCqvff;?0%~L zVk7OzK8XGStxIl@>d3h5WHeH#wmjBn3zD8xCxn#F6E>_qNrNbTV>HFkHA_5l8tF-( zyj(IZ?b{deDxp*M4FHabX-nmP6=aZ;EydBKKqhbk0GS=M!awJLx#0x|&I}L951lZ# zv81c@B&M~soXSqae+RS+qsid*qlBE2^>wQ4p$ABH{vi_!!zd4}I0Nyox(YmUn*{5b z3zRcXAc??`)U^m-i3>1{?4+Z#{tfw*qTV*_R zU4qaazVk5r{t+|7$$H7;zaLt`UkDpdezmUv?iKs(_Rv-e+2#>Va*##vBw&?E8Mj|` zc<9d80dxG|{tvlRbRTek!&!CT5WB>%q;NVMpHS(q03}euvwQBj=Tj!+7pT%^$_Zfy0H9QBe=HJr-eto686m>W9 zN;|Ej!AhC6l7l@5w*sGbyDxismJ1MiDzlq+leqs?&;L6b|Bz?I!xWp zcL3QZ9VHtVY7s;#S2y5LU$MT4FfyfZZ+}cjVx_W>J~RZ7DSqXX{(B-}*20lnpQ31n z%DgZhvzu1?gNEVQedBjALm7||og6))gR!s~{K6iD6<{e|nYAu`z2mOJQ;vA>iYapZw%w)rhGs zG?(d>=R34Q7&_qrp+31!H!Y1+xzACny?Rft04tjDbx~_}P{j76{h}kAd^Zr$lr7BC zFMeV5bjozvq}{5+FFX2^xx=##)X%;@dl>%qnR+Ahrz`kz>VcK6(hV@F1!`BWeso@a zn*8d!Sjl5M9Xc|-egjG#;>E9Aq>&hQbo6%MJK2E| ze^L&eG5aZxE=5i~F8XD-nz5@M)4f2e{V!;%v-4Ict^33u75w-`bHf#SbMhAt(0eob zYbb-4tKz977{SM(UiKzRf_o2#WjQTNgLNTTWee8*bifqQ1phunVo*B-# zbxvQHDa>FkcFtI?$Dt)=^qK$=A+$rkxHa|u|2$2Ahz?*P;j}HdF)FK~ML2FIDZob{ zlRK;`%FPqs&8E?myWFB+AdtLHydj!+J|H?+z-0D#b547|{_Wq#UE=F*fyj zA8^S;EEChGo_Z=@l^jd`1i-G3x4-@Ek5btm#f(WWP`UJ~VYo*xN#Uo11_U*djFbJH z$jvIb1$gjD#$?qknTgf6utVBr^Ar^H{8VScR>Q{6#4e0JFWzL1%x>zP=RSHEo}-@H zX+3Ro$~OYzQx^@xJN3ci9V@bN1c>Oz?==iBnfk?*LR@uzr}o^}>oo`mDV?6lH?!G) z#T#*}Z)^3hI?5wjKLB-eTo|?5yZ<$i_5EiM_~nT2X}fpOR8cx?t1rnMq?bC+lqwxo zo#w}&R4SRNU*6TN+jQw%J^e9S29qbW2(1wvOa-hPl=PxGFIfXtC9t9sq7z3P@zO4N zJ*zKueDD?t1rh!924*Jv*y&@V{4be4$Hu`A(fbjvm7x5x z9+Ow<0bal@hQgd=^6^{gb02WfwuxVOi{$$8EM2Du-c{%oX6g!1L~`E#)NRys>B7rG z4n-P4ayg3q1RpPpkN8-d(Mb%7l+9OOvS#~aiE;go4i`Vr*G0qto*C~Rq&ecB zN*CWW3~xMb7|y#<9=Ma_q#TVvnHvt@eQx-(C+n5zb@XKzo-9R&%e?*(sPv&%Y|8Gm zbj_Va2O_aZ8q=pKbb8>GR$L9hE_&m{APM@4yQDN_%9uu>4g*e30N`fyQ*%>Y0eJuC zM>ltfg5*gV7W~SB3n~Muax^CS$cW*IqB2UB1B1F!=`2)+W_b#k!0S`f7v1G#VzaIa z&?}XHkI-uRT&?y;Yt`R$n!Bt5Sj+kSa`JD!I}GnToA+OER6$Qi+35(vC+cTS-f@(E z+-e;KKTW#)w&>~Dg2)5echJI2Uno}pvvRvH>z*z9zXmMy(NJ>##~?IJ5h=$DbA^?( zCO|-B$ zu$-Ri-kJ$u$E0mP%So(&sJer!(A^=~7RtFon5~mnW&G;otPdV^rRpH)b@fou{4rS+ z#4t}~a#HC-K!3X}hvDb-IpMRk;_ot5s{?0Uo%wUI?>}=+EB}mEH>^ZpL<6!c>Qncg z8{Yb)nf3B{!)06nw9*p#5#YEL<(QD-yJPLJUA3HKa=MsCYiipG!IQ&-)?Za(;DU#S z?6fob)G#0RFV`Cg(@X&2ZA)yQc;bmyNF5Nv_FEuuXAU{!kg2vm2w!tuEKJ;-M}yoi z4lL7T!V>}EN|Hs~9YI0KeW1Mh&^cF@)K9UHwZgb8fX0+OSUrx#p;1Ua#RGIR`<$QA zHs=xg6@|%OKwtx;^KKZ1H=L@UlDx^@+TREyIg<^beb3f6#NPD88Ta$LcJqh&63U(T z$10spv`&t`uB%dXJb}poM1YRG6N1J_y!hY7C}cx!)Yj04$G;fekO7{$WtCsSD>zf8 zjO{CXafTiX?bvzeou{4v*J=XLpd1^DEtv*8`F1?5kk$8lLpjtIx^F7IXt?{q5hk*^f!~~uj;&Pizl>J6bAjoM-Ibp zKfVHT-TVH1J$7YaBe1b2=j4Y2JXjDXQVzOgYa*~+akJbwO@(TwavR7%@I53n$sr&5 zBOKF`u57sCP7709GG%OkNrJ%mm|Xj2bho_El1M4Q76=qh)eg5$BnKg^NN+spJoVulzNp_&)x(6= zeidAno9;hV2>$=1HvIbI*01lE@dU^z1||YOg0mlpSlw%7mVyR^f3d2Q2MRaRZWHys zkya5e2M{}qB>FMtQV_{>Z-YX1Iah#;?erx4=_i00n{2YlgMzj6`37CG-3Vng3IK0? zsOuoP9m?Hk4`fs63c*LI$y>Xtcf4dZOzLGH{d{0D?755f_J`>i{=xb~W}B7P#*wq? zzyI6A@WJosr;O`)IC$tF6 zhlQQN*Ls%&~cD$V95Ja8JKJ>@#qixRN!|*sg z%bJvH3LCI+zP65U(yD*SP0>boLpFA@|M33}KdWDcSj(?BOxt`WfLCS58J@~#R=Fsu zrUGRRK!^~;tnwzhfprxKo#X?Q7|x_@eV|~WPa*MLq^cD7QNCRZ$+RhB8*_EEr$B`< zqo0%5xhkv5SLi17e!YTgKjmHJ))71wS|F$QB|}c?`KCz@(S`WPFQxxbUAtcSbnWl= zL3-m$toncTE&a-w_WO)mwYBdDd!7BqWO&=rdf9HOhtlh&y_f0JR{XmTLQbEfh=vA*q+G)ror*bq%g-Xe5xSec?kQ+YCS=~tN!nwqE-J!v9nFpH0ShJm$ukMuQoh&7=CuIj<}wSx7|B8{D^Uu zgM>e+g5F~(Mg+VC#8n<*LAOTHVggy;a?#)xC#p`yMUUsQRptxcsnvuZ1zsvCws(>Y z9;TQ2&^MKeASY(FSqcdL-Mj&cL#f#ZBzzhJi>sxBSrv=tvwxRU7x}t(pzMS`ItVIN zx$>TN(B8xFKc1}xLf9KyV%7iaZ|ZmM&&a+0WSitL-B9hs|Lr!{o1P~O!yyl*w&BwE zwfZw?9s>IvD}KFdp8!SMq6(|ZxdPw>TR%@osyLhpEA=!6|K0A)5ot8!q-S~P)OApBd19Xk6MoZ| z5I@MfF(uxS`ryB5)z?!Vp72zo>@$vvR{qm}h;Z;@SnqwNehzU5gf@J-#7}_2*XVTl ziKDFnDpo^iM+HE(4_*blAAh>B25_I$BhkS2XeWNO9q1tB-amH_*jF%{#iW>a0tjth zY)?*rsjmRu0twL%1j2Xs1+G)ANkP3*O#=5BMD+#T;d*wO>#0!vN!2D2lyW6xK6kpl zj;I^ONAFwI4VPcUs(-Rp{Trffcw&Eb@_SQMOb8#VPkvgv)4x#g^L^rtCHV@#fRN-f z!A#)wD{;}>j%rxfzEXzN0=^-PwnrJw7Po9D>O2AqebosVl6>PTbLYJ8c?Em&++6`0 zt0ut6irx%p+*K6r%_~6pVo^IZu2jJdwJ%$WwshijV$o?FywZVHwwheh?$y(%H-A_^ zIr2EYCh){zc<@xW@wT+qPOSPL(O&<MkIu71XPfs2-42SF4`S$B!MZM(uVR*~Gj8^?>uiGhi z9XED3`ivqCfd2SB^@aAQZG0cp-L7{suH&aie6tz-UEb3!hM~2~qd^^N@HqSGU;=cv z+T1a^z&stYKO(47exw3Qu#{WF@{&`&+4K)T>RJ(w3ag(0*ud%g)Q}}7z?Qk2GEzD} zHsD(JxG|*-?l62!xiI9jJ26VZuQGXcFc`GH$A@I_)|3(dyO-)uH0gNn=k!JOz4S+* z9~qNjx3#>t<_XWowBmnQTd-R7?N^@4fBbY=eL_3xN^tc4dNg_*uQT^r8%Mdn0d~LB z|N2LF*VCICPySM*W8VW+QngPPk@l<61U`Z>Q7jxCV)|(Oa-DZy*)~$xPZjh_o8H=b z%Kjs^k?+&I2_Pn$o2`4Hh00rUxo!@HbMA!BQ8%0(>(ZzZqXxNGg;lQuSOz`t7t>ER z(5-VM>vF1be{$Xx!*H&S51cd%`)I52cwH49ulN3cdXJDre|6FsmucIgCp=ej1D-x& zyZ2>P{-5v&eZs5f{7i<8F}3|a4XS}wfBM0OCUW$13{bQ=0^XegS)F38^%KHSUhmyy zz7jwS0IT}`f&fUf4)&@8(}Dx9!v3@qKW!xB_tHVNoODZ~rX6 z+SK_QatJE9O)9sxWqH(a8i-(EXR)oGZaP>hFens5Au{(nJPV2^f$#rN$94Jvsjuj# z$h9?ktZtkiyKfx3Y!ATF>06f$!>7KbpXa+wvg!an3$Y2|+g3v04|Gn|7gV__K3!L& z*B-m^20wmYdP}a@*{QUL$nQvovxts2)KIy_*ow^EtjJ0XDi$Qccz9 zK?i(x=7^3bg*i8DJuixbKY1p$Cu#FkC8Q_(OQ$XJ3P2xJ;AekW*_|Pt+ttBUkW@#) z>S?9t9Hua6IEj96>iVnex7LUD!@ZR{SuP-|x9FD+PW|pMeCeFP-$mP_hy7F>d+8-Q zwoAM~cbncfzfKBd^vgc9q=$eiN;l|<#|?V!ecJh|U>9QMTwz>?1gKJPpL)>|ELrFz zc*sBRvHHYX!T&%=yq--5)CydI35^z3``tFxy>-cknO7Y`MdiYY?#m7_QYr<*l~MnN zo^9m#fyLCR@0=q$?G}jGPHWAC=8;n)tX#SB#-yz>+f1t?Uq!`l9JK#JaUD$%vrdko zNtu#$-pN}oF|3z3Y&Y0*k^4x@l6PMht?-g*8{&=0q%2nqiW{&cH$%6F#&-wrW zHcm-IK~w-n2Lo-et`5zOx2cib7`>N=0ahKIe(5-eu2i(rY4(FX&W8prdTF!yR`ir< za(z8@7PSvf(Euq)xX;0&WyAdaz|3}}bL5@uNOzUngK7GHLO?yeSUuDN=(t;lq zPo5UsDXXBbK##2x^a7+fy4u)ou@TX+)no*VyjaTE9)U}6p1OqUGO-v=qwln16g}?g zP?cLQdaba~INXt0u9dVpwSvU@0Uv>rZa3W0&)lNeqORPw$dd-XY2wqrRj#}`mwL$- zt@j^x@k_UKdU~((TMGUS`SU9Fc^RjRZ>lYgI!gZ;0EJ;9uq`Ptx7-!e8a;KW>+rom zl_8A)5cCm&UUo%-o_M{!pLir4sa@y2+yHgqv`}pK6Tq-{-+lMh3#-qk?zUUF??x6| zDA6Pl%2D#9lUH!`GkB9W?(f}XTqH*q7l!%pd~dr+Bemj9 z>U%OKCNgw-lVv}fy5^PtqV?F6Ys*&jveWAqt@7fX`vbjOQtb!(0gx`zUt*+p_!p~h z)MHYJmRAJY==PG)xoRhwgBu>nb@Wq)JucM}%83)0aX&Dce8@_en`8ca%*rQ24tr1e zCsUEm*tT^%fY#!X3h6CxdCO(W>YWKlizX&Oz>EizI|eP8pxhsjJvowR{Rz3Tz@6Yt zVlJdlAKM4%+FoSy{3zWq%!T|)yx#9>Q(;t{-2P)zSa<0!D}Lt8bl?GyU9b0lZoOBn zkna`n9}Z-xnbHZ5HU?` z<5G9DEs$tVFb4@wHC$V3|Fx}VU>`)3=N&>FlToE)aA%BH`q1qS9;qxLUjkEpA^lo; z$8NF{r?*l3p0=1DVSN!FVb;X#{3?87ijLoJ{OmCN{R7}izyyf(nhvkllPef=E7JIk zT*?rj)t~My=wte-I&up?_@fDybZ?0Qw*sAekA5-`4E)<^^O<3LeI7MU>SB7#t6D(8 zD3|B%y6Y}|=s#WBgO|!A+8WK$*jN+${|LOu2{aQ3{v1sQ zvZ{SRM}UT?<;@Qb@FMoXigMA6pPd2T2wOze12^d5i|D=wnSS*LK4V(e`_UQQ1N4l! z+i$;psw)7%d+s@ctUw_5YMiJ&-Q|uBhF!{)wD=V`@Sv633znrzhgw&nE${3!T4E8@ zy^m$5lfBc(aIOTjaH@=3e0 zmr5DasE!@|yFg%=dCfJ~T&zDWxfG`P57X<#U;d(s_#$ntU<3$24&tut#=u7t0g@_~ zRnerbf_~9lc13}k^b$>&>?~@L7P4>Kg)1@3q&)sn=R>Q*^vd*;^y1nh_R=59Q1FxP z)1!eO=yUSRt{aAb{I>o$;8h|TF!C5IBqKGS6SvxbyI#q9i@vLH>IHf?=&AZ5{PZ_+ z1-(vku2Prq4v_nK9zc)57f%2rPPo5 z)G*psKnS_7dRj7DaHLH3q2(PYsZ;u@Iu$P}I%89Z^)XJ_%s4guBo?o9kU|amCJOxH zer6b+|75NB+rt@8o2j?<(T7?bM`?0=_p)L5(5adTdeqtbPsbG|d7qm9Vw`r7zPNMc zFueL0{oMH@d#MdmzFe^N^hAgF^zlK?{ApsF49Wf$67GVTD2L9JdN^%E@U zbFyOzb&LbM4H#5XJemVz~zQ8@o#-v{1_x7!xy4hdhgJ`|2!aU+2 zeJ}UFEI;^#=Izpdd&V&QC#~Y;n>!U-O16P77lkQMA4Me5MN0@GC^59!u_2_66 zpejM@@-bXw@@RCCTCky~C6+q&Nlh;Gp8cd@_>C9plE-y#4bpQD*WVR;d;*kDl|!bi zG-==MOSxO`(szXaQNM7ZsXAr=6KfZnAGqy--hzJ~Rwp<+g1-CawT2DcT6QSdB9m zlVEk5EZAD$F$!ML(5-slBr+9}v7;Dw0U;lhEL*g!Ar%vEQ+3!O)9?T9%UA|&@^D<( zOd4(i`g=;Z>+L!1Y?n@(Z$1qB?33HuM60eTleMx}bBgX82I*LyQ}ZD07LRI{OU76! zPubg6>Pp6=kbH`zk1xk-#eSjo+-o!OFyM8%kMPfQ$VT7h@)cS;a4G$p^p`8Z>;GXG z{_vmmwM;!VTG#0o*|=VxPn18=gHiViZC~YVZGF;jc)=e9sQcUw*Oh__WfR-U5I`oD zZB{*{jGc;_ZIFdt<;u&wlC2ec9zSu5UO8kisE_5MO=2CYN4GE0zI|OJzDs|v(M~yU7=GnLdX?hRb>Zy@^LwoR*;gJ5SgN}(X^hMEN@Xflj=+Z&aT-An zH3{yF2xLITC%OdTw?N6M8XvxrX*FTsf@O|R$2@pcUaFKa?0A+eIjNx$8+|G_?BZpY zUG~+UxvKJ^+W)cwhV#)VmkY5>DzD%u**>T217pZ$-j}mW;=W=Lxu#e8Y7qgrhxU%I zexWACWXq9TOX=x)l!~q1=e~?@?y9bR_80p}>;1n`>(^^PGYtRpq;+>SxbTLsjr}@e zWmi?SD&t~~ifQ;6ya;>?TPE}Z3xFUZTWu{&@B;_1R3<|fRUe#Y{1wQbTgH>RjA2k6 z)1U%fsSg7f{ju_QfA@F4E!tEU;BEEZ`@{7#g@#mPs!R^@SWu*#>F|{nl1HbfSGnmG zKXV#nI|Td$CeQKz`-%BgP7JQ2^l%N(Lv)$OK55bq)6?H-$7DMhuBJyp@+X};48Q!L zb#rfUjy~LL_HbJES_>$*n^NdX$*wQgCC2{YE6JfNGA1_U;N@1@4DlTJH9-PC1if)2|6V_?%HJ| zjmoB_J52`V)T`V)3kT0d$yAP9v3pvt@5UuAGA}w|81~jp>iS3z)lC{U$0mLGTs~#J zWZWirUGPJzn|sPPYM=hQ|5s0n{z*@Y^wel=rL(UQ61MZe_v$}Z;7ZU(D>76l(DGiO za?$x`x+jC=43xAEv-I6o(Jf}wk*%;hH#~i>u$SyrX2dQrETMh^l#V^92{129ipG8*n0lJKi#1!p+v zD}dY3w1w00vRvcjyg>UK>ZBEltKgEj`Y3Iurwd0eWB;GATft9GDpXe{CqM}xgu=>~ zz3gQt>*pkHvGfurelYhjkCTu)WITwWxfu)a+T}la?&Om1+;`_Jpg-nT@s-yK#vj6d z`SZKL8dF#|m7Vf6@oEcs3}f_9wWZN;1DW){?=Q=ge)6I5r08}3puZz_@-Wzw7|E0o%pY#R(V?%0b08nfSQV)C|OUE<*@5|x5WyKXiJloPseI& zx%om78=_-pVwTty(Q&L?p7|J)n}jPNax3af1o!ApS{L2v65Aje)gNe5ugp#)a`=@``Q>~Bc-J~C&y}ZP`KcCf;rm}CFbEvBo1tV7q3X zD9F=-3~1_<`4^KQ`N){Y*+85-{iycmr|;F*R$V4$iCsxePJq@55c&yF47)5Ixs|{3 zo$q`K;c3!-dO2>lJtUbZZe~|5dgaj#)d?d#Y|;4+mh_|rPU3;FkUn~azyChNaKe$G zt>1KYeyCKF+`i&$=UYvVYJ+7uzU$?-=*ac@R7>|7y~X*ePv~!peOXT}?t?R3`ouZI z@FQJGjFYx2=s~dm6ejGqRXVpPh=gzXI8*}s3jk<m0gL$(KH~PoAlJgOBJpPcO=Tg}6w%;QC>B-|1qi@B991wid7t6tW((#O2CXt9$dx zmu!R)3Qq%9=cb=!-6W$Q{E_@fZWvyw&u*qo#40f>d0pRH9NUvgjDbQ-kA9muEO_yv!R$dR@WwieJ*Z_Iez- zzSBk8itt;btJO$E~f=8n< zmeRHi+D4*ap2t|s$RTR`y4B3^w7o4d)hT1O#crUCEcPI}JseB8g-7KcIY28u``OR_ z-78=D%GV@c+2V;6_h?-OKCOLeTL^^YAXg4(83DyI@Vjyo81)aLqmJnSN*|rF_Z-=O z%m#YL{^T>Vebr`r9;X`E=CjCECMVH9mFCfsSvts78TBedzgR2$+fJc04Et*Pu&th- z^FV-=|7LxTVP>=&`|kV6M>POfODZvyow`1=9KIK_mB;;3vH>7(1qsR8jN zkI;v#g{|VCxel~i6R0c%3yp(Cfj2HT)1kM0hRyH1^UlBDYOAfZzAv3t zXk~fJZ|i5swKp}I5N$bgmt}!|b6@p*nDCTYj=cDIMV*sq%uc7`D?jYeVR*%_6l4A7 zck5})Oa55S>1b}VPSti) z&}n)q!fP}toqm-|zw)A!ck$S;3X>e4O0W99^s9X=V$evw5J+SEp1_FWDwkaFkbx3; z(M;_0e?@!$W&91WK{5Jn8EP?$OWmR3cxv&}k+UgQ1gMS`M;vj)srshacRSft7N2mG zZbY|HBWZLO(C!XU%aV%jWYw#atILpaxs%0c>-5w?W~;4q)BCIXl8PqZWV-H#VfdFX z=}#K*iRU^>SNu@hzAp)yvK6zX?6-^fby~PUO&vZl6-8 z(cz~~$x+8XsmY1vL_TqNY{E(gJNkfx(&&*WdwuBXQ$m*9j$6zO&)dIIpmNJj7cq0*-RU!qqGMzhxyRF2%GrF6ZS%ipNT%B6Et3Iag?8U0K*=oR`8;0Y_jLcE5|%yjnjdM~a=9c@ zCRJNfrTG}#IG0S>!BqmA=Q`fX7%LjUL@>=lI+5#$iO}=r23G%RUwg(AVpG{-!H>wi zg!zS1(P=ja6UFxex(C?e=9_Q+g1#^Ou!R&SX)EN;JKmr_xNxoeJQ_=bQ?Tvru?QW8 za%P+B%8;RxP3!25pET-6K1t7v_Zo)p=sIxt0+e64O~xT9Ii=@Vbj z-wr!9{O{X@Z3nb`D?c#Zw~so$bBxhbr}SD5ol5bQI|!3LX}@8oPU%%%xYVbykGu2a zq)W1iEZZ(bT|#P4Z%54!T7M7VHmG6bd+R4p{_g1tyqu80tSaeyzZdMdILo(>G9v$di=+YI5hN;Iq^B`Cip-9O$GlK!xn=_YPrg`U;Znv zb|PAbij7`;a+f7ka^#FeUpH++w%S~Bg;}yiuN>Ht8Ow#+{FeywOuo`1CwctHso+bO z*zyD|r2+7&fIKw#u^saENR;0_Z2I8G6fsF`s>o6CiYMhw7|YX z8X75iMXSj*iCJ=?B(-#!toHhr39sV50Qhq0&ng^xSgkA&UTqpC(y5z?ARYxy9 zTZrGUlKdg+6Mvx$uD$&13-#*3Cxq9vVP0^QznM4LN&h-O?0ld7MbXTAEu zc2cKkeO`X_{RH3sgOBbcrs|EJ{Hnt$d5alC6mloHv`d7J7L%mpW`=Dxn;CxdaTcBW zL@W}MQmDWuR_#H8G>emx1f#*EuIiJ+byRw9q%D2;31&@2SI*EQr_bArU z+)ZoHCkF!==p}323ECJhWsf_07ZsEW!y~>d*nVvSLFIDRHEz9`dd{x;P@G9ge7dB;* z>ds8>AA7=!O%M}-E5Uz#>@e)IRme|sCI*Q`$u4{K2jAl{g&~^2(I&z9=bwMinP;B) zrYUrr$P=HcZ%REhJI$Sus9CPgth_p|>g1C&gLnGWYyXWbuR=WSI7=;h;!lFyG3A#_ z2>1``>xqB!S#<`1DI3`7eeCV`MtlFExB7&>Ck_G=^f4Robhtkjl1m;kz1}3|g8FuB zVf(mM>;>)1p8Zezg^wPopG-vv+RSj^&NIV{^yFtbi5MgnrBf52rXn6JnUow(dh01mT1f!{fB*a6sLR)s>*p~1)IP)T z4BZdV&apudx@n@fPUvZ(`@>K(WykDv`i1LU zbo*9#0_giM07GUB8+j3+*>~_e8>SauGUa#WC2KkOnW)EpA3|(bjk z${M6coq%94NVKR1hI*+`C>iLL_@UcZy>k46F?e@rs(w^E#!vsFURlu7Vq*&9=%3a1 z7{Ce@-dwbtMOH^Ofw20xMc9` zi%v~$Bx2d#Mrh_)x;?KimmIW(=skZ_M!0H`^ZCHB`|8*E^ptQp>B=jw{PU+h?P>oi z9d3R(?$^O&pt){xm#esNVzF3GDsX05n|aT8#xwp>A4FWb9H8g@s`lr*hKBcm43Mge z9`IA9nrK-($~oWb9(U~g8{Z4`)aLiK>VN&;q|;$xpHGn&N}tsQ_I)3V57ZhyHd7y; zDAyLPWcpRO{4AdBphrsmh9^>!OJ3Dmp1RaY?mzWGm4Ft;Xa@#hETA)`&Stw-{78TVboy0ZD4w2|!aw*(4joAP(Gr z&N=7Y^^I?QjgV_)|FVvdXk9#l&6e5xmPRw zC-s8tJKm+g&Z6JH>~*|?Nt92C`@|r9Wc=|4F}S83icSVkh&h&id$s!uF(l$W4UUNZH4v7~Scl#zb+tvKqaqrR$FB($-Z zK0S0_J)wEQsPo+UsMASZPPvZO#PVWN){4V$=_LT@k6B!%*B{=hUtK;`7z^ltx2^X7 z{f#nDcm7JBCV%N`BfHbs$DRjw(kJM7l>c_K{6R5wO0M#LvRfBff(w<@FD%;U0Zpuh zFvsj?$TWRnR&Zj5RDP7qn10!>T=M;dE`Juoc#S^oJ!p|_r;RUgBF2a{vBu(0_4Hx^ zrB#qL2bY!H52-O(p3yVeZy$T?vA-}oJKMdIwrc#nep=t2x>olCKL|Mnz$2*q`XglgNierups)PTd!|-p?uLO4Cw;Ob9 z>ZsMNuu87##(W7ghnax&S*B{qBERP_T+oeOB_wLhE@3 zNRW~PrOM7r5r$InJeEOfba*H1ufK=z_>M6}am9)i*T3NnZ}?SR0dAFe?fsbuOy!); z2C8PcvZ~W^CjeM9HM?WHEXVGC@{^x@-hTV-$LFpkgU%|`BM%vd%P-dUG%fM_ zb_8ZCTQpDi7UeI*C>?Uv6DE;% z^8VJCLTK1rzsLTXJ@?%6f2cflx>v#aKHZ>Rd6`s%>{d+V9u!$5XSzE{#$~)Ic@^6m zm{yuE)8kjU^z%I};}y17Vr-;+bV{$~*r!r{Oytd{3Ek3PRIigS8FYF)=%k_-W}o-+ zrlZjNSY>b)!7KSO+{9_T)TQ3~4;iIL>^2M^c&2_pjYwHW(o>&5+iS1A-XRs;(Rl)p z_xAwRq{^p4?=FZ_$s<$-$T?^uv#^}G|KNiU{$Kj5eEPU(`n36$!|<}-7=~SU_n6Rk zM(=aV^??fII%q`g?~4|ZAUXv2c|dRFqKja$o|mmF>{<=WevebS^hA$cc6-^rT(Ydj zg<)FS9+RDvDc`$xAx|m{`eY0jX3{KEvPtiG4J+-Id@ob9dHzq}mCoMUYQFnv%MX5H ziI@^>i!qgJ<*(iZN7#6_LH_l zXMa=A=-Ixc6@%*J{iJf}9_z{lZ&}ryGB15-Rj%AL3+G8X6Y3*7=$D#nBCKdefU;{Dm)k;TBQqd4Ej=7T>P`SmWb@`(gFf@MuYK)K-4A?E_XBG7qO$Xpx6*Vu;2{0VnV!|(PcxOqI=8GUFS<$8 zEo_xBUdeG;r`%5@OLw})=xwG>ppI-}%vi`4v)Aj&WgoGH>@TE0rqf-gi;hl}dj|@u z=e6>LPSHyT{|c*kCP|>`?$J!2InW^*{B93|Y1KPX&=0hL)&{r=Lcevsby>zA>-<^7b!xXO-rR59+pyU*? zUi(~Fwg04yNc}mGrUyfM$T5hPPZ~H4H?hlx^PXQitH_(pg|J|%_psOemt1>IzSF^k zWyq-@m$~cEMH}-KS}y}02gI~n@`Vk(*+*AtA>7hye)Mv}-(CyapFd+59<8nIa?@2; zUG+}gOTJxti|zYs$g1hfHQ}ILw$cI$IDj)8bw9w2z5lSo4*Rp^yf7ynCmxT!^7n>e z$DKTu^lwWZUs;^o_nR)Mh3F{v^ach_R!ZO1q!(>oUV4kjMZ^Vg;g8{>rvo`-S1yw2 z>dA#{mV6+0`si`!MBeQ8xX_g>m-NCjO*~dH%Kdvo#!Gt1&&xYq%L{)Geaia*Jr7)+ z;3sAt{pd$?)9X0OyjFhVOcvHW(cU#lAlq1_%b z4FC1@+BZHpHDv*Zy>hASLCf6MDeI`gsewSg%9Z1(^(Agv-=!(vWEax!WO}*ghj87w zl3U1r(aMKvQ|U{+`D|Z><94BtzS?dtmonA<3g)Vlmrq5bzZUbqr&qc1rZ4-H%O|ST z_uY9I{`&dKwSX-*5i3u9>Qi5(554MfXH9~d09fQ8RUWlvp4a3apf}}y=?PheKBLE? zD=xqM@{=_Yj@fk6P4&cm`ot>}k3D=CzJGy!Wb3BXD{GaD-1ecOwQ@%h>QP3w z)3HnnSueZVBxH3sa66rb4{rf_;~Sh)Ch#bdyAbp$SDqqfc4AGZ$rW=l?*NdU^nWS) z4L{rqKRO%mAGL>`_B=Xg>@ z1gNf<^kqixZrrOo`Y#-LKAMVrViH$f}BC+wpSxt^upgIeS}7zSSCbpQSL|KQDUe)Ego^PcxyCy|AM zzq)1-gyoah)&#(EcFC9%W3hw?Ir$V&t|3@Ku%L6KC6g^;$BHV~Ck z3e=RgB#|nI-g}?5&)MhPea{U;ScOZv@pkOk@eyur-YhOIF2y9crSAhd z(8Z77nKCZ16?iaauRQ@x2Y_D9iF2RB6H}1#DSfAEXchgSo2L7A%)OLtFC#ysWzor} zE6?+IroLhmGebX!d_GR}PkAw%u8|!*pZ`wy{^n;B@OQ4*+!nW3r0i7J#E)D4w|VpC z@6DV!^9ba$VlW!TjB)bB6}>Tt2FTnerK zRg!#wWf2oD>k*wLBBMYRZnBg|P1AGQ(xI$y+Ct$X)DkApWs@7tA}=jRA@C(j$b^b* z+74}l#7!tgM^idg>;?O>L%Aw=hF!Cl@=w*+7ates(Ld;eu(jcrczJE#TYtt+7wF^7 zYy0-?`@y(zFbr1fj)Oq!U)b%2D6&h4!(vw&UTri14DQ;sYs~oZ<9~~L z0z5Fg_3{~pY1@V*dE+&V4m`yX67FD?M4&tJC4;6NShOW8Xm%y%_-VT7%dUe}@StUnV0!7pC}KEl6r$8I^cr1bI5SI52iC7&|H0tFgZGz|l#IWXEfccb z4$&8nz%Re>xKv9bf0-uk+tMTSbOmd)(8!^s&UAwT zk7wzV#v=WEuu>}ZDIb8+ldZtYQRs+k_QJ2@T}zMQ%*NAO9SXNNY}l~jyOSnO;^T28 zypE zW%lgZc(|RD{9N}d`RUq+KK}UQowz3$gYOCMs}f}` z2;4)&N2PuGCCQ0*@#A-Fq3{QrxRTWZa|d7Mb==y1Tm#~ftpUx^bAE`Xd1^s+qmR%-9IB>B@G+*NUC;nhYkL_l0^k5evZ?d$YRo)HC_>3Mq&r7(usQ>aMGfE$Ctk8ph17q7nF?gXqPgCtU;b_+8;R(H@SGc`5?A6)VEx?aA7lZ)`+8mC?Eb>RFnw|uj3?0_3Tlb}BpMCaa{252TLIhcX zuUYo)z`w=t)+>1DDEow`9~*h_#iOj@WCq;iuskqXuOq&o(~(`9B;dG6M8PK0uNn;a7gkywJjNlYFRNEgpT z;^cD@NKU$d)QgEudY}DF!Kln`RP)zo{ZPL@S=97$IE8V9@2jLy6Nc@t% z6e>)?l4sY988hZ@-MST`{2u4bTM(6G#nKFeFVCp*N2cL2y08#SBG|KX@_oGfXE%O*h9wezeP$z%XmmtOi0weL#37SO51>kVPI8GC z=xA2TdOIYBHtiTrc@*SB1sdR;qnJ3F2y z{8s(TmnQMB0ZH-{HmyBbf*qT8!C3(dmOSsh^2#f7rca-)pD-%nJyhbyp$Q?_@D(te zTAAWuYRcmM6KCZF;FUmCOCp;LW5NC1;Rw&WH`f3 zxroRowk1-a*|LSq5P20jdP(W4og*tb+7S-uWujh?F&;)rH@)IVNc|w&3r}&rIueP` zZ_T@zheCf`!%tsVO`SUR<^B8jUxsm?@I3qTjIXN1w=RT0JRV4m12p7~<1O2ZkAXNV zCxM>`IadPkI=uAKOM|g{@aOo>02lFwDeoOik|Y1XV^rKUpLicf5Qol=o+1Xc3BkjM zXsg@{kRL*`WDISiiI;-a@i;Q{Z-siOETqMI2++7iWKbXc6mbx4Xon=p(0(S?ARl

    c7-@_;6Ul9 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 t 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_launcher_sa.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_5_launcher_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..547df65e7d90896d71089078cab1b03dd5203d1b GIT binary patch literal 30314 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 dE(Qt;iVNCM^+yyG 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

    8hR^g`!U#dTLokbd*`>VICs4~)gG4xgrL7_+Q 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 N002ovPDHLkV1mZ^h^7Dl literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_background.png b/TMessagesProj/src/main/res/mipmap-xxxhdpi/icon_background.png deleted file mode 100644 index 16b2fee7b64de6fe3f0aeeaca1624e1fc8d3d7e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27164 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 y+++XqSu&yjee!=h + + premium_object_adsbubble + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/premium_object_bubble.svg b/TMessagesProj/src/main/res/raw/premium_object_bubble.svg new file mode 100644 index 000000000..54e9706c3 --- /dev/null +++ b/TMessagesProj/src/main/res/raw/premium_object_bubble.svg @@ -0,0 +1,7 @@ + + + premium_object_bubble + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/premium_object_folder.svg b/TMessagesProj/src/main/res/raw/premium_object_folder.svg new file mode 100644 index 000000000..7510a7b1a --- /dev/null +++ b/TMessagesProj/src/main/res/raw/premium_object_folder.svg @@ -0,0 +1,7 @@ + + + premium_object_folder + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/premium_object_like.svg b/TMessagesProj/src/main/res/raw/premium_object_like.svg new file mode 100644 index 000000000..3360558dc --- /dev/null +++ b/TMessagesProj/src/main/res/raw/premium_object_like.svg @@ -0,0 +1,7 @@ + + + premium_object_like + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/premium_object_noads.svg b/TMessagesProj/src/main/res/raw/premium_object_noads.svg new file mode 100644 index 000000000..4b150334d --- /dev/null +++ b/TMessagesProj/src/main/res/raw/premium_object_noads.svg @@ -0,0 +1,7 @@ + + + premium_object_noads + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/premium_object_settings.svg b/TMessagesProj/src/main/res/raw/premium_object_settings.svg new file mode 100644 index 000000000..80d1f3611 --- /dev/null +++ b/TMessagesProj/src/main/res/raw/premium_object_settings.svg @@ -0,0 +1,7 @@ + + + premium_object_settings + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/premium_object_user.svg b/TMessagesProj/src/main/res/raw/premium_object_user.svg new file mode 100644 index 000000000..9ef1bc349 --- /dev/null +++ b/TMessagesProj/src/main/res/raw/premium_object_user.svg @@ -0,0 +1,7 @@ + + + premium_object_user + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/premium_object_video.svg b/TMessagesProj/src/main/res/raw/premium_object_video.svg new file mode 100644 index 000000000..a542c2539 --- /dev/null +++ b/TMessagesProj/src/main/res/raw/premium_object_video.svg @@ -0,0 +1,7 @@ + + + premium_object_video + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/premium_object_video2.svg b/TMessagesProj/src/main/res/raw/premium_object_video2.svg new file mode 100644 index 000000000..7f314d28e --- /dev/null +++ b/TMessagesProj/src/main/res/raw/premium_object_video2.svg @@ -0,0 +1,7 @@ + + + premium_object_video2 + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/star_loader.svg b/TMessagesProj/src/main/res/raw/star_loader.svg new file mode 100644 index 000000000..398f8ede7 --- /dev/null +++ b/TMessagesProj/src/main/res/raw/star_loader.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/transcribe_in.json b/TMessagesProj/src/main/res/raw/transcribe_in.json new file mode 100644 index 000000000..f3371c880 --- /dev/null +++ b/TMessagesProj/src/main/res/raw/transcribe_in.json @@ -0,0 +1 @@ +{"v":"5.8.1","fr":60,"ip":0,"op":20,"w":240,"h":240,"nm":"a_voice_to_text","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":2,"ty":4,"nm":"Artboard Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[120,120,0],"ix":2,"l":2},"a":{"a":0,"k":[12,12,0],"ix":1,"l":2},"s":{"a":0,"k":[1000,1000,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.051,-0.056],[0,0]],"o":[[0,0],[0.051,0.056],[0,0],[0,0]],"v":[[-1.647,-3.666],[1.597,-0.098],[1.597,0.098],[-1.647,3.666]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[50]},{"t":19,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[50]},{"t":19,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.270588235294,0.639215686275,0.960784373564,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[0]},{"t":19,"s":[1.567]}],"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[2.644,12.097],"to":[1,0],"ti":[-1,0]},{"t":19,"s":[8.644,12.097]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.33,12.097],[9.33,12.097]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[100]},{"t":19,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.270588235294,0.639215686275,0.960784373564,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[0]},{"t":19,"s":[1.567]}],"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[-5,0],"to":[0.833,0],"ti":[-0.833,0]},{"t":19,"s":[0,0]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[14.663,13.43],[18.996,13.43]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[50]},{"t":19,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[50]},{"t":19,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.270588235294,0.639215686275,0.960784373564,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.567,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.662,3.248],[-4.673,-2.752],[-4.662,-2.752],[1.338,3.248]],"c":false}]},{"t":19,"s":[{"i":[[0,0],[0,0],[-0.264,-0.532],[0,0]],"o":[[0,0],[0.19,-0.497],[0,0],[0,0]],"v":[[-3.333,4.012],[-0.566,-3.482],[0.558,-3.48],[3.333,4.012]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.270588235294,0.639215686275,0.960784373564,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1.67]},{"t":19,"s":[1.567]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[16.662,11.752],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/transcribe_out.json b/TMessagesProj/src/main/res/raw/transcribe_out.json new file mode 100644 index 000000000..23716e6fa --- /dev/null +++ b/TMessagesProj/src/main/res/raw/transcribe_out.json @@ -0,0 +1 @@ +{"v":"5.8.1","fr":60,"ip":0,"op":20,"w":240,"h":240,"nm":"a_text_to_voice","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Artboard Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[0]},{"t":19,"s":[-90]}],"ix":10},"p":{"a":0,"k":[120,120,0],"ix":2,"l":2},"a":{"a":0,"k":[12,12,0],"ix":1,"l":2},"s":{"a":0,"k":[1000,1000,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0.051,-0.056],[0,0]],"o":[[0,0],[0.051,0.056],[0,0],[0,0]],"v":[[-1.647,-3.666],[1.597,-0.098],[1.597,0.098],[-1.647,3.666]],"c":false}]},{"t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.356,-6.097],[6.356,-0.107],[6.356,-0.097],[0.356,5.903]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.270588235294,0.639215686275,0.960784373564,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[1.567]},{"t":19,"s":[1.67]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[8.644,12.097],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.33,12.097],[9.33,12.097]],"c":false}]},{"t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.33,12.097],[15.33,12.097]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[0]},{"t":10,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.270588235294,0.639215686275,0.960784373564,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.567,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[14.663,13.43],[18.996,13.43]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[0]},{"t":12,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.270588235294,0.639215686275,0.960784373564,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.567,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.264,-0.532],[0,0]],"o":[[0,0],[0.19,-0.497],[0,0],[0,0]],"v":[[-3.333,4.012],[-0.566,-3.482],[0.558,-3.48],[3.333,4.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":0,"s":[0]},{"t":16,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.270588235294,0.639215686275,0.960784373564,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[1.567]},{"t":14,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[16.662,11.752],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/unlock_icon.json b/TMessagesProj/src/main/res/raw/unlock_icon.json new file mode 100644 index 000000000..b199523eb --- /dev/null +++ b/TMessagesProj/src/main/res/raw/unlock_icon.json @@ -0,0 +1 @@ +{"v":"5.8.1","fr":60,"ip":0,"op":120,"w":30,"h":30,"nm":"unlock","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"lock2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[0.805]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[-0.195]},"t":20,"s":[7.407]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[15]},{"t":40,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[19,14,0],"to":[0,-0.139,0],"ti":[0,0,0]},{"i":{"x":0.903,"y":0},"o":{"x":0.333,"y":0},"t":10,"s":[19,13.167,0],"to":[0,0,0],"ti":[0,-0.124,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.152,"y":1},"t":20,"s":[19,13.383,0],"to":[0,0.216,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[19,13.167,0],"to":[0,0,0],"ti":[0,-0.088,0]},{"t":40,"s":[19,14,0]}],"ix":2,"l":2},"a":{"a":0,"k":[4,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.209,0],[0,-2.209],[0,0]],"o":[[0,0],[0,-2.209],[2.209,0],[0,0],[0,0]],"v":[[-4,-1],[-4,-4],[0,-8],[4,-4],[4,8]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":4,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"lock2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"lock1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[0.805]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[-0.195]},"t":20,"s":[-7.407]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[-15]},{"t":40,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[19,16,0],"to":[0,0.139,0],"ti":[0,0,0]},{"i":{"x":0.903,"y":0},"o":{"x":0.333,"y":0},"t":10,"s":[19,16.833,0],"to":[0,0,0],"ti":[0,0.124,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.152,"y":1},"t":20,"s":[19,16.617,0],"to":[0,-0.216,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[19,16.833,0],"to":[0,0,0],"ti":[0,0.088,0]},{"t":40,"s":[19,16,0]}],"ix":2,"l":2},"a":{"a":0,"k":[24,-12,0],"ix":1,"l":2},"s":{"a":0,"k":[16.667,16.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[14,12],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":4,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"lock1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0}],"markers":[]} diff --git a/TMessagesProj/src/main/res/raw/utyan_saved_messages.tgs b/TMessagesProj/src/main/res/raw/utyan_saved_messages.tgs new file mode 100644 index 000000000..d9d24ce14 --- /dev/null +++ b/TMessagesProj/src/main/res/raw/utyan_saved_messages.tgs @@ -0,0 +1 @@ +{"tgs":1,"v":"5.5.2","fr":60,"ip":0,"op":180,"w":512,"h":512,"nm":"_054_CLOUDY_UPLOAD_OUT","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"wing_bl","parent":3,"sr":1,"ks":{"p":{"a":0,"k":[-3.342,8.073,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[-5.051,6.133]],"o":[[9.38,5.051],[0,0]],"v":[[-16.161,3.318],[16.161,-5.015]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":78,"s":[{"i":[[0,0],[-7.642,3.157]],"o":[[11.403,-0.59],[0,0]],"v":[[-16.161,3.318],[11.03,-1.641]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":92,"s":[{"i":[[0,0],[-5.051,6.133]],"o":[[9.38,5.051],[0,0]],"v":[[-16.161,3.318],[11.161,-5.015]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[0,0],[-5.051,6.133]],"o":[[9.38,5.051],[0,0]],"v":[[-16.161,3.318],[11.161,-5.015]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[0,0],[-5.051,6.133]],"o":[[9.38,5.051],[0,0]],"v":[[-16.161,3.318],[16.161,-5.015]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":124,"s":[{"i":[[0,0],[-5.051,6.133]],"o":[[9.38,5.051],[0,0]],"v":[[-16.161,3.318],[16.161,-5.015]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":138,"s":[{"i":[[0,0],[-7.642,3.157]],"o":[[11.403,-0.59],[0,0]],"v":[[-16.161,3.318],[15.822,-2.353]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":152,"s":[{"i":[[0,0],[-5.051,6.133]],"o":[[9.38,5.051],[0,0]],"v":[[-16.161,3.318],[16.161,-5.015]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":184,"s":[{"i":[[0,0],[-5.051,6.133]],"o":[[9.38,5.051],[0,0]],"v":[[-16.161,3.318],[16.161,-5.015]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[0,0],[-7.642,3.157]],"o":[[11.403,-0.59],[0,0]],"v":[[-16.161,3.318],[15.822,-2.353]],"c":false}]},{"t":212,"s":[{"i":[[0,0],[-5.051,6.133]],"o":[[9.38,5.051],[0,0]],"v":[[-16.161,3.318],[16.161,-5.015]],"c":false}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235294819,0.933333337307,0.129411771894,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":8},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":60,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":96,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":132,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":156,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":168,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":192,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":204,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":216,"s":[5]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":228,"s":[0]},{"t":240,"s":[5]}]},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":60,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":84,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":132,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":156,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":168,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":192,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":204,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":216,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":228,"s":[95]},{"t":240,"s":[100]}]},"o":{"a":0,"k":0},"m":1,"nm":"Trim Paths 1","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"NULL CONTROL","parent":25,"sr":1,"ks":{"o":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[60.406,-23.23,0],"to":[-2.373,18.584,0],"ti":[0,0,0]},{"t":74,"s":[31.56,-7.605,0],"h":1},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[31.56,-7.605,0],"to":[0,0,0],"ti":[-2.373,18.584,0]},{"t":120,"s":[60.406,-23.23,0]}]},"a":{"a":0,"k":[60,60,0]}},"ao":0,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"wing","parent":2,"sr":1,"ks":{"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":74,"s":[10.549]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":88,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":134,"s":[10.549]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":148,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":194,"s":[10.549]},{"t":208,"s":[0]}]},"p":{"a":0,"k":[18.897,81.268,0]},"a":{"a":0,"k":[-32,-0.5,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[0.54,-13.293],[50.756,14.899]],"o":[[29.04,22.474],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[38.183,-17.165],[-38.19,21.997]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":78,"s":[{"i":[[0,0],[0.54,-13.293],[49.178,7.296]],"o":[[30.901,11.686],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[27.067,-6.803],[-38.19,21.997]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":92,"s":[{"i":[[0,0],[0.54,-13.293],[50.756,14.899]],"o":[[29.04,22.474],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[25.683,-17.165],[-38.19,21.997]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":106,"s":[{"i":[[0,0],[0.54,-13.293],[50.756,14.899]],"o":[[29.04,22.474],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[25.683,-17.165],[-38.19,21.997]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[0,0],[0.54,-13.293],[50.756,14.899]],"o":[[29.04,22.474],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[38.183,-17.165],[-38.19,21.997]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":124,"s":[{"i":[[0,0],[0.54,-13.293],[50.756,14.899]],"o":[[29.04,22.474],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[38.183,-17.165],[-38.19,21.997]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":138,"s":[{"i":[[0,0],[0.54,-13.293],[49.178,7.296]],"o":[[30.901,11.686],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[39.047,-8.584],[-38.19,21.997]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":152,"s":[{"i":[[0,0],[0.54,-13.293],[50.756,14.899]],"o":[[29.04,22.474],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[38.183,-17.165],[-38.19,21.997]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":184,"s":[{"i":[[0,0],[0.54,-13.293],[50.756,14.899]],"o":[[29.04,22.474],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[38.183,-17.165],[-38.19,21.997]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[0,0],[0.54,-13.293],[49.178,7.296]],"o":[[30.901,11.686],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[39.047,-8.584],[-38.19,21.997]],"c":false}]},{"t":212,"s":[{"i":[[0,0],[0.54,-13.293],[50.756,14.899]],"o":[[29.04,22.474],[-0.54,13.293],[0,0]],"v":[[-21.776,-25.224],[38.183,-17.165],[-38.19,21.997]],"c":false}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.980392158031,0.564705908298,0.086274512112,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.835294127464,0.152941182256,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Layer 6","parent":2,"sr":1,"ks":{"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[3.236]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":74,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":106,"s":[0]},{"t":120,"s":[3.236]}]},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[108.932,54.523,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":74,"s":[105.642,72.944,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[105.642,72.944,0],"to":[0,0,0],"ti":[0,0,0]},{"t":120,"s":[108.932,54.523,0]}]},"a":{"a":0,"k":[241.426,390.515,0]},"s":{"a":0,"k":[84.345,91.374,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0.333,-1.762],[0,0]],"o":[[0,0],[-0.335,1.769]],"v":[[12.4,-10.925],[6.821,18.575]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[0.413,-1.473],[0,0]],"o":[[0,0],[-0.415,1.48]],"v":[[2.016,-12.335],[-4.906,12.335]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":88,"s":[{"i":[[0.413,-1.59],[0,0]],"o":[[0,0],[-0.415,1.597]],"v":[[2.016,-15.086],[-4.906,11.536]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[0.413,-1.59],[0,0]],"o":[[0,0],[-0.415,1.597]],"v":[[2.016,-15.086],[-4.906,11.536]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[0.333,-1.762],[0,0]],"o":[[0,0],[-0.335,1.769]],"v":[[12.4,-10.925],[6.821,18.575]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":134,"s":[{"i":[[0.483,-1.735],[0,0]],"o":[[0,0],[-0.485,1.743]],"v":[[14.309,-15.08],[6.22,13.978]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[0.333,-1.762],[0,0]],"o":[[0,0],[-0.335,1.769]],"v":[[12.4,-10.925],[6.821,18.575]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":184,"s":[{"i":[[0.333,-1.762],[0,0]],"o":[[0,0],[-0.335,1.769]],"v":[[12.4,-10.925],[6.821,18.575]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[0.483,-1.735],[0,0]],"o":[[0,0],[-0.485,1.743]],"v":[[14.309,-15.08],[6.22,13.978]],"c":false}]},{"t":212,"s":[{"i":[[0.333,-1.762],[0,0]],"o":[[0,0],[-0.335,1.769]],"v":[[12.4,-10.925],[6.821,18.575]],"c":false}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0,0.560784339905,0.792156875134,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[208.261,368.097]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[12.233,-3.905],[5.637,4.126],[1.747,-2.402],[8.343,-10.434]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[0.927,-3.364],[3.593,0],[-0.927,3.364],[-3.593,0]],"o":[[-0.927,3.364],[-3.593,0],[0.927,-3.364],[3.593,0]],"v":[[7.814,0],[-0.37,6.091],[-5.196,0],[2.988,-6.091]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":88,"s":[{"i":[[0.927,-3.63],[3.593,0],[-0.927,3.63],[-3.593,0]],"o":[[-0.927,3.63],[-3.593,0],[0.927,-3.63],[3.593,0]],"v":[[7.814,-2.63],[-0.37,3.943],[-5.196,-2.63],[2.988,-9.204]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[0.927,-3.63],[3.593,0],[-0.927,3.63],[-3.593,0]],"o":[[-0.927,3.63],[-3.593,0],[0.927,-3.63],[3.593,0]],"v":[[7.814,-2.63],[-0.37,3.943],[-5.196,-2.63],[2.988,-9.204]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[12.233,-3.905],[5.637,4.126],[1.747,-2.402],[8.343,-10.434]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":134,"s":[{"i":[[1.089,-3.961],[3.124,-0.219],[-1.089,3.961],[-3.124,0.219]],"o":[[-1.089,3.961],[-3.124,0.219],[1.089,-3.961],[3.124,-0.219]],"v":[[16.089,-2.774],[8.46,4.795],[4.774,-1.981],[12.403,-9.55]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[12.233,-3.905],[5.637,4.126],[1.747,-2.402],[8.343,-10.434]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":184,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[12.233,-3.905],[5.637,4.126],[1.747,-2.402],[8.343,-10.434]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[1.089,-3.961],[3.124,-0.219],[-1.089,3.961],[-3.124,0.219]],"o":[[-1.089,3.961],[-3.124,0.219],[1.089,-3.961],[3.124,-0.219]],"v":[[16.089,-2.774],[8.46,4.795],[4.774,-1.981],[12.403,-9.55]],"c":true}]},{"t":212,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[12.233,-3.905],[5.637,4.126],[1.747,-2.402],[8.343,-10.434]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[248.761,357.29]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[14.457,-0.622],[7.861,7.409],[3.971,0.881],[10.567,-7.151]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[0.927,-3.364],[3.593,0],[-0.927,3.364],[-3.593,0]],"o":[[-0.927,3.364],[-3.593,0],[0.927,-3.364],[3.593,0]],"v":[[6.728,0],[-1.457,6.091],[-6.283,0],[1.902,-6.091]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":88,"s":[{"i":[[0.927,-3.63],[3.593,0],[-0.927,3.63],[-3.593,0]],"o":[[-0.927,3.63],[-3.593,0],[0.927,-3.63],[3.593,0]],"v":[[6.728,-1.995],[-1.457,4.578],[-6.283,-1.995],[1.902,-8.568]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[0.927,-3.63],[3.593,0],[-0.927,3.63],[-3.593,0]],"o":[[-0.927,3.63],[-3.593,0],[0.927,-3.63],[3.593,0]],"v":[[6.728,-1.995],[-1.457,4.578],[-6.283,-1.995],[1.902,-8.568]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[14.457,-0.622],[7.861,7.409],[3.971,0.881],[10.567,-7.151]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":134,"s":[{"i":[[1.089,-3.961],[3.124,-0.219],[-1.089,3.961],[-3.124,0.219]],"o":[[-1.089,3.961],[-3.124,0.219],[1.089,-3.961],[3.124,-0.219]],"v":[[16.553,-0.443],[8.924,7.126],[5.239,0.351],[12.867,-7.219]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[14.457,-0.622],[7.861,7.409],[3.971,0.881],[10.567,-7.151]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":184,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[14.457,-0.622],[7.861,7.409],[3.971,0.881],[10.567,-7.151]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[1.089,-3.961],[3.124,-0.219],[-1.089,3.961],[-3.124,0.219]],"o":[[-1.089,3.961],[-3.124,0.219],[1.089,-3.961],[3.124,-0.219]],"v":[[16.553,-0.443],[8.924,7.126],[5.239,0.351],[12.867,-7.219]],"c":true}]},{"t":212,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[14.457,-0.622],[7.861,7.409],[3.971,0.881],[10.567,-7.151]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[232.782,365.318]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[13.88,-3.757],[7.284,4.274],[3.394,-2.254],[9.99,-10.286]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[0.927,-3.364],[3.593,0],[-0.927,3.364],[-3.593,0]],"o":[[-0.927,3.364],[-3.593,0],[0.927,-3.364],[3.593,0]],"v":[[7.009,0],[-1.175,6.091],[-6.001,0],[2.183,-6.091]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":88,"s":[{"i":[[0.927,-3.63],[3.593,0],[-0.927,3.63],[-3.593,0]],"o":[[-0.927,3.63],[-3.593,0],[0.927,-3.63],[3.593,0]],"v":[[7.009,-3.266],[-1.175,3.307],[-6.001,-3.266],[2.183,-9.839]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[0.927,-3.63],[3.593,0],[-0.927,3.63],[-3.593,0]],"o":[[-0.927,3.63],[-3.593,0],[0.927,-3.63],[3.593,0]],"v":[[7.009,-3.266],[-1.175,3.307],[-6.001,-3.266],[2.183,-9.839]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[13.88,-3.757],[7.284,4.274],[3.394,-2.254],[9.99,-10.286]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":134,"s":[{"i":[[1.089,-3.961],[3.124,-0.219],[-1.089,3.961],[-3.124,0.219]],"o":[[-1.089,3.961],[-3.124,0.219],[1.089,-3.961],[3.124,-0.219]],"v":[[17.605,-3.294],[9.977,4.275],[6.291,-2.501],[13.919,-10.07]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[13.88,-3.757],[7.284,4.274],[3.394,-2.254],[9.99,-10.286]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":184,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[13.88,-3.757],[7.284,4.274],[3.394,-2.254],[9.99,-10.286]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[1.089,-3.961],[3.124,-0.219],[-1.089,3.961],[-3.124,0.219]],"o":[[-1.089,3.961],[-3.124,0.219],[1.089,-3.961],[3.124,-0.219]],"v":[[17.605,-3.294],[9.977,4.275],[6.291,-2.501],[13.919,-10.07]],"c":true}]},{"t":212,"s":[{"i":[[0.747,-4.021],[2.896,-0.415],[-0.747,4.021],[-2.896,0.415]],"o":[[-0.747,4.021],[-2.896,0.415],[0.747,-4.021],[2.896,-0.415]],"v":[[13.88,-3.757],[7.284,4.274],[3.394,-2.254],[9.99,-10.286]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[236.927,349.261]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 3","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[236.927,349.261]},"a":{"a":0,"k":[236.927,349.261]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[0.969,1.552],[-0.456,2.448],[0,0],[-3.337,0.478],[0,0],[-0.969,-1.552],[0.456,-2.448],[0,0],[3.337,-0.478]],"o":[[-1.725,0.247],[-0.999,-1.6],[0,0],[0.857,-4.603],[0,0],[1.725,-0.247],[0.999,1.6],[0,0],[-0.857,4.603],[0,0]],"v":[[-5.369,20.908],[-9.608,18.855],[-10.463,12.486],[-5.632,-13.5],[1.846,-22.56],[21.434,-25.367],[25.673,-23.315],[26.528,-16.946],[21.698,9.04],[14.219,18.1]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[0,0],[1.202,1.453],[-0.565,2.048],[0,0],[-4.141,0],[0,0],[-1.202,-1.453],[0.565,-2.048],[0,0],[4.141,0]],"o":[[-2.14,0],[-1.239,-1.498],[0,0],[1.063,-3.851],[0,0],[2.14,0],[1.239,1.498],[0,0],[-1.063,3.851],[0,0]],"v":[[-15.828,18.237],[-21.086,15.951],[-22.147,10.371],[-16.154,-11.371],[-6.876,-18.237],[17.427,-18.237],[22.686,-15.951],[23.746,-10.371],[17.754,11.371],[8.475,18.237]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":88,"s":[{"i":[[0,0],[1.202,1.568],[-0.565,2.21],[0,0],[-4.141,0],[0,0],[-1.202,-1.568],[0.565,-2.21],[0,0],[4.141,0]],"o":[[-2.14,0],[-1.239,-1.617],[0,0],[1.063,-4.155],[0,0],[2.14,0],[1.239,1.617],[0,0],[-1.063,4.155],[0,0]],"v":[[-15.828,17.05],[-21.086,14.583],[-22.147,8.561],[-16.154,-14.901],[-6.876,-22.311],[17.427,-22.311],[22.686,-19.844],[23.746,-13.822],[17.754,9.64],[8.475,17.05]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[0,0],[1.202,1.568],[-0.565,2.21],[0,0],[-4.141,0],[0,0],[-1.202,-1.568],[0.565,-2.21],[0,0],[4.141,0]],"o":[[-2.14,0],[-1.239,-1.617],[0,0],[1.063,-4.155],[0,0],[2.14,0],[1.239,1.617],[0,0],[-1.063,4.155],[0,0]],"v":[[-15.828,17.05],[-21.086,14.583],[-22.147,8.561],[-16.154,-14.901],[-6.876,-22.311],[17.427,-22.311],[22.686,-19.844],[23.746,-13.822],[17.754,9.64],[8.475,17.05]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[0,0],[0.969,1.552],[-0.456,2.448],[0,0],[-3.337,0.478],[0,0],[-0.969,-1.552],[0.456,-2.448],[0,0],[3.337,-0.478]],"o":[[-1.725,0.247],[-0.999,-1.6],[0,0],[0.857,-4.603],[0,0],[1.725,-0.247],[0.999,1.6],[0,0],[-0.857,4.603],[0,0]],"v":[[-5.369,20.908],[-9.608,18.855],[-10.463,12.486],[-5.632,-13.5],[1.846,-22.56],[21.434,-25.367],[25.673,-23.315],[26.528,-16.946],[21.698,9.04],[14.219,18.1]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":134,"s":[{"i":[[0,0],[0.923,1.613],[-0.663,2.412],[0,0],[-3.601,0.253],[0,0],[-0.923,-1.613],[0.663,-2.412],[0,0],[3.601,-0.253]],"o":[[-1.861,0.131],[-0.952,-1.663],[0,0],[1.247,-4.534],[0,0],[1.861,-0.131],[0.952,1.663],[0,0],[-1.247,4.534],[0,0]],"v":[[-5.025,20.293],[-9.407,17.96],[-9.861,11.547],[-2.825,-14.054],[5.82,-22.59],[26.955,-24.072],[31.337,-21.739],[31.791,-15.327],[24.755,10.275],[16.11,18.811]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[0,0],[0.969,1.552],[-0.456,2.448],[0,0],[-3.337,0.478],[0,0],[-0.969,-1.552],[0.456,-2.448],[0,0],[3.337,-0.478]],"o":[[-1.725,0.247],[-0.999,-1.6],[0,0],[0.857,-4.603],[0,0],[1.725,-0.247],[0.999,1.6],[0,0],[-0.857,4.603],[0,0]],"v":[[-5.369,20.908],[-9.608,18.855],[-10.463,12.486],[-5.632,-13.5],[1.846,-22.56],[21.434,-25.367],[25.673,-23.315],[26.528,-16.946],[21.698,9.04],[14.219,18.1]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":184,"s":[{"i":[[0,0],[0.969,1.552],[-0.456,2.448],[0,0],[-3.337,0.478],[0,0],[-0.969,-1.552],[0.456,-2.448],[0,0],[3.337,-0.478]],"o":[[-1.725,0.247],[-0.999,-1.6],[0,0],[0.857,-4.603],[0,0],[1.725,-0.247],[0.999,1.6],[0,0],[-0.857,4.603],[0,0]],"v":[[-5.369,20.908],[-9.608,18.855],[-10.463,12.486],[-5.632,-13.5],[1.846,-22.56],[21.434,-25.367],[25.673,-23.315],[26.528,-16.946],[21.698,9.04],[14.219,18.1]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[0,0],[0.923,1.613],[-0.663,2.412],[0,0],[-3.601,0.253],[0,0],[-0.923,-1.613],[0.663,-2.412],[0,0],[3.601,-0.253]],"o":[[-1.861,0.131],[-0.952,-1.663],[0,0],[1.247,-4.534],[0,0],[1.861,-0.131],[0.952,1.663],[0,0],[-1.247,4.534],[0,0]],"v":[[-5.025,20.293],[-9.407,17.96],[-9.861,11.547],[-2.825,-14.054],[5.82,-22.59],[26.955,-24.072],[31.337,-21.739],[31.791,-15.327],[24.755,10.275],[16.11,18.811]],"c":true}]},{"t":212,"s":[{"i":[[0,0],[0.969,1.552],[-0.456,2.448],[0,0],[-3.337,0.478],[0,0],[-0.969,-1.552],[0.456,-2.448],[0,0],[3.337,-0.478]],"o":[[-1.725,0.247],[-0.999,-1.6],[0,0],[0.857,-4.603],[0,0],[1.725,-0.247],[0.999,1.6],[0,0],[-0.857,4.603],[0,0]],"v":[[-5.369,20.908],[-9.608,18.855],[-10.463,12.486],[-5.632,-13.5],[1.846,-22.56],[21.434,-25.367],[25.673,-23.315],[26.528,-16.946],[21.698,9.04],[14.219,18.1]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0,0.35686275363,0.556862771511,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":4},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[241.27,357.29]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[241.27,357.29]},"a":{"a":0,"k":[241.27,357.29]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[4.985,-0.714],[0,0],[1.261,-6.669],[0,0],[-4.985,0.714],[0,0],[-1.261,6.669],[0,0]],"o":[[0,0],[-4.963,0.711],[0,0],[-1.267,6.698],[0,0],[4.963,-0.711],[0,0],[1.267,-6.698]],"v":[[38.102,-69.567],[-1.981,-63.822],[-12.545,-51.297],[-33.662,60.37],[-26.307,72.206],[13.776,66.461],[24.34,53.936],[45.458,-57.731]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[6.185,0],[0,0],[1.565,-5.577],[0,0],[-6.185,0],[0,0],[-1.565,5.577],[0,0]],"o":[[0,0],[-6.158,0],[0,0],[-1.571,5.601],[0,0],[6.158,0],[0,0],[1.571,-5.601]],"v":[[40.852,-56.963],[-8.878,-56.963],[-21.984,-47.499],[-48.184,45.884],[-39.059,56.963],[10.672,56.963],[23.778,47.499],[49.978,-45.884]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":88,"s":[{"i":[[6.185,0],[0,0],[1.565,-6.018],[0,0],[-6.185,0],[0,0],[-1.565,6.018],[0,0]],"o":[[0,0],[-6.158,0],[0,0],[-1.571,6.044],[0,0],[6.158,0],[0,0],[1.571,-6.044]],"v":[[40.852,-61.365],[-8.878,-61.365],[-21.984,-51.151],[-48.184,49.625],[-39.059,61.581],[10.672,61.581],[23.778,51.367],[49.978,-49.408]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[6.185,0],[0,0],[1.565,-6.018],[0,0],[-6.185,0],[0,0],[-1.565,6.018],[0,0]],"o":[[0,0],[-6.158,0],[0,0],[-1.571,6.044],[0,0],[6.158,0],[0,0],[1.571,-6.044]],"v":[[40.852,-61.365],[-8.878,-61.365],[-21.984,-51.151],[-48.184,49.625],[-39.059,61.581],[10.672,61.581],[23.778,51.367],[49.978,-49.408]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[4.985,-0.714],[0,0],[1.261,-6.669],[0,0],[-4.985,0.714],[0,0],[-1.261,6.669],[0,0]],"o":[[0,0],[-4.963,0.711],[0,0],[-1.267,6.698],[0,0],[4.963,-0.711],[0,0],[1.267,-6.698]],"v":[[38.102,-69.567],[-1.981,-63.822],[-12.545,-51.297],[-33.662,60.37],[-26.307,72.206],[13.776,66.461],[24.34,53.936],[45.458,-57.731]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":134,"s":[{"i":[[5.379,-0.377],[0,0],[1.829,-6.569],[0,0],[-5.379,0.377],[0,0],[-1.829,6.569],[0,0]],"o":[[0,0],[-5.355,0.376],[0,0],[-1.837,6.597],[0,0],[5.355,-0.376],[0,0],[1.837,-6.597]],"v":[[45.558,-67.031],[2.31,-63.999],[-9.883,-52.214],[-40.503,57.779],[-33.496,70.082],[9.752,67.05],[21.944,55.265],[52.565,-54.727]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[4.985,-0.714],[0,0],[1.261,-6.669],[0,0],[-4.985,0.714],[0,0],[-1.261,6.669],[0,0]],"o":[[0,0],[-4.963,0.711],[0,0],[-1.267,6.698],[0,0],[4.963,-0.711],[0,0],[1.267,-6.698]],"v":[[38.102,-69.567],[-1.981,-63.822],[-12.545,-51.297],[-33.662,60.37],[-26.307,72.206],[13.776,66.461],[24.34,53.936],[45.458,-57.731]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":184,"s":[{"i":[[4.985,-0.714],[0,0],[1.261,-6.669],[0,0],[-4.985,0.714],[0,0],[-1.261,6.669],[0,0]],"o":[[0,0],[-4.963,0.711],[0,0],[-1.267,6.698],[0,0],[4.963,-0.711],[0,0],[1.267,-6.698]],"v":[[38.102,-69.567],[-1.981,-63.822],[-12.545,-51.297],[-33.662,60.37],[-26.307,72.206],[13.776,66.461],[24.34,53.936],[45.458,-57.731]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[5.379,-0.377],[0,0],[1.829,-6.569],[0,0],[-5.379,0.377],[0,0],[-1.829,6.569],[0,0]],"o":[[0,0],[-5.355,0.376],[0,0],[-1.837,6.597],[0,0],[5.355,-0.376],[0,0],[1.837,-6.597]],"v":[[45.558,-67.031],[2.31,-63.999],[-9.883,-52.214],[-40.503,57.779],[-33.496,70.082],[9.752,67.05],[21.944,55.265],[52.565,-54.727]],"c":true}]},{"t":212,"s":[{"i":[[4.985,-0.714],[0,0],[1.261,-6.669],[0,0],[-4.985,0.714],[0,0],[-1.261,6.669],[0,0]],"o":[[0,0],[-4.963,0.711],[0,0],[-1.267,6.698],[0,0],[4.963,-0.711],[0,0],[1.267,-6.698]],"v":[[38.102,-69.567],[-1.981,-63.822],[-12.545,-51.297],[-33.662,60.37],[-26.307,72.206],[13.776,66.461],[24.34,53.936],[45.458,-57.731]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.560784339905,0.792156875134,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[242.701,391.881]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 3","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[2.605,1.088],[2.09,-0.299],[0,0],[1.496,-5.807],[0,0],[-1.491,-1.641],[-2.581,-1.529],[-2.445,0.35],[0,0],[-1.261,6.669],[0,0],[1.125,2.058]],"o":[[-1.974,-0.824],[0,0],[-4.963,0.711],[0,0],[-0.289,3.63],[2.088,2.297],[2.696,1.597],[0,0],[4.963,-0.711],[0,0],[0.56,-2.961],[-1.544,-2.826]],"v":[[38.697,-69.505],[32.711,-70.732],[-7.373,-64.988],[-18.171,-53.324],[-39.288,58.344],[-38.358,66.667],[-31.122,71.679],[-24.936,73.916],[15.148,68.171],[25.711,55.646],[46.829,-56.021],[45.937,-63.907]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[2.238,2.384],[2.593,0],[0,0],[1.856,-4.807],[0,0],[-1.245,-1.823],[-1.95,-2.39],[-3.034,0],[0,0],[-1.565,5.577],[0,0],[1.395,1.908]],"o":[[-1.547,-1.648],[0,0],[-6.158,0],[0,0],[-0.358,3.084],[1.73,2.534],[1.662,2.037],[0,0],[6.158,0],[0,0],[0.695,-2.476],[-1.915,-2.619]],"v":[[46.071,-55.83],[39.51,-58.329],[-10.22,-58.329],[-23.618,-49.634],[-49.818,43.749],[-48.663,51.017],[-45.146,55.001],[-37.784,58.329],[11.946,58.329],[25.053,48.864],[51.253,-44.518],[50.146,-51.406]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":88,"s":[{"i":[[1.422,1.19],[2.593,0],[0,0],[1.856,-5.188],[0,0],[-1.239,-1.971],[-1.952,-1.769],[-3.034,0],[0,0],[-1.565,6.018],[0,0],[1.395,2.059]],"o":[[-1.583,-1.071],[0,0],[-6.158,0],[0,0],[-0.358,3.329],[1.043,1.603],[2.194,1.878],[0,0],[6.158,0],[0,0],[0.695,-2.672],[-1.915,-2.826]],"v":[[45.835,-59.595],[39.51,-61.491],[-10.22,-61.491],[-23.618,-52.108],[-49.818,48.668],[-48.663,56.512],[-44.791,60.119],[-37.784,62.947],[11.946,62.947],[25.053,52.733],[51.253,-48.042],[50.146,-55.476]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[1.422,1.19],[2.593,0],[0,0],[1.856,-5.188],[0,0],[-1.239,-1.971],[-1.952,-1.769],[-3.034,0],[0,0],[-1.565,6.018],[0,0],[1.395,2.059]],"o":[[-1.583,-1.071],[0,0],[-6.158,0],[0,0],[-0.358,3.328],[1.043,1.603],[2.194,1.878],[0,0],[6.158,0],[0,0],[0.695,-2.672],[-1.915,-2.826]],"v":[[45.835,-59.595],[39.51,-61.491],[-10.22,-61.491],[-23.618,-52.108],[-49.818,48.668],[-48.663,56.512],[-44.791,60.119],[-37.784,62.947],[11.946,62.947],[25.053,52.733],[51.253,-48.042],[50.146,-55.476]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[2.605,1.088],[2.09,-0.299],[0,0],[1.496,-5.807],[0,0],[-1.491,-1.641],[-2.581,-1.529],[-2.445,0.35],[0,0],[-1.261,6.669],[0,0],[1.125,2.058]],"o":[[-1.974,-0.824],[0,0],[-4.963,0.711],[0,0],[-0.289,3.63],[2.088,2.297],[2.696,1.597],[0,0],[4.963,-0.711],[0,0],[0.56,-2.961],[-1.544,-2.826]],"v":[[38.697,-69.505],[32.711,-70.732],[-7.373,-64.988],[-18.171,-53.324],[-39.288,58.344],[-38.358,66.667],[-31.122,71.679],[-24.936,73.916],[15.148,68.171],[25.711,55.646],[46.829,-56.021],[45.937,-63.907]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":134,"s":[{"i":[[2.705,1.261],[2.255,-0.158],[0,0],[2.017,-5.693],[0,0],[-1.475,-1.738],[-2.648,-1.699],[-2.638,0.185],[0,0],[-1.829,6.569],[0,0],[1.053,2.129]],"o":[[-2.05,-0.955],[0,0],[-5.355,0.376],[0,0],[-0.57,3.602],[2.066,2.432],[2.766,1.775],[0,0],[5.355,-0.376],[0,0],[0.812,-2.916],[-1.446,-2.923]],"v":[[47.296,-69.573],[40.987,-71.201],[-2.262,-68.168],[-14.643,-57.258],[-45.263,52.734],[-44.869,61.1],[-38.593,69.15],[-32.143,71.798],[11.105,68.766],[23.297,56.981],[53.918,-53.011],[53.533,-60.939]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[2.605,1.088],[2.09,-0.299],[0,0],[1.496,-5.807],[0,0],[-1.491,-1.641],[-2.581,-1.529],[-2.445,0.35],[0,0],[-1.261,6.669],[0,0],[1.125,2.058]],"o":[[-1.974,-0.824],[0,0],[-4.963,0.711],[0,0],[-0.289,3.63],[2.088,2.297],[2.696,1.597],[0,0],[4.963,-0.711],[0,0],[0.56,-2.961],[-1.544,-2.826]],"v":[[38.697,-69.505],[32.711,-70.732],[-7.373,-64.988],[-18.171,-53.324],[-39.288,58.344],[-38.358,66.667],[-31.122,71.679],[-24.936,73.916],[15.148,68.171],[25.711,55.646],[46.829,-56.021],[45.937,-63.907]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":184,"s":[{"i":[[2.605,1.088],[2.09,-0.299],[0,0],[1.496,-5.807],[0,0],[-1.491,-1.641],[-2.581,-1.529],[-2.445,0.35],[0,0],[-1.261,6.669],[0,0],[1.125,2.058]],"o":[[-1.974,-0.824],[0,0],[-4.963,0.711],[0,0],[-0.289,3.63],[2.088,2.297],[2.696,1.597],[0,0],[4.963,-0.711],[0,0],[0.56,-2.961],[-1.544,-2.826]],"v":[[38.697,-69.505],[32.711,-70.732],[-7.373,-64.988],[-18.171,-53.324],[-39.288,58.344],[-38.358,66.667],[-31.122,71.679],[-24.936,73.916],[15.148,68.171],[25.711,55.646],[46.829,-56.021],[45.937,-63.907]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[2.705,1.261],[2.255,-0.158],[0,0],[2.017,-5.693],[0,0],[-1.475,-1.738],[-2.648,-1.699],[-2.638,0.185],[0,0],[-1.829,6.569],[0,0],[1.053,2.129]],"o":[[-2.05,-0.955],[0,0],[-5.355,0.376],[0,0],[-0.57,3.602],[2.066,2.432],[2.766,1.775],[0,0],[5.355,-0.376],[0,0],[0.812,-2.916],[-1.446,-2.923]],"v":[[47.296,-69.573],[40.987,-71.201],[-2.262,-68.168],[-14.643,-57.258],[-45.263,52.734],[-44.869,61.1],[-38.593,69.15],[-32.143,71.798],[11.105,68.766],[23.297,56.981],[53.918,-53.011],[53.533,-60.939]],"c":true}]},{"t":212,"s":[{"i":[[2.605,1.088],[2.09,-0.299],[0,0],[1.496,-5.807],[0,0],[-1.491,-1.641],[-2.581,-1.529],[-2.445,0.35],[0,0],[-1.261,6.669],[0,0],[1.125,2.058]],"o":[[-1.974,-0.824],[0,0],[-4.963,0.711],[0,0],[-0.289,3.63],[2.088,2.297],[2.696,1.597],[0,0],[4.963,-0.711],[0,0],[0.56,-2.961],[-1.544,-2.826]],"v":[[38.697,-69.505],[32.711,-70.732],[-7.373,-64.988],[-18.171,-53.324],[-39.288,58.344],[-38.358,66.667],[-31.122,71.679],[-24.936,73.916],[15.148,68.171],[25.711,55.646],[46.829,-56.021],[45.937,-63.907]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0,0.35686275363,0.556862771511,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":16},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.35686275363,0.556862771511,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[241.426,390.515]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 4","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Layer 31 copy 3","parent":8,"sr":1,"ks":{"p":{"a":0,"k":[393.747,389.827,0]},"a":{"a":0,"k":[384.389,390.413,0]},"s":{"a":0,"k":[100.017,100.017,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-5.256,0]],"o":[[0,-5.256],[0,0]],"v":[[-4.758,4.758],[4.758,-4.758]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":4},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[385.027,376.374]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,8.513],[0,0],[-8.726,0]],"o":[[0,0],[0,-8.726],[0,0]],"v":[[-7.9,14.518],[-7.9,1.282],[7.9,-14.518]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":4},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[376.375,352.89]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,5.256],[0,0],[-5.256,0],[0,0],[0,-5.256],[0,0],[0,0],[8.513,0],[0,0],[0,8.513],[0,0],[-8.726,0],[0,0],[0,-8.726]],"o":[[0,0],[0,-5.256],[0,0],[5.256,0],[0,0],[0,0],[0,8.513],[0,0],[-8.513,0],[0,0],[0,-8.726],[0,0],[8.726,0],[0,0]],"v":[[-4.006,21.249],[-4.006,-8.78],[5.511,-18.297],[5.511,-18.297],[15.028,-8.78],[15.028,14.129],[15.028,36.127],[-0.386,51.541],[-0.386,51.541],[-15.799,36.127],[-15.799,-35.742],[0,-51.541],[0,-51.541],[15.799,-35.742]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.68235296011,0.729411780834,0.721568644047,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":4},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[384.275,389.913]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 3","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[384.275,389.913]},"a":{"a":0,"k":[384.275,389.913]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,5.256],[0,0],[-5.256,0],[0,0],[0,-5.256],[0,0],[0,0],[8.513,0],[0,0],[0,8.513],[0,0]],"o":[[0,0],[0,-5.256],[0,0],[5.256,0],[0,0],[0,0],[0,8.513],[0,0],[-8.513,0],[0,0],[0,0]],"v":[[-3.62,13.349],[-3.62,-16.68],[5.897,-26.197],[5.897,-26.197],[15.414,-16.68],[15.414,6.23],[15.414,28.228],[0,43.641],[0,43.641],[-15.414,28.228],[-15.414,-43.641]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.478431373835,0.537254929543,0.529411792755,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":9},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[384.889,398.812]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Layer 5","parent":5,"sr":1,"ks":{"o":{"a":0,"k":33},"p":{"a":0,"k":[390.7,409.983,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,5.256],[0,0],[-5.256,0],[0,0],[0,-5.256],[0,0],[0,0],[8.513,0],[0,0],[0,8.513],[0,0]],"o":[[0,0],[0,-5.256],[0,0],[5.256,0],[0,0],[0,0],[0,8.513],[0,0],[-8.513,0],[0,0],[0,0]],"v":[[-3.62,8.62],[-3.62,-21.409],[5.897,-30.926],[5.897,-30.926],[15.414,-21.409],[15.414,1.501],[15.414,23.499],[0,38.912],[0,38.912],[-15.414,23.499],[-15.414,-38.912]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":9},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Layer 31 copy 2","parent":8,"sr":1,"ks":{"p":{"a":0,"k":[433.308,426.356,0]},"a":{"a":0,"k":[416.693,427.185,0]},"s":{"a":0,"k":[100.017,100.017,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[2.719,-2.719],[0,0],[0,0],[2.719,-2.719],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-2.719,-2.719],[0,0],[0,0],[0,0],[0,0],[-2.719,-2.719]],"v":[[5.265,-18.1],[-14.305,1.469],[-19.616,-3.842],[-29.464,-3.842],[-53.353,20.047],[-53.353,20.14],[53.353,20.14],[15.112,-18.1]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.301960796118,0.352941185236,0.435294121504,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[416.69,447.371]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.95],[5.95,0],[0,5.95],[-5.95,0]],"o":[[0,5.95],[-5.95,0],[0,-5.95],[5.95,0]],"v":[[10.773,0],[0,10.773],[-10.773,0],[0,-10.773]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333337307,0.780392169952,0.51372551918,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[444.369,408.674]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[53.356,-40.326],[53.356,40.326],[-53.356,40.326],[-53.356,-40.326]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.454901963472,0.674509823322,0.803921580315,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[416.693,427.185]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 3","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"fr3","sr":1,"ks":{"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":106,"s":[10]},{"t":152,"s":[-10]}]},"p":{"a":1,"k":[{"i":{"x":0.189,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[241.593,389.067,0],"to":[40.407,-10.067,0],"ti":[2.407,177.933,0]},{"t":150,"s":[340.593,137.067,0],"h":1}]},"a":{"a":0,"k":[443.032,410.108,0]},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":105,"s":[150,150,100]},{"t":150,"s":[0,0,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-6.53],[0,0],[-6.53,0],[0,0],[0,6.53],[0,0],[0,0],[0,0],[0,0],[6.53,0],[0,0]],"o":[[0,0],[0,6.53],[0,0],[6.53,0],[0,0],[0,0],[0,0],[0,0],[0,-6.53],[0,0],[-6.53,0]],"v":[[-77.159,-41.835],[-77.159,41.835],[-65.335,53.658],[45.791,53.658],[57.615,41.835],[57.615,7.107],[77.159,-12.438],[57.615,-12.438],[57.615,-41.835],[45.791,-53.658],[-65.335,-53.658]],"c":true}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.533333361149,0.72549021244,0.886274516582,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":106,"s":[5]},{"t":150,"s":[6],"h":1}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.533333361149,0.72549021244,0.886274516582,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[14]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":106,"s":[10]},{"t":150,"s":[14],"h":1}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 2","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[443.032,427.185]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 4","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Layer 4","parent":5,"sr":1,"ks":{"p":{"a":0,"k":[385.275,366.704,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-8.726,0],[0,0],[0,-8.726],[0,0]],"o":[[0,-8.726],[0,0],[8.726,0],[0,0],[0,0]],"v":[[-15.799,-11.533],[0,-27.332],[0,-27.332],[15.799,-11.533],[15.799,27.332]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.478431373835,0.537254929543,0.529411792755,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":9},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"grl","parent":11,"sr":1,"ks":{"p":{"a":0,"k":[-2.69,-10.125,0]},"a":{"a":0,"k":[623.274,533.285,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":153.834,"s":[{"i":[[0.045,-0.291],[1.644,-0.028],[-0.045,0.291],[-1.644,0.028]],"o":[[-0.045,0.291],[-1.644,0.028],[0.045,-0.291],[1.644,-0.028]],"v":[[2.977,2.418],[-0.081,2.996],[-2.977,2.519],[0.081,1.942]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":159.666,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":165.5,"s":[{"i":[[0.045,-0.291],[1.644,-0.028],[-0.045,0.291],[-1.644,0.028]],"o":[[-0.045,0.291],[-1.644,0.028],[0.045,-0.291],[1.644,-0.028]],"v":[[2.977,2.418],[-0.081,2.996],[-2.977,2.519],[0.081,1.942]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":171.334,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":192.334,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198.166,"s":[{"i":[[0.045,-0.291],[1.644,-0.028],[-0.045,0.291],[-1.644,0.028]],"o":[[-0.045,0.291],[-1.644,0.028],[0.045,-0.291],[1.644,-0.028]],"v":[[2.977,2.418],[-0.081,2.996],[-2.977,2.519],[0.081,1.942]],"c":true}]},{"t":204,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[326.847,240.985]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":153.834,"s":[{"i":[[0.045,-0.291],[1.644,-0.028],[-0.045,0.291],[-1.644,0.028]],"o":[[-0.045,0.291],[-1.644,0.028],[0.045,-0.291],[1.644,-0.028]],"v":[[2.977,1.937],[-0.081,2.515],[-2.977,2.038],[0.081,1.461]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":159.666,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":165.5,"s":[{"i":[[0.045,-0.291],[1.644,-0.028],[-0.045,0.291],[-1.644,0.028]],"o":[[-0.045,0.291],[-1.644,0.028],[0.045,-0.291],[1.644,-0.028]],"v":[[2.977,1.937],[-0.081,2.515],[-2.977,2.038],[0.081,1.461]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":171.334,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":192.334,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198.166,"s":[{"i":[[0.045,-0.291],[1.644,-0.028],[-0.045,0.291],[-1.644,0.028]],"o":[[-0.045,0.291],[-1.644,0.028],[0.045,-0.291],[1.644,-0.028]],"v":[[2.977,1.937],[-0.081,2.515],[-2.977,2.038],[0.081,1.461]],"c":true}]},{"t":204,"s":[{"i":[[0.045,-1.334],[1.644,-0.127],[-0.045,1.334],[-1.644,0.127]],"o":[[-0.045,1.334],[-1.644,0.127],[0.045,-1.334],[1.644,-0.127]],"v":[[2.977,-0.231],[-0.081,2.415],[-2.977,0.231],[0.081,-2.415]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[298.654,241.6]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[0.765,0],[0.048,0.005],[0,0],[0.144,0.631],[-0.555,0.334],[0,0],[-0.428,-0.71],[0.71,-0.428],[0,0],[0,0],[0.078,-0.824]],"o":[[-0.048,0],[0,0],[-0.645,-0.062],[-0.144,-0.631],[0,0],[0.707,-0.429],[0.428,0.709],[0,0],[0,0],[0.825,0.078],[-0.074,0.776]],"v":[[3.852,3.953],[3.708,3.946],[-3.991,3.214],[-5.312,2.053],[-4.624,0.436],[2.297,-3.737],[4.356,-3.227],[3.846,-1.168],[0.819,0.658],[3.991,0.96],[5.343,2.594]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":153.834,"s":[{"i":[[0.758,-0.098],[0.048,-0.001],[0,0],[0.223,0.607],[-0.507,0.402],[0,0],[-0.515,-0.649],[0.649,-0.515],[0,0],[0,0],[-0.028,-0.827]],"o":[[-0.047,0.006],[0,0],[-0.647,0.022],[-0.223,-0.607],[0,0],[0.646,-0.516],[0.515,0.648],[0,0],[0,0],[0.828,-0.028],[0.026,0.779]],"v":[[4.333,3.292],[4.189,3.304],[-3.54,3.566],[-4.999,2.585],[-4.524,0.893],[1.804,-4.134],[3.911,-3.893],[3.67,-1.786],[0.902,0.414],[4.087,0.306],[5.637,1.754]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":159.666,"s":[{"i":[[0.765,0],[0.048,0.005],[0,0],[0.144,0.631],[-0.555,0.334],[0,0],[-0.428,-0.71],[0.71,-0.428],[0,0],[0,0],[0.078,-0.824]],"o":[[-0.048,0],[0,0],[-0.645,-0.062],[-0.144,-0.631],[0,0],[0.707,-0.429],[0.428,0.709],[0,0],[0,0],[0.825,0.078],[-0.074,0.776]],"v":[[3.852,3.953],[3.708,3.946],[-3.991,3.214],[-5.312,2.053],[-4.624,0.436],[2.297,-3.737],[4.356,-3.227],[3.846,-1.168],[0.819,0.658],[3.991,0.96],[5.343,2.594]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":165.5,"s":[{"i":[[0.758,-0.098],[0.048,-0.001],[0,0],[0.223,0.607],[-0.507,0.402],[0,0],[-0.515,-0.649],[0.649,-0.515],[0,0],[0,0],[-0.028,-0.827]],"o":[[-0.047,0.006],[0,0],[-0.647,0.022],[-0.223,-0.607],[0,0],[0.646,-0.516],[0.515,0.648],[0,0],[0,0],[0.828,-0.028],[0.026,0.779]],"v":[[4.333,3.292],[4.189,3.304],[-3.54,3.566],[-4.999,2.585],[-4.524,0.893],[1.804,-4.134],[3.911,-3.893],[3.67,-1.786],[0.902,0.414],[4.087,0.306],[5.637,1.754]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":171.334,"s":[{"i":[[0.765,0],[0.048,0.005],[0,0],[0.144,0.631],[-0.555,0.334],[0,0],[-0.428,-0.71],[0.71,-0.428],[0,0],[0,0],[0.078,-0.824]],"o":[[-0.048,0],[0,0],[-0.645,-0.062],[-0.144,-0.631],[0,0],[0.707,-0.429],[0.428,0.709],[0,0],[0,0],[0.825,0.078],[-0.074,0.776]],"v":[[3.852,3.953],[3.708,3.946],[-3.991,3.214],[-5.312,2.053],[-4.624,0.436],[2.297,-3.737],[4.356,-3.227],[3.846,-1.168],[0.819,0.658],[3.991,0.96],[5.343,2.594]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":192.334,"s":[{"i":[[0.765,0],[0.048,0.005],[0,0],[0.144,0.631],[-0.555,0.334],[0,0],[-0.428,-0.71],[0.71,-0.428],[0,0],[0,0],[0.078,-0.824]],"o":[[-0.048,0],[0,0],[-0.645,-0.062],[-0.144,-0.631],[0,0],[0.707,-0.429],[0.428,0.709],[0,0],[0,0],[0.825,0.078],[-0.074,0.776]],"v":[[3.852,3.953],[3.708,3.946],[-3.991,3.214],[-5.312,2.053],[-4.624,0.436],[2.297,-3.737],[4.356,-3.227],[3.846,-1.168],[0.819,0.658],[3.991,0.96],[5.343,2.594]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198.166,"s":[{"i":[[0.758,-0.098],[0.048,-0.001],[0,0],[0.223,0.607],[-0.507,0.402],[0,0],[-0.515,-0.649],[0.649,-0.515],[0,0],[0,0],[-0.028,-0.827]],"o":[[-0.047,0.006],[0,0],[-0.647,0.022],[-0.223,-0.607],[0,0],[0.646,-0.516],[0.515,0.648],[0,0],[0,0],[0.828,-0.028],[0.026,0.779]],"v":[[4.333,3.292],[4.189,3.304],[-3.54,3.566],[-4.999,2.585],[-4.524,0.893],[1.804,-4.134],[3.911,-3.893],[3.67,-1.786],[0.902,0.414],[4.087,0.306],[5.637,1.754]],"c":true}]},{"t":204,"s":[{"i":[[0.765,0],[0.048,0.005],[0,0],[0.144,0.631],[-0.555,0.334],[0,0],[-0.428,-0.71],[0.71,-0.428],[0,0],[0,0],[0.078,-0.824]],"o":[[-0.048,0],[0,0],[-0.645,-0.062],[-0.144,-0.631],[0,0],[0.707,-0.429],[0.428,0.709],[0,0],[0,0],[0.825,0.078],[-0.074,0.776]],"v":[[3.852,3.953],[3.708,3.946],[-3.991,3.214],[-5.312,2.053],[-4.624,0.436],[2.297,-3.737],[4.356,-3.227],[3.846,-1.168],[0.819,0.658],[3.991,0.96],[5.343,2.594]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[335.385,243.182]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 3","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[0.126,0],[0.177,0.674],[-0.801,0.21],[0,0],[0,0],[-0.319,0.765],[-0.768,-0.32],[0,0],[0.045,-0.642],[0.622,-0.163],[0,0]],"o":[[-0.666,0],[-0.21,-0.802],[0,0],[0,0],[-0.765,-0.318],[0.319,-0.763],[0,0],[0.594,0.247],[-0.045,0.642],[0,0],[-0.127,0.033]],"v":[[-3.576,3.835],[-5.027,2.715],[-3.955,0.884],[-1.101,0.137],[-3.707,-0.951],[-4.513,-2.913],[-2.551,-3.719],[4.154,-0.92],[5.072,0.569],[3.956,1.915],[-3.195,3.786]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":153.834,"s":[{"i":[[0.12,0.038],[-0.033,0.696],[-0.827,-0.039],[0,0],[0,0],[-0.534,0.634],[-0.637,-0.535],[0,0],[0.235,-0.599],[0.642,0.031],[0,0]],"o":[[-0.635,-0.199],[0.04,-0.828],[0,0],[0,0],[-0.634,-0.533],[0.533,-0.632],[0,0],[0.493,0.414],[-0.235,0.599],[0,0],[-0.131,-0.006]],"v":[[-4.594,2.602],[-5.642,1.099],[-4.072,-0.327],[-1.125,-0.186],[-3.286,-2.004],[-3.467,-4.117],[-1.354,-4.298],[4.206,0.379],[4.636,2.074],[3.168,3.025],[-4.216,2.669]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":159.666,"s":[{"i":[[0.126,0],[0.177,0.674],[-0.801,0.21],[0,0],[0,0],[-0.319,0.765],[-0.768,-0.32],[0,0],[0.045,-0.642],[0.622,-0.163],[0,0]],"o":[[-0.666,0],[-0.21,-0.802],[0,0],[0,0],[-0.765,-0.318],[0.319,-0.763],[0,0],[0.594,0.247],[-0.045,0.642],[0,0],[-0.127,0.033]],"v":[[-3.576,3.835],[-5.027,2.715],[-3.955,0.884],[-1.101,0.137],[-3.707,-0.951],[-4.513,-2.913],[-2.551,-3.719],[4.154,-0.92],[5.072,0.569],[3.956,1.915],[-3.195,3.786]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":165.5,"s":[{"i":[[0.12,0.038],[-0.033,0.696],[-0.827,-0.039],[0,0],[0,0],[-0.534,0.634],[-0.637,-0.535],[0,0],[0.235,-0.599],[0.642,0.031],[0,0]],"o":[[-0.635,-0.199],[0.04,-0.828],[0,0],[0,0],[-0.634,-0.533],[0.533,-0.632],[0,0],[0.493,0.414],[-0.235,0.599],[0,0],[-0.131,-0.006]],"v":[[-4.594,2.602],[-5.642,1.099],[-4.072,-0.327],[-1.125,-0.186],[-3.286,-2.004],[-3.467,-4.117],[-1.354,-4.298],[4.206,0.379],[4.636,2.074],[3.168,3.025],[-4.216,2.669]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":171.334,"s":[{"i":[[0.126,0],[0.177,0.674],[-0.801,0.21],[0,0],[0,0],[-0.319,0.765],[-0.768,-0.32],[0,0],[0.045,-0.642],[0.622,-0.163],[0,0]],"o":[[-0.666,0],[-0.21,-0.802],[0,0],[0,0],[-0.765,-0.318],[0.319,-0.763],[0,0],[0.594,0.247],[-0.045,0.642],[0,0],[-0.127,0.033]],"v":[[-3.576,3.835],[-5.027,2.715],[-3.955,0.884],[-1.101,0.137],[-3.707,-0.951],[-4.513,-2.913],[-2.551,-3.719],[4.154,-0.92],[5.072,0.569],[3.956,1.915],[-3.195,3.786]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":192.334,"s":[{"i":[[0.126,0],[0.177,0.674],[-0.801,0.21],[0,0],[0,0],[-0.319,0.765],[-0.768,-0.32],[0,0],[0.045,-0.642],[0.622,-0.163],[0,0]],"o":[[-0.666,0],[-0.21,-0.802],[0,0],[0,0],[-0.765,-0.318],[0.319,-0.763],[0,0],[0.594,0.247],[-0.045,0.642],[0,0],[-0.127,0.033]],"v":[[-3.576,3.835],[-5.027,2.715],[-3.955,0.884],[-1.101,0.137],[-3.707,-0.951],[-4.513,-2.913],[-2.551,-3.719],[4.154,-0.92],[5.072,0.569],[3.956,1.915],[-3.195,3.786]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198.166,"s":[{"i":[[0.12,0.038],[-0.033,0.696],[-0.827,-0.039],[0,0],[0,0],[-0.534,0.634],[-0.637,-0.535],[0,0],[0.235,-0.599],[0.642,0.031],[0,0]],"o":[[-0.635,-0.199],[0.04,-0.828],[0,0],[0,0],[-0.634,-0.533],[0.533,-0.632],[0,0],[0.493,0.414],[-0.235,0.599],[0,0],[-0.131,-0.006]],"v":[[-4.594,2.602],[-5.642,1.099],[-4.072,-0.327],[-1.125,-0.186],[-3.286,-2.004],[-3.467,-4.117],[-1.354,-4.298],[4.206,0.379],[4.636,2.074],[3.168,3.025],[-4.216,2.669]],"c":true}]},{"t":204,"s":[{"i":[[0.126,0],[0.177,0.674],[-0.801,0.21],[0,0],[0,0],[-0.319,0.765],[-0.768,-0.32],[0,0],[0.045,-0.642],[0.622,-0.163],[0,0]],"o":[[-0.666,0],[-0.21,-0.802],[0,0],[0,0],[-0.765,-0.318],[0.319,-0.763],[0,0],[0.594,0.247],[-0.045,0.642],[0,0],[-0.127,0.033]],"v":[[-3.576,3.835],[-5.027,2.715],[-3.955,0.884],[-1.101,0.137],[-3.707,-0.951],[-4.513,-2.913],[-2.551,-3.719],[4.154,-0.92],[5.072,0.569],[3.956,1.915],[-3.195,3.786]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[291.714,243.462]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 4","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.969,-0.687],[0,0],[-1.02,-0.671],[0,0],[-0.969,0.687],[0,0],[1.02,0.671],[0,0]],"o":[[0,0],[-0.969,0.687],[0,0],[1.02,0.671],[0,0],[0.969,-0.687],[0,0],[-1.02,-0.671]],"v":[[-1.966,-4.464],[-6.608,-1.177],[-6.517,1.281],[-1.636,4.493],[1.966,4.464],[6.608,1.177],[6.517,-1.281],[1.636,-4.493]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.945098042488,0.352941185236,0.141176477075,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[312.565,254.105]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 5","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":153.834,"s":[{"i":[[-0.161,-1.465],[3.579,-0.01],[0.161,1.465],[-3.579,0.01]],"o":[[0.161,1.465],[-3.579,0.01],[-0.161,-1.465],[3.579,-0.01]],"v":[[6.48,-0.017],[0.291,2.653],[-6.48,0.017],[-0.291,-2.653]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":159.666,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":165.5,"s":[{"i":[[-0.161,-1.465],[3.579,-0.01],[0.161,1.465],[-3.579,0.01]],"o":[[0.161,1.465],[-3.579,0.01],[-0.161,-1.465],[3.579,-0.01]],"v":[[6.48,-0.017],[0.291,2.653],[-6.48,0.017],[-0.291,-2.653]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":171.334,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":192.334,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198.166,"s":[{"i":[[-0.161,-1.465],[3.579,-0.01],[0.161,1.465],[-3.579,0.01]],"o":[[0.161,1.465],[-3.579,0.01],[-0.161,-1.465],[3.579,-0.01]],"v":[[6.48,-0.017],[0.291,2.653],[-6.48,0.017],[-0.291,-2.653]],"c":true}]},{"t":204,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[327.422,244.328]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 6","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":148,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":153.834,"s":[{"i":[[-0.161,-1.321],[3.579,-0.009],[0.161,1.321],[-3.579,0.009]],"o":[[0.161,1.321],[-3.579,0.009],[-0.161,-1.321],[3.579,-0.009]],"v":[[6.48,-0.016],[0.291,2.392],[-6.48,0.016],[-0.291,-2.392]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":159.666,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":165.5,"s":[{"i":[[-0.161,-1.321],[3.579,-0.009],[0.161,1.321],[-3.579,0.009]],"o":[[0.161,1.321],[-3.579,0.009],[-0.161,-1.321],[3.579,-0.009]],"v":[[6.48,-0.016],[0.291,2.392],[-6.48,0.016],[-0.291,-2.392]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":171.334,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":192.334,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":198.166,"s":[{"i":[[-0.161,-1.321],[3.579,-0.009],[0.161,1.321],[-3.579,0.009]],"o":[[0.161,1.321],[-3.579,0.009],[-0.161,-1.321],[3.579,-0.009]],"v":[[6.48,-0.016],[0.291,2.392],[-6.48,0.016],[-0.291,-2.392]],"c":true}]},{"t":204,"s":[{"i":[[-0.161,-4.36],[3.579,-0.028],[0.161,4.36],[-3.579,0.028]],"o":[[0.161,4.36],[-3.579,0.028],[-0.161,-4.36],[3.579,-0.028]],"v":[[6.48,-0.052],[0.291,7.895],[-6.48,0.052],[-0.291,-7.895]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[299.162,244.553]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 7","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[3.997,1.037],[-0.474,-1.675],[0,0],[-1.289,0.925],[0,0],[0,0],[0.229,1.664],[0,0],[1.413,-0.814]],"o":[[-5.167,-2.07],[-1.702,-0.441],[0,0],[0.439,1.551],[0,0],[0,0],[1.61,0.567],[0,0],[-0.224,-1.631],[0,0]],"v":[[-0.115,-2.287],[-15.723,-7.197],[-18.444,-4.455],[-14.737,8.638],[-11.14,9.941],[1.207,1.082],[15.527,6.123],[18.511,3.753],[16.851,-8.326],[13.372,-10.059]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.607843160629,0.878431379795,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[310.287,221.893]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 8","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-2.958,-15.455],[15.825,-2.01],[2.958,15.455],[-15.825,2.01]],"o":[[2.958,15.455],[-15.825,2.01],[-2.958,-15.455],[15.825,-2.01]],"v":[[28.683,-0.671],[3.59,24.817],[-28.625,6.61],[-5.327,-25.014]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.831372559071,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[313.041,245.801]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 9","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[13.463,0.304],[3.569,-16.175],[8.726,22.117]],"o":[[-16.412,-0.371],[-4.698,21.292],[-5.826,-14.767]],"v":[[-0.627,-20.184],[-30.938,5.342],[30.441,2.378]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.831372559071,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[312.87,279.194]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 10","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[312.87,279.194]},"a":{"a":0,"k":[312.87,279.194]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[312.87,279.194]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[312.87,279.194]},"a":{"a":0,"k":[312.87,279.194]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-38.659,52.387],[-38.659,-52.387],[38.659,-52.387],[38.659,52.387]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.831372559071,0.078431375325,0.352941185236,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[625.524,533.285]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"fr2","sr":1,"ks":{"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":158,"s":[5]},{"t":220,"s":[-10]}]},"p":{"a":1,"k":[{"i":{"x":0.189,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[241.593,389.067,0],"to":[40.407,-10.067,0],"ti":[2.407,177.933,0]},{"t":210,"s":[340.593,137.067,0],"h":1}]},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":120,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":166,"s":[150,150,100]},{"t":210,"s":[0,0,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[6.53,0],[0,0],[0,-6.53],[0,0],[-6.53,0],[0,0],[0,0],[0,0],[0,0],[0,6.53],[0,0]],"o":[[0,0],[-6.53,0],[0,0],[0,6.53],[0,0],[0,0],[0,0],[0,0],[6.53,0],[0,0],[0,-6.53]],"v":[[41.835,-77.159],[-41.835,-77.159],[-53.658,-65.335],[-53.658,45.791],[-41.835,57.615],[-7.107,57.615],[12.438,77.159],[12.438,57.615],[41.835,57.615],[53.658,45.791],[53.658,-65.335]],"c":true}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.533333361149,0.72549021244,0.886274516582,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":166,"s":[5]},{"t":210,"s":[6],"h":1}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.533333361149,0.72549021244,0.886274516582,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[14]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":166,"s":[10]},{"t":210,"s":[14],"h":1}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 2","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"psi","parent":13,"sr":1,"ks":{"p":{"a":0,"k":[-8.477,0.779,0]},"a":{"a":0,"k":[240.555,427.964,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":24,"s":[{"i":[[0.755,0.64],[0,0],[0,0]],"o":[[-1.851,-1.57],[0,0],[0,0]],"v":[[5.227,-7.486],[-5.398,0.646],[3.989,7.658]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0.988,-0.063],[0,0],[0,0]],"o":[[-2.423,0.154],[0,0],[0,0]],"v":[[-2.143,-12.157],[-5.398,0.646],[3.989,7.658]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":36,"s":[{"i":[[-0.052,0.989],[0,0],[0,0]],"o":[[0.128,-2.424],[0,0],[0,0]],"v":[[8.44,1.204],[-5.398,0.646],[3.989,7.658]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":44,"s":[{"i":[[0.988,-0.063],[0,0],[0,0]],"o":[[-2.423,0.154],[0,0],[0,0]],"v":[[-2.143,-12.157],[-5.398,0.646],[3.989,7.658]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":56,"s":[{"i":[[0.755,0.64],[0,0],[0,0]],"o":[[-1.851,-1.57],[0,0],[0,0]],"v":[[5.227,-7.486],[-5.398,0.646],[3.989,7.658]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":210,"s":[{"i":[[0.755,0.64],[0,0],[0,0]],"o":[[-1.851,-1.57],[0,0],[0,0]],"v":[[5.227,-7.486],[-5.398,0.646],[3.989,7.658]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":216,"s":[{"i":[[0.988,-0.063],[0,0],[0,0]],"o":[[-2.423,0.154],[0,0],[0,0]],"v":[[-2.143,-12.157],[-5.398,0.646],[3.989,7.658]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":222,"s":[{"i":[[-0.052,0.989],[0,0],[0,0]],"o":[[0.128,-2.424],[0,0],[0,0]],"v":[[8.44,1.204],[-5.398,0.646],[3.989,7.658]],"c":true}]},{"t":230,"s":[{"i":[[0.755,0.64],[0,0],[0,0]],"o":[[-1.851,-1.57],[0,0],[0,0]],"v":[[5.227,-7.486],[-5.398,0.646],[3.989,7.658]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.741176486015,0.858823537827,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[259.56,412.034]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-0.67,0.729],[0,0],[0,0]],"o":[[1.643,-1.787],[0,0],[0,0]],"v":[[-5.734,-7.314],[5.814,-0.557],[-2.635,7.56]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.741176486015,0.858823537827,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[211.546,415.518]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.074,0],[0.925,1.278],[-0.672,0.485],[-0.487,-0.672],[-0.344,0.041],[-0.293,0.533],[-0.725,-0.397],[0.399,-0.727],[1.386,-0.086]],"o":[[-1.308,0],[-0.485,-0.671],[0.67,-0.484],[0.356,0.492],[0.333,-0.021],[0.398,-0.728],[0.726,0.398],[-0.803,1.46],[-0.073,0.005]],"v":[[-0.035,2.331],[-3.53,0.335],[-3.193,-1.76],[-1.099,-1.423],[0.001,-0.67],[1,-1.554],[3.037,-2.146],[3.629,-0.108],[0.186,2.324]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[238.665,436.122]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.074,0],[0.924,1.278],[-0.672,0.485],[-0.486,-0.673],[-0.332,0.007],[-0.293,0.532],[-0.726,-0.397],[0.399,-0.727],[1.386,-0.086]],"o":[[-1.308,0],[-0.486,-0.671],[0.67,-0.486],[0.356,0.492],[0.333,-0.021],[0.398,-0.727],[0.726,0.398],[-0.802,1.46],[-0.074,0.004]],"v":[[-0.035,2.331],[-3.53,0.335],[-3.194,-1.759],[-1.1,-1.423],[0.001,-0.67],[1,-1.554],[3.038,-2.146],[3.629,-0.109],[0.187,2.324]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[234.036,436.409]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[234.036,436.409]},"a":{"a":0,"k":[234.036,436.409]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 3","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-0.214,-3.446],[3.253,-0.202],[0.214,3.446],[-3.253,0.202]],"o":[[0.214,3.446],[-3.253,0.202],[-0.214,-3.446],[3.253,-0.202]],"v":[[5.889,-0.365],[0.387,6.239],[-5.889,0.365],[-0.387,-6.239]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[252.365,432.395]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-0.214,-3.446],[3.253,-0.202],[0.214,3.446],[-3.253,0.202]],"o":[[0.214,3.446],[-3.253,0.202],[-0.214,-3.446],[3.253,-0.202]],"v":[[5.889,-0.365],[0.387,6.239],[-5.889,0.365],[-0.387,-6.239]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[221.548,434.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[221.548,434.305]},"a":{"a":0,"k":[221.548,434.305]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 4","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[17.097,-1.06],[-0.963,-15.534],[-0.8,-2.242],[-6.573,11.764],[-19.074,-4.386],[0.208,3.352]],"o":[[-17.097,1.06],[0.153,2.471],[13.656,-3.072],[4.316,6.667],[0.999,-3.054],[-0.963,-15.534]],"v":[[-1.743,-18.533],[-30.956,11.513],[-29.501,18.599],[-1.004,-6.604],[29.716,17.336],[30.956,7.676]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.737254917622,0.78823530674,0.784313738346,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[236.911,423.017]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 5","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":24,"s":[{"i":[[0,0],[0.003,4.107],[2.613,-0.828],[2.616,-1.444]],"o":[[1.435,-10.171],[-0.002,-2.741],[-6.047,1.915],[0,0]],"v":[[8.828,13.248],[10.626,-9.199],[5.324,-13.056],[-10.626,-4.284]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[2.852,2.956],[1.308,-2.409],[2.616,-1.444]],"o":[[1.435,-10.171],[-1.903,-1.973],[-3.026,5.575],[0,0]],"v":[[8.828,13.248],[-0.117,-14.939],[-6.61,-14.037],[-10.626,-4.284]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":36,"s":[{"i":[[0,0],[-3.267,2.49],[2.241,1.578],[2.616,-1.444]],"o":[[1.435,-10.171],[2.18,-1.662],[-5.187,-3.652],[0,0]],"v":[[8.828,13.248],[15.552,3.322],[15.41,-3.232],[-10.626,-4.284]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":44,"s":[{"i":[[0,0],[2.852,2.956],[1.308,-2.409],[2.616,-1.444]],"o":[[1.435,-10.171],[-1.903,-1.973],[-3.026,5.575],[0,0]],"v":[[8.828,13.248],[-0.117,-14.939],[-6.61,-14.037],[-10.626,-4.284]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":56,"s":[{"i":[[0,0],[0.003,4.107],[2.613,-0.828],[2.616,-1.444]],"o":[[1.435,-10.171],[-0.002,-2.741],[-6.047,1.915],[0,0]],"v":[[8.828,13.248],[10.626,-9.199],[5.324,-13.056],[-10.626,-4.284]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":210,"s":[{"i":[[0,0],[0.003,4.107],[2.613,-0.828],[2.616,-1.444]],"o":[[1.435,-10.171],[-0.002,-2.741],[-6.047,1.915],[0,0]],"v":[[8.828,13.248],[10.626,-9.199],[5.324,-13.056],[-10.626,-4.284]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":216,"s":[{"i":[[0,0],[2.852,2.956],[1.308,-2.409],[2.616,-1.444]],"o":[[1.435,-10.171],[-1.903,-1.973],[-3.026,5.575],[0,0]],"v":[[8.828,13.248],[-0.117,-14.939],[-6.61,-14.037],[-10.626,-4.284]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":222,"s":[{"i":[[0,0],[-3.267,2.49],[2.241,1.578],[2.616,-1.444]],"o":[[1.435,-10.171],[2.18,-1.662],[-5.187,-3.652],[0,0]],"v":[[8.828,13.248],[15.552,3.322],[15.41,-3.232],[-10.626,-4.284]],"c":false}]},{"t":230,"s":[{"i":[[0,0],[0.003,4.107],[2.613,-0.828],[2.616,-1.444]],"o":[[1.435,-10.171],[-0.002,-2.741],[-6.047,1.915],[0,0]],"v":[[8.828,13.248],[10.626,-9.199],[5.324,-13.056],[-10.626,-4.284]],"c":false}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.737254917622,0.78823530674,0.784313738346,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[257.171,410.103]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0.504,4.076],[-2.696,-0.499],[-2.774,-1.109]],"o":[[-2.68,-9.916],[-0.337,-2.721],[6.238,1.154],[0,0]],"v":[[-6.276,13.302],[-10.832,-8.751],[-6.047,-13.233],[10.863,-6.498]],"c":false}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.737254917622,0.78823530674,0.784313738346,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[213.178,413.712]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[213.178,413.712]},"a":{"a":0,"k":[213.178,413.712]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 6","bm":0,"hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-0.963,-15.534],[17.097,-1.06],[0.963,15.534],[-17.097,1.06]],"o":[[0.963,15.534],[-17.097,1.06],[-0.963,-15.534],[17.097,-1.06]],"v":[[30.956,-1.919],[1.743,28.128],[-30.956,1.919],[-1.743,-28.128]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[236.911,432.611]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 7","bm":0,"hd":false},{"ty":"tr","p":{"a":0,"k":[236.911,432.611]},"a":{"a":0,"k":[236.911,432.611]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[13.16,-11.456],[-6.064,-9.208],[0,0]],"o":[[-11.976,-13.117],[-1.773,7.775],[0,0],[0,0]],"v":[[23.565,-6.254],[-22.749,-11.691],[-17.601,18.507],[23.565,18.507]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.737254917622,0.78823530674,0.784313738346,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[268.749,447.337]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[9.248,-20.638],[1.215,-5.838],[0,0]],"o":[[-16.591,-18.256],[-1.315,2.935],[0,0],[0,0]],"v":[[38.711,-4.521],[-32.813,-1.291],[-38.711,17.531],[38.711,17.531]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[254.859,449.87]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 3","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-52.387,-38.659],[52.387,-38.659],[52.387,38.659],[-52.387,38.659]],"c":true}},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109803922474,0.57647061348,0.552941203117,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[239.927,427.185]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 4","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"fr1","sr":1,"ks":{"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":46,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":226,"s":[-5]},{"t":288,"s":[10]}]},"p":{"a":1,"k":[{"i":{"x":0.189,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[241.593,389.067,0],"to":[40.407,-10.067,0],"ti":[2.407,177.933,0]},{"t":90,"s":[340.593,137.067,0],"h":1},{"i":{"x":0.189,"y":1},"o":{"x":0.333,"y":0},"t":180,"s":[241.593,389.067,0],"to":[40.407,-10.067,0],"ti":[2.407,177.933,0]},{"t":270,"s":[340.593,137.067,0],"h":1}]},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":45,"s":[150,150,100]},{"t":90,"s":[0,0,100],"h":1},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":180,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":225,"s":[150,150,100]},{"t":270,"s":[0,0,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-6.53],[0,0],[-6.53,0],[0,0],[0,6.53],[0,0],[0,0],[0,0],[0,0],[6.53,0],[0,0]],"o":[[0,0],[0,6.53],[0,0],[6.53,0],[0,0],[0,0],[0,0],[0,0],[0,-6.53],[0,0],[-6.53,0]],"v":[[-77.159,-41.835],[-77.159,41.835],[-65.335,53.658],[45.791,53.658],[57.615,41.835],[57.615,7.107],[77.159,-12.438],[57.615,-12.438],[57.615,-41.835],[45.791,-53.658],[-65.335,-53.658]],"c":true}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.533333361149,0.72549021244,0.886274516582,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":46,"s":[5]},{"t":90,"s":[6],"h":1},{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":226,"s":[5]},{"t":270,"s":[6],"h":1}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.533333361149,0.72549021244,0.886274516582,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[14]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":46,"s":[10]},{"t":90,"s":[14],"h":1},{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[14]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":226,"s":[10]},{"t":270,"s":[14],"h":1}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 2","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"bl","parent":15,"sr":1,"ks":{"p":{"a":0,"k":[2.497,-9.912,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0.745,3.588],[1.603,-0.644],[-0.745,-3.588],[-1.603,0.644]],"o":[[-0.745,-3.588],[-1.603,0.644],[0.745,3.588],[1.603,-0.644]],"v":[[2.902,-1.166],[-1.348,-6.497],[-2.902,1.166],[1.348,6.497]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":66,"s":[{"i":[[0.868,0.806],[1.563,-0.392],[-0.868,-0.806],[-1.563,0.392]],"o":[[-0.868,-0.806],[-1.563,0.392],[0.868,0.806],[1.563,-0.392]],"v":[[2.042,12.871],[-2.36,12.121],[-3.618,14.29],[0.784,15.039]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":72,"s":[{"i":[[0.745,3.588],[1.603,-0.644],[-0.745,-3.588],[-1.603,0.644]],"o":[[-0.745,-3.588],[-1.603,0.644],[0.745,3.588],[1.603,-0.644]],"v":[[2.902,-1.166],[-1.348,-6.497],[-2.902,1.166],[1.348,6.497]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[{"i":[[0.745,3.588],[1.603,-0.644],[-0.745,-3.588],[-1.603,0.644]],"o":[[-0.745,-3.588],[-1.603,0.644],[0.745,3.588],[1.603,-0.644]],"v":[[2.902,-1.166],[-1.348,-6.497],[-2.902,1.166],[1.348,6.497]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":116,"s":[{"i":[[0.868,0.806],[1.563,-0.392],[-0.868,-0.806],[-1.563,0.392]],"o":[[-0.868,-0.806],[-1.563,0.392],[0.868,0.806],[1.563,-0.392]],"v":[[2.042,12.871],[-2.36,12.121],[-3.618,14.29],[0.784,15.039]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":122,"s":[{"i":[[0.745,3.588],[1.603,-0.644],[-0.745,-3.588],[-1.603,0.644]],"o":[[-0.745,-3.588],[-1.603,0.644],[0.745,3.588],[1.603,-0.644]],"v":[[2.902,-1.166],[-1.348,-6.497],[-2.902,1.166],[1.348,6.497]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":168,"s":[{"i":[[0.745,3.588],[1.603,-0.644],[-0.745,-3.588],[-1.603,0.644]],"o":[[-0.745,-3.588],[-1.603,0.644],[0.745,3.588],[1.603,-0.644]],"v":[[2.902,-1.166],[-1.348,-6.497],[-2.902,1.166],[1.348,6.497]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":174,"s":[{"i":[[0.868,0.806],[1.563,-0.392],[-0.868,-0.806],[-1.563,0.392]],"o":[[-0.868,-0.806],[-1.563,0.392],[0.868,0.806],[1.563,-0.392]],"v":[[2.042,12.871],[-2.36,12.121],[-3.618,14.29],[0.784,15.039]],"c":true}]},{"t":180,"s":[{"i":[[0.745,3.588],[1.603,-0.644],[-0.745,-3.588],[-1.603,0.644]],"o":[[-0.745,-3.588],[-1.603,0.644],[0.745,3.588],[1.603,-0.644]],"v":[[2.902,-1.166],[-1.348,-6.497],[-2.902,1.166],[1.348,6.497]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":60,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":66,"s":[0,0,0,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":72,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":110,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":116,"s":[0,0,0,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":122,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":168,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":174,"s":[0,0,0,1]},{"t":180,"s":[1,1,1,1]}]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"eye","parent":21,"sr":1,"ks":{"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":60,"s":[29.102,-39.909,0],"to":[0,0,0],"ti":[0,0,0]},{"t":74,"s":[43.176,-40.09,0],"h":1},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[43.176,-40.09,0],"to":[0,0,0],"ti":[0,0,0]},{"t":120,"s":[29.102,-39.909,0]}]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[100,100,100]},{"t":74,"s":[170,100,100],"h":1},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":106,"s":[170,100,100]},{"t":120,"s":[100,100,100]}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[-5.329,2.149],[-1.333,-11.884],[5.329,-2.149],[1.333,11.884]],"o":[[5.329,-2.149],[1.333,11.884],[-5.329,2.149],[-1.333,-11.884]],"v":[[-2.415,-21.518],[9.65,-3.892],[2.414,21.518],[-9.65,3.892]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":66,"s":[{"i":[[-5.746,0.037],[-0.346,-4.338],[5.746,-0.037],[-3,3.035]],"o":[[5.746,-0.037],[0.171,2.14],[-5.746,0.037],[1.584,-1.602]],"v":[[0.501,2.973],[9.148,3.728],[-0.457,8.139],[-9.368,0.899]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":72,"s":[{"i":[[-5.329,2.149],[-1.333,-11.884],[5.329,-2.149],[1.333,11.884]],"o":[[5.329,-2.149],[1.333,11.884],[-5.329,2.149],[-1.333,-11.884]],"v":[[-2.415,-21.518],[9.65,-3.892],[2.414,21.518],[-9.65,3.892]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[{"i":[[-5.329,2.149],[-1.333,-11.884],[5.329,-2.149],[1.333,11.884]],"o":[[5.329,-2.149],[1.333,11.884],[-5.329,2.149],[-1.333,-11.884]],"v":[[-2.415,-21.518],[9.65,-3.892],[2.414,21.518],[-9.65,3.892]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":116,"s":[{"i":[[-5.746,0.037],[-0.346,-4.338],[5.746,-0.037],[-3,3.035]],"o":[[5.746,-0.037],[0.171,2.14],[-5.746,0.037],[1.584,-1.602]],"v":[[0.501,2.973],[9.148,3.728],[-0.457,8.139],[-9.368,0.899]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":122,"s":[{"i":[[-5.329,2.149],[-1.333,-11.884],[5.329,-2.149],[1.333,11.884]],"o":[[5.329,-2.149],[1.333,11.884],[-5.329,2.149],[-1.333,-11.884]],"v":[[-2.415,-21.518],[9.65,-3.892],[2.414,21.518],[-9.65,3.892]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":168,"s":[{"i":[[-5.329,2.149],[-1.333,-11.884],[5.329,-2.149],[1.333,11.884]],"o":[[5.329,-2.149],[1.333,11.884],[-5.329,2.149],[-1.333,-11.884]],"v":[[-2.415,-21.518],[9.65,-3.892],[2.414,21.518],[-9.65,3.892]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":174,"s":[{"i":[[-5.746,0.037],[-0.346,-4.338],[5.746,-0.037],[-3,3.035]],"o":[[5.746,-0.037],[0.171,2.14],[-5.746,0.037],[1.584,-1.602]],"v":[[0.501,2.973],[9.148,3.728],[-0.457,8.139],[-9.368,0.899]],"c":true}]},{"t":180,"s":[{"i":[[-5.329,2.149],[-1.333,-11.884],[5.329,-2.149],[1.333,11.884]],"o":[[5.329,-2.149],[1.333,11.884],[-5.329,2.149],[-1.333,-11.884]],"v":[[-2.415,-21.518],[9.65,-3.892],[2.414,21.518],[-9.65,3.892]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":66,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":110,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":116,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":122,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":168,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":174,"s":[5]},{"t":180,"s":[0]}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"wing 2","parent":25,"sr":1,"ks":{"p":{"a":0,"k":[104.076,-54.491,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[10.371,-16.446],[30.958,-10.917]],"o":[[9.508,-0.423],[-8.67,13.749],[0,0]],"v":[[11.474,19.5],[-25.804,13.181],[-27.588,69.626]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":70,"s":[{"i":[[0,0],[10.371,-16.446],[30.958,-10.917]],"o":[[9.508,-0.423],[-8.67,13.749],[0,0]],"v":[[11.474,19.5],[-55.628,21.515],[-27.588,69.626]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":84,"s":[{"i":[[0,0],[10.371,-16.446],[30.958,-10.917]],"o":[[9.508,-0.423],[-8.67,13.749],[0,0]],"v":[[11.474,19.5],[-16.465,-45.243],[-27.588,69.626]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[0,0],[10.371,-16.446],[30.958,-10.917]],"o":[[9.508,-0.423],[-8.67,13.749],[0,0]],"v":[[11.474,19.5],[-55.628,21.515],[-27.588,69.626]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":132,"s":[{"i":[[0,0],[10.371,-16.446],[30.958,-10.917]],"o":[[9.508,-0.422],[-8.67,13.749],[0,0]],"v":[[11.474,19.5],[-31.405,16.983],[-27.588,69.626]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":146,"s":[{"i":[[0,0],[19.367,1.721],[-4.381,-42.07]],"o":[[-8.631,-14.492],[-15.358,-1.365],[0,0]],"v":[[30.62,13.31],[29.08,-64.363],[-7.136,20.552]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":156,"s":[{"i":[[0,0],[19.367,1.721],[-4.381,-42.07]],"o":[[-8.631,-14.492],[-15.358,-1.365],[0,0]],"v":[[30.62,13.31],[29.08,-64.363],[-7.136,20.552]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":176,"s":[{"i":[[0,0],[10.371,-16.446],[30.958,-10.917]],"o":[[9.508,-0.422],[-8.67,13.749],[0,0]],"v":[[11.474,19.5],[-20.879,27.948],[-27.588,69.626]],"c":false}]},{"i":{"x":0.07,"y":1},"o":{"x":0.333,"y":0},"t":190,"s":[{"i":[[0,0],[-9.329,13.311],[30.958,-10.917]],"o":[[9.508,-0.423],[9.329,-13.311],[0,0]],"v":[[-27.561,-9.009],[22.817,-24.271],[-1.449,26.399]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.93,"y":0},"t":204,"s":[{"i":[[0,0],[-9.329,13.311],[37.618,-36.066]],"o":[[12.528,-21.492],[9.329,-13.311],[0,0]],"v":[[-27.561,-9.009],[30.269,-80],[-1.449,26.399]],"c":false}]},{"t":218,"s":[{"i":[[0,0],[-9.329,13.311],[30.958,-10.917]],"o":[[9.508,-0.423],[9.329,-13.311],[0,0]],"v":[[-48.175,12.921],[-7.996,2.643],[-22.063,48.329]],"c":false}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.980392158031,0.564705908298,0.086274512112,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.835294127464,0.152941182256,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":178,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"bl","parent":18,"sr":1,"ks":{"p":{"a":0,"k":[7.318,-9.613,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[-0.871,-3.609],[2.903,-0.658],[0.871,3.609],[-2.903,0.658]],"o":[[0.871,3.609],[-2.903,0.658],[-0.871,-3.609],[2.903,-0.658]],"v":[[5.256,-1.192],[1.577,6.534],[-5.256,1.192],[-1.577,-6.534]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":66,"s":[{"i":[[-0.871,-0.963],[2.903,-0.176],[0.871,0.963],[-2.903,0.176]],"o":[[0.871,0.963],[-2.903,0.176],[-0.871,-0.963],[2.903,-0.176]],"v":[[4.247,9.202],[0.568,11.264],[-6.265,9.838],[-2.586,7.776]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":72,"s":[{"i":[[-0.871,-3.609],[2.903,-0.658],[0.871,3.609],[-2.903,0.658]],"o":[[0.871,3.609],[-2.903,0.658],[-0.871,-3.609],[2.903,-0.658]],"v":[[5.256,-1.192],[1.577,6.534],[-5.256,1.192],[-1.577,-6.534]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[{"i":[[-0.871,-3.609],[2.903,-0.658],[0.871,3.609],[-2.903,0.658]],"o":[[0.871,3.609],[-2.903,0.658],[-0.871,-3.609],[2.903,-0.658]],"v":[[5.256,-1.192],[1.577,6.534],[-5.256,1.192],[-1.577,-6.534]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":116,"s":[{"i":[[-0.871,-0.963],[2.903,-0.176],[0.871,0.963],[-2.903,0.176]],"o":[[0.871,0.963],[-2.903,0.176],[-0.871,-0.963],[2.903,-0.176]],"v":[[4.247,9.202],[0.568,11.264],[-6.265,9.838],[-2.586,7.776]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":122,"s":[{"i":[[-0.871,-3.609],[2.903,-0.658],[0.871,3.609],[-2.903,0.658]],"o":[[0.871,3.609],[-2.903,0.658],[-0.871,-3.609],[2.903,-0.658]],"v":[[5.256,-1.192],[1.577,6.534],[-5.256,1.192],[-1.577,-6.534]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":168,"s":[{"i":[[-0.871,-3.609],[2.903,-0.658],[0.871,3.609],[-2.903,0.658]],"o":[[0.871,3.609],[-2.903,0.658],[-0.871,-3.609],[2.903,-0.658]],"v":[[5.256,-1.192],[1.577,6.534],[-5.256,1.192],[-1.577,-6.534]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":174,"s":[{"i":[[-0.871,-0.963],[2.903,-0.176],[0.871,0.963],[-2.903,0.176]],"o":[[0.871,0.963],[-2.903,0.176],[-0.871,-0.963],[2.903,-0.176]],"v":[[4.247,9.202],[0.568,11.264],[-6.265,9.838],[-2.586,7.776]],"c":true}]},{"t":180,"s":[{"i":[[-0.871,-3.609],[2.903,-0.658],[0.871,3.609],[-2.903,0.658]],"o":[[0.871,3.609],[-2.903,0.658],[-0.871,-3.609],[2.903,-0.658]],"v":[[5.256,-1.192],[1.577,6.534],[-5.256,1.192],[-1.577,-6.534]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":60,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":66,"s":[0,0,0,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":72,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":110,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":116,"s":[0,0,0,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":122,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":168,"s":[1,1,1,1]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":174,"s":[0,0,0,1]},{"t":180,"s":[1,1,1,1]}]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"eye","parent":21,"sr":1,"ks":{"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":60,"s":[-43.236,-37.669,0],"to":[0,0,0],"ti":[0,0,0]},{"t":74,"s":[-48.207,-37.13,0],"h":1},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[-48.207,-37.13,0],"to":[0,0,0],"ti":[0,0,0]},{"t":120,"s":[-43.236,-37.669,0]}]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[100,100,100]},{"t":74,"s":[100,100,100],"h":1},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":106,"s":[100,100,100]},{"t":120,"s":[100,100,100]}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[10.448,2.012],[2.294,-11.916],[-10.448,-2.012],[-2.294,11.916]],"o":[[-10.448,-2.012],[-2.294,11.916],[10.448,2.012],[2.294,-11.916]],"v":[[4.154,-21.576],[-18.917,-3.642],[-4.154,21.576],[18.917,3.642]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":66,"s":[{"i":[[10.448,2.012],[1.578,-1.407],[-10.448,-2.012],[1.414,4.375]],"o":[[-10.448,-2.012],[-3.477,3.099],[10.448,2.012],[-1.161,-3.591]],"v":[[-0.145,-3.172],[-17.835,-6.762],[-1.135,4.61],[19.37,-2.921]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":72,"s":[{"i":[[10.448,2.012],[2.294,-11.916],[-10.448,-2.012],[-2.294,11.916]],"o":[[-10.448,-2.012],[-2.294,11.916],[10.448,2.012],[2.294,-11.916]],"v":[[4.154,-21.576],[-18.917,-3.642],[-4.154,21.576],[18.917,3.642]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[{"i":[[10.448,2.012],[2.294,-11.916],[-10.448,-2.012],[-2.294,11.916]],"o":[[-10.448,-2.012],[-2.294,11.916],[10.448,2.012],[2.294,-11.916]],"v":[[4.154,-21.576],[-18.917,-3.642],[-4.154,21.576],[18.917,3.642]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":116,"s":[{"i":[[10.448,2.012],[1.578,-1.407],[-10.448,-2.012],[1.414,4.375]],"o":[[-10.448,-2.012],[-3.477,3.099],[10.448,2.012],[-1.161,-3.591]],"v":[[-0.145,-3.172],[-17.835,-6.762],[-1.135,4.61],[19.37,-2.921]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":122,"s":[{"i":[[10.448,2.012],[2.294,-11.916],[-10.448,-2.012],[-2.294,11.916]],"o":[[-10.448,-2.012],[-2.294,11.916],[10.448,2.012],[2.294,-11.916]],"v":[[4.154,-21.576],[-18.917,-3.642],[-4.154,21.576],[18.917,3.642]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":168,"s":[{"i":[[10.448,2.012],[2.294,-11.916],[-10.448,-2.012],[-2.294,11.916]],"o":[[-10.448,-2.012],[-2.294,11.916],[10.448,2.012],[2.294,-11.916]],"v":[[4.154,-21.576],[-18.917,-3.642],[-4.154,21.576],[18.917,3.642]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":174,"s":[{"i":[[10.448,2.012],[1.578,-1.407],[-10.448,-2.012],[1.414,4.375]],"o":[[-10.448,-2.012],[-3.477,3.099],[10.448,2.012],[-1.161,-3.591]],"v":[[-0.145,-3.172],[-17.835,-6.762],[-1.135,4.61],[19.37,-2.921]],"c":true}]},{"t":180,"s":[{"i":[[10.448,2.012],[2.294,-11.916],[-10.448,-2.012],[-2.294,11.916]],"o":[[-10.448,-2.012],[-2.294,11.916],[10.448,2.012],[2.294,-11.916]],"v":[[4.154,-21.576],[-18.917,-3.642],[-4.154,21.576],[18.917,3.642]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":66,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":110,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":116,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":122,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":168,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":174,"s":[5]},{"t":180,"s":[0]}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"mouth","parent":21,"sr":1,"ks":{"p":{"a":0,"k":[3.922,12.448,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":64,"s":[{"i":[[0,0],[23.484,7.114],[-6.691,1.491]],"o":[[-11.53,4.212],[7.115,6.044],[6.691,-1.491]],"v":[[26.438,-3.428],[-26.438,0.287],[7.667,3.014]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[0,0],[23.484,7.114],[-6.691,1.491]],"o":[[-11.53,4.212],[7.115,6.044],[6.691,-1.491]],"v":[[26.438,-3.428],[-26.438,0.287],[6.76,10.287]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":156,"s":[{"i":[[0,0],[23.484,7.114],[-6.691,1.491]],"o":[[-11.53,4.212],[7.115,6.044],[6.691,-1.491]],"v":[[26.438,-3.428],[-26.438,0.287],[6.76,10.287]],"c":true}]},{"t":166,"s":[{"i":[[0,0],[23.484,7.114],[-6.691,1.491]],"o":[[-11.53,4.212],[7.115,6.044],[6.691,-1.491]],"v":[[26.438,-3.428],[-26.438,0.287],[7.667,3.014]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.490196079016,0.035294119269,0.035294119269,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"beak_bl","parent":21,"sr":1,"ks":{"o":{"a":0,"k":33},"p":{"a":0,"k":[-3.932,-5.725,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-1.255,4.047]],"o":[[3.344,-4.352],[0,0]],"v":[[-3.876,7.53],[3.876,-7.53]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"beak","parent":23,"sr":1,"ks":{"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[-26.602]},{"t":74,"s":[6.185],"h":1},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":106,"s":[6.185]},{"t":120,"s":[-26.602]}]},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":60,"s":[75.575,9.259,0],"to":[0,0,0],"ti":[21.31,-1.698,0]},{"t":74,"s":[30.623,51.968,0],"h":1},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[30.623,51.968,0],"to":[21.31,-1.698,0],"ti":[0,0,0]},{"t":120,"s":[75.575,9.259,0]}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[10.117,0.332],[6.289,-0.442],[13.575,-2.377],[-12.443,-3.229],[-7.925,4.546],[0.765,4.154]],"o":[[-18.721,-0.615],[-6.899,0.485],[-14.368,2.516],[24.622,6.389],[7.048,-4.043],[10.405,-0.023]],"v":[[30.395,-4.093],[-0.58,-29.159],[-27.045,0.215],[-26.963,25.076],[20.053,24.984],[28.209,10.679]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[10.122,0.134],[6.289,-0.442],[13.575,-2.377],[-11.871,-4.932],[-11.396,2.056],[-5.971,7.718]],"o":[[-26.852,-0.356],[-6.899,0.485],[-14.368,2.516],[13.169,5.472],[12.793,-2.308],[10.405,-0.023]],"v":[[38.254,-5.207],[2.555,-29.237],[-27.045,0.215],[-26.963,25.076],[11.391,35.411],[40.101,13.319]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[10.122,0.134],[6.289,-0.442],[13.575,-2.377],[-11.871,-4.932],[-11.396,2.056],[-5.971,7.718]],"o":[[-26.852,-0.356],[-6.899,0.485],[-14.368,2.516],[13.169,5.472],[12.793,-2.308],[10.405,-0.023]],"v":[[38.254,-5.207],[2.555,-29.237],[-27.045,0.215],[-26.963,25.076],[11.391,35.411],[40.101,13.319]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[10.117,0.332],[6.289,-0.442],[13.575,-2.377],[-11.958,-4.719],[-7.925,4.546],[0.765,4.154]],"o":[[-18.721,-0.615],[-6.899,0.485],[-14.368,2.516],[24.074,9.5],[7.048,-4.043],[10.405,-0.023]],"v":[[30.395,-4.093],[-0.58,-29.159],[-27.045,0.215],[-26.963,25.076],[13.676,32.694],[28.209,10.679]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":156,"s":[{"i":[[10.117,0.332],[6.289,-0.442],[13.575,-2.377],[-11.958,-4.719],[-7.925,4.546],[0.765,4.154]],"o":[[-18.721,-0.615],[-6.899,0.485],[-14.368,2.516],[24.074,9.5],[7.048,-4.043],[10.405,-0.023]],"v":[[30.395,-4.093],[-0.58,-29.159],[-27.045,0.215],[-26.963,25.076],[13.676,32.694],[28.209,10.679]],"c":true}]},{"t":166,"s":[{"i":[[10.117,0.332],[6.289,-0.442],[13.575,-2.377],[-12.443,-3.229],[-7.925,4.546],[0.765,4.154]],"o":[[-18.721,-0.615],[-6.899,0.485],[-14.368,2.516],[24.622,6.389],[7.048,-4.043],[10.405,-0.023]],"v":[[30.395,-4.093],[-0.58,-29.159],[-27.045,0.215],[-26.963,25.076],[20.053,24.984],[28.209,10.679]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.811764717102,0.207843139768,0.007843137719,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":1,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.364705890417,0.121568627656,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"head_bl","parent":23,"sr":1,"ks":{"p":{"a":0,"k":[-54.395,-36.749,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-16.703,11.436],[-8.863,2.813]],"o":[[6.46,-17.994],[7.466,-5.111],[0,0]],"v":[[-30.23,28.947],[5.637,-16.907],[30.23,-28.947]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":50}},{"n":"g","nm":"gap","v":{"a":0,"k":20}},{"n":"o","nm":"offset","v":{"a":0,"k":0}}],"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":60,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":84,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":96,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":132,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":156,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":168,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":192,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":204,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":216,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":228,"s":[5]},{"t":240,"s":[5]}]},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":60,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":84,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":96,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":132,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":156,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":168,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[95]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":192,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":204,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":216,"s":[95]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":228,"s":[100]},{"t":240,"s":[100]}]},"o":{"a":0,"k":0},"m":1,"nm":"Trim Paths 1","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"head","parent":25,"sr":1,"ks":{"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.298],"y":[0]},"t":74,"s":[-4.573]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":106,"s":[-4.573]},{"t":120,"s":[0]}]},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[-0.871,-31.973,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[-3.756,-31.973,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[-3.756,-31.973,0],"to":[0,0,0],"ti":[0,0,0]},{"t":120,"s":[-0.871,-31.973,0]}]},"a":{"a":0,"k":[0,87.265,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[1.469,25.441],[60.458,-3.491],[-3.121,-54.046],[-19.474,-14.322]],"o":[[17.925,-16.604],[-3.121,-54.046],[-60.457,3.491],[1.473,25.51],[0,0]],"v":[[83.336,78.198],[109.469,13.834],[-6.191,-87.094],[-109.465,26.476],[-76.286,87.265]],"c":false}},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.980392158031,0.564705908298,0.086274512112,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.835294127464,0.152941182256,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":24,"ty":3,"nm":"NULL CONTROL","sr":1,"ks":{"o":{"a":0,"k":0},"p":{"a":0,"k":[147.145,504.021,0]},"a":{"a":0,"k":[60,60,0]},"s":{"a":0,"k":[114,114,100]}},"ao":0,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":25,"ty":4,"nm":"body","parent":24,"sr":1,"ks":{"p":{"a":0,"k":[60,60,0]},"a":{"a":0,"k":[0,67.25,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":74,"s":[104,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":88,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":120,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":134,"s":[104,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":148,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":180,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":194,"s":[104,96,100]},{"t":208,"s":[100,100,100]}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[4.471,-22.92],[-13.036,-8.849],[-4.695,51.815],[25.492,12.62]],"o":[[-36.71,11.379],[-21.049,11.071],[39.352,26.711],[3.908,-43.129],[0,0]],"v":[[-53.963,-48.458],[-103.547,8.731],[-103.095,48.658],[115.961,25.945],[65.153,-67.25]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":74,"s":[{"i":[[0,0],[4.471,-22.92],[-13.036,-8.849],[-4.695,51.815],[25.492,12.62]],"o":[[-23.581,22.457],[-5.247,20.477],[39.352,26.711],[3.908,-43.129],[0,0]],"v":[[-78.001,-53.145],[-110.278,7.168],[-104.537,48.837],[113.557,25.841],[62.749,-67.355]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":106,"s":[{"i":[[0,0],[4.471,-22.92],[-13.036,-8.849],[-4.695,51.815],[25.492,12.62]],"o":[[-23.581,22.457],[-5.247,20.477],[39.352,26.711],[3.908,-43.129],[0,0]],"v":[[-78.001,-53.145],[-110.278,7.168],[-104.537,48.837],[113.557,25.841],[62.749,-67.355]],"c":false}]},{"t":120,"s":[{"i":[[0,0],[4.471,-22.92],[-13.036,-8.849],[-4.695,51.815],[25.492,12.62]],"o":[[-36.71,11.379],[-21.049,11.071],[39.352,26.711],[3.908,-43.129],[0,0]],"v":[[-53.963,-48.458],[-103.547,8.731],[-103.095,48.658],[115.961,25.945],[65.153,-67.25]],"c":false}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.980392158031,0.564705908298,0.086274512112,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.835294127464,0.152941182256,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":26,"ty":4,"nm":"wing","parent":25,"sr":1,"ks":{"p":{"a":0,"k":[104.076,-54.491,0]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.07,"y":1},"o":{"x":0.333,"y":0},"t":70,"s":[{"i":[[0,0],[-9.329,13.311],[30.958,-10.917]],"o":[[9.508,-0.423],[9.329,-13.311],[0,0]],"v":[[-48.175,12.921],[-7.996,2.643],[-22.063,48.329]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.93,"y":0},"t":84,"s":[{"i":[[0,0],[-16.971,3.715],[33.447,-30.233]],"o":[[31.71,-21.793],[3.469,-0.76],[0,0]],"v":[[-37.134,22.38],[21.131,-26.948],[-11.023,57.788]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":98,"s":[{"i":[[0,0],[-9.329,13.311],[30.958,-10.917]],"o":[[9.508,-0.423],[9.329,-13.311],[0,0]],"v":[[-48.175,12.921],[2.203,-2.341],[-22.063,48.329]],"c":false}]},{"i":{"x":0.07,"y":1},"o":{"x":0.333,"y":0},"t":130,"s":[{"i":[[0,0],[-9.329,13.311],[30.958,-10.917]],"o":[[9.508,-0.423],[9.329,-13.311],[0,0]],"v":[[-48.175,12.921],[2.203,-2.341],[-22.063,48.329]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.93,"y":0},"t":144,"s":[{"i":[[0,0],[-9.329,13.311],[37.618,-36.066]],"o":[[12.528,-21.492],[9.329,-13.311],[0,0]],"v":[[-27.561,-9.009],[30.269,-80],[-1.449,26.399]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":158,"s":[{"i":[[0,0],[-9.329,13.311],[30.958,-10.917]],"o":[[9.508,-0.423],[9.329,-13.311],[0,0]],"v":[[-27.561,-9.009],[22.817,-24.271],[-1.449,26.399]],"c":false}]},{"i":{"x":0.46,"y":1},"o":{"x":0.333,"y":0},"t":198,"s":[{"i":[[0,0],[-9.329,13.311],[30.958,-10.917]],"o":[[9.508,-0.423],[9.329,-13.311],[0,0]],"v":[[-27.561,-9.009],[22.817,-24.271],[-1.449,26.399]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.93,"y":0},"t":214,"s":[{"i":[[0,0],[-9.329,13.311],[37.618,-36.066]],"o":[[12.528,-21.492],[9.329,-13.311],[0,0]],"v":[[-27.561,-9.009],[30.269,-80],[-1.449,26.399]],"c":false}]},{"t":238,"s":[{"i":[[0,0],[-9.329,13.311],[30.958,-10.917]],"o":[[9.508,-0.423],[9.329,-13.311],[0,0]],"v":[[-48.175,12.921],[-7.996,2.643],[-22.063,48.329]],"c":false}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.980392158031,0.564705908298,0.086274512112,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.835294127464,0.152941182256,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false}],"ip":178,"op":300,"st":0,"bm":0},{"ddd":0,"ind":27,"ty":4,"nm":"CLOUD","sr":1,"ks":{"p":{"a":0,"k":[322.393,112.298,0]},"a":{"a":0,"k":[322.393,108.298,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":66,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":88,"s":[103,103,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":106,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":126,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":148,"s":[103,103,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":166,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":186,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":208,"s":[103,103,100]},{"t":226,"s":[100,100,100]}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[22.148,-85.626],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-171.79,37.239],[-109.501,-25.05],[-109.493,-25.05],[73.2,-49.699],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76.363,"s":[{"i":[[0,0],[0,36.011],[-36.011,0],[-0.003,0],[-25.773,-83.517],[0,-48.038],[39.514,0]],"o":[[-36.011,0],[0,-36.011],[0.003,0],[23.185,-89.634],[45.97,-14.045],[0,39.514],[0,0]],"v":[[-110.538,99.527],[-175.742,34.323],[-110.538,-30.881],[-110.53,-30.881],[70.223,-40.448],[162.701,27.98],[91.154,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":92.729,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[21.417,-69.153],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-177.496,37.038],[-108.464,-32.312],[-108.455,-32.312],[72.681,-54.368],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":109.09,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[22.148,-85.626],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-171.79,37.239],[-109.501,-25.05],[-109.493,-25.05],[73.2,-49.699],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":125.453,"s":[{"i":[[0,0],[0,36.011],[-36.011,0],[-0.003,0],[-25.773,-83.517],[0,-48.038],[39.514,0]],"o":[[-36.011,0],[0,-36.011],[0.003,0],[23.185,-89.634],[45.97,-14.045],[0,39.514],[0,0]],"v":[[-110.538,99.527],[-175.742,34.323],[-110.538,-30.881],[-110.53,-30.881],[70.223,-40.448],[162.701,27.98],[91.154,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":141.818,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[21.417,-69.153],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-177.496,37.038],[-108.464,-32.312],[-108.455,-32.312],[72.681,-54.368],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":158.182,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[22.148,-85.626],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-171.79,37.239],[-109.501,-25.05],[-109.493,-25.05],[73.2,-49.699],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":174.545,"s":[{"i":[[0,0],[0,36.011],[-36.011,0],[-0.003,0],[-25.773,-83.517],[0,-48.038],[39.514,0]],"o":[[-36.011,0],[0,-36.011],[0.003,0],[23.185,-89.634],[45.97,-14.045],[0,39.514],[0,0]],"v":[[-110.538,99.527],[-175.742,34.323],[-110.538,-30.881],[-110.53,-30.881],[70.223,-40.448],[162.701,27.98],[91.154,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":190.908,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[21.417,-69.153],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-177.496,37.038],[-108.464,-32.312],[-108.455,-32.312],[72.681,-54.368],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":207.271,"s":[{"i":[[0,0],[0,36.011],[-36.011,0],[-0.003,0],[-25.773,-83.517],[0,-48.038],[39.514,0]],"o":[[-36.011,0],[0,-36.011],[0.003,0],[23.185,-89.634],[45.97,-14.045],[0,39.514],[0,0]],"v":[[-110.538,99.527],[-175.742,34.323],[-110.538,-30.881],[-110.53,-30.881],[70.223,-40.448],[162.701,27.98],[91.154,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":223.637,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[21.417,-69.153],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-177.496,37.038],[-108.464,-32.312],[-108.455,-32.312],[72.681,-54.368],[171.79,23.252],[95.514,99.527]],"c":true}]},{"t":240,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[22.148,-85.626],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-171.79,37.239],[-109.501,-25.05],[-109.493,-25.05],[73.2,-49.699],[171.79,23.252],[95.514,99.527]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.533333361149,0.72549021244,0.886274516582,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"tr","p":{"a":0,"k":[322.393,108.298]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 1","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[-63.484,-9.65],[-22.506,-80.734],[-12.735,0],[83.688,0]],"o":[[-51.386,0.347],[10.251,-83.234],[9.298,-7.295],[72.437,0],[0,0]],"v":[[-114.111,76.947],[-94.893,-9.622],[55.779,-20.843],[89.521,-32.501],[89.521,76.947]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76.363,"s":[{"i":[[0,0],[-66.455,-10.102],[-8.244,-86.04],[-11.946,0],[78.5,0]],"o":[[-53.792,0.363],[10.731,-87.13],[8.722,-6.843],[67.947,0],[0,0]],"v":[[-115.743,75.255],[-95.625,-15.366],[54.383,-12.541],[86.034,-23.476],[86.034,79.187]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":92.729,"s":[{"i":[[0,0],[-63.484,-9.65],[-22.506,-80.734],[-12.735,0],[83.688,0]],"o":[[-51.386,0.347],[18.024,-66.353],[9.298,-7.295],[72.437,0],[0,0]],"v":[[-114.111,76.947],[-93.855,-16.885],[55.779,-20.843],[89.521,-32.501],[89.521,76.947]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":109.09,"s":[{"i":[[0,0],[-63.484,-9.65],[-22.506,-80.734],[-12.735,0],[83.688,0]],"o":[[-51.386,0.347],[10.251,-83.234],[9.298,-7.295],[72.437,0],[0,0]],"v":[[-114.111,76.947],[-94.893,-9.622],[55.779,-20.843],[89.521,-32.501],[89.521,76.947]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":125.453,"s":[{"i":[[0,0],[-66.455,-10.102],[-8.244,-86.04],[-11.946,0],[78.5,0]],"o":[[-53.792,0.363],[10.731,-87.13],[8.722,-6.843],[67.947,0],[0,0]],"v":[[-115.743,75.255],[-95.625,-15.366],[54.383,-12.541],[86.034,-23.476],[86.034,79.187]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":141.818,"s":[{"i":[[0,0],[-63.484,-9.65],[-22.506,-80.734],[-12.735,0],[83.688,0]],"o":[[-51.386,0.347],[18.024,-66.353],[9.298,-7.295],[72.437,0],[0,0]],"v":[[-114.111,76.947],[-93.855,-16.885],[55.779,-20.843],[89.521,-32.501],[89.521,76.947]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":158.182,"s":[{"i":[[0,0],[-63.484,-9.65],[-22.506,-80.734],[-12.735,0],[83.688,0]],"o":[[-51.386,0.347],[10.251,-83.234],[9.298,-7.295],[72.437,0],[0,0]],"v":[[-114.111,76.947],[-94.893,-9.622],[55.779,-20.843],[89.521,-32.501],[89.521,76.947]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":174.545,"s":[{"i":[[0,0],[-66.455,-10.102],[-8.244,-86.04],[-11.946,0],[78.5,0]],"o":[[-53.792,0.363],[10.731,-87.13],[8.722,-6.843],[67.947,0],[0,0]],"v":[[-115.743,75.255],[-95.625,-15.366],[54.383,-12.541],[86.034,-23.476],[86.034,79.187]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":190.908,"s":[{"i":[[0,0],[-63.484,-9.65],[-22.506,-80.734],[-12.735,0],[83.688,0]],"o":[[-51.386,0.347],[18.024,-66.353],[9.298,-7.295],[72.437,0],[0,0]],"v":[[-114.111,76.947],[-93.855,-16.885],[55.779,-20.843],[89.521,-32.501],[89.521,76.947]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":207.271,"s":[{"i":[[0,0],[-66.455,-10.102],[-8.244,-86.04],[-11.946,0],[78.5,0]],"o":[[-53.792,0.363],[10.731,-87.13],[8.722,-6.843],[67.947,0],[0,0]],"v":[[-115.743,75.255],[-95.625,-15.366],[54.383,-12.541],[86.034,-23.476],[86.034,79.187]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":223.637,"s":[{"i":[[0,0],[-63.484,-9.65],[-22.506,-80.734],[-12.735,0],[83.688,0]],"o":[[-51.386,0.347],[18.024,-66.353],[9.298,-7.295],[72.437,0],[0,0]],"v":[[-114.111,76.947],[-93.855,-16.885],[55.779,-20.843],[89.521,-32.501],[89.521,76.947]],"c":true}]},{"t":240,"s":[{"i":[[0,0],[-63.484,-9.65],[-22.506,-80.734],[-12.735,0],[83.688,0]],"o":[[-51.386,0.347],[10.251,-83.234],[9.298,-7.295],[72.437,0],[0,0]],"v":[[-114.111,76.947],[-94.893,-9.622],[55.779,-20.843],[89.521,-32.501],[89.521,76.947]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[314.298,94.739]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 2","bm":0,"hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[22.148,-85.626],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-171.79,37.239],[-109.501,-25.05],[-109.493,-25.05],[73.2,-49.699],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76.363,"s":[{"i":[[0,0],[0,36.011],[-36.011,0],[-0.003,0],[-24.295,-81.053],[0,-48.038],[39.514,0]],"o":[[-36.011,0],[0,-36.011],[0.003,0],[23.185,-89.634],[45.97,-14.045],[0,39.514],[0,0]],"v":[[-110.538,99.527],[-175.742,34.323],[-110.538,-30.881],[-110.53,-30.881],[70.223,-40.448],[162.701,27.98],[91.154,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":92.729,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[21.935,-70.191],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-177.496,37.038],[-108.464,-32.312],[-108.455,-32.312],[72.681,-54.368],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":109.09,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[22.148,-85.626],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-171.79,37.239],[-109.501,-25.05],[-109.493,-25.05],[73.2,-49.699],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":125.453,"s":[{"i":[[0,0],[0,36.011],[-36.011,0],[-0.003,0],[-24.295,-81.053],[0,-48.038],[39.514,0]],"o":[[-36.011,0],[0,-36.011],[0.003,0],[23.185,-89.634],[45.97,-14.045],[0,39.514],[0,0]],"v":[[-110.538,99.527],[-175.742,34.323],[-110.538,-30.881],[-110.53,-30.881],[70.223,-40.448],[162.701,27.98],[91.154,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":141.818,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[21.935,-70.191],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-177.496,37.038],[-108.464,-32.312],[-108.455,-32.312],[72.681,-54.368],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":158.182,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[22.148,-85.626],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-171.79,37.239],[-109.501,-25.05],[-109.493,-25.05],[73.2,-49.699],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":174.545,"s":[{"i":[[0,0],[0,36.011],[-36.011,0],[-0.003,0],[-24.295,-81.053],[0,-48.038],[39.514,0]],"o":[[-36.011,0],[0,-36.011],[0.003,0],[23.185,-89.634],[45.97,-14.045],[0,39.514],[0,0]],"v":[[-110.538,99.527],[-175.742,34.323],[-110.538,-30.881],[-110.53,-30.881],[70.223,-40.448],[162.701,27.98],[91.154,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":190.908,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[21.935,-70.191],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-177.496,37.038],[-108.464,-32.312],[-108.455,-32.312],[72.681,-54.368],[171.79,23.252],[95.514,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":207.271,"s":[{"i":[[0,0],[0,36.011],[-36.011,0],[-0.003,0],[-24.295,-81.053],[0,-48.038],[39.514,0]],"o":[[-36.011,0],[0,-36.011],[0.003,0],[23.185,-89.634],[45.97,-14.045],[0,39.514],[0,0]],"v":[[-110.538,99.527],[-175.742,34.323],[-110.538,-30.881],[-110.53,-30.881],[70.223,-40.448],[162.701,27.98],[91.154,99.527]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":223.637,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[21.935,-70.191],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-177.496,37.038],[-108.464,-32.312],[-108.455,-32.312],[72.681,-54.368],[171.79,23.252],[95.514,99.527]],"c":true}]},{"t":240,"s":[{"i":[[0,0],[0,34.401],[-34.401,0],[-0.003,0],[-44.712,-77.529],[0,-51.213],[42.126,0]],"o":[[-34.401,0],[0,-34.401],[0.003,0],[22.148,-85.626],[49.008,-14.973],[0,42.126],[0,0]],"v":[[-109.501,99.527],[-171.79,37.239],[-109.501,-25.05],[-109.493,-25.05],[73.2,-49.699],[171.79,23.252],[95.514,99.527]],"c":true}]}]},"nm":"Path 1","hd":false},{"ty":"st","c":{"a":0,"k":[0.533333361149,0.72549021244,0.886274516582,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":10},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","hd":false},{"ty":"fl","c":{"a":0,"k":[0.86274510622,0.992156863213,1,1]},"o":{"a":0,"k":100},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[322.393,108.298]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"Transform"}],"nm":"Group 3","bm":0,"hd":false}],"ip":0,"op":300,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"_054_CLOUDY_UPLOAD","refId":"comp_0","sr":1,"ks":{"p":{"a":0,"k":[256,256,0]},"a":{"a":0,"k":[256,256,0]}},"ao":0,"w":512,"h":512,"ip":0,"op":180,"st":-60,"bm":0}]} \ No newline at end of file diff --git a/TMessagesProj/src/main/res/values-ar/strings.xml b/TMessagesProj/src/main/res/values-ar/strings.xml index 52a277632..f7a1a8a4e 100644 --- a/TMessagesProj/src/main/res/values-ar/strings.xml +++ b/TMessagesProj/src/main/res/values-ar/strings.xml @@ -2494,7 +2494,6 @@ تمت إزالة **%1$s** من **%2$s** تمت إزالة **%1$s** من **%2$s** وصلت الحد الأقصى - عذرًا، لايمكنك إضافة أكثر من 100 محادثة إلى مجلد. عذرًا، لايمكنك استثناء أكثر من 100 محادثة من مجلد. رمز القفل diff --git a/TMessagesProj/src/main/res/values-de/strings.xml b/TMessagesProj/src/main/res/values-de/strings.xml index 6ccc9a72b..a0e907222 100644 --- a/TMessagesProj/src/main/res/values-de/strings.xml +++ b/TMessagesProj/src/main/res/values-de/strings.xml @@ -2494,7 +2494,6 @@ **%1$s** wurde aus **%2$s** entfernt **%1$s** wurde aus **%2$s** entfernt Limt erreicht - Mehr als 100 Chats kann man leider nicht einem Ordner hinzufügen. Mehr als 100 Chats kann man leider nicht aus einem Ordner ausschließen. Pincode-Sperre diff --git a/TMessagesProj/src/main/res/values-es/strings.xml b/TMessagesProj/src/main/res/values-es/strings.xml index 59a18f013..b41963379 100644 --- a/TMessagesProj/src/main/res/values-es/strings.xml +++ b/TMessagesProj/src/main/res/values-es/strings.xml @@ -2494,7 +2494,6 @@ Quitaste **%1$s** de **%2$s** Quitaste **%1$s** de **%2$s** Límite alcanzado - No puedes añadir más de 100 chats a una carpeta. No puedes excluir más de 100 chats de una carpeta. Código de bloqueo diff --git a/TMessagesProj/src/main/res/values-it/strings.xml b/TMessagesProj/src/main/res/values-it/strings.xml index c7d92b4d8..edbecaa82 100644 --- a/TMessagesProj/src/main/res/values-it/strings.xml +++ b/TMessagesProj/src/main/res/values-it/strings.xml @@ -2494,7 +2494,6 @@ **%1$s** rimossa da **%2$s** **%1$s** rimosse da **%2$s** Limite raggiunto - Spiacenti, non puoi aggiungere più di 100 chat a una cartella. Spiacenti, non puoi escludere più di 100 chat da una cartella. Codice di blocco diff --git a/TMessagesProj/src/main/res/values-ko/strings.xml b/TMessagesProj/src/main/res/values-ko/strings.xml index 8756b3008..292f0c310 100644 --- a/TMessagesProj/src/main/res/values-ko/strings.xml +++ b/TMessagesProj/src/main/res/values-ko/strings.xml @@ -2494,7 +2494,6 @@ **%2$s** 폴더에서 **%1$s** 대화가 삭제됨 **%2$s** 폴더에서 **%1$s** 대화가 삭제됨 한계 도달 - 죄송합니다, 폴더에 100 개 이상의 대화를 추가 할 수 없습니다. 죄송합니다, 폴더에서 100개 이상의 대화를 제외할 수 없습니다. 암호 잠금 diff --git a/TMessagesProj/src/main/res/values-nl/strings.xml b/TMessagesProj/src/main/res/values-nl/strings.xml index 4bf807df2..68271c906 100644 --- a/TMessagesProj/src/main/res/values-nl/strings.xml +++ b/TMessagesProj/src/main/res/values-nl/strings.xml @@ -2494,7 +2494,6 @@ **%1$s** verwijderd van **%2$s** **%1$s** verwijderd van **%2$s** Limiet bereikt - Sorry, je kunt niet meer dan 100 chats aan een map toevoegen. Sorry, je kunt niet meer dan 100 chats uitsluiten van een map Toegangscode-vergrendeling diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml index 1d743a5bd..9d056ce5e 100644 --- a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml @@ -2494,7 +2494,6 @@ **%1$s** removido de **%2$s** **%1$s** removido de **%2$s** Limite atingido - Desculpe, você não pode adicionar mais que 100 chats numa pasta. Desculpe, você não pode ignorar mais que 100 chats numa pasta. Senha de Bloqueio diff --git a/TMessagesProj/src/main/res/values/ids.xml b/TMessagesProj/src/main/res/values/ids.xml index 65a1d6aae..ece991384 100644 --- a/TMessagesProj/src/main/res/values/ids.xml +++ b/TMessagesProj/src/main/res/values/ids.xml @@ -19,10 +19,13 @@ + + + diff --git a/TMessagesProj/src/main/res/values/strings.xml b/TMessagesProj/src/main/res/values/strings.xml index f971ff8e9..64c33a217 100644 --- a/TMessagesProj/src/main/res/values/strings.xml +++ b/TMessagesProj/src/main/res/values/strings.xml @@ -77,6 +77,8 @@ You have just successfully transferred %1$s to %2$s for %3$s You have just successfully transferred %1$s to %2$s + You successfully transferred %1$s to %2$s for %3$s and allowed future recurrent payments + You successfully transferred %1$s to %2$s and allowed future recurrent payments Checkout Shipping methods Sorry, it is not possible to deliver to your address. @@ -109,6 +111,7 @@ Transaction Review Transfer **%1$s** to the %2$s bot for **%3$s**? Total + Invalid invoice INVOICE TEST INVOICE PAY %1$s @@ -147,6 +150,7 @@ New Group yesterday No results + No results found for \"%s\". Welcome to Telegram Recently viewed HIDE @@ -428,6 +432,7 @@ Leave channel Settings JOIN + APPLY TO JOIN GROUP Broadcast Silent Broadcast What is a Channel? @@ -494,6 +499,7 @@ You can add administrators to help you manage your channel. Tap and hold to remove admins. Do you want to join the channel \'%1$s\'? Sorry, this channel is private, so you can’t view its content. + Sorry, this channel is private. Sorry, you can\'t access this chat because you were banned by an admin. Unfortunately, you were banned from participating in public groups. Sorry, this chat is no longer accessible. @@ -917,10 +923,15 @@ Choose from your stickers You can choose a sticker set that will be available to all group members when they are chatting in this group. CHOOSE STICKER SET + Choose sticker set stickerset You can create your own custom sticker sets using the @stickers bot. No such sticker set found Try again or choose from the list below + Set as Group Sticker Set + Remove Group Sticker Set + No results found for \"%1$s\" + My sticker sets invisible support @@ -1286,6 +1297,8 @@ Sender names removed %s: %s From %s + No words recognized. + Rate transcription %1$s set the self-destruct timer to %2$s You set the self-destruct timer to %1$s @@ -1337,6 +1350,7 @@ %1$s sent an audio file to the group %2$s %1$s sent a sticker to the group %2$s %1$s sent a %3$s sticker to the group %2$s + %1$s were charged %2$s %1$s invited you to the group %2$s %1$s renamed the group %2$s %1$s changed the group photo for %2$s @@ -1645,6 +1659,7 @@ More Stickers Delete from Favorites Delete from Recent + Clear recent stickers Add to Masks Stickers not found Stickers removed. @@ -1677,6 +1692,7 @@ You can add masks to photos you send. To do this, open the photo editor before sending a photo. Trending Stickers Trending GIFs + Show More Stickers Suggest stickers by emoji All Sets My Sets @@ -1837,6 +1853,9 @@ All notification settings reset to default Reset all notifications Are you sure you want to reset all notification settings to default? + Reset to default settings + Reset notifications + Are you sure you want to reset notification settings to default? Message text size Ask a Question Add an explanation @@ -2152,7 +2171,9 @@ Disable forced RTMP Stream Flag Clear WebView cache Enable WebView debug + Disable WebView debug Debug enabled! + Debug disabled! You can change your language later in Settings. Choose your language Other @@ -2220,6 +2241,7 @@ Free up disk space on your device; your media will stay in the cloud. Change Phone Number Move your account, chats and media to a new number. + Your phone number has been successfully changed. Contact Support Tell us about any issues; logging out doesn\'t usually help. Log Out @@ -2609,7 +2631,6 @@ **%1$s** removed from **%2$s** **%1$s** removed from **%2$s** Limit reached - Sorry, you can\'t add more than 100 chats to a folder. Sorry, you can\'t exlude more than 100 chats from a folder. Passcode Lock @@ -2853,7 +2874,13 @@ Are you sure you want to discard all changes? Clear search history? Are you sure you want to clear your search history? + Do you want to remove this chat from your search history? + Do you want to remove these %1$d chats from your search history? + Do you want to remove these %1$d chats from your search history? + Do you want to remove these %1$d chats from your search history? + Do you want to remove these %1$d chats from your search history? Clear search history + Remove from search history Search history Are you sure you want to remove \"%1$s\" from search history? Are you sure you want to remove \"%1$s\" from search history? @@ -3152,6 +3179,13 @@ Change who can add you to groups and channels. Sorry, you can\'t add this user to groups because of user\'s privacy settings. Sorry, you can\'t add this user to channels because of user\'s privacy settings. + Can\'t add this user + Can\'t add some users + Can\'t add these users + Sorry, you can\'t add **%1$s** to groups because of **%1$s**\'s privacy settings. + Sorry, you can\'t add **%1$s** and **%2$s** to groups because of their privacy settings. + Sorry, you can\'t add some of these users to groups because of their privacy settings. + Sorry, you can\'t add these users to groups because of their privacy settings. Sorry, you can\'t create a group with these users because of their privacy settings. Disabling peer-to-peer will relay all calls through Telegram servers to avoid revealing your IP address, but may slightly decrease audio quality. Delete Synced Contacts @@ -3183,12 +3217,15 @@ Open page **%1$s** would like to open its web app to proceed.\n\nIt will be able to access your **IP address** and basic device info. Add to Menu + This bot can\'t be opened in chats with bots. + This bot can\'t be opened in chats with users. This bot can\'t be opened in groups. This bot can\'t be opened in channels. This link does not lead to a bot. Remove bot Message Preview Choose a file + Settings Open bot Reload page Delete bot @@ -3349,6 +3386,7 @@ This phone number is banned. Code expired, please retry login. Wrong code + For security reasons, you can\'t change phone number from a device that you\'ve just connected. Please use an earlier connection or wait for a few hours. Too many attempts, please try again later Too many attempts, please try again in %1$s Invalid code @@ -3433,6 +3471,7 @@ Do you want to share this game to **%1$s**? Do you want to send this contact to **%1$s**? There is no Telegram account with this username. + There is no Telegram account with this phone number. This bot can\'t join groups. Would you like to enable extended link previews in Secret Chats? Note that link previews are generated on Telegram servers. Please note that inline bots are provided by third-party developers. For the bot to work, the symbols you type after the bot\'s username are sent to the respective developer. @@ -3572,7 +3611,7 @@ Cloud-Based The world\'s **fastest** messaging app.\nIt is **free** and **secure**. **Telegram** delivers messages faster than\nany other application. - **Telegram** is free forever. No ads.\nNo subscription fees. + **Telegram** provides free unlimited cloud storage for chats and media. **Telegram** keeps your messages safe\nfrom hacker attacks. **Telegram** has no limits on\nthe size of your media and chats. **Telegram** lets you access your messages\nfrom multiple devices. @@ -3671,6 +3710,7 @@ Include technical information Doesn\'t reveal chat contents and helps us fix the issue sooner. Thank you for helping make Telegram calls better. + Thank you for your feedback. answering as %s Respond with Text These quick responses will be available when you respond to an incoming call with a Telegram message. Change them to say anything you like. @@ -3989,6 +4029,20 @@ Voice call %1$s Video call %1$s + Revoke %d links + Revoke link + Revoke %d links + Revoke %d links + Revoke %d links + Revoke %d links + + Leave %d communities + Leave community + Leave %d communities + Leave %d communities + Leave %d communities + Leave %d communities + Do you want remove these **%d documents** from Downloads? Do you want remove this document from Downloads? Do you want remove these **%d documents** from Downloads? @@ -4673,6 +4727,16 @@ %1$d Dialogs unpinned %1$d Dialogs unpinned %1$d Dialogs unpinned + Forward media + Would you like to forward... + This photo + This media + All %1$d photos + All %1$d photos + All %1$d photos + All %1$d media + All %1$d media + All %1$d media %1$d Seen Seen @@ -4709,7 +4773,9 @@ Cancel download Open file Message options + Forwarded origin Enter selection mode + Chat Preview Emoji, stickers, and GIFs Attach media Send silently @@ -4757,6 +4823,9 @@ User options Rotate Mirror + Brush type + Paint + Place text Photo editor Adjustments Photo viewer @@ -4775,6 +4844,7 @@ Not seen Sending Sending error + Played Not played Next search result Previous search result @@ -4793,6 +4863,19 @@ Viewed %1$d times Viewed %1$d times Viewed %1$d times + Has %1$d reply + Has %1$d replies + Has %1$d replies + Has %1$d replies + Has %1$d replies + %1$s has seen + %1$s reacted with %2$s + You reacted with %1$s + %1$d person reacted with %2$s + %1$d people reacted with %2$s + %1$d people reacted with %2$s + %1$d people reacted with %2$s + %1$d people reacted with %2$s Send %1$d photo Send %1$d photos Send %1$d photos @@ -4814,6 +4897,7 @@ Share in %1$d chats Share in %1$d chats Correct answer + Incorrect answer Explanation Picture-in-Picture mode Microphone is on @@ -4825,6 +4909,20 @@ Pinned messages list Switch to fullscreen Exit fullscreen + Send as %1$s + Bot menu + Verified + %1$d mention + %1$d mentions + %1$d mentions + %1$d mentions + %1$d mentions + %1$d unread chat + %1$d unread chats + %1$d unread chats + %1$d unread chats + %1$d unread chats + With new reaction MMM yyyy MMM dd yyyy, h:mm a @@ -4954,6 +5052,7 @@ Add to Group Add to Channel Add to Group or Channel + This bot is able to manage a group or channel. Dismiss Dismiss request requested to join %1$s @@ -4964,6 +5063,7 @@ Your request to join the group was approved Your request to join the channel was approved un1 joined via invite link un2, approved by un3 + un1 joined, approved by un2 No join requests There are no pending requests\nto join this channel. M @@ -4989,6 +5089,11 @@ Restrict saving content Members won\'t be able to forward messages from this group or save media files. Subscribers won\'t be able to forward messages from this group or save media files. + Who can send new messages? + Only members + Turn this on if you expect users to join your group before being able to send messages. + Approve new members + Turn this on if you want users to join the group only after they are approved by an admin. Please allow **Telegram** to manage all files to open in-app file browser Telegram needs permission to manage all files to migrate old cache files to Scoped Storage Allow @@ -5212,4 +5317,133 @@ Clear for all Clear for me WebView not available. Please update it to use WebView bots. + Private Chats + Groups + Channels + Unlock Premium Stickers + Unlock Premium Reactions + Unlock additional reactions by subscribing to Telegram Premium. + y + Increase Limit + You have reserved too many public links. Try revoking the link from an older group or channel, or upgrade to **Telegram Premium** to double the limit to **%2$d** public links. + You have reserved too many public links. Try revoking the link from an older group or channel. + You have reserved too many public links. Try revoking the link from an older group or channel. We are working to let you increase this limit in the future. + Your public communities + You have reached the limit of **%1$d** folders. You can double the limit to **%2$d** folders by subscribing to **Telegram Premium**. + You have reached the limit of **%1$d** folders for this account. + You have reached the limit of **%1$d** folders for this account. We are working to let you increase this limit in the future. + Sorry, you can\'t add more than **%1$d** chats to a folder. You can increase this limit to **%2$d** by upgrading to **Telegram Premium**. + Sorry, you can\'t add more than **%1$d** chats to a folder. Please create a new one. + Sorry, you can\'t add more than **%1$d** chats to a folder. Please create a new one. We are working to let you increase this limit in the future. + You are a member of **%1$d** groups and channels. Please leave some before joining a new one — or upgrade to **Telegram Premium** to double the limit to **%2$d** groups and channels. + You are a member of **%1$d** groups and channels. Please leave some before joining a new one. + You are a member of **%1$d** groups and channels. Please leave some before joining a new one. We are working to let you increase this limit in the future. + Premium account + Free + Premium + Doubled limits + Up to %1$d channels, %2$d folders, %3$d pins, %4$d public links, %5$d accounts and more. + 4Gb Upload Size + Increased upload size from 2Gb to 4Gb per document, unlimited storage overall. + Faster Download Speed + No more limits on the speed with which media and documents are downloaded. + No Ads + No more ads in public channels where Telegram sometimes shows ads. + Unique Reactions + Premium Stickers + Exclusive enlarged stickers featuring additional effects, updated monthly. + Profile Badge + A badge next to your name showing that you are helping support Telegram. + Animated Profile Pictures + Video avatars animated in chat lists and chats to allow for additional self-expression. + Subscribe for %s per month + Subscribe + Subscription not available + **Official app needed** + You need an official Telegram app to subscribe to **Telegram Premium**.\n\nOnce subscribed, you will be able to use the benefits of Telegram Premium in any apps that support it, including unofficial ones. + Install official app + Telegram Premium + Go **beyond the limits**, get exclusive features and support us by subscribing to **Telegram Premium**. + You are all set! + Thank you for subscribing to **Telegram Premium**.\nHere’s what is now unlocked. + Limit of %d Stickers Reached + An older sticker was replaced with this one. You can **increase the limit** to %d stickers + Limit of %d GIFs Reached + An older GIF was replaced with this one. You can **increase the limit** to %d GIFs + The document cant’t be sent, because it is larger than **%1$s**. You can double this limit to **%2$s** per document by subscribing to **Telegram Premium**. + The document cant’t be sent, because it is larger than **%1$s**. + The document cant’t be sent, because it is larger than **%1$s**. We are working to let you increase this limit in the future. + About Telegram Premium + While the free version of Telegram already gives its users more than any other messaging application, **Telegram Premium** pushes its capabilities even further. + **Telegram Premium** is a paid option, because most Premium Features require additional expenses from Telegram to third parties such as data center providers and server manufacturers. Contributions from **Telegram Premium** users allow us to cover such costs and also help Telegram stay free for everyone. + Groups and Channels + Join up to %d channels and large groups + Pinned Chats + Pin up to %d chats in your main chat list + Public Links + Reserve up to %d t.me/name links + Saved GIFs + Save up to %d GIFs in your Favorite GIFs + Favorite Stickers + Save up to %d stickers in your Favorite stickers + Folders + Organize your chats into %d folders + Chats per Folder + Add up to %d chats into each of your folders + Connected Accounts + Connect %d accounts with different mobile numbers + Doubled Limits + Sorry, you can\'t add more than **%1$d** accounts. You can increase this limit to **%2$d** by upgrading to **Telegram Premium**. + Sorry, you can\'t add more than **%1$d** accounts. + Voice-to-Text Conversion + Ability to read the transcript of any incoming voice message. + Advanced Chat Management + Premium + Premuim Stickers + Captions + Use longer descriptions for your photos and videos + An older sticker was replaced with this one. + An older GIF was replaced with this one. + This pack contains premium stickers like this one. + View + **%s** is a subscriber of Telegram Premium. + Hide + Bio + Add more symbols and use links in your bio. + App Icon + Default + Vintage + Aqua + Premium + Turbo + Nox + App icon has been changed to %1$s + File Too Large + Premium App Icon + Choose from a selection of Telegram app icons for your homescreen. + Unlock Premium Icons + About Telegram Premium + Additional Reactions + Unlock a wider range of reactions on messages by subscribing to Telegram Premium. + Additional App Icons + Unlock a wider range of app icons by subscribing to Telegram Premium. + I accept the *Terms of Service* of %1$s. + JOIN REQUEST SENT + Are you sure you want to revoke these links?\n\nThe groups will become private. + Are you sure you want to revoke these links?\n\nThe channels will become private. + Do you want to clear all your recent stickers? + All other sessions terminated. + All websites disconnected. + Can\'t add user + This bot can\'t be opened in the chat with itself. + Unlock this sticker and many more by subscribing to Telegram Premium. + Sorry, you can\'t pin more than %1$d chats to the top. Unpin some that are currently pinned or subscribe to **Telegram Premium** to double the limit to **%2$d** chats. + Sorry, you can\'t pin more than %1$d chats to the top. Unpin some that are currently pinned. + Sorry, you can\'t pin more than %1$d chats to the top. Unpin some that are currently pinned. We are working to let you increase this limit in the future. + Recently active communities + Are you sure you want to leave the selected chats?]]> + Additional animated reactions on messages, available only to Premium subscribers. + Tools to set the default folder, auto-archive and hide new chats from non-contacts. + Owners of **Telegram Premium** accounts have exclusive acces to multiple additional features. + Remove ads such as this one by subscribing to Telegram Premium.

    PoD#GKH5QNm4~7$)q}UstB8>^+JMT<2`h|a$ASq1Mq2682J~E#5oC*Ltkf3VLlaO7ZuSW0F~S_M z$SBQa_Rs>9{oO%7Lk!SML&bY&3HsF@0uqpb1SB8<2}nTNf-qJAh;AlWC&0t^Q7Fne zo4By(459}Q`#hC8{%G?~y@wkcW(^RT559CKnrF=uX-u~ss5 z{m?Qa%T+GLwhR!cvt3p!36lt~*$g~{gvmj8+z;;69zQ(YA>e)Qx$oW9cCS~A8#iuT zS=4HDS`4C~MxzTYb&u~^s4>QlW^MSTY4JK!%<@GW^&7Cm1qv}X{9N+&2vz3zg)S#* zcV>(YZIbUq_@?~^+v$&=Lzcj8@5COp8I(`Hbfjbz7k- z^5HU%df6Kt@LP8{DNb?!7O04FxYT~hA#2QxK}@yWbNURW%QnCBXB`IYbx{nT8k;1&u8xyX=~la(${{~> zt!5J=BD~+X?NPExO$?XCO4h_FY4L&+?Xyy|$~caX+N@-8439IkNnUbJya^w&&0t-A zXqKut3DdnKX>&#lhk5!X%VG%5@e>CX9kRj4offBLnWW#m$j)RBOI}nLLsD(Jx#l=q zm5O*1>ikQx+N8)zqfW{FDkDcK-7ndvA+mCXq}zKUXPWg$E{?3+BU!I5a^`JXB`YH< z8zf&VrDT0%WxM2t7zM7Ev`1F_jc%4a2iGc9uFJYA9xM^-){>2rSM%zR0w#>mQsGseVO0=Erb(uYXE5Dnt%U@T}x1^)YCC@uI%44;p$Bi*UZq}#hsFhJJP4-GU%!v^&(=N#i8lrrbE7`6o%H(vLl`M&o z@D@)hdD^?8463bFvQ|}$jC1W$@&_|wm`wC*B`<4=k#nI=B|BVXLS&?%*(N1jE{lA) z+^b6Ze8r47#$;!CpG$nsr_I&m?JDDSCOY434l3!kOd;}OfjtK7bEj)8w!&&#^eNeC zoqOHp7I*l*-3D~KRYl}Ui)WQ}S1bZPg9FSx)o_1>Y$RaSY@cK@)|I(M3*F2;=;H}3z;e*vFRTOzOrE5iT)002ov JPDHLkV1h4rLM8wJ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_objects.png b/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_objects.png deleted file mode 100644 index 9f209058fd15bdffaca3b33b3f8ad225e47c3314..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1082 zcmV-A1jYM_P)iih9WTt8s6cGH=n(wnu;1V_spwAv>*%F08cEAqxug_C)X5Yta#p#RYiG z5sUUlZ`t9j!kgB{MX=VJ3TN$z-f@=`lFYbTTqHH)GRX;dMQ>Q?u;h#<;y?0)Gm^tr zMlaYW$vhL6z%w$*z9`QPzLy-dIxd0L4obdvLzLwy$&AssL`Ka>o{Dl@<&fl!D8U<& zL#~Q4j7nNIMF}=(Nk*d#yCk1RNj{bAiZV<{_C-ndNhYEUlal+RB=<`uqYTF+o1-L~ zCC8!+rzE#TNp6vxiZYy$+!!5f@rXO33wLNPjV5^naI zUvb>FSjMPiCdzO`@=z?}ZG|5^>+*;QmwVO^3U9|U9+Di1G8~Xh#4>hhDrCMeX3Q5d zg{B>`j0wqsD8n|%tgB-g_xZ@8-~DdUNA8PdTy0jeEy{46Darompyo+m>-4oJ)uMy_ zk}20k8CG~nGHWc(<0ktxENE+6(6HZ4aUNr4B`;YK<=9|G@_|}(VZB+I%&hg%g_;i} zGd4tdUQl>By0A(nmsu5Ecv<0v=mppKMB&9akGeuV&f`UePh1ndVUvc!&gh`7P>&9F zDl}}0-tn+`N!xRVVhMGHdMshcbJ~)54@Ym=r6pa=dp!EbgHFn|z3PfMM_r*F=eWYF z+Hxm782x0m2`#xF-DyQcgey(UO}jE8!U}i#QLbge>gX@GnKX~HUQvs4+~Y$Zx+l(2 z^NO>WH|e(MH$!$iDZ~5f(S^GAkvVC%q3A#B{3OGayQ2$tn?mL%>!J#3-j(4GA4eBH z_6IWWszntH8JEemq6;m#%($Vbf+6=>kj!dmXlQ6?XlR&~EV$QDRKtk23uzmPs;K$R zh5V)#)zOsuPB-7lHKR(Jaz|~A4z@Zf*NiG@%6(-+bg;o!a?Plcrrc52MhDkAD%XrE zIW9Nt_UPbt({jh7O1_cH9JbN0VZ(+E8@AD5ncO!~C9k`X*P}{CeCywQYb2^=)Mx(5 zXGWuX)_B_IPMb4l&YU@OPW#-`*2KWTz`+03pHN(dF`5XWHUIzs07*qoM6N<$fPx# diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_other.png b/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_other.png deleted file mode 100644 index 7072bb0776357cc7ae7ab870ee0157e09f801683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmV;T0$u%yP)AWMFMc=?HDw0U?l*zC!y76&uYfBoC05nO0(niUg<2 zkcxpUP?3HZxR|@diR`n@W$<^q+|TwWK7ak^=OFO%^78W16D68-_{L96G~_dFnmjUv zIpa4rHR6m?R-9-2z=ei9&w}%s5w3K{8(o|&?nLo(>OADW(Z_$lIo7WF#_6;TWG6=hjDmO`ZfX}G6E{bEre>}<3&Ph^zn!^0=gGh@=GmzZj&~EG;8rd z`oUD%ARX@_Z%mXbFP&DbRyn(9p)6U8n z$kG11G!aaV0loCGkzINWG9?Zy01e_3c_VRp`+NHTK6OZv>noc!fzCz6#}p`V zES^6~=5e_`*#vr;*yo&b`ftm{MlL`>z!SbqHE~T@varnBo^4uo87o|+nz&*mXWLUw zt69@Al7tmI+|XlpYAw5==00K7iNp7tt@V3)DZPbD zdajAI@PQMY1CbV9Q!Ub3sKogKUM&Ox+lkAUE_I458G$TOjTPKWB_7d(Kco`v3p{07*qo IM6N<$g7e})5&!@I diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_question.png b/TMessagesProj/src/main/res/drawable-xxhdpi/smiles_panel_question.png deleted file mode 100644 index c158b021c9a0b1a9c37b99cd2c72e54e69e03fa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1032 zcmV+j1o!)iP)lhSGz=TC@ zqXUOx`Y*<{A)(7wY)MEeV?Isun>RBdJ!jr?IMcY`d35N|p$`=~ip+42AJ}4tf9h@n;|3?xX^gQ%9ba{pIIT|M49`j9IcJnL^4w*=kXf!U$}qi> zL@&dPa)nt!_Pa}7*uOsIXR(4bgMV`_>N8Qlh{vrlK|&#cU`FTbN;`LY_^` zE_t=V5au^UVF%NzR0webwZ&1)Uy4G5Qeg#WPF`qG6dIHQD>xN-p$GG~qOgPMRYI)b zROE?%%pZ!v7G_w9P{o;(H$KB`DheBzQ6+*?Q38x&HWY;_Wd83S3Ry&O0oR=2@8sv#{IAdy$8fHOW2xyQe7BDsW z;2h31c_5%cUbu#HUVd1_DJWwUa2Dl@A+|9!K2nA_LJhOcko<88=aDkRBb-Z0hBD3r zWrPPfWhF&7-{UOvu?~#KIM3)-a`f{OXN?gZ03)p8yrf_0Fu*S~O)4cOX?n?k(&H%K z(X`A(CBy}mXnIbc4u&4SqE(rqJW*txR`c{I3ykxYR%=|PUoq(CDr>a*lW}E-JYTb4 z$SjvR#Yy_;qKiIGa*E5$60+YnRdBJPm@Q!!9;WaO~&kRL!I&|pJ2kIXYF^Sep(62TC0000P)CS&3*;p!=#?Vc(YTbwkx)22O7q}Cf zrB?B^DLz_LtPgy2(^B}l=w!Uw=$)C|5ehlm`}>{yMQ7%mdq#*#RH71<_)mjs+DR}) zo;}V0IAf1IQzU4o`YuuG=p)A|x5X(r`lxdc6CuSBx^YB`h&z}DM!CQ=E*Pc31x^n; z*IuT8i^8TfGn%ml)Ll<3scYgD=*k$gtl89ZH%yW#q)vspm3U4@+4j- zNl42VBFVbPxkOVCIIV1Zk`9|~XsQ|ZxVLF77pH{-l`c=*Do31;D#rmW<=`}X7V>Oa zKWx^sz?WipfAW$E3EeVql$NBX!vIJKl2U%CSAs70*Cw@2fI_P5>g_e=4F9BtKthm`hB>|S z`9gnxSpvn>!uCJ2c`n7v2D{P_NC=jt<(a=UA*ETTKv`)?_)Ev7bkHf#ptOwpOBbZH z((PeChdn!gJuk5(x7=-*bQo&;MA~b*20F=6fx-pC}G&-3qjiKGsqCAIPgo` zd?*eDj&u2;_{i>4x+74Wc9r+7nK7(}4fBBl&07u|gy4n#I7U0?|`P2Ud3Z zXix`y5F@>DmFtuBWS?gC0v~#Qu^xH~7h~b?WsQYJslmC?QAriAuMEzg2C*2gUM;MV z)T?pSkW|B|;I0-#smqrQQnxoJ#7ME>=<-FrqDQs=#aJOrKXIbm7lK+I@`O13yko`j z^^`gWGFBIO8Sc4jJtL$!)`mGI?eL1z(=YXsQ!{|laYl|_?S3Z^tiRXf)8yIX2k?s% pK9gsfBpr8pONi~=|TU-+Fw66ht1mI%;lWB?7TcCCT&jNT_K4*y$ z0DS=7mCuO~Cr~VmKnbjsggtL_DGQx%`b0XzfX6Cbj9wxGErw^nH{he@s{c}v1p33+$D_=>_d;gU%U z%1WTiN%lt&K1i~cWF>_#+A8AnU__by!l@7fT~G2z1kqPXHf1P`wk9dVh9knQt^zG4 zIcy=fk7RcZh0$ip+H2u4EF9}1PzTAQ7E-%%6h_-F3!h`cHCKUJBF3EUbrdJC?Ga;A zOP&JtSxD?CfH;Beu<+~4OQ4mO!gm%(oWOQkc&@CqK=Vodt_s~#Kyd=wqqrLGZ9W1u zdg}EOfGgC!UQZu+LUS|RU(B@pklO8*wbjc7ZasmmQ=G@8E}3_+jjEsnBpYXeK#jsR zj15_Lu?m2v)V&V?Oea!3UrYXr^9?@~?kN6+TH zjO3*9F)8=+^a0@>#+`BExU`^U>iQc`#Wz?6M033{XCF51U2!kC2y}zG{>6_IqQ0f> zoPEH;UDs^}Tm)L8t`B>XDiSnzUAII6>EQcO&kFC2xW6xFAFyz*wz1#_lA~&1TaaLo zo>D%h5)9I5eLxnfVT@%VkVcY;T8{*+Cgtz)I{BDUpSb$F?2Bn9DL0bp3N!CH8zL~( z(9lqIF61%>jjQXni05VlE>axN#Bp{J=(M`NcoqvZUtQ}je+FCxI;O6#P0p|GxLOf7 z9!JPUAn&v%Yi2Wyq;i3WetEW04@#PI|bk;$M-eo-C3mY1?uaN>!3$h zxr5|M_5L);PfZhdc>gMr?^#;0nNdII$e~%n#9=svTwMh+W63F1K(9yFc$DO6&V=bM zUyxi&@;cd=oJaCXk`GEUf-OP92>gym`7fyV{|@q%vJ%MHCRK>+rd5 z@+5%$06v$Xn_lv`z+}=c4?Xt>fEy)~|9{jX%XO9ITbV8CFRS%)sS#1QEkUX12~<{o zwGyb+GHqu;Qt;ll@Y)}hiC-&$Aj^p37BWRk;{2^1Nt}TdJq`G;dZqyf7MDm~%N!!( z`;~~Y4W}h>KJpL;!`I^1t`=}guvnsvkXdRmuslRW?kZAuu3_Z z9%iZ4aj0#U_-_~kGQl*VieKe8)ITyooFlS&N}VUUk7s1Va#+Tw;8^(gc^?ZeQKCeN5+zEMxF7-GKc;pgol)=#(wlYhe*n8!d`?218sLyg@_7l{LD{j7=wy=kaekQK8t+DiiZWQS8lGZ<%w zS-{IKk7a8o^k1}KMPi^<3VGmtLcofM~TP)N}95aZgE0up%00Zl1bA%O>i!lMTd z`As3b`$kWaS&tNuz$29vGQUGb2|Hv$a+e7_kV*HLIMp~41d?jVK&*xgxT-@I9>}24 zGzTl>ajo8NJRish@&*X$IEcFlgSj|HFQE=c5L5${hqpSzzny|}UEexIxB}AZHJv5) z365JHQUv8rfo3Qop?tCZ>|MMqlIzv<*fa?0YSL)M6f!3U8l;dB6!Z0IW*da_iXC&> zi?9F-v9nq~A%(XN$0)@JjW#3(YOrbQ*7cK;{Y92mt*_ZU>_)qd_}m;%OWx_K<+&}y z8QktSz(LEjF4r}u*V6ZC3cq2Z5kr{cDId^^+{>ju;`ztJX3p_m%3afc2LQN-l`3dkf@Q^5~dDZuN)3&c-8yJ*9Xjtvi#C)vVT+|l7! z0?DA5YHn&=cX5DKWROBS>*8PVg@c9gqZa*~T{- zAa`kI2MbBm2K(8@>Uf!HuB|N; zdKV*svXn9|Yk=J01e?jh=Q%O_AuLStrnr%Bl|b&%${zAaiTH^h7nW9gQTj{)rIRXF zGCt~9+#u{#xL5hy1mqU=lrn3`?&)k{x5KT%n-a=zl(9f}g`aN`+um z6o6U{X|-G<^R?hV@7!dF-xdX+KMjDcYh<|@AMq^=u%w|xi_477I*+B+L z&K+W?$}7q$-x+@W9<7b(G|%5un(?o$y z{iH<*E>qs2gY@zfTZ#7oXEE)LGk-ga^~EtP@$&$FeE7V#v?No3TdE*gWnz8^bJ!&v z?L3`YY>k%_y@*VT$RUj+l1L+mBF>oj=aiETzl1kx_!&bgW4#QAj5jSLc9N--%4DZO z>WTuAY-QJ&9(^jKNpK%KjFQm^r&wewyNFX#wuMo;X1~^OmPqmd91no@OBY97$sd*S z`>m{*a+wfsDv3UEg%e%fEKhJOkgPXOzWXQ4^(P1`hZ;87#}YnS_f9IfOX#MXB?`_- znFP#viE_bsBTQv7?ZE_hnt94FP7D59Ab+bOcEozGTNz6sDlju%6vtnNsmu-bGK18} zda?&n0b|K#J&oKR%k z9sxxc)Y*dF7S5`&n`3PN)d;<{LwM~?tCf0>fMSstEpx1=of;l(d;!VGD z=MWWF$u6@iAeNbJ86VL)xXN_Ze)K3fxtjLF@J%SR*Vio4Nn`=rIW6b@Peq;&O=2e$ zIs-|dOZ6E~b`tH{Ad%mNT1d5UX7LL3a`zviF9yFAMcKmU>4i2*p&OJi6+h{$q)O%} z>sY*(2ZiP*^7M!+I7g&>mG{q8Dmu$n=4;2GTw5QxwqsD3c!MpFOO&xxH3YjH6z4h) ziVCI8!LG+l*QunC$87Z`$j;L|O8fDPQTmXHf1U|$18yoM)X+&k9n?`umP@^qsFw{f zSc2tg|LDN@s`BE7kAe%UX3fG1nt3U-;mN`QX)3D8O{>l{{kBQ!!$&_6Hy V!gaEe#i0NI002ovPDHLkV1f;O%sl`A diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/stats_zoom.png b/TMessagesProj/src/main/res/drawable-xxhdpi/stats_zoom.png deleted file mode 100644 index 5311582cc7abc9b01dd9f0154f0e7797e1ba39c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmV-o1fBbdP)Pj@15P5z1h9p^?l)CZ)V@Gd2V*Tb~_yt zW55_N28;n?z!)$Fi~(c77%&EsGtf=$QE@mJ46dPi9k>rH0k<9Ias3LMIh^473V7S? zb}w*kw}6-)um^kxVubp%>$Q?0G;9^v2T}KymB08a7ILOW+qKbkOZy~iXZ z$N^cCf`&5B|`KLGt{va6WXqYBw_D%WN!HYRHd>oSW z9LXa60@~xYFLkG0Mxs4HldUq7LqLvcn$&B>jSRUBkiuD~(109DD*Xf6?6w!`qjWu& zB=<^EHcJnV00_z@gB0dd>Yo$bHYBnkvqSj{5VXz-4&+f}92XCl5!vvVOjLcPfHhaT zQVy`Py_A(@lwBOI$fam`NuB6&5rVWSTuV4QnFs?do|adHOI@`HLEJY<;ofRY@Bl0V zhk!Ock31iuKz-URjye5Xp~chk@|c%cjik>+V_00!LZY6HoJ0;ieisy{-25h&=-oUL zJ4Y6?B9l3c4Si9^8RsYJZpiwG@-O(kDfQu(@tMc4^r1U9T#@2;kw=V26jFRU>vvKy zvh1_h;%RwBh8tHeLXg&#eb4_RgnR>x^{(+$Mrx=}JKAfa#nbZAY@_Om92YQ=H4$YQ z<@chlgD(FGb!Dti7*9$m1QqE)JkgU<${Iul87gb>w3%(lq@te~ApfhCbTq9Xh#N-R zi)Aqff^0XRLy(;ZWf8=C=tXv-m_-r@s`^a&8)8bS@0qmgMOD4k_#v5b<(;fQaq9Pw zWEJnl`W|vl8Gq^|E8bcC$(osyy66!XFq%yw``j|s#Gf3hykA@`w!VEsS#d+Bpk{nT7adTUu z?cK84N`2amyfH<&a+0EtT-oqgVZ&gv4)B;_3E+Vj!IMFr1oAA0;86l93d^K!8eMPkI{Qs=X=!Bwavf zlGowQCohMj-?)Fh`K_F=1sNngp3rrB%pFPG(^2@%(UbPHE@4YR%pKrXLYL;s7%&Em o0b{@zFb0ePW55_N1~M7=0~>O2NbMRIRR91007*qoM6N<$g6&)YcK`qY diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/stickersclose.png b/TMessagesProj/src/main/res/drawable-xxhdpi/stickersclose.png deleted file mode 100644 index a20d5814376048a639f8c1d4d1ecf64ac21e72bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmV;#0XzPQP)6on^0z7kox)e}12k1%xU2}k;6fnH6 zScxSg$~dR%6fJgAz?KGylgpvZhy|r<<&(@$@h^Nb)YzcYj0ze2b81df5AZ|rZ*Ec8 zjI8u}YrkK)HR=#>A6ws!Ci%WqH!4-Ek4*2At2~5a` z+<7J%_d(jH@K`C!J2AJTM68r;kgPNmgzx_1DFW%uWOX|sK`$0*E8U%#xA)sTbdYr< zR8Tq#5$F20cDIkjT&2^EIQOOjsrvvnm&o!q&2>M0< z{n!2Ug`oNH*wWPRCTJ)YZbysMdD~SOvAjAu uK4JKM&G>Hp0Al?JW&03l{TTa}Rs8^!Us|E?ZKC`D0000IpNYHYp=qN@H9~XUxdACq|7vkI^ZY(WoI4r#j50MxV#zPPfiB%~=MC@)?O5Ghu4Z zgs2!ZrQ*zxBB`;}rIMLZ)D6E;-+fTjpg2*b9TYWh4ys%SMU5>o^~OB>`ZYIx2hTYa Tw=9vE00000NkvXXu0mjfv`=h7 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/temp_starlarge.png b/TMessagesProj/src/main/res/drawable-xxhdpi/temp_starlarge.png new file mode 100644 index 0000000000000000000000000000000000000000..428b529a73ff64bbe89907a17b718a6fc9465bea GIT binary patch literal 9526 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/themes_addcolor.png b/TMessagesProj/src/main/res/drawable-xxhdpi/themes_addcolor.png deleted file mode 100644 index 3df55c64d6861408541bab1ea50d32b80238a861..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{?5L-UV@L(# z+u6Q;hYbW;r4w#)AJEd?;b7^af3!*ai_`+S7U3zPtBbfe&I<)zTJmwR;i>*lk(-i! z_Zpv@-l^<6h54wDE`dI zqTqbsgo{7}52LcMBZCo3j}Hsu2>}BmK_rR$61H0HDbsnJ?9^3-%mvk@e|DS*`!(&T z;^|HN*+1vAMU|XTobNq3t74Msn$jII+vl_{`E}>iI{yhNwQ8Mb0zc>dJ|kOrZn@mn z-QItfzmc8(Yu3`*c!%}Idu~lXcx{b)j^XT*^|mYa2s2Gx{dfBHnm4h3R}|Y!f1V>V z|4My!&(+;|e;@C8_FCH~m-|!L*3~(|=jU7Pe=j%XRk_(`#*{qK28I+4iJ2Ts6BH9t zlsFvP8YXrsFi0}FsWl-ao@lxRoVZysb-iBVijSHMRxWzqY!~Ue2W@+E$K0&WRm0h# o;m6FSEe8cr0~#3S4>8xYsLS!#Bnw<{P(c*d+Llb&JhGw+$BD)(4|l4zh0$I(X>V zA#;HvO8=@Y6mvG+^xf2W_T7Gi>31g0K2tOOiJoMyg@ywoS3m=k$N~mdbf!W`qt59v z!Qdl;Nn6ibO{{O);krj@oq%-hyY>oo@2eoiSX9N-&a{vcox0$F>XF`6R}7+*73cG&hXn>z1ZNzv4l=R$RQl7Ui|@F4&=w23 z35$-uY?{L3C%xoJft1o)W{>@~2SV)HJ_hUgn#V5ky&d0hf6k&kLgsx5Rti%yH|g-s zndXuCFvH_}XuEgfyQppcd7Lb__f9R!s(o*k5#TPvy2LHYBjd)?6OkuG;x0K99jMe^ z@M3kLvgLy_8+zZ?2hH)&vnUGmf6PC zlHG5MyHLS4!P0&my(N{`RX-gqR9QID@R4w$)V0f}TH0FlJZ3LD&u-YS*5_+9BfnSq ztffNiscnvW7Z0ptT=6k8HS0ptmz-ZQ0-rVNxIeB{tUNqXEqlVbl-UW>HR|{a+bdjT zzJ+QOt1;6iuvJ=N!dnwttCHKOx3ZO3`$X+u6{1- HoD!M<`|%O% diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/themes_swapcolor.png b/TMessagesProj/src/main/res/drawable-xxhdpi/themes_swapcolor.png deleted file mode 100644 index 5eb667ef3f7639ebbadc020bb5f2d62f03b4fe75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 991 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{+|$#=F{Fa= z?X25bB8~!Wo8vSrCrCJT{9>5c;-KQKAkiUo#&undLjL2)Pk8ryJ0$J;p}|Sv1#^YN zkp&elk^2vs7~d@Moipp^jX@^rpR`xx^i#a%d zWt>#&a49UTev|(DsaF~J1@@WACuBq`?A-0#{J0X5#5V~3;I-uL*_i%v*JV)V@^tlc JS?83{1OT1@ryKwP diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tip1.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tip1.png deleted file mode 100644 index c93ef12b94943b3410de64cd41056e46a7d848d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71292 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 E1AXYs`v3p{ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tip3.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tip3.png deleted file mode 100644 index 56b86dc6eabaa4377621cbce0a07fcb0a5ec76f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39766 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 bnw#6trrSw*PQim|00000NkvXXu0mjf>))s2 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tip4.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tip4.png deleted file mode 100644 index e973d9ae0e2157e852fadb742334b18777c87610..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31120 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 FV1iV*EY|=4 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tip5.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tip5.png deleted file mode 100644 index 6d641ffc434e5ee603e9693ccb67c47d92c940bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25450 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�k4ohpBSXla(Y^|&}I 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tool_blur.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tool_blur.png deleted file mode 100644 index 5fedb075f624daac9b70c9d57f06eb03ecb8441c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1518 zcmV32%@aaAgE0rXeycZasBfdH&D;dES@%&Y3w27WCG4pzlE6fxZKM2l@{59Z1uGsi~;}con=4egl7i_rPml zkS6OqVWj~NgO7mEKIFnf^Q4@5Wm5QhaM9P95x?fFuQz+g*(i85_-3RDMTeTZy5nWl zBacE?f-j0XVq90u%6e3El!XG9flrL$<@yyolR?LpDRx;$%c~}f!WMxKtg7){0#6S! z=s5E+jF~tV4d>nwBL(TF{Oz$)ryW-rHoJw&2XxIcaost$02Fh`suJIIu*Gf8@Lboj zISgZVXgF_PkCgSwSZULan+(qv6{k5sb1i$hD8AFzsc0+s$Epn9OJ&7tu7^Y1Tg&ov zY97KjfFcYjr+?^>hBUr=XLu;@~^!;Z&~q^Yf3`Q=US!2whmA zK?{l3qSmrgvAm7Op?tTc9^VCUUsW;U$ha8BY6)~yN!f#3Zjw*Bia6K$=*ir`1Q(Sv z%gr#yCKIG9rbL3)TK~?GGJSHaI6BP?(jPPQNMrMBHIkk%#Qcu${xszmvnn@`2G>p$ zN7p!m?90IwR|V&<*O(@XN*WAZ(z-l~FeZp(yF4N)ueDp-7DIxyZUoUn=&LP`6^)DHE$TsX?sN9W56|OUKOhCuFwGHKMUM@ob!Xh;D-pV zBq3PiE!o(Jtr-z6uDMShE9Z0xlmjT2Wzx3T zjcN280eYi(*;0q^9guAApt!Rf3}Yru$v01wYBoZ)f&a!NPCLG2c%&3jz$9@3aa$%W z+XCp)PesrkOKIl&i&4AngYRTr<>JV=#Obp=Zd@nMQM(WLzDX)ZuZ8vI^MO#oipgTF zSIbQnFrm;jH0naxf*&V0J2Ihw1OJX6l?jTRf5 z456FAk9pO2uIV4E5NgU*+b-JJx`W~ntPKut0&BZ2?pjRT%F*1$grF{zn2h*!U=nC! zRb3`7aaxa6OQ`DL6pGmZ_JhwstSMF;jqL+Sey3}FRuuRkem(Kq0(3K{g6{#Nc7qeW z@BbF)`O|5h=lsmrsI}4{t3sNlcUHsyC0A+2b!%Sl>pReQpzlE6fxZKM2g-Kf7T}^Z UHY@Gym;e9(07*qoM6N<$g6PxmG5`Po diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tool_cropfix.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tool_cropfix.png deleted file mode 100644 index d78df4a26169e0f84ef7348e27e71369dc38e5e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvNA9*<$Jm~ zhEy=Vo$cs%*g(KlS}eAZ(JY3c(|Lo#E7gd?_IpivUArDiH5_SjR`|-a*Xd>h%S(B| z@U^=q1&=bMu^{+GTnnPe=raRLJ;8j_jiF!@&E?QP;8_O`|zK9{(B!=zKz zY`dHG9*~>0Eb^OCMT6wwXB+e*bX~V}EZfMcImz$DHHx+iRrB!_xXa4 z-RX@r`H{M<)W_DbWvM*t^~+a&_h0olVJUfPe^DSsmLnwQ*$;aW6Hm3Dsc(Ppe0@Xe zij{i#5u4DzbNxBp7e4L}z8vXiG>MP3(192f3t=(*q2z;Qw$!9;wrW5uVG zy{{#AO`hFdd8S?N?4qFR_AWt=qn93uOm;Lp=)4W+u;~q2OjCZpOY`v0)=Qh{H+k~2 zqpnuH!IQ+VD=-T){$-r-M*E)jjNPF*3vLO2E&k}e`g3RMg;SPqW%A3;dE4@4a%A?t zcHUMXtS)d=?(-cs9*0*VhfmLb^C#xW=QUl|T$h__xSdt_c+6ySzT^*0CjnV4$FO~g zGY-5<+@!pBno^WY@E2=dLFuy!g$1lPkDOm9!z1U}z~X_5*i<(#ns{~`YuiyP3`~j) Mp00i_>zopr0IL!;XaE2J diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tool_curve.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tool_curve.png deleted file mode 100644 index 40381c79e5a1684b2dea1eadd83a8aaceced99a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 zcmV-61@MiIz}7gd{!)Q4d8v z^fyQ^(Nk|xPdylD<&#ogjwc1Li3-XQq%5)v6lkG&(oVkt`_N?gt>s>G-_}}Z4){28 zjycCziR+4Y|3H`xe|MNRHv#2TnG}ZMDn<-u}R`h|T*4KTzpD;xxbk zpzJKpg&{%ubHPzH8Q+)T+*-6DwJC$FiJ(@>0RBO+J0tG-S_oq#AUFeD5=8ClG&_$d z<9CCfMC=88gL$!)8H32Xg5baSTH0`#w?f35YfEKB$SM>PcYuq=#@V*4809B+r;E4l z2#CIDsN?k92Z2|NiL)E@A1qP~^A`eJb>3DL$y2(yu=&C>qQ5<+(2QI=Vse!t20}A| zx+z={Qy{t418;WocyCO;zQ<7btDX&gyCOyH8^qa{+uwkzwoF1&rt zU9jCX7dGN<5cHV{TqAttcX65*fYIP|+vfaOJCzf^GRQaHywpz4zQ)2}E!YG0TD#q1 z$T1DrH+yf7x0|~*@hJ0+SBL&vWg%E(59(IULn3ioA6=0z+EoUDj*03Y5x%~-${^5r z!MrpAiQ0PWV!xRJ?272^&fZp{k0w_Tm2L&<>f%Wh?OV>RVJX}Xjncmu`kL*Byw74m zPwE;!w!90rBA75`d{T%1jv~s`Fek_Rn*Qq0NBcSE?FoIouFH-sR}lVgiDSo9xi8y* zGxcOr#k#QQuFRb!kS+UenacgAIG7Sh#fs1N5qBjU%5!aJUp5+3r&_C*YvRgKRz7kcw%&E6cHr8GffkQkg zxGDVQb|J)caM^zr=tr$0;_TA?i^%tSxs}MN4l*AJLML)UGKa{sLFBrMuM|%!GYiif zp!g+%l)3x^wY)U;qE`c)vOs5_<_1<_5JIONDeE2qE$^Ak-Dp9=mR3Q7+!`VEq9A6j zw{ruVgUp)+ezgE+b|+mAgV2ZJxo(#DBqj)P$Gv#Q>5<{`y8LGsCRPG)@ul|_WvG-as&y7Y>%q` z{Z7m>*-!oe9+l+UIH8e*$#utAzY*KBn+q#~_0Ju($xs2S0-gV1#e!Q7@Gen=C1i s6i5mr1(E_ufuulEASsX(=$Hck0kVVX0+@^-O#lD@07*qoM6N<$g04=1;{X5v diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tool_rotate.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tool_rotate.png deleted file mode 100644 index 892d756491e266894d1a75f6a357a2f564f9e372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1342 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/video_mini_arrow.png b/TMessagesProj/src/main/res/drawable-xxhdpi/video_mini_arrow.png deleted file mode 100644 index 28b4d58864193c60e1ff11d2c4f7376db181a819..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmV<303!d1P)7T08=E4Sc2SZvnLj|0WnJAyWJxgJAB`}uk4=s zKA*k6q!bv)q6id$e-AL@7p9`b!dss|dIYSz^d-S_tO}c4eN8#NNsV2mzNPwkp#}$2 z-&1!THRR;fkA&7AT0~!ZL{m0&xV-6S+RBC=x0imUt9%#`0}#`fAB;#y7|I_ejNO$x XOu6I{8Qury00000NkvXXu0mjfW`tR8 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/video_mini_cancel.png b/TMessagesProj/src/main/res/drawable-xxhdpi/video_mini_cancel.png deleted file mode 100644 index e814c1e2e4dbf89ad688d093ea22d60776c16acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/voice_unmuted_large.png b/TMessagesProj/src/main/res/drawable-xxhdpi/voice_unmuted_large.png deleted file mode 100644 index 335279299951aecdb5bafa1c3fc8cc10533da634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2314 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 P00000NkvXXu0mjfnyTgL diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/wallet_clear.png b/TMessagesProj/src/main/res/drawable-xxhdpi/wallet_clear.png deleted file mode 100644 index 554426a2ae3395cd770f530898abe720be9a6d83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1916 zcmaLY`9Bkk0|)TUhOyk&le=NrJWM21jZFleWo=qe?GNSK1R|-mQ(Y2KA0sbe34Iqbi z8mdwR0wFW#jmBw^Ov@q>@xn%FwW1B2qC`DpDdqTOadEVl<^RFz+P$TNjrWNTrvi}! z5lUn3xARQfhL{)JP=NW5Sic(T6tnXNaSz4YyeWSu*LFQhI!biq4D4Z}1U_K0qiFTu zY(}japTblJNNDS7S6vH@8*2H+WbH0OD(xYB&y*t>q|~iq#AxBjLE)M-({rznp3zwTDbDdZ#~koFGmI!~M4*dveZEzrns4h!`@3zjX8?3RBGi zu-05<5h>GeUMGj7D`PH%lqQ~4}6Mt3a##)R>-As;mz1lh;dj@PYjWc9;q<~LP zL0l}1Ye_4}p2LpnUQupBm#8G4#W#2?sG7iyMR<=E$k?0Z%@l-IWlO%E8VRJfzIxfw zG}2L#FRP>}?$rE}>4&BABAaFz(L?mshoua9It}1w|DdLQ4UJJXhLrxbTXORm%+j)( z@`)}Sq8sH9S8hONx*w&M504|EaghEvROzELy#ZjE-tZ=|V!WT}#2?=MRa$TlMJlFm zH9^Gl>rOi5gc^1F5FN)zS=~Kq;zSPuAN_pD=}|F{^1icv4W`?%Mic0}3xXWuC#Y0~ z1^SWNt`QbNykR}*|Jdi-cTaAO{4$D-LYyol8*0-s@ey8qF;PAre}@ zlG}g>*Jt8ONGMr&lUp1&-Xh$#1Ba*Yf#gJ=3)g)wYZ4D_x2jkh2>auZjews(hCXB)`Het`JHUhTQ z0PkMQkDeXlr+r<{UlrilkaxXGp;QGApkv`cLGDp@hWJf(B&%Li(yeYNoWhG7cXw z(e5(o9ovgljVC_3-~@|@ucQ-v;Pv7vl)zbUHMmyow_yvOaZlE`EjzAl z4O)-svA`X5Jyfio#4v3J8;Dlr<0BtZ@+9( zePX?a_50n)C-fuA1Pj1e0Ly`+B~Y|3gBDHZF7#aW^tvSzwft0QYrx1wpx-!S5;KgN zsmoZgPD~2iAg3oXjV;Zfkqh8%-$S_4$5QbUV~?#gkw18jxfA~H*fvyl)eIdC;ZB5H ze@yH^(~D1u(mp=RFmGTmHtvjC=}yzM^(DDgDf)Nb12BNwj=nG?(f=q9}Jcy3&4 zT8ZzxW*S{z1L)P0%twOg89!vNx^>o%%cv-pBbpRvht=Z&=6A3%f)T2ZL4OtRr`v-C$T@!dyUR8b)Fsn7SHmLV?Y_$#W+5AMny z!4(?A_`h!`L>-8<{YCJE;2v|yK&8?IvbFDl&JNP|3T-F`fffr;r`6wt>L&l~amCZFynEIR`td6O^u$ zesRZ5M~JT!U(R@xe`&M6M{Bbytc`7tPrY_kXNd%GXD5aZStu<%p6sjUNHPKe3_vHR zOPI-xP+rPUQ@h0X^R{^zUR}wJdZ^CS1+l?)cHNA+8$`%yDM2T4#dwDf diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/wallet_fingerprint.png b/TMessagesProj/src/main/res/drawable-xxhdpi/wallet_fingerprint.png deleted file mode 100644 index ba8f18e12ec30e108e34e9bb9315b34a7133f1ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6018 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 JPDHLkV1gI-`sn}w diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/wallet_receive.png b/TMessagesProj/src/main/res/drawable-xxhdpi/wallet_receive.png deleted file mode 100644 index 6108fa043dc190ed45b664b179b4c7db660d1a9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)+)Jcxqe#=YQL@d6$|Jc0)hJb{mm zcmNSME?g+MPy`VM5w-nl)3npcGNKnsGVu$y|c-3(YJ@=|W!4$Tk+(2}4j?9Py? zTn5L6{26gmN&weMfPx8dAV2NOQyU*jKriG)RR{sSkq;rDSMp5-^iIBsfGEiO3W$ch zkASGiy9$Voyo-P+$=eEumb{ICsL7iIL{HvAfa)cMuF~XI8SY{xgj@{*y4&b`NmD)O zg#4JRpi2CxckwxKt9hOeD)Frhn+VVm>WsV)2rZyf@*-eDJ_6YbIG^}2N5Tj4n zAF}nHZ2@vqpd4aiyxzYiY|Z*3^UH{M)vW)Sw%J0`)h=zGVq3NaZ3H|3_GSwhD9-v% zGot{0O4-nRxYx$^6m;R4r%&T7?BE}GoAv|vfu2Qu#dwITDS*%NeFbmhdhiAAEx))N l;$*1cW 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∋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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxxhdpi/icon_4_background_sa.png b/TMessagesProj/src/main/res/drawable-xxxhdpi/icon_4_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..87ec9b7c720f157bee7739e7d893c3a3bdd35eac GIT binary patch literal 136950 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%0DX+B5%i+

    HSXa#&TU}I9oN>(AQk)~v!i$mL#P8^WP#lfBzu(b$WfG| z1aaj(ph>Q1=%a)jq(Tuv*JCKpdhr?Iz-9ichVu6_BCf=fx30wh4Tgv<=dOg36-ZVf eS%D?60)GMQf=BUhsWB)30000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NHDM>^@RA>e5m|cifRTRhX&3sV8 zN<-_xL@MnilSGXkj3|@{MQuuYGtnMIF~JWq6bjSA2z!#ChoXq2z+NI>f)X=B=tIYG zOeM_%6)GeAh#be?|IXdlb@ttR-*e75j?i83=d8Wgf33atIs5ZeDs5@Mf&cd#s9vk? z_xARVBi7^K3Ge{86Wj_ef%Bjnbk?z_TCIMMKDa{Cw}Dr|5l~cq#9=wO{kr#pMn{14 z;4J8`oF~9KFtkiZ3J)O~noUFRfsv60yQtp-PJmNj2pA6T0}q0!Ae5|z*Aj--UY-LZ zB>ytF41D>Siq+t*RxQIB1(t$+z?U8>mbQvf*iO*l;1js zI9SSo=%M7lr2dYSUmhDV^m0A~zHG|l-;zUA4I5v!P*Liw#~LJ_CbB;~J7WA?^#q(9 z2)Zzra|se{tpHZE%8f4(s#3vGOXVLn8v2$}!3sFh##>&S-%-A)K!`pnP8+;H8uQ6v zqlQ2Sco!T5e}Yp$8{G%s8IUK&E_ha+Ez|)#wZqy?>Nm>C35$I$=mxFi7=)Rrgs@Kp z7fqo3==t|7$T}Wac|O)4q$=2G$vJdQ*7dQNs>l9{7iWHopRwV1)HokTkB&iXZy2sq zyHH*O3+vd#^APZ5O{QT}fT#`coN@TVnByuAeft4p? z+(td@kBrBGhQU+dJZ*SVqhHE%Rbp#B-$#9p%5e16{xaOHAzr2q@&V)UPR3{oaP0Q4 zG2b+73_YX5Rbt)1$=ex%DL~laNIX9`rkWaRR5vLn$DI;*+TpT;WANnwCs+ly2g7H^ zIK$|^s+*h>n_I0e)B#-so#;FtlY5Neh|%+^)@N+O>9nym&Bss&bcb~kvOC*3r(A<) z>~f^gXH5KD9nb~biEdIc`P&#K7(K6QeNwyZe0Cv_t*^+SQKluoocO=%D!3Y@9nU*}|=b3!iIzcHL$Ax@?a@f#K+6tK+# z_7GOG@}1VYJEUAyGpV#4dI=vZQ9rL{{BjxRiZ!ZxW+{+4z7k-FaWfUDhc zg=aWSS?j!8Dm7d*<}<^FvM<{CH8i!t%>?%7aF+7j7R8L{ zTD!pUb3bwN|3NkVE;0%zDuB5ta#8#(t zIyh>Tu?IVfy=&86H<*=#9|k?jye=B&%WtqW)9H|~{$u*`CKbUIEFEo-tR(Bt2X*Lc zFmaGlD&8!~YLfY)$)>*tsncZf#sQRn0&$_oskovxz&Y`=l_8_53# Zt^hIz_L{mq%+LS;002ovPDHLkV1kkEsc!%P diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/payment_name.png b/TMessagesProj/src/main/res/drawable-xhdpi/payment_name.png deleted file mode 100644 index 5ce8b3a4022ff5da8c298269647af661031a1531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 863 zcmV-l1EBngP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NE$w@>(RA>e5n7?ZjK@`Vx7KwsC zK`|JDidqO3rn5*RLMjQy&LVJ~BKR+)vlY?_+QfiZp4LKYtAG|3qDhEEK~Yfggox|s znOpfX;j%NkJK0;<2Vdsx-h1Eo<7RhfW@xC9rUOj}nhsRifmV#*Ns^4fyC2xN3A(LT z>j&fD3P}%xJKzQQ16*0>#yl7wxGG5M3RnR?(#2>FMEUoFn?oWu!6pcm4h}ZOsuL2p z2HffLl6!4%5{!UjU7P^t)iVUsC*b6>I>Nc0c>5_sQVCW`Ta& zCm?pGffoLr>wP}HrP&a0FZcygd5+@!P-1&4b?l8dN=wd%h@h981kU^TsSWaa7y91t>=udXkqUZvkH= z;2F_FRQ3B1;;6QH3s@DBb3BZ}4>A7J!m%uRe3gXj{Tj6vQAB+|WW54LDdHPQrCv*k zUJ>8%p}6;a;}jTBMImeP9#nI`HpGOZ3`cN`o7KfxE)OCK2or<7wMswouQ5w3IxFod6*MB=l*Bak>`s(fn|k|5 zrLtQaZ#RzSkmmA#%qqaXu&LOqayP_{qd9DgpH;xBc)Sxmn%aB!uSkG3(Zf{c-$n2c pw8K1$SyvUeSk{eq(}8L_@E4K7v@3XJrsV(t002ovPDHLkV1nlQaufgn diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/payment_phone.png b/TMessagesProj/src/main/res/drawable-xhdpi/payment_phone.png deleted file mode 100644 index d74d70a9da55bcb772232bf513ab52e5dde08352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994 zcmV<810DQ{P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFOi4sRRA>e5nBR*{Q547T88i$U z`4uxfAe0B|6l$)uKMAk9FUfqG^jsC4i`q0mCx zPOt%tf7OBf2lxu2Y>3J|-l<2_9PlwpxvBdBUs}saG*mFyF4`P5wnPt5`w3}O zRq$h4Q7rFioi`=I);c2FMI5n1AaCk^!&iGF+zLV1fDw8gz7LF<*eJZi{>CegxT{9& zXZVQm$KeOO66}gW;9euxrH9@2-uWn=2Hv{L@lSduHcSv=k2n*!9@f^&IN}?@pqYf6 zIxD>t8zu_DU1kD8?}H$$y?1fMHi3R%?L@tVPAYRKZ$oev=nIkDmo{>5>aBDl^s$Au zM}gd4<+3O@TDcTz`GWqQ;U{AVu-6M&4Ox}gcLCZ2K>i5rKR9k#dqs3xA~T?45pvfV zHivItK}*J_{(|$HI9LAdH#RB8R`kVqYoa2GV+tygcZ_KM3Tz zX_(!l;(1tQL|oqVYGY(hw$v%`-N~Z5a)dqv-JlIDc9juxZ@*1$o5X!Y$OC=}`~h($ z&&5+9&(b;22h?6CE;ecaRI~zlkh4I}^@-ZqsQznOhjRJv=mfWcJkW9Wm6gB0F2&*5QUVEW?e;uw;_ z`gX?t><~wRMsy$T?I_WjFE?9abOhEL~l8r+33&b)_{yRt=blS45BO^DF zhhyaxBe6rANz)@LT+W|2f75od%KzTmch&71m=B)=f|~Si$8YcUTOP2|0SX&d9w@Mw z)AatJ{Db&{=p_+dD{lm|U8+!;9RASr@~es!b4^z~SMR-ZWd8ceE;~Zf&o0qFQU0Lu zqN%3bp`Xq_c5o}{=+B9{*}^GfJni+}yze_-n(GDq?PmGN8KEL1L|RSENs;z`e)b5r+dCKeB&~(aw~f!q6=Y2Jt(TN8mA8!T{}-6EPjdFIM~=xE zPyJ4D{kVPXcik)2%WYO`eZssv6|^Trq-%2KusW`1sV#Mmt#9$2r1gvEh4RsPamu^w z*}e15|IStZ;LUb7>d8NIy?{7Fb5!32kiQQs-xXOBYwOs3dt=}(_ z-~HJrbb3-l{|g3lzFWtGXYXlUv)S{+L#{8p9hY-DPk&)|yT0W`eXr&@zqtvCO!+fP z4*O2ooL)M|B<1tPA6wtgzso*N{`U6P8;5@h{=LNSx8bi}&hIMQ#0?oa{ohm{Y?+?% z{_v^;`OC9cU;O;UwC33Tgq&nssa&S{x0xoZ@^QY1%*#~kerz_U;g?L#|9diDH|8*( zsxV}*i*DHt18x2GHKWLAHILKK6Ib7^n_I=8(Y6jykxt6^(WB-Ut{z`v;x5JLJaFa YhIh7)m`=M*a|h)EPgg&ebxsLQ0L3qic>n+a diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photo_crop.png b/TMessagesProj/src/main/res/drawable-xhdpi/photo_crop.png deleted file mode 100644 index 50e94388698c226fe3bfb0cc5024a931a0685315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmV-S0<-;zP)~i9r=5+Rm00ROh(EwWY{fpky*Ap3 z{(*of2oW1gEfle|&?bWCH?j-MGP#{I$=(VxFzoKUUw2_IwVJ{|s6d|Q4PeJ$Bc+gs zgu$#sZqy*{lL2W0$pq{Nq6zpFiG9`%#ICsSZ-fYVJ+5Hc1&+~~fmMc<4hadI0Htv1 zMh>M%sbWCx75sDHhHF2xx6eQx5-i}?3wUK%GZ5YcULc7hsp9VlLAYrYibiO*i_tI8 z=|`@gu!AJpS(XJ8$s}H3jK*fm$ezLQw$%fVo{w(HSux2v2cbRSv=M&CIt5?f=FBd( z11wWQgoA5|oJ0o2xP@HH$WCHi06v&AyVz%dWmZ7E@_bSPg^*MN%(x5}Mh|9E350^> z_?iG$m6$Z`K+I}$zO(~eRbtY#12L=3`O*$>Rf$Q{4#ccB=Sw@lRi#JTlhLQE>PyI0 z&o{D=gR*?w3Fgb_NJr??F*@PwE8j{JxN{<1!`(G_)pO(rx|M#FSV9!{Ks$2Okrwa+ zSOs+8w25(Ri=CtDhrpEJn1Z(zl_YXtg!W77No@aFMl?dMb+lj+XZo9I8946p`n0zn z(8$~k@R_k&euNk!10i`c>L$bblfH#mTe1*ide a75D)O!heKnzgboNt-dM^ebFP*1{yw|HNw*msvIJZz zcn?IdPt$X#i#c-LRV;xo#?GO^a)H@Z8IFM2S$r%je61Oe{`zcP%GmUl$;fz1`J9P= lBu=zE`x=$JpTEXPJ2>K02g{|WKY*@b@O1TaS?83{1OWRtMYaF{ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photo_paint.png b/TMessagesProj/src/main/res/drawable-xhdpi/photo_paint.png deleted file mode 100644 index e9a4a33e8a63fd083fdb7452adb2cebb95567833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 901 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photo_tools.png b/TMessagesProj/src/main/res/drawable-xhdpi/photo_tools.png deleted file mode 100644 index ba92d5c7e728cdb27357f20dfcb7d6122c5713d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 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 M07*qoM6N<$f(t<8 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/profile_link.png b/TMessagesProj/src/main/res/drawable-xhdpi/profile_link.png deleted file mode 100644 index f018a50d4c46c683feb4431b958c1b12980d5d31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmVnbO6?I38Rl&o?SG zBwjZkF_civtqL>S=qc=+#L!ZXKc~>+t zqi^|+iL1g#841FWw5!^s8HxxaqWk7oVXP8zEsqdY5v9hJY|3m(=~$#wL{b-#9^~x- z0AGqf03H?8CdbfJcs&BJ_{Rj79MQ`uNA%}K-pEw`8*cexvEUi>o5y!Bz1Ez`JxF+zUQY7BneHN+1it;iK4&`T`S|mmbKdhjPY4b9-$c6s;|gXg7zKGb z?P=kAO{-R>^{yBGm>IQ@8EwgcyU}1+w!$$SBjl0+<6xw!Gkgm2$;txAR0YU@Lb7tM zW`Mb5jZGfJ20uE4gh<+F24Sgj#muO?SYG0)>u9& zNid%rsR-bv-(bkr61yIY;JxP&@y6~=17u@jmTyzC55$E(UyMO9&z8@*}P+EW11Pm*<_RA915R;H_U^ z!qK9ptN0bn>s#a56sw7)cmYxYEA`pw5?y!PX@(Mg5Bj{yyDVTq&l>GHW4;)5V4c7F zgsF`K9wzE{Xk9*)br7A!t6c{0!uARu>s#r7xp)QlSDX!6jHVS{%cbL$suIrSw9>H_ z#qX1};p1}J-*&=-p{)?@6Y@F{^sT7?4L0;2E?uT>8rPDvzxrw zfNjTZ+mP$oN?+oW(`;Hvb^ya6;kx(QJoUj^P=>Qp`-9>vco1p#Er1<0nF9vFZ&e9u zm0w^m)AWVn;9ZjE9f&K;3=j+TZcFmCfimPVMWdUk0Rv#twTlirg+78;sR3`mqC1f?1Xh#A^(q*OlyZyUb!xyP zyZGZtq}19;v2dd0uhAZMJx&d{<;%goJ*JIBD|1w4ZgXZ8c^UxxEdNF zt@Mng|5<4i(-0QxO9kik(LKxIW+*!6Y>93PMd9}^t4OC+`@p{E32LnYaqHH_Paa;L z*#~{;y@fLK0nv5BQzRyK^v{CY71GZuOZU0e+X#i|J~y^I6mLWQMP78L-B9gu)n`Uk z8xK*tIxjkfdP4uRqF<%_1aH1d{Z>N6j-Ja5x+dSFuGul8SGRWUy7iig@chtp*;!g) z!k$#NXCkfEOaZAgY3bDDOD5H2=f1AeVa#l3$9=QLbR>?yY+y>mcH2A}5!wFEIRq46 x4ImZ)VmZKBfJ3_?K%psf=1gVyRg<$s`wPvRhw;7VN!b7Z002ovPDHLkV1lERC2jx! diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/search_date.png b/TMessagesProj/src/main/res/drawable-xhdpi/search_date.png deleted file mode 100644 index 638189a7bdbde37941848f9a9f99d356304c3201..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 601 zcmV-f0;c_mP)%wZt=lGBB;&5)ku%#8ml)K5v|qw!nl&961UizEAjmT_#!r zN8kZu)oKu3f*mmAZ3U2Tf_LDv-9SERyNJj(5YiH{C!k;F++!=Cru%7(Qhf#tXc9Hf zd=y2Wx}V;#0JUvQ+r!D~_wzkD_{PDx834PMe%68k!m1{}!)7{pGYq^7dJJWD&GSyS zr_)RG4zgkVQQfa(T3R#6kG&Ax3E}_hS}lO=Ucr#Xo)>gYuH=?uHU-I!?E+-ZpYoIJ z-5vH~xtf9HJp|Aj#a{Gu4 z74V^|3umZ+i&{QnLj`=O>cZJI6?jIKH?7Q=i$adE=Fp_lsy4Y+72w;a4%w+DoZ_2h z#fCgV%$CSe2m9FOax1X`+ks~M!0rQe1eB*J{o2{6ORiP0s576i(+Fo(1)URbP+s0l z(Dl;lu&&3?CP4(md9V$9U2fgNZK_~3L+dRh*%)My{v1#@2Udq~ncv2L<=Gjy(!aMh nA>mO_ASe(N2nqxRS{3*L`Lj;;*z!fA00000NkvXXu0mjfXP*^_ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/search_files.png b/TMessagesProj/src/main/res/drawable-xhdpi/search_files.png deleted file mode 100644 index 3bf888576105b2c1c4f98cc5d9ebf11f5da622c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 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 Ef;InY`2YX_ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/search_music.png b/TMessagesProj/src/main/res/drawable-xhdpi/search_music.png deleted file mode 100644 index 8f14e0e0ded37eb95a5542b55579b937e8491f1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcmV+!1LpjRP)%)HoSF+@$&oNV z2OE5Oyz>z;VYN%%BxwO8!(c_ouC>cmx(=~f5xiTvFeeeN8^X7MzdI+jdKhx;{$dC* zIP4~$1I{{k7EqXQDvUR)x1_-U*A?M?8j5!f4+8c`{47Ez)+AIofU_5@rrdT6^n>`J+)qN(FMdn6-3=_XWNmM9QOfp--_rHj zz!qUz5kHh$7oyT{$(y9e#~tK)y)Fey_%pmFf0S6ROYLDMhru368Wcagi|Cl#WLfSq z!HY%8mIExem5mkgxOtyT$kpVH_UIdDRk>$1of{`F*kdwREN_)*{4wJb$+2(GGoTmP zBk(=QGMlp;vlrn0KdtSnON`ukw-%R=tk@y zo4GOPL&eFNH+hhZ3l=xBz9ueZ1ZZSjSi!o-6 zba{aJlR$4)ed~vAQ2mvifv@0@zqE6X-7|zwfH&Y5C~KOdxf5Mk0fiUA8HhD;EVjFd zwzd!jpHXnl6#b6>7VLsA;4f%qeFPtXCqSa@4gQ=hwN9+FhIlKKwREtuID5>r@|{= zh2ughVsRPXjWWEU=XHo<)C_zyeynS`N_}FNUBIzZddw3;FQg>qxEkC^NSl#xna9CP z@U+=@OiY}Pdpw3G&&?gk9mpNX9mpN{uR3rA`PL&~I}F~_00000NkvXXu0mjfUn^NP diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/search_voice.png b/TMessagesProj/src/main/res/drawable-xhdpi/search_voice.png deleted file mode 100644 index e1fc62a91dd018990d753edd60f7bc0453cfc4e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 798 zcmV+(1L6FMP)Z5=n4QT!-)20{|uXmcy4G76jmzrxDh zSZq@%7m@4;QJ8dh9<0*>AHrKIPrwhUya*rTINjHA?-|7xz#p3#(OG3`7oCy#F4@hm zXPjb2tTOn6<%$!X+F*ZZBt^lt-TxZPZX1cyTJE+{ogFFh^K)dpDoVA0%`W>JCx@c9 z`8lCq<#DP7R8E-MF)tu>M`PpV9f<8%YX7_gsXH1QuTeX|-{OU2j)JaG|+oxFf-1<7~+v|ohE)9CF@ zAigrk$iLKl4zs7>6e8U z3E$;2F^+yxGUvF)6L!nTt3@WsC719n&gOs1{Cc0m%K50jvi z>sDTAlM0bLe%Orr!A)Q^7sjb=OvV$IRrwY8hN=ni-40qhSD4)YyQ|Jm;zvR`@17nr zI0^c@CBQZS&VaYT=m)}hw>f3{j%_V-4(%j9i|#Vm=xm>n?}De`1CSg$z%V!r27u9f zgj2ki@0eoEIg2<59)TEI#Q8d?@5+qr1jQTySHVZnjb3Az1+p8>B#M(8Xb4;YM&A*V z{2OJ>R!zYjH&tDUW50#!s$s-J$SCyBYy1^nxNbdaG;43)S;8JsGxdXWaxdXWa c|8WO?1Kw5f+i@EGD9cLe@xPxj^z3GcU{Am1Qo5 z&CJV`xnPMVcIuGWSjRr<^gECL+d2RLIsf@Rci-Rlc|Pa)KkrA=Vgx>N*h>wq1nH)W z0MDpmD>F#aya!V`PJn3fmNHVkG(VB6^xzbo9A;1=%_mVxCvKyih4BK0a>vj_D+gFc z2E*~upA@plr;<-PM-S!nbq`48g|2cvMNxbMD4|*BtfHSgzz|wgrBAGP^zYI^uDIw4 z$<(U~w@7jIqY8Pc>Kt*lmn(C19Ah_zS~Vt1V_RqQN36HwoFJoVlA2!_8f&6PY%dd- z=7p;N$D*4SE7Qt^mg)|v{hP7TEcMnQBbyF_QUc5iYg?2Oq>aHkccZjWVGo$BHj6nr zwZO0hH-@zn1}#nJ-XvNF$##gHk)>u(<3eZ}Z$zDIhqx!nwVn|BMcrow^yP;n2YW&+ z5Vh8d@Jp)Aq{oXGFX~4tVxFWPnDk6qcqgTm?66kMTctHH&{QKNEtv7Ed)M7?2$xGc#Xo)D)*EwMusOR_0(1Zn&f zHN*a5(`7v^Oo$B*h~1(!N1M^-#qdz4jpGc}QZC>RYxAj6S|vW+?eV+5w|0nW>f|m> zXwjWiSEK&XO=ng23*!cCQ*~qAy%?u`1B4{b>FkwEjp@$iw#{SUrW2$O$8`1(2W$^}jpb@BTcgJLb8Y6A zp~@>xvz^uCk;gj9xWs!yzS{!1?hMJ~k?U8|CDLiIsMr22%jh4hh}VwI-zP`jC5b@7 zm<3!^=dm$9aFi^=IW)DevI Z;4eyzpjdfKgoOYA002ovPDHLkV1m?TwTA!z diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/sim_new.png b/TMessagesProj/src/main/res/drawable-xhdpi/sim_new.png deleted file mode 100644 index 088e1b3cc98d61948ea6dbf093c322ff4bb62e76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3976 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 WJGKfo=E5AUAtnZv`enL~5&r?!q7!HU diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/sim_old.png b/TMessagesProj/src/main/res/drawable-xhdpi/sim_old.png deleted file mode 100644 index b136bbd9a241eda666cabe2e705f7e1ee1d53f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3106 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 LNkvXXu0mjfZ^zoo diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_flags.png b/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_flags.png deleted file mode 100644 index cd5275a38e183137bae6ecd0b43d6fbd05bcd65d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)IP{|U-!4z{angm5$ z{1Z6n=AiX{{&_w_J`I9A25Cp*; z2*!#ikW}ZrUZWXviij{@ zUcZ_cJB@ONY&JcHS&qG?#n@?-lWbQV!(8lpv_+{**R0iA>pbo@Gb182$l-`9W0>n~ z$3a&_DV*maU&t%?&RVlH$l<;Ci@8=hCE0C}$x$rl+w4sC`@jG`bgNcx`bj~*4oy)U zD-7A?Y4>XJgspy8&~HFN-XDhi;+`0tYjjImRmU(D8nqj#SG%Qda)T!wko@fG$fm*u z$=fl4Dr*${>J4@AH<#Nc*`Ok_sMUj`=ET34=rKR)*K4cAF@o8SqDO6H@vP*fI14k? zxlCo8ftMvKB8y$fX^1jt(1%YWi*D>t6=iU)&u}cV7{vN0ll90)7Rhr_CaWQ`NZO)I zRzYNuybxuw4kC*@UW+n$3%SVRB;GeE%3zw$aVWC*7W>SIGPuME?1?No(WfTL;AVr^ z7+I{5JRD`vCV3#TSZoj zSf=_!@`D>=6l#1U*=cGN&n){S-R^fz3^U1vs!fPtsw}Zza>(2$jd{8Z>2Rk-T0C#3 zuY9T9GIv?xLEGddM>Iw0%+l_(ytCV5L6pZ7k2t8H&oSKw6dbn9MKKoYt+G>>EuPV= o&b98g&K8~C(Q3X4G4B8FPv|6OaxVQA-v9sr07*qoM6N<$f*^uu2LJ#7 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_objects.png b/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_objects.png deleted file mode 100644 index 9432129ac6b8152dc16a976bf2110e7439f0c0fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725 zcmV;`0xJE9P)u*b&y((uB8SUCN@N~&(zt6+IVgyjnMx}_@lsy`OSX$?bm z#b4NENW2ac%&_6$hoR+T%R=&5!UE4uI{Q_%+Tf$%8``^_@FCh z$Qjh|%zpbl(=aF(Gj#cY2a%OCl9MsZDkbkEH8sgQC97hVlae!$l^rJW#^#t~n=7Uy zQ?A$+b8PkolXgUQu1juP7EK(N9FHcJxh=UK^I@wp>MleRy^`K&;(|KLw#NK8Q2NgMM*JcIiW5&6$_(J4OKlcLs3$U8G2Mv(-#Zpm}$IJ zh=_1RawH-`!And#7K`JiyC)f?g?Jo9*buH zQ}#s@`%GaVT0yVmuDrawyu7@-lHODpV-8Xf~jc65}?)%eyozXfrx#+1;BSwsR>Y`1tWJ$wsnLZu}{^C|t00000NkvXX Hu0mjfZzWQO diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_other.png b/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_other.png deleted file mode 100644 index 591e9f77f9557a0a91656dcbbf4314aad2b50878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmV-e0;m0nP)%-6vpuhXk?uQZ6x{yEPQD+R-mOeHe!H}qP;!xQcxOVVzshFqlMALUNPCuQh~x( z*2KkyK>S%akeOj;cV@#@u&29c?*3=ax#yne1cKgLa0EE4fDuz_ern{jFFtr^G#{X3 zN>ew#rWxf=;XJJeeCYW(U*RfEt#Cv6X)Fz8TL62rZ+Q4OmAtwWW#0+}}{edNyDKmBh+G zi?w!E!A3Tqk@&MvXjlVFLZMRP%aT@#0UCJ#{pO=8h3%+bCsV$7El(B$l>BN@tB*VS zasvVrDk`eBv8JNpkqZf5+;)8h0K4`ZPYNZu5FqrY&@n9xDEWbf-T?xW7WQJ_6F@OL zRDeD=VmEu}w(|!IxQ;FN1OjJN@zIIMH@>gX?i2@HRtFDU^cK8!JUY7deHX<_1TU0> zTfXD3ui%Yyu_lzh?56c~ljLhYMQ`{tr4|NK*5xUR1Ih;vxS0yk*)}1X*PjQl(K5-G zq9ng^EVCcfqn_5GWyYKS4Q#nD5E!60000&!90l+fOK4)DktW0qr4U%Gu;|OsGWWiDZ)!|TxXX9WJNLbNzdz15NuI9% z!P2MXv}xC^sHs_T-L%t6`nE4VWZVt0b;G!!&cz2@RBMXeF>g*;*_?TIn$K%48t6p+ zlzXYfq6uzG*_A5DWF=gCys+jn*E~T&DG#Wo?eMa3(nUi+qmEUCsG@P@yEqkwX z8erD$Jn}uRfZv?R{l_Q#3a;pBPo4x-FBCe|gQ^<`)s8p}ZaY*sC=R&|hO)0F#Hod%rVp*Zw1bv9!f4<-tdk$A19G6KcMc_0K24)Gp)ch?&{CkA%4N% zo(o|6+{Krzzyhv4u9%q{ob&+mo(W*xu3@1SSixK_`B(gj2calRk|Z&QKUyEJp`1hh zrS!_rMj2()I^4jZTVNuCGmF)Zj>tgTUM{p|z$VsrSnBAKeE=?Ja-x@bCa5RGN)T76a2zs<_({I|ATg5%Ip|pq$w)FMyRW1&APf}gjzG{z;=efiOeBzVjDwX%NV<0$*NUL7XGy{ d_UZZ$)+6cCwE^W^aT_L-oQZ!;WK2Q!-FWjLuigPFB#;( zH}H}U4jL(Z8n`pFefByR8wlJBp)aMJRwE)(2 z|>d;pbZ!LsJOqrKTOm{l1D^n;DqD6cYUQdMlGY=Hg{pw$5mJ&gUO-Jm;m z?V&>)XiWyZ1H(Cv;yHMpV|56;O9Hgp!>Y0zE_y&uj@2@&*z+JaU<~x;yv$@kN*@@@ z1-NSs+vv%v0r@Bf4bU8&P9`F%I z8iRmm2|F4cVJRN)8Clgqz)Mws*u@>yve=9VY$EG+0^lss&f3mzdwZc9)XHK#99~$E)^jQl!|b%3t4Y+u}f*U zpIEMwt;{FvYY#V^p`rkJG@M^8^P9GU-M87#r)8!LMv|qeAoop?bQuh*iks#OmM!-q z*)s3uzZ71J`3bMf(y=_zdAZ?p>3FAD@teMwIDaH&x>)ghS-x+XIhXG>?&`@PbqnT9cyd)k;QvAV+5>(9ku6o@1gGlA00000 LNkvXXu0mjfYEd}N diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_smiles.png b/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_smiles.png deleted file mode 100644 index 598d23514b8dd401756f3f25215202255e7588f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1295 zcmV+q1@QWbP)t;*Whbx;Ou~4V6kkW#bzUW6Fkx@|=L{Xz4qzoeZ_>n*QkwKu~pFW_1 z3X*C>VLxKYTvKVaaz$;*{$!hp)Z1}c@w?oKOV_*Vc} z1K?IU9yuruHadF&bOQJQ!0r-!2w5Pr$WoH8k^G&L@fXP>B!80}(Yr8?l6;HgvMe^E zP$YzG)*c1$G=Ov6`vCww0J;GT0XU%0G0X&TA%MjIt_E-ofXiIlKLKn6@FIZGIKxpP zly?SZliV5_#a@zYNj7JkIg|59-bS)J)Ype3Tk_069s<_!XU^CGl8=zACUUs9g{uDSLNQblgc2NTD zBoC{TFG$v%LINf`WZMqA6>$XWVmR1|ag#f!HUs!K`w*0ZO-ef~pSmSOiZWpa=8^nL zBd{;SA$29myW{rnkk}@07s;zq^qNS1BOeCMr#u8!lRTluucjEf!!7hdE&MoLBlxv+ zkCVJNrSDB{Ev%06H7SAu?6cL#vu z3Hm?E22uuQB1jIngQO`XPA?|8O?_2XJ z4*`?Mon!YWICQhpf&kl;ip+L8R#~l7dOjXku!Q7Jr?(+48%-i$#mg`1!19-Bg0Tmb z_68VNn@*DNtDYX=L~KmyGpNC>kh;7G0h2Ax6U??nli@i$$k{TijLX+u`AtD2q8PG>l;DoViQY$acQCYG1ze0yl* zcauCntTz<`P+9qjGh#{BQ#ryTO04Z;F6OCwp~!VIRRSinNWLE0S-#XcF)xSX=HNZL zqV#wtbbh1~D001CQEB+BDyjhc0PF&=9l-Yhe%AGRoo*K9D6hI6z)Ap1T-(C{o&&H2 zz*wx|60X<1wCbEV#K{;VIjX~JM9*UpdbUNslyVVJ`V53&S>=rY*6O(-MSoN?v=zX| z0QO`x6g2}U`%gYAhQ<|22bB`{ia;rU^3_m74W}~z{0DAt_ln#Q<@Nvo002ovPDHLk FV1m~BP@4b% diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_travel.png b/TMessagesProj/src/main/res/drawable-xhdpi/smiles_panel_travel.png deleted file mode 100644 index f0fb87289d87f3e72e355e7ea02fc01f30a86a6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmV<10wn#3P)O#St3z6dZ zfgg)R5D|*8qF_=@XQ$F$FFRIF$T z@R>61>dQ9W29C6R?+$_OS!M+fP_nXRz)B_DS9rVGV0-(Iq9}3%eDmhXe)|=j@)#w{ z+5&uH4F5T$XutmSRIh8Pygb-;aXFguaxFcvsV?zv`Bb3|UGHJqO&YLHs6$Mtw4wDr zLK-mN0ab{_I+5D?;6UT~eM?Xs4_6i2)%bk49?CJnU~_=B6ARyW)HuT;JP{WCJU8tDfwFDq;WT`$>n~Ho5r2A zDES`7-wmZ(K?TLS;>#nMM`o! zL(x<4Kh7n9(T)J;@T?i|>@^^Y9B=E0jwd5$G2RSF$KX|vM{);wq%O$WfKIMy6e*&T z3FzQO_>KUq@N@1mx6hJnz$DJp5`Ibiu%*&{-n^QxGni-uyh^SswW|1IRS?9PZ6=;f zHu8DR*X8M)mAax5-ebejI*?;a8gt7_dhLS9LXpW`n7Q z&NLL}<>~=Fh8hlR%EmXpssBu+{e^VkGPC)jC$+VI*fRV3HY@LyyaXw6x&T^e`X~SZ N002ovPDHLkV1iJ#YI*A1zHh`Y}2&N=^<(+apZ{e0qok10N> z*&ZjH(B={K@y>9QSvF{K)MZ)i8sfhp=Ytyk*sBJV9JSYPbW1u+jvL`-OZ~upJxbp4 zTg?`FPegi)&)KqO_Ie?o@em3MRCK-^)Eab<@qaquQG0!TF0?p zRg~j2ejV4yBr7b45j=w)w?{b+;h=n60~57jz{VKHLy`xh9FOBIcgHpG8AJNbjtn2s zhaW{bR!JU;5sX(ABUr9rRb;63C%mFMuIBx^u`@DM+vJpk=EX3kIVQQ_V=;^;^!cf( zxSDEzz~7CFBJ*6595pqD@dsebhnWZvDGQlbAQyE1zID@?=#i-;odeMNa0WWHli!2pd@rLOU z5h_%vh%m3{t69U5v?GuSt46XT6!~)thO(=k!Wm zGdD`ys~_KsL2A^iRS~0dr*6p$=En%;dqL9e&L~i?1BX;bM5t5~W03c9HA!obf zW%(%ZGn_R&iq!gwPemCvN_MGzM$vpR| zFxBhmG9!vClPrrOGj!p&X)(lYF5u@;WVs8HJ_odFb--CWBCMBejtpxgYa+vD$@&Gkh4v{e*Ml#&gs{$-!{332yHkS z1!n5P?iiE2(`b!|P^(Wly=o&OwBmG>*oz($VhqOV!rmC9QHvHWUXr||MT-^>#vpsq z6(u%F7RDIlwBv}n$go7RBr?=Fg7zq}K=S<brFw7iSgdR?^MJn z002ovPDHLkV1mcGLdXCB diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/stats_zoom.png b/TMessagesProj/src/main/res/drawable-xhdpi/stats_zoom.png deleted file mode 100644 index 2024190ec10d30834cc384d0183106d9d881457a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmV-V1F-ywP)7u}G8HM2SkQEQI_8 z=`GV(22rpH1njgBdqo3kqu2yeCE@RjQq@U~vBZ@Rg`xzO|wxCP#T zJX4NxhX!H=G%^X^gQBLI$-XXv1{T0}o6dhRr=5P{AYXI7sdk|+i$HkM?}o7&y$bgE zO=-@>l;hi?pWoFn>NDVv>0%52HrSOXtQ?oCn#9C4lUG|w9H9~LEm7wB6I?7xt{PX% zWyi!hQk17~J|as^z1HV!VG>sW!)%MC=`3~16;y}DFtA_7)u6(RB=}aFz3+UAJ9&3x zRCO4F{F)Jyd#XdKR+%_F&bd~wY6qbeBeqr*Kb&iZccoL_kT;{<@u$8JO`K!yxIgcW z*ZDi~%9|6{SvO}jytM3L$O4WSiVfq}X#OVSdv-3(S1yaVZ{n8AYM7LKH}^Lj3j2ck z;Zcrz_|@9_7e7UTp}3&fF_xI-T09OjHL0`rNQyDn#>XNIU>_PFLV3#tersK3MZ z&8Z&r2XA*MzjDC?U`?DM-@{Ou^gM))flXlT8H3a5Rn3TUfO4(^hZ^DEE50#002ovPDHLkV1lKxm2dz6 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/stickersclose.png b/TMessagesProj/src/main/res/drawable-xhdpi/stickersclose.png deleted file mode 100644 index 9bcc6b78f6183685685ff7d118e0227665d034a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmV;f0a5;mP)kdg0004XNklWD^bbTqML)>b5Jl4J;2;gPv_wd)5`qvk zNf3n4=1>rlWC&)aoj`ru@4N4U-OY1i_tNH^s;a803%a5#15!7mEZ3zbqAcT5)3Gxx zj%$rgTFgj&(H`3z)e%M9z`Xl!<&VFL{kCO8CGt!tVQZHU*-LD z+cD#o@Ft4b=aK`lNtX{&-yMogIt}TGop~ztF3NI8>RFU!P--N~(&?6(nwpw>dSlo6 Y2W7l$in$PD-T(jq07*qoM6N<$g0XeS{Qv*} diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/stickerset_close.png b/TMessagesProj/src/main/res/drawable-xhdpi/stickerset_close.png deleted file mode 100644 index 8948363fa3e9e5fbd4e8b938aee0fc110dea4552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+i3QrfukcwM#r$q8K7;vy!_J6ba zVo~)$?feA^)7S&y{}hZp#T}NgnQ=1xHn$91pf@kDV9$=$#UXbNi7c_6sl}h?lEwY% zQDw*#f%)3OHEVWMtZ%7UexzdYpM%z_$1)pjgeo&XMV{j)L4%e%nk+s0JH}B+V}r)!+)S8|5w$%l1u+1 zV8DGnO+fW1$M(NQ+vTBwD;y3G{ii7bzyx;y>3^1gVE+dI0E7hsK>rx{-waFg|F;cT z(EsTFj22Vbp#T8Wpnn;B4FS`+M-~7`yGif%;0thqTo!Xb zqaKIJw(zKzO)wl8Hno{0SZ6t9KHw3_E4@uuZV*LTj{1&fjKv?;98RyFF8w|5JLovG zzCJYG-1~TTy%%!Ox`_$z&a#k}B7XsN>S2ZcZ<1j@EGK=|1{{zhY2U^4?0{sN^k>hc z#G|&3{^?Jw!VnPYaX&GbJ~KqgpM1-j%l8YxS_W22M^O_K{8*jEvQo}$BjN`ekA671 zY+k4Sa8AcPT-z!GwzFQmpRhfa2#npF??Uf;g@{ny%`dIkdJC~5KYfuYIBq@(#|KhS zYuwDkFtf1MRgI-`5=6_&!z?A!{q0?9x#h{4m|m#igQy9bSSvH%nw?OmoCDREw$lo4MzW z_@Vdb-$`dF(n4xT|5y$h5>MAY#rJUcu=7nm*Slt7n2(X7cSiGA-RhuCAB1akB2z>H zY5jP9-_0dcW?Z~c4RF$^sa=2AmJfxQMlcC5(XMziWJw=mAWKH3Eys53jSJGn%@TSq ztoc|c&(x%JryZE#@zHmmNPqf4L%0Bnfz#x3zr&3es1Cq(<-K(i3F)Hr4E+=&VfF+O ztnHwY@b{Y|B4=%n$%|z7_YL+-yW^ULEIV|kipmaX zHI~cS0`zOTKJL0;i=Ov*bN*R9ytNEJb8O}BEHQnMiMA`lWjBipgpwAVe;6orwoRAv z?l#yF3SV758#NDm?FnP#+3`TZ;}im?lAXlU?Mtv9Qu?ZC@7H^)M%Apqnypba=BLfm zbO;uE9f=|i1SU#<9{mgUk!T*@0d(~rc_AaKV{sO{7_GVMb0BwZxi<7Wd@4G{@xY-> zSI$CbhL|gA_`1pp>azYKwrvVBta8{WYc)Gr&k?JQOLK)*dWi=ba^SZV87GgwvP$|L zsfW8aOm>P`;Ru~boLCbz>JeYci2QL`JN{j&w`Qv@92mT{HmEY8A zkbn7JZN_}U-2>P`CaVm@w#J3OxG~-Vm-S5bAzKKd*`hP(Q~%c5xjLuzzjUwJCzh8O?k^M@$s-a-=rY4NsC@7=0%;lc7+jB>bSiumL}+$WMRbr$i_- zr4C8g=ZdrzpH_z^jt70UX+@Xv>BVt%fftvXx!rTP6Rgj)_*@?6D5h|ytLz34GB*_) zWOArf;Rew(O4X8t)4sBf-SW+ccK?|4AKx8MLd6mrDWLCRN`eC z81+(YZe)z7%5>0EsEs0Fni>J~TDLayQ$~$i#6&?U)uc4%G+>Jve1lr zvL|}uiJTzx8#a&Dt737>)OyaNk=x!fvaR|XBbQ)st@?+=ygHMWG0NJOl^K4onU_^x zG<1iTsf4kA1M4LWJ zmw5R5v{%}Ygd->|XV^POH$SDL?{dM$q#*r|{7>fFQ>U}BkJz?G9)Lvpt|dwi*mt6~ zbetDO_>BtfwZ0RihXHKXRi}K41>kezZ;nF>mxgD7O7Da6H&|ec+smMOW@X_Z$b&*$kHm zd^V*qo7BDp!}!u%T%KAgO>13h?j_AV^7>=UeZF%$HG+*Rx|L{G`I+5Vr%YPDAmQ++ znpf*(gZ@ch{;O!D%@IWU&o!ccWF-Xp&b%J2;4rFwm_rjS ztcx-@{pr~~l6>N%);%adMdfswUEs&qaU0U%hDYHA<%wTem;c79Dwb*q_rzZee{)w5 z7IVv!JtIPJ-5JKu6o#Kj!GgAwT%{RRSzLz#`9_@}kGS1E-!K{!%Gmd# zr{?F@7WRZUTMN<;9-5OkRR67XSK1WCUV2(j)K8sQB*dsqJpODBJA;qFCTtAIrwvB# zSOWLqk4jz2wyT&y?4w3Hwqz%V59&rUEwW;^-IX>(u{C`?wyw_zeElb-{pkLp=*;Y3 zA>dc~FPE(4(Fi9;ng%D>8eWf4l5?NocI$=!)&-!ud9!m-@9dlRou>^r!DcDJ~Q?;t*@?D|8J$nXWUaV#8C{I8kkM zyW%uOf#Q8s9^!@FoL=voGOVScj5QE}+)dZ@&X0Ek@eY_LNdaN@hf72`m1;83gQLgI zVsTaxdetimxKun{(lHOVU{OX~X_GgCoB#s7{c zv6?)2Cc={wnmBom|GJYD^$UpU25v=aWOzs&2_A45@LWrnG)vQ>lnhNF$beg0HBK3Z zP;A0owTo?DsHH*Y$c+=aGVV3Zk^<&NhwDIzGZFb=dUNP8#I-Ib6jo`9nK@%Q1*p%| z8Mw2xP>txBy*&@~=M~67XK$v~vT}SrVB^W5pqxcAyatK~vFdSpFxNuUL%G}XHcu+` z{OusgE>UK%>#9>F?2ogu7}r60&>AiuE6S&C!j~Ftt(^eAf#-XMofc|4p&})NA@_Q- zv0LlLWFJ^smQJliLk*x(QSPNDKyvbg>0bSG8l79|jas2RF4gFljYaY|t@XTfV8L^0->7N)MX^uuH#6)B~i=7WSR8U`u=5EY}|8c?>+}ZgM5F?GsQ3zQ?O+ zN3`5`_d}zOy#UVjYtj{&7pI7m6vNvTwqsyR1qDaF#0``0~D!_mBIt5 z4#VrxB37K4;2lad(g7^oZkr4WBg$9sgAiA*i1MbvR?k3gQ+0H5&K7@l{`l3ZwXh*H zmT-xEyX;>QRxi47J3#_~?gaEQpb=$GPxjGO@{SO)EECcjpay+0`Wh%&NbwuR9Bew; z1Y2eay@@KVM=+XsD-t$aN}F5l=8TXaYhNFu6JTD4PI8VhAO6Hd{=tpFXi}8Y?mg`M zV{;O#h|5HW>6FRDo(Bq0j+>5bI`ioML2;ab>e;ji_vasJJYy>b-t2NK-UWyknZy|$ zKecufG{1&TREwQ%E1_=OI<}S(Fa30(#68}u!UL#Md%))RY|N0X-df_Tpc)|f=#f!m z&N1RD`(^C2$9u)=+GET_x2;Hq2y)r=5;LD!g)j(7hg&Pfrbzk;Z`f<1B2o30AS6B$b-R zshuTjIV)32tKE&X{VphlpCDGO{nv*ygXut#Eq58VrZG)4r2uj6Mdl~Cy{w9;6H4eC zqU~3e+1c!dOWaiPgfxK)D}fX9ke}pcAxQ|Mc6<4(T2AR;P1Bcw^HHyJKR&d0p4HZv zKKk}Ot{it^`$x2m_&#=goa^C#W>z1v~t6bRm+?BtdG6GhUVwSgf89?d1X;d}<($kk$aI|saBM{BAkW*c4|uUvv9 z+2Q-dJZM(A*EzxbzFjMCr~V5dtgPk$M?=P~nu5Ber#vXjUCuR^Sbb-4FF29V!u&qo z0!ONALb9{pqMI5GI(|QYtQe-e&($DGp_Y#rUtHbYKS?!KpANuTVXGIZZLig>dh;3? zrb~YBQBOWRp?DKm`&01=@bY{?V}n5%n_;bsrqxd9GLfQi`{l=GgKuP4p0xKAed*Bk zELl$h?jUsbv|C-U1o-AxR2e(V=QQ1Z!6JoVC!MQL3{4|xjwg67R8x)#$E}x*1kh zpo+DcWl03b2Xzn9&0&AJ$>laG0VY}!n%i~m!qvIPoyfJFR!8Hw*PF>bX8GbJ+4=9o z-&O1S&2CGNij(+K?zhp~LT)4QqXHK)gFAZc!__20?7%}vOD*JJM#HjjlaD1>Kf&6_ zE!GKK8U+)7+}=ZwdwH9hU1L1%6N!GP&VX6`g@^Z~uaBiGqS4%>CaNI=Enx_)>?Kg5 zTdKO=q^}Ln3@HluY~*hQ%%(`t#QVq9RDl|D36(z2+HUOx7f-KaKZxUN44AKPiX{jZ zK(UF^RYL}Z)WG}Nr#S_|N~%9^33LwC9r0M`Sv6rLh#Pa{-7v!IX2*Mx@mC5+lM18ZZYro zlub7#4En_!l{roRx?P$t11*ToLDtTE#+w%0QTmoun7=by1&FeLP8-r%&!2(zVcjKb zXoi0Wb$e7{=4H|tMmlb&`sB&b{=I*-QN1@Pjg{-aFtPTuOtuWxdCNSIE8xV_93`uv zN|WZrI;)9}%DydRla;vA3M^=yo1ipcl1`TLaqXD?IZ~ zYa^a@8?q|Z@GUVRO%8Zp8RswVLoju4Br)8KP$u{7T?~j)e*fCDgibC5TT*tl{;Az* zpz~|MQx%(OX6vedU(}*Zmm&Jmha%>~SY;$zQ7I@IIx=eSw@(5Ef3l{1IL&blO;h@IRIUlm#=f68{mB+t{_1^Kd zG~q#s38!zp9#(j`W z`p$xxA+a?V%Pqn!D2PzOAK84;(Af(ym&1|1p&P{bQJR;JIU~bo`#WyqCzGW9kd$kk2wt+`wIhO7u#d= zL{bZ9N5bHK&X4}mM?7Ck3g?I{>26$&D^2MpX9ng-3+yTfo7-8P<3Sus7xG~Zd_ENC zB@>+6U*NQN#mKDV>S%vgX=y!Xdmo65wj!~P$wl~R;HF8@SJac~#luON+|ehJlXQKh zpq>CaFPj}$LIvtG;EeE&>Y!{aEyU~2qPa>+jamlqTmqrOnzF=*y}v)~i5MyQ5pLO1&53tTae8;x|3@ODbJP@*(HWklEigk#5c z^BWuhQNe)x%<+dGg}{%+d*>>2n(h}!eBOI_N4Mf>Q0pm|$#02n)ZF`)VN60Zmtv92 x`}fz;J#Vl7E@u6h;P}5tIsYd|fPHXaF^8d?r4RnmPt2G^B{~x?0oU#A_ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/themes_addcolor.png b/TMessagesProj/src/main/res/drawable-xhdpi/themes_addcolor.png deleted file mode 100644 index ed562a18ba2e502f26d26e93a4249fc73661730a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?ov-Wgx49Q@9 z8)3+I$bd(sL*Af#S#tUhj{mO@ct7AjbEejLhl0~$la*079eYbAE>h{M-FDtZqRg7l z$bszygQNm;tHg$D^X}@f#EXeFexFhIC3UanV&zxI+~wBvZko-1XCI4(K|kl6DLMp{=0ce{_myz`{U=qKK^5x0qi%+vn@sQrva!-3=z? zYnwT3)unn2*PpptWhm3$8+qZL$X&fGhGaLjn~E;i`R=QW{}+r2=sZ4W^(*<0F-7}# zud;Wt<5n^J-m!O9d~{CUzYnqNBj!)kDZf&C#8ThVa?)Fa#}}V|QT_DlK7;UtDe;G= ziC#zuY&yv0apUraR92ISDG5_n9hktOrRu#R*QLcy=@0M572EH7yhxVtSafgy_2VWx jl$lc+cqTOR8h>EhayjOCzS}1aP;h#>`njxgN@xNA#U!Pz diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/themes_deletecolor.png b/TMessagesProj/src/main/res/drawable-xhdpi/themes_deletecolor.png deleted file mode 100644 index d7578160c6ab42507a912acf5a0697d2a6f8ab9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?oo8;-@7?Q#I zc80x|i=jY!xhprf_r`4-w{5t`oUwE5-l=j24*3Oa_{cKvfY%4MYjH{a3P1QO>mu(R z5SXO;`JS7SPlAWXy)!lY@8ABApe`)`uEF{N-wtLdmBzkn-RxPDg*dNRDtr@m|GF*X zheM5^|B-VS{GP-KC;kyw?)-Yjr;HK_t5qKl-O_2A6CJ9oGv8OiS$^3?y^ms6s}hAA z<9Ot~=JKZ+J-_&-)$_}v3lNHD)u`2 z>*1*9xg!vroK?9FIlSH-urGNa{(e#a1+DWn(?GH0>FVdQ I&MBb@0QU{q^8f$< diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/themes_swapcolor.png b/TMessagesProj/src/main/res/drawable-xhdpi/themes_swapcolor.png deleted file mode 100644 index 89dc0178adbc64713e24a0b001d2693138fd2487..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 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 Kca_rSVgCojiX%J# diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/toast_folder.png b/TMessagesProj/src/main/res/drawable-xhdpi/toast_folder.png deleted file mode 100644 index b084273e2613e96b87bcfc48c4f45c1a4dc5466e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmVcV=LFy-vCc zbQS0-&}0SrX~Cl?n&P*UU@}c7w*Qs&`+mQ_9^0>X3Gqqr7;J%1`HjK#dKsH&1fKx! zLRly1-!yLPn?mG40+~Ep8yKCbgSo#01Uy8*?_i>&!16W2o%mLgzeG2C%EHnPqMo!T~VU0rk+0mXr7eHI(AH?o~UGXHgZNwE?vfc-eyWllR?6#b20{%W& zg_h0F!{?6WWD~IaZJsZ43I`p*aZEs82B*h40dYSt?g=>lJ=;R#aEU!}H?ax0y}HI# z0xf`tU=!pL`zFriAg9qQ?5^^5-I6^|m5AZC=AqKW35<{*68;!U-09byzzTtV3a zi4PEe!ng)*fK#ASu?dtBXg^MFmEkC>58FafR-+c^d9F5rpDiGkm4fH$`<~w2i}e?9 zIIEY2^nMWcC~y7^#rG#L+*oXgR7luGM?TSrlUM?I{@lQ1r;P)_yR6?@z#?^-@s$RCy+wXlTYBQ z)Hm>0@Z_c7K|$1;3Q`KX{sY-CWK$u@x=AE~q1oAF=9`&J8)%lLkus1nkTT#i1NkE7 zWm)dv-9DtdXpN$O#Pe;Q=QBm$?jyjvkSoX+#B{u2!%4fu%p06{AUCGen)Rp5Y&UnnGO=$nzRF&LLw2vCNrx0J0zWg23iS;5p+=JOHi_ zc|JlFHY&gv1E8D1LCgUV`+DpFRQwq~LNPS41g|DMfJztDX9~b~xuUNCzs%V*@jWUq zajXJeB73$rcmSq02!0Q@#BbA$e7(4!O`)?2!sQ4}T;VAYVZ*wLE&=dFdYiihQ0VUG zrjZC6)CX3B_kd{=)0v$Dz`Fc`*jp2me+q)c+i*ET-k`bT6adeLkNLlf|Ui5 z(2=130RY(Wv-4yYt{WzTJ7lyjctPCTHKB_s%`%&ag8( zGqkm}qICrR?;}ttYxlRew-2Lz2FPQzQmK3_%PYDr&5wikz{LlW>(PzM5Twyr*R^My zEyFXKCJj$}nodtmM>C8mM3-aWm+AH^`DJhgD0d;wSWNH2S~N5aez*=9zk{nzSa~wX zPz`a1-TFTrX=DI=s+wsS z$G8JL12z`2Od&7W0&;0|WYtAq$MkNh5p8GwFpA@=jox4*K^m9>HlDDtzfp}{gL?p| z#>SN8l$PVz555`aP4bg@4OIhF>q46Sd3AE}F=z*?&XMsaxR^`CkX4&#FjPa@?S>LJ zMSQ;Iv-7!F)B&Z%9kp6AUsTguk9H5Rzo<{y4*uSIMVXWakd_O1^wi_;c^=Uf=fJ41 zPP88(X(gHr)mYhcqrO5Ub>iCloMj)c$Q=61)z)ht@``stBerD3zmOj<(yXsmnn2nv zmVCV2bEtI!d#@8m*wYC<_CU$A(?iQQg~%wd(U(sloQ+AJH6kC)s@|7HVEvNetnqC7 z+-yfp6YVu4YQ4?$ZW^)!=XU9B_f1|_YCWvC*DquTx=rN^lb4lR59{sq3)umCBE9pf z#GSMr*4yh6vICo@@|elXO09?W_WFhFz=o+jVe+z4>+w3vBxDEHjmUYEmz7$NSA|Wu z7EhXMvmVNi78b1|AZ=hD{3q*B!>1AK2KGK^CcHWy6Q3F2LY|pdp&$o@9y?XWH{eiE zVGfcs6K#fSJjzktn2Ov`BI<_QjVto6B7Db*Cu8QXa4r`_9~uMwdH;HOl}pf&r3LKQ z^nqE9lVYG}g3rK(@}Z*Y(g11Q(?xZ?^%#u+d!%&5xZx!SOsW>xtB$ls0!sHz!C(%g zLnrx#P*rh(y)ZbvxloNlJlymj7`=f`hhA3Q0%ySyXQDir(^~q47E@KNamR1Ui0L3$ zmwSWQVohii(im(?(`gfo4}zQEEyx?HQSHIBZqv7Eq6_FhH1~kLqOkc#XiXe(yJ9q& z`8GMP361H9o&vfJaCervtJGcXOCB4y7+cXg0<9wu=?MG=E5~j7<2<}r00000NkvXX Hu0mjf)40=t diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/tool_cropfix.png b/TMessagesProj/src/main/res/drawable-xhdpi/tool_cropfix.png deleted file mode 100644 index c6b27cec3527d6c07032b4b126553e43c4f33f1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmV+^0@nSBP)8~E6_WuAZG{EMO}J{ZRlPn>**QNe#hegr>* zx8Rg?h{LYHH{b)XU=nQC;ATPvG9?qqiJH(TJi(6g?)Qput3qChM_A zzS1ImE!<~>%)no2`c-v(74RmcvgB_^h*xp9(MIr9uchAsrrB{ve+b@T9;rvbXV&^k ze@+m)lJ?(SjB)uDKLHj5bCopmxZchBPa}g^ya!Ci{y&Mb$TPE0mnLMa-Ha!3dvq;n zeH|fLdssdKo25>*+oB`H;@v@lq(`XN2pl)Q98ERhoB@fCkS^r4$;3W4ev#|6U{OS6o%@Eq z5Pys5$GO{>oN5U6_H2edyX<5m7zApUT~b26sR6X_U1Gd(5OB(fkykIRamkop0meNopH{mRmlV=9CDQ%`OXB!7nM1@yBTC$@QHdGf8{(ag;?;Z%Q7vHDi2H`W z(F&n2PpR@+QtcB?v*py)M@;x_#Ta8}!2xg`*tdUl3p?s6I4U`!PKq)I%SXkhVhr(z zfPE2c>ye|iFBL-LL?CiGI0yQ{5O@rZfyHrg*<7{**$!koknKR#ci=BPGNzUvBT+7p-=##kR%#_AH(YQ* z#%`>{AE3CAS}u&{*M*c{i5sSg)RwH+5;2+AN6)FxPUq} z@y(3y0}&t1q7;Dm78KtBGomR^h%+w$@oV6g*JfI5@xq^J0f=7*XBVgy@={nXt0ahD z4A)~&?cp5e`T*z$ec(Ch%;j=VXvg0uU_VG>9|$@NqI{)-?+gO!!Ap?V1_?Y0YJ!vE znAs~NNl7ku@fKJjW6Q2Fme1;J&;T}oDZsYZT-eU5)niYTWK0oL!9!qMn-;)i6<80h z+K!Ar%bfO)(kF@Y337chxCgY2DnJXuX$5$oo$3Dq+q7S1eTZ8?5BLU7xQMx418xFi z-U1{ZrwY(voRfBlc9Dxe^)(1r0{OvdJLe+Ap&E21j$;;J;_+=w{7utKr{2sL)k5SF zZxZ>6sKi0;?8eaK__i6+r0oce_4+~N693amY0GE9NbXcKj_PsE1ePS65q~s z`7L|_+OjHQ9;EsPT~4JQ5~p}W#{6;+tBCV(806@wkfFWg9`XiJX}4AFGsdabA;cZCxMbnir!v*oM(2b>PAgdRxu`ImCelzbXgbZ?UCGY@sw)BSh zCi_+vFn)^f>e8!L84)1IA^H;-qW>*Uvh#}aMksk4% zCa1eMty!U&k@50{q{Pe_kr6jq^`?}&eY)uMX{sr$g2zjz?V3fZ0hrQa| z`(3@RU%;l8UCUFR?mZv)#rnXG*QMKjlS#*`yzL%k@dydS&82knO`~d z#w~lR+3$-{YtPng3CrFrzxL{_H|~UlWPz%3K&ozoH0FUcN`o|l%-T&z2&nPvRDMZ^ zW|$v~ZMtqJfxHTK|8K|p2T%T8C;IEXT)Il!-Qx-E^-@oR-qp1{yTVqh{aZRr>eN5A zHOuy~e4o%S=Uq{}ty1r|^nuy(-fsNCa+OlvL4PNt%Kc)=dsXx7X^r+t*=g@~w3WV@ e=B%isbkp8+ZIiKneRdTn`*^zgxvXF!$q5Zj|1%mGWqY(1 zgdF^z`Tt|1UEBXN|IHswiTgBPFoo^<|Ky0J-~XjIM;`wFU#RWN(*J)>_)YowU&8g* z$9l<<_!s~FGfe;YA$~fe@SpNu|Alq_e%>$4T=v2K*Z=+h>;JVIJz)E<{V#n{7Xw4# X7r)!b>=!)&+RotV>gTe~DWM4fWeiV) diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/video_mini_cancel.png b/TMessagesProj/src/main/res/drawable-xhdpi/video_mini_cancel.png deleted file mode 100644 index 9f9e3c55a960d9a972809e148625871e599a3a31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmV+*0pI?KP)$_+qb4m(Dna9EDe+z4pIxM3cS@Opt0Lh=)}S9ZB1f0ye^lJF@jCn)1b zsmF{tRVS^=f*(9dl$Zjrq?V!8SOPGWM8J!8tZ01E8mz4IB#^{}hXHF^F|EbM&qOpY0IwZ@JP9rjjT8K)mU;$qDM2g@!DT~hQplZ-R{JaKy*W7?6f za<9<+7cn#XKdn7Fizf7Zkb_v9s4;|E3A-W=4}VSeoy$IZkw0IyrQCm%`?NL&^VRtNd@hDdy4B zUuTqY;eq6W|IW>9{EU~62mP9py|Q_;t+d&U+c#8JT;lCwS~0_`c-2y%bqt=aelF{r G5}E+}G&>>y diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/voice_muted_large.png b/TMessagesProj/src/main/res/drawable-xhdpi/voice_muted_large.png deleted file mode 100644 index 22ba9a38ebc55c4d5a6cbdf96f1a3d73e14f32b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1920 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 Ac>n+a diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/volume_off.png b/TMessagesProj/src/main/res/drawable-xhdpi/volume_off.png deleted file mode 100644 index d37f4e3e7ddabf433ab106a6c1d0075708d180c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1307 zcmV+$1?2jPP)6vyvLEwYk6&?3Yz5~1*;AR#bFP}07W%m?WqxKAp5 zJOoihDn&jdR_Ke7BtCUPBB=y3GBfNYL4}ISNXeoPNutd1>go5FJ%|6bx+57bMjnK#pjLbk!W}w+@UJK@c>uV24kVdK?_?iZG0H-4e52T9G z@`KZ>z&`LdSlR06lEKF#nJ=0sE$h;Cd>A46b75Xbz94R0tYyq7uqNj#CjNzTa3TofP5MlhD_7TT21Th9dUU=n{BHaz-;~ zbqUmEFbUOGfU={AZ)sG-SCTW*HGDTkObv?Rw4s1ObCUGOMiD>YTW@oFEyhH6J&Bu5 z*FB4)7eOHHATzu779WXE-FEd}?WFf^J)y4Y%t?t8t~wJ^Aqq3@wLr#)mfZB3#yWyTv&#sf?_`gL-AHkQ+Q|#=k*3+!ssxrww55v zKtA}V=%V)?^g{~Biny0P{WszC4#GvXB_A9UM1LRs=8@sGUEUIGLW?e1fcoi^AAQkw z`Vb-M4I$*x))HhgIN*`twJrM>4<%VxKvu-9*l1I5db%xGT>=p=1#f%gj9*Qw-Rn-^ z2if{qF4)`zj(|Wt`%s`6Zh%!Ga)(x*F{8vdeOT5ep$`PfUxuPVT}jYIApdUpduJN=a7tCG8~o^m3Hz!fERsVb9wc_zzAwPv>>l RD4YNQ002ovPDHLkV1h|_Z1MmA diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/volume_on.png b/TMessagesProj/src/main/res/drawable-xhdpi/volume_on.png deleted file mode 100644 index b66d0cb666021636338b606662eb91af37de1e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1296 zcmV+r1@HQaP)|1RtM*0=XQYwbOg%hjcR1?pEI_!TG=3jM)qa0GOKHt-#IIe4+q30dS|a2zCw zHS%WYn!)n1xFO)rq?L=U72YFQ(NKw4)F^OX7Haeu_zY|}MPzhVUE-PySusI<6dMOF z0hK>c8m$mxZ*{^SyuqwQ=RZR&gYN#e(_@W zqWAUVg6Jfk32u4?e@1W60_c@AFoF2HK;;`OM#7_ig zfy!Z&_^x)T0TO)<9%y#>smRm4Ma`! zW$r1UGEZwI-R_qNm;~Mek9HB6@Cy7x(eJ|-=kxhZV(Uby-V@_pakMb!SJ6``bI0I3 z3VKID7a8AR{`E-ze;_aqmH|8Z%aL0I%_>Tgq7avP2k`d-%R$lAb?LA#1uAQtFCOuJ zqY)+e4g6E%$t4J}r5e~O^?raC?P8W5n{B5~u0i_6Wl>%Sc5pbk4><`Ac{qr^0gQ|% zmqCax)qpOJ@It3Y5}WNzDqqB%zcev+L7nW6{aDsJ zE936i5r~j8vjHnZ%xmBRaB>Cmyew|&6)Y5QxO)pn8Nn<>14el(Kw2+zt~z`1G+UelW2eh zJrPRHW(uv7V&~yIL^s+Zy1kyaJ`))Zh{Lum``gVn#+za{`ViQOxs_*A-|x*=wNUFl zChr4%q9g@I`_Axdd=&X@*n|J^jzp5ppjk z7z_iz4lgK6J%e*tQIZsexKa(+E4qn&p04oIV6*x5R5FFJosVgba4H@6t?gd+kju>~iDJY{11Ojm&)? z=wCqoLa+YME74-MFsihpOiNmT+3;1>0P|i2c9)&lBQ_^fTX{-+DRN%D6|5o*ljNQk)fB} z0I~BlS;V(9R{z|WYMJDp0=xPutKB?|l{BzZlfb_R4K7!=jTEtM@D5P1-^sh+D>cIH zsO%aEAStGm9Il+J9|6;0000D0$?Olp+@rv$xtoCKu~whCs!vSFZ%;sM1^A^BNb>_Y z1m=LEkN*yG4gvGPR`3Ma=*eX-K(!Ot1dmxaBbNj@h)~NIa2e>3bHeP*@`xPJs(rUC{gZxe|nX0QMQ=6O< zbiAn^m2wR#%d}F|-jv~5{YkDuaJs?A zNb6WyKI0dHR}t?bOQ*vw;ted)=B~-KprvSoyiw>Gf!U1ipAok zEw$D~#b`6=h3Ws>U7R`?yA>^OHe<$Ux9lM>*BBt(&3T&8VDf+eBq$T5z$-Fq6)$Oz z$-@M6>izO38*TH=t>#c^rqW^LH1O4sGe7!5ukPgI!qSY1$EI1DIVArVh(#eDHe|Ue znj3F-UBYdjOJSKD1=o7~?R`0nUVGgPMJBAKa2xAgfBi_S{ceY&!uyN^&*_hHH33fh zJrIcum`U;9j0vfq=xC$RXun5dkqO6*0b+>PGdgWZ5p7d<`u_sDI7H;3r0n`SuIe$Z z+SUb2+q+J<8>|@pRo;RH5UEezXXx;IF%s8`(haRf`!VQ@x3}7o+7e%l)w&yOG>@HZ z{HX?X(cY{2t=3#@3X<=KvIVZ520G-Dd0sZv{Mpo$|Lbun6XCHSeo;ZQ5)b&>mH#yS z6se_oA4o_^Bv@CO_TWGAWM@B^1%~;R?$08pobcqB-wK`p8#ORbD@ke|3GJm``O%6e2hf90(2s2Z95^f#5)JpdB6f4KAo% UiY(HOHvj+t07*qoM6N<$f~spv?f?J) diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/wallet_fingerprint.png b/TMessagesProj/src/main/res/drawable-xhdpi/wallet_fingerprint.png deleted file mode 100644 index 02bb23c3d9814e11e0cb77b9968bd479ab021227..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3842 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 Ef_~&~tN;K2 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/wallet_qr.png b/TMessagesProj/src/main/res/drawable-xhdpi/wallet_qr.png deleted file mode 100644 index dc5f628f874404ced47ff5286168d31a2951e6e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 915 zcmV;E18n?>P)qw2ln4KfwNpnoYodW$n5EJcVs!f5UzW{Q$jycF7ikPr4E$_8j(!^doZ( z&TZ%;=nW`2k=uP}BUlLT8+qVH`c>q0^+0s5Rq@isAu5-W`%I$JUAw<(J9c(3QY3D|ix#nbRerq)b zyBc?vxsBAcHyhKf$mhXABf^M$30w)`q+rpV62iX%l94Y+>vTmJkuL!$A^Z##3PhW} zTB*Zr`*HNK;txq{^L&jlH;=dV+i*)(xD9h5etk46fi28X`&~94&81R}>n|$2bfu$q z0T2BaFy5FT7){w^Wv#Zmo2l zQ}cTi9a&-4`YLArxNFyR+E%|+*(epb546_sbW51;UunNbM0yEhmbItmw;0&eFM9zl zbFGeTD!TlzeM`WuIyI-GG`&9DCNs5qR~YHhNjCDO$o;(tBl0CkC4`fLMR(e6Ys!m< z&V1&2DAn8AvwR1+YpY~z1iT#W(S75`)B_7{|vcJoU2hcP&ZI;15MMMk)xd?AbN64p63pL zGa#=?i4{4?o#7ze3A>Fe>j3&i{5BBV>$8>r+Xrb#uD6CfSq9KA;x}8oaQk54Z+c)I z1!jAlZ;Fu{`eNcQ)Q%%G9fpu)phx^fS4p5b2L4=Jd|3??5w{vBCT=lMRJ_kXaq*Oa zy@`gpjKs({&kja0~MI;pr?H)wmVBIJqF2+#m8Ym`yklI9~_6mMU%Fp#_q$j}d z-uut+V7?kQ(A`MvS^f)5Q^H;=LOKM`cdiX{ZV5bO6AP_8&_J5Mz#p~R4%i1AF`-84 yJ1~ZEPhOBKmE8}%(K6!$t@~SRN8P|bZQuv`ln8hjRcWmN0000w=ps@{=*@U zTNr4$JrMr}VoJd+paHDdY+}MDh$I#aWRvT2Bx4vEC(juVqz=@sUa%_sAV}> z4xpyxBs+lGmXqWFT3AlB188MAQ4XM`LE0BE@cP{AG`MlW9bh|K5zK^7nZ z(i$W{2V?>&PHAt_gtDnm{r-UW|tF#uW diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/actionbtn_next.png b/TMessagesProj/src/main/res/drawable-xxhdpi/actionbtn_next.png deleted file mode 100644 index bcf273132695e4a00a652ad906d8170a1c693ca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvNA9*@p!s8 zhEy=Vy}8$m*-@nJ;hNTnjP$4eqFXm_xD<9_%Dt|s35p!cJd&TzjkwVft`Nbc)iG5p zEbO1twfxzpLu^rT(~Mr~9^>ILcg2&ALBX`RS*Qzm|E&=ls%N zzHbuChBZG{gr0kG{mIlPI~qUkQoR%$BCw8aQi?;?YR?I`TBfjbs_--RD~1Sp$T7(| zuTYs_!(!7G;Hgl_QNgotlEWu~4-!I)Cvo+cn($qGWHvP-)92XRJC{n9cSRoGV*kos zqwCSFiRQbT8(J=3kMuud{Cw)4Yem;uzF586nnQe zt9tkRN!Ay456%)fzH!-)yH#7BiJn*PztLRh|2!@HvaZ0fMUP?%m%h+0`g`8<@~4;1 gsBz?=Fzi_7lQOmp7!?&Zv#Gxy`&ciVlE zlU?S{IdjglGjr$jf>DfO6#q|1La~w@ZaOXoFjjsa0C0FXok@~>%EmO!6FWKpd=0>6 z0Ph2M7r;T0cO`AJ+Hy5`y~u%z{5uD&Naz#*cS~)&zG~xwSESZ%1aPcM!>vMS8-OngiC+dVK0^1O z0QysQJ{_U^F@P6@+$||Pg%Kh&2uElMnMd+BB>NbL<0QLCE+Uzv%1wQgia*6n&e9)2O@*pMe-q% z(@NBwX<}nnWZ47a^Jm=0mS-&EACc?2nl078vBY8m+ zNc71C;zN)4WW^bYxxH#aox$!1M-Gtuq4pPU0huYj9f*jhyFqGIgg#~{^ccykaliJ~!H=KgNZ_q42u)`>oe&2h8Vz{L<))thtt63t(p;&*uTWUZW2k3aO`)B*|^|mKv%Jt_(2hIiXMooTPVwN#5S zSOG0HbWq7Rrlvjcs{rg)%KMh2J)U(Bz|{cu)Zj~^kjf-U${h~zEELo=kKU-1Cjfj_4m&h{u2k~zAfc8f?}kU`Ws*1$wDy2b+5Yuk0DdArW1htz)a~YNZ3D0%Cr`ihhgv^($nXMizF+F;pJ&PB!-v1f@yWc&i8lS+ zog~RM0l)G=a;sAHml=i}u8-QD(=6|;akz7DPPy9+{U;>GEP@N`mL~tclJ+Ts-bq<% z^EvT*0QVd0#NvLjtzoP9WO>VLF=|{4K~X|4GzNKEjxTn5%I*TN#%RleHDXhXt6O}r zu99gnRzhf>k~Yoe(|_PP@;l_5W)`j={2hP?BkcL`pxDyh3onQd!Iw%3T8tVOLtr8F zsFF4_!ZFCe{Hp+-^*sMIfbT}yOyhfEL&LLD_8F6<|3ZsV<01|uZ&5nu9R*(&<2>{A z1|BV7^U)l88>P%5zV1-$-BJaivlYXKOT2;IskrqX0{&6J-rF8q>r0;U(=U zb4AuQHJyVcXKPn0FSmCrmmaK(rMr~0xkg-11&a8+qInn!8BuOXb-oY3Zvr<2@(kCYSJU zw_?w6P#K{YDFqCcxVf=Vv9~w%+?|czspM&3r{rnm*RJp^Ea=-b&$01~EQDH{{Cfc2 z%%r(adugG+lE1lsK`z1mQC53=xK{G?h)$KweyQ?8dQ&(EB4!8g&q~^@1)bJ{T?SwW zfEy$1+$cKBjAdA$#iYfqqAZ~+l>H_Pu2k|&E?_55S1Tig^CYG$Y9VyHvXgke$AJ)H zYR{|E442C9b(GP-3gxc;hZ1`=$aL6UN@v|&pwqWt56KmZ{t9_!LF`LYyE@dB&Qlth z0vCCLm>=Qvk^m8IZr+)9Jy4!?=FH<8SQ6pae2g<^qUd3wkY}sGGpG#33YOh$N8I#j$fbAbC<5ZFMIh##*Gl&N0bX(HyibD^2Bsc zHg6q-y7k3grEu5$ESq1Dn&WE3+LAMxtT*3E<<~{1>sPjU99cDj$Xw-#VOzHEtea3LpCNfdamHPVUOWQGTMCQr9+LY+M2aqK;kb6b$ix#F9Kr$YM8Ak^vl11U+Ci5=wMMJN|5VX@QLY-WeL#o3sOYD)C zk#SPC553~Msf=b4>STIg;i5gpXQl<}kV*P10p^&EYT22thWMQLjGCKp`5_!$q z%!iv$q|Vsq;d#T+@**-rZ0BJ^(Y1r&BD5h71-?snT=K-MF!`iSY~_7quwU{NE@!w2 zg{hDM(6mrtIvmmkiMYkE>Bpoq?riopZIdSL1 zKFQk@BCUkB>i-4ePPBYUZf{(ky4UZn68;UqGxFb8)cL6n6{SDBK8jI{Vicp$0pQ;d WLbV<4eQ^x{0000;ppwbxpEotgcdd%JXLppk(_1{xV?WT26OMg}@(2AXPBt)oYe%2zWS1TTQS;OVd@ z+zofa9RXXLnwmCoUU$eWp(Ierx)xpo$H3w6R2Ub3qPQA<8620B}*G`czUnQvEIdC@I25W)MIC&bL>5Hi@G(qR^5hDiMy!83$Sm3%Ire-=YZ;f_QL(JH#{rg*&Hu}r@^?`g5oUN*jM8gD2$$- z2KX|JgMBD{2p@%m<5mLQZtw~?1-=Bg!#H>gr8DCC$z6|NFM;1xsM%ret7136R9;2w zoD9c9b$0tc5vPdw_1@QQ@d65_%(4b2?`KbSNICF@C(9xW>z>}WJQGRV|a3cI@Vm3_>|O_ zp@nzz2uPifg|!H^f>d}A=SgstRS9Ib)vN+I(=2F<5y)T2&aGJ>DL5kD0nnOZZ9v{V z1s9b~;7AJ%7N%A%T|5mcax=;G^SR*J1n<<5ssK&{PYJHW@m`_RSgVyCFU z(UHmU>rhJU=mLja+|bBg-%wHU% z`p!yJvP)2_w~C8JZ~@8PRJsxSh=G~1;^4X11`47`{C(gYsKw+oAUm?Br#Uu!9nVRz zE#$07g?qpmgrN^89)oGE*UFCU{VeH`PamHlOb zKTiEn8)_v~ZA+m+t%Bj2$@_Vz_E;pNvlK&tpWIIY+ zBcU&u>PY57eQ;JaR6ejHdluwhZ-@lg93oIW(cT}Smb6^_o?rT+o(XQI8(?s) zWcG}fh)U4Y7bZ*Lp5UlSKt-Ud%}d`ds)lUkKzSgvpx!Tc5SRw-yNm$!I>vr7(N!|T zSQ@u-6w;Gwz5a?zBZhJy`~tdISgw`N6+vmn;zAupqBawKl?mfOk{VG^ZK`WS_U1(F zAiPg^3~2n78;D1*sa1)&NrN)#cC-o`8b!EJeC5ptf}U`jtI73eNu8#tkAH1jxX?H; z@zBUMqU)rw$}hCWsZT^~p{O~lg_ekNjRXW^_3TepBnODv)c7< zl2ksdTdGL-7`~t692@Jxc7pS%k>xuk{%>OV1H<^`$X=nKZ^70m(qWM`Y}0~B5ugPZ z7o#Ex4K(!K{Ex0S*Aw9LhCC~gHOADcQ4wIp(QGD^r*tK>3j9xc5jLh^=@}#EPNGhM$cmG_pOzcdOw) z^3KQ&}oiQ=|X_Y%M-@LD;VN&D8e@l~8x+q>7aFu=v@8Y@EkNn^Bf;^FM>Gb zEFBD)GbKw`pNCs3JbK!?Sp|>}gCD|6nn)!2>xm}>ME{(qRd3u3j)<5#2-Fj3c1or4+^@eqB?V95)^;-DSoi_02cR`wE#;=FBR2a$tBFxZ8JXMroS^H@ z`6F}mcFHzWUjAGtE^F3wETMWulVB&x3*cB-?Eu+VhcY?#XF?0B5N5qE-xDA5V_`;F zpy3O&yTK(^sX(@gqy7ZvDR>Puhf!ghX`SP%2ef*8#Krk?B=S@doMigCY%tsfw?Os4 zzcEYN$uTz&oAzwh!2U)MigP?Mt~KseCBmQf{k1ZGzF}Z9veEe4X56bE5tSSPi~aRo z{iO4Fq$D(}??VS*TU*2$=lY-@)BAmB0a9al_a-F8Y9YlZ?z zQJbe8S)GoisHILwPn|lZQYW>QbB$j+{I{OiXrPgSMg|%gXk?&~fkp;8Wd{BOT0ph; T61Kq400000NkvXXu0mjfH5a_B diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/actions_addmember2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/actions_addmember2.png deleted file mode 100644 index 678aad3e27441d7465917ea04acb7c0559c7f4c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/actions_nearby_off.png b/TMessagesProj/src/main/res/drawable-xxhdpi/actions_nearby_off.png deleted file mode 100644 index 86f71988e8d92be9dc661ee50a0db27aa0175b5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2261 zcmV;`2rBo9P)*fgUuj_{6wSs zQWSptP)MjRcoDn;hQ{~U)B}E}fjSUY=3`L#y_+Pe!BJ24XDL74l&a_&{LS+Ck5XI} z{pu;PBgJ?`vS?wD#L^;3#wHuT9YJjo|G%Ms0`yVj z9J>QO1iu3|`48oF(Xvc|6~W&D^whUWEV6Mp)8-W28gQj8ee~_Y%fKe@*=#CCM@Gd6 zQL>TA#@5z5e?Z^96gjk61xz`OqC+X$RM(Thb7oea^U!2t+tp+56!ps)7K8}e^#I2l zL(j1+qoN=&CDw*y5+fU5{XFD2#jRn2#b||N=sDgK#z(o@#u{%{RaGq|uvtZdYlmJx z=b)pJt`L6XNv(*mbVW6p;Jv9Gu`Bo?`6W4pydlxFBUmm-2T zpIK~0yq*==6q1WXHg?l3WJ$FVRNL4>-vulKHd$`7$&`+)Lz9h7JFwfv7`hYSd2l1> z39biEg1x{ddRgh4DN>6iL!wd09)(?$=~0vH>BZv8q&_0qQ?Ro=7)>&ZoiEBHnWd6~ zjVL{PB6gbV4l8>7UkAp4id$PO#bwEQl8!?5KXtKotb_=62 zU9fwfW6!Md>6;G;Md~c_&W2VVEoC2=+FKOZH7T(~7t$E3;1YW;0{X z*MdYIkT&x0J==24Gw8B8aLIpo(E&fK*(`KMQ0qVd-Z~^=R-U818Q=F{~T7_R@R+{Jf zg`itt>N($Q(N(^RgnLRBA`eDDJh>z^8kUQOkg!dOox|q5x6|o+W*lR1p zpT-3~a$?Hlkz^+V+Yry-!98twj&K&2>`AW2OFcaM^BpAoAlTta+^^_9uxS*R?B)1a z46evzFD{l83DaDqA2{`!Svd?*gsm1-(yOI|KHSdv;|rX+#eZ8ZC?lx+fk4QROnCaU#Ec zz!jkNl1=i1z!Kp7M2^$Q;u4LA{@_r-lfIn23$!k>Nm#vC`zhjVe8Ielc!{27)GpHx z30>;Rj{OQwk^{+An+eA&=@6m^(=M$>YK z;XJ(O&d=f}}cg5a;q#I9aWv=|`icIn{$t3}s_kMIi`TR!utd%?A6 zEHpdWjhFT*kx(@-r4B`nk6EZHd?h^wSG>bO>c`nGQ3N|!Q5*8P+aQ4gzH1HtNt`z9 z-M~?0kWHWiELrbEry00J1Yhr1t`SG|y*Dr%rJrnq>;`Nv6d$73{VulPr#FZ*0fo6M z`YLOL85FvTAbXRW#^r^LoO&NhW`2Rs@uN*Pi@}fJj|kAG7^}gcVi%<@-DDHs4L}b- zn~0Ptz&jlEzQ8FIk^EXoF0g z`3skraukTok8BM$gZ_Ubtmdo}8>K|ej2N^^GXiK~cnh#S z>NKqoOJemj0?-3clkX3Qh~gY=w}WrMw}s;Y-YlKBKUB#IarVdK%>~@TaWrTc zUvms1npK=ijH`n*wzY{xwBwLOMp1qpD1j&<@_z>h!LJ3VtZCIV;NQYgWkHE|FF+d= zowANPzZz)N;XwMhqDitTkX>@GpY1}45bZdIaJ`Pt2KR$3Zc>R%cA`Xk2-oV#13AT6R*^z}fajv*#t z1w99=yk@p9bzb(dE`Rxx1hKLJtyo_}S+^KrBp3|J{U4Z|<{EpzRu6U(n|h~JsPkL! z)pH`0l;zeDDgqiqzP5u600TY8YRX-J)+Yt0tfM+eodNwpk9ly2@_w)n(vEVBB*Zoo zL)}Iku1-)Miq9iq96H8fY+7Ag$kw9oWbijw4#|gG9SM2DIRiNZIRiNZIRiNZIRiNZ jIRiNZIRiNZF&X$DE!tdaikMBg00000NkvXXu0mjfkijbO diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/actions_nearby_on.png b/TMessagesProj/src/main/res/drawable-xxhdpi/actions_nearby_on.png deleted file mode 100644 index 6ccab068c8228515499eb15b89ffb297a0a1bec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2145 zcmV-n2%h(eP)Pvp9?&_-V`|3YE-PJX{TUY1JE8rFI3U~#)0$u^HfLFjP;1%!+cm=!yUIDK_`%$32 znupTd+}xY|9tpUW^6DVp-IUwl15saJe=w-`MG^%NxEsudzoDF|joNlg5~JqZB3NJ8 z1W8SO`qsRFaRiW1uq&y;q4w(Q#V#c_0_k#5$(bC|xn)y6{ADCcY{b!Z)@Em@TnNLV zSAe!vr(-so9Tlgh>rtvV*lv8gslP8u932C-F-^WSWAPSN08yrzO0loAHB#h4f3*qP zQWV+LLK|NO3Lww&B8krKEQ~7<&2ySqfAEU0WT7=fxg=vG$iW2*_wl<$7Tx5HwT7=dDk!jP+ ziW2*_wm+0;Uz>-xxccc`9v?kI`v;ahgjNj1_K)Csh>g&GQ7I3hgR?sAGU@MpV1Ajj z+y{n89bpu2{wW)3} zY6KV!wsj7RUa6`SWAud-`+~i0z`(~c@b{s62?2iO*gDt%Tj2ow1+qSH8Qczc!x$I@ zQFe?26L~dZO;m$+SC7a;-~`xAH?*a2Ptt*_PtaFBY^In)lKO3v?HOoi_{OFJb=%A205qI(9c$UMsbO&0mv7~r_JWLic^(-7;#6i{g}Fy`cl{G zipC?KAm64bhxR+qW^fJWh}l00nO!&KJBUG1WDOO4dTpT-!(3D})U!Lwvd*0_%Pesh zWgR!{KktQq+k?a6a6%bvzhm)h%f-^nO;z4P_p_v($1fq@TjJVsu{3j2mFoiwU*8j? z-Ni_~3l9;ej5?>g#MN}}q~Y`=al0CIneBGU%(LCGUIEb4T-csLh@Yr93jYP1p%gn2 z<4?-6hL6i>q_b4tQlVLe=m9r^Y09O28e(jOBsM*+5;&cn#4&9*#`W!@UEbH|RW6ct zmoCMdv6>t|6{_2WNC#JWRzJfns7c>(8g1r2gyU+}_VE?l5ISd5N3hn^c zCV|(&&+s)O?{^&_uD@J_=Iqtn`A!%CT4z?7$FJ2xiSrt?7ggTHOeK>h(6!L^s7tlgPExxWmcom$4$4`0og};+)lb*s#qb@RhPZYU z4d;VSoG0RT%A_3$41)C#*ACE7>%y~O1au82#{L2@%{-%vjvM`LXY_(X8#;Ce#hn3- zkmPMB{Uml5ThN>}si}|p z%14rKt2KRm3EEL zI3ECeA?tE1IjzdU*m`}jo)_7b~`eH423;WSp@Z3uz3?6fKF~RaO+L^ z1$ippatloww|=$B#|YLBHbETQPop`-e!0era+>(Xr;qYoFJa!Dt^?pmqV>gfOKhU=9y0J1J9H zYM~3!5nK;1GvP^a_7hOSe~zVIep~`CBd}gmaAMAcE@Xq?x(+wMBzOpPwpF|7+p+>0 zVHE=FZxWrFbD_i8A-cY@5_?hs z`XeD{fAVI=3+?ND4Xw6mDYpfL-4{BZ`DU&{+eU-GE@#9f8OuAuJ6bF-1qZ5_j6s(zneuqLW09kFaQ7mcREBky1|r9 zKxH?o23>)-LBPfw@~-d!)OC05beSy_6C!QOLROVpUAT6N(Y0cOm<356g zNWkaw@BGMm4rN?{p1<4%4unuKC;LL&ot=A$$)g~M!uPFv;n!uiF^lRGV;+iHbSC5@ z2r*hB!^d01XX2gattYSIyuwjB>oMo=B~;^vj=#?ZU1 zEi>LkLHDpG#r^k9WO{LXfkETm+takpyB<%EeIkO9E2@VL+jCgcM#(eX3Nq~^pv^uHD!?$D!i=V28Tz^HBfbIHspHZl%m&oYUpjyGv4v4KgEO zb0%evpR{|qgg~6l#u?MJjm@9;kSL|AD+& z($re&olz5Q}A_wvOpM)#&HZM90#~|--6w|3bq>kwbMQLGA z+?-3Stdk`2+`xJla+yTa#kIYzX%XnVsl^R58$R_!im$56xb3_C#K$FoRBDT|-F7_I z?m;1!bfU*9skV)nWDkEdB{>&)=ju1J%t^mxrAADF9qH~}e&u)5MFxehc`?buaS(Gi zG<$bx=TKlh7T0e1!JD?+!|(|*Ls7|k_1Dzm));;wAzjcZcS4+BGPYsc@&aUd#D|?@~C2BmjBE9Tpj{0@))tgL0Qh9jT zv9(|7Nj5qRJ5Q2zw>gBx6FE4b!>-RY^!VH8Si-(SQ@1{nq&77J545SFk68^h&VNDS+|chh0*jr{J&Ms!D21JU>I60|gBt5USvxk=?p(c2U9Y+p(ZJ zmzDkNEBZeU09o|Oj6VXUrqLgi7j(S1ETeZ;EvQR9stO0O#mF>{b*&4B*-;JhKi z3{qa{P_Vy`gE5sj7Bu%~>#V1dr^M9Sb{mE2chT^&pF}L96urejFj~Mg;MIib`C@l* znE0U#adkZl?@ps0y#4MJCb01$899HT;ovqY1A@7c^xmhNFzs zd!@jH>0ZA;y;J8g&d91&P(VLr!jHKYb4DGnPJfZi`GW*#ooZM#PyUdi7%u$~wWT)U zh$%6xxybOdNjyM3hVC`dX%RcoEPvLwKV{@l4W($DKRe(T9jx1CSz3Q7>D_yjhx(DG zqFFv4bS*g6*ENr8vxj(VwxA=d>rJP-ih927TP$J>{5&buA+qyNKX%e#o4G2vEFMQ8 zc3PScfsFpWKljy4SLhD-MQMWWA94-WSf!ArB?| z!2Z=M5H^`kjl|sh_4t8!hLg6e$F3LdnJygIUq?ywT)fn*tnXT);4=O>FmKl8LLd+q zazgfkK^lr3@XYYFvb$HK7J@4SW?o6IokS$_8fnY+F=?dgm=sS;UC6?h{|~5t@+vP3 avIYTtnR)H*i$AiNrcMWs5V-i$vHt-9*Ox2+ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/actions_reactions.png b/TMessagesProj/src/main/res/drawable-xxhdpi/actions_reactions.png deleted file mode 100644 index f94397a7ebc1548d58f27b0f2e3b82b16bd88c77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2008 zcmZ`)X*?4SA0OM8xkjWkNA7FMP4#DHVuWJC`o{>%eWld&H}(_~DkWDecQPM278aH% z$x+TZmq@v#(Uze{Z=UD#ym(%Guix+c{+oK%*-jiP4+Q`K;uw3h>%L z@W1{~@#W<{Bmf|c!l13OaRRFaL6z?AGF_jHzLgf(iz31(#g)BBmuiSIWjB4Gx2T&BOUh<%f*IEBl#t?%_Wg`>e&ZlbHh`xdwyL*`zrieIxLClBo zZ_aDr-`Cc?i0fNE%j<`^<188tZ=Fa%o>kU@$v~hWaFXEvL}xsBBCWc$zMi8pTO=Yx z+M{TWNzg=AS6BJJHp9P5s4Tpb?w{pAc;YL-+20at&Xz|ewMvDXfOIGVn)cC0qj*MxFop<>99HvTP3TR5Mrllrw$ytLMm2LPF@0j#Q8$-yab|Dja z6ZUB0+n0>TL6US`ZGr6trN|O}*V)S32AEg3Xju&ZNSKVTk~H>P2b5`cs9G!OUQX3~ zHnc;>%y9iH%nHgveMH>m91ja&ghvA4KmwV=fWXYMztS$^<>l_VPmp2+m3kP5mHRV> znq)%-TL4#ucS&zAf^PsH2d#*i%Qc^f87flQJFjL;Pn4?6|g zoDN7Bs+F$%G;@f}Zg2r9k<5wjWtq>5#A<*J?7BwtE)U0dIWK06bn)GqmU0y>@q(ub zGYTKf=RRT!bJIiR0&Hn5hY6EHdI&U#wd|+@G&K zO*2T+zXof+YsLB1bn3#a7`W(U-23ShuadJf`?jB$Pm_XcL$8lEy_mzd4EQm*=T;bE z>7B#7^OF*m&5x5xMR6m&ojabd#d~69a#E2$ZdsQyImR(aXU!<}B}1|siYVu{DD5HV zu>7$81i|7F^Jue}r)gPT#U}(reTg5?xm~!8(Q!2GEW*9@*xMS^+vqhw-)uV-y~sar zDLU@qQ zR9!f(+9AYb1=pmXw$45%J3R;qenQu)yTd@#`mP$MRx}$Y;cjNoNO+7o{LB)*@q(W% z-)q)_5K~OfkDJWXKKT&qB5zHV3(`!Y0L3?6L8?S1D%A@ei-CEOd_Pr!6YiVQTGwrI zr2=!Kops<>jy%D*aSN1OVq5vGUXolD>SnJk@}XQz+qiu;(#(YIwTaeo7SqUy)TUHksJljjWPr{9Qa6{p(Y zow?zJzt780e1@<7BovD~pxQpSK5wEc*aj^w=Z=kLJ@i<^flIQp5=~z3+~LBN}8m`8XXh7L9t-jPLQtg7D%Kz;W`CSM;O zovT$Gf%d#1;GF1zdo~qXnJl;5nN>kZkLx_6hsm(SYT@YfZxN+g6apsD_ zQ)NX6&C}~MQFvJMMNYv8+B?D`ntivu%}!3FK=R63L#Qt*%p^ji8+^W)_cKv6xbU8> zy$TDk?2t;Y_budhzrhKVz_&o=-Br|ZOX(JuT#L}~X=z=lEY{z4;kbqkWGlz$7iI-x zHyCY2kf=&L5WakP_Y;;dtbA)lMx@fNA=BCx@}=^^q;BfY8Tv9#&eT(@{xo9cg**MucG@lhit61FYnU6+@3xjI`RO>-H+37uAkA(nSXI=S48v6c_v#;s3nyYt~-Z%GM2&*rI{u{eqC3~;+=;`hbfkJO+`Cb3q~R>2i; zwnE4C3$BTqxuAxz4nykEoO?1QWfR&wR4vmLSk&JrNr#rNde5AQU1;6bVvS}0bmK)* z%*v1DyD$^hV|i?aUZDY>vYDki#7+PQ- zdaC`p)lE?gtZ3a9|L&g^WM8%-ELwI*i!6ms=J=hZF1}n7=kHamZL9R_QTSbIL)WpK zf*@AYXe+Hnon$}9s9?lyEK(3#yTJ%i?RalP7lV}Yv|bR!r&ilzSKs2fS6*w@hyOcT c=2Ege;rC_L<*0#VyFaUnv2{k*pzulm2G&%i^Z)<= diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/actions_remove_user.png b/TMessagesProj/src/main/res/drawable-xxhdpi/actions_remove_user.png deleted file mode 100644 index b20972567e969d033532edd09474fa61f7f7d28f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 913 zcmV;C18)3@P)y000A6NklP3*~u6O|sON$AtZN&{6SZW(NI4P!Y z88)np6@#lfDD9#$=F@cX;~Y2yIWK?Moaa$4m&@gHx!mVaq{1AJ_?aE{`QJV}Z1RXX zDin3`=;JoeX>pns&$-QjE((LJ(&DUItTLqY#xUz7vCgp03%xufjfeEgJto;Bs!ok* zzNVi}NurZ}%1l$EPShTga)|=>Ic|#@mvss*Q)7$c?$aSR=;R4UZQ$vQsIb9N&*)P2 zxWX@ly=Fo&F~MuX{@{wTMUh_#TcTYF(9RNJzfn|nDDaf9TS|djggvF8tgt}fA10I% zW4tG@plmQn;BQ8h0Y=y-Fs1akN|S)6jNlPy(x2RIEk}}33ff1#F zkJ;u6WsEkqF}{*xkieK6V3fe1l42F(%MpCcs*<6^0mhRfc$fo9N`hI;mKPoVO(LhH*vk73P)VViQxAW0WzQii>4TRgO`` zEGsVNFf}j5@|sToh?xdgKs2m=<3uK77o)9AX~hD+y*X4LL*uGpi&h zae(pU2p;Bul9FK!4aY0*cMz)fX@n*^HlDLtkLG`XP+aDyg+DP@BP1U@jXlo+E);DNG2fu9Kb zMkz2u*fR>s4&5{eTcTYF(9RNJ4Z4*rO8idPpNuOeJYEsjprq_^i61%2r=l~W!a7H- z(=l*00000NkvXXu0mjfjK`zA diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/actions_removed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/actions_removed.png deleted file mode 100644 index c5a5b1929e80e56c6c427f839e0c2c007faad88b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1591 zcmV-72FUq|P)d-geNpL@J_f3P3!x@WJw_ILI^ zYwf+)IS2>{2nYxW2nYxW2nYxW2nYxW2xt+MT)Ig_+N>-Eum-?d0QUn}4qyp@-vCSj zI0oP-fN=oli+)Q=B_}%nCse82LqucbhB2E;Zyy=ms8H+At%1G!L?pATL4(0DKYi{|Nvevjdu9 zhqQzplyOu~0=Ofl{$l{XOkZ!CoRV)s z_gY9W9=p>~S7%IQu&)&eEn7POIT5v|G`gMZODH!xp$COd|42j~84Wk}e-LyZECQjv zoKhEnUj?}do%Xx5X~8;6$kf%y6_s&HZJu?Y+loZ-tUT>{V^ku3o5ud@A;L5|B6 zJ@|A=e+#l}l-syYko~FLhBJH-Iw{Dsr{j$Y+szfe2t6vuB+s7(QiwFJ+=erJ5h`_T zi*g&A6SkWx@*JUe@d`%+>sVhDQYe)xd=YvMz#&2Y7J!b7y02nAQ5-75L7p!{4PF*x zD|y8f4XKi%omWUJ6Sh}uq}YMkXW44|EXA%<2iI%a{ZQ~u`dJGJCwV76iJtX*y@W#T z*ca(c=?KS>COE&AhtvCCAxeT@l%L zjV83IU3lrEk8fItz zU4`vKvxo3pTwZD`JVPJl1YhaUFb$?T*;fqNdalPyF=l@RC(Xrj< zZc`r-eV-GNRqU|XG7wYeJP~b9nEltr*H&Wm4fr5*w;#S@@huVEEZDM`h^Fe)-RT%9 zn2|eV(KW?wsu6lDM-prCs-^Qu!y;EwO&0a*7F~l{gvO1`IU@R$r_2pRv@nM_^LEFZ zl7`d~i>{umggzK!s5z!skpqFzB2CK*J4!85J1o!Cp)7=&hxJc_(o012Vgrb*mU+RZ zE&QKtx~3s@lb~Zh3!%0<-bgZg1$$2O&97dgMQR)Cj-nSS_d_=bvb_Lyr_iMZDKB&c zz<&rKzwJB2$l$H8%Lj6Nm=jjIy2QqTME66CiDvhUDLi}QhNQdil+d4P%CKm%#nJeX2E4-BIlIwM&KiUVM6mg{b^1` zzl_W(nwe08uK@H|KBwV|A=VX}ir(ym8e9Odm0!(CL+l=|yEVxdAzL+rxi;Z;6+0ua pbDF40xIOHm)cM!2X7 zDqfN7wy|NH&m%aFI$0Dyo33Sr|B2V8tOc*hef#|WmaB6EmxKCnh9;b@($YlroY%19BT za(-H~PotvMWSTJivSpEA%tR)C3tA3=mrOrKl$==W7AkW@yBn1c%6^5jSDH6lPcajw zcA2{t%m1`(HgmVvTe-#N+(+hicKXZ|BbKNM=oc7D5G1%ift#8(-|~j0MEHT@M05p` zQ|T=6E#Y&DM~<{HhI{-0D)-a!SVEerVdWeBddZ;bw0uhzutK%|qtOt*D_BD6Tj#8q zF2s1%D7kO5LrDv#-*j1W1aTdMJCNlJcK(bMez2=bx9Y+K%{2 zf61K8z8b8QoD^)gA}h-G`k_o}dvrH9UEON8i&Q3?n&GgbK$b~q7bCd!_X$mCT@7Y~8{4wn)wPbRwBc zg6dpQ+l<|wWJMAt3o=C@3>6v-!FC#bK3u`ID|@{WU@Zdgs&i%x21(yR>$Rs#&)3o7 z*$BC+>1_vU>k}g~xYA!L%#x(gJny-r%?x?{eqc)b9r0v$J$vw`gNRe`aUIVdl{NKC zKZIG-0&cuT=B(Kk9XD5)m3sm(`Gc`OZGIWaHm z!Dyd{mp8V`;#k?;QX>$YX~|bY`6#lcfmOhm7t4otoadSrEO zW-dc~?gXrWvoXZ2T$+|I(C3>_Hx-HGyNk?jpfaC~T~DfacY0n_6cD0kEDf4!W~2q}8p1g{jW;XJk-xRTBpZwgcUreYx)=S7h9G}59ww#8#XvPCz><+^h7^~M za>d~L)|?F1fqT9`R9MRB?Lpn}iA|Em)6I^t*ldGNy5)@e+}>`d8z%>cD{_yjzAr5h z-c!=MFeww>0!u2dJ>UP$uanlYJQl!y#ygn3XU>}bGBkwxx60EjwsAyNXxPr|(c4uZ zvi_GhCbCunl{Sp7zNssTt%9DvXLra)K{;>0`mu@Qe+7k+pJ_$yD5p`JI+r?fm(X*I z#fV$$>L$QqpwpU^9X-7&+qaOa0IJM2qh&@uigddmg5z`1yjC*+TInKhTaBd8a`APm5_{hjwM|}{;fHmzo{5%zQYej- zYca0C8RmM2&%{^yhntBX*OAKFG=BJfhBKOF8jmB6csbsvgI9-g4Pq7+6z>% diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/actions_setphoto.png b/TMessagesProj/src/main/res/drawable-xxhdpi/actions_setphoto.png deleted file mode 100644 index 4317f120b3991eda7f0718e307ed918d8c0713bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/add_contact_new.png b/TMessagesProj/src/main/res/drawable-xxhdpi/add_contact_new.png deleted file mode 100644 index 9788a4af0b3548ba95b62e0b6d9293f05f9ba22a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKz3?$tr89oG3JOMr-u0Z-f3|JhnUIFB@lmz(& zGaUYZL_d6M1dwm&>Eakt!I->&FCpe>!=d!3s}9otH0-lQnbxp;3Rh$f`kC=;?Xv!Q ix1T+$`2y4*Gcu&JWg5?^eIN_e%;4$j=d#Wzp$P!ZzcG9O diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/audio_mini_arrow.png b/TMessagesProj/src/main/res/drawable-xxhdpi/audio_mini_arrow.png deleted file mode 100644 index 2a9d3bb9a2ec9bb6b0391c2ba6de80aa3eb7e216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^5CqLeP(V1BXx$+`X4`=t#M4m2?4&adk3JW}I%=6zR%@FOOt7>5pSjzUI7J%uBz fEjt>Y#B3Fp$?wl~d+7KCXexuJtDnm{r-UW|x8g3( diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/audio_mini_cancel.png b/TMessagesProj/src/main/res/drawable-xxhdpi/audio_mini_cancel.png deleted file mode 100644 index f4a65655e9b41f2bb1a0fec386f96aeb0d053513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+iVow*xkcwM#r(EPcpuoX8cX_Ft z>~h&TPkvpVv8C(R1L1cSw=YZ<5nnHHU7X#fwTscD^^aPc*WrUF7N-<` zd?k8HNM1X5Px!Qowjz@-J|g$Pyu^MkY6x^ z=d=IMy`HfCJG2uh6z1vT7*cWT?F~!51_K^f$4!O*m6b2Hh!iHT%2@VyQv7>v28M*? zSIn*o`AWWDS*bJ2=$6)u6jb1MdX0UXoUi2KdcV8Mvlti}UP>eTFaqGghSj0wpAFY*E1ueQ0 zX`3wk0nsdsh)Fh&xSL5%W17s&N%4KwnfE)-nVD~fBvB-U5JCtcgb+dqA^t)iljK=t zixOq()G1Tq8IQQldHRlz#x!eurxo9L!c>ndF~kx@+U0;nQoX8jgU=k5Ph9Ukkx`!0 zDVv<>C6#%8(hU`^^~#2S5c_~tHdtYfEE!Uy$dKhSciE&G`}zBcHv|S*k9n}yEHHfN zm{Z*3P0XkQgUQZHv&t^Hw#LrzHby78*=br}zgVWf?a>3|`Q5nKlH2w+?-@UG#snW4 zQm!V`jO`A#L%O4!5nft3KN4uv4d==ZCpu0#$t(NZ34hw#3oPAL+DOAz&jgD)_Yubl6l9s1_?O8WE5GIgVz^BWXH zMtaS^jKOitmyBd2Bbnx6hY>PIGLn&uWF#XQ$w)>rl97yGnOZQJs(+b-U^09DW!8hq z6#UD~29wD}{%QEt-j~dF6avQn_3ttVG8IOnFfi3xr)!xC7o%`6#tUyU+rehVc$^uY zvLE-qz7A!o>`@4^?S&9R2qAcGlAyMv3Ca5bD00000NkvXXu0mjf5{x@V diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/brightness_high.png b/TMessagesProj/src/main/res/drawable-xxhdpi/brightness_high.png deleted file mode 100644 index 7d2f3531d4611a39b48b6fa167b2e1f0ee2b0303..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1433 zcmV;K1!nq*P){xt zq3h4BdrzJ2uCDGkvt~`UtUy*EE07h)3d9sxUS8e_E`!I#ac9hb)%6vkaCm8#SDgs4 z2_wtWOKJWuEXDl0?3?N`Styq@@%yGQzik}#wc|+Ir<_@!A!qBg6^Ofb3rL<{a)2Qx zVASqso}*v)y2DjO*#>^b<1g?h9~IXDl_fL*C+h@m}@YqcKp1duql-9VHd zfla9#M;=eIPryH*vaYyKB*i(5l4v50m~}gR-wrd zSht&HbD=R4)eiH4!G69;lEk+b?m?3|T8Rbmb-;Rkm~Ap4Ijl8KdG&7Bs5QC|f}p;= z_%Dgt=e*5+rS^Abf5zm|*5E$yAMtz1bHni8Lfe->FT}p-#rPuQ9{C-rueTZ@P&c49 zc)l$(DUO0G9vro~Jme)){#OJl=5mepcRXLWdIGC7>HiW$TqfuLNzF71zq2l-m+0C159{3xbvyR{o3l-y1S1^~-OC zt+>VTkmCsuyDUQiwczip6f4%D$^jWSkx#KY z>bEimfnK|PP~$=&(g652-((_!_j4yL5gDLR(^7o)p zJk-fw6iYFzBLYo>-hY!e_d(W#>$D-z4CC^z8Zq%C(vT~O?#kBL?_#mJRqA7k`kBW6 zKJy}m+CgYdqN|cAPAt!cO2oTxhOoY;JO$6e1z^47X^+&(Z}ZAmDscO3T#P(KyoP^H~G)1w9`NLXiUPbda&*U#zuQDA%{e;-6FE1#}veSQ2U z#HH1Cl79z6cDU8#UT{bp4iTZfkt@kd8LyJmx}-~v-4lYYgeVCZ$KWj=pJ~lr2;4MC zsA(+Xl+#fD0I!>+PbWu6Ts4S{Rh)9-@Um|Gt7U&DM@Z<0yC;Q6dbECs`#UL)d|hRZ{|3VyrY_Fk5m$P#cZ|4XKOCZ&v9SDF1w zt1r@izEHjC-^D_CdfT1_8glBgKs^!Yna9(wd)?htC*=yd;!WAFd)=$7%0sNtjp8bk nFHbiskQK-ZWCgMU0R{d8xjNio)&Rg}00000NkvXXu0mjf3ZSuf diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/brightness_low.png b/TMessagesProj/src/main/res/drawable-xxhdpi/brightness_low.png deleted file mode 100644 index 689d19b4c35d4de670c4186d339efcf3a6ef8dc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1199 zcmV;g1W@~lP)2-78oObzPNkNy_?;;-P^t0yPKChX5V}Be$01gXLg5c zGy(+#0s;YnfIvVXAP^7;2m}NI0s(=5z(^u+dwaVGpTO5qyEu|SBn>(Og{Da-Nqt9B z4=guLX#QQ?)CGvKIus&IY#n2e)m0(it0Ji<=P#qPvN88hEEFIn!ZiFKNBO75$I8as zDw6Xl{1V=PYcca$DpXPMKKuv%4ZnfAE|k8xcQJgoVC9Wzzooc32vnv!XXzb^u0hH( z4&uMCNs$HCbe?#n`B2a+PoYw6m6ep(v#{O$lv6V}&tvW_wWu}dBhlM-B6J(xti>oF z5oXd8>Ma}KPmjJ@6?aW*fu-ZJsv^-8d|?un{#f@k9*WhP5Kns*znl~h+kJQ)-hDJ7wF|j)lxH9W zuro<<6JG)HSL8ur2Ha(nkKC$^)E_a)Tc&LJZK8{e3F7c&FIz0;1Q1NQihS*>K>&hprl_}<7_MeA?l$2(@X^<~Z9xqk!(O&hfx zw9~_`KXaWkB=;bmUIkpbw7oG393QpSXMGEi$?SVKQ9;)>0lIjW$u9DJeOtFgS^jrX z{{Lw^+{e^)eTj)2L*_>e-%pOed+F1Eb31VT(8yUu>u=*Lp0AEHebyS%`*Vl7UW4eX zuX2~x(xaza38Xh{m(HyR#;)tLzI~S|R!0^t?e|!hp01TMFM|F>oLgzUE^vl3G9t=Rrx}#CkvqCyD|CAZFlgcn6-30g7yzNxs7~ z)E%kqOd5}QSb3Ch#?4jBYl>WgzrZnl=fZ-dHA#nP_B$>1v90>4f6ECXvcOUNn3Q*^ zmcT@_V}SxM;%c3C$5%9Vy#nYxDcAqS@YBq(r2GrMe3k1c?9f&l$=hWVM{GS-J~}KT zU(YeARR7(yq-kHu+Mu|w`#8tB&w3t=6ClsmyyM<-`JqK>G`=FQauWE%=nD~}xT^$H z9+zw#uC2OjZr=o~pTTG*>2d4JTA(~pKIK*ZiRw@&DKmqLk0`FWPCC9VDf<9~jX z%F4z(Vj@pi*u_Tdo`>NE1Ofs9fq+0jARrJB2nYlO0s;YnfItrj`~_hjCAk`hO*sGn N002ovPDHLkV1ns=GNAwf diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-xxhdpi/broadcast3.png deleted file mode 100755 index 1e8186eae81892ab69daffe4bfe5a46b1f6522d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmV-N0l5B&P)%4Y4@RV>%YG?S)Y(XU84qV|t_wemGoQ6RRMLgtWQ@}s3;XGho+-Fn zCNoQ6bGFZOKJQznQ}6FJ48=tb)7%qgo@PTi9^i`a>QhPQvCi*` zsG@zebHkrfgXgnB)KanUPHsU9Pa&I_RDAc{#T{tjDPo6zD?W4r-Q0r~o)UJkSh2?o zcmRETCD`OCV4R@iXVeu>fCz3X6bLW~P-`!Hm!2 zQRp7D7^<{z>f(USu+V)?hQ(uc8e_aT<^sCr&7%$K(^he0GmGN|l8!_dR zIT0qNY^EJq%sU8IXcH!$DYhNB)NyQ=Paq^LV8KD+lgdc6Ptk0oLEzu0a1=UKv2QEc z5`Q3T4pXm0dVa(iPXx@{tHs=>#znZk!Wm(fDgVDYDDYcqE&@t<78X#eW&x7|A5_C< z3wIGss;+^C{?IQ>;8Vr>Isg6HQKt6tuj`9G(sB2gNCR`6(oafk-~0i6pQh0wBv7mX O0000+LQ5zC#WYtRLD! z63TTs8xzXbA7Bl;x>&l3k7W^W)9L~SmPMv>5@H=6c!)KxnDHU(?e-Sc;Ai*QKHgjY z{A2R1#ug!0p2G%j4{{XeEHK%8P-gM}M>-!frYXk#`E+=$F7zdl^s%(yRTDR6(IXBm%@LJiEv;{$8b@yg|S=jgG-L3gk z(iA$s2WMaBQGK1XeojP{sAHX@e>wl(d7D_d`ZsT|O|^7VH~+gN%+d1HkKa6z0Rd^n zzf&8_JR=JiaoDc3cyRWx%#!u#>{4EiZ=W8xe#yLq_3fU9G8RD>0Y@~#pH<4^;63gP z{aWVTP2rk94z(Mr@2uMQB`N&k#3t@6l^0p^9xs=5vzY2#y1ubCJaoc+3GLsxdQA;n z)3xKPo=;h4p8W9Rp-{iw#jR4wZKhIh})n;a#87{&Xa#wJgWlUy~}>Y^C>n*F1O4)>Tuc5 zYVn_Kvn(dp_)op|N#}luaQd|T@JwCnpU=81_Vr%jiNRnxQBd$jp<(rwAjx#q3f9LbN zBW>~V{3>?!w#cWe_w4?p^}hbI7Q5OpMhIFqvp<$KLF#}e!)1nZq7rr+ysJ{P+k9=e zHCuXo=)cCyXEBHKiOEZi`%}Kkd@}oPnc}x$`hWJq?~T#Mcebyp4bG3rJ2!Xd%I(*{ cL9vfPKknevjteXKfZ@yF>FVdQ&MBb@0E3IGG5`Po diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/contacts_sort_name.png b/TMessagesProj/src/main/res/drawable-xxhdpi/contacts_sort_name.png deleted file mode 100644 index 4e4d64ce6c27ea2e8407f645675c08f078bb50f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmV-W0k8gvP)vo7_I8GPw)~68C{*0LL}sLg{Dktdrcv`Ydp`|tXZ%Jp18j;}+2a;YsGR)!mTcjf++qi6~4eA9; iu7nZ4=>Px#KsD|qD@Br=ViK(Y00000!)Hdr#4p$02gb+f+Nb!vW3Vb0! zjAyB$-dkig_%+s**dQF@-Cf|vDPLeMt@DPmc0bQ}m(*F}tUZ2*00DLtrKOZkh@!F| z!Tu2duy)Uc|=4|^h7jVqvij4Q&v4w0%uD9b*TP=kbg?K3FH m2`A)85#xnFF9;!o^uiyfl3ZD_@aJd%0000~)y>q&IYN^ce zkH$W&z8uU)U8HyKIC)e;ac9RZ7hSE5O<`LzO?BP0cFj=jxZ&%hv`K8DrU=W<6>7l? z54tvqq;Tf-&gweowDRbZryZX&FP=3v6@F?n{r;KPfB!JY*WDLSpLe)&-pi6@Q{4@MJIF4Pui96B`w&``tu<>*S1#+E>4dMqx4c*v(`cvXf3%-y)UoIYcRv5TXSMvA<(Xdm=*(WXDZ9L#r zXv5f^cI%{-1xxz_0hxjWjP8>y-kmx3zb3cQd8<|{)M%FDO*TL0tvR#!=EUztw_cb| zGT&rpzC^sQ?7$8K{_XE#4}Z+@u$S?@ykqHB{e^Y&cR$RSbWGXu@+)H|N(!zp~qjse5m)#13HNe=gJm!K;$AenNoo6U?fV*dJL+n0g@t$3>ZqUDAumIe zZ99*C4miFkPnqw$@zhLXw)0(5oQurnMgLkjsZ#yYG_U6~Jfi|I#FMt z-Q`}x9l@7pq$e0F^*gNVs9~~H`o#65?S%e?kVU;S*=IRjdGYZ;L&?hYMHAQYb7$_h{do5wD zefK=&3s1=+^Qbo^)6QnP#_Rv8ySSm@-y4_Eo4co$FL*TFzoCll7ps5+10xHFFj?%7 z+`#ZlUjf9mY*b@lJR-!*q0qp<1SVG0FOULpRwx88!}T0FtOe5!HUmOj5NKF+!S3-N zhxUbye4m)#wzJ(j&A&xXDnr-)LeYcrrP;bm|74o$T=3iEaeCVSV>grCcg@YYl;yF2 z{iNPrp5vcwZZ30g6uUL?3MmoBJ)X%hD@K*{<3(iQIj)V!+QFK7T*(cdkd@y5<-CMx%H{%uK5L>N%9 zZ|nFF%-OVjRSbkNrqvWGIQuph5en-;6TXWU9E^-IHMRzuu!^$an5daJc2Owc*u_FY z9S5otPV0wJpuBL55KUM`9R zg5w1>;z0?=1M15vF!B1BXEFD3cvyO;9DbB0`U4#)G(s m2z^!=t`aU!cNvoNI_DezBYv0e@WnO&00002 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/emoji_tabs_premium.png b/TMessagesProj/src/main/res/drawable-xxhdpi/emoji_tabs_premium.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2acbf8784b043b649c705b619ba0f598dec244 GIT binary patch literal 2545 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91a-ahM1ONa40RR91asU7T0C0Yi761SVTS-JgRCodHoolF6RTzdnb}uR= zgD!U0jP6#ZV%AaYM`&~-!;HxMRbf&=5k%4DpQS}g2t`EoLxQAIwCj(GDCiWG23^fd zVcJRUqE@Co?`h9rX1nLizOA*_npq#b>^*C*wZ89r-@W$Uvu4fAph3X`1A&3SKwuy+ z5Ew{epew1cUCQ?C*)xh<&Ih|ePghshH|>&JN92KkCxW*?+*Ec#N08uqk_dG)=#48_ z_gcq}@jcJBj~|hi)rr<@cUjvL;d6qhHny2^3FTvb&NUwU;CO-OuW!o`f0nu#x(!te zF~Eo$26iTlykHkbeO7a_D%U2r_N}QSu%d=PR*3Us_Gfm73_&%DLg?!w$pkNZ45qvP{XPA@naQ9mhk@ z<}{UEs^ja3%sQ`{mUD0CU%eZVj7FV&-vd)iHrCSj$&5;^^YO-f9Ffyt*OZ77PJPRV zSLUOTw_0G>hL2Ly@aodaWpyOke+5j(y$2tsa(Vr>RJILv=G%xYI2?-~yl1nRu z$nOxKCHqH2TkQ)+0ew03BCs!T$#xOU`#`G+HiBR3&>QV<_f!NVYYv$q*@)s+8)+XoQz>A3s7gha$gsdQJoVtDNo1M?BH zL8AsC5%EI8{SY*iJC#BRrpCZ{#FSQj7JnakFQq}mh#bc^ch|=k7xL8lgJIuk1{$=A z3#qpe!TeyLL94is@A{ELh!O@Gw2BM)LZHYS1{$<#5R#`LeS3GFH>q@Pp!3jbWqta4 zJ)!azL{n!^053j=t52pw_7{=oT!hqAV887pWbFuo&S8H6XxBN>TB^QmCEOhd_+(PR zO@<#Jr5n5^$(q2dj*M-|>81bn8nDVn89)0x{2IvkaJArY~2)k{MV_@iatSm3;XB z(uRkfq>51o`T@TF>7b-~q09&a;(Tl?5#_n1kg7ySKeL$xbeRoihXHXtDdN7R$5cY9 z7dqU@MvH{?@m4Ui42a_y5$CBqwY*0r^}>B~Cgsn7vcEB$4>wq;m-= zCx|(L%~GJRfd?zjz-GF*5)nVh(^YOEi-E*!C)+_XLu}qB2Uo=&B5DM_1lmnRQL0&-G1{?Zl?WM$ z_#8=A;@=Xv7hCev=f*mbhh$*2=VlyLfRT_0{+F>69H8s+OwD_ObY#MtU6IdiD%{VYD>s&Wz?Y- zglrSxtq5uS9@*jd$J)85)dJtuUYOY0xU}j`ai`uNYnmA!l{SRzu4U7~TjN67_+Yt8 zA;0G2`7Ant&SBf|i;7XXjg4_3jV7UKIj|MjwjLZ#jwh!wpkq~-(OE6imsZ>FAGaai z959B5i+AEeMrHcIS9Mg^rWqZTriJXb$drCSVH9F51iPF0)iKpkU6A=l7n=2(qTHyE zDg5WJ!u89>muptzr#o+yY75kdX)``emzRS9+rf(I`{N(@xCa#e&k^+z^`$;dnZ66+ z-})qiKF<^*^t%)sKj4{^`oOywo2bqeJc03tH8Q!O*aCF|Yaa0RpG2eqkezy+p?Hj{OfdJ>Orf@T=lkVCU_I< z0)K+f!7Sjfh?OxK90vvh1A&3SKwuy+5Euvy1O@^F4l?i`g%G69Cgx)r00000NkvXX Hu0mjfkrclN literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/floating_camera.png b/TMessagesProj/src/main/res/drawable-xxhdpi/floating_camera.png deleted file mode 100755 index 15527a17ae5cd1765a1e2967de52a7cd4851eca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)W%S0007BNkl7Cz11Z&$o}^HaUfWZ_n8btTB3ltZK`!|SLJmDB`XPLQ z`hw6;P?ew!Em)1Vzmkf(vrCelbtbzM{9pHBempbJ>k6SL=26kSFe^Twra!zliG9O0 zs=8v*6!ta0h@x{|nZUlJK~#O`g)a6P$J|BVc%pK=MS)Fz(raC?!z`&=Y=&Lp)IOOT zZ{x+bw1*`qkc3Kt%|yW4B8HG^o9lvvbPo>KC9CAgVq;-plVyfAn!N>|;qa(!?Hgb* zT1}4vUcv5Kcn7JO2Ve71sj1{uJGW58zE$pLQ)*~6aKKwqOyE$Zio-Zo;On$0@QUx) zem-&P`(9^(KA%m^1o%u2DW3DSt<@nTzA$U(gB>5X-qG%aVaaky7kugEE&Uz5z14v` zTeR}JsRv$_yl_Hqrz}~o>w)u9B%g+Yk9pwQ7xlnd_n---#2a(%b9!Jq!bSToo3tL- zEe=$bz!m9f{!egXSM3GYxDt5ORB+8mYfe2BdnBb(Ne{dxm4t;*@SJ45p<6Ns+@tz9 z>}tC!g`&-sZj)G)ycpr6%VPRevRu~hP7Ma71BW^2;H``u;)jVrpca@u%7JD5h&lfh z!e>*XPd+f*JYnvo_EnmAAdy z3e#Z8%WEIhW;r~P^_I3K>lDe6CPj)gIZAAVm5clRI8pFLQa@jI5&>@sW)lGyT19_9 xcI=mbO@$15F=HQlt**p2=e-XpwkX`R(7#xIh#NA)-7WwC002ovPDHLkV1kJ7I5_|S diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/floating_message.png b/TMessagesProj/src/main/res/drawable-xxhdpi/floating_message.png deleted file mode 100755 index 823de6d2c9e863a8dbcd9e9c7a5c71f9c6102579..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw0wgDV75oXLmU+53hE&{odt)!}AqN4Mhn;0jCzLUz52moF~tvzT{Yi?b+wACX)WzN z_Lnbex5_qd_YJZZZGRgV-_W<{``e&=)7)ZO?ZJz0g!|H$s)TtZePx*8b^prA2TaR> PE@tp_^>bP0l+XkK2H{z= diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/folders_archive.png b/TMessagesProj/src/main/res/drawable-xxhdpi/folders_archive.png deleted file mode 100644 index 49cdcc88f3c5c49c3bbf300208e24f5716387743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1058 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvNA9*-}H2G z45?szJKH)#Bv7K&_?Y?&F)0C8?qn^;)mIiJ2p@D(Y}%?2(Gd~BB^DNyk;#>`sZOj<1_ox(w^UOFVg#S=I%`E|BtPUpKsi4Y_?2|NlAeO zG<%}Mqg^Y?cGpT7u0NPlDPhL<`Q|mjKh|$#bM!nXeYcyu@EF^l-y1I6w$*BBDo!_M zxRS5*ZE?(>{1^LM*FL@W^F^Nf1>+4TV?Ml|!P#Ft|M5Gff0j3*-d%`ysQ1?hjnp$Z zt(m*}#T;JM{S!YqCf<-&AMM;_T7o1jr$LLeITSAIg6pezIn;> z$WH5T)pAOEl8)RtR&eWMW%G;MTeG8deHi_AE_3N|U)@^Cl_lJ0QQjLY&?;KYX3;K^ z?7;aT(v(wy(MI@#Oq{U;Q-#_C%ROlgEFXLh6#tl!c0eXVw)L%iLi>idd^)q-DtB#u z^)WSOvi~9Nf}Q;Qi?_+#61Y{DYi(AN(8?J7*Yk&eiuT7yRP7aT()hOu4f3wtUv5x?+qv_ZKQL{NwDY=FPsz zXSihsi^05FSB5{HIq?m$8yYumxxr$vE>?+Q-`;n-I5ww-=uW%eQtkM+W2(57^qZ%g z)_*TZy*7V1gVo^1YS~9$cFRs<_|}(mrk8IXulliUhS{CL|Ah`{zI&G-v|x7UWm6x< ze^zT-qPttCNQ zBrkYYh|P>(+-P>Xb{gyb1sBpBykzcQzTvZjcQ@1QrngP4ciuE*Kd-TVYm;z@U$Uu4 jm{CxGc+_~2;}3hm)E(1!uCp`%Gd+W+tDnm{r-UW|nM=YY diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/folders_bot.png b/TMessagesProj/src/main/res/drawable-xxhdpi/folders_bot.png deleted file mode 100644 index 7458fc908a558714ca28341173d63b815bdcf81d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1653 zcmbW2{Ug%}0EfR`W}4g~^VXJ^bX(pQDrSex>BVteUaI9bW8%)dTnvpZBVEXqc6n>o zbU8OCFCA7Aw!(zGM9JZZU1Vb;)~&J5{RwwJe4gh&cs}`G2OiUhSU>;((Dys;8@z4O zzth#(=3H62`?j=WabMv8;NCU8%}5Xc=s5WK;zG}BEVBtbXqd5RsI{13RzhPO=v%C2 zT;CuC`{v~udWIgo{vjHt3|=?Fkt}UZHmn$)#vo5!(4`ZRx0S=DQ9na(j6rvG+0^m$ z&ZhZ4n@kc8Bydv|1LgBl&yD%NLq@o{j=yl>+(LFO5h?ZO?bQ3^kr;iQ~>7-x0k3(dM8u4>I z&if~e4wx1)9SrBV;HEZfT@`v3Do6Diwaz)odXge0Sexb~_bc%AHo>NgpKHWQwIbVL zqF*rJLJ4@)YO9Vnv0rq{9`&)k%yku>EZW!b!|7NbB{Sbz9;CC^N4?*A*W;OkMPb?# z)lPb?#37Z<>+$R$@!*?vvmLXiI><1&W5G(h8AVYQ#A-L_CFGUtMb;OXA5(|{GJE!_!DDQ zJt4fuq-M2Q)kraIBP_B$f#u53gUFAK9aq#k)3DQ$QbXc*tC$(uhLg(1CMz* zP^LZ=avq2Wb_?xhGfU<%U;LGLY^FwP+dUL|Gkh_tmg-0tlv;irA9v!gMa1Y#HT5}X zX{4naL97O)#ur#3&PyxiTMTvW^kW3~A>S;IBffoPZ38;YA%4ZizFbN`bScMkn@jv9#&`Av%kXS<()FqxNZpNSI$dlz46jws6OqxJjXEY#2(Eb64!Ig=e z3v~b}zu;^PD6cyn*LjkeUg!oY2L5p-}J&i!gSl23e#x4=Ye|bO^O$qA$M-xt!L4n zR@K{MUv3#VXtvv6bj3IQP5_Y=3E%2~X@9xfZrwcVEkQBq=#zG-2{?ULF(#jqZG1cM zdc?D*FQ>SvxE{3!zSn9#EFOLSLM5c5pd^vV8Mfx9YD%SMbSyr0b$?89F8g>I+2 zFWKM0TUu-xk^o51l8sWQvCsZrbGKV9$c>%#j+rr5HG7yiZ2t)0cO=la-iMU)4{P`e AtpET3 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/folders_channel.png b/TMessagesProj/src/main/res/drawable-xxhdpi/folders_channel.png deleted file mode 100644 index 389a40493fcd1d8035525834dca7bc03efc69bc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 980 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvNA9*cYC@x zhEy=Voo$;T;waI!nM+Dp(Aqa~>4KyKPFI4C7;!cA_9}HOUC`R3uuaUXX>J6kl9QF- ze=R}Q!03Z+0UHej0z5zHADi?30O#X(_uig)ckbVu^9Q`s()Rz{H}m=KlXu>}<>d`j zU|{5MU|}bK6Ye(@ zW88RGbtbb}_{NyPuc``?)#X#Ze_=wewyr~^*Hz5bB(UFOV5^A zEWc_$v+V40|9{%)PmJx;qZuQ0eLd$dF*?m`8J+6y@-{JZU5~=H``50qCdC-Z7dTDb zY$n5cGb~Kuc7DgNO#*(o^O-g}y^X%)wtN4RU*BfzpBS-wWz3a_xVv2I|w;ooaBYyL%kYtvo z|J;|tS6vtVoT!uc;+fM6hSZ<@^BUf{^uKt&caz%N2ghv!zMej~u57ZG(1KV4ZQqQo z?n{qfTJuGDnd;Wq(~Efi_stLfJO7E+w3oYIzT&YKyik68vRwR<_>)a)@ry4h^Uq(o zEV8gGZhZ>7gX3t|Ca9kbLR8x_rdXPC(otZ9WbeJ z*`;t+J@)I{pD%@%f8FMkI4`D5bLYIMX^%@Ug=StzLTfZO&_gKW=2cFE*u|FQMn;twjb;lKa0nd1;qlxw*u6(~F|J$FeU@zm&1$OK$1s z8~45H&fYBc*rmO98qbf%LD_lfU*Z=&57n(%{v_yI)vmlHm5;a0xMw%3`TWxfru{p% z?=#V3j9v6B@!pzEcBdEcUY|XyLGz&TcHv*5pRbsziZIGD{a%`H%g6kA^J3YBNsqUC zJ4`ssZ=L5MzhwQSpHm+Tzf_n&N)m^u%}{Ezm&uN{6Leh}4$P(up00i_>zopr0Q&H& As{jB1 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/folders_group.png b/TMessagesProj/src/main/res/drawable-xxhdpi/folders_group.png deleted file mode 100644 index 33e50bce10612f5559b5ff82d35ba9a6905b2fe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1187 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI4nLo-U3d z6^w6Z+h&M3iX68!J?0YNcyxwR#{==KRBcAbzyJ<0u|*19z7Dyr+-uhyIp*ZZ#JD)3 zqnC}9n^jbVTkz3#1&I&FN^Cr{9E9rmg)E9Tm+#(OJbUk*{|D#qJ+rU!^Rw?|@5|E7 zH>aI+abO`ErExVn$*CFH+1+!K`+XsA3zx2|{YCdH-Rs1;TI;rLn!v(vzvbM*`W16- z)_uoPcp8W*itib{nu>1iSBogF(iZw2F&k|E#=mK zdt~8W!QNj1`md7znjbsKy5Frt;;z%*6LtP|3zom&*~H!O%TTRGvUS7hsVfXm=zUpv zC?RaZ<_y236{h>=dx~8U7dfQk_axQici&=_^jo%nq_gFUc5)gV3=_E&75muGfnDme z#ERph>u2R|UM+b?u)1}zu5YlX&4Syams~|E%ce+vVEDUz`c3(o@N29bc8u-^nzvY< z=V@QR`sI?<8>4a~#UErp=-lz>t*51%b^5_cQw)>J=l3z~Sa8&D$BB!Nb|mF$eERq^ zBi#9Qjn%I&C$})@tmvJ*M0Z{5hI^eA!O1tB;-Y46OmAr1*>EgKXwyHjxt=CxpcIU07N~=yK$rM@#O6`uX zcCj^T3kaRIxHJ3c-#LqzX5M43SipUq)g!c0!8zu>^+WB4Y2nTj8LqYYEpR{4ckf~6 z+P}GPJHvHeF5bG}r5&3_Qem`HlTI19k!8G|@EoF<^X02lpj_7>D+aWlm^`?c{y;DUGZrm3(o*6Iv z(Wu%iK<~ZFZ;w9$QeBo8FXWlMTeza-X8Lzle<7Z%{IEMNs~0CdTQ*lkI^d2n&-GQa zo<95|wXk;c@e}ngidD=v#CA?dh1W~P>?J)v?7pSX;W z?W>tm41XrcFP*1euYG>w*qbfs_b25Ye8+5|^+xJe-l9)w%`x}& z=gkuNd8_us>y>W}|NrwoqpKyQx&~u2r^VI3@{~3Ay%?-#r$1B=las5J_iGISFEem<}Jq=Cz({by!=RrLu nFSdYYj*bR$k;7fVAN+?u@4pb0JO3)M)M4;+^>bP0l+XkK#2pm6 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/folders_mute.png b/TMessagesProj/src/main/res/drawable-xxhdpi/folders_mute.png deleted file mode 100644 index 08be0bc0a9fd6501aa3b76e214303f9be6032566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1383 zcmb7^jXTo`0LOpxx@lu)Q(<04&C2q!iX8G@6wXYM(&nY6I8vx?=H1lRuq4}QSTC+T zHLEj9-p}r3Kd}`oX@(o=dw;;rBgKR0cU}o` zGduy;-p#Q-KZ%&o`Gi_NGy8d_{Ly4F-UF>X_?<(v+B~mg>AdV_PZz^f3HSv=ebjf-GYQYWSleqKwj8IB#B`$mUuCH(airZ z0S)FHFWZS^REzg|F)Z8)dBc{h-(v2Gl_;uTd(t9yQAIOG9hth-8XK(IJkZsLa6RWh zNB_~+nf@hx(G9vGhxwbUaso_n9xZrTtF{s3QC4KC8e8+pAoOAiscD{5iVTozv z&fwJfxGb@G?Y!k^ex(!T4%g~N+4x%J>2v^2;lIUhO_9B5F+ZAYTBED)aD?=rBE8nm zObQy$AOHz3Qz)%8{gW|47khtEes!v$2$D;!0Ok{WF5xhh1F1JH5$Lkzs(O;TqKz@D;`_RU-Iw#teCeGi#6$VUn5o1&D1wzlZnBy-P$V8C^(>a_ zksXXY2E)_$P?Zn|cXojh<63h#hnpuQ+Ew zythtzTLcvDPUh$FN@pSS_I`?9;RYgb!kkaV+`|7cN~ClBY763)FSIw%T`}@Ybl9%( zV@1K<4heFnL^Oh~U~+}^HXr>BBF}$4QMUzWw3NeM_eJgv<=G0JzJSWzac_tVXf4!g zzoh=yP!){rz`A|iDcpP*r@zLW*Fx2ym&vRZM2%-e(m?Eh+_4e^&)IUI_)I2QNM?S zLO3wQUjmpzv{v0J4X&`Ho&zzTRiAqkF@3AOkH*uH)X^{JH2VtF3BBPC%^Xk+as9;O zcI#T7nR{Ueqey2~O-7Qz3)Pk|;dCT!7DZKa>@hv`4bW)S`SJ9eSY)G~wX0?Xr}csdAP;0i zo=-^=MP0!k2UNA)}km33z$Hh%y3Swpe diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/folders_private.png b/TMessagesProj/src/main/res/drawable-xxhdpi/folders_private.png deleted file mode 100644 index 59423889840511db8b55c7ce86b559bb32068d71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvNA9*`*^xI zhEy=VoxL$z#8Ko}v7tnd1nb0%h4;3yt?m#^%2bZHxzs;9`{DkHhvKRoMRIjqRaPiC zb(y%a2D$_$dGyTqT)pe4YhTLd-(~M+{^YHB^R(>Q?C*8?&&$4lGcs{$W?)fZVB~OM zU=nB`o|(rImFL&lv+M4=Da&?g#ZL0`a$kD>lJ(1pCCjg7*R%E6Z>~95siNOeY#Xq8&z#R4%HI4J=S?(Q74Tj%`EmLtmI(Ds zN9k#C-x}6@zEsop`pD$F5saJ9*Pa*qR3q?n#Rs-$Z=Y|{aJt9-V#EFQZ}xey$87qO zy=mE5!Mn;i7FE}_b?svE(=hh`!FKA;8S{|tmTkF%96!2AX-;{QS^N*no2f~Q7ng-p1r>|l_;Jx^!q4TJ6~dRg zyIeOE3jYgCeWuZoeCchh*uh`@scoxnmavvY?NVRs{dd;h{NKxG_Z~TK`(%2d^-}c% z?N^>J`tsiS=W(l>>)x2m`->bMC+0Z(_{|XeSw6V;oM-w{zlE1?$xVAxcVOPvTg>IV z|NU3nJ26hYYUx|!yV5n6%u=|+85p;}&(jm%wcxELdr|(=k0DhVL5_A-74KxZ9p$I5 z^W?s?>`IDp{p{n?qC6n&Mk0d=~ zTc12)E#4iiOnt;Y#igpY0iE>72X5x??HR8g~7rqv?g0$VjpR dH%uGvd!If&O>@GNEx>%n;OXk;vd$@?2>^%5kNf}t diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/folders_read.png b/TMessagesProj/src/main/res/drawable-xxhdpi/folders_read.png deleted file mode 100644 index 8d315ad87c06dc5d1a6577f9a7568d72eaa2c60b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1805 zcma)-c|RKn0)|6KB901*RuN@Iq(&mveMK8&nA8zR`6<>-SV~=W6(u^9cA}2Z%{W`s z6;Y<7v{oIZaaPfBbZn!JpoT<4)_jBc<9(lR@I3j>M0;uIMJNCOkR~`>b3LQ~UxR?o zeyuFgEDMZ4#Y#^=TCqGW#^gv0yO#*kL9@#BD$f4bWm< zB`pE0M8`MXB(t&XbDb-GmSC`Nut>atH9eL&ju;>=HSKZr`6QK&3NO8s#BR z^^-JSy2+*@I7b$P*n75KFcSZIL968RSFsJipt@bnawc}|Vk@I}dBr@J zI3G1)KI5Ja(^4U%hPNasls+qe53m#7Mho6igISfn@2_|T;*rW6bKHPye)!+g9eHSM#lhWhaDNy}qDf$m`FVOvVeqMm`X|;{Pr~Nv5w=^dvi#9z z7!kkRa4`Ay7HFyJu~Yx?0+w}QKs(Ea-#V}#J9_A}#;g?agR$qSxO-1qr1>=2(=v0V zkgbhct{6g#d=Qy>v#f1rGD2I`1|7N@``x9L&;NFgRIf4f)s?#PiFiEhntZ;#u>S=y zJb(PFf*}%<9dn+Uing>9Ob@F+?BGYb%^AN0)jqi&4n#Hz_20gLpCa%ZzIg?y;{s2c zSFU{b+QO!4@<_D@*58T1WfG`7J&ND{Wgl6gdkKbKY8Krj!(NO?ZhKSQExqSCSbW3w z_dX1NHmL5wVk2;W*JuDnrRDRu_Q+vQMt-lU3twW&?QPVo2m%53YaBhN)dI|*jusGp z;Vl^6P;>|F`Dt-ap9*p|JYo@KmUH2XOm^p?jj`mVDyVMSzd4ZL(AyvM{&YNzgXe5e zJ@06Cq#HJ_R^3p8)uy$6d*~Xp*QAtSUEs{I zo(f!E)(~z`e)Aadaon4*C=4^IFW_wJOz~6!9*X=@UVEa!AJ#4;#Ng_X&hO>*@*k(D zlN%QeF!v3UQ?gUsi;Vuo4bnOCD(cV>f|A`X|Cl!%e>rstKHA6Y)@p?9R}4g;^&1PO zM*JWh9rmBQgC5&=8Y|;_!PZLlFogbLSGgdsFp2av2O}nwKJe@Z!7_r;>yi(qSrwiVuT)S-YK=iu%w%Mt4`W3k z9uxy(RltXWU=$aXl;FL_=0T+|Y%Dy1JLh01Y3%J#nYYWI|IDONCaq<>dfV>N{Of&t z@$`@}ZH>_WZ}CA)zyENMSPp{_5VLW(ueU2&V>Nt|_G{IG09{>AG7ZW2RZ!)xTqfy_ zgZ$#Rt@?pH2xrVX z_qGlV2DY{R5-&NLh;Qk*b)i&V9XFF4Rch|C2-EwyXb1=8pm&}NUd)_}Hd^%&-YL?U zl9CNxm`zdT9Ly};A>|j%#Dm~l4TcSgDF?DOlP@I5Vo?P{XR7Y`n|1iBBOi5ltyQ@S V#Tn7n+h=_P5b(rnEw=ty{|8u`Z5jXo diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/folders_requests.png b/TMessagesProj/src/main/res/drawable-xxhdpi/folders_requests.png deleted file mode 100644 index 88619410e831b1feaf9be0bec767672f6f0431d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1570 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 KMNUMnLSTX_aX_{J diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/gem_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/gem_s.png deleted file mode 100644 index 999226c776c782736d533e201ffd5b5a1b22f1b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3421 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/group_addmember.png b/TMessagesProj/src/main/res/drawable-xxhdpi/group_addmember.png deleted file mode 100644 index 26af28913c7b4447827193bf9ab8f8b9539ecaf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 482 zcmV<80UiE{P)e(x$xtHe7~CE3Eso7Sg4pwo*+kL?TodZQ8sx z5;W+{oHIk>d)J+uC!P7`9Hk^lk|as`6qBSWaz~36HHxGd|2@nECv@npLx!>6;B3&~ zyIzR<<|OIWj^BSrr!{|Pr=bO^GwKJFMYm%=gWk~wbv(=)X-rDmKITI`epxgE<=uns zj6hZQpq3G+`42(0zqVy&hdSpTlrjP(+=IpqF2=U?%R?We6d7&Mk;UV6>RLUnSt=j_{dW)%W?5&S6G~L5)22{*%uX2$!iiEL z>~5H|82|tP diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/group_admin.png b/TMessagesProj/src/main/res/drawable-xxhdpi/group_admin.png deleted file mode 100755 index 7600b6a8d7967007fe6bb4ecbca3c09ab05accae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)iEpD~Xza4dNl+U%^@SFCU_UeoBnBx&gT-s?bxGu`zLEq@i2~S5_*4U#Z zk1su^JBnw4L1WrG>up1}JE^@BhTIs%al22Q(%zJJ^u{zjHaoAqbG~wa6vJWJe%2L# z<2%_7M=_k0ZNd$4k(wW5J08U_s43e^agn<;WNBC(MKS2SEI(No)6{$-+lDBT2b_^* zcTDq&EK@c_(Y!3%h^=;N%CaMh=N^BWskKo&bFHw(>poZ4(urS<+2JX7>yDJnx72`* zUh}4%_V~=GgGTMM*Sp@b%@&VZX+cyj$yHGX%RS~H_gSUi5{vcdHcyvYM1-0y^K|R6 z*b@B~MQTRnu|HCCN*?t{O;a9?NKI27jY!Qe@~B5@M&&UQsTr2Xrbx{#rgW;MH`4Q- zPVI^^=<|n8Ot>k^VZBbQi}Kj$a)zQ@o-irPgmqCqy>^@OPc6IL9J58A&GxHnXs8>p zNpDmtmH#6(cY4xRA2?*(q?VRR;|_V>tJb?iEy`h~VFygQoCyaETM_A4Zo8B68n?}| zD3&=M_pK{2X02Kj!)o6v!Z8oWm2$n06zM|?W9BR~u4q468Z)Ec87Z80TjXc1V^TTd z>d4EBQhGk}GA5<3BQL*8>0IO`vB*nek(b0GFNsB75{tYf7L`h6mRtZMkdqoDW7W(6 O00003pY}$7DhIsXqp;DT8&0%2_Z;DO;YMg zj5a1MvJ@he3T6|OK}2W{g|Bh^!Y~uNcjk=u+&fd;ZVXe73hv^_dD0(R( z*&Lbuco`-<({yvv&=W-xhj^?a6XYqiwBY}%Wt4v0tTIAo1r7KZQ(1|3hZEQ9{^o;2=JBgtl@AFHJO1OEu>?M=8Y=;l@odC6rOgMXpjqx;a7xh*DsVP=&Bi zxj8~r!a|ki2)TrX&X^-~lu;p_ALN=Nw1GE5LIbQ9o?e6yBQ*&Pa4UlK&?%J3*Rb8c zgv~Bfo8)W>zf7(1z^gFgD`pqd>~ckVG~o@X$sNJ_Z@YM-Q!dILjXJ-DCFb zi2JQw?_{0iJ7=GBl0*n0gb?3gMnV#jkc3Ji6t-Fk{Zk<}?4hO+A=KzYXgxw`ns=j4 z##DsR7^zX{meG(|N3 zX?$SGc}^FnidimxXgg=d{o-JWITd!e>S?)To5~PwGS+>^2wUvZ;*1teHv5p#w3pD| z5TZ(*adXwF4o!%8_G#0h%Zs_XbZE23oU;%$4teAEymCOzO^9V~7@TXg>#Gs^rEZA_+#XO=52R5uYpd1>QcQlX_ z1z7|f0B9mD1}cFnN@5^~4CIJ`e#t;TVjzE{d}AK@89?EAW9B@A7{s6@2bnk=$roVi z1m*EOw)#FHuM4z~kI;h9!mbX`3hEPU)Elz&plW2o(InxtM6bzd8VQ=>jRgPA1ZC6})cEka lUq?A!s|9z*Fo;3w#vhx2R&nlMX}tgd002ovPDHLkV1k~n+>`(S diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/group_log.png b/TMessagesProj/src/main/res/drawable-xxhdpi/group_log.png deleted file mode 100644 index bc0f3e3329c73bac8dd1f488be0ab7931f0be62b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmV-<1BU#GP)4e-6vuySBpOJfO*GosiGo&_DmJ2`o#q1wVm^g^nk%#sVj=hif@dQf8f=mxV5OkJ z6m}*tHX&Z2fiSW-!sVR3H@iEtx2Nw1+sw_*zWHZv=Kb&T4n-+NBHe6^iLLMjU>>*y zoU?78fj00I_!#ryNg_(npH!eo*Qhb(u`%YrWRt%3#27OcD-KaWAAuq;3cLiac@F)? zuCV>kp-3y}NazQ8@+gNmDOZ7qg9vmGE9fHd4j9RK-vMwL_z*IfIN5A#|VUzx8H|cJU+xBjb0Y7@$_HBDGq_@~01ab|S6-S=F zg^&a~T5#NkJ%wh0E5Jm_IP?4!^7Q=XnF37}JOC7=y+TXg*f3efR?0k1?=X4YeBOP=N$gAORIfKm`&|t0ACPL#@Uk)M|uA zt%iVF4YeBOP=N$gAORIfKm`)0N}y2oBbueiqN-y)r2X)*6j{{5YB-0<*t%h2Sa;QK8Dv*E*B%lHb_z2Ydzr`t&l|~tcamOefX=ERP zRvc}4O1kTUtL$J^ip@tL*B}eP$)Shf@QbP)NSnio@+t6^E(OylYDthn*ce7ccXiCl6{{ z)muX>P|MDt?R!Jf9~MYU8LxNM&AW1pI?(B=n}6-9n=kzXONyc>u>gJnp!@HNQmGB4 P00000NkvXXu0mjfPYIGL diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_copy.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_copy.png deleted file mode 100755 index ce0fea9d76543b64cb4c7ad86afec32dd48760e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawZg{#lhE&{odo!A^$w0s@abAO| zM@$lP;`BR<1j?P9Dy)yOuGly?tMh*(!_P|wpD(1%w5obyVHMWH^)w{LQ1?qokL5xI z_RPjzR~)jl6n4Kfkg9BC`K2zPsw=$vpxO<|OpPXoIXflwSG1mzcF8<{9 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_delete.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_delete.png deleted file mode 100755 index a592de0b4b7e428522a1388a6fb803159546701f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~Wq?nJ>wj{=76CaqpdrE~L4Lsu z3J?DO_;%)0K`#5H^K8-=rSea2vz+e+luq_^aSW+oe0$+2BeNq9%fZxVf11Bu*O~cn z8M8*C!;A1qUh+$xB=hNBJjXmKjr~RSg8%QXu`@EUa0nS@gb~lXd+~(Yr4rcb)-S$KdJe=d#Wzp$Py3?taYx diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fave.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fave.png deleted file mode 100755 index 98d15d2ccc805c55882c437a9e921f2315c7afb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmV-y0+aoTP)B&MQq zjck=NMS^)ZsnU|r%rNtkvVkalL}i2yZqT7XAP@-r_x=EV)x~|5BS@nF0000mNWu`h76%7G6seH8L=etk!-ne z6)t^Z!74O2mYHIEQrXHt2Zo#&jllKb4wl!wBbMy<-Ti*s_xHQ+u|3%9r6o%i2U2Vy zrNx32Ss+VFrNCXRRwxWHZAk9%D*upUgRIfOjP-JhE~ZVfPL|lijJ1iQe4E} zCY1sYkilz`TV$Y)N&H-*QKdi&f8+H#DH&K#27jNko1Jv>0`0WYNIk1a$Q~ z8`SeFw(@M1fh42YX_GB(<_NZOJShW}oMAq{aj(K4&L`NKqEQB_Ni&z@+^X={gRMy# zWZ+IF2y&2X6b(;fYl1a0&_D)1{VE0zGliWr)iUrXQ_R+@VsQs)?EFln3~VOHj6c~R z7pUPJc1B6aKnGWRPpw>GEjjEAQ!WFq@t+^5mP@>jt^LGhU^mb#w@6{HM+RaHP$sun zMHp|%K)GC_o^ZCwKum7&6yfA)Qz@~Fu%>uirNb!UWoS@ou!3kVQKwR1BT=QfP43Z6 zbmLUYHBL~BA4tk25)^BM3c15$%;zk_3~`oVgT&b%7 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_bluetooth_white_24dp.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_bluetooth_white_24dp.png deleted file mode 100755 index caf98cce304c2b3b0658b27ffd6bdc4591327527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmV zIp>^n_};`K42UBc$VfVnkr-I!fdXd<-h$&a zjzrECoH@m50BH^$J71*4;YfPYB^nut;24SA0ka_ubR_+`&PW``NPGcjqI+Ahp=P%>v>kZ@Z1zBF4DZhK^NLg|EQ002ovPDHLkV1k>Q*P#Fa diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_done.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_done.png deleted file mode 100755 index a9bf7033dcf7449ea1b754f7a593018aafd9532d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~Yk*IP>wjv131W74fCh?}1o;Is z@X6e1_%C}`?w;}id6ma%Pc@zu-&c6>r}6Gnppx01E{-7;jBn343NacAuwGEeHDWQi z^MA#QtMN;MME9F7`)7T?TS@7EzVMfva?2Nnryc!|Z28_k=fTE3o6;{`4*v3Ge&qS% z4p{nob6ocH06neNs3 z;xCVr`+g`8w)^vh-~Q)ezdw(KZ9vR}&VFB%m5d(nhVJ05i`zHhBG8!(p00i_ I>zopr0Q`Zni2wiq diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/icon_2_background_sa.png b/TMessagesProj/src/main/res/drawable-xxhdpi/icon_2_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..3d782f46528390540b6fea0d814781992cc63076 GIT binary patch literal 86659 zcmV)AK*Ya^P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR92M4$rz1ONa40RR92L;wH)0OZ%E`v3qy07*naRCoc5y-Uou>vi7s?Sr?y zZSUCI+l~)$Y$tIO6rn~Ol0aOgDHRc7jC5%sPc3Q$|Qsf}qBf zq$JRaLs1ix6f14h1l!w(*s-13-dw-mwbuPS|M&Y^aewc7KkHuWTGzVPx}X31?el)= zBR~Exzw<21?b)-JUV7=Bcd|d*{hfFSd&YW}ttWC`;@HLMooDaVGsXtX)&$XzkUaq? zsakdrMsplUR0U8sxSJl)@1S#XaLhU^!OPB;#Sv=j)z$rYPNo8mo@%J7)#FqAnTGtO zw_>}1#rbd?qaAPe5itt4;^-K`jmLMEQoOb6+CmXLce$`0a~cn~%s@_;9*_K;&!(T} z;OC;{E6XxUdwepwX>h&xnbw?(kt(M^W&Qk z44+1iGg!NdV_*Fx3RH9OgN{qFXT)U&I&gdNJX3{eCU(FY=*(AO_tm+^b2rk7XR6%Q z4@_r;Nwq(5f}Z03AnLk0d`0ToxtfD()cG{5rId0L%Vmigxu1U^Y{oww%P zX6c;2#Al;+laI>+qYyUL)==qla0ICbwIg-kW5^}Q9**9ZB`er4kg^(?0&R$$;#&ah zS-=}S;la;26$PKt7V>AhynTIF&&=~i4`_5BZw%=2m>(rqe*Pp zrp2kat(y4Ggv_;5d1T?ygaD%q1#6EyVw>6YI&ISQc|Bp+9s21KApiLt~ftv6IuZoJWrlcn4yIg@XpyiuFoR4UD3aaE=~4 zO7Kk1yl;c3p7LIDl5^n^14}%mhcU;TSI_BV<`5i~>hnAECxBm!rb{Orx)?2SSgEg| zsWwgQPj}kjEnyu#c*L2DZbcBEfSMnaOm;c0NO>%P4D+*PJ?fd8TDTDFVNrJ8&{%VA z(Oo$&D2dRA2H?o@1tcvr?%h1Do*9Vr0Czqx@*P*Ue6N7LBnRI>aqRz;HF_j!empuS zX93oMXyw^8c}4Rev-f`SQCH#-pz7FRqJqa8Wms;fG72nG-Wy`scyp2mDXi>B(O?`H zb6-r$w|Vdh5ubIpaiM4Orwyo$G~+R0^^obPRt0*@dTu_jU#~;b256NnW-SDl^`h4W zbH1m*b5~^YZcYWB8vf4Qkvt$&)en7n6Xiz>p#2f!KqzZrBdZ?gVI5;9NpX3m?<+gr zDF7LZBRzMGo~;;O1*wbQlVfDZ*o+=?s&nv(C(#!|`3WxPX#lpktEa{gcW`kfsJ0cT z4%{{j+Uywx39T~aR(@b4BsTbx0=Hq{S@TDju|(^0yXm?9u!RVEs-Fim9ua0@wrJBd zXoe^g(G$X%e{rO&B^gZWp~AE=2yXd+sgm&MY05Ob8seOJ0$zBkC5c4g>cLkG>Z~Db zoXRMJs3QWBRbRShjI3e3>3Q;pIl+;@L#8~`Q!VW3;aS;bL{AedTM29-yUF1w%-tAA zDnRXC`6me-CaL5lKFmc37X~2C*umuB**`kf*HAGdGN_aUYC>X>UlADj*x;a$TuOi* zye@ax@wPM?Jc?#&(Dq2s5+N(W7^Q@E@x`#mW1K`1D$F?dMNIaQ6qsG zyyg?4>N$xb%F_I$Yfbe)GWAkvQ2nf`Vs2g`RTQ*GWMJR)G#B<*lQqU1Qvf|JR~%AZr*;Y0!!O7pfRt^6 z1mfOtDKACTV|_Ul!hAp?A32lQZti+U*A%6kB)5&wxEo{KGOC9Q1HsR)Y%|Yg@d@DJ zzR;|)&eQCfkb24(w^@18M5szaHT&T?%Q(V7`HRMBn;rBjV#2zTdCez!oTT@g2x`oz zEHfxIEJ~Q8-9M+NrL8>kp=k1(TAu5DOKXmf-GN?5dtxl)jGSQ1Wk(zD0Ms1kHb!Z3 zIuX;SVNy6(bxd zbS7W{b$Z@z@%lQS@+|`_`OfmnAN2GkI7JJ)?IzBAEJ>%FmoeB|INshD6f?0VfS-=0 z0U%91e973cGy>*YQgakkHiV28B7M2*0#0mtoXa#>f|<`DEV3VropEyuxs|~Y_{hC! z)w4Ymb$0b|8uHEua0s3wH!W_PZkU9HuE6rO@hz}yIa7=;zd1f#jj_*sFgxIUnCsi% zsPGMwuZa*+!c#grr8X&;qy9^Fl zmNo*Gg$q3@idEL^da5UhR#?^i^x+p}aubla2ZSp&d)69yt4OFg6j&M{zmg@x_B0JA zf(#+6N8<4?0}8gNy-bno_o4~6%TXEM$i-qgj1dhqzjRT+insX?Og^J%Dvfy4`*Am&mQf1T_xXd7-qPF9)%s|O0yj2ylR;ExgP>&qe^@VGtCLVvcE1!!#TF1X zTge*%%VNa7^u@0pPWi5$GJ(btPtl&_0gKUu0mdg}X?oZ<+JuDkhD|=-oD|?_^6Ck( zLqI?lN$O!@!nYRmqb$#aM6!cu1eK$#ZllLnMWsiOdL~nrAgOz!kcPT^w6az{t(Sd5qnA;T=tOMu z@F&nu2mo0Et3i6l6=TY`jCAox2z>M`Y_*WBZ90|)c*-@)VoPsHwkha*D1f1V;PXO) zj0d=KVnEAFgZA4#n)I~FC`)$r*iM@Y>J(76CD=gQt}k4U>RGv?kgmgEgT9CeB=NSF zsf3OLv*X%%LamHMgxje+7J$$!f!BOU8~O>;&uu=;Q^b9TcL;9;B}ymFKf8YQP-(xb z$C>atp=+8cj}=Om(ucMB(?0YRAD-3YJS~z9LO@Q-9sBSj#m^C*7#!h24^RI-b6k|t z)4dFJm;gAb`{Tz+8TLXez0~!Bwss%$UV;b~$S}n0dD1q!uL~vnorlB7iM42j=PcVY z@sXVyy`X}!buo-s!C_#Q0aGU)8xYUL#|^ftdL+O>06J&f?uu=V-iT-l5)w)3)T)2# zh!YJ z7FWKj*2Zz_RTAN+D}eie&=UcH&xM_1jJWe%HRXX_hB#CH%ps`w%^3RDIUL2WDijQQ z3K+MZerI4P$A89rRu1a6;{Jq6W*8#Ue&N~AcD${(RXvIx7WiC4l7!C3cp{tGAqD;PI$sjI!@MIfmXB4?Yh*rKiHW=E|?5u$LjoN}YTKeHsJkqUMyT!&BgG zE6S6^4#6Ns!Z||khgJ_60AYyLUsJCsM5I#=1%O|Q%*)22be3d2kBfmGMMDH2E1^-Z z(k+S)`<5mgJjD@Wya}sEjso3@2EP?H>ryxc0@zdwSe62Dw1JS)do0w~Z1Vv)|-T%L`f ztP>&20zC$?avb5n?IiYQ$p|SvSF?n}l#!J=yL$4(3&jeGeZJHP*T8uAu% zt8|>(q4^%$1$i=gL;y$i$iucjjHL$dSM>~%EXw8>EArKWlQR#38hBu0X`Isz2w1*g zaUkl!&R2;jGb^qJ^4i2u&vX$U-X%EZXMqHzA-%^^dJ36E=>rmW3$W`mK4Zr@2%vmR zxq6x$mjlrY2S>5mZuDldjPS7Luqs=C3jOMQN;nCU)J6|gK*K;$jsCW*SLSRhM`8(+ zz&r~WAvx$~F!V8X;P%VjaFQiJW3u>j=G2*&ey$c6&Qi_8qIfnyrAYCZF34#D2$)pV zu+?$;*$_&?SwXcccnq&v?;DT)lMv7#4o~%r3iVK~89AyaPw@Gw@{XjQ>}ORE{?XIx zp#hX+HOFVOs(%9s18q^@W~qksoGM>>Vol%q=%&Uj@qCJa`o(l(>|0xYm^b6nvo0c} z@jQ4ASudJT+_(9Z#STmlf2IUaBDBNDDGBTV*l%m^H&8-CNn7X>yo6wH1p@7S%s&Z~ z%6B{K!J~TSrzA8jY;|7*2ssOs?Q;L5Io1h*5;~o}{&Ogtr%0o}vRd9Ls zI&96VBU5=zr~vn~!DTV%vwF^W>+L#!%+e z0^q&!&dmbo+DcPF_^=XHEhK!mQw`u?2|S@VUi28Y|KJ!ja55E(+Pet#kfpKj&?E?y zL6}FT<^=$1EVFLNO=7~sT3hxii>X}_Qb3x?8e4^X=uabFQ4POBSK_EqT ziVoL{;71SADz!%T{K}VPohLi|9V5@KSV%5@s&lZ9J_9UX;KIXoo6q7^Kl#mT5{(3} zpvZ_pzPwRhV-&R-;hn}vOkh1R?#uim_C)L#MaDJyYB4!QDtB1%K&#+GhA|O+RXdvR zsHv*U!Y{WV{EaT@2bCkz~1e1&^91B5qId}K&`^q^o`s0bV` z6UIJir6Xl9srj4<;Y@=Gh{c5w);dwptC4`%LqI%7UkcNzD3`6$o{RftEvTIm?8IlY*iw$}nrR6AbRSj<; zz)c%Hb84dbJ7^;L#gd*afFwh29$9{jM+3raM}P5D^PQx=`qjf>Y8#kf0B|V8F$03M z=qiGbB#GnN`H&VTijCO->2aG-TFxR>28{(U9#_-gQaK;I;SXsnBBXXcqI4vbf{BRV zdD2<5u&o}1q16V+MPSP}RU>Z zw!rA&q@D(_m!~h{z!B#y5f0zzLFBSmJUm+lll;-e=|UG*K_-Cm7^7;e*<^#n{UGr~ zL5~$sT%0#OFt&~c9ie6rbfLCM&GDK~W1}Ykc}zb20LM*MzQWqw9u2gZ+D%~e)Icp-M$a(yMh{f02bZiAS__GCA7|ig8aFbId$f$=lx5R~eKfo+6AN5k;n^dJy=bhPaJ zttpXUo1x0mPQ<(c0MdPzJ`EV4j95q3av5b6Z*|{~B9|{At|X7s223*riY^`$0R&r& zoeJmpv~9wyv_=*BKS$=tO9W9R^PIWrg?WmRU;L=Nel!+F9HwU z^yp6b#xEbrV=xd}MS_VOIb3-BAT5n04r3Sevu2tB%ScWcZ%3F$`KAp!wHaU@8p>my z)l(tWQYmObA>Wb)2 zQzFZ#JR-b57p|&89;q;sbj@du-ZgUUKwV^*YZlG-7)blQ^iQ!7K!L#X7r;ivJY?O; z+7d$Ht!P4p;(S7Jqt~xP66T3yA7vZL0L()zHR6?H45$O=@i{ ztIr^sTR{tNyvU4CeoktWeJFI<3a~7A`a!}=!r@xuE{TkQtj>EjwmlPCY+LCSo{N;; zccL`?V2`}GSTE8OGWb@HxW}#2m=`^`oQtk&!ZVGj0t0fZeIah<83Y5g~6D7UYFWw;_Nc!Q?N1jfOr(H$O;7@)PfmhjR}x z3hl7L#epmJHE_iURUy$xQofnPIK@jJFlqCHAVi#YUp=Je7ZF8icrKPCV~hf;EoyMc zx=Mp(LFw%lW+sgrqgt2Ia*B_4=Tj2)fV_plt%y2vk_v8xWk2&Fm#loF2ME7xILtit zV7TBK&(SmVs|PkmhXXVY_L(Pe+3>kiu-BbapaG+YbWam+MKbb=lAWbkz`Y6H0N(KO#N@PZ<`ZkLZSAcR!Xh8~CtRpxT zhK)qm1TH<`QD!uJn4Z?RiS<62&*YK~-a$`dd_#I`Yi^*N33n8!DErK(J(0Y6V$3{8 zjpdRQ0QxC!#1BBt$WYGe&e^_#U$iMj9|kcr6T^UO7gB6oA@-3gOt#G`4l7h^lTP;V8XI3jwKwQ1B z`!#y5n6)-{ROJYH5;DvzC@X^b5Eaqar>CPQk}o{G@}yy&XT^k`znaYmXuC15s-8Mh zzQzLu3HWc62W5HU0T35R0u^sRjhZ|Bkny>ag^bfi3}WufCdw9yCkV=(u)@PR>-ogf zQOad;bl=)0R{iLKtE3=hW_MO)Ycbf2veor4Au62ej-?)j-sY1eL{&YwF~eUdG<(fO zE~?W$g!3aZV%m^_DjR*P^9U}|BjcI*46i&Dfh?`ItjfXXo+;NT%4We<1@P1v5SAp9 zFzC1`Q2Oc#<$QKWHavOXSimh=;zZ&PL4{Cm=-2A|CR&>29pY8dd)_U14~UCz+s=QlVb^~9;V6&06Z$#YY!nUw5|!HJ2*1Mw;H=J`S+mra#u-3FPr!d z`ivq+g(U`Q?VBF_ql7a3ulBiO1dqVjo73cssb#0;l{4!7m7fhS%aKsP*B6aVn2{^qQ0Djd7Qf)JzIQ0ik-rV#pLE@Z!r*}T8 z0-uBm#Fl|aTy53f#dSXO#^2~s4!il?A%Kg0=VQ7RZu3c0P!oosdLYR6_#lc|RqF<_ z{Fog8n1Pd&wDE@yeqoZEaV z;mVGnosUoi+R?K131_S=5HtTi^T%X|3%_q+3=-_SHoKjSVQ3oDZx|9-tcKz#CE0Zp zHhd(6x$2XejPR9!bdORhQ&*YQLjkmyAl&0<&^v<}*U?wim2w1aMP`kv5ik`(VLjl~ zl%l-s=NN+w!1)D_U93tXu3(@n8H~Zrkp%d1gqj_mJT%O?kC)&2sM(71)44~rBovl@ z;^$q73-49n;W$MFxLH6wHnZ90 zGNBxA^VwmbXxLile(omF|$h>a> z`@*Ql=C@8f{Mvz3)f|iFKj`NQmtiDPX1!zAYvn6cxkH2-C0W+YlgYZ8;xVR8n^l6T zCaB1GP{RZ87y#**DeN&K@uXx4#h;>6GHmizfQuxS{FE8kU4SXKXhnT%BwAr=yD^WJzd!r5j%;3p?O+Z~33#9*F;Vdhx=Dh4mco#;4* z4S0*RUlBMrZo08UREqe9Ybgr|LqfjR^W!v~B!^&m#nos0& z+MR|vU`YyWL(;)m=k2)p+uC3} zJ_n!sI;CmAOGHVEj-K0C9_N#jI;pRcwvBCMpEC;RH$ml0yh!#O=EcVD%?O8U=zSqK z3H)BV@!>i}o@;nJX&cn^<~Bh+In280=_sxSR?m~yr+O*_l_;mjY3K_T&mKjNjZMfIk}3s?G)=k?(;#9t%AH{HBZ9JuUda+8y4dy{lfyh&oO^1-@rk6iJ=QHDSK04}N zdY_%oX<#~~z)p3zMUNhpwJPIEc{(M@y#?CxZ9XtMT^{pB?OaYuL%2~-W7wOfs+%Aw z?TY>gh%^sM^~5!6$2-O2ZMo6|8XB77)OqINFZIxA{x6Up+Z^Q?DSLKvS2{ei@F$qB zO7izKsm-9*rfz}?0yzCNKm~hUV=0%*;Dgh_w224uxcKUz)rA6NtjkIRN`Uawb(2wH zGB}{X<)VIIz5jC1u1q!Nm;xj)pyDB4-1F6mZiO}CoB22bYrsi7zw$+Ix2k#qo0mA& z!efy$@Xm*V7jWy%xx z=wF(h0?#7u2ECHtbPSKkyNoNZ{3-8sky#BD)Q=YET{k`BO7U?fGiy50ON=vs$E6!Q zdhKL26R8ZM9TXrqmakm&*vQN6F?$pvnzAHhR}=}JG2*c@jwVpYW!A|s1xyn_P{Hij z)*#X9M6+ay1dY*iN}B;Hj8?3Ka@IB_K~G1Q__`87;4o0>(gSrC6L{zd7oG%MFbOy? z^Tr7SCaB^)G^rONeDsK(eDKYV0|LJBO|?^DU-a@zP18ruaL*hd4FlAy96BHH96OE4 zIU3Y7QSDHOfue#&CA=*yf8HNfc2QyXJ=0YRJiJ7t0ESXh39k864;7!&Ll&~l_K*U5050EsK7z>D$VrG}s{4rpxO3=y;!r+% z3dNw@Hf&A~;6VWIUjSpi(D{?8C9^l(flU*`d{=xLsxv#r;Hi?Ym5$}2@=ZkIcz91l z=WJs3INL+Q5qQ*t2Bz+qHpGUTMLZPe03H-N;OteyvaiYkmPJaz_P z$oKtTyZOq9i*oZQ-f)>l08Ho_c~E=rh$s+5R(NK?de<}a2YxcpGa2@lRYKgW-V7=f zmq!fGh`s5#)Q=t$5N3gS7|X^YpGSVl9$a7CDq^o*z-x~ubmd1+-vH9HPFlEID0`fP z4-pN_8$bcuu>kos3dV+x?=Asz)ZT%i!g>g^t|;|PfrW;N>dFuGBsL4qf#+cb;03`r zX{c!dtgZ{4b9rH70dVgqAl%_JH^;z?iZ?HU;Ut@}#LU;=ar!+*=Xpm=(n+WagqhgQ znJfiWw!k)e>%;Kqp*rG(hh%!Ri&5CeUGcHWh8W1m8sn5tL~XMR489lFA8m{aInsdN z?&H^KUsxFaLnEVLeiW4y^}*AD3H}&JC@cNp((oywHGvzwv7(Rj59cl ziYq0udHE=+o|1F~h*S?nk3k7JZt{r+0yDgj^f=W$YflH@1K&22foBmCJ<(J4%0R1n zU{DW5)kEzV>LEI5V0?_Uk!IoK9p00HZf#)5sQ`8a z#5<#mAqV^Xlxq6PK$uqrVehO{pepIEJ}59!2*lo_pM*kB7K4T=oAb@N^XYYto+;4W zq1*X@N8ZenAyStV4eK{^XhM)xn%V`&$-Ct&49C6QfObBB;J+5iulY2a#KEIyz#23d z4qX<&+GFJu-ZbU|mjYC9J4$u&n^$%RvOjtvfhlp_p$dK!oeE8)3s&XLRMi%LgQ1;x zWC2GVhDZ4W9r{oqJ0W;!A{%&&9<>jC^;p`H!NYQPnwz6O=*ndPULYm%^#*2s8xRe@ z0%$-zbJU*fO@vSav+~~nqoR4EU>*p_f}*S*v4P)~WQfk%Nl>J)dYVzpL#ll8H#-#M z=9`pJsx@ix-}Eq;j$p!hj2@q*cZ>oYn*8S7(1e?b)$+Yal&I)}+(r;2MU-2L?R??B zB|(fX8vx&#T-pL5Wo2v_Twg@qGot1SW)}D^GLUyYxv zJ=rWjFFJZyKz3wHCjZ4XVqv%cHbkP?Jj0`gTF6r~K;9?mlz^a0ngYTB%RezFwlsFIdizu+&dqea;hXC zb;)9wJ~C*a72E;R8W)_fNl6lax%1u~9gZnqQGJqqOj1}=MQH%(Xl^&l&?aIx0ZdrP8hKgK&m zMb0S&2b<0&%YB}!hpvW}QY&zyQm+wnmMs~iEBDpG39vG^@MDr6zCVjmNtxD8zffPBx766R&uc0D~H z2fyXE`8x#$c&P64i5F6XD?cvhOah{Yr^jnI%CQta z4~6qlih_z_P^I+!*}MoqKJ#IclvM4RXObEv8$HrZmrB$ov1?jd#}u&MG^~tX9H^O( z`PtCPJRMBRb$ItVM9-9p7eS}9BjV^p^g)v)BLo=kI4?XhOxOl;ay}MHIg7V0d|8(s z`TX~p=T+df6X65s3h)hP;_X1z5{=ws?8|gj@SaLBytE&h;m1b*c>3sw(ccS(ZWE9p z!4XW~yb38FSnZ)hkBNDd!7QfEaYh5=#;=~)bgQF@adTR>q8KqNZ9>}lST{~e`9@jEQj$IBADxjiDW?z^9yRL`!cRoz!Mf0&eh&325jgWuek%x}0bOw9* zy)ap-a|k;Yl{=J~579OQt&zC&P&doDFi-r}k5dh;$$sR>P#k>_pg_B#Ko)`W4!!f3z63=B6%ROA)j^LIqzI{e)Nl#$X(K0-o;S#$lHwY=?PaWlngi2 zEODZkklnj6W9F=am0VR?!;AF-PNPCO2N(0FFoT90Qv8v$qU zmgB%yEC_nnn=T~r0VIx4CYg;nwW-QgOXKY&Q%IsmGVH(LV;9ZA@x%r*6KNU z*zgmep*W~96NqY4l_NTk43IMx=n_X#%RdRsQ*sUG2qNQs%}>akR{0}EL^`F~A) ztZHaL{}B_NrKqIav2ttx7C+l|4zKy_rj60)G+-&ht|ru;od^w7(K;(56;yH!YSa{O zS5gKAPe@9|5k}IX%w_>jqu~Xv6B`w`M|gI`+!;q1V}z)zGiHyv8Nn1pkH;8fq|_Yq z6l}3;K0{eDSrW^-^IZ<;bMk@&jXdDwOa%twPaowN3INR0+pl*!8d*&*qxCSmD9{_% z$WcAhT1AsGdJxokp8J|(0%9a{&fc<_PHYP@LA*h`wK_+qAjwqJaqcU4K?p1@o+F=p z5amM-RI671_(1MF<=Xxx|9&jX%rn%I&M|O{$}wB;&&?+x2GUgiYPM_owkEW2?T;Us zK{Y2vLKR&a;Zxi;1xm@0NPbmrM~%Ca>)1ujcBP<#c&n_Q#sROMG}$56Q~8K&x+OAl zQrZhhlu3flV|bdZ3*MhhfzFR-A|_UXdX|bOzZcCeLV6OWCQQpd zUM~=wu`ybPqBpc8n{H_jCW7>`H%?xw&CUfAEF?v@ABpC5fob$WcSu*yI8J0pt#vCdV zNRWACkw-F4ZTFt6pq^TDR?iKwrAyUXLfIf@k4TKJk;hfe7>^#|o3?mZ+Q8Wp8frk3 zwfNpwPpzd5igunodo|m6f7>y8Z$Y7AQ#AUf5-Ibho>z_FSp(P_pqpON#YsLXCQ#L1 z=ciJ#!V!#mJee?^v;#de4L; zE+Nim@Qi|S&3tZpu8dA_19Hg^#UEV^45uO<6*&^<0f#FB#zZnBN1FP3J*`V)nnek%SB^mas|Nbv0Nq1u9DfI z5T>5K%}j_j1J~Zo*qyI=DYOX~M}C+nfEs{PTMzg(P9&K4=DO5H$bNaTxAAhd4Aq`2 z8`oEgn8TIF)OwMg4S_*3QcU13b3E@`oH;)?AKbSJTS}7qSb$xlXf5@e`?5d-_Id?4#$sEIaZQJ8D-=Q{Z2jXs69bv0Os=D^dROrJ-A9*rf@?apWh>ECQ)bU^JcKb zlhET$K^+pIC*Sb^&u(fUJ1cb>i1U%qw6$*@V z5TAFAkzGYRNu6HFU!fP)`cPI7?Pb_3@z#>huP7f1^fPi^PJbIXxmyz@z71;~J| zXyjob_v+ai)zo^hhHp}XE8YT&N6*;k8FUOx%RI~{X#Z+9OhL585R`&JFWWG+q)O%u z01araLII@XTDdKbg3<)PAqtRgrQ^H|BcmtwsBgxpKx5X=Lq1=TvQ}O7P+u+Cl`;>s zZjHV*=&8oyCb2GwMW`BUUFgU{&wfH6tR6u5&asB1;Qh`P7$yMHT{B)XhaCDzY8MjX z%F^xyhF~+0V}qiCu}t8IG>_C&Z-NHy7zv~I#q$XbOwA%;1Zlddrxb>7^XWPJOfL<_ zHme)#&S8Wh8^Lf=7HrI><5NqVYs@@F5MzPfB5gOPTf;yA&~S3Jr-E|eD7+P+!@{2k z;-ohkFM%_kB!Vge>(P$xd{KOW?L@w!s|QF|nbpIapFhk#YWh*J-o8vnN0Ngs%ji|Q zgR6#l8!9A;g@q1z7LTU}d)sXTInsvom!9K*vc*TeEMYTaWXA_Tq2ehTyjb>LOk%)P zbc~Y#+=T41_e%G+s5gWi#iJfuRYpa?u=P8H)kBeZ>Qn|9Ym7M6M-PIMsGeAkr6SvZ zZOPQr7R0NviBxR8P&m(csz3ZxC(dNVL;9$P(`E(}JDw%LZD2Q)Yz9H8&hhy0WH z!uKrzYPJwH)nj>z5?ejc;Bf&HHT9}y6HE)v1WE3RBi#8=5~B9j`B1>dhk!Z)TJ%v* z*k_*dq#fV?J(zh2;N@#N!B3%rALnBZY;CZ5lE;704?U!1#~PWQ7Y(E=`^|zvH753qE>db-H!x{ zUp-AQZ+MTCB`X`0vsQrfR8S|wr9_^E3fo(iGmV4vyH91$V0qD}v&& z7h>S?bru9l&3?NtY=IX((7;WYwDvRz@L3n3$NF&2B2_^s*a~r$Yls(II(9z>WAxH* z@7t)ly*{^s6hV~@E6;Hh(a~7ulE25Kjh=!b*-}@x@Q(b&Cyk8xP}t?n_9C)KkLuZ$ z%^XHE2~gllsD>uQ-doF`GY3Q)d}j^&+TLhpM6^|6k}>d;F=t*}duZa?(rt+z*pbLI z%YS)>{i@Lvwc&i!6VF9Z0b7NVds-lEufy5 z&J$=Ak(2MHqM!4eqyY$r_|ckEF_4yED*G7kkb?ibE5)GHgS&d_1q=GjM>1-~TL}10ppG1~s;3G^#iZ_O(bDq*p}(0zh!2Kyi(!D7 z|J1HPZ-Gix!ESjz(yWP}`A8cQ%Uzx9_(-8d(#*|7boDViq2_CW?}`)uD8Og7Ple!E zV?ti76R?RK&D+Fe;NckRCZ|BIB&Y6J>M4r30nauG$?tr+pV)8`Ejtm?oezzKcDkWB zD-Y*$JI3ovIWqTkA>9PnNHy8{j9m|hEQs%h1>S;doRN$soPoCb_))5aplv@N09yakc z$7Qqy;^)4Eb|(dXE{^`yIaJ9(2EyfKFByfkZu3-+JfsIOy9QNQdl5%E-F7nF!JtR5 zEUl;+r+=S0t_tX`C^CSm01wi$1Ia)QvuzJj5LSSn@Vtvuo>v4}Q2J=1I|*w*C`F#Q zEjE+U#pbUus0zOw&d2ib1zWOGB@s1cCd=FshR&EBu zyP*?Mno3O-+AM?fR2w>%{;6@Viw)i2WuCE=f#lw+K*b7gd*}(l%oE{clfX=1?M{j- z$QpTSah?WL!Za9~!J4uzoC5sHxoX)@x4N>WZis8}zRi8@JP95hYt-WlFqFOhzDDSD zX>d436;ux&<{}r53MnY+Qh!a~In2(52nU}Rz6uh%aniqjx+Ccd23QZ?1V@kas%H`s zSm5>av*ZL#H^E9bJ!NT0GbzFcn*d*I2k)5}Ld1aUMGw}bozD;my5M#(EvM4HVPsku zl!U=mz>o@MzhH1yXu1%PLeSA#XBlx$?d2W zbR^oE%SgjzM#g0gN9gfS4cV5zJcQ+JRrU=$(KF=UDOu8nY`d)w{i~wSY43!$fTEB; zku5v(Sv@nKWCf5f=L2@COd63mPxYv3*Wd?}=dsq0m7eU9#|DXAzXB^`L zh(P`R9FZ$W4rff2NzNz$V6QFhk#me`VAJg_PFC~TO&i0solt;QeVTB~SFc)ivQbt& z{2Xb;BkwRB`L>HYB(d4i42Zejt`d@whvAoAc;+NqcTx zf~3eXtt4NnYCJR~3jk879PKAYTkzD|KSQNu=*@zC40|vEhjB=t9|!!r4mr|Di|$dc zv47(6kv@Pe&rym=gjFRqIl*Y<-*~f83{9 z;6WsZ2Q&7-{xr42(;F~f3X-`T$#Pv>{r8#U1lv-BS>Hwkq`Gv)x5DL0!^mSr?$|@j zFmzglz7dgrLULG-(QehVjFM6yc?Wll7FFC&e)h+H@Pi+G=R4n-ayFnH(4@EaIH#lF z_|bdcsVV2wT%^@#lK06rMk;y=!rR;d8+n|Mt(i{0{Vk{snlr?R4y(US#c0T*`Y*wW zspp0BF>kc4B8!&tirj#xx~%|^KySbMWLD4g2vbF7z!jXtna^?1{liQi=)s>Ch|(Qa zHF$hZ4@JAw!)c0<)!&mlA5f(%pFlM?pF9!cTcwqJB4A8_i%YRrJw*JiTZA03%;f+8 zKmbWZK~(YalQi`Ep%{+7Kl9eb*VhlcfJv*3w==Qm*oT_rSIOf?gtuY~lY8bQi$Cb9 zKH#L#N;_t6l}+);VWv;i$vR*7gP4V(1a=Ri`$N|%16*>BB>1uP)gY4Zhu=!w zuYT?8T!f38=8z{9K$=b0I?7nE@ttp@!J&r&lx9i6(0VFk+~a70t&ckuZ+akv<b6TA;@>M zO+Qzpqp;!5$4)Lis8IlFhF8Z)nH^>m)ZH!fLrxwAL*FVSfdw{TGd0|>e+^g7|iZH=HQ~&hR%Gf zZF5%ytU7Fyq`+a!n&O9OTnyKeN2EaNo5r>(mIK%5L1yydKv@hcl~FwHa`gEU^YNS* z-6vFqRBL6tA(PViQ|)0MR|e273bT4&=x|baH3$f>D3gKpn$Pw_V;#lOQx4y^WhwpP zqlgEeDtSi|$edq%HFD|zh>+Czw7hV}5~nikLjs^xYo{}x%#*gxd`1M=epgG5K-gy* zvcaC@+kEn0=LDvJWSCu@Grbbmr7me#Gk5-U6C&L5?9wjAZVavoRC z;sM4E#nB^lQs8YWdR}?ul}~)^hjV_UZKzk|t zaDfkb+=NHj05E-}5q-gG<}Ls52AuRyeex3@dh>&Cy#IZ%Px|-1|NXCh?dyN|r7wT^ zD_^UsLlevlVf5^gK=sULc-T&(J)gdM-HlTDvLX#-p|q9NB!!d;Tod0&L#}qi{}$i76Ko%{L>E<@}8ES zX#iJ{GT`G>(!N&lfoXNVatAfrRk8`2xJ^>16U3%u+Hg(%=2cmc3NwPb# z=i?yPi??ZTf{!{@9sf9|4cldBGF_etEqibsB?*#q40_0V&@(9mH*p#Z8vfh>7*ANZ zir$9fL{nBXV{C!TDI&SAzy6-r-}7#nS55x=X0N>R-uJ%#+H0>_iu{(~(KmpH^i+|x z>Q;|!rYsGRkAlXw%4y!)D$HFZS!X^Jp!MBjR1c5yNlp*BT0kOiXh8T7p(zYDY76gS zG8dkpY0bn8U|i(pNCwU=fPpV4ZwNH6gFoO1upA0?G2|0qk8{1rvH~mx!MJ5Mt#sW> zeo72)GFpIZD`O0}l6An_K>XtQBr6~3L;upVKlS6Ee(hcFa%SU{8^l4~%&>Pp#*46X zl5?~GmPHCxQMOgBK}E%)e=7M04n@a@4g!_8+NJ5!BW^e@BHA| zv)}sd-^ua)?|bi$efmf9TXf?8&lmr}AAIRcfAS~)1h6g0fTGeWCwdI7erdTE>8pnq zf~=#nN9WUQDoDozmt!=cLXX4=234TlTaI95hI$s?vy)xE9G8GK^o zf$$60B;-*gHa9mI-)%nBx80C11QKKoM_=4aHW21%HPteVP@6wSkL(1)7H-TC2&W$9cxoKEK_XbRNy+ep54uW+mRv~7O@=GZda}Rs?3>^E zvD)f_1(~4|pza^+4p2 zTF?$XELo9!4Md1~s4g758O;j^)Jc?|4k*BP_UeJQITR*tYsn&8dGXFCK^`-*U383v zk3sM%*{MEzmOl{-VYOtx+u9Rw&F%E$0RgYP!ixoi)>J7320;ynI}Z~Z-60)wNDSTq1YA&qnnn%-+?^>pBPb9;UVLK zSKgd$iQ8J~wOi=Qfvt=Z-L!fM!w&xI-}s{+yz_(neJLqsD}M9-oA zZ7XnlcPDX13$&$zv&rmM=dk)EkP8fJhvbDxdWID&I8<8 zaOZH-)0XNWWQh{AI=KyFX@}Vg4`5;?t18cFSv`R_Z7u1mw!KCj$hZy$#-RRSWZDz9-6>8 zLHa5-yB;veXhL!i4tRgxkRseIgcB0JwdvN{9a&%nVt~naR$j{NsdbWLaGYo{Kz{Ip zx8MF+zM9#%pz7HK^vJIsy>tSrdpypEhKyEMF!l(HUvdaBA%y_@J$=ZEfb9fZ#F5WA zDK9;H@9XcO=+^9H$dgMwW0xW!^)w&F02zCJ?L4Jhj++d4^Nm)Q_&Hh6-c}C~&;?k) z($!k|{^rAc%DVIEEum`(gl|uyVY*Yw%#&V3I&x1@gG$#ok`qa-rl(SWRB5RS6L0ylTSj49_Ua!nbXo9ZO-Zs2~>H0or(-a0ZY@iZMPFQdG&C+ zozLjxlcQF3(TD10*2JC$wyjIlyWaKc=YH;A{6GKR7rv68L^3c&1&yKHoezmLE2af+ zWl2OWW#<#lJW#fk&wOxQskiVXAmOnOK^&FA%ZzxyK}dFumjygz@NB>!BUoxB z)RH3!T*)?VU&SAI*@(CzaVE756hGmhX9OvgqkaW^4BmmAa zMiAFVK@!{0rK;yU-~H~Fzw&nQU;p|aed~|Ety&|= z9X-j+&pz2!1zLCAUadHpGglOIXqw0zVv%_10dK_%4k+HHYr)2181}V1Wozv0)bAk_ ztp5L*ahAw^Fls{38bR4w;-`Vw=D=qjU_5O}sq;$BizQsDfTT|a4F4!41tU( z5+rm!qKE{A+Dj-WBXn(n0GLe6(Hr=z%J5u0l2n89R2vlr|C~`jfOfdJJaOPxZ4JDg z57Cn}dc4qYfBQS%`~LU7@y%}@!M;8SpiQ*J$|)<%H4>@iJPWdXMJ#?w0uG#V_xTWI zT2zothI7{7Q^04Kax+hBx4H^dGz@1d!Sj0bf9YxujG@CAjXv0nr~`ADWhLlWPW3ZQ zH50(n9Xn4a&4bv&$4d-JWHnqnSY5@BU5`kmW3`^}qMV4{#)>(WJ%UV~s{#j3?&tw_ zNGeA8e6);+78DO@ZLCQ-CSI0~9$O~?Zuf&9_@Ph#=qEn=6Q6nG{qK+K)mLBnY{)eBc9a)?r~4MlMcy?<|73x z&IhBEyAP4<#8?XA6JCi_2#kWwLJQ9P&(?YA$IFiaPVB(hVv^O}$ixh890;Y&g(Ao} z$da)YWM`9&qS)S|J3oyuV4{AHHFCxk=h@BYD7bV|;v#GmQX(Lss-8rX9*05GmEa{x)T-S9Bcg$)^ZBJe^RxfiU;c|f z`4gW>98szYe$Wnq3Ix4GBR4$;$TVPjPAI0k*2P9ZcY_IZ8NyYy4qUuaygrJr9#LZH zDWrVV-+4QKrvsvEp6WppT-3!_J!0d5Y#WZjmr5EjiKBTEQsJ2pKKp#Y))X7LY=WQhRYr3DL=qOZs#%N8%UHd&Cw#*u%Z1Qj0CN&_Bo zVZbhY{WvJ*xr&dV8i`21L_%Af5OjVVPaBiK+15!MdDOAeI6QNOp(&;NW>(c9cGxha zQ|4pC%SRDH1nrZjONF}Z1m8=4_qV=~-|^mj^M~?}yX2ot3gnBw_Yc4F)vtc*Ti-Sg zmo%!Snnngx`jV?mJr?R5iqxT=RO5Aqu8Op4&W<7z*czUMoc`?RelFhZU-;cG#+xs| zeV~WIRTbGpJOz|rG3UA|KoZvlEK5Cs<5FT=6WeDp7X9qmFaE;Mrr_WFTmLICFDzk& z+~*^HTBV9JyTNXQO>Om@q8jL_5Xwvim_QG^M`d_3@sb3Zb&e#&*Flg9-5{s?TOuFh z#JBg%1Tu>n7mnpk7r3;iNKGH;V+nmS0*2D9v~O{GQlXtHPgdgTZT@q<4%f05aXFvUuKk?81bAJjJ0N{9GV&^L)z&Qd(&wS-b zXz`*)-u-yJw0k@ph0w%ys0V)i-1E$(&R?Ocb@8PVimvIfW@7rwJv=i6RT>@ummL)q_oeCWM7NSdrSG9* zNQA}xvCdmNermt{)o(=9SHH?X?oxLp_ju_^u<5+DoewT(cjZt4h$U2cQ~?PA&cONh zQU1%f0~G@PM?U`1&;IzQgZ)>3?q7JzGD7C{T2w~)Wp+zR1_)PwInRW=Wqj!2 z?9N$!>gs{{#Pi25`A0rJ^Qj+s?bZ3?%EiO83A_o(>3N*Pj^@?h+Lgx(2Z6pNA}98R zC!2YyhYEawCViF#Cc?wci1U&J>HY*xG6BDMkrhctc-YU11uf4!ktfs<3z}cj29S;#(m^ z7Mw~*aZLj~3_L++M#b`DwL%4HA2|sPZ1f~DzlPrVP*EOgub#aef(gg}&2N6|5Att# zedX;N`kGG%q#id5XXB8yB`jziNb}WEq@9j)@C|^lugF_HiUHj3;Y)>o{m*?auB`l% zE&2Q5O|;=;gU>I}TeT%nh>v+1siwloB1V8MDcAfZ!^N8GNHl-3@Zb73{(Sz4u6)J# z^rwD=lw{k;8AXX!Ps!P*pZ3?Xl9$ zHSp;xDB|cbMJ8JCb;emab4@5D#wt|$sQJ*R{&WIONN_;{rq*{LwdmuuavSOYzUxWdRVs` z-1&@p=h+1D`*zrH86XNNe|Z11fBqMLA^&b%?ECumcfb2TeEx5J{@4E(IL|z5#A9w7 zYSGxMa6na9&dl?sXFoG0-02He=JMe>#FV8R-_El}?K2^h^Wo*Ee`R z;Z1ygr<+^;;e8%?^E}8q1fj{Qu5pMTE1EhZOFZlD*HN!O zXqcuqIyzuJ^FgTdk^Yvduyb2}z-&W3zIs(*O8!vxKmAL;{1^V*=RWhPPhK1^vi{x| ze)qrqmCyg@f9=0yGF2UzMz6{F+&|9>TjX@R_x@zO%ZRf41DHSkQ=k3G&wl2oe&RE) zzvn&ieEU1!`R(8R;un7Bi~rYe{onbAKqx!&xh8#Hpfi?pU&^d7GWmq~bLa5LmXq_G z*D}YhZQ$W}oHe+oxz$ZO7ogv;7f{>|Mc~&tOz}X2#6LW^7Gjmh?OgY%UI+eGzsp zm3rnQC~r)m;OQ1FuNT8}XMv&$ptQ|7#7uiX2z;2i(C|3Q26iXkxOFJRs+tU$i?guB zy}iB=i{rVpyyzBEyEd!?8KJ1C&?`~hD^h%UX0oFPDXOtKNPG*>(}fO;X)w3Dd`>BC zeT*y_@U)y0b5Jtl49E^TKkzc_d|+Ub{3L?}uAPra|2fBJ@EbT}EG^n1O%DxJ1Affzo%fI}W{%VXr{nJ0?A7=mD&;Lt5lfUnscvk+o z$Y1}Bzw@iV_M5-@KmF!!|IXisDhk>n)X1=1ycVd(j(lwtnmp%Y0wnQvp3Q@HTZ3KA z&))gcm*4*K+g}Yn2J=pVY+1rB?KSPiDW&rnUcf5!nLHIQo@Ukt39&lWLqmH%=%*d( z2b1Tvt8erp+qNdr*Fh(E=A-<6ny%8+X(8jaEj2uZEh#?@zVz0o@}CVNapq`YGrb(p zBzN8HX~PlP3nkmpQ{N{0gzJW{Pgh|RwvBjHa_wgacfAfzUV3PpPx7YD zNS*V(#eJg-;qH>h_rLvb{)O!S^?&o|vf)Mtu*j z&+T(jh9Q`7)YsA66y6ok3g>;_j(s)sJX{U^6jU25S-Cs@gMQK3PjV+kr*sC$+hqr| zuX3!#Xr7JA;EEnM?2Bk!A#r&+_iz{^tKIScmjWa9SqhG%%K*`mw_d z`OfD^O+tCZK;Q*dNF&oh{)ixd?G0)h8U7BatrV^XVQlIlT>NlJKm8x*%m-w%Dx!Lp z`$De;Hg)80d#5GJF6=xfdebwxLfuq3nZjo#aLjzB9RIH=n~dAnB7T3nhr)4_O46Z- z;leW@Z;*QFQZH1A##Qjy;{oF@=&faejzAz3`EHVMRg>x`nLh-A!5)APz0Yae;x|1q zmMc2{KgQlX_WL%g>${%~X5Sc?VPIGXfdL#4QADOJiW}OJ)>^A+TAQ>rspYn`&@4eKs4jo0508itWL;d zXE<3T-%~xXjUH0bV+S*z?f%lMT=R>FXETABZI9Q`@TD^Ck<*?k_} z#~?k+fw157$fsKMz@bVy=wvzt{0X9(FW5+RkpLcHS?o7?#o)2N$H3K7_;h!|@-5rw z5h<@VCegYO-}HpWxd&3{6Oa18Z2d4Ri~vUUf=j*v%X{Q6+KIJu(EKO|u7TTiubZ%5 zDmah8+fi>}GMeXZsbLCML2ZPcX!r%ej9lu?g54X5L3Fyi<^WzriK>Uh<{uUtnF?h% z889xj&Zb)mUKO4}bUsV~f!T+2;1sqYB_#aB6HmS5m9Kjq|I|q7rI>d&2@&lC9_%Ef z*i5E^M*&J6B!~s>j6g9q1=mZ5@?Jl0Up==k!c%MI? zRyg^`fTADi`@RkQ=-b~J^Z)tFf3vMkVYHUu?6SZ$V*$yL9klPs%zxw(>3qTxh(MDb z&WBui!nF(`JfH2Bf#R{X^N}vG85fU9zeq?u0@OoM+w1$^kHdT@4%r#YF(fh7IbypFf4fLTVyU&`>FK5w*amAu zPXQl;_eSH`*k0tQ8F)ob526tyQ`w*#3d~v5XzT0Q>YnM~=oy51%GBV@M=buG4@}M! z7=iraCYcNt5Akc4Sv{o8qKD!OKYGS#)`AVTXtgKMAv|_p6c%?)$1>m{>!--Vv;i7- zf)5hZaQ755U=RLY(NRnz9YJ3Nc4`3~vIjrl;%-TULQ?L6C)_h4=#d1rp)0B9*#_?2 z)a8XGmqb4;(m#ZIs(-jFO5I-GLEH+U&~6jxC?NK2xU>R>;| z80R3=8MM%?;>sIA*O8kZjWfNixKkTuN*R&z}l9c z@s&zQ>dY%rSgWxI%P(L47&GEMjt0tEz&fMnRJ;ZfDr=+9?p|m<=eofHd+hd6Xj9d7 zI~r&MK)PBo_ROHN7%`8@l5YQV$tNZOfKmR2_M6K$8SAy*2PQypD5B02r5TLggR;tMh3SoWo;6 z{tGoDVQ7g-L?M3o0V{T%oC#HQv%6P|2~8t|BOeWAkt(GiC|tPkc$|`nwGS93oH;jP zp1HO;tH&3#1>MVD$O1Q$YJCgTSfc8weM_i$8fbz9nGehTY#6Bbtq57pyhgOwj+!DK zlSRlN-lQ}*dPEF-rbEUoGmLsAcxPN%gK|K~P|E6=AOd4@-3#y01ogB4(b2ZhITAVD zO#`cEASm7}+x7a;nlc13f)fWi*WJ+0Q9C zl0KLZ16B7lK(Z8Kx1rVL?IxU{6$L4uycIDPM-ssIt65Ymyb0IG0cfKBTT{!o7>LRw zBe+!0o@03PP;4OL+&P?Mbr6&W5#ereeQ_Jvcwsu(8f%j%(Nl_?j-FGUv09%{z}+cH zHgpr62SYhdSo&>~K+FR1FugO?ODshzHB~yF!84y$l9&XD99>IOyj9_3Fr`wJ0W4-N zPqUkW!`Qs~QVFA|hI&lCA7w(yrH7MA;PCf#^1g84K@Cay_8q9#pa~Dob#DVZPpVWK z#bF8+#bCS&bUty$S5;&5#gW_mQIshoY#4nEb?hlXG)vU+si*VdsvuEna-ddW_Co<4 zRYTLGycK`+G<$Z*2E{GUlExwy$T9dWrlB5+si!5#x?YmGH9}2iy!{XQ@q~{^Yi@0v z@xWp~d}i|HrD8h-Fq;sYqxc$iSQR`_1NwK1F9N7kCI>y23cmEH0aO7V5Tg)Z7esPm zYl?6-1~kbeB811S0o=Qied*C@?anS|=*@0Ij`CC1@|1%^se$5U^?p)%=ZV<>S4G_8 zz$-HG^VSmZn|64;3Mt+ebs?Xide}H-_XiO9R{`qf7j%9n77s`s%v1OT<6|v9IbBLw zn&lrS1UEgFv7UO!zv-!rex6giUq_GX;+upmF#PLAxCKU>6=N^_=$XQ)GxNC|Clz_5 zlHAJKosXAj&8sljkib`?wVS^4fd>Dj2gN2de}H6x991_s0`MC_o^RGuFMj3g@H-v6 zP+m*j9NWM#a-{5t=E|K$OLsDd1lEHe(K`-ETJkZ&gls#7hE*wX&Rtg?6TMyj%7&FQ9ToEk6`1F47JyM=E|v) z1&JUFuPaZTm819CCPD#dk039s!IOWC_=WF0M~?-#lE>#seSRIj99h?Vrh$c=c4r)I z4Uy1;x*HtxmG6;1@T2Ee2;5`xn3{5~=W!$xQiYQFy!kY7^JOnhQqKD}^N|G-SntbI zwtQ2d-QgVEEdhuKVvjfM6q4o#$^wO#iN63gjHeB2QpwePgd>GT4^F%`{(Q|$3Luhi zt_5oS~9Rj92=SG-jiVAD6k62_8W_#_dDd<63Q&1wP1;aYxlY3Dc2` zYfCVKmWl*y`-j6T^EAFv=;`$FbL25>u~{6CCx&XWUH*yo(YnJQOvPV%66eBvNPn?Y zX5k94dXQEdb=8trzvmXZy~N=dAu6;T91vT&86)3z6}fbHh5-%gG1m-Sg;OUcdw%UJ z92>BD@K3QmJdtD`z8EupZ3#!@inyVVo~A+K#WNMA}a_aX6HxN{=l0Li4E}ifRTH3CT&0`H(d#eIx-s! z3;ec7IyM?`fsZjZXLE8!Mw4O<`x**pyn6VJC5tq(ZhDrUs<38Bx5lLh5v)AdoEo~d zTPOs8R@ltP%IH>}!bZ=7`KT@F77i&16yQ8=DRhn$$~hZ>%9&0{Z$s9aSE0X?Fh6DZ z{smcFP@5!XN{2~I^}wxrv6OyC84uJZhwsGDA27w#Cm?~CgvC@~U zdawR0&_oL4IF0pC+G>C+tLjyrQ{_yadZ^1x6$IYZ#6eSM*p^h~@{th31%C7lu*U-k zN<9?aj3Sdd^8qt`09iStK(7*a5;aBv%<;7VsTNm{jTqw?`qpRH>Ty%ZOs?-=@Il|_ z;~6OY(gEiikAw>1qCH>bfQvJ46L=m07B$lFAoD2o=oy5*?IzVg^#={`tR8PSZByvye_Dfhj$=)2=l~(2mEuiyhg2~_|E4-qNlbsd7Sdy1t zXWfxeYWL9tiXU@+NrPw-vLl?|nS0H8NsF7fm&enixuKb|ecJe;YijUIFlhAf_CRX? zWbh@)jbAx-qzv(p<_ox?)HW@UqW&(|? zO)+RnH2X~tj;wfyp{8_ZOl{k|^hn~-QY4UC@>p5h!1Ueum}hk$;J2iD__^$0D}iIb z+8u((BMI8oQ!gH^MNvSw8vt|kRF?M_|cx)NMJz90*@iDHgbc^>XQ(sevHTH zQ8L*8Wch+x0QGcAujW$#8#sJ&qB9VH#G$B$`+oE^hY&!BlCCkk{6!h)cBoSzwi23v zoLx>6F_8c>derp-^Ldm%j__aqs^4ZMYMR^mP@q(jP~hmV>=j_c#M^m~6$G&0qp$-3 zZ9R|9Gwjh>v=by0oD4KGN1WuU=KylVdD5@?y^fw?n}s94n2!i4`*HIvN*EOoqAJsP zFc7MBP=rkef74UKIQ$?{rt=95r!orHTnA~}evBTMp918>U-hIqkUX4^J6Qo*2t<=` zS};3uOk}sa1DhTMV8kF6gu3tAQUG zEIir`UKpX9U~timh-{pKstyc0D}i1l1H~SOhHz!AI!D~=89jJL%7U&^vYTFCsRAbh zS2f%dfY2|&4iBJ3h)hD`A|L(7zyII)WB>Di^Vy&AE1I!T3M_pKkYDERoblw>Jax?R zHlL%X@dxPhk|maMVU7oWC8meir^4!)I*lez2+n(MCxn-R50~VQCw}P{(-KWl4~gYJ zQWe+v+!Yb8>g@7Sfm{xaz-Gl7V=r81mE7UD@eW%#JrXe43gC{rW~z54EiraWRHHeY zMujlUJZY{iO$&>?J*C?D;MX4Y{(t5Sq2GzbzaMGpP=FGa?dJzO5PfiA2%A(15^jaT z4QaHuv;M|Ng{5~+=R^%Vh14(dtQ7`i@i7Koh7}=vilNQ76Ak@HPcic7fC|&p$kN#` z4HQJaW260V^Up>_CYNq9hISBUQ zj0aMVM2j%Uq5Ol6gH`7d6r-|g9O4*wZj4Pf(TPps#coJ`SkQGXc`a>h27+yM#xmx_ zp-rfbXXhI|VI61U`7#l3jG+n>B;beC^Xf6C$B6~vDpAbfX50#x0zA|Md2GI6LIh6_ z02DcDm+Hm=y(?ok8zvcIY;0?^K=qhJzd9{>=F{>iI)4ESqI@%fPNgN|!%xB6-NcOF zHo(W|T$S?-q;9Na1Su4{*_2{(#V=bwX4UaUAD^7Y}JLb7$F+cY8ulux5{iGnj^ozd` zwk*?=m?gXOG(r$B2%~sCaK<_fmxVJ-;3m8o^-+MTWs5mRJ%*YdctX%iG@DMC{3Juv zK+)EP-&&0>Vt^c3;U*{S;;VvU>(+pRHf<@9=n4DvzAX_v3150z0ItyQ?|anEYH19Q zy8%W(^^c(D&ikJNzPclw{8UsAtY*Vro)`(mM!xZeoVjjrS>pzHU*XC3rN>zBt3abt zO9I+|oRbk{WeYQ)&ZbVsVbpkmhNusod1cUaZnSLeq^@uyi)fPCq&o?WuPbF~sqyNe zfWkb2zVP`}e99-iQQzbzx$<$^ga*PzT=z;>$_CKb?v;a+j(DNr>b@N+v(5<;&oAq2 z13Arn=-T;wnZGRu_-lXl=jPA;KI0jB@|h3wlrNk~9CGh+57whx@2etP9>}hEs(u{a z7k0ecjqhmr7~deBk4W2Ew|X{n=OZ7C<`#NO7)Ge?3hn0z-1L2lChAw^A^E|4=;M~K z^5e2?bTawfZHHr4_v+D+%?mTreA~Rwp|4jng_8lhbaHh*653y>gMp{j%pVo{B?ypv z2M>S@U!NY`Z|Ncc1l3n12>-BkTnXf8o%Rs81`NkAuMM=IL5sxdpm~Aq5Z0__U;8K? zRvvo5jj%W(q&uuo(~Sn;=bn4|>8D@zvX{R4Rj+#T3H~!?)jjHuoK65a_Q%g1ByqNE zP6j8Te(0^I9%o|yVL{je;Nh2Bj4E&rLO2gC=jXm;Kg=KbkstAeU+{VA0T3KT+_#-3 zG8Prle&<6q+`Bi^T#E*7jDrHEAw*^oWD&}e9%>A(Ykq{Ss)YwRbjz;nq?p+BvXxkS zE9h$Bl|Fn`TQ!xT#6>w1UJTTs(yyVLxy9E$*{6|IuYEO)PU_@YC8D#PleA`nW0j5C zZ8P&BpXlr-8(*WX0n>{EP=aHn3|I#yT*sDjE)%3)w5~@#(DrQ`Igqg4y+14$ZiAQ$- zAjL}g(zkwLjZi{Ha@An%d~g;v9xjw{y>wA)6nd^_e#RXJ$T_(8zG%g>BDWHH=E4${ zF$EuAcoI|z^E3{;7M@yDv2mocCL8q%sGbBoZQ|gn$2>@>;f>=F%66X*@(sea{CddH zVFsAnD#CsBbO3`%q`J?1P@{&Mo*T;~pkE-hTmAX3k2N--cL$U0=DDv(8v{&_;<*G4 zPrc}suOlVv@bq|^?!870pBYFi=Xr31b_A&r_UjnS8f_qUDJvzMrMeyCn3GYH<9OnU zm%sdFZ~hf;`m|5`^T$Ew&m7MfrlLWQD2U;&=uuFP zUV2$B`u#-hIM3}X!3M$>5(t}Sk2$p<@~$Nf4hPux%{chy%}0+f}Lhk87gcnk2% zudV121S;Zv%^N>wisNxX>e@OfQ6-bzx@yVd;iw2|1JN<5i$cI2>d>u`%G%z zJ;DcXcD4?Bs8)~1YZLb1*u!vVz-=C{d>kFThzd=lAK>{I*9)NO8UbzNbN4fl4Lt8i zp^?4D&c_P#Q|1zK>MlIly)~HBvp?ogRy~GpqvCw6lRlk3re}^@c;)5Kn#zaytTTps zZpU-Mw^!Mzom@mBVpI3W7?nF;ej4>w7Bio*9n5uuGtLnZh65q;%+pVQVtzaR*w=^W zN8a|M`EOG_`|K|Sa~ELEq|NYdtx&wjGli<|k$uXGWMkp{C0MRDf(pj<*Z$m}`qiIz zn{B=SqW!=4um8xO`0B5zYTDt|nNw#QXE}0IFz0P@gm^x0bm0f}+@Jbmf8;BF)0ckH zZ~k3B@Pj{+#0l>YxcjjKIR#eFFE<~53Libyzi)6aW8_aAwU36m73;ON(^)mVpdLcp z*Svcgh3_qIji#Tgk2^11oLhdTxX0T|;MIdZOP1B+s3kgY@X^zZ9tS@pBzV7kD5~NZ zTc@{nPQBAu!;_ly?qFW9gnJA^;?n29EmDYu(7Wh*vY!=m z@bK{6dsmdWJNnV14?p|tkNoo=4KP{%{B3XNlT5kIq99qLM#j}Ml90cu5a@bLPo>le zJB&N^hkDATaMfD-FaEW^_0PWN`w!>8(8wQy_I2O*t>6ClzLUDcKOJSe;s&Lfz@Xl;!_|&-?6;dd;i2KCiw;WC!AWcpSWWQy}T5-zxNY z(_Hh?GxMP^)#xWX>MhV+WwZ4I1(X` zCGhq;b6ty{XLXZc1IJkT@V8>=<`YHz(@#6GY*qHR6!uneGBs~I6=5&&MS_zCKL2w+ z=fgk$;eY(kzI!^c07Xeqtp$YlH|^%h3WVx=savKb4jr^h0n7QI-OFi3(Py$EU-!|k z&0pyHvbTQWzw|}FCV%4DFzzGO^CuX7!#91~*MHNufBWD6hd=-GAD%nvu(>M7$eRPN zO6JW_DK$Eo?l^7uM90HFtn!7w@k_qwH+}hA^T(8@{)a#O?BDvvZ^?fO`!E0XuX{It zXw&2CKA-2!^Ff_!K1ihe&Y<&Aq0>fNVzZ9cbpW4_*&WyL5Nvn(sgw`%yWjH@-}QYz z7{D+4zCEVLF*;9~FR`lwm5&4{X<^A>59vP6g6@phmlW9QzDU0(zw_Vz5Az4CJD>PSsBO|=-4_dl7*w=UEEQFj zatu~s;n?{b@_*;A|C#eAzl{PPfBMhalLrk;VHPeUPCpZ=yo@+o@PyMH`(Qx8p}>m*JcM{wO6mBJc+I(zsBO{#)?Itd`( zKlsCMd&?L9_AmMMzxJ!X@;83Pmwj{LcIj|M5SqhU}20(iw&Q#h-OK zfiY|7WluClSNvJtIxy0hv%GnrXV?ABLu6L@;3kbcE?Ns=aTJ)>A%FiO@Q-}vnHRtK zMIZXmht7P2mxy9Xg7;3+dD5f87LpvrO@^tLLp>D`KwsVK1@eY;CT7ET78^r?dW@iF zN$k@k`a28rb~ODEI8PMMKtSg2)Fx$wa2La^*M8J%o__kN z1l5V!d;@o1y_}IRcgdX9A%@B~{$xB{m~)vDqMK)s_Rnk4cQ@J1 zfTlW8}9$}N-`B0|QF=nyC zvUdSTKs%A;(leLw_22ld1;6v%KmI-6oBy-NWUSM?_7mTkPt~!n9;M2XdYuhBOvpBZ zT-3`4KW>FR_b7j^at>e59~>2Q0!`uPY;zy#(Pwqo$q;|dXY>bWwG}~mGlqaMig2Ei z08v;^1N7mRFbMTL_YqG&^X5-~(-(cg=YHO=eDf!M+{aF_=bn4T%U<^8Pyf_k{{_G5 z^WXAWum6~j22YH2pHF9id_&n+kMq=vM=7^47H-aN>Y+FB(?Ok`4>>!Zn4@O&Bt%N^ zjM4<)ZF629{`Uxp59BZk;Iq6<>>7~fZ+=osDU_JwCBW3OZUy-C)R;Zdu=qKotoi`v zR~p;b4#PgXC%&u{l7nX%(u)^kx+ESYjgP`DP){7uKzfwWcI@aJHh(Ti*ecnN(Qd#h z@6fKuFp&-)F?K?G)Q8KM5E+S2f^9zW=v%+zAO76W{e1pe&cB`CmTdrLCl|ss7~~w5 zRi64%#DQ%39Pjg~uxmaPP##8pe}45VU-7Q|{%pghGqS>A=YoJ+ug96EYOgj$(qVpG z)q3oFrtXa4!jFIEgAkf$ez!H0i9~AtX}^#7h>yrW#!DsAEfX{-bUppd(@zB?3+EGP z*!d&~+oakbMfY^!7LyI_xkSZ7F)A5Oqqfrvs%TYo8UfCzz)ny2y7K zf~rn)IpASYKt0=66B-26F|@#pBzVV=3+^3|NcLE>lb}N{?BSSou*POC>a&xn0Y!A>qL!mswR^F(Ly{~w-*J; zoN1j16k6Z(E#L7?-})W(Haqob)x&zo$*L0ocIQ(O(#?FPf*jtExk0p(?iT~m^genf zL5|5&bmz08p2(jg`VV7N>WT4X+fz&BF$Wo&Bq zl2OZ{)v%^oy?aF2&p^lo$lmY7buNc@kSt-*%Cm<_D}2N`qfAx}^SLR`e0mCgni^RU z%4jT^g<`a&5!vwo{quk2Z+`G+K9qmhOFb%zo4kC7o*uVUEELK{ti{ZMKWFs}2};bQ z{YiwBUvXqNVO)^qm)_RnShQddQ?mfyX=G5mFXEJ>LiNaKYPQb51$||EF=0bbB-&Jx zZDg~CBEcmCTl?8(pZ)QleDC-Ezz@Ce{qJx5yT9iLe(as^%HO4*QCLEHTDuLI?&R6x zG*WE@2#p?!wec2hdCHvy#8nb`5fB3pyy}rz79mtfY6*)!o*b*D$i-ZB&^L%Ud%=xP z8&ACY<3GCsh)dJ{yT^Hq<~`U=P{j7&4C3Z_8r~dgPLuqmltcCe#m~ie6w)x01Vy%w zoJ)+c1&)COPAE1GJp~*w);%Cx#v4lbdGjzTum0?-e7Nv0sZoxzY{1fIK0sdf@|S(! z10P(_^;|ve=t1{NC^`TDKmbWZK~&wVZC{n052fz&nR(98PPE3%b4EcCRfPhbXN<={ z*nxNuh4aCD4k-S>Mtxua!$3U01CKG67$oyFVtw#Cp9cx}Utm#z`+fApCw%>8Er0hPsE2ea9{CKadge{5jIb6@Y~PC{)t~*`xam}@0s65;MMqKp4oiOTNxI|{ zAIJTDW>#6nOJ;S)ReyE`%)ZB+ryVN{ru=`5EYz-I^x<;98|wg0QdT;BtQ0hm?2L;$(*Gxp(p2~V9GVx0@SrTsS&|^g6KS}iUj)= zBmnYOCLaopF|2~U{Nzybeim-}WXW&cIOaVjo~pJ_e(9Cahz>B`z6cXwZ^5R4ZnViX z;JOqXfj{{^erJB)Prbi&n`#tc9Bn@Z(CJ>P;D!5DV&!}>r^XwC~T^gN1}BG&iBPzQw|VHybTlGQU7WX=aY0tQzY4b+>n5eZQgLnXFft&6O`>`?$o=Q(0da}-n`hel;2T6#2;jQI6p@?O=WtN^Es-37ni~PavjeFfYa14e_tJw4s-_K@bmby!(J6qaBmh5Pd@~=NY`@HW zwt8TSl&ACYWtHlA1*T#2G{KH4@<=5Dts1LTa9#X-ng0tAdC+WYat(6mJ;61M-bL+% zI*np@<12p{ZW6{rxxzv$=WIH%pMedd{b-|;E%{P~pi-Z8^S+9*6#?=7CL z?57%wCz(!XK9t8ZLlC(dsqvVeOX{r}JsvsB;JnI&>!}y<=QCHcKTAy5(vZ!~?e88f zOlqZJ%|h*|c{-6Rh=F%3W_UM9nW6WG83JI+lC19y3M;*Q(m=V!2@XtF%d{f962>?O z>-WVu^1~}!0iy?zb0(}tRPIgCpvN&NXM$B#MNK6eQqLX*!FsWe!w9L?Mc>cNGUGmAL3e0&T5$NBt-Z-wn{;CXCMGD~ZV@bB6=bH;yrLr9-v z3NDwpcGW^S?BkLLn6J*W{`jESft;~uR8Rkdej*&A`l;NooomAFI)-BzSJS9%BG6n_ z6Vy7o@IzECD%PBHgQO)?vMQN2dJ|>8lc#OIcx@o0fcsG}#B+uKdhpd!8B{E7A6Giu z$zU!Ps45wTdJ;FCRP;!=Y4sG+L1~+Mt7R5WG!B72(X%DiVQ;(O>1fvK@j3G$r2H+e zLK8ZG$>l+))yq^p1Gu+8F7)(M#9b|5f_Ypl9$@$O@pnEk)H70=Fo`svp6ppv$Ri9r zQj*VS-DYxM0|c$0_-=igV}8hhd;9fDSUqFTV>&yflWIA6R?p38kS#F^1P+ti%-7VC zMBXg*pcei~vZJ;L!ys!oi07Vq$tymFu8pNeTQWw;C}5u{bUsTHwwnoeSb)@Ad#Mv@ z4+UgT_Ml0nN>k$&Y3YMldWw)swua>@gM-{CNilX!Wj1SDAu#3_i(#Ph5KM75{J#^JO1Po;E#)NLCn5gPO z0Wz-nOwhM(=qymm-Qg#Spm{%``K8vSXStd?SI=cb)T2ZpKP&QL_r5OYzCV-X1;euG zPtz8pW;6Q6@Leo>D+Y1*owy()-4sCFV((#yJTeP;$GHV&%Bt75FTrpuZl9zpwLQnZ zdRhUZ)wYlm;TFk{luje3>cQ_S|H_$@E#7bOz>~h8QkYm%Emd6SRh#hMij_s|d?EMd%(U{bXLLcD0$`+i@a6l?yJWW_VGtbBLoIYr9>P$vE^MywDZc9MEm2;SR@pt^ zF47UnMeFJDs9W55CPIrAexQfp5q zNp>BJ7-6H;n2Jbf!_*W#zrj8z5fS+}Mql;H=YH|IU-*S*r%W;^*$?>)K>>*9>T#Vj z;!t%KmPWwBM_##BPnZ%9$1zBN`z%Ql<2xM2N6}zSLiwPlAgrX}Z34i$ zfKHe~IW@O-(bxw*cu_|U3{w=AN5ASVZ+_;PXMXa%KZW=Fj4MaN5w!N|v24(XrAGEk zj}{4DOCuYd6ZzwkY8oglu>>cZPIaKLHZOo{{5hG6U=ZddiJy>)v=^DHMK0luAvB`hE;TrV`A?e^&L z6P^rvA_G2nDOc2#9siy#Jp?8v25-y6hQ$o%c5U(C;yyo=C+(7unEwi7UrMrpPh0s3 zk{>@FE!m$aP)_yYx9+?uN(dgF5X~rIPFBAYv;_QxPZ9}3zC9+#xGNeTeaX|$JoB1Yze+f2fzinP#8r5JyvxCLAMMA`%8RJXTj}vyaa+qkMhuS&2uGz9(8a`o^-Kq_~0A`p(MaA zy3RI^hdJ1!K;<|eGYT`ChU_Cr%yW7m)x%L@rKz@aDB6xJ15sn?S9vr(3aK-z!g356 z*XWt~(3V*@J&^hDGaG7Vb|kK_gWh}#OVkom{5*ooa>FPR!PS%osLJBz26%(Zj~+iE zj(hchN-jqYDXS+A$fk1u^OM42os42yGW+OBVhIt3&7%S#SrkV8^P2f@2nO?_7k%XG zKAQhILlu^Z&bI<4E#c0w08mq`wSeW@Ix}$V2}cU>K4xD*JpCvZ?;8TT(wndI=+R(4 z&JP64PGd`;rFzBy5SQ3MFFh>~|7jGwVf0|N(C#D{zw)eD7#vlydct1XNZmqpP2g%+Jr0ewz%#Fy zj~>1Dqh9q1Z~XX|zwD)R9VSK6d*Az0-}eJQoPQ2!1l#Wj*!euDR`qh?-}%J4^>e#` zAV()TtH;sVnR#Uwt{$LlrAlPYx?=uIa&ih`L%1^yBvxR@U*y zZbPT7>)2+B?>)vt0t4v_;PDc5ju@=!`Q_&$ZrTDr_jS#o_g)g?$bam9ZtvT^-hdEG zA~kNS?Z+{ObjJyBJu%NfaNpl&hX8naTBtYE-GBcx<1!7`Oi%SznRFhJ>Z>N5b>~w0 zLQqEZJOUQaE1=wyo+I|~Ec|qmiTFVZ2II_Y@uv{c)Zco zVB+dgu=ovMbAYm(#O{j29J=+K3%(q^a948^Dp3!O=6B$EXu z3t6?y2R~ZtR)wY^j>5B7l5q5NG-#uLqoap}5-&Y-iO>0zlD8Jh(K9DoqDzAQ;s8r! z_jQ-d@UtKOg}43a+r#nmKlk(RdiQ%G2EOV+t``%YekG+%b)NK%FiP#N9zofH&K``U zqHN@rurE>>5+EjROAQ}&mJ9@X*q|4$!wP<$7a~<-lfWcw5{UB8d_b(87Lf*im@6o` zR%M}0{4Mdun*!FF*{udT!o#WXHGr5{i=3|(YH z3W0;A0EbZGI;1-v1+<=(l#?ysE(df3VZ@XDnh(%ch|!iRDb<2!xBgyD^`MA9I4%jO zI-t6&jaP0e;>puJOqgLfmr5Y38MRHW*9yR$;)I<=XDTt|=8K+|bh4!-iy|dPJ0w9_ zRi++UW+ru)HECA?T45?fkN_*rmNF01r5^rGoo7G%;h%V~|E5k;hu%gOnkUmSq#kKH zzE<0P(kSY;mx_H>%pPw(_)*COnCGx?sTSq3F|24i9P3y;rQ`0Tf{=M~(2*?=3&dfq z>=f`w0SBO#obq%-4nZBG2bw7_Dlz1E@9H6?t7XF+1EyBP%UV5>Z^Gy~1Q?|W?7@60 zKT+p%$-n6V-reazLhV7z0$gOKA;r5=uTA_$Gqg z!8*^f$4}Vx)QeyFG29~1wvlR()``D-7^zKe3_$gR!@}h{i8;wriUy1DojCaR04rkq zyrCEQeHdfA7M(DM@zm%^ouxW>j}&q$)HTHO%!l$@uE=HusX@jO zT!~v=t+)A%Fv8V&7$)ONgmq}g@C8Cye$Bm8?E(Ebjvgr}wm>_91X91TvbICK_hn-H z59riYK56K=cyj2)y}&$GI&fJheO_DNmI|Xj@5AWixU1^!=|(`F`NXq458f*xiTZ@P zp;kSV4t(`cG!SCKlduLpl5G>BIP6Z&2?}UX&jr{Y0n+{Cd*A!P5B+SVAQ4ss)o?y2 zwE9f-6c`+7O=wRrFv(CPUm|vy52BtPlivB%Ic(#i>lRW)=R+Pv+y_6N@#SJ8ihb(> z!>58xM+en>Go26RsI?hwGl(@1>>7g7 zv;iZOB3p)*iO$vyF&GP!C4qh};!7xaUVrcq&yFA3ES~}!3u>ld-I)?4Tq3qt3@mv0;=VF-qw_s@VebX~_&N~1hweZg` z69%^(UlSWex61J2g~hbl`Q)=s_1tFS(x)U);bJ%tX|#S+#mRWC?l@<4C|FsoQ#(<9 zf^aa~M^A&>`M^}jgK3l|Sfp?We)U8SIm0h&Lx5)C0Mymz>S@>A6KRg~5qIVz#csny z*63jxPrdl%{QJy;`eTo>F6LZhbfhw^mrXeIgBwz*>$N@ zgIYP3V8l3%9*-dsBiZOwqym;$89+2jdXDRc&x$yLv0&NJagK&}k|rqMbV^g>dV!Ls z#_H*Opv!_tqxn6$%K~8=n6WUi(PP?`Pl?W_4RAD_>F_nf)`DYvYD?mQXuvV)Oq(PX zDi|)0d5qB}&QWh+?GE@1Wc8f+P$|v>A9{;W*6-x^12a(?h?&&hIJ?KXx9at@LUgG( zd(OYie4NhAGnG0YvK_4p))oL$g<5PQtqH-B#|VZ%$iXzm`#_uxcsN98yTvz8LUso{UvcMKJtAajI!uN* z7Me3C8zT6i91d&ub$1*)AJYnOw-))KW}f8@dKl4PDdQeyGUH^5fz#Og>H9a4{7KlNnx3Q->pm%eg4AawbLrsFTp{Dp1U@4i|c0<1c`< z2$z?{2O0h7C&eFQ;AjtsG{Lu}c(Oe92j1g9mQGcHyHT#GGS*(|gr27dbzRiDPVII| zhifs=w+K`;yvnDGIO%3~o;|KFIpk$$GLjq#iJbW~E^^@}^=JS1(QH$FOC*}tWfb_< zt{RGhue`P)DRhGDX~^|8)i|+AjWNp6f5}&K=L6r&6Z9StJU6Zkud9Ho;YpBripG^P z4UBQgk-tIpT!K0um`!fr&ZVBVuE?F|UURDU#oK(TTG0KF_0>8RM(krESC6%JK85yD zs^{=0{lWXj$FbdHze-QBlU9S|n+v>I^Fqo5|GdGaI|=G}ls`C562LQybAMBX2XB?+ z)(9e;ar0^#z9#H(r`#w&--$~u(q#b-@iLM@Q;N1E$2#%5IHIRB!j&Vh<9yx(-8Siw z>P*Fto^n?}3!Bz@*(vQ?4mDk<<(JZP=%*W0O+)ihkzLLSS;NX$bipDk6+2{H^Hac} zo2}jk0>AQzI*P~VBMFo4I=KgLXu_cii2^K-o=K$n4&2Ci)pPoAXpJnP>06?2Qxr3w zL;`w9KcPcWOuVS-CpHz&I`3P>A+Mbt%)LU=&if1nAQPHpt=`w9&pfHU?KmIs5Ik%k zCvMO8ZR7hU6l%(2Tet`^p_`s*0|E7$1t#ZF(-UtF{|zv*6-v&KnyRy}$Rq+RT+3HZ z4NfCI#n9xcYQ{-d44XAc7*CA2vM?sUwR$|x;x}#dw6dwN@QT=O>E&zQ?51aW zw+T=v@feO`yd+d)P%>>d_Zrc#GVIds;-TX7H)#sEQhOX{3sLZ~Swl4ImauvfIdLkM zU^#q6c0P$EPDr{zLjc3M{muuUt{P%qJS;c^%9#wh&6C2 zj;EQ8n!h9|#maH?#l~l)sYT3qe`743{jR48Ta^q+d{V$~k~D^%0@mBSs<)bYg1adb z4uMNUx^l#fptY^QYXQ%lLkI2}WdUsl{@6)z=Q#u$D4F0PhP@Rg8>s9-X%E_y4)6xA z0zs}vtK+*EBV*#ITY1m3S8Wi$1zvjQW0Xi&&?n(kuSY!q%Mms{V56sLhoczsSR>9N zt>1B2VA=;X4ab1Hsr7?@;rU3PLaG^U)4{{}te8tr3k;Y>cw4HEA)JI`@Q-t50qJ){ zS~s6O)aRrT-?XMv%2<3{+m?j@`H^*3daF;7rg^wFh{czpfgt-mj6*0AM5?SFj;BZ6 zLl|eX!vxwkl|X9SrCXPM#8+b7pc>R@0*vOg{^B3#*&m$J4SfKY9)B<=5Ko7U%{TQB zWE**2rgc@V7qlY+p=bIy>PUbdG77bV#8V+YK#6Wa^^j5O?8a#r{jHOPl5U$QKupyE z9)QF|;m4;OE0zntQJ$*hN%idF2bV{`<27MnW#FO*kB%<%tQ`;Wt|7=_#xjlAfUs=g zBYPXC-p-RmHvk+a zyJu5R@V>ZbK0p9=C}%Rd4l|_;k)CBX4sx5*54L?KsuJE*+Z9@>wDVllS=TqDzA5wpf9>~;l7%AauftaP&hn{3&(;{4JZ_DV=nFs9o<7q-+6hG2= z66{bHk1sHtTySx53>_p?4BiUt($WAhapEn|b67UNN;^0c>*yrFwc}wY2)54RQ~dBJ z0ekdJ#epfzy2V3Pb(A4M`(@YyU|9BTFeZoMP48F&f|gL{NgDB+9$h=nFc=cUPkP{0 zfT_?vpp{vENH`WzSgRT#h(cEJ>ahWQDT+k0DM?Z2d5Tv@9MvKSw&0HkE%=7NR@syT z8Sqo!(gW6t<_kb1@S}&ZK+$;~MiMzpQ`&&)ktCtAfT59QV8rUfJ@iy4RgfA3nA$m& zYwnA@Lwlc3OWDArz~GRBuL=wWw1ZG-97#!Vkx5KF?Vv@aUy4MVFmV2%k^HTxu*Ff% z#5vAh9Jfp!-nBX};=+*|d+;r@osel8iB9_F!AiJ~+LJbO4>J9qoy3Rm6;O)sbN#z3 zWYioE7;G28t$FZuP^FQU_VhyYX~S)*AWJ8?={%TBo6xX2(VfZK14Pi092Nx4s#!*$ zMtaQN(_($b)myt7XlW&o@EC`lzJDlbdZ(Hro_=j>Q~|{kL*BWyQsXtymj%ef)pXc_ zb*I$6&t&39x$5#aC;AD2GI6i?A*kK9p7Y;lp0e#DX^IGvMp|-YC4au+E~@HtpiWZhmXpR1NRlzd-BB#M z;+JYN>kJqa8Q~feT1|J@3zlKwG+9`R#b`sx*pb~iaF#K!6timg>11@|(b7|Os>O>0 zw*G|XM16dCTXa$%%%?vl%rtyymV(AhygQ!NjzLz&FDWVDXCe~bUpK`ZJ;PEy>PW^B z3e?BQp2(Sx^!ND?3a(!~MowAgN91^k^~c;uv=AHBt)0LdOk#0;yN{k)4NlSzN!(w~#wWW@t1x%noD;9O+ zQ(&|d&Uxme>}-$CXBmh@9Se+?gwGXMaf2=hb=AX#we%+F&tVeQ%{kxBlXCcJ1q+?y z8aR~srd{qgtJle0d(7E+=HVAx0{i}y(>&s1_=JjI*)e<-m(***ITv>&L|)cS&n=`G zu0%s5yJ#DDY@QSb(c;&`GaOmV0;7DLk4H0tvq0PR{f7|&r>_|5u}O=b`BdU$lqiRW z@v5&P6=cx!&PP;k#H%TtJpR>e%I25YWGQNP=t>`l?|mM`NI@jG4Cy+(o=SmFATz2z zXMg(64#`Q(!CAmHYi1^qQ#N73JX-$1aX3Wvl#SY#o>=5nPv-!!9(KM3;6u+Ij38go z(17XnW8~|Bo--d|rivdciHxs7<}*i(p+yP;cAv6U9B931k?IcQx2sh6<;Pg-}-tvi-; z!$nDC1KWOq2fucVNm#=Se74yUq>CZmC-Kfl zPXQ>n=0h8REIhidt59dhZ-W-YLBRI9iSCa%opY{$qChw4r zacW;4i)`&GIQS#Tm!2GFbcDiw>2dsGti<-`zWV?84}Rb8NiVpk-5CJk_>A1tFdy*x z+4J4Pz)i~LeER5=j8K7~^Ndyb-912brUBX*p2J*EaAh2;RLUej`4ivxtKRZi z^_T_3`HY}ym4Ha2#LzMgsIWktF(216(KgWez_3KaEXvCyxCN?*7_M2@4SJdQ^9w?* ztL4W*#-%6DnddN_=z%LMr>;)pNjdAJ0+ii5Y))!o_}Z&5qIqQr=T{OFkB0+V_%RcE z3<{VI5I9k96Faf)L6LEmURYe!G>n0Nf7CLmt04S!s~a9ozH-8^C>9uU-hb2zT)LClPTpCXEzj3Ud2>xUkhyV z*?CZM*J#Z{=kw=7%7t(CVL0bw|>#DdHU(6KmYSSC!gwIJBC&-M=4DlO6X}e-{2`DNQXtw)?kjL zf^Wlpg#UN`E5G%3e$`htTg+s_&g)_ZvLHGWjy-jOH-wdC!N~F15jQZAIWYY$fk#gX zPWJKz$}rT^jpUo2W?ZTW`GJ8sU&9FBy-tRvPtr`JKne7bK#EB_o~6L4fD!<_Su=GK&hTPFv zTu;1V&G+a5c$%Qzl%~Kk=)M#@IC6;A{aaI~6`8yk1cb_biY6l{8=y&#RO&V2q7zOs zFT6+7<%T057E*n1Y_Q(g+k@_GjbD0JTM{9$>wa`qF!0R_Z3sX1^&kCve%Dw1;s5eK z312?X|L6byKmOLQ_|liY^uYe{ASNQDOhb7Qs3)A1>PZJ zKnpB(zAZXOp|*P{#R;=7*?aXPANJ7$g2kh)@r3l!lhFA#B%J!L*M0OyJ^3VmnfBv8 z_H{TU4}TU)EFk-^;GEx7Qp@=W2D$Is$g0j3GR=bBLYXyQY5}Xxec!f~5Tk;T&-@j@ zXCdD~@vBr`dhw*>n0>n7P-h%mharo$G{{-OodGr7lgv2dlO>7rXKgyT?ECfB(_n z@TFhe?CxLjkdF^Xn^_I{6 zj0QgKQ$F#X?|RR>-t!Z`@Qc5Q0CHJny!UIg^bhCL1af9RN6$T7R5_+Z5~?Sp4Wxga z%m>R(X5%Oxa3ZYEXPVA=6Nr`5d0u#q1(jiVz;_{_xp`GmfO$Ug>W_PKqgKGZN1qiN z=NPMlvJ@+)=AnimQHi+Y7-&(?YM2rDvOu!Zi<=A;%(f)g$Jl{}R?ohMBk1N-#-rc* z8^7eMe#dY5k}v+XAN|^oI<)zdqQ3qczvWMT^`HH|@Bd+6j$u&`s1{u{9Vi{xl&>!{ z5cop#A@bZuc9GasyLo(rnH?lTQDADhp@A9U45t`Jr=UZWtP^Hk$6(QXsf`n>s|?Q}l$gNMA~ z+e`5AZ+P9Oe)1>2;bUL-qL2It6wONJqx|rF=eytYqi=ubcYp5>W>`_Fo;8koQm91q z?z9mL`YD{&M2KV~OeUIV8qYWG^I24;$=g2nWn=4cbVg9LWAB|?uwyxOrgYBp>1eY# z|57VlPrT|4Z&oyzZ6GFO(-viRSRD=%F`i8zU4XuXKF?FUAArr;a@XYgE>DZ2r%Iac zj-J%jf9Y94djo;iHEjG_IRpZ=!b{jdIxm%j8R>lpbT_`uKn>96?<`A9#2&oJOu4-_|H^fV%& z+j(N|;&$du#K@ZaT6=+gwtDB#neD6A)cbs{sjH#ag`QqLrP{m|%YEmb6v!%8PC!21dyW&spr24%5&Ro=eU(~?u zT0$#dEREY2yumR#HBbExa0P$_#-4SK%NY9qf9sa{OED^B*fQ!jf99us<6r-pcfaQ+ zKJ!<9d5-E-aDQN-XKpUsw{=EQABnv<8*KEtNkHw~1~Z?J``Fii$rpbie~abOqrd;1 z|KxA~oo{>lJKlXrr;o?yc7k!8?0nfiL z=Md_dz|7OZI*!ztPa5@iPHR2hFlWj>@zR&P=nWtH`h286;p5-%)KmVWO^+V^*gM|! zV{d;~_V>O2{eg8Xu-@i#>xP0kW}UKo-0M35VQh;~#__Jvc~Wp*-3iEZIhVHcywBmW z`8-~2?klWIv4ZkJrz$H+H5LUNL5yjBAYg#Kph=tjIv1E{3G;~3V!}pdl}iH(#_R$y zq5^mec^~T9>A+h($B^o5+r>DeuFzY@g7!V?!L& zgF%({f)jWJkF2IyC(!A!31%I|=2?g-Ez|_I$+VsWk$8SoCA@mXW-H!dM^8@5qSX{K z4x*?$&MSfVRY8u4;83eDBm_?C2Y=>gzwZZr=o`NI+rQ%<2jm zXy)0y63QGr)T3wkDZ;PwS_)YSO-vF6sqa$H(>eFH;7!7kSTg7fPMA}F<3d;y6*)m< zgP@EIc}^PR>XuQ9^NED7}JP!p)E*njX3 z{SQC%BX4U16)eY@9kZp72@+5zr`6LV!@>_KHhAR#9fNvj8u_Dbe)JvhOv(p-=0i!9 z&E$CzC8*ZZ(-5@}OEuAb_1x7WMO~Us3FU-!-JA<4iY=_r^F?_pf!GYlC<>Er;CBGX_8!ch>h z4L4IgRdpE2w@k8SQ=?(BI|}u{I!AP*4rwfj zMg*jeTJ}ZotSYLI%4s}xTnNC%!;22@&l{~xm=H9zc#h&T6|+Zh=e-w>j7btpM~-oncW@0=5V|RE<~$sT4Q6QSAw6RmZ7@362YR0PC;#kwgaHPg zZxqI$z*+6d>b?!rU8NCJ&*a<-RpRRLCi;$2=G3TZMXEoTPrICfv?q18sA|QR%o{|u zWbHxrY^-WKdiaF(eWSq6=Tau!v>nR8L-}0(Px7w_-v&$&pc5;hp5G%VF(_s4k7$x+i>wW zpcM1FNQmaXRuA0E``i<+e#4vZHPj82S$QH!0X239(g^H$SI~tva@`qlg1p9a0c280 z?^GOZQ$Q#75f=LemJ(L!>Z!1UM$bZY9;peapH?We3O$l_)`;u}xVkUON_QXm$+N1@ z>GR-uMdp$NuNa@`zUFB_&&pdt%+n!5FWb?16|Ac%QJ;0}uo>XKhd7_XYML~U$JjMl_?|huhs9mre3CT|Sq3O8ImUYdXdF z9u#21Lr8Dt<2)17nd2D3!4(aF#XKL*CwVOp<5Eu^3o+Y(Y!+yZ?pvWGIWbR@#rH1w zZ3?zoSoxLj>NnCTW2qH`dBUrs0p;kRcNRo>Tn)$b;SWFi{ttX0F#_mWQjBrl^nlAT zYxRKXI0$iIFOkQ>nNL;@LIyX-;~OK7e1o^zWC&(Hm3SplAr%k52Pn#ep`J=38x2_hn%bG9p$Otfqd^@M@E{DQUB>}IA!DCfS5 z?d!@wMhVUi4|q9c-036|0SJVU9T51!Nvr^aJ<1b*f72`8bj>L)h2G>-pmnLjYA4M) z;?@wE(y0-O)0+i&9rr(ELF9FF+_+#6`Q;Ov76pe^9^d6TOrMFBlj;e%dnWw&$4T3>Hm?vNv*rG=H4R*gZ9D3^JTfrQIX*rzU znq*XvkSYLJ{9LHPfxpkJ&RBI5)(U>C5o#8(A>s_O0#qPG{!$PF?R^UdVS=+OzCLX* z(yt!n!03#M$wB&6GG2TQbl({qbRfP~O(}>IUm}m5iuA82Al@vd{ zr23vs1&Rm33)hlE;G1BbMnUaYjDbVej?s+H*{=EEfj`?6;9OuoldXZ)ix2iw zFM9cF^RURg5V3P}^#uxVXDx?EEjl~}0+a?v6DEsd0a{=LHO~U(^Om=wf+Qss0MUV3)sR6Aj>Hz&1Jm?JJ^1YT&G;Wf=S zERz8EU?_Nw=*hPkXasd>H0K@L6jCq1#C#t7#3#@>7mJfFGvke6g z`^B(A|JMqzi78(_BcTpRs|T~*!HW%o$C-L~8Fkbtpc;@PGh8KMLQgd-3EC6TxwN+Km961hs0 zi(EuXauWp!kz51?G7veDK|mBpuyGqtjK;(UgTZrq=)rb(b$9ic=l6TodcSX^1{H6&i$+wXL)q0Tol(5K)Q(70glP3Wygx39+h5D98CUl!Ngcx*)Obrsmky z`2>^Ws9!@kU89D0C?Mt9d6J;J(B`+EDVpOY3s`lA1m+y;gW3qL7~nb(`S-}x`G7@@ zGblc1ZxHE{+FJg3nz=2l)SDDnu%Kpj%5kl)BB)nb16CqsUv-ctC7%KjErVXUdz@EJ zf>YS`=m8ge&6@%_F|XsMTMLX_E5;r;z!@7vwjnifi7)oilT?G2NP>FislDkTzZ~!_ z8I^rXrtL&1z?}h|)p=_4NHyX%3=hCd{>M9LF*W51{joZe<$w$q1=MqKjXWf(cE zXKxP~;LbdYDx&z&GhAmZQklA2n5udmTv6zN#vm;o{0DZ4G@*V0i2z0N!Q=C&^I~b5 z32LQ;sgl@u%U%SgFcDN`Wm7Fy=c9@OP9+nR1ODOtDoOUGgm#vC=6mSK)r4V-Q~Yh-MO&tsDC&H04jd}#8at))2VieG z{-%Ma3f+d~e8hddj&jKH5)pFifF1%J7L2Eblarv7qo(xwmch96!pl}x_rsqjVCaL< zL{Gw|xI@D!`=Qrv=J;VGZyFYEDJ%#|aoJQM$(w4BQ`WXS=IF^O@gi>OaBN8va|Q(@ zA4d;3&&3-Bnl(?=>S-DA=$o-CHI?`PX=Zk7D=i-2jc7ld4;d#q=>ZR(Lc64An>riI z5zx$MUPw1RWJDkErbxdECy^t-5M^)C*?T!Xt(?(F_2TCO4=J`8Q(a^az3f|EB!PjE zN&?B)))v&VoTXn;#HND8CN*KQ!Gjj1Ie6pZr|qkwI0_=%SLW+K`zy94QYPHVM*Zpb zv3Db|Pp%`nhDyTNtHvo1Lk*Us5yG1W^Am9K@rsKs&~#WJe%Bo5$yo1PDLI*A*x*ph zcmW=;&!gthXbAoX^QoT4>Yd}HN3Hr+_FlnNc=oLEd%=G{UvZ%xx2=cWBcvH+i=3KI3MFuTs$js z)#kiY52$lkJ&zq%-aVo0k0l(UM)yW;yBmgQ#sY9@=egocW7l~1oz80Y3);j|`2RE8 z$=0FOac~oJfEwOBDJAP8gPueT_Bs=ogL*b0S6IWyjp)(`{W!Kj%GgQ!x$rrwhwPG7 zf$umJ(ipPC+FG+$G4$61YQLpa$(|{1T6XntN5Sz9ZREjxsD9{MuE&a9Su@W#A(;Xi zv;_9l&-pf;ws#UbG>&1MLh7+J)zkxEbzvk>CEXts6IwisL3Hm8b0=#u6Fm)-nFQqU z9v55>o1n-FNVJ^~y_HDFqWQUXi$Vol*`NpWn&+Q=`)B*}{Qy@G1w;v4YbcxU+X_Tk zhz*`VuDR3!z42}|BbX>3gTIWEFli%xIV`-1aM&SN9sspBV+$mp9$&HCF9sqD1!g*? z;52|JJK)7UGB8ZDMZ17@8tx!0nGo(uk+P?FhF)uw&IF->bLkjTZ0Ye`FASex8PwBY z-o^rHpHl`l9})H7Ji;n39+JW<7B_I;f}!h>cpxX^BSVE9+te z?|ec}6LKt@TsY$nJ=faQsvfvHJrU}GX!H=aXz`pVk!V&JvWKW11xO3*X584o6Dui+ zP50{2Xi+gA&ZmGDz4&7VUm@yA9tsDY?rbgcb^tOcge>6TYyFY`;1B&jf96j;^UVGm zrUb7WRx0rX>|}D=etlsB`Ph6m!CQfTO1lf^rpGvXZgE+K%aKj>m8}bga0%3u*t=c% zB=kl*1q-zl@4~TG4>k^Fe0e>ZNp6 zFnjbx67&&d5&)su!-{^6?3|9CmcYSNOr&WTJ!U7&@qwOeJ|LRCJ8;Tzbq}BeK`4ir zkH^t7a1sDW0dE|EYgC@W7682SAuqI6lwc;aWL08;$%MoJ06+jqL_t&n6-wYhm`DeU zNKORp06IrT0tG6^d|1Byo!|JzH+<%A`RcDMJnXyZfUnVmRpF}#Pgh`Z_73iRTJ73L zeL+DNj~<`5+p%R-zXd9U=bzTBrr{KH+Htii+ep$>HS=LInTC5If{|6M8zn#j9lp#(b&=x3@F3s33g)J97~8?la{^ zN1ct5)W;zz@_`ob>tHSGX2d5eIM$?L+S`@7aU;9~^+Wo^g4Wqg--jaG=vBJqZh9cK zPOjLH;$oX+4tAUBao?xYn-O1)We>@4;5@ZrR3U~`8$6iSP83R&NE^2up}Wh-{Y_X{VWlLyy$syj9<7m!87qr>Pc7HT-86J_>Ds$m*HgX^QIA zBZac?F#aArf1*osx@1OAf7 zPQvn6kIHUD0R&$VS>)7r=5wkKRWhhrEnKt^*;02sP(n`vKnq}YK8BfX4D!P;dO(w< zi{Eu5%%@`oBng{Nj?=jwynwTe^f4vWr8}lH>q`P2N{$R7oqu~soH@@26_l>}p)ynE zd*_x|J&d@*bOY`Y-utS`>YKPNU&JK6j-~_LvH}MAWPJOb&C!<6kWFaU_REk-oBk$2ir z581|AtG}qeD#R)c`kDE%KsK2%h6-uLQ!#SRi}|a5(^tIyGhQ@)dmw<5;V1kY#u)?4 zp4J79X0uk$gmR44L-rDREPUpZ0|mR}!aTk)a>=Lj92KI-b&`?{HZB$wJD;!yo$fWT zV=$kZ;Q74%0E{$1P;{r7bO5zRH#Ex9&$#FdNY*i8R)my9)VK&HI(Vr4?X=|(EMH~;Rt0HxOyfl<(!#8^ACPfLfHICC!Q<0C&0~|T6y~7ETRXeJ zNz}$K(vu9sfi5R>pMy8(6mGk|)TbsacRqBk3xBvj_2^sk4cV1{w&q*D;kR5313-@} z7X-xd*g9iT7~!eN{Q{1EccT}RCT7OG3a3v;b{Nzuby_+(xsP4O=}_JEV_^j8U~z`jgbB<$M5`?-}0t6ZlOp2 z*1z!`uYLYG7;f_!#__hgab%ow$jGtxtFlJi3JM~u4$H-=s%sf+Z{U>ftmJr=3Ga#ucj-g|`Ith?io9Fr&o3^I;l5yqEyZt%G?) zDp9iFXVgHu9D=Hrqb==xEFe^hR~V~b)WUtw~V&Ey!`S{@uU#4`vt>y%m_r&SV;&d0x%+6+*Bt zp@;KP%@%h*8?@=`!{o;dGT zD;L+BmAm56NWU%1LbSJ85(xXg!tvbk!$<9ASn&4BfqoLyQy{)}Lj1gP`o8E03XqMi z)Dxr}@bUhqLf^$!DqQy`xc6rA5Qut?;c;=Q+M`E+L0?)NDU>VOjUvP9;NmNBSv`(q zgR4K+x^ESs%^EpJ9-^$;xV5c#j)k3SWgOk)S-N|Vuas~G(qQj` z@OeCL^MNwFJYYMY{2aeO{O|w4-~Mgi@|FMmm!0XA>eKDN^4|CTmGAqZKmI5F*B|-2 zKW=wEusg0??da2W!$Wd0Tat6%)6YBmJV*eGF0Jyp@A+t_5bW{L_D1wrn6@1EdF~J_ z0=JLDZ9Y0|&xkDiqlB#X(TV1$(WYa*{dgfTFAX_ zV?KpZLk2`jH>~ai0_)gw1SW=HvV-+#ssZr@AwWN<>qZJ8_Lt88Aj*=F(Hg39MB!M1q4ddWARsL zzX48?73`fv*TLS8IuQ_OzH)Tq$*F*Gub#%IjpEBYLm|!@dEU9$3`1w5QAdmSRhD|5 z;7a=HIgIhOzO%A{$#%+v-x8}QO*!xQH5!*`6bx(Uc^k+wS@hG+2NGrldYNikOnZ->YkHuwT7AlA7UC4Vn=M$^(oXq%@guQ zRAbrYF?u!QKCBDNnRtXNx8q;v(<#)^P z{HCw{H-F!EeC^kK<>Ab~ckxI6`#<&F-}eK5>+k&7p+wDfyUxg(bOwh(Z1fDJ&%e*o z?Y*1sWjtJEIb1LWuurL+kmO^kJ~mGR!Jl=G+zptvnKBS=G52#k1^WE&cV;>ZM$x&H zQkTs8&P4B9=Z1ga>`Myb#SvUE&G#B7GaXszyEZI36=9fAFmd%tn|1bf)T| z!Cf6h_s559r8W|Vj)J@;xeDETlevO;2rjip#k?~n2onHN?DxCYLO2Ifl&6^h^ak(F zaT(gJ9nY{YC$H+9>`vo6kzyXwSC0xi0W*X zJ<3x4*fcj1&M&yoNIo-kQ0fV)!0c#o0+V{)-6(A)(IgnhX^Pb$-&K3&1DM%#J~N(4 zp=2p(Lp>k(z)OGgNB-YsdXzuG4)Ksv5Im){m?!jsQvl~Kd@OKdA*f))s3)+yWG&i-&_I*>9d3&N-A} z#y}4pQGtcw0e{YxH`49W1BJqrhaawSe(F)aOT6LrpIMe|b%f}oPkay<8K&m0cjt4wM?ycGG)x|swR=UaP zGy^@GNjgsTVAqI4Ha2B&!!(8idPxvtk;K3I`+l%R^JmvT`s06J2C|YHP-{+B4$}a< za%k|J96e;5K6JyDMR&k4I0LJYse=FEd^iGhH}R$?@IH~s2USD-2p#we;=zTigtns& z_~TShNM@eCm~YTTEZG8=`nVNH`5}sdR}5~>>cvdcl!NBv#o%aCjS|$(-a*$8Wx_S+ z*5ZcQGxRX3C;f0#k6vjQevCsVp>v?L1{neh6zx{(IVX`jk^R;$dLF&zHP651`RDTA zQBI#ptP&W&%%c;p^JzI{i%g9ag}KvF%zXi9xt?zh-$;uT%Ic0pcY@bG_AL zDnZ65&hjXT3cb2b-ZUp3C}(vb5#?`W;SD{ z2ZFXGz7iopS1ZAmdaihYNfM)gg@IrC8G946lR_eKP^nqtO2Ct)o?K5ymo5DyC8VHG^R6FMj}>oh$cFMH%37At4SmCwc0RFyus|?`ShiE2dT5Z4 zehXR3S9L7)m^Tb45e5f_iHG*kQ*+D50xcd&Ozu}Ola2$p5}_sZDF32G;idyc=e2|D zazF|7oE_0JrSt6uf&t6v@9bI(6de&ZvP`2w%1>bV+D1VMFV z4>!tjvwOPqh_*m{gKGi>R+UEYK^bWBHlLjKNF)c#nFhIfa5*0o#h4>y(9;Zd#_7rx zci4#2}Oh3ycm7HyHj_?w8GSjJACSS^zl!8{9Qlr*Te8VfAxoMdZuAVu_~cQ zm+CC~xE=+dX3E8?@HR){F4~(12Av#8yI!ur4!lzX-~bU|gEN^u27mZ5R7g3AEeEA_ ztTqWv3Mi2qyyY6Q}g+$(hh7E7c5|NMl1lE(COwt$oxkO9nUO!n(C`bH@GDQ_ny9>}y{8 zeCVHf`sok8^pain*%@Is`KW`L+aEHHYhxv0E)tly^DHHx@o1zPAJ>XqmF^QA-3?i1 z6LO$;Bk{HR1f^X)6-MsR&wMUVvZl^dnEZX*Xh7G&jd5=v5Fgp8^B`gQD(~Iz{-yW* z>aYEUzxY>t-X5Q4IUAb!w00P6*gH+{` zj_OuEH`y@^t29);+6mex1WGziUC1BWgD2Lzw!1S@O-Ym62Q?#q~5 zo;Nw>dE+h*MFJtIJfk@uCZD(I{Bp}hI`ag6;djJ0SprY>HSo5-ozDn*Y(4>%yV z^w7vMT44aA$45?L{PvYgH6{&X`%!m86Jj%Eg z8{W|ar}OD0djig<^L!{@5L`Q+paX}pebX-CX;Agk#$6Biwnl;g^qh8UR5Zka0CJ6` zH#ps77LeaFTXevZ*Fhz`;X^&RosnL~Dx|=L+u>$5kxY5$lTMMIjg?Rh4=Z|O+bea< zB4ZN(RU!0Hg*~5E^N!-Z@Bmt1^z`VRsH)_m2ev8*UaUlJ&p*qH`N1o>&_dMn?5m%7 z;kB=Q`kANCd`f6geq}J&OHWR7OK5cG6K?fH1{|--uLrh$H9FvWf|vr8V$FDHpxGeC zq5GyscI%E6z>KRe^?6<)y#z3DsZGij`jOuIWrZ7lqu{%2U=KF%a1Q8g3H4Yp!j5?umf7M43O_8OI!{a5@M!=X^O*z@97JhINO%}?`=Iv);!ckI7+JE7OLpc{0qmEa z!V}Eg#`ZE5v>}LbORQcxV?FhVe+5!dp%>Fa3fw(RK7ukTYi^zz6xs$3-N8o}_S}9) zJ&n-=ga}m>q7T9H5vpG!P)}U@QtS(0AuV7<@Hq~A@Xcb+YVF}c&fJo!YF(8-_0f-g z?1L|T=wl!I*eCMO;l3(={x$z?uXFnWT^T5;I3!Z7W32s8&AeDC1Rh%=wE^zl3LNxA7c&;M1nav+~&X!zpVBL&*m zr}}?Q;n?t`R%BB0!R>IU#RV}QINP==H4g?Nvx<)&hadImSSK#=({E>_Gbu#ZgIzKL zdaEY^#8Lu(H0OF@@Sz7M4H@K&>@-v+G75@kn*%$_;r-M{UVb^Bzy9dai!bJP%`cSm zSKj;HkAM6V!{Wr?l_F03RmR&24b;oz_)&2GXgu;%{WTXmn4|+)Xi=eRY8&#Px{<+^c1YK8SSJ4?qmi8 z+n`5V0vR5{!+qvMOX7|kdi0f|9%5upqt|@U)l?Enu?>^plt?c9(Ni|@1gqpW4M<5j z^MPzhCT;XgexI*{Cx7(xJ_JUd9FTd=UJ#MBdAN2y`1$Faq?Uk$9@(MGR0{CP#_l8D zJK>QWF)fngCBZ<{#*;0lr7qBnGi!gBv9Gn z!MhNqi!wow_^C%Pyyp3*U-i`U&p-e4)B6@29DMHZwSWRFFp;n%MEk-`$q@mU9$tHm ztDSK0cwFic5^YjVdJv^2-9vZ0OQCTcHvzO6j$|4@B5SH(D86K^L4}kLy+tcaJ(Z9M zIUc5EIpVS)x)fb_D`$_Fz<`Ei^uS2nEVxpA=LreV3?4B>vhUFh(#dCM+QI9Z=dJw| zLIKt!+$G2=cLgLSd&u}FU7NL_I@qf`22}~$320)}VQ9p%WltE~ZO!o-xLOGAwxVAH#oQ&k!)65??Xc3O=f?YZ2QNAp}wtD%SP|wiaOJ8;I<~96@Pv)1? zk3RD9N73SfAr0(&a#}r;+?E3>K3?_k_!c|(jmz-p4R3gT@%fR_MzU2V9T0MAM>C!_ zL&zxfcvsI95H;T(P7d;+pvLNHzndiPs;%gPFJ@96L3?==-zmd)hdzna!ZBxGG`JkXngV5viS^P~=((`-rH^1riZ+Y{ZKlgLq_S)CH zriuB5{afDr#{9|oGfzL0{}Lu?HPNH3wP@h07W(Sh+Tgr>NZl+^ATiEe@L+oMztVi5 zYU$RSs-}8PU$LQp3@Pyq2vNzT*q(-N0p(Yzm;U#YNZDO^c0CT z_p9@PZ;x{H2jE(U68TUR_*=|lHlZu0sl{zfLpItv(RxJF?2aQye;vt+uL>@N4cs}(g|6%(xUVPmf-|+hU8X%zjlK%a_ z`l}!Kz=!gOa4k?;@|yrPrw6MJ${TDOJ0B8Rm$EuWj5hosli2R#~k<#>-rB2@bkV;-?BrJkz-EJ$Uo1`Fi$ za8aem;56nudU(`X`~5cg`Gh{s#m5--c+Q*pA;#GRsYoT;RkHa5Fj1qUgcKH?9S^6e zi{nUd08oYI62oJh1KYB#Svp}n1X;9U0hHUD#p34bqQcD{yog(qZCL1$UuMh9qZuCW zP0(k`^wI1w$miD!s{zBqD4BGj4mKd% z2ZFq~W^RwSB#WC4gaWW=^9=Xk+oP8W?yh@b`*Q zTgB{IR$10nLjJ^Si2_YY67y9JvFTyq(^vt;fXKSkLl%No&@@yl^^WY(-HWcwQ z57V`I9{M4QfO>q#5!Z=9=@^bz<%9UqA1qjM{$%j=@7Jz2vQ$kq1U(#o@PYxDXLKrJ7m!n-2 zKv~0UA&;wPs+?j)Y#q3$6ZVlTFx%Lid)4A2xc0dGC=#-kp97+i;PQ@P@W zPs)yB^i0P1a@voud0(L|#oT7dQWVnBV*$|KU}R8EVba@yu2#d`>0rT+XpL$u7l}=_ zO<)HOLlf)dX%kxls=w#G?|a|-e+@nQDo@qWy6UqkXN>lS4GfpU4qiQRP6xMy8A}>@I3Mc-2U&L1%>5c4g$!ml z7xvRIXcsUDyj@ykH9Bw!@i-s%WK<8}3tlGn&}QA+%<;@;+ii9W!f)lH=fYDnDjw*; z<1&^B@CRUBYHAKTlQ!MLKbQwMWqr9OE-LM%9-@1`J+gG%%8GsyF zeGF=!y_GozcHJ+ZG`R>}poccGv!y>+^NfK+|9v3w+@3e$SvQ$CTLu7hh>};Frv%+7mcIce-#*&rwS*wTDuXghfm)_@ zKs6O=w{&7J3CC`Qxp|X&D9*3b;D+6GRSVF{G`6;sIn*aTMQ)y+;)vlO)I)*hqVHgC z%Hpktl4%<*zXdh(009}csji2Ox=VlM=;!v5#amUhb+&?^Ao0fY7Bl@K-+7Wwjnx2g zhcST%RDt4NJ%Z06#>4q+w@rAwLWm=K>FFTakfUqSvbXOFy(LWLCa8sN0T?YX&kx#X z4XeC*1;*R?IM10+`8Kmx^5)g6WEy9lEx={*=s88P>`+g&ZOVe?O8X|xH0Xp})-dA1 z=LHKDVsh|xA7o1|L{z7N+2A3N0w@*y8(`r}Td=~bhBPTcuT>1=jM0TrU48pWE`|&- zI0nJU{DcaAF0Pbtngw`ES}92MgzD%~Y_d$2DF+DhpM}2R>wZfsw1LPfuC8*jBHqP=QH(H0<~4R&`vMP_dS^#e^7^IG#!iA}*^O;1` zlP?JUrQ;I21+tHxR4UIHXBxm~{z(m;^8^gFpJ**5$rgauH^CS!T^Vs3Qcqk1hb)QN zG$@o0cI&Xq3!te+av-lS2ke~O@bT`vaEMf|(NUD$l#BGPN5X`xTr>sq!QV#U!%sY@ zxB;n7A_yvCxzDC9G;+29uTE;25`)HST5D6q4QI3dgB}N z-(X+&LjHDCU}t0o(X&v3LypVU5g*Fc)11)*5r`}p(2oTsXZ?dGES5;)KyX$E_UR=? zN1;bbDh}Ly^cYRqNPwqn^zfZoJ?pnlGXk;jrda?S1(r;6l0#2IL$sw-D#*Ghdwt+) zl7nFSGoOQ(N?zzOdQm2FboVVj_R$$*Lz88udaef0X-^tcAwEAlA1P1SoXiO1u1A%r zxbv*aAPPqTQC34pkf`$+XMG4aI65JBNk4BQVS*k)w~n6zEZ_;Ad6vI=hWZITkND2q z52Yq2P>VQ8IA+|_Nm(uER^~Yy1QW`>Dt7);y)d=uSFHi9{M-G z=?&p{;~TTTn6!z$Uq8)Ci5YIM%{^w9$^l!Y-IwSh=NU9w^u3;y-koA;%h!d zQMY*=NbF94qj-ezYYI?1A1vs?HfxN#^w?QVEb2t@d!fR4`|?@ z4h|bK+x~5mGmT4+59HMVJXNfm3AEhEXt)gb`S9eNF&@T|6)kbe9)X>t`<-p)*|BsU z{egZwa5Togo$@G1$t{ouz*I4LogONf?0}76crRn1clV}|qzAn#UG|PFt+wH0Peuu+ z#G^;gJoC)kKI<)?_151IqR;!>&w10E-njoe(W!tzwhU9onW_f~kvejPMz8fIQTd}U z>FH52qQbLc@ba=bUT-@2$83xdj z0Piz29t#l9r-H^_xZOI4@z8y~$ZLn#`5VhGyzno4)o=QWFaMIydh1)Cewz2A{D{oY ze%o8W;PXE>f9LU6-t)dsell8_2x>+T7qfA*R5N>ybjL>%+<7-yIcDgE#QDJCq0~`W zd4x+w(zWtetn*JLJxK2$=Y1jJ2VZ&P zuY0j`hQ@f&voNFsQXNR}X%#yW`F-Qm0GS$eCS z=NTv-)}$ROh`L_K6sy_DH)kfQ~%QEfls%m>B1i?bUQE*VD=<*;E$l&U->ucTbfAS>%_Z+q*j zU;XNLeD2#hY*r1}M^6Gq9RlS*vm;N%C}lizM6vH9atxpJm14vSF6-O&a^XpsQ4MQxCdJ?iLV?pN{sIA3H=$C)xJwNv2Kk-+-?+4%i{$EYT&;9(nzwi5h z`0xG1PrmoP?~?}N;^kx8Abo13}_ri&VM+na_Z<+F%nTOuM&^J#oY58iXs`=6#V1)aVFITL%M&loH&eWGUybluQg=DOtP+s{HkX3fw{2(oWTo0WtFe)&D`4e(d8!_>SoWiKl){?={< zY6@h7L>WLt>cbvIaT3BkdYa-4q_PWgvwAObw_=ArS)cJ4FMj23{PKV8U-|a0{>{HJ z=loB|zwclFo!|0JU-x;R^Y-}>ViZ7&dMHaS)shWK^_ET_qhl38Sr+$Xc7kvWaYH2h zp5OgD{+s{uKYPnt@>+tGGKGc;v&S-nA15;MNr7f5piZm6GFjG*ko3e5s){Vv=YQVk zBrU%oYU$Wn-7mxB@Malq8*5*-rm{}IGrGXk~d+CTcoKm9X5_X|J&3%_VLfwdx|=%Fkl8eZJ@)d}=|9Y3-m=(|2{+FU*P*X@4t z?|g55V#%NWKmOdm_lN(J6=}s+C?M+zs^QGX4j;tM1WcPvJ)ip0FaClr`hs`lcgwGP z-D}H`J&0fY>Q+(2l+dQHZ~>w-U%#xZ5zTI|>z|@g_fZ<@>T(`ocq{Kni6+ z^3+rLi9&z($Nqjkzwzt7=4-zCEAu};{ptVx&*rE90qwG*;@h2KZO?8xrC`aRxNVeQ zZS5I`HYf42Hi)3F{hF`p&mMZ`H-CM+vu-2-{?1Q~?|aW*Q%@fyN_7rUt=$4NL+Svg($2&H zv6QNw+UnsObssO4wjl%!rCx_M9U#?Oz2B&(_ChSsPS+VO0IALwYTRr>`bLK$o(hsF zAjUEt8=#YYj)xEy&1}I-;Y=`}X`!9QOnF|(ovp99K$DJiNbh>n6+`R!>B2 zwGAhhABXZk{cqouANT$F?|A!{f5{hp(HFiWuupvAlYirH|L9Ns^w0g=yMHnNhjw|8 zA%homtKSMJp(Cpi!5DcM?Q+M`TT>r95_7*Ci+K;`DV?{I>OkeWNRa1KH}eccMCwn& z^So7F^%N8YYk_m*Hmw(%Ja!Zw0TdhhV7DeFe)Q~opdypMn;jl0AcBz6vpnDcR+RV| z&j>a+Nx6*Gj1nP!-A;sN@J#_M8v-7og?G29p@|Jm^`LtP0pAj|(3E>{06(pes01n_ z#f9Debvl;nae^Z`gUTX5crGPHPW2!qzU^a>`OnMw&t^aKv%g@5)7-k?tq4^}NoQei z%d+cLR_his=sxa3T3r?7<+twnb;0lbj^8oCN00uXpc4(#(d5^t0&>Zo*$_2|Q{MIce=Wb!_|zwP@I+ ze4Rov1%}S!L->%B9$p0T*u+dA*X$Uj*CydO!JDP@r#|zoUz%=712wN_xj3VnO#M|s zIolRr%k-Ru*H0oA>23QMo?EnlA{;stl-uXBEbdOTgf~4!UU=vE*m0_iop$}|Kk&g1=KIo_FeM)wP>;vC02G2&^%%Wh zt**$s|EZ_G;2od)&TskpZ~NA7{N``?7xOpR4L;a@`e%OryWjQwfBAcV;CsLShd=m% zmyEsgd=$C4HoSVgUps)geVGpr)!=tNT=S>;U-rdc_+5YQFaE=S{L=|{GCLoRJ7?P5 zeCL_NPG<1%TVwsjw;b?3C;PNO?oylI=jVRSQ;=Zmm!GFO89XMPGm2=iuNMR2CrkD5 zUOKJz*nIRooDVtEHyq`kIqVT0r=J?Pqw>7F-}xv1SYF2ev`Q1t4{ikMY0#o!|IJ|GPiwPa~Ws zHW{xtALu15qxAcozL*okZMa@Z_(~sCX7o$o6$^@fO6J&>j6CH5@H|$S_7vA0U!Py*(ya4?xrU z%j_Nl0dB>5N8+DM5r z7T~w1Eebo&FaE-Jyz^VW@!Q||O~375`WA$`e(l$O{m=Y`zx3Vt1@>S4q5Q1R_-;%y zf1UH|9p-r|HBQ0^v2Niw_1?k=lmD6z4n{q24jn8mmwNWlIgChh)Pr$N{K4oqQI=~g z^Sn{274J!_C%HbKSHpVx>b=hiJ!d}jxP4mv8UT@X<$9Zs@(DSh-mlnv?0`BJhNX4J zQe%$v^N1I7iKfUtcFpyXg?dD<`cS+Q-Y{aH9Pwrx^)hsu9?ID1I@f9AHlksnj_r;x zj%LpYN~jExPO1q4&*spmbr3Q+8X33JxaFVX+{OER==%ZO^JDYezRt6I20NNMx*kdw zd*+EX&+hWX)!vQm93BcgI{$}1_FwC7%S}D_Y?@GeO+{OR>28#x*)enk18%rT*oWSCxiAy-LV9CpAUaG+Zjy*XpO#8 zmniWrdvHR{3XV5aDA`?AF!*-DAz=`mPNUs}=UpdZ3TtrSoN_36s2G+m0hpHL4h3$j zvkMzxrb++kx#ymH&GXM2e5}GDt6^aURK956iG4ptE74Je{Cunn**WzaPF0arvDpFg z9B(@3tV$f)%QRpiqol@3`_z+(-P*!58SLt5!e9E!?<#TrP(6RGz4p*c8hY70loC>X z*|$Iw+4ayuAfQ4p^Ep|{0GmS9(~5zoeI^i{ol@eo)pDfZ=eqQ|EF`S6y5XIk8QHwf z1SIM9Y4kYHpt)1CgC9N9dGrj45&9PoFy%T8>k69(d$1yAV1x&EG`)&MIoXxV5Cskpyt4d&lnRFa@PZ%_$2Op z%%Xh)r}_}$D0Sz9z#-1%EP8Q4FCcpudutQXd9kl&&|A0jQOT#iXJ5d7{crtf{whmk zbRZB@s>i+s+;@faj)U5oanF3TKowML6jnQVx=~^u znP+*EQNr0lW*s8I(f~+>zLk*GYRyZEGNxTvolg}eF~{x_QbLax=*fpLUlzLU4FeFx zwnpJeWRl$vKZMlHHHPIw-(>gvFOV#0<0lv%5OLw?i3rGrNN2dt-XTzA464+1Dy`w; zICOXpvvsz5*&x)j6^DXob*X1)sE?j4&q?-mJojAw_vif2#X2{sBbZYz1Q}TuWaU}5 zDh#0HBIh+hCbjSZ5VU&6v6x)TFpn?iE^pZ8mqkXSR)=_}ZAB-K6HfQrd~$yGFaGjR z{DXfKBfnKvPfx2%9tA&0HF*col+GvAql6+n+`TP(bDT|N-|kmwKp#+S zcwjnZ6ZIT7Bv&AI4#|D!-y4!xIVOAcSi#)Tsb@$p@}c0u3mY(Ot)m{fTcBZTfmaV# zi#K*XEl2&9Crn4m?1}wB$b2tuoBL$43Frt1H%fc9^{aWt9r^sbNWi( zC=|d!vsbVN;FL?Tzx=Kri2Xh9`T^$yP9>!$uhn9;DbMkhCc1$TL=Wj>P{CxNkS59p z7P;ATG?m+zHN!9qxPr)ZGP8RGYzoz2lkuX!W5sK{_xVf|5@^bht9qc+&)t}26#;tN zZ5tke7zvYiA3l171YAjw<59}^sa$!LK-dJ2+33kEjo7OPLRhFe&s)rR*hz^YeSVn@ z4+}iLWRQkgoItc>%_X4(Z9pJNgj-Tz&qd8+UdhrGR?nELlyztumsDLGt6G0lXpw~5A4K{x1p@6;%8*Ai4M`hrB zRt8)-0ZyvZr$7UPS^?%Oxcuuc3huT6zLaWCBxQ91lVi znE7-{>bYpoQM#*wN%VabHs>NYl=K_B0!9x_96>dRNY{Bjq36y$&xT}HrVKO>=Ywaz z2r(c2G`sG3N95EM1|gw=j^>?@W95i*-XZW6p91HgF=RF)BNEmrmP6CVKgaT4KFc`> z<{0wFvR@G&dXEpUNK*I2TgwC4VtE|1may*)aby>jM$fe1OVT-sMx% zl$*Ho!4Fhpfoey4`I`W(o|v513w@bAMqyQZb63`CP4?nh@B)s+nV*&1SzP z-1M|Ou~T$h=XvX6Prp*$7OhJ$rK2FX_*90vLy)q128=uaMSC(rl`3j(;ks79 zFqj>C=2=M2BiH%kyl#MZwzon34(FQZO%ElE`n+L7lZu*_@TrxXf^DbWRKUuBs>{~4 z;}H4eKspK^&rna>;mx9@CGovu^bjC(M=gtDr`??=z|(BtJfBQw%Z?B(Kvi|&TRGt#* z=X6O%SEH-PstQuiyvT#R)xjischbOgk{|K${By5r6$taT4A^MW5)nvXGl% z59ed#;RZ%HZpzC#_iGsM8EwFtm)k-)I#0EhY4t!l-CZKBH1~_5LpSn0*0qAQ!IBET{ zb#K_)r5p>*eB|52yZpoS>E^@W9`VyT^AlubYz9suMv3H{l_Q3?Bc@l5`ibfkUqgsz+()O{Tf$G67EAG6msIZocT1f@W*V> z78h@t?1D$nCT^xeZT5gzvqI=FmpICkey&lB^3aXH3N zkJYTrc#xJTtH$b4l};gGfVMt%i(fCGI*NH>A96{ku+>Ib@bOT{VzDh2Sm$GUK|lbN zq8YO3Dof#zND~n2*a+a9@cNFRLpw(P0E9q$zu!2MPdyvF*Ac+VXxCUGjY*w-H9qCR(P!i)s2Zonir^|LKog9EJJqWXI@E?6S zKf99=z5LOaNk=h`#Jk$gG+?&?D3Gt-Mlz~ARH%5(8E_~k>t43w`|!Op}Oxl_PO zao+NCXuIYo#%JLvf&B7s9|s>dTKp17lCq_rESv#B0vA_KsL%fa`l>Jc;xE9-sp+J( zqQ)^N+Ob$CvMHBCy>-BI%(_SbPR|Ac znB%A?0jEMlBUS$FHzM$Y>x^nv{>1AOAJ2E_Pe9NF`6xDONOH9>iRTF8=$ZMn#A%os zdut)|JzHJi3oZvhWy^m(0dcCEn#};_hemUVX3^rv({85Dk!cy~x>ipP&NEjvIUNw_ zH#3(+;AbavT}O}lD-3{XF{W_!kVT2BfzD^}%S_U-i76-^^$=7~97+)y%R}kSY4Ifc zjvt;FuY2ul^5-V}$4C;I4tQi9VW1NafQWiXs9PPJ)MLeYd?otq^ zaNt*VyarZRkHe^-xfjiGKDcRwJJr9=S-#%d)`<<3FneJ*a$rQ4(&sS^EFsjFm&86O z0tfDxs?(hU@XO_18J#9Y(Vz-#xWMy4YGj~D!vOfI2QOm_Y&390=Fhr5^kIJBb_f*E zcpS$lO*m9g9VP$~i0^@(Q5$FHlb{0|xexWA6ZJD6-Zw+19xaNHp*(`iM)b(3Wv*V} zXetFVT&t(ezzT_P*7C!iufWuUQCAGHg95Y($*?<+gU2fPsgOBxgw+$hcCLrZ^s|K=7eK^nHrOy?4bFh%L z_twnex|9obJCi1DS0~<-a~xs5sU5o*pPQ9nyQ_^dD(N6&PlgwdjW>dlo-6;v638kj z#)Y$q$L2F{yAi|#_Fz8JxV7nX&UfP%Uwq-k*S+xKi!XA&A3gf@4}9U> zC7jGP&P+Ouh&&U4uJi6V=A|+6+D@gG>~5#Gy)*Z|kG&b!aO#xPBUn33<>eagGti9c&>!$Dau3yWybJ1X*0<#i$3WURCr_7 zxxp{4M1)k2c0GYaf_I3-9q|tOPG%djbmX$!5}usT$S+ChckZ2uvm0%rhbCLygn3Ed z=X0KkG42}EUz5GljK3b+Z0G@e-hw;MCmX2edhG7>vF|q|hg-Xv#CKFSsh;&bNEm$N z_Gu}|62V=oMN_Gv5IPy3Y#+8$FgYRpthc`9EpL94f7K6?K=OAD^2eX~9oC0F^kG;? zSUL^b+VxORr}40YMMuw#jPY|srmcG#->_3?$*9b+6#8?71a~cs2V0BZT~B^zP866g z{Tkr)Tze@Hdft#!beGc?$?1la-YbRQ9?WFj`ee_0Couiw zZ?t&lT$f`vTRjCDdVD(^3A9UzTx zO<`(Xj7~sC=)=O&sUC`|he(Z?4|-W`K>4w+Z%Pv_K?~GnhOFW(aK%p_Q;rHoolmXR zS;5l{a+GWj|3p2b<6M%F-!Q-Z?QhF>>6c!5>D|Bdo)71DSZ%QLInWx4d~7U<{4>m_ zi&c`t`qx{|M`g_TsI<@t3Kl!%Fvp7pvs`wNJ zZ-i(YE^azO431!c1u-wnq6nD2FIJ!}lMB|~xjKPksWI2VmL^Y|_#+k6q00i$k;%sDX@~}Y3&up} zU5{Ai0DA7%WGE9m1{F6E7LUQd^q~*;-!OX5`+haA7nI6< zsprHLDC$Epgi6Da;KaEl0L23f|A_S26(>zIP9H-lUMGom19QH-&51a#*&EqZ_2Hsq zM0ND#(N~(`3o!KR#N(O~D|noyCn&)KJ!d`=_AXktT=70OAF}xdchz$Ck zn2(BQKoC(8b@|LG=Tc>Fsy9d2DlFnYpCooZWum&I_|F03;e4h*3!0*bit*t-iV_$Y zb>(CZYV;Nm?jsu|s|Vl+Gu!!KZi1x~yOw&U&`l2s zsP_q(-K3iyAFw(pGcRMCSGL94UF#u-C4@j77^8Dyg5q|aivFjmQVdbzSO>`yFPFq5 zGBOLfPr+maU|D8fBccQn=pfj)5QGia@RtC%thBs~MmM&4Jggwgku~C)E>sz$)X3g~ z(G?w??*l?{cwz+XUL}XMG6bMoe}$2ekI5zo_V6p8x_WqIADfTxO)oPp@hGvuJ`=ie zNg9K?TnLO+9X$F*dX%g{kTNu}FlOQ;!;*Qf+7f%;EsdPHU)9h#&=ize=$X?Ba3IVl z{*?=aFZ;vKL67SC{BR?PwW|#!s{rt*V6S}C$fzUMF%88t+?mTO_pghAd*W{Qu8QGC+8#HNEt-oxbmfsjT@EAcrX$^(KWr7 z#7<|CtK#D!XQ;69m8Bj|IRigWd}5UeMyMV(iFA>4g-glay9=bb%}@>%r`#z(kMf;) zj-JxDJlX_x=9r#SYv@aHBQrjmmmm~mLi2QJ7BM@V)V)nFAaKWHIp7y1In%p5*+|gF z+=-gnZKh$vG~~0p$&2%O^I)x5ARg0GiujMhcz9N3KIT7q^xpTqfAuslrwOB{<;PFO zItIZdoV_d7Dv~<+Jf6u98fZ>jd?n|aGjKd@DJJLojDsRvIbsEcgS@V>1_K;_emdtH z+xEcX4bok|C|z`7Qt>vBq$X6RtvZ$x^i3#AEA|}iO`on(LEDkUV4))gS4PVk=~kTu z2EFnIk#k4ST)ew#E!+Ze(p_l~i2y#pn{|%Ei6EMpg>}t`0H;NqV9~T|MMgtxjtJnq zaKg#J10fUl>hT%~800t~G()5BY)#7%`eiu=?4!4da}3aP_Rfb~olnl^wA%s>Pqihn z?r7^+M8IQ$<$+@0(`v&rpH#NB#2JQCb_X9ViYjPj8Eet~aT{k&#k+S> z#bp=Lu%}_8X+8n?W(;It7n*GDia-VtP-STCx#6j0UyVq3X)JHzt|p;YaLCKQdX9>f zWo7l$bK!F?dafM!dc1T|c!f9T(nH1!IiYX~Xhn|7b{jLH!$n5%bX4dPY@)Y@jCMMd zD`2vY=w`t-Qf5BGz3?R;IQNT14eL8$9CePB%iga91XAXBMd#Fax?CFa9*_XAX*04x z$T&&;#R2jxJpr=O;<`*>dSSv`gzB}sXD-0l_N^S$N?J;mo` zPkKO=IfSE!Qwszwz^5V6NtnwKP?D9>W=P5ZXz?Z=yVcTXs{6vN5r*4%QN??nPRSXO zBJ?Gsew{nzh*HpGiKj!V={p9@J=oF;nZ!Nbu8Bb6W!-2X9a-v$SdZutZ|Q}T9(+Yk z?sCd8A}6^7XC{>Hd`8O5r@oeZrTLUCMF(%&l{7`=RgWcyp6A1+RivVs*4O@;`CDv!4Gp-&xnF({d+gfLr4385Y=qYg;9$2MT!?J?C2(WD^tZ_gaWwq za8&%Q9Ole(vf`K}{%V(c2y+W0c-gmrPr!le1?tR9>bwm&!s?N!4e$Nh`K*w=+S;i= z`yeUMj?N^m2ARY|sm(%J^_0BLOLbUE?DG~M89U?URKWE-%!ABB;(CB5eWh*y&VFa! zCpCEtNTx-X?1`Pa_CUgl!+8jr(qi!klZ-wQH6Xxma~d2>D4s)P;Cyhmnt}he!UbLN z>&Fv%8kz#03CFnG(}wuilL)S*Cq0f1X2)~|` zkGzsC2%!s?k0|iFjGLZdS*Z2y^THc;GaKF=bhvJG#Zxk?1vSqm+nLWuQxFMj+~-4q z)iY1g!}%O;%Z5@``y4!Ub~FYVElt7w129K2;~~M`xXiNZ9wy%-V2Jq2T3n8t!)Vwm z$MK_u#(*~kn!<_IT0P~EKcG^25m(Qg8>h;p2f&+>YxeZVz%B`^=D~Gj(B0%4E=wPo zr7*tH)e|6bE?kivtFI{S5))lDlMvu|bTEB$lZEP5mD}cZnPBNy1>z4u^^j^}T*GRZ zcevs=kgH@RnY4mVCV)F#Nai@|PD>?kh3pnl#}Ghc>QJs6or(`)^^n-QJY{Rg;04k^ zFO$&LnZxR7=}+w+fKl0ulx^ixAAWc#vrV;xbn!Df-^s-B3gJj;E5wd3D!IC)kPd^KuJUgRt(Q{sHTDESneA;c*|13i9nbHYze2tmD!Tn z^Lg~d@RK0TvBB$M=HvUf8h1VnL>_>`AJfwUqpb6h9heo{XgLr*D_mVg$3{nHO|LMklpme zhcNZrAF!RLB~_*7p+GEOR?ih96xl})J`wk8>~Ti4K&l}{&00L5lfC2;T?)}&Gm0|Cr&o(2-&2r+?6y{}u@Cw-bh6{Kx*^CU*K`oO&1!Hs3;f74 zx0yNzRUMN_h0UIM#$_&J9|h+UaM{9ah}PN-42J$ZYwHTs_+6mM*CYrZ@LGg z5n>7Gk>3kOtios*%N=lWRL}DNXKov`Gi{8D#FJ2@S*DbUn9?U~?#d@<-RgjL@PkI& zylb{VcG*-{xMQ-r_6Qfkj;ljMlV!kjDB)d?#p#Y2@W8Rh8KZhoOJWOnFu?gn1WgG(vReHUo*I-lA!*bkMO}m zBEdsFlM(&~)dO8%oyO{+NI|77XcLvdtR2p_bkj2;my>GRrLQR3tPn3$D5Y}1$MsN8 z6wN#th>ep*wV4mpYGsE#pWqxYFJ`Q%7pMV_?IA{+?tZBCs(QYkw1bg9FgQYxdgY4{ zi}!Xi-(lyHihO`S@(`9|(`f>J2`Di z+w7o_H?L~sbzy`f3+5rNfqU?e>5)0xRB=AH+X+i}+cGl3N5vTk0{1v~0ky6jlai_{ ze)Rl*mA!$ICCQFlr`?rN5-FpRl=K7A|9|7k&v8d)-tHk~imHl401k%(k+*tw_RY-i zF1|U$ED)nzH;-c?`O<*l5<1UBI*`dTy`@4gwzA@rEcj90G4Ulpf2(i?vbIgH*S$Q` z1ABqa(_^pOUH;E}C_+m-_N!qUcFSt3a6tA!0ke7<0W@DdZ@0av8%X8BOS=?(=;eci z$v7VfF`#z5iYTsP04Nf53H*Eh^E60-o5x>E_fK%R<&9jDN(@Eu4aE+}hkWi3=Z+{W}nO$Ch73zr)}ebqun5O^bcP>C0l|* zj$Z0%u#k2c53>Z0z?skSTT(p)3J6Mb>CAe+IO_3}@Zr?F%?tb0<2+?)4O&{Y>Tz## z#yX#mqa$C5`p4Hd4(WWWZ&S3Lw%4`^a<+M+dxxs0>;xN=tRIY+eoJ2*=8jP!Wvfg7 zghpzG#)U?;`eo?EN;ZzBu}7|Y_I|2I+Zmxj?mVZ)Dg3SH6L%V+ZYoeb&pd4)F2D1? z%`QKmeT##uAw}(mCgBpQtc9Q4A)%vW`^lapZJlkLOh3u)48rNepaKt`_&n!nPdSX% z*rEh0NR_P>a|S{96@nd>$_eI$$;r5A$~s&lg-eYe`2!7M^y)fpdF!^c1$cYj8I> zhCNm^(+JV#<7<-&(}Nb4DpVWC8Zbs`jAstgQmK_l z-)fAW#ggjW$bKtf<);MU=PZlDRx6KD8KSBQ zQoU8-CEdyXsiy(FV)8tLN>{aRc>Eaq5)<2?wA3ekBcjp6%3&Z_SvfwwGvdrQBgS|# z2s_DU9T6nD!!MkKB%6s&4MNgVF5khbXHFiIgRyy9NQ5HnisY^uH|06yDdzMX+~?^5 zr^B*+P5+$FAOTuA$YkUv&+MTeS#_;JeJgndBobea(n&Rn5|16wU-RMa2vGj!vywg( z)bOeoO##$a3p?@wp8RW1n!C6{lt@`V7iqveIK~Q1klZqco9yNH9njnG%%4Z${eMk) z?Qm710-3T2jvF3U0Ik_0wF9avI|+|m2oMe(izE0FA3gZSv&#mOuKCq~i}>x(^h}PQ ztA`yKWc;xnIElt>7a|5cLTH=&s-djQlCnpjzumX1lLFMv3f<>~!-}LHME&wA3~TxC zd~~3v(Q?~fd30n$y|2jC1*2HRWbukDJ0UGgH@ZCth{&t~F1E)6@~neLjy9vQi51~} zA(=_K3txKe(`f}<|1cjCD)OlmU~G;dcwPlajJy}Oi5U^z2|Rk>-F(FK{w3*jC{f<- zFJ6%NSg=&5jCyWk4mJ>@qjG?;eczPdIjqaK9sp^`7*Fs@>)y&Mb@wKgjlY{+hSIQ) zkx8pKB|5<*SowvPmUAVUonyYMjL{{XyzLJ?DBQ%EV2miH2L*U+v{hnT26*fBOh4U2dK$J-1ylEopr{bN)cq+ZLH#KoJ&ruG#ZyUDl>)do zjv>AVaHv&A8H*8f)r}sGecXI-Ts6ZuoR1uK#t}UE+*<9?edjX)b~_Es)Bo2Lg|E5P zpg~&Tk);HTQs8+KaCfaF$;*rX8t?n0KVcCcvSz$lNemlazm)S9*J({=q7+j1y67p@ zdIEBbRxI3`BNCSd>cLUxrS!RJs8oDAGN?1w!_bPdwsv>qvf2-pnss*?mR|f62Hh_b zZrwbm2luD?ioO%Zky@i4Nq>XnP`F+(uOJiRGaouEolCMl_*GXa35;2uwOfW&CVKZp z05Uq#=7iD1Tq#i8+c5k_tx41#3rzKT*i-JKM{x!}3jIwK(3Oqx(bK>qWy!-D#FdH< zG_S?n|I{PP6A!!hTy>~TOx7sX1+Kgs!viio&>6+2r z2KgiJ0*(iQ&S!H-`qXru9x00aid?7W-+XLw{|>N>%mjNvp23eq&rcu%7&GW13&+J; zRZhzzLAC}D5Ltz6n0G`Xw+OqwwqeCGc2BTI(Ct8=d2yg6Yu&tOlhm{DuO2B!M0P;X zt277Lr>CD7Nh$=acm(O^^i|NaF(4i}-8}V4&&Y_-BVVq^*nHsbPblI$n9t`}Dmtk0 zu}mW+Sf|;8$8bO2PrMX44wnb{-WM)%Y~b_|ZAIOJuU$QhRzT5Yta~`6w+>+q^w7~I z|H9v9sF0uR!MEJ<@t2NJ_19CiSOrN8fwRi@|tQ>Y}H_v(MQzhp?Zrl$hV`FZ}O$M?Z(VJ+SGz$SS%+(RZ(i{+nEk&xeLlTLT*}2NH3}hsmu{PXebI)VirSDS|pD8H} z6_Y7Ll45`KRO-)sau99-r}`wE9=o*&@&N87s3;@ZSkoWNaTPy)-bBZ1!-vV?5!E*UMdX42iu_u>&JBRr1!-}T-`rl| zT_i+V1H_o1>LHD0{&8I>RL>yV1~T zXlnLnI&XVce(;vq<-N|Q?8iuSqH(SQWi5I2p8%L=5H+$xK}MT|s0q5!%b3l4hY1KD z&(DJDsz2^Z%&~$^;%hKy1wrdg=Jcy4w83|k>|3B}?W3r_<&$sij&Cv{ z2{!A;*ee&VXFk3S5UjvQPgO|)OZnzpU)Rh*d7hrHk1;xc8p1Y;)*XH8WLJjsMA%x1 zvB=|liqL|<8diAD2k-dUDP%5&Rt>YELM`Lkd}Jr3hN-I&5Z}krPZu6o{^3I|`u$*+ zYV+&|@T12;z=cn;8wx)4{3z;t_BX)fSsO)_2)hN9E=-3#K&pQzi%jKD``^N`n`DKU z2BA^6RQBMp;b#yPJx!mBX@YvfE=L|c=ftv%uAaX;DyBnm7En(p<^g}7(u7LKe)Vb$ z-Q;CuT&_n!$(YxU{*C3q-X31oiwDh?$k_SjoJJO6Tm|NXxK zH6`9hE;_eH(nT(@ZBj^>@tysE33s z>R$pz&yN8}oRa=wd+V(o6xwprV*b$oQH_F>q^@6_F5w-|%}D_xR#@zOn?T}?1w!4` zVg~foVJya<`Q*e$G~OT-GONeCuIEo?{z^vG%}Bb-DtC~9xT@kkc_ilBIN;05Q@Wki z(_b|4EXmZ!Fz?#Up?%|puMB;XQ9sY>HT^kCP2P}bdl66i>jfa%jHLS)c1Y}BUXko? z@Ky_&gsdjk?y;Z!+-wZ6*WP91XO((pInonh*N-LQ98#29)ww+YB`sQRD;>QAWjjyRv@rI z1;p=s?#=U~YkKjW5Eur6Dy{p#*l+$wyo_061MgSE>;Y7re~`|PbNsCXpRklK9FZlr zmMVI!k1%8m^6H@^WU%yyR1Xp-=rf+qcE+O{`XFo=`cnG~ZYCL7)zSGNn-?Gnf^O?E zCppbBlZ{j7bArs*3A^F1(MUza-h3=bg=XXt!?Wu7mA#SNw2Y#N$kX?~k`^-S#wcI* z7L3~n`>F$YkMkup=x=eD%bkz~Hhftb#^Z z->av1tEwtAdleu+kMkkBEfcNC6`G#HTeR{O+cpV4_x0$q#ju3<8i_>%6i|kN6;eQ3 z8h!*QI@!25O8C&m5X-K7Xv|U=1&GsOP0_?ms6nDA8H%{~dGr90uS#K1P)K-GJoDT% z6ZJ}3r=*u?HHs?#D8}yCMLZ6&$0oR2*woW&#U~}g@}(Xt#L;%q^Sp0x`Y-e&ZDYmg zQT4!0?oO!3jv=-MQIYD|>wnS&|I-#k>%eCdb|;4c_~^iUQ5E+gsBZFjGgLGfR1kBV zoF@bPhJc{2&3P+sNct$%22w_q0O%;h4L?Suyn>&jFFnjFaTVXfq0Ac1q^iX26G7p{ zf3CCa6nP;c;~D#NeCA`(=6vRZ_aBzjmbXHujM;ly##>Iu1eM)bJbrBR*!RM~v^NKNh!dJ})zwP}_9XphEJ$y zOXyW%kiAzvs}k^g=#$Ub&aqE#jsO@J9_;&pA`2B+8}YB6KtXrIcvf;6dFbPa?azb4 zcZV1x)zSGBJP0Zfj~;FP!_QN$^Bpr!sq<`%d^}|&{wxYC$QZ{(0yY`Mtw;8=_K7M) zZ#|eJd9X41P8s9$cm|yY;`x~#jKzHuV>{3n4B}RG4o|)22K-MQ5T;D=z7Bfe<|oS; z)Wq(fhBtP7b`Fwvj08L|e4y~QK%Je>eox6z&yj)uEMEy?<#asG-+CY5HKWdt z2IqtJkigS_Z4jT+=T+2bbW)#K5-PqQ?9+iNMI}u9%Ww%#CP3SuhZZ%1HlFOTXrnYn z3q*7bcRU-xNE`X9>}CsD$b%TAF}j=S_WOS6+UjwHut93UW2k3fpBA{A%JEmgaF2`-wa9Cl~Bio=%^U*cD+o*YJk zb(uh5eY%MadmiF7I51CvXx(6u4$h9UJAU#RR2g|gWV~3kv6|>W$L@U@Bm5bK^~BdH z0d(q{ojj4}vR&+cpaT*1vUkcJUyJ~TmDSIq3AUQg^%HdOBdgBKp9*!kw z@aD{eTZ)`FpXixz=E;IGj~r_>Tt?c}n~hcY&wQ3|9VU0Rg-_TTXsyyvk^52uSi20_ z@u6m1$>Y0!GUHbOF7o#~3Ap3K$cn#463CIH0QMaJz{g|FW|46W5)5x%`;3QvS@QM# z?6`@O7;|ilIbN^9D-kx-5B^6FJQB6wl|6bpvP^rpu}X-HiFoy1Zz5!m!1uR%!f`HL z&R!TbwnCZjDtUEWyVd*Fi~4-^oW0X1fB4LoO+Jp&gY1-YoF1*uM;iBJOxgQrzL}k$ z^k(=fPr$sDK{gj8%QJz%vvTZiaPz4>ortL#=Bc@l7BKV(Ux#OVWF}+_6Zgts*041m zNVrvkp%>ma3}9@h2MXD@506MP!FQ#GI%U+=w4g|>`;3MB7*~mVxgNDig&r`z@cb(! zHc)-`Be{Mr0DuKm)Zk}7#TJt;9;I&(1#Dk;&%=fhr9p;zm>e2&XcI|ra22Q?ZZzLT z#9!xwkH~3Fv&p3l#p~;d>@rA?mq#9!c4=Gfy6?H>0ntlljaCX$64( zQ1!mpxv!!SB8nRib`4e@*#KJB+HUdNfse;6W#idD4O<{Z`~#qbIo$x(KAwu5p`O(D zHxBO)K=s`I!aJP{ON5%XR9=%0w@P#|`8<-)atXJYmaCwWMLve_^XVar|JRg-d_WZ( z>!Dx@{A3lwDVBbEb0GAl%@Kn&d@C1rRG;X_Rjr}0x-@99;zO3x6|hPx+4U#;KF9g zvTj-yS9lb37t9g*&p`g3kHtk6ZpJf^;+5ye#u9(3{ZY`lF@Q;3fmf}1+TjMq!9g|0 z82JhR(|n$R5Dc#ULhGed`nx9J(c_dK0ONsVqpy69kNkbGo1vb5sC?7t@33}(wVT^e`1JSDAnxYPVif?Wzn+vl;+4zfo0Wm3EV(S!&E#Z2-w%gy9^3g6zu6Q!-)>#(M#p0 zNb2INq9xdW)pedmC+PH);^0pS^aw`|X7E1sDrK33)@}hdLI$nm*`Iaa^h;>eN~h-+ zZpaEvgfKtZKY9jg_23ffJgah#iLPXlorU*|J1ke}&% z{+<7D+|j(TdP0HbBq#%$eExj4A}@zFLnQ?8_S7+1L6swr!1Np^QgKhUO+l(tESD4i$a*p?wX_d^@t& zl@Ct`G8IAEsSM4FIf4W~^8tdoo0g$Fl9O2XLpa@B(KDaa6620M5CHDdLf{dqe_p@y zK~NiTKBQbfrKqZhs^ySrYra0!0Mm2nWwjZu`_zE2w>mE2VUMA&`$pGcfFY)yk4yO_ zIBic)+|-=cru6STllX91E=8)KlpZ%9>wgo3EbE2)d8||~XhS*T`}by3_Zc-RWxyG$ zqO)h!)0d$3FnQbx?74~NbEM~%m9*g2iOof1wM4u?snUw>A{5XmXZDPrn0k`KDETJM zaw7#GyQMGv+pxe#SP|8;NFH{AD(iq-~@m#f+KxQKuu2i^1NSC z;;n!)d?E__=us-cMEI_}n-6|!k${m?sAAy;u6`m_CCwq@C15gEsjz6f>Eo|6`{#Y2 zfvLivwxRaV_h%e=^fW4vK!cE)5U)j;KVS zUF|mqFD7oQ2H!9{K}6<>X~vD?2lXCIgRF1iNK`>3&MnYi5yl(!=6@o``!mm{N-}R6AD_annaAJ$EBbZX00a2Lcz)A$WJEV< z$7tu90I5OQZq0{2v?`24^8z=z!8e9?p5jum>nR<0=$;RGKi)wUi z0*OsE;V(N`BvR66>5J8#$!FW*c|zi)64OolFGDN?Km|A*4xDcvO3%ANXBxOSe}H;8 z+*|ldx_Unh`_&Cw(_uyIIJKTbV-3YNqk2x)Sd?Ev^_*I2Ljqh@&KiNm;Ma@`9{fCf z;K_=g-N{yrl1<|@i8v1WkbT#bo|1{My*kp;k)p|I1x`vB%F{MzsE1$@((D9 z3TsoZPUXGF{{j8IseGy&ZTq`f{NwXg=YW3Gn*YZ@{y1(v%0+9rt%UYe2k{ z{~6am%!jdrq!;&$x5slf3iaRgsg9eEQ}z7+n$PbGbn|)YKo2{b9|gN zQ1L%rKk_X5&L`~rFTmosIy@iFc>6xBLfRFWofpo$^m!6^=BLN(a23y>;4<9|>p)9F zGnRnUOk>qEviQYbf;xb657kovdxND97=G^q9C*LtLfr{a1m|N{?K1~X=EkJK~p;A+Ym3SAyfqvzW0k42d z?D6y@MA0Py>|A{C;_zWE0vglGh|0owxVT12D%YwxR&n;g;~TxU1UP|(!K)oREPzOt zO59sW%lD5wPLv*f9mv+_K%~iebAX;#w%cc+@g;CTjqD$-r z5utz&TueCM(ki1J3GlvzA09T~S<(_z51z1AYUK50$g{B4DGPYuR&x}#qYnxTyn1j5 zws(t*UlU==sthIUZ-6Dmw#c1eE0*n1Z}{@d8#?4VWw^}D$Oi!NfOtL%uH4v#7UC=Ddxe@(_2{0&l6QaR zxiY5wY$z#KJ`<*I`3hXkX?&1cQ3XCq*qYo6NvWVip~uFPfv;$Da* z0t4UaHwiVm5&`ajYN(3QWr0ataqmI?m!~wUlkQy zH!G5rX@y$P=av|Y9bjvGY}Jb)JV{u^V7Z=S3|eUQZ^Eg#8cDNS>h{+&f7Z=LPi&}I zCBx1g*I&JTW!2+mIe|ryTB3#f#*X__cA4 z8Xzz>3hX4HDC9UR2Kl2WHiCJqAuB=%fAw%C!AdPwoa=Oc)c>fscdiqPxC;HTQi zs@lvSWPvNNnwf?Pvh)q)1&WW=j4Oa6KL)J{B)-omte5{jbGuAHt`G$Ou$F;htK&m# zG8ElQD!u(c1zw4l2)Y>BXe~wKKhlqSu)5VlLbH#CO7v5ldY0iM^P{pagh+62 z1DtfLXUPe-){I|#LeD(cJM@*)HwpERo{H{$wbmP^KwE0VvgrBF2R47yGo+4|{k(4_ z>s`x}EouQ9iWv3K0jy7PXb~r*2CFvVYG>LZTGYp$A8=mMj1KlHlV6ktCDa zL%neozv1GfiVx8%Uz(c$@T?r4`Ix7jc#~xTcWR2yS5(!02rAL{uqSR#?6ydXL|-uk~bP^ zr30TH=!iFYNFDg`%0mU}n$^8|LM0QZ9$-~S`u)az@EslS&_9I9@jNd!)m@bl^D)*C zjl}0pV%R_l<2fVl36nyb=-^UtE(1d%V)l234gVf_=6kYzZaynEoC<-;uc2Z;Djut? z<;qX}%F$5HenleEU{#2>QUk^a^_68Zy>#m1K0sMGlR_ZMky9vxfoB5=t?d z7CRgOvrsgHs=ohJ-=EClDosi2K~LRePb%K1p}|^14{LJv)9-}I5VIo>=_6N zx-XWRM_d2VDDV?8brW!|2Uo ztxSwyf%lEV=oGM=aJydbB14zw?hAIk@m0DMiJp{&pP+HrSqV1K4|YA}qrF<+r@w2E zPujoz2mbra7cNnbB*r}&!`zMWT@rPRM+J~%K+1dOZwroend3twPdI`Z

    @Buy2zk_(XZ~E_iR`GsA1#5N1 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 KMNUMnLSTaHtu>ke literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/icon_3_background_sa.png b/TMessagesProj/src/main/res/drawable-xxhdpi/icon_3_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..4f98481b2963ee720a269e1dc574ef013c0bf29b GIT binary patch literal 41642 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 KMNUMnLSTYP3gj>V literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/icon_4_background_sa.png b/TMessagesProj/src/main/res/drawable-xxhdpi/icon_4_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..b2eddb6b461caa77aeed42f2c24d49fdc3420948 GIT binary patch literal 80012 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≠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

  • a<~wsg|G6`H%AKp19oTJV+-Ok`7YmNx zlDuo}Vb0|euFrQZE1JrD#q@LiY}F&@ydwf$bbmWEt4CP)bL{1whaxczHGA9^+&;{= z?Szfa;nfx=6t83{zscTk-)+)ig-xrwT^{%E3_L#5xK8_DZ>Q~|!x?U&GgxN^5iVh7gu(K248XJ z_|%hX?kvz$D-gLwPe;XZvB3%XE)T7>cg|OqD%KWVyA+alkum0=*p(+SAH+|}PqkqC TBJ98^4vJ(?S3j3^P6q1fK+uB!2{FK}|sb0I`n?{9y$E00GuXL_t(Y4b_xAC`Dly$M3zqzh|W| z7z_-!MvJUWGK$G!QwC+kWKb5OPzG5UDUoapQi_oxUr9c~_515Q$2rHjx;JOwU%#G@ z_j#Y^J@=mT#$x|PsZ^>N+MzJgGt;mJw!n0b(-6rJ8uh>}ynn+ijKUM_{AvIVN?;x& zow&mq;;+Gr#kuClvQU7jf(pfHltX?RlCTba@p$|KYkI)Rv%s}9AAmQ=RAUsz-3E?B zZbc0&|5-p>L*f+PU>S}fokmzFf?`ho7%b8Na^0+b4JSDSQh#tmFs9~Og~7bVEcu=w z;VjfScEJjxvVS%}e_V{G(oYnrY(S(gRmG+WBFDTncWLqG0Q zG2DRk2p2!_sv^`I)|9;OEplsEC_atdgLDW@o*Lg>WO>(8+^AjX+y6ms6RuQ@O~5ediGE*T0tTIU*KHW)P_zNsu&kv8msG!9A7P`znK zp_{Tz(x_I=z^glgwrqNRU8y0vXqHd93+mw(R=KavuzyD%vzjXV!jiTs00000NkvXX Hu0mjfXtMOr diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_channel_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_channel_14.png new file mode 100644 index 0000000000000000000000000000000000000000..5e878867a87cf0e2f791741f94803b57c67c082b GIT binary patch literal 767 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhp6|#WBQ# zckNW`43R(yxANp3#>EngIJ6WaG;SSH*L2}&>UTS+)~nJH5pi?HT!kgqoR|V#5(VWQ z9Rn68C^B+OA9YVvbDPG<4N~_Sx1YFe8eyNger0IN)#3=| z?@eY4|IIS|!FluO)!PpR=Co=TFkW-byH#nye67G!EwA_N!4uPi)T|#aT<20bpMMv_ z*K2dQKbK#0i{L7L$nj-a)8RvleWXmdmM3cKu#`uObL(H&o_Bc8nGH`Ajxn!WAb0rF zlNyfij&WC9?l!dP#Aop=UVlwuPlM~k#&2ai_?RyUip-RlE&EeTi~HSy_!|NZ%Vue#QIZ>uekeGvX3 zEa_A5i~KXsKcCOYZ!ENsJGP%Smvfe8+ycWhJ!&$wU+z2D@4nN&kKLC0K$f0oo=V2D zipKE7wAwod*X_UXz9rFuUw#2AS3+gg+U2U6pQqog%&_UqSNwWF;Z+07OXSXr__vmP7tb=gces$-B zyDh07kAA6r@87h3%fq)Hf3CWvlhwc!@$S<3#)b2q2yS@ioE_Tu)Q2UfS@Ae%i|rQAxRJ5)5wrXP4GG2@H0LBJkD1Kj=wo~CjVL9dp*w9f2(({+s&TY5f!ieh(kqGaI>Ic zrrx#WW6Wy>y^C`_gMAFRLT8)LSfr4Byl~SM?r+CL#bgD4TXh`ns=dzTCB@%#Be`|c zqL2&9rxy4*tXgq8K2JvSoNoC8vxUCjOgBi!HB~I+XI}PzH!F3!$tr!G39OBQS7Yx@ z+MpW#V%0D_$_Lj#A9J&0X?^om(%eC4*N*|Us^;%^Hh6KvGbsD#NNj**c@`){XbVu+Wk}L`rMDIt647OYQK%S8N^lfP&i0HFZzXN zfHkLl!8^~N+eLC4Z>XMdUY&8J=YaN!R^N*5v+Zk&&t?f8p06Nvo%6DAdBW5il3SW; zB7XU%{7n8ipKGt@CZ;sRxy}IlB82={S UcxoY9br=+@p00i_>zopr0G#;gWdHyG literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_channel_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_channel_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..4de64cd783bb4846b5c1f584385cd612a4d311ac GIT binary patch literal 770 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhot+#WBQ# zck2{i579u8E7bp)p0AtX@P*M z<7zX<-9nD$PPs}~Ok90(AG)_*`SRQTc~AK>%g^%~+3V(1pT9o0IQ^N3=u^S_-@7L} zU86&3(rS2W#*_y^e?VHvn|#4lWRm%e8FL^4g2_3GwP=O*Y};s79c*U z{R6|lLnbS_Lq1;GBVy6;pXbV9T?>v$kuTZ}C0Yf~f4+9%rPD#7jOOPbM7gGlGTnDn ze^cPkX?UGTpM(7lOXs}0 z?`_LBh+0ZkuuSTkqtkQ#iQ~6t7ThKiqGzss@Vj=}qkrtysY|w677M*OXuBiJ?D8ho zeII6>{44n5w2s~t7XF5Jb|TwKHz^t~G>kYg?W@4!Ure_fZrw@L~Is6wGD86L%P`Z9>pG?)$j!r(?H(}}VGDr59?2gV+GB8_wKZ>Dzt^M}7NAkXS z-e6T`x-Y*)+w59#ybbFY&vgftN)8B`8|V7wux>e|l5xo_s^-V!6Ah20UTKD8_3IoE zsA;RbpcBQ|D|B|z-vyCN^nKrdHovoQ^YIsJT=*umI+w79I~?{lanw{fX)g2LvH7Fv z(dBm!%wdjMeobbEV`%fdh>Rr}Dk~OSa(StHyD#Xt@19I3s5_c`cfH1= u#XH`8F_P)FSR`GW_)70%L&guYH~$!qMjfyeuw>i`N`IcNelF{r5}E+CZa+%^ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_chats_add.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_chats_add.png new file mode 100644 index 0000000000000000000000000000000000000000..72b38bf1ac24b8e4a10a300abad4cf38a5d576ba GIT binary patch literal 777 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfvMQj#WBQ# zckNVP4>3oHl$z7139%{PODHY)1~R#Dyhaf*$B{Scz)L?aFMoV(Zdq za(eFP$y&D{ARsEvxfBW@*`#)v#D(9uon>%;zO60DvlY8uM#a^oGNNDeR;l1E$r%U$Oy`tGgr zjOUJ*p8t!m2&s8^V{+ca#p1sh?}+sae|$ODj(O!t{w*&1KC~8Jy1vVS{@Keu%E zU7F@m_%}`YqU2WPFS+X*>VBlvuDkf}TGV%o_S~&Hvv#iMjK0Nl!RKq!*NfHcRgRae zcpT(;n(LOj-MH1|_gNw@^2z1k zEZ>kEdChg!(uteRN||1-`zq^fg3DCe-VM)UIk z&P|aOhhuBY-3rB9iW4PLW_^vWn4+}5?FUE90mCgvpQZ_1QJ%?oQ)S8#wRWZ_W(TZJ z#I+xKH{n2o@V2)LPqbvuxiamL|Ao7IIF>wK(ft1ds~k&{xkNxTYrTWC!fEYP1K$4+ zWzpcD*Ubpj?5~VbUab? z+e70mY$XK|8#ukZe)CMY&3H>UaG81IyuNInD&Mg1OVd}Wh8y<_n+KJxU*4$BZ}xyA zYp;V(yNvC$*Kb-{TE6c}yU=k@=8dB&cgpb>*>}S_pE{b$w0>H0li4>wv?FlE?jK?W zZagP0Ht9K(xkLz8@Nde>SCn{h@x=vSmF^EOdose;98@a*diuz|OZ!@wi@tDvoqaBB zV&RH&rb6tF%gU<-OAh6KnEh>g+KpG`$G$A@*%BP!F-a^!e{balrjy$ia^G4g|3$O3 zXWzD@IWMy#=AF6PbLzpBl=m0vn#?plOmdP<`o)x0t*-8TeWT{Oc{}RGUkcAWS$vN_ pbE%BdveGpSf7eDX{&yq3fb}}Z(VYS3mfZv;Jx^CZmvv4FO#o2TMcM!W literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_check.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_check.png index 004713fd1ff6d59f6d15950735e28e9b70c35e20..3fd562cf7987785f0f1e837112415905159c1c61 100644 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfU?e%nV4DsN7 zJ2{rC$w9;|v~Amk*{&`EZ&f*(n&fT;alg3ge*Gd>RbNNIEysGF=gl>OsxmxE&kiLX zJ6+@ctjqDiY5xcR)f3jn9(bm0?z*Q<{f%PIS5=Pi{GW}cdC~h^el;k6nfrugcc|m9 z;vI)M*+SFpzHxkWnA)Jp^d?>5r(~P!{*PW3Eg~UN)&{N8DF#_Oy6h7qF7Sp}?{MOK z{3-HzdWv9NS%Lg%o-U3d z8lr0_`0_Ow2)H$}Ml%;l{xgd?;c~t?{DGLBXzF>{A2+X?AL%sA?KTQy2gM diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_check_thick.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_check_thick.png new file mode 100644 index 0000000000000000000000000000000000000000..053ccebd5c4dc49ae4111faef93d66c607e625bc GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUz4LT&4DsN7 zJK2!ykby{Bw5#~UN2@G49w?n_YOY`wKNxJ$G5G#ANaV=HF5P>y;|_G z`qDyYjogz8m*nj(sl2b%T)1_O%1PcoM|d@selloV^-*8;Zd8|D=xt$iJEFftzvIdox&1c|5943=y_1) z&rPF~ZbGc0%9G_YpUvHnT+;L^`MqMElioIk%s=m?e=vOC^y}hp>xwK;2za{sxvX59eL5C$ za$h=lAtb`Jo=4?~!o-e)DoP$Vbd>%vTB|j8HJ(&5jNoX_2zse>se^Z|{MUabd!Jmo z7aP2;IsenC;_~y~f8P1}QuOeT{Hdp(W*PKOTV-Q?ush)FuR3O@!xe{Ro%Y>pIKZIy zp|vjlu&CP$u8`SRIo>P%klnuG^H(+&w!%(-mm1!1iG{BNa(~o|`9*LD_9%5{U-|cv zjU_|-SOHgVduUa5Rh{g)M`=2Wtf6d$Yaa2e%G)l@V(RGJkjV1YO1Ecj&t8d^dp+)J z5|5jlHCcRZsYFu7ao#!I$5Jh(e*4Z6tZ_4Wovwpush?TTAN2&In2Z@IXB4_sglyLK z-OcLg_Pqp*nusi`%VU_Z@#O zGUR&ulljZionoI2SMbHoo}(6Fz*zexooDwK6QlC}@Cv(*%T;@;m@5vMZ@ZXcT9lI{ zzpC93oNQvF!neQS3PISAGNOQ(a)EaK2S9kx^cWl k`pfPQbE zsr**1=z`j(PN*L<(f8_@`XK=K%K#UH(F;5V4uD_4HQ)~L0O*UHV_*q*4Xnmo${z%7 z02^oBasikD#(&RU*kzF*!0nZrrW^w{vIg`*SWy^7V5Xgr|pl#ZKDYzS+XxWBvv? zhuej7wg;SxDf(#h=YZNr&%lFwk`i2vnBxuFVidl<7I|-Y=a9g%f{j59Gui}C+`Yd> z;-6wb`May-Jl07p=fS?83{1OPsAi;1{ETuM+ucLz9aeFTNq4~N_Vsj3tim)B4 z)-+}3OHd08p8v~6qwR2sWSh;+(&LADGH$xXcVGB?alJy`SCiQ@!lFO&h6%m8|7uh0 z*4preeXd$28ikE)S?m(}D*p^h%tU;5rEHkAEq$zSZzw$0Jw!C@Ufoq4O zzFdhbo7LhtGeQ0r?@y5scJT%OKVRQEx5M+-LynvmwITo+xxpl1e z_;XtETpD8q%ci?i+WyJh=v-IW?^L|!jAVi(_N&SM>5*TjCoT6}{me;h|3;>H&-XU{ zXSgDIH2;8stnts(?xmr{myUAZ;IY1_6y#&#blk^|`|_6NbzB*O!Uh)w^n%~FS%26V zy*I`5^3RSLyvO|1CT!R*)@r?A^*PH`)t_>faoHFb=$5gYo%FLvg_AWtG0cC={s#YMi+yiqci!yM3Q&xDy85}Sb4q9e0LBXV A(f|Me literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_close.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_close.png new file mode 100644 index 0000000000000000000000000000000000000000..f2d0bc01df608238b2f1c12b4e76835b638e590b GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUUG;Qv4DsN7 zJNY2*Ap;&)?JJBs3LBZ3H*iWXkULfK^qkWgNA8D`sw-6TW=|>dUZQVa_Gf>#y6eR7 zcL(lUCG^~EFxF^y>Bx1o6_NiMUDUI)!GYzz+#Lt*Yl~B&CM*%+*tteu@LS)W$G?|6 zb^qzX=OU(DE?S`!{_WDV`s&P53-PXEd4-@Gz+O^OAef zKL_n^uO3{UdGf=F``cZ$;$2vTDqUVV*iKB#`)ca)spCp@o~zUw*(LTSE49=NpPgA_ gf5vks^L)NN47Zqss^5Ld@&kF))78&qol`;+0DseajQ{`u literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_colors.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_colors.png index 3ac6db33aea9eb172fac45b051561ec6cbfa5ed4..ef7645b4515317caa5890dff288af13ab387a05b 100644 GIT binary patch delta 621 zcmV-z0+Rjn1>*&ffqzX&L_t(Y4V{%uNL4`;$JH#2G^5SCQ#ArEPwold8mh7ScmEa)-`o!eR;Sk<}HvgJW=j0HT!WFRQFC9TBK=S~?_J`nM zNa7BedL05uo5zadWo&ZfrTB|2e?np@30%~?jllbr=3zl~Z(*bjp@C9U#d>S?E zPE7~FEZ(=sH2K14F}WM?1GK^I(Rn9E&C83WlU zoHhaDR(J=#Jy|0kf0H6=0NEg<&a)O^Tm$+B$f6ssyJ_BjNJfv)&U={&$(@1Epl3V` zGA(ieUS=r3o|`_SM`$OfMnd8fFb=ZLbj~z-?y?yu%GlT@5$aLs>+}_LUAzaGa}N<~ zKVF00m;c@e>*w_pG{Yvybf)_t&nrG|l7=TiS9P+#o?xMWL@z_Z56k8-00000NkvXX Hu0mjfxDy); delta 637 zcmV-@0)qYH1@i@vfqz{|L_t(Y4V9KnNEJ~O$2G|>2r~#Z2_h-6MFzEL+agF@xCoZh%Hlf_4#5dqSe1JNu7wu{80NI25W@oTW~08s&k#)~!X^A|kpBx!zLJdMAjsxmB93-XNbufk02-a7HXBCV zo%D5DE%p>EK<9c9s#U~40@*Sg^BMvPn)*ch4}aE^P$-9AiQtGWlG{ZVh;wyYH_zG` zSOZy~)jiL`K)k&BI>-&9W*3{o0NUv@R*_Dfz8mq8b3-}DfATDLEb5gdkbkm;zMHW6{W>B@=iBJ;#L z&g)S4jf&t9yaL%6xC8HyzlG54`bfRezQ}y1 z5S{~_25s0NyaCxWw}<>DXpeN#D%`cyn1<`1hef6{{Sb2dkvbrYfPwm3(gZbG^jS1J X1fDO083crV00000NkvXXu0mjfw974% diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_contact_add.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_contact_add.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4c8157449d1266b068f75dbd3a121009feaddf GIT binary patch literal 602 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?1-m}V~7Xu z(~Gw3R$a<&Z$pm3GF=OWjCmie--ZN){}sH&-n~xs?PQDlJxnW@73#zG z%Ll%;xg@)mSJ@UMdWf~AeQ9x@*_n51?latHoANXE?DZ2ZsTN@(nMd^;wkS`yuJ(S% z&ix&o?GsX1H5J?f4nIF&ebQ&jWzB6|zc+BCKiKqCYi+((*!(AQGO8=ys~A_x9ufP~ zqg(dnROzg)S1+zf2Ng`}tLf(Ss80IwQ0XMQ-XTuw=^HauP8|>{>1e;!$P}_baJNdu zi8FbUf?HN@io1Bu;m)hQH-9{>n6DFL%#H$W#j}*WxH@}(u-)oRNY0E?_@Q9eu(fri?wRZx5glR&g917-^j%zZSQHf` z&cBa;<{^_l$uaA_i+uCz3yu03 zPCqrTsGIoQe>Xn{pQ#L@p}g~ z<}_^&Xk?x+mER)TfWtq5_18n0KP|>jiz-jfEj=K8qeW0?Xyy|OK|I%(>x2x*z{^v7$9 zu6%0<@~tj-_E21fKW^3ui6?4_+6FT{O=q5CNIyHf!}@pA+YhyD+(%x&QJqk+b-Q+H z+vYhl^#U$C_L+q|o*Y|Y6RY@)HG*GddgGls3z1KOvfOUEY&NeG1JW)lu>Dit!GH4N z!s&@8rM~2SDE+8&-PqeF^WQX%Fy0W2U`f?EHru3grb_I3{RQ96RHH4fHQAo> zN!0W#w@DZM#C1+gti8o_q1eb4{ueL(@_+Jup$(S=%JNONf>NWWtDnm{ Hr-UW|_r^r( literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f1107340dcc2e0feb8791f2c4b20eb1a6f4ea9 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jf$4y!i(`lf z@7^ii9-)CEZSM`wcD80N`gUyA3`I6u_K6y-iLMiympBHRbvYbqR95E|KIAAOD#UVA z;m88dW;WJ|d`FtNoSS&68(h^yo-V%peg5X}dw<`lUKiIC_2KT;Z~L#^E1&<@OXc6j z%AI}hfB)0VGCy*qzjB_r%;M*IhCetXPHan)*0qmT^0oJ_mhx-PFIxVgJweFs@O{b4 zaeSXIq`NDuYmKbneZ5xh`Q|!C+0`!t7*?HZHqT)Hu=xVhrKhJaUVqqrqg(RNA-9iF z6u)CHF>^Dn)? zcWeIRn$BY#Qq9v3y8mGFz4+#l?yoBc*=IDZ>XGXxcP!IUp1IiJe$|D>9pW#W0y2eu z-C43w)FCj)gZqT2^DiU*1)2R@&K!I>A>Ztyu4#&h&e6N=f{(Z|*DcIlX3J*Yao2ul z^Rmm+qtdwan%A_nuzg<;-?UNu$CK#->zlrRkWR6ErLMe=Pvri4uBicgdRIJB4O7u; ztvSIQYi1tqQ7xIF6m=|V`F*Zin^s?X<9b>BWyi_$&P|KIx!#*GuXD-7->%LlN^V7oRs&&ZTbDc&Kr`eGqdk1G*VwTzpYiM((QmGk{F-A#U-VWzIg!{A!BVC5@2J_*6y8(f9&)6|bL@yiK!Q1n+N0@0Gg?Ii(ix+BJS#u3T229kf9>uFI>;lWS1W?{!@O1TaS?83{1OQ6qXiNYA literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_name.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_name.png new file mode 100644 index 0000000000000000000000000000000000000000..c45bf3f8a2313758c48af6fb1b32b99e84d3fac6 GIT binary patch literal 443 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfOx4rHF~o!S z?UcP)hXO>73uiBl{ldA#Vu$rrMT-^dA871r$o|M&Bd9sm>7~*S5x+;Tl=d|=HS@hn z>fO&AXJW2p=<;d;vwhyVla~K~Pn9{$@pixefhnvvw#lYzIEB>AH#7C!T)%A^rQ~MyUHdCOGM&2qdCw2yNp5jMhh@HV7VMVau=nG%yt7x*uTYCYPm74!Sz6ZfnOd|}I#I{ZEyztGILXR>jMjg)6x zbn9Z#fb_-);i3%q@w2${=c*G(8 zC;U?+{x5hJ9U-bTsf{-!#K-NA-k*8LYV4IoE_ZjjKJe^s|94dQ2D5XylgBOHo7X@A N=jrO_vd$@?2>>75rMLh9 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..963bf11cef93389d75ff352e0fb2f1d85ec31cc0 GIT binary patch literal 754 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhoq*#WBQ# zck5JZj~GXhw(?LDr6h+V8W9?SEfF44fkzG<6H#(`b41N`gTSTEt6`dJbaY%>O`5`# zRGJhbIH#?guB7QNVv7Dw3P^Cw zJ~hqrhv}P4nV+o3&vh+I-EzP2NQiWNfI+sC(ropk>s#vP?Kt*E@{9Ekj_usCo7Xi| zNX8t9iD2E&vSrdzgLk=)CRwjtFvm0M>Av|oXTAO{=zF;IPtBzAZjCLcpX5qB=q$P5 zx8Z(r$YD2`olnD0GnSuNkyP zIF%bD3e=0MSWV{5*z(8ejcdSVuI|KVc^}#iGFvolH(>ewVgCwGZlBu+rax#DDQbU{ zR3ySFWK~$-T>pIgM*GG`dkq-tAM&WgKYVp*m&ZP~ZD$OHzFv%C-s^j7pInB~ZqeT? zTQ03O-fZYp8J6I=+HB{wKjO1m*PNK1P+u@nL#j{tfQOo2RRv%Q~loCICp2JQDx_ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_time.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_contacts_time.png new file mode 100644 index 0000000000000000000000000000000000000000..cbdd98e3caf98bc93af8467d707e44185da5bfda GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfOxV-KF~oy6 zIYEMzS(d3sf&I__|MU4hESU|tJN(ru4xTtsA+b7c0qf_68Bzyi?lR5je$J$7(I9cm zJ=~q=ziPlm(Ik<+RR?((6W&Z?_$V)w{F60cuhO#26-quU?l>M}{?)+Rk=^ivOQ4?R zk+Z`aH`8<`-rGD!6h3fttUjp2A?UwR)uEVaB2Nsfkw7Q^Cthg}o;e#EWU>{krH`?D zCNM7O31QUX+voK3&Bhgxydsksle`t!R2ybH@NAoTV-ZuF2!pICDLl_Fct6ATo4?-$EoOOZ z^ZVw;*3~<6CjHsCbm6baX=@MbSD8#U@s+ooWAAg(%7V#XA!Ysq-uk8TX>r^h6FRFF z@UA<+S;4F)ZFsP|`@^w}f`n}~XRMx!hAFHmceq$wRPNY(w|?*EJq`67RtcOfIV?9- z-}`j0QEs}yP#$!r!!PoC!=5vpoj<4LcJR&iI_2BNaw5BtC1QGGg!~n*iN_r;GZ}q# z@OFB>C#_}rn-|{dJ8MjeT(&P*`ZIue?eDGj*#fq^ZVI~gulS?dzgSX~^(mXR=;y^n zs~O`TyPGUtr0_-i)ceNptC?A|{;w9@vOX%`cLC?Jo$8q$IrBqTu%EU5qnqS=p|s$g zK&$yd-Wk{Q1Ww5Y%_w~+a&eM#(2Gy!uO=_6J174y_b=N6`!hCQ4|D$jg}bM#pUXO@ GgeCyh1-c0U delta 328 zcmV-O0k{751L6XZBYy!YNklo!NS5f(8|^)u(T0d zpW z8Q>Y%sZQqMcrqjKiwI%b3alYU;7%(`Bye%HQ;rc#1pfp-k02YPYd%F#_-*!8_?KuG zxc^Rq^GPPBp+SoZ8%K$`+pF~o!S z>{LU)!wv$jk2_{Xt8Dj}%Jh`&p~X%{R}Bg%Ha z5fNZ9iM{^*#?#d6rHX+zo@QtGm+J`C9=X%Cxo&2-;GK=NuU>pF&tvadHUG(;;`NoF Ou=aHIb6Mw<&;$VPw7ro4 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_data.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_data.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd6f38e29c5467c5bc699d38a3347d95f772997 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?6{|kV~7Xu z)~U9BhaCi3lUpVkGqCcSWNHLoDqz}h#IR!u^8vvVf-3}EtD?NTxH6O!1?<&58Z!=k zKhqVtioaRjeT7@h$_A{V zYV$4jhDmZrG>9uyvnLnu%;SBP?PoW0N3)x!!m9=it2&+DJwGq8JPQ^&>XrP{XU3Jpljmwu z6T8(~-s5NouH>3QqT69 zY&&7|`@P1G)c*C6e|0ZMH)a=B97*7bG2VT@mMOJpP0FPcQ{GG{HdM=ApXs;m#e$6` zzQtO8^%;k2Hl?!nzHnZxE4s0!3o(sI*@!nvqs;T-{weX)n>0JJUoB{tu=M?q6&zvpkdF|6loxki4g*>+X>#v*f bWc_3Lias`X&k3H@ps4k9^>bP0l+XkK{QL8# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_delete.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_delete.png index 3b557e12828598448deb4fdb1946fb702e9833cd..569da93099e573e1b4c88b095fdd9cc622994776 100644 GIT binary patch delta 395 zcmV;60d)S01d9ZaihsXK13?hRbN)eV6-5gxEhPvR*0%OOhn3*d*e7kCAeEqvXkn$5 z5w)-hVw0S|k)301F1MQ_B0BJKGdthRH@kaxt=3<#JkQU;0H_Udx?pYQ`Dk(yx<2si z1oXpN_a_7{LbDCqj5QG%+O?!l!6_JnS?tCNE!Y768g#&%S%2TfUp29JFWthei+?%f zZ1%ttXg86De+ABbjXes@$z^VVLtRKcX}kjG0PJ|~B!TBZ5|L?5xdUG?NkB=Po*apl ztHTx4ia?fS?_@uLPF0X2j&gOlf?5#>8JR?j3Ub8J9W)ZqqDbE&rNg9;D3r(~>%1NF zMT@v2!;Ha;r+>wcNOGnBk1sZ{?BJFA8=19lw@yIMQn&8wd@MYzDdkcE)82#dD(5ds zbplFG?jU@{OY~~AgGW)v;Qw7KMan~eGh pY=a*70ChGZaR-j0&Hi=r3$H`{xoibI5dZ)H07*qoLDNO2A)ZpS1phRH9;KVWpK3 zwXg|dlbp}U&Sr1!ZZ}7Q=)g2{RPYO{2UB`+7PD)HfG+BA!lytBfnjT zzRUIIA#mY_ZH2?giO4X_C4Cw?U<_ul>riMZ4Dh8W$IgQMK7amt5L@@kB<@W7%OQ7j z0G>g+i8TBh(6K!WHbE>8a|aw()GAX9UZZdX_AH@F;Kh+dWLi`1z&2C~C~4c0Be8OI zIZrJKWLfq>^$X}$o*Z$MtIK(6Nx)TP6K(S3h@&THB%n=^xxS>!q_4=e$R?ZoI~M(j zxFgGq!Kb0liB-y6v;E@U*8;O9@Q-9E4Z8e^IIv zP;&AF?k!$nR-+R~)f6A1jJq3RFSuPaV?3TnK=!5q{aS|-!o`6-*<{>{!N(m2v pU2q9LL7j~#+=J7^xPM&!26+Dcu`?$7lmGw#07*qoL4LveU{@t;Gn1i{B7X@}SF%sQ5`026a$y## zGY9lfApkXozMFoFF}8O@HpQiF{KrG~W&j>xsFKq7pTM#`#@q^Rlf&$Q5v?fIlDHY4 zVd%2^Iu(d2Cn-{{v@6GmJ;14ecG5xi7^ktGjGkQ1r=WmkS#MZVpo4PGMLJK|p5eHN zPu|3y%3ph)*MI!HSFi$=N|svo7BQK12*GGsQ^8RlvNY6|3c$yLl!7L+VaC}1WNnib z$m-Oq#1=bbu{&N>f;+MGz<(z6fqA%Bj6am#wZJ_NB5qrx zm;cUQKS1o;J^PijsfW0X91od*TV{ENeU?_<7x{^_$OZ7jD=c8&!#}N!w2NSYJpJxM zpcf7x38q9DG=fhl4{7IM9JWBN_qKcH3M?d=0eRZB$YfSQwkRvIl&Xb)qb|uY( ZUnq{Tv=H~DC7=KR002ovPDHLkV1jx^{O$k% delta 534 zcmV+x0_pvY1&jrdfq(W%L_t(Y4b7I%D@0Kg$LINxSjhMpVddvSHWo@YN*0vNLir2) z2NVB%8O{P`XOP*_rT@{P{#sn*>S(Dj}n14)?Fk=OM3ZjsLpV)yp zQJFcwm!xdlG2)&0b;j6s_pHE)HU8rvXVV9_&|l2d=no-k*Ob@+#`0mdz@SIYGeqNB z5(Cg-3%n+{S0b6@yVk6PcXol-1X`qv>>97JUW{H`Mw2&z<2X-b-$55;!~xC&xkuO! z&}37bseEgH<$t>6?LbWGdx1xg+mx}O z9Y`+c{gbJ}p;05u;PyZYy5StQi2K%&cZ=r`iRG-uO{zcS5{$zn#6cD{&`22KuRj|>q$RUC2h+Be~P~%x9l}v-p@*ejZ zxE>`fe%<)FbEAXM3aJ)H261Vn?pBp!OggtZ#HF@2Bt-E3RdCYp-cVVo9PmLqgh^a_ zw%wbg19zmjjwlFp#j=(Kc1-)f`a}gS`bydkVy+FovAr zO}WRCRH$%|`N;f633&#~OMD%!jW>EHPMlbv%f5vrWRVl8))sC46BLS`u6{1-oD!M<2A!G? literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_devices.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_devices.png new file mode 100644 index 0000000000000000000000000000000000000000..f06476cd9b17a168e8ef067309154d4290fcdeef GIT binary patch literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfjL*}>F~oy6 zIYEMzS(d5i1>cYV|Lvs%d;~jYUVPf|q&_VrrKTrT_reDTg?}7JrZ5@LU@eem@MYQg z$5f!6{n1W`Khhm18Rs|5TE<+f|U&OU*|CgpJT1zdQjwW zcpJ0f$_M-b%?twmM;Ct-Js}ieH-qQM0w%7I51fo2-4*_EANg^hbOFB|18;td7E>#e l(GS)qXWYajQu$*z7#ISZA4Z3-t5^aGAx~F7mvv4FO#p)EfGz+4 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_discussion.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_discussion.png index 7c0ff672562bc76b98526d7f54aadb004146cc84..5cfe93e8a69ee083b064d4d62e44a4bd4c24cb5f 100644 GIT binary patch delta 592 zcmZ3^@{(nONGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXVyX@)W7~;Wub?SL-mq3ZObO~iu?XFFVs$H8V ztXcCmEj2a0{$>3K_7hGzOCq$cP2oN2WbEzR%gTMzASGvs$gX+c%l5szckYjg&YrI& zeebLHe?KSteV(Vvzul9z<|%M6eN9i4Q(Gv%MCr*xiA^U{j1qGFTGAExmzA59^S$-` zlp^JK{0{5xykApGMVBo+>$IiZ^y`y}CYMv^b!oSW$TXI4>=mu=ow&&6+-ae6%aq>! z5No!ZxP{sDzx_qe%DX(?8>HS&{cdvX0rRE{ad{>?F7iBakW9WOanyH0+Mcv#*0XJ# zDV545?-o8VouxCOaH)LZRe5WoPe9_&um-}_y_OjNSyc5h;S!FJJ7^IitUL3k#>PJ;VJo5{dOJCXY3}a_^ z?qzaQEbI9A-C~Uc=Mv@@+jatdYdPVX!|`uIHVsRRpRsX$U{bp(rp*@AGk1ok1pf-% z1FAgD_X_q}R2y(8U*NnLza_Zt;=UDE#l?J2N}e?69Z( z)~DyUznAaqG&9eW$uzp0q#JNuSM@2Fh7srk=?+d|ABv9SxPPpF6Xr8;3Ra&4C4*us z^~|Jpr#TCoX8M(N8782~nkY6o)zl+tCTn|QR~lMi52Rh_iERud)nj^DyxEpOIULfE zR~OoV#OD*7RIiy~ar41iC8m&rFDOEDrI0evjG2{3E;2@P6{N{XF=axto&#Qy5em0( z9x41WArH8*V}IV8L86O<-tnR>)UnE=-*{&1tJiA`@9QwOqYozVJnaP@O|s@|X`KGDI?)1j!Xi9@REBG~gg3CdAefCcBpKQXuG|6Y(OM%#FS^~anI_nwdx~%_yrsIdG_Xftx_pa??u=Ebte`&F*{^b_&osfJvOlte;*KjR zyq_o?E%tD;l1KOh8?K#PPIkZc2CmJ}Kfm7CO6O*X!uHF;Tdk9Qy7_q-ckXr0eQ3P@ eJIlUL*Vn9fj#ID+)2Q+V`P|dh&t;ucLK6T#QF{RZ delta 297 zcmV+^0oMNd0>c83BYy!3NklYU7{yO&r%a_ohYUsV5u`z!IynhKr#^tA zPQF5+kI+7ZgLV|$9b8=8#0PNbpFxcgeiFPx8c1$#)1kEeLEzrpbI-XU_xrS607cIM zFa-KVx38*>#f>_eG%Ldl~XZ8V`8xTkuNjfg!aepakAgOLurtWjc-1!e6 zOx3{;FiGjIjqVNbT??%T#K06dG4GOqJ2Sp9=C8ofs+D{WM8FKV0Or6gaAnM2fOgeZ zaRz(>zvc@T#{3xw*42x;DdU7EptbI1cM7}%k3h3*v-7e67JNxxi8N2GZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXV`|s)E7~;XZb*iBsv!Q^iaEl9*DDOmvDHj?h z6ftnQFvc|2n`qd&pHOA8J;kb|^}@;VxZn$o1q+&(8d-uW?n|!UbMGsYpybQr-~QMe z@6N6cT7CA$tNkbK<@%*xm>pd8a=yg-*I$3NuU#(fv4_9y0q+sD`8)oudb2d&A)tE! zcLB@31G+mH`yIBieLJ8xgZ=u07W1mKHD;6Yo7okl8@`6LSX{0**fC@6lxsf)xBC1z zSP`Si=dne0frRZ1FNdegCxkm(J83*w^q;EY!Id3vR`slR%y3R^He&q8{DCXZ#6RPU zXX?@3<12+fa&q05nLlYibN(#xt_PRrX&g8B&R`+sa6E5{a>Rq~$&ZVsX&E(z>fN1t zYmVv_)hHILu9=FLg5#Jv&(|9#8BKqG$%OG~k;e2QKc0(<6H1xmXK($llm5w?)!xj0 z^H!6$3hT1}Isg14U129<9--4*{z{We%X+)4!?udA`k?Ect=?U;aasD# zG9%eOHI2JZe2yGpx~tCh_o0k$-ehAwrAnW@FP1ZXczQg9Q$bsQR%Q%uyn$S);$`u( zLO;R+Z?(si)jc{QR-IE*x!NF*d!p1dsqlsJkxfpFnYzn%-He==vb&Fa!@ua=-`4vr zxOb#p@2l8c9@+iY&Cfn{PWGIgciFDcM#yCL{xg%Dd~0^C{r`Kpy!foNzr3Bv%Od_v RKgtA37M`wtF6*2UngF!{0$~6E delta 591 zcmV-V0L*pyavPr zXS%!Ubk)>Mca28>7|lHK+qPXmcL`ny{UPIC(=@+geY%0bi+^wezrmBxrf+d5da(jF zjoI`DK8HWyd-x81g5nl@2A{&S@GX2nMV}dmLGXw0BNQ9(PHl(2&@i+g;DefWYDX{* z;UVMFpg41)U54&4iPe{Za}$c?k^=i>S@D@fY?k~Z9R5(TQ4(N(0*|0?`naO;lZyV2 z$LNXp0ejyZn}5M~VZs+Cy(HNDC&rk}ya0v;=&{?Laj?La2UnAhY%R%lXwDhyOa$~2 zU4$OR4hCnj1+T(2coclecnxl$Ia!G@jCB(p1JMmARx;at*6FjXYLE49%-7ritmIy{ zZ)Iw2+eg|`1<9X}w^>-`Di`Q=?r@In6@!(WhidB}g5--BVHE5JTqvx_9QYrCSb*J1ix z_7<}+{`!Aks^2bkL>OV|7Xw%p4oLP=0n^&g<@kZNQ>`CG)+~E#< dpRWGr<2Ta9j$xBaqd))v002ovPDHLkV1gKWi016vcN~bcxFA+DP zSZOO&MQ$EGg6r^EL3a_c+0~jcf*(|@b`9jF;V;F6-LA(mny*xhe|VDah`(^`os+u= za}>8H2EU0lHd;48Vg|bHwpv0OkiQPQnCtOwVYHTKr++$^Odg^O(5+a)Y#}*c$eFT+ zwX8W>AWmrPbF~KC$t^BQPxc{c$vFy9qp9g3ISvmnT!OD*yn7%29#s1Xdl3uRTZAXH z3yX_~oYdc5aOb{)Js6tlK-6ez#sZ&Fo$T>{63!GY@&~@4a4wlEEnp36wYM^pi`$g^ zHv9>@Fn_n5ugJK(O*J7F4;uL|a3?R6{5xuSo^k&{OOv8i3}PaaywkTaj%ZFT8xI(Z za;wmYm^V9ni!DODj6xB~tu@M#NAK~?E-jL`Ya5$*8iga8Ym}qr=cS!=tX4#C-@4+A#y9;hf8n@p8SV{c?1?Zn_uQ=g(!5vLg%@>0i&gOh))00PxVg~{sG2b VN+bv(KLG#$002ovPDHLkV1n`1BS`=N delta 610 zcmV-o0-gQG1^Wb$B!2{FK}|sb0I`n?{9y$E00J^eL_t(Y4aJqsE(Adog=Y|di69ap zSV{y7FJK{Tyn(QpH?XlsJc0*6Nc=2pBy5C*7qDYX$Rsuve&erwr_~)b-PJ>cILVpn zI``DA?&-R>bGbi8{yX`jD5}QS1nZsuk?|&<&%e6)&ju2Y!hdae2a}Md*l4Bf!6#r* zJBya#IDCOe@DN@?p$m?{VORtAV1XyPVyq0355jXOtiYbE6^c0zLv#iQvb?d5q1_oD z87C{6y&&Exs5RO|Pag)sT_{W?9cayP0F8}}l07*qoM6N<$f_FIO-of#6o${q4-7;iBSC3kU=0jMK_OhCoPXFq2n7+LpW)135JW?j zXeu7A&@oPTrSD}vB>{sXM=B|P(_d-8+C z6TlzWcj8xQzq-af+C}0=ptCq9kOM$ADIxx)VDVkzLy+1YM7T42te-UDfa-%m3>&Gd z)CQY^#VT%OIt!_O!o5$a3hY@)riqr6x5wX6c@eMRvWICZ)aw2P9ury|2^F$wd zkPkhtnSXE%e*nTQ8|UuA4P0nmJ=AMe>#zY=a7erWDm=g9GnD}I4Q`?f26sPXvaIy@ zthPdK0b!W5eh1RO26|*uT14g>{EE1r7MC`FQ>}WaSFLdcJ}Qbi1os{s$7Eh=-leqfhWUge8O1|KNj2yynow!(GnA>A3zv@kXipS<`L!&%o!8CTY#M z&eKBMB>v%?!hHjpIq?r?jCC()0+;{cATEq6x|&~Rv4aI{be*sdbQ|@5e)`tzpWGkH W^JvXqk*?qX0000gDXO^40 zyGam&1Mkk9cix$EKhDl=G>+Jshw0zxbVksf1SdkjgKsyR&41lk|C^)n3|Ij_K;7ib z&Ft5G;2lsjMbQ$t3I2eW;05>yv}tf1w7@8M3hr`8U-0`I%`bxupe=(7!z#>$2G{uj zE)CNb9>G)yckr`yG29(7fS-f6#!bBY!A5cwXmcv?(_k#s#GgfFJ*FnKZlbMbevc>N z3)PmRV3hbfcz+8#MQ*qxA|8oc8}EBC?<3XvUp%BI;y36$bK*tt4D=laxyUWrTx0D! zvByf6X*5b9gje_tyy7I>$Ygr*=ZSBF@!-DVAEEse>z+gVoW)fzLH<`sK#l`#K>~kI zM0}cf3)F2J;?w~BLI^LKD+X~k$ax83kLgClvymI*%700#>E}au#rpDc3~F|*vYxEO z^)Pc){T@wj;B3*#k>lCD>n_W$GiaEVTuonkP_S*$v8Zh0e**vhbvtl_T7f<6wJBdV z;0kt$*FcNs*E^;Pu-sr0T`{HsBN)WLs(8w-hqM#z(;o9Ma8m-cbS%P=90J8 z9`@=tu74m$ML8WR;GTf)d9IYmnM;Z|Put*85zVT@F6YrY#ar1Zy&PDNI_J>A!!E>* zYp0^-Y=w2gd{O20RAU56&&tHgwD!{)2J1+%M6ou#BD7*?4LX;HfRSHpv_y;Id3V*%-pyDTRtJ^6(8iGoq zL_sA%q0(F=B;#Ah*^@JK&mFJam8_gS`?1bE&fb$GZARrM`e~YWk~ap2eEuWrO{G$K z^Vfe{5T1p*umOvZPqEoD_2?5&G(gcdoQEIq3?9P=C=A0HI1M}CK3w66o>k9uWTx${2 zCc<7Uo)FLn6>8B0oWw4~lDJ-}(EQO{Q5=sU+h4h`e6O$h3nNMkn_$I%IO?2dAQ z;DXo&G;9Q+oJqnFl$LrYsrsmzs2l1iHi2Xv=j9-J1bEoo*OSclpwz{6~d zIk&IXe1AGbGe2nwMjH+P0o1Xxr&YsMz3;$w)QYclqxl3I71t9F3eHr+MiWT^#7keBLBuGRgwzu TpdByF00000NkvXXu0mjfH7q52 delta 615 zcmV-t0+{{91%L&RB!2{FK}|sb0I`n?{9y$E00K8jL_t(Y4ZW35D}_N6#_x+HWg$h9 zwFL{x)ka!Gkz<)=Wg*16%^|D8Iz@$zl zt-%TS29Mw&yn;dx9EBsW3GTpIc638qA0!`umrz)Ty|re@vlyE60`}L6E$akyTHrJ7 zOx@tXB(?}OM~i6pabRvkp%{xmUx4#9JS`$@$NU0@4pdl=1)w*w-jH%U#Q=6c_F44T*EV?`qE4y}!X|~qu1IiCc}kitdLnPp7tK?QV!tnT zwus8Ls$in9|J9^(p4eOTIrBV5b8_W6@d;r|U>D<6s6U(!cmlVeKO$YlNjMC3Hb4Kv zA-Dn-`kTMZ$_mzDAr&swmh$tb)g!vjT}8xy$0v&O5N+4=SL7ldyawS46alChlr z#^mRdebbVQ7Avm#K0z+Jf8R`=Fh$<|5AxLBD^@)*|I+$x@BAkwPY&HZ^N;nC`OC#S z57+8)TmGDMh`&PP=!fMm+P6%e|2K+-aY1~`qP!Jz@A!N;S${c;rA|smTxPeUX~~S# zNNNABlZ@FLSHFL^|G?1*Qw{T~jyl$e!=?q&E7x5)xpF?=g3>FFwqJVWF6w6ag#S-} cR>I88eC6z~c}Hx3;mN?@>FVdQ&MBb@0IbEc=>Px# delta 350 zcmV-k0ipia1NZ`vBYy!uNkl~B?(9!+x(~v zjOO2$D#3gRI56u=;Mm?TfU&xO25@MGN5HVnZ`s^g9l$`4Jb%|xw7x@CjU48CW_$(Q z0WZK}uxG6fVBgG7fhI5uJOQu3JTM7#f#*~}m^?Rc1#5G_1Mmpk+n&`FKx{tp$DYmL zOg2*6v@CfsW`JAZ9mtA#51^_n#hA8(#tv6rfTt{>`Fgxw1<1Q&_rJ+KfED}jyd?Ql zRdNrY==F)zvR8NkC%_jlo>~?!paXo`Z5g&=VV?Cej{(hy(UmkPsUzu4QbW>$q?V*i wQoB5!Lw28B+mG{M&l_Oble}k%`uZhF-?8iHkYaCF*#H0l07*qoM6N<$f+H`X`~Uy| diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_activities.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_activities.png new file mode 100644 index 0000000000000000000000000000000000000000..481d4e08df3af607a7f8ecca2da3f425fd8dd29f GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY`>?AV~7Xu z)v4$8SR4h8rH84^w%BdqA@Fb$pNxx>jEYQ!Y16n8Yimc*4gB{GnBHLKPB3xUmGh}nId5r*qToTn3f9{RJ2V390@xpEJ$tP* zA?F#_Ee)@{GK*}7J0+@V?{7L^G8YfrY{jS>P$BSyIrjpKwZq1v)lI>(m%U%LRG;}| z*!i0YN4C#2nv^mz&af-@%ag||nCAAxDleGd%q;!9x~Bcn4B1%e^)go1R{rq4XerNl zwof}(KO_B)#rkte7RASsOP&U-3#nn;?ZW?TNq%#t`MHp^m3wEhn9nrq(z#aTy077J z>MQG6eYp?a($6p*6~FLxdQbVTEpr#_eeUToM>n+j?X-haK1Z&3`fE#**pc)N@0h|a z=-;(iAD0+WlnI`yJad1>@}Bnx0=|b>iPij#-4bwQ9@pJd zR~J1=YY+anl7qGG`^I9|9MxU_nyc64zFc^rzusc0o`Cj++eSa)m&Ko*f7PBrM_cyt TfvVszP?UPQ`njxgN@xNAvl{JL literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_cat.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_cat.png new file mode 100644 index 0000000000000000000000000000000000000000..47f2aa4fd9b46a0b447201e1437cc141ea44f844 GIT binary patch literal 738 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfyu|y#WBQ# z_w7_~kB~r#<9nZ`G>J{&-*TY!P=`?4BPFg`bGL9Pn(GERt~ijpIzuqbV0K4XQ`c;< zi$)zBOmkbmM7&sbtHn`e-vXbi1syNH{Ek0Ab6@q$j~hjPJvjdTSN-!l*Jo;K{mQqt zX;ip(K5aAam34=uY&e@9IL9OxfARd(9l*5sg?O&Lkg{H@zX5-@!f6Lrmlr~>${+Cm zX_GhL?5w%9!EH0YnF1&KLSYjdw&@Sd?zEmR;7?%=;LF{>x%YOiK~KUZt`qtVW)pP} zn7mLbd1{_?EBuPw?Wm2u9sG^+YR^?H)0bGaFu>`LFYl+Kn5I9wi;}gEu=~jQW}I=F zE2@#UFutyE@^SI-)slAFAH;6V%Pu2!xWp}NVZ4BP#_fKfs-exbhv_ArmjE@9=xNyDa`t?tIy|wB2E3ZnQ z-9No&!^C5W7XEi$x@4bQZ5Sd;@K_2VY|16@JWY?%xmK7jA;B4X8vZr3jcl4 zeT-6y4J}&JF*hUK|R0Sn6nb zmTyI)65q+j6w$MQb+V@;OW<>!$f)_p$v=KrnuzdWM%4tW1P1xjC@ Lu6{1-oD!M<`*btu literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_flags.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_flags.png new file mode 100644 index 0000000000000000000000000000000000000000..bf5a5e34d646b5dc2c98778ae968bbb795d23ba6 GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfOxM%JF~o!S z?d1L5haE(Y3u}vbbx%0x=oR)dX4lJWz6CGpmCpUs?rVA=q%&n#${V$%B^pcqJ7_Px z8nm?g<7X8%n|0IgJecsPnZLa9{qJ{o`^As{+}hCe(%O*3p^iGQ)n0^*7ZM`jU zF*itM{>IM?yB4LbaWsv8mOu3+%gRY}*Iwp7?fLQcmLKW{wx5*W|9q~#<;~36DfNte WyNdpE_V~qs0?^ad&t;ucLK6Ui1+C5i literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_food.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_food.png new file mode 100644 index 0000000000000000000000000000000000000000..4c63c287f156d23695e22cc951b4e85643614bb9 GIT binary patch literal 633 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?6IedV~7Xu z-6`H0tcfDW-&Z^d)X5X`m~z}HX`z7huI)K*Qj(ARm8~f)?^@cMv~Z0`b>OLKdk%4_ z_SPp)v8;k^Rt{@bM`=@zMN?T(bj93+&K)f8^ElccFsm(K zu1aK_!hP5}V%ZN7xrbs+p5YDwZ2AI4Tqi>hN~}4|!_yFNRU@Z!NU~;s&~q7~tnIf# z>&`6jZkkmzq4d_$bNLs}JkTrubx+Srb=fn4yR27ke?7;#Nn+1tZkuD(FSOs7o?|`4 z^XwL@TypM*lW~t@9FDJfX8S7rQ_7W$by^nw5gjWyQ`U02aNz$^XWm+q3Em)1WD&i>CK?T}k> zDc3#2=>u1x{~W=5rn*_CT)!k{2N}k3udL1zialCu!5GW7b!uRi*~fc5C)pj>SJJ^yv%hlY~U$+o43j`iK0l9KvZe#4aBoGC&7Sgmy;HcXh>do`zKO3;)W z8l2qmonWKeE)mT`<=z_ca{rv{a|+eim7hAntW2K~Ay%PDZT36H7vnhFbYXbw=66Yd8Sa~Ht$gnjs66M8;gwTo?kM!+xyK)t3#p#{ z)H~<~)J~h+6$OU^VVhfHfvTe?X8%`yv1!(z~PwVCQ-%S4)b3rt1pbc#@X-p zrhL+BnO}Rt=5@Y3u*k<8Q})u~!dc>< pr?1TSU7cBVEEqm%-QWlvW>mvv4FO#rAA1~dQw literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_other.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_other.png new file mode 100644 index 0000000000000000000000000000000000000000..bb598d317561d317f143d99a8571a094a1bc4b25 GIT binary patch literal 660 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?4PHLV~7Xu z)v4C{EP*1&%UfA426TpR{K)9?a^ee@#Ui~e88ys~CS3C!o(5)#WQYo_by*nZVWTW~ z{zMha#vyT zHs}^`YfY6F3Jvz)>&Sf|#OJw-Df@v@ ztv+@&Pc`|Ty5suPTf!1Q(i1eEY|6RXG}|C9myc04L-|LY?hn%&r3-jp#Jr05D;e!9 z%3aU!UT@hgwXd6+*9SQUd0fc0WaQV|)>79b&ymz$(Dr`D>0ZtKjwg)f+FjI`Gp|l| zO@r(P`6E#ueeW53bKEVcI;(B#tFE3%f#}J02U`lCZpmsqvVY$d-Zh>dw(LIkH*C7> zf;66+KXNY{*cUTopPLYIxPkSJ+?z;)ruZZBNBGV^V2Vo*QJTqoVh`JClh>}_8<{_J zt&hK9^nyX{`G3Cq) zKK2qu^M|V%?oO<>IK1-l!bgwHA8^Kb>{7n-C}_(kr5Wsh6Zl@Vz2YfxKV-b4M0&-y zu)PMRT zw5YW~vFmLBXUY{elYoOuoo_GPDAGPH>-V336RLOa+jC`Mq!)k9oZ^4Q?`+@Sy|c&T z$(^#d?QEDOo2uD## z9{*7jT&hcdn7m;6(-^LB`i7~>cBx74`yanQSZ>i|YSD0d+fK;^sgC?# zB~z@nyQCrnoo{gmSDpYiA%UXrP@kH1p={6z7Cwpx1+hF?y$edN6&Qc)nF znrTzB!^ve=suK9q)@Cpr5jn9=@@&Nx_TH}d>mU0|T`01NO%wj(exrTL;+X}rA1LZb zEbR4PeBI_ew>{^)bqrI@y1(9jQO;S*TvBXfS-$r-+a+!T$Kum#3&po~mP$VQaBM9* zyNIUT;VHMD9H~B{bmq**8gA{V-sS&Uw8ILRO89@ttQ1^y)M2~2_?oRxOne*PXnxsd z!opIu?tst>d3ym3_dN?1%sKYlqV{vWv*bPp**Yf?y+f)yIFmPUN9LWk{$np@;c)I$z JtaD0e0sw8k4@Cd~ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_question.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_question.png new file mode 100644 index 0000000000000000000000000000000000000000..66685630d11e4cbb398c852140d7aba6968e0468 GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY`>?AV~7Xu z)v3F^m>osh%HKAzboN$gCMh>59XX~hpx+xBr=)N&N+)TdYfwb=FQF){8yQcTSy)7) zyEzsu`1m{3Z$@moIh$bVgXD8h=WpI@Y`r<~%l+s(?^$=<%@aJUrE{?5^8L&42Rvnt z%Zf{{SzN$5>jO(xu0`pIuwcJgmmIE21~f*$a9}?5lBsLw9Ft37mu4-{SF|~#>ci$5 z7a+C#>Wn|_3KuqIm}$j*c;)iLIG|m3hWAshBPP$-HcjtdaxHlMoEet?*!EQHNy=X) zx5)hBjb-xhZ>n@H@Xh|xbWWj+^|=AlCE0_;&#x^Mx82cEwgSzbuI|U6A@w(fCDa$2%MQ45J->N$lS& zQ?4^k%(~Io^M{>f%SnNw*E?kn$Q|82`R0b__72DEwRB#)W=EvgcCBv9QkC9(`c6vl zqR7U`&zEg?-tj&6$7ihot60LBKPCQpzm2C#IDS|VsrZS%AYYY}W6R8p({^$+$6Vj_8| TdZwlyC`vtD{an^LB{Ts5zTfbI literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_recent.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_recent.png new file mode 100644 index 0000000000000000000000000000000000000000..63618f5c0713dfc59d8d4584cd4e9010c64095a2 GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftk2WMF~o!S z>Qr05!wv$iZyAJwvZT231f=p9EqQ|`6t&7Qa{dYtG2zIYIIT~KHz>nFAu(lNdfMBs zztsIEs7Ac3eE$Ay#kJk9HGaKUes{@X*0SG6WSgD4@YmoUy~)c?S->;a36gvx2P`AH(yFG4&TAF!z;FnycV@u`t}K}6v-aYc`Opbn-9!c&<`d$0WF*fCKjCT9eQyG|>*4nf$KxM!*rW%2E$n;A_oiZ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_smiles.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_smiles.png new file mode 100644 index 0000000000000000000000000000000000000000..ec3e4985c23fcaa104d85e8b669cb89c4878f853 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY>B6fV~7Xu z)v1nNhaE)PCa=1{U9$LrAD2^X#ER(xHqO&+9gfB=%ySW+w@^B^Qc%20#3iPJXSojX(gzxwjblPZBxEgu&6n>p&Of%OD|r0gROH$y=4`nS`H4alLsW!}H;6#4m=Cr!)Vdhcn++X?Q^jxL|AZQYWy^^5oeh7?_YdApQOf%*!c zk6#nn!V7rZ3mE$^eDA9NH)9v4m%dc1nd9X6!@P42OcO2N`B{IK@U`!&3WTrx-t<{* s<@3_DoM&!4m#;6V`#w2S`{(7i+Q)o-Hp?7awHOp{p00i_>zopr0G)E~EC2ui literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_travel.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_travel.png new file mode 100644 index 0000000000000000000000000000000000000000..64bc43326479c8eee88ef06f3c8f6b885455b9eb GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?4YNMV~7Xu z+bO5DT?$2xzyG@8;Q7^c&*!{rX5`VB2IScySNUcHX~2?i*~s@fbf5&23#-FaCZHd-oAqzHPOcbC~Z>-n;#O*N5+8Oza5J TmP+1o0Tij8u6{1-oD!M@BTrv=hO?N{AqC zjS>XG`~cIKUyx3OSg4?dOC$05otJqb3}Y56i#hOd@4S1@eJ^h&u~?+&2LAmGc=b+b zjEPg9gjpDb0Z2dz?x6^I&-2Q}=EdM~ID{u?q-PrTVXEN{G=Gi28I-~4gk%ARAqfc> zg%lis(>KWx425n)VHG|>x`Hj68Iuk*ut+`a_iPa5k=|gb>fu2r%7AnSb1D*@xtR@Y z51vIRfqu=p=Cnfwmf;#!cwsNZKM8M+!84dOYlpmBC;fn1sD4r8aX1G_Us0&2&D#!R zc5540>xBoQ4S#On3sPz#_P`}b*;->Tr``btHKJ{>ha|f9ccFn}@Cxs+2F`Fy-WePk ze5R)#@*rhl&t{cdN!orErs2^q=ml*C2i1F~zY9)%zk)Wb40lEr`aoaKgj;Jh;?+U* k|7dH~8}&yw@cRw?04jIMXbf7-Z2$lO07*qoM6N<$f@xr_(EtDd delta 390 zcmV;10eSw01cn5ViGP$mO9Md^MR!rt1wlI-1xbi@k92X5PE+?J!w3iZW$4@b7OR?sP(9 zOpf|AjKh$F5Is9?h?j93Hn@ae{3MBnsqe2$E?+>8I|uIHhDMzsSafoiHl00G!IyC zJ!SlwA!%m5m%=X0!yzp3hb2VGG(-AddT$vzMu(qiPnwXdg=5HVf;17<{GQsRbr`eZ zb3T%juL0p5LaM*8qd0`#&7D=bj-{vQww`m3nZG|p2^y;8f k(D4h=#mLN>-2gZ61@mON{9t_zLjV8(07*qoM6N<$f~XanZb0DWzYBIq6wC3 z?lBg!@g=af^*l3GQZLwPJoU$>Ck|=32Uc^YH#R?uooeB!5S{Q`Oe?eLbHtpO=-dFK zpE`Qx57#!__TJT*?js?&+Ez@kwyfi*{!4AWw1X**>bLAdT()F0{r7pma!Kw<(Z2%y QJ0OR8y85}Sb4q9e09^}OegFUf literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_fave.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_fave.png index d4c6d083a8a68dc0bafc698fa82cbbe7b5b6f532..5b334ee50cbb19688e7fb3b63e70026fa50b3c57 100644 GIT binary patch delta 642 zcmX@XGK+PBay|e}q^*3)jHycsbpI%{ zs!U2q)XjQYR?oHZGyf8vuw`3L%6kZJ+PG=6z-1P}w=T0qH{P9aKx|Rdf~hRbhMk3< z_UwMnXZ`rhxvd*cG^U@QTYT^PnK$q5L~GnBX4&`ou)!M#Ypz5A7Ss6o)B7GW<}`Nm z>Mvg3vC`PAviHx)YnS)^i;-mx&v_BNDPYYLsah7ES8d)mimTSHt-tm*D>AY^Chm+< z1vLW51^q*uesaw_$oyiHP1;uVJ+{x+aA*AXTwcJz{(-$N+D=V>@m>XU zW@q-A#w|M*{kWDH8^(LZyL-Ke_1rLjlblstJNdmnaD4H-)n>A6s{1|u1rmKdF<%bF zUzj`Jz1LdrNo#%qudShVYh`_Qjr#ecv*g4-HSCf4XLZ$SF;Dt}3jTfe6Sr_xo?dx4 zR`8(0o2EsNUPVftJ>ItIrR0fAM_);FeGuN3+&hIk(HiBZGtPk0hNr8a%Q~loCIIZ75IO(= delta 560 zcmV-00?+-L1;_-DBYy%9Nklz%S%;J6vltM=wSmjO?pQUN^2lFXjC+A*3d># zvnYy!5W!|a&>(2ssD||qM3W*2g&x?00!t!HqsXKZ!e0L3^>0ps&Iq?A}x#}_&YYy;YX6Mto$%4X04yaYY~i{rfm zn3ywoN;8v;V4l(AjCHGrV%{^KU)c;AfMH-7*dA*`z*1lbFgaHSMK#EX8-a~LFR%`{ z3{1ti1grs02d1%d*t|el1}lMXpcB{vtOqs$O@Vs~><7NYdo%Dnh>7*Lz$owa^NhqUc5A znEF%wsP3FSOn^JpXQ7aD{}KFb_`Xs1{3Dzy&}y|mfEVisem;C2s++52T1)V^;Od=l zI8!3{@xb0wSJn1G9ziym)c5M65(ES4xZ0Z6XhnVS9e-E?d@b0ow#mRw38$XEgSP)G76LS%RcK2nd2K)h(RL83$L={p100009`Qpu=H(M9)bX{31u70oK{qM?aT?GQ4&&nL1dFWr8dQcZU35@ZX#GP$xd+mVf{tc1o>nW}73n&6zb(76lH;*W4e3JqIR_t} zeE%W#poE=Hq42e~3(L<%{jvP%c+SCW;^b&mn?l)i>1WpzmTIlJe_-#!=Oxb-E}6+_ z@_y=1P-vYnYsqWAplO@hFFzHRd+FeE?`EF)gr*a}-Bt=;w0^6gld~d+Ia$U`S$blw z*0EV~6Zf_G^S-~|<1|C<`=w`QPr2uO%(PE5zo7p@kY&24Rj4E#;qxRnI^dbH+6U%ehffG?&e|jn3S&=KKbLh* G2~7aQ-MAS5 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_folder_reorder.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_folder_reorder.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c7f26e1140851d1d3192ff318cf46c2c883e9a GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftijX8F~o!S z?PObh7DtKW`L0eGA|WA7O&vd2_BF&+w?0vk+Uv3?DAxD*^$8h%zAlc6ft8seLi(*P zd4K-xHZI?sywh~`#EMDv^QQm*yy^TKpS9nvt9}$WICkPbi*~|^=Uz9yKgm(|EPC?1 zjrp2F`N74l^KYM?r?8NBnM6_ej5BPyANY=O3Gd?!y38=C)PC*x@(sri^2UD4_B`PutlrPUROv(v-cjI@m)lR9tWX9cm+hWdS?qDmkzH{JX>Q|di=?4NOd9r6s z3;1=K*Ez&+-}T7v{v)ekd47uJwqGo^lU_SKIL>^f!OHx}&(qJ$46_^zo_wCJ?I^U{ zF>LNN{Y%LgeqNfIH}SrQ+56`@JxiHq>|zOIf9ZSR{&Bkn3tF$G^~q1`-_sOSHMH#j#OZp>{uxKQwD$m5GI)O=SQQ0!7)ATZ&Bp@#s60Edvr z^!p~qi`cr3)-%t1s6vg^JvHv*z-tW~xcbz(2 z{z%kum>rzXxKi?%oYP^AHw+t#H)Kq)UfH>I$Aybur-}w{@IGi-!PKtMkm*yRcfjgK za_sh_YHVMg8ve`t8xpg>d8&zJa?HgG%xPEFnHqw@ta<{I=u!lGsP`{}dl?4&cA=J_4N`njxgN@xNA39!cF literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_folders_bots.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_folders_bots.png new file mode 100644 index 0000000000000000000000000000000000000000..7225b288d7809c41bc770a2f7e2d906a88414e2b GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftkToPF~o!S z?G!^lW=9^^%>u1VtwLQc3M@j$9iDI$G!#tLFb&mXU_Zh5;^p*7YC-|5Qe0E`BJRcC zOp+)Q+&pnb(#zxbziqdjCA;)$)Xh!i0V1yAJq~wYfpG`>Ce|H>9j8O2 zO`;aLePE0`Ah71QLgDF^YQDFGq)K$H=CZx{{ouyxG^x!0b+H|#`!^-pnDi~3C?I`w z>n(|ox)*F;Yi&CqYw?xs$IPc8lihCJdA%^6ySYLBz-OJ)_deDZupFwk+Zc1-M5>Ns zRqxwh3&aR&ccSkavsTm;=d#Wzp$Pzh;LE@O literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_folders_channels.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_folders_channels.png new file mode 100644 index 0000000000000000000000000000000000000000..106a21fe3d7a3fb650046e7ca02bd4312f362289 GIT binary patch literal 450 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfOvls3F~oy6 zIYEN;uoBC^|NqzXAGzpo#ygaskvE0;k)Fao?js5tnzO_hcrUX(;#LTrctE~{JK_Rs zL)XlPq*V?&9eV6f>=RN_Y8XQvGo|FSCGnY=)|l zoyg13mC5iiQK7AI^@&d`HyvW<8q5vY#XehYL5zaHb>@vsW|ec29C(c!{&06BCTRN| zed5L7JCE5|*5kgyb(uN88rr-VJ}R$Jn6ss$_f|)1 z(?Kte440k`af>=-$(cE2{1Kd!8vEz|e16~3vf6BAi1EK)EQ>DicRa3`b&n}zp@8ef z&=bG2=RWNIz$xXgGWngt7Qu*S(HF(P?@1-Ie1C9k<6Q@1_G{(7ce8Ep$pp*Qd~Cb1 zYW9h8n`NPIU(dRBWKHU)8&_t9{os2awc(l1y39D?SZTQf6WC|Dn$9Ra|76lUtF2Sg z<<N4~$R zlIru|&6y^Bk@=IE(FyUp9ikO2V)GaJB?m~aahAL@;c-Np$qDE42YZ!UHtt#&bwQ$S z((c2-^B1Hh9=w`mBU}9btanMNi<|h607Cf z#{5@j*O@<+2V4%!Q0c#{qbk9+boxq3v&g4nC0Ac9asBtSJfK1H2CMlz!EG@cBmZ9( a{=qcq+re(#Lf3hqX!3ORb6Mw<&;$SuOWj5Q literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_folders_muted.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_folders_muted.png new file mode 100644 index 0000000000000000000000000000000000000000..73cbccf35fc6ca371e0a19edcece56bc1b59e2aa GIT binary patch literal 566 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY=NhXV~7Xu z+bRAUEQKP+%Olq2ToGHiB=ok>Bfp80yXQRFuvCLjZ_@2mw$>Wc@7}sS@9DNcucDwO z+ceDEdo47VOt6ofzubK0vWb7s?)vy@^ZW1j{_MNI-FWwYPL_WmQ@oZM9MRg9$rJTZ zX4zb~E4~H%LYdD^7n?q^vS<#M*m`u0aKdrT?hUnPEtLBXnw~I!*KSwAkbWm{jZ^PO z20;ax2K5~+W)jRhwaarZa{QDvYWyMVw}3J2fVNl<`vW0S!Aeir@)M2`*KW;R_lGCq zu;Nl@qgT@|TfHs0UV0>hW09}uxk;-P)|Yy{=3V>tN~Tpp_|*I-g%kF_pZIOr3B?0=&N;F@n=4(HdX~ZR?rnvQFK&wzzPtSBwQ}Cun1Bequ`lPugl o>&~RfdCXPQc7Knb{*}d!q2R@8@mKm;s-QUYboFyt=akR{0Ou9p@&Et; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_folders_private.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_folders_private.png new file mode 100644 index 0000000000000000000000000000000000000000..660c678b4cb2c50485faccf0bfa163dfb9a18f78 GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?4GBKV~7Xu z)v5dSSsX=F{FL)^LU{WRJ^zgW-lWU)H zjG{S(Y;z9hcT0nSZFz zXy%`wjn8CSFK^%z{cw|=d6B1i=-d_=5yf?#X5!gGf`_v2oNDtc+VoAOw7S7T?yF49 zYE5B#rjwBkbsN@tB+RP)xrIHeR&B!fmz#{6_F8q8vFXJ)C9$qu{h4QpgW1{C8i#1nWq=8)Vfx$KJlAgdY|64d z#P)YxM*wRIkJ;Kert{<8HL1j`ZqZ$TLCRtO+M>LV_gJr967V_D?eveCm-nvCiS~6o z6Z_{HOD^$9`veVvexF7Kj`;G&}HLgw?Cz?sKoGqB+@FIeLk;bXVkxiBo?R6^- zGK(bI^BfjFR^s?D??$73!BN&W&-Z*YxC@@I%351LVZGJt1gXZZtvAj89$V38Y-b?z zGpzgL)eFT*>|$xjW=p4Tf6W{9O4wE}dZ+f?!wd2vZyM=+a9KM|Y=w5^>_>t8AGaM; zu;Kdcwv;WuX`@!g@eJ7st(!KiTf({W;N;YOD*TC;FLa-=UMQZ&b9bKD61G(fBwva9 zYAQdrS|PrQyXt||q(%N&8x-GExXr%idu!%u^FLl6W(K|VFN{rKxW4-3mCxeGDo-5V zd2Ldg=*GspP1CkqPJYYd|7pGk+sj*(SN`pNcJs#a>-!TV~7Xu z)v31L%#H$W#dQg@Lc*f56qj5y5#(Mg^7e~3$E}~nO-=v!58gVbrVv&qk|gURE$XUb zmL)v@`=;qRde+ZcM65pCJ9F;bp54XUt*4*~w?+1s-BiAX`8%Ej9Ga+n zNBJ4|o(9(E)(8E%ElNHmb(TMVV_NdUL}&7X>xCT04yxQ>m=qQL)#m8JXH7DKDBqBLDDzjvi(gfkNj-5OV69vAJHBmx>jQ2$<{Nyl8lPqwa@8(;QXmsWh^q~ z+fPxOCF;SCrL3C(BD& zzJrXfuy;c}+i8Z6&I|holv19P|dKBO~9Dh(Cz@&ln{m_F@<&`8h3Px;jDZrUP$& z;}0DHEelF{r5}E)sY-jNR delta 327 zcmV-N0l5Bx1K|RYBYy!XNklxie~!@IfZ9(# zGr%Kooj(X6^k!rRiPcc=)mwEc&nZM720>l)12^jAPaAyJa(^_rQYU`HAgk4A(o)Cs z231RL0=43n$OtdM2CxoX0t+F8yQ&G6)C;w(z9rO?-#F;jtoQKQ0oH&A;1qZ*nIJ<4 z7y;(vcdK|_osE5*tD}AF;VAMptCqYSFHR>452R}Y$D?oe6Wf3ex7Vj}&A6O~7m`_nHR>9xu3vFO7Ca4to37#XlDw?E-5AYuV ZyaR}lCRqr9t%3jm002ovPDHLkV1gT+kY4}* diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_forward_check.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_forward_check.png index a1ba9ab426446a0ad0e9919e74cc56f627eb10a5..3157161cfe4b1f1110e11a92476d8ea7a6d5b91d 100644 GIT binary patch delta 253 zcmVcQ_PB6iS-52dksEl-?d;6kV>~a7bOS%J0TIbUA4*^OA;e2i zF>w9>(rKs`*^+&y4%0g7sv9Kaq_j1mcT%}8dUO5{YY!X`S;b^TT~ zgp)|B_N`)NB{B^m9m5;ekTdmK-yyC+##)dL{`Uqx!(`p?>pSW000000NkvXXu0mjf DOvrF> delta 284 zcmV+%0ptGm0+a)gfq(u7LHJc5lUun=q&atb@aMn#Qpf=LmwWCPoo50Bl<&b*KnEh|lW1G+chx^5<_*N!SC ztsyTnb7DQJUX;`s^dl_586-|{U}A$X2YZlQplZVFIgr_~1%Js6>c-?ELbwt$c|hB= zd@5%0fv&ck<_b74Qw?!81V3X{Uu2!Bra#HL2scsd!28!T51(s2Gdu$MbjcFDKM-pR z?jYG{$y7}U2H?MB&AtX#knA94SeAPxg`ngjbfPVqXNkl}Z720xBDMA?SSs-a;X+$`pTtXdc+In2zN*_r*jOQrI!B+v627=RgAnwDSt z@j_JuOo8McOiat4g3tur1uwwm8RG<0w@!it%~Wy*>PnV2AAgk(jB8?_gR$WTEjj+G zfwo0655+xMzVS2XVoj_8Bo{I7cD$@Z$a$7!D-TMWKgU$O5DIFmTEv$|?nxWpEE3%y zkhB8w7vK(bfJ9r?2P-i0x`l?^=?r`T`8_M9CX#EQ;_};`S7^wcZc#A+gE2m1%=`_6 z6~#GgHVJBy^nV?Y?@b=CJ8K1h%c1Z-Si5~&Yb#lUwkCZyNMYRyEmsHD-&BWK@^!XqQiWZ+5Bz=_LK#y2g z4mvb2yXAaH{D|u*pST}u@xY&tN^!M#Q=Ui^B(M4*v10-Mh$+N!i*rQ0Zf{kH$rle4 z4-!9i&PiXIbHyNkmi0vYBQ_>}0ESjnlTq=Z@rrL2lB?hp=+DGOe=@#>>9=TeyYdLl g(!Yc9Qh%I%2e!QVwiBU|EC2ui07*qoM6N<$f}x7xG5`Po delta 589 zcmV-T0K^@nj#2-x=2eKKi@a^Jnqv*-%tzjz-P|6-+Ruz z@6EgSq*C|F^7(u@^ujWnIR6e`{?9L}MPMFeJ1_;?8epHHLVug!TVWqg9Y^?asJrnY zNazFE5QI;RPs0b0^}7ukiN|2lv4EEi+_pi6q%BDMi5kOq_~z>tqX!@xH_i8D-k^;* z8wA0Hr={FDi`K>>fz1&=gBs@ZP7CMII-t?={0%k`JDI%p2GU`}79*#M@e=5pJ;aAb z+)a>y-h$%&GJl!q8(0bXuiye!LAD6zkb@S>i#%eYQxp{tQ1b$QgX|BiL9?F|ih@QLvi@DXG^etsAu_JbDJ(HjMs-e?Z=Mh#X(T&%5VlRa3p+{h!=L%RgLZBR{I z30+ZQVg4uDq_0_w{s|6k9Q{|cffLBN3F|Luv|sSm3Y;(2R@Bm;!n);08<^m{bPk&iMr1qeb6<@i6En|FyHC7mT7R7=Z&gcI@Iilz}h(6uGq%JGV(`_aO1= bcPa4_UQF7`YRoim00000NkvXXu0mjf%1j{e diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_forward_send.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_forward_send.png deleted file mode 100644 index 9db40df5f1c09697818c61a6707dfd8fa6ed4e58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?475JV~7Xu z)2X%^Zh;cVWA9JtSBXD)#N{TBkC6sj*FgtEFVC(V9v!ZY8#`P*bwnlyBpC#%bu~U& zT=T>@ZvXyw7x%8Oz8|-D@}Jk&i_ca5J74_nt?l!Dfr0h0(>}8@H99bTRy)z)dU})J zoSz-Xb2c!z>GP;5SU)aJV4iN5}_W`~fRuuY}`hZV~uy^zX?yWTUlJrFxoRaz5iz;|BZ z<%;98*RAVb<~k|4MejyidIiU$c|Ucgf0*$@_Z8QS9w+84ljaA0`n@G1>Gj3Fr)iBV zdap#>X*4U(bvPVs7MUC?ozk@3K=+{Z6Gy8G+m_W5{;WAoOD<1+Z8U?ElY3pl^);6 z7I0otG&$5?E&NSQi>=l${$NeIpTu@YpBueSl9?eqzaDN|DEvkI*ZHrUyM7yNn6~iF QN>B>$boFyt=akR{0QrLjqyPW_ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_gallery.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_gallery.png index 36c7c50e49ea1e72d772334127e6aba48f102ef8..5afebfdc47c2b80aee160e68c4afcabc45d40555 100644 GIT binary patch delta 677 zcmeyvyoYsyay@7ba4#v;JrHKymv^T$njd!R+HH+OYZPU z2Hwgk627tMKz*!%(*q?Y&qWtn^O_X6oXVYaqkoy3oGx?ZW8KQx5+&j)7<4Yg$70cn zvwQ6B&#adFZu!_`ao(Rp>F4%7pHuy=zx;Vw$(wT4e{6>gY<%{M^ZojlduxA_f<{Eo zM)OSj!_&>a0~mtEn!JKJ3N&T_%(Dbf2enV%L?r>z9o`#ayt#JmVK9c zvm|>TmvY#Ox3UI5%xv1d*VKQ|Zq+-a9bUj}-4efhRp*givJb48JWm^Tzn2Peh-&T; zul9(4E-!xW2FsV<3jC)Fj&922Z|c%>V&mGtd0lt;LRCfHOFS~o=NF_uFkf*%Vh)q2 z&cOz*#Pf&DH4eKRex!G?%)tAR_k@yj=?}O)ycalKoVa77W{te#uImLtOlAk`y-am^ zx{&C$~`WsR+LZhC@PG94Ct$We01@jZk zFR@x~*;?H&Q z#UEg$O{$PWiy$_EG_h2#UrDeNQ^Zn;XrD$fVvrbbjE^kNhT~;7$zIb4zOc-mvor5| z=FFV4{PW221k~IN0mDH59+TPt=7Fz37cdUI1!fC}EX#hssDC5sC+j1R%i|A55ooCV(Db3|Os^!K-B4in%{f2%H9<0@M3l^G5RibHB+`0gHmyz)9djxNn6mI0k@A z?HSa?HDCd_1#E`MI&c7Z0yMYz)J^qa+5vlb4yli$dmgA?)Hmv4%-#GOf#YGj)O#h( zeWhsAP6Q^^mVY{)%-s&+&+5hW98?LMQ?IIxHu4)mv=(+s&Eng6^;G*oO9dV!RHMEK{JRr|`aO$C00?OFf; diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_gif.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_gif.png index c988f096b4a302a9e06aa746d4a93ec8e741c3d1..d3439c1e0a8518b3d0fb79e1b5b4fda7ffa7d969 100644 GIT binary patch delta 608 zcmZo<`N1+lxt@WsILO_JVcj{ImkbOHE~ycoX}-P;T0k}j17mw80}GJF2*grA%)r3B zfRTY2NHc=O7BInOB^EFv*dT?EOiR}Sl|AxwaSZX`eLMBMwo9PM@#l)%zF}D!Vi5|n zHO+#iwCd#4-<&*m!^Z6aW=k}*rL{Y6M0osURy);pG(s~{BWTj4KL&R9&A;!fOy0A{ zT+Ga`_Su}`_m=mqi=Umn6Y=K$BA*2T8eb0Z#W>3ynw52R@jbc!Gy8mR%utPMuJVxn z^ur*`J8-*Vb9{+R`sr+!8VNgx_ew8wU3ji!n=CPXvvu;4hphFt_8iq>&XmygRTNXs zWW1R+b(U!Er6SRb>k_Z`J=wHq(=XQ5Q?D=EvgtXbSK_!@v2i|2R zMp=Abk*P}rYtw(}?#XICzrKEAhKO=Jm-U%_Zc`ff>Hp4?Drrc&kt4P2!*+w*qSxnOs+Uv3r642F6X&JIWU) z`d9Z2H(R@51Rz1ye74iJTST zaX>gFQL;+$1?T5qISZmLFOJLf@U}lRY2yW6%^zz$oy(iE@3k)O;f<9^zQC^)BzLUD p@a6lTOn#MIhvPyLxBTDnOnAnmJ;#11@09_?yr-+5%Q~loCIEx{0XF~u delta 488 zcmV?Bvc>u{(da8deq>1&va4|zYoC%(wi z?&hi@Em(ugc!SqCj|EtXN7#%FS?SA+E4HPVs9r(75NELj2Qd?SF^v0IjComH>E<*h zvb$D43D%>5?SB~0bvu^TuFaTlWjFG=tmKv7C{ZcV?DTiAJ9RCI*5OlETs!>*e8gD4 z32NzQ;Q=n?Ot#^3MclQV(anAnw6eNGS=rGF((Y%QDd)+m1XVM*hXXjA9ms^|avr^f z&8Z@;N)TPwM^c*AdHxhPay}!tj<48?+ZDX=>)lW67-8V2Vx;O*G5n`i{}LN}JGh!% zj1Hjsoe|NFh+8^a5fMe}i&%!c`DRW9ja=zh*i@_4TAdDxEsu!f5%DA*oXxOss90000a7RBDf@hZEI9Zz>>|~d7|CU);Es2YBe=?^R-^`WN}RNn?1f8P1-ce^EEn;)eQ=6E{r$Ilzp7R0Kl7Kh`S7&n`<&wa)#q!!?`1jo zKhJP~qu0`+i60GKupj>$BV5xxEA@k+SohyGtKI)dYBc)2wPtb-a#tN^Hcei~QGfdrr~WmO-l&ABH~nv1743Uq_|NFE zv1u1;@BcEFK<+aJ;k)CUVyre@tQCLr&|7Z1$(_u`c(YWwSr)r*IsRY^*{;F4Pw02k zbj^K95dtyW#k{bKXXz2$ljZlyZ&5e?Ck65m9=4x*LW5D p@Vd$A?V2M0dM`T4%vm4$pI2q&q2v=;jmtnO$4AGo8Xq)rS2V2kJlFNajd!b^_DNL^?gIBlDW*81FMg{vd$@?2>=#7Sup?r literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&N!3HFiZux8nQgxm#jv*Qo?_MzEYB1nweb`gQ z!upY|O2)RU!Y=>8qgStb;=tKg*@{3nY##>r>5Wd(H4ufoD@k zk@p4Oc2@3Cor9?sp*o5w7Ov9-vMnN~G4Q4{J>qxZ>2i^sq1ci!A!>!(ggCW5uNt}j uG)8c)SJIiJV5_he@oi@d}ZScs>e#+1$timDo>yLa;#Y3~{$6v--#R+V6YG>U3qKv=t_tR#( zLq!wRrFsOXHJ_>Oc&fBJf>S7I=?OKn-sP;HPB>iK@Y-a~$3uG=W=1bQ`m{m+)AS`% Z_O(vtJU!RmQxWI@22WQ%mvv4FO#nt5L_`1p diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_groups.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..f52e63a986cfb2e2ae3f6d2a86e1129325690e06 GIT binary patch literal 658 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?2o65V~7Xu z+bQR@T>?dpKlhFB@I8^F)*^DVV`^^@m-o#ZXAkw)AM85&hyAm-f>&f<(53|`in|Rr zIp5TnEWh+f(y`~itIF?uKlWMTw&mBCcZ$z_pHqFm_OqJU>c}I!7Wc1uFAbVgW531u zT;ZJG?@L0TO4zZMC){RqbPr{ItJapWV-17kjCNCvCNtj~RclX{HvihyY#QIAz$dln z;jUSm1eZHbGxfZ-cEjQ&sa?^%$DV8QR2=GA|A6(%I)(hKHD^EYUMp76zilWrf4RZS zX*1|;fXK!8SyGgHoOG2#DjWoM*G2~TMCu4oi4 z@Xs^(^yE;TtM0aU_p{A@eY9S&x!hq5e_`NUWQWMvF8_S z9_;sNP89vpwD^tG!5zCkdRB0m>=D#&uC8czwY^m=(NcS(nTcg>V~a`m0(IZwOTNFV zBm562zj&V{R>Hme%JNdKw`$Rfl9?}p3b?H*jcz!sWtWrhrEA@1XSH>FVdQ&MBb@04M1cuK)l5 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_groups_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_groups_14.png new file mode 100644 index 0000000000000000000000000000000000000000..1928557da0f0fb575f0c8afe04a2afaebc2a13d4 GIT binary patch literal 814 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfoX=Pi(`lf z@71ZNy+Z><+RtxXtr`*{AmkN$G@z5?7yGG+mwOyIq{JG{3RO6SI2<3WP-_x#?2~1Y z)FFe1GXld?tb}znS`amTk z=(?lqH7Cg*w+=2mdF*821V1&6n1<{N3})J!XJuM?NKc4cy7rs&Ki40pxbl*}yF6F? z)5!nqv+hQwoSl1w>+ZZda{OWY)!fSPf{>n?@NOOMOCvXa6D zO0249ytLD4tk_zV(_ngi0q<_ES)NsCTG=0>6?mQPT_(h>-FG&%g7@_Vo(&7QRy|8(tuXg2 zVEyxT15bCr#LmYR47c@G_|1AK*VAOeW92yYgW!_#3tXq(Hj3V8v7UKutK7T=V(b zmJ%U`-tbC&3B3Y{!n!3HGXX8P_2QjEnx?oJHr&dIz4a$Hg)JkxxA z8MJ_G4hF{dOa>N^5+IfWVg?501&j>LK$;OGwtxvPE4P3d&XxcvbY(oWl!1ZC%+tj& z#Dn+kG+PfDN0H;P!n!Jg2RW|)xap!O#>QL}D6nO+iRSr3R-qh4S(6X>v3N>Kb8|}v zKXGE3W_JBYV^?fThJ)agB?7@e_Wt`~Ev(uJY&n*PCTN{q6|(flj{Qk&e|c6VGHiRuV|A$8 z*#7`W#^y_%8|<&mSfUm1QME$AFXUVmqZ4|!Ikacz9 zx96Mg>zr}Pzbop}SuP~A(Oy02a@|7aFH9cZmmV@(N>mx{VKkkr7f}3zWs>Q;3?=g~ zW%8>V1BxfiDgPj{?=btTGYc2Dww!R6m8~^@?W`U9eRlcr9JlYEq^urt-Y9Bwd|Ny* zc~wg}&AHbgX-&`X1pY^-+?lQxoJ!=?Q`A}QbIa$ihpz+k zi^Km}odrsx=B^X6dMNF&>}}JHs0X$yPXBE=Ugl$P+>*QMb~V#ud$uF9j=qh1koriT z>14{mAdBq|XO*`Jte@=d#;yABc4O%7;?~Dk*Is$oCAc@`_=O+Sm+0(U)>Ky(dSyOK raL1mq6{f|}ru`00jf z%z^p8&wRP|!hdcn`=e?O{tosp>F44rBT8&7t}gf0+huYm+3=JN|Gq=DI|N(<&65@O zeAhU``t~2&ywpa;nFfivHBC!yY508l`{eW5l@mYOd^wPEU-*cLxPx3#0KcdKqtpV1 zw;!I{3D0NBtB|`u`ild*2Nlb{i~3>rPB0c`HtMr9X}-ZFx&nJ5b=J< zZqh#YzT{Uyg}DK(9~0(C7EdYcU3&6bpW!u@*8wx~X7f58R{OH$uzo?T>M_3;-l3m% zRnJnsCcU{i((+!Lo2lw2L!R(NixcX58y9Yf?OdLF#CAi!sa^HgiiJ{Q)r`01{!aXR zKyCtGvsma`shZ}4d4i7=7wnuKvo>Q%rOcA622yDUL?^7e%kpS#;n5kzJ&zM?Om5#w zd#){IsKd6`(=+zlS(C3m=hS?kq+j{G*KrXWo9r~z1(W{>-dZ@ddR975OSx)m)P>sX zo_uCX#TWTkWRwT`MI;1G&&oVxK6_Uj(@KW^kNbO#|MMT4xIsMXA@hqH)-Od~mux?v zrg1gqnAV5dB^&2`3J(|c{$3;+C_KfH-KOdK1NjyF2%?t~kp#ZSxDXuewZ}cTcO<%qn5gx&+y;vp>kaO3=(W ze%OKEpZx=8Op5!jh`le2km;`HWS7p`bvc`FD>(|BGikCybvp!j2=2Ufh~I!?t-V8d z(-rv#$6B=)_s*CV(4zKJP*Wu(WtP>yd4+v*cHXHD-Qvpsr{;X+z3+RBzn__DsP|4@ zTVU<}#}+4_bSZE@dl0K2P|%Sse)jYO?Hf|5lZu|bGug=iKFc;a!@#^#W~OPmmJ3De9K}KoE%bO5F-!Mm>K(?_3(`NbeEH1o zAZ7UaO^1BZ=Jxt6Yt7&6d8Z(GMI)FqNwH;r#^Z|2eXaLc?B(JbO}LNmmlkNf1#m}nBJ|WMquD_AFN85loXm;j0>q)=f zJbHZWihX%_>))h3CKonOaOyNMI_~+qPU>vM(O>lo&36duRoqkg$XD`u=`LP*(Y;SP znZB|vSR1;g!K13Uq|5J$shi+kV~^YS*US1{%<577@A-?qTLqwNk)L5b1R)z4*} HQ$iB}`7TK? literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_handdown.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_handdown.png index e896528ee1a3e7da9ce3a3927f3f596c4791ff9d..055c3ef81a8a43c75b73120577f085c89c68ec80 100644 GIT binary patch delta 532 zcmV+v0_**#1&IZafPVq=Nklt1tG|UsI&Y;VFnp5!+kbEs&f6@9KY(pmVNuue#T|pEU^)q_U4rNuXtTBHhs27li7Is0}>;0000&`Ijj*r3v-<)&L z^UlnjNu}g;_KPI+kzNVO1!BuX+x@C43Dy|Ig^Ep?M zq!y2$8aChr`h1;iI0eP3z5hm<1}*RtBu9p9`C7^~O_xhhoJKXMacI*T`3zI(bo$7x zN?b|~pz%X$Uw=X~6ppF&`;Xp-Wd;B+-C;YHHDR zmuaU$1MuiLO1|b*q5&?IyZDYFI<3~J=zv-a9-97U`W<)o%xrylmGGK%1~$DPy$AJ0 z>##}DC`exU2=;>WKP=E*HZU@N5vyrd85>CGq&~Xogq1f;y96kSvQg4$ASD0*002ovPDHLkV1maD B4qpHO diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_help.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_help.png new file mode 100644 index 0000000000000000000000000000000000000000..2995931b7ee55bfd20818c6a0a85e7cb1615b091 GIT binary patch literal 671 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfr-=8#WBQ# zck8shUd)ant-@P5x+Wa+&~d%g;p=e0N$1G1^bH>s*RY5SS|1Eb>bkLFZoZTgY^TURe1} z*7BB-$-!gHlg}2k`>^?@FOs_&z~|_HTKq*?D^o64)B^SATzU^!?Gg-Ap0P*qURnLU zAkFYT)3BB7}!HSF_lm%i@Vsj<3B(!WmU zl)&=9Exvj3c?r$t-;Iw+-&53(c_H-h^4_Ypmotvd^ZCcK$J->a=X=ks=u3((H}AortU%?T#T@%HjFgV$iK@-t z#bCQ=JJ)4}(#@0g^)lw|xw%r{^8eiH-%gxSs{eM7bH6~EsF>%klvAeci))R}O5Ho) qRJBV+;^$)dH`A@s7cTt2?GHonlb9b%PAuV<4s}cl;`DCy`N;fv_3O{l=XcK8S)OOC^^kvFrTzKWAMaR}7Zv^6yvOHr z?fv!3mb1QdR(*3=$>+d~=asu}Z0IFtzpRIlTy6T zcSyha`3Bxg+R>*oGWRiEj%xk2P$5rnYu1LnwuQBtm0~5$U(}Wg2w#}aAbZ>HPFJS2 z@8t>HR@dbV{?0$^H}PKD1h%;)SC%f+yZP+5e(ux=>zoZ6bqZB&IG)-~j4mq{oZsd* zp{enQ{v=5`m21sW5pBFj%Q*fScwEo%Gds`wA@}3<$@0hY+wv~h?qD~6z*&CacvP;$ za-Q9plQpO9|7Wq2{eFHi_Y`1ku6fP5Mn40kqrK~nT)CC2ckNOIds%|$7dbAMKjQaTIb|NjO(=0W z=v-c{WY^p8kp5S)$@u8?4ee!&|BNT3Exht<^Cq1am%NrJpXSw9y3TUzh`0v-_03(8 zE4Ht^!W1s+^R9TbHS}*zJzukx&KR9Y0Izo;=*?yNByr$8$$}3-h_N;$$xcefq2<&y#mK>>{I1 z!@a+kq*DH5rIi{=gq&Bieqi>({h#uekMir1^uyKfNChTZX0t5@B`Z%?KbLh*2~7Zp C9V(&# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_help_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_help_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..db6825f850b0cb2e42de898d63362b0ae833080f GIT binary patch literal 706 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfl0^H#WBQ# z_vqC9{*xUgj%OZBI?~11JSoG+=YT_ykg%#s50A>ax7S(@&akrB@sZtPly?nqR!j_=9W5q?sgBjVuYd!wf+}>SL`7n2(>O)Vvzjo!{?|i?v`@1`{Z>ihL zkX;9^bPFhKD!rLt#Nv6QrT>Fy-66&u3qP_S*A=o@7hLO8(c&}fBkvdKKTS>UnP$C> zWhK+^)&#m=J@AL`Pn$_exNh2nS&0EX*H`KG2V1b#FZiw^yn?%-@9om<`;OjDy!HK} z$?dxvAN%a{m20$f=AX4BO>C;a@e7V@_O!?uo2NeEv|y3G6)PAP+FUlHk<79iqs3wVyUJ`gIcC>0-+r#VKl{zK*OLXC z`2CijU2j$Ub$QH7sTy|MSr>mdKI;Vst0NmIv_y7O^ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_help_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_help_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..b926e87b0d841cf97a7cb4970451525e9323d06c GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?7pXqV~7Xu z+bP!iEsi2><$@|s7dS6=9#a)ETdfwY)e&SeY3&v+dq?*P9)Fs8=V_>D#8`JWdEJp( zv*TD>?0M~Kv(5M8Hitb|@jo}m`2C!j`TJ&m{Q2+3pPjGNg*q93-FkTB{rCB)mlwWN zxz8$|(YHBs(=&-3Tg~(|@yz>6Z4j`PY?m{Q2%2=s#$50mu0TcZ7Nl zsU2BpnqOF|l*N2=PiH3kLqWZVQi}u%eu;Oc>P|cTT2Stg_Kw>^YG$)HF{x~c&EJr| zvq^4a*c#4v2~4XN%Afg_p<&MX{R7iV{UUV_YuAo1omRG{3oaY-`U*62tzfw+eq^DP zTmqxtL*_nj`Q}eVlpv5G}({)Wqh!%cUJt_E$2(c{v2A}mi0Gcs_6%7fuv8RHS2VguB=LHLjY3nSNGE zj?cCEdLvS(ab1yj4;vX3Nl=75fDjC-+Oe~miu-E;A=n?k` z7HdEL-o9<-n=fC^ZD0>PnZJActN75nrjs>A{!MZXG-0vTwHJ0}e;|?~zkyX&H`8Td zWJR0Qn!|P{u59>!+}A_zAlr$&#E_#A-5Z#)ey|wtoIT+R`*8*9hN5J_n#Tp~Mt9d- zSyA}U-GaA&LF9U;i<(C~*YLC}a4$6X&HlqtQhL+Yr{bttho5pZv+N5-w>gz8&m78F z&V>v9H`Cd{^@<|rweD8SFhd_*YIak_zuI}Q{?lR z=N*@;JT$}aoZ1ol{8(S{_Z_p+(gmL6esJ^cRoz_a{$zzw&-+^s{Y#%_9e8s-NP8*E zBV{A?$CiFeGxp|v`eG`(dC?PH!H@^Cb=m47EBv4R{%h9D8FE9%>Cx|e|7X!zEawv^ f2fj-Eq5h4NS9fAx zyDtSn6o-H7dWCp}2#vxYprDZGyrQF3(TPqe5(QDIw4xIgjYOhRC=}!-9#KhzhKNUk zMz~zpC(F6XVE68|6~E+UX3w1S&6%?^`u_rQSvzpZr(S>wAQ2Y-Lpi`>KpJ=hW`Lw^ zvH>*5g*N~z208*d%wG=7ng1Rb`YpT@I5of`P!q6uKX73&OF(Tt@Nr8>0V5IrqR~0s zG0+zVuLf2va35%m0J}B{JX!8!5PaGe=YfgjifE}`E5Fj3tu14@I@bRh6WKq~d%N zegn_vwtP`kTUXLLD2cEDol_P#Pg7+K-Kesmd)otfn-8c0FdVx0J!Jc>~ruo{- xGCc?G53Q1hB{jvY{6Nxz=XqB#^Z$Y*y#w;YU>UnZ;p+eZ002ovPDHLkV1le*#AN^g diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_hybrid.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_hybrid.png index af3989c1561d26aa49d6bfb895717f4572d083af..a1272439feb572e789244022e82eaea175664bae 100644 GIT binary patch delta 622 zcmZ3$(#ASLxt@WsILO_JVcj{ImkbOHE~ycoX}-P;T0k}j17mw80}GJF2*grA%)r3B zfRTY2NHc=O7BInOB^EFv*dT?EOiR}Sm3{DZaSZX`y*l-*wo9T&`}1EqPLU^^JVgRG zO;GCYoH}Jw{RYK1Q#KuHV_iC>xAhOB&eEI|)g))LO&=!SF=JiFrCyp{hB4`_ByqDtXm6sPH)JHoYw0bW3sM6^}{8_gLxjs zY7fj0Gp%uM7B<&888V~Me1b_z44+h!=8mgOcO5y_Iaal+b4b?r&Sf~MHeuTWzrvh$ zrWMM&&Kjr2D7idDGHuwEh7f!pSQrHBLXo&$_2 zQo@3N}St2Z%{9g`62Q!vQEZM0qT_bj7>LJ@X4(phjA@is@=gZ&zf@f|1Iv@=qBe@@-vuGKq3zRzTCyGzO8 zWkp-R{W;w;*E3P|^{N{YGV$-vnuR}7^NXFd#GX;kAnx(@54-q5>A=&~&t;ucLK6T? CQv2Hg delta 520 zcmV+j0{8uf1)v0wBYy$sNklELdCGqI{;5&1gmzlZCH^)MP`M#Vlkc^05(y*qGE$Po0-Lcb@n4zKxBXy4`!u zJ@@}V=RW7$hkss*W&&!O%UWPP&;X`@C%}hplP!wkw^92@8!na4= zsGd?UscXXiYs?UJEP)+S&&PULeU$7?s<+kWSs3GLy&XX**VT35urqA^p>I~Ns2{`r zT0Ns~QSYnY)kS|I7)Tt3!nP+%eSg?@C${ohr`5$dK`r|(3p)6A)6JL?TP@RPY;-Hl zGf9b1&-6JFRDa1AU|tno&m2JO$@(yG5BTvn2o?hGfyWVXAMh0zu5#|=it-@FfgQkG z;3n`OI{j?71kJryF_%xrzPRrR-~uoRTm|j|CxC&LXcaYoRDBrhZBggV20It)JF&k) z{iME8m$hrO!GvI?+N&-N(9h~|^;`HpOTm%`9BD_eOMmTCk0b|2WA9+-+tmqmL;kp_ zH^TQoD}om>kHvvQp^s)j^$PHEELY#fd$l?zxES|Xf~`^;>dPQ)v;eFcTO+8`c?li^ zPDYiKvIOV_o<>=A+B5TGo|Qp93iVpW&!-b9pYFXK2J~MG@DsNh?iu&LE=B+V002ov KPDHLkU;%TIhV~7Xu z)@inWhaCi3A9HZ!H8^xBEnVj6KAAfpFrbhx&!K$>OKi&&rX!LW!Ons%jY@%vS`LS5 z<|jwrOVAhdbgQ~~v(`9&&pmndms_@&_-^OCd-m{i&q*~~eRBDnOE~lnD*s?>eQB*` zo)h+>WRlgSC326&AFxP#W_fpz`@**aiZ7Z)Vw#Q9zWPX;A8~&mnjw7QM@vy9kMA_& zu2sTIeyCS4yI*|3m6Cx@ zzZ#}%diCX_3McjhwQ{CO>s?GT99NkJRC6DH{C-N8bIa|FbP0 Hl+XkK)4Awn literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_inputarrow.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_inputarrow.png index 5fbcc6c2cdbc26ce1f09c6b6050c115bc506a4df..1ba9376cd19f0188b38ea1d60fcb0a6f6ed5e069 100644 GIT binary patch delta 225 zcmV<703QFb0@?zQfq%qFL_t(Y4P#&!1*0JV3W5Ls|Jwucb|99eNr(Uqb_U|VKztL3 z#b{+oCeUyYI0wZ1w6dfMY{mcohk-OFtt{z=TCxpDv(n0v*-%SX0%<0yTLLl^h*v=^ zslsOgCAR;A8qA2#0IV_f;3lZy)Q@DK!L&=JK*MR5(J_FAlU-C0n~Ht`Q`9aX mc41^>d@*3DYt-Vw83F)ax2ZGF!>Nz}0000 zj^2}VS07S;em=%NS#~0G2G10)rLrg512ndrH0|BB?)Klh|KVCwe}$~R8h7;Z$M4&6 zt?hpKUaq;7W7cmx^Gv!9=MxU=k6nR!)5|~q{8MQnb+`TS7pu_Xh8NRPZMoYI-#(f0 zNx-l;AoP#h`s=?9=lZ!HP5Q{nq?2(Ww8?Ph?q?pqCx@;6Dy#4<#poq(`(f|veU7@0 zEPvbL4xeS}ZczwZe);F2M{mo1-%c>t5yW^xWTV3F$BBAEV*HDKcyj(l5S!S|c@Q7%JA^H;{T%m*GV+g`l=NBj-m8}_?;b#L!IX1pV$@TAh$ zs=p0$CReYiWaRKFJYe`qi9`DBEi3B{g~@&sizoOkuTT2JE?Oed>-Jdon$$hca-|oG zPO6_SJK#`uy!+v6q3mK4sn`I^_H(IoWeqxIyVpH;HMn?i4uk08$KkQT`H$+)hcZ0z zPmO0iHi!Mr>DG52p8R)Fny6bNdVb=AzgkD8EB1>ePuzSq=E;wBEBo~=e%^fhv}mVs zft7Us@$E%S*EUJyaPaE}tPF`0<7$;=IpdhZpvL}VaoXma&hN{0!@sUcf3qiQt=z&2 v(K2~oErw^4tQN+s7b?>!34OEp{`mv8C-UwJsHp!=10^RoshHcM^vOnl>$E-#v#F1lf3uR`V#y$<~az5EZXBQh69um-Ui&TUmuU|B1o zE8>`>#BuMySL>60MlvK3n?8 z#`CoX2Qb~e7xBj7&UAwg2S&|*EcXjIq&M)I3TX2Mofr3JwA?9j{-xiw!W--xOYe$T z`Xz0ed+ube=MSL^O`BfIUu0$4rm#BuUQFDIh^2o`J-(3hsCt@9j2_c?TlhveMvP`<<)BJ}ZfKpR`k zVZk5%>x8~cbl8|2`}^&knnXQT*7+Mhnk<@Aa_9LQj`KXGQQIUREZ_9h+9A40x+Ck; z(dAdvwoMDMyIIhClyT1ixfq8F^NWSz#XenVu*~~>Aj7=N-%&VkVYO0qiNC5D`=|3- zUqep!G%$6njkvQ=$nw*6QSVvto969!pzBv^_-N0gqp63?DpXz=ZP9Kj-~Blz`JiIO rj-(7>7S+k-T-^d?jSIfmFZ<8HbK^u{PNI@HD5gDK{an^LB{Ts5Z#eW# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_invite_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_invite_14.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5b79112c542b374f201aa765ba7fb9c30cdf31 GIT binary patch literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhooICNId$^#A>3E%TKciBmdlwQ~EKo|v9F z+;cSdK*OSrxO15^t};oo+6JCJ{b$Pqedg7_n`GZf*>W^qjd-Yhy>l<~uP4rRj_fIN zEZ;mY_^CQ?xGa^loIk**^XdZYi@&GsX>q$?>oLvY{@+ce{jVmmPmrl&DlzqG)>|uE zb$~6A&3}QI+QapVYd%YT=yEYVZ{z%?xqw$H=lG4O3C^#$EFGm=m#+!b^NnLIas09A z!b|lNR}FN<0XBu@%!jU#BJacn6FAje{0dXN9<~WUZS&jrV^})wH!A o1kIGWMZO>U#$^8O{mXiWW&hr+oq0Xi1eEeTUHx3vIVCg!00go;wEzGB literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_invite_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_invite_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..e81e59267a97f80dbd95173d82aaff3110c42c20 GIT binary patch literal 708 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfl1HP#WBQ# z_wLlw-l2ga?dQKv6qj$FJ5!&&{`FTcJO10lH_dIlhgjva-+sN3ZGY~rdDp*iO%bk2iPppu ze>ayJMGE&cr%0DQw7z2(B&@cgsr>`D%H#>n*&EoZKX4e;-|bkWy@6>`|An{yhkn@X zVLzE{U$(&aAj6x6usV4yC)XdF4Ol0gUO1{eW8u91 z%!bdcx&t{M&-7Wwyms^X+H^yU)x`*XKbH+ zqh=$c=i3cguK5?wpS`xZhWp*kACgh}tLi$8pZ)H6*ZyE{R%v+R}o$FZi`1V9DqB=EbKb*cZRK-#+u}wl4=PFL<@=`+NAt ispyBFYkTe7Ht~PF6=>M^U&0NPf;?UQT-G@yGywn;WGlb` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_invite_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_invite_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e3743c7be89bdd44e6c134e64a5865131c706d GIT binary patch literal 758 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhob$#WBQ# zckfhxkB~r-_PLk1f(}ibz_iuA!%0`9NlY!#iX*7S(Mj9=$_ii24(&|QiAr0zi#Tq% zE_BLuDQ8pEjp7pR2EX$goo&B3NaP&~+~Kpv(QcRg;i^-$F7J*6Tg-DZzta{g(UMfbJzZnU zw?z*=i=EU}a9t?(&6M-Pgff-q;yt^|zgIU&PFlQy*Q$-<&4FYIhP#J_H*hBypZd&a z5na0F$g02>4cZI5*R@G+;B;vY2K5EHBRIi4|yglr-e&4eVBFg#Q90(OkdJkH|ssvo*2;M zl2~GP-U#?ms!%PW0EcJB{B<40`XHb6Q5_#xd9bNxz(ZlQI5b{FXzH h1U1fV+_>NWKkw4lAI<(d9McD-IZszVmvv4FO#q&cJ$3*9 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_invited.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_invited.png index 667fd89a0c11624b31c163aedc3fabad4df70a97..707886bff64d1e54849a93c864fbd87d879b1fe9 100644 GIT binary patch delta 418 zcmV;T0bTy<1epYofq#QZL_t(Y4ds<9PXj>|g}VepLwJ-QK(Yexw1CBsY9yZDP*(vz zqBS_Ms45JWNAN%b2@V7V5-b_M)68uL*hhDZA>8ET-nnz`xihn~yOqjcx2VhpoO2E8 zHo-Eu0jE(EUE;?xgsY$nlB`3rI#ve+OuR>22h-kbEbEqTK!0(gFX3D-NrX9TqT?%W z2()~IdQvrW+L5dk&QFAcoOsF4U#IXaZ@fOONP}B1ypqzu^14-{8QWb4Q)1(P_Zc9# z4`jQx9OArN)G=o`5x9aDm_A+w$hedcX_B+h7&cET7YoSmY66Ztz8nj= zCU^uzO#J4cL0SMQ2Jher?11?+uJX*+JWqVp#aVn6XjdO#Ba`@TQhZ-`nE5||bVuzg z=c%(VWYp?e%;kM5w8i^E%0sg1;>qDSG16a3D=A~DTN^A>_|IxS0nRqYxCSt?@&Et; M07*qoM6N<$f_U`DO8@`> delta 500 zcmVf2HQWlh#G9e2aD`^%M5*r^t zrm(TG^9?LWvQZjY&w?$nAW3SnQp18$Bn|Q!((!x7oa^2@bInX+qdfJS^Su0@=iGbd z%y>Ni_S+|*lrmrpw%``xumTMQ@5PW3*aWczY``IWz!MA=w0{W$Wzo>Y#;a5j_c0gdw{?K_dGad!AjEVo>q^rogtQQU7v7;q=VT@J!77OLS!=F7!s(=3sYNX!ZiIV~ zFMAonFa<{-wtu9x=1Q^}n#=?au^zsIU+SpUlarfdHMyP>kaoLdSOi`n`D(1L!yOw{ zq76Yi6j^IFpJEGKfou{5v9u?*HRT&HFbFp?8A}^Zt^(#D2J)BSX6F>vVNgGVd1fTr zNRGp#VHl5EKwhriHU!`pPT(1wCbMdw70MvOoMBdXV{Nz>_Tdfs-Id=JbOBfcv4QVO z1`k1VQl`{whO%pl9y!t%h-UjG%khZqeJ#0tax@8)aR_GHpgcA5BDc{t)g_Vcw-wBQ qSM8B0000BD}C|>Xk z@_EznNb;!Yjpl6s6+L&`|Ca=QPr7;L@;3Iun@8ABb#|YAU*eF*94~%t!G)&!fVnP? z*6R-$UU4e^;p`slCf>0<@lvJmIhM>Vv86h5l6N%S`sy3-)-$<8(IJ7oUA$3S_R@rD zn%c8CAG2?1H2%LeIMd@bNA<}ytGuHeVsF@95Uek}=$>2OSlu!=YI8&BD&`N_vgUqE z6cvN(>e!EczwmLd!>dBOuN~iVj@O3-l}k)i;LY6mVEWYG+cl=IU-?&kwfruF_Xo|F m2^atF-7@KZ^NC5}1#%42Og*g4XZ(2q3QPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR917@z|H1ONa40RR917ytkO0OB=u ztpET5Hc3Q5R7efQl|5@zQ4ofAMU0R(Dr%=7B1)QI3Q1vW6MqOBFtM=}M1*we4@hgH zzre~?t;AGzHrp%&NeJ1z>_|-r z?0_F&2iyl!;C~y~0Fwc2Ieo?$Yfk6DCImQh13v)wyoJ64l-rrCT{HM1W}2}%<_=#8 z4)@%pI-9z9B(DWGSu}7Z#;p~cP2{Yx_e>x?Ead^13YJP=e=N5O#&q2yXjCH@=xgX(;4xSaPPGWGTeJC} zFjxZ0LJ?@=<(jRk`I6U$pAX-1>4RGceo6jFIM0Os6gt(ZFuo*F=;TfooMzUjYi5Ii zm}Yn^te*|DYb3Y##_Yy4EBGAT*}|v!HO40fc!xRjTuFvxjk;!i$auQpz03aPwn$wL z{wDn34S%~Dz8QSS!&Z67N?r5NuW5M(Px_5pkI-(3xBx2P)lDw7oIYccGgrx4{gJ;c zbHAsehi@B{t8E9@%LHrJ=B)yVtvV^<`1NcL6S0Y1f7z%THk zhDzR{oSqJS&e0*W6Mw@G;#(3TtjgHts5CoZ4N=HRmMFwIPT3}?WN@V`R8YaX*8 b|BLz!Hj1Oqw;2gL00000NkvXXu0mjfd?7HC delta 691 zcmV;k0!;nP1}DTEiA7M^qKE>yP^kqHXuAwr z1(LfU+5`m^NKoKE(7M*qDmM`oZX!?&Q;VYL10=~l7TO1qdDZYfaco{2Ufz4tg#(B4 zo;fqmb7tN-b69E#5noa{nq5E>P!H@dpAldP=mTDtattB-{eOrA8KY6sZAnx5C%+_3 zxb=*rdy)=iVa!X$W`_ew0NW(3m9$3EF-fzMCY@cUq_7Zz>*g>ZsaeuTNzXD4(JN_O zQj4S>^SL2uc{zd$W_VxHYDsmrzMMgD*7goc%1P>Skz^9=wVXb3p`J6R{TT$iZSRWH zJ+Ra@B?P{Tx_^MOUA-qjebi%?tZIu#7wWLu=PbF13y&v)Cev!1<>DmqJ z6z)_FHpf&<*oY}v2Yds5I=vrXfhwTjbbS_0qbJyI%75`xjw^xb(wBTLH950OH0FQ;*!(#Si5N`)$9_$hmzJikj@N( z^Nu{W@VmC|_+PueYKAW*9g+0GzSDO7lEx&pN*XesYyM3rMUX`D+nfqEpOjQ%qs?^F z?!mdZm=`UMyri3wemIcWii@e&?pBF*K8L-KM=U>f+5_&h3q9WnvDdMRXXP$FA;KA_dVhl{3Y1!OLB#7>iefMEcN#?Oqlf!Zu|AdDpy|W zgY6dP#qn+PFDyCAaQxVRcg~Kvp-i28Mb-~EYntO!d6(a~!MjA^=U3mFpAO7_nw74V zOpJf@KKKofp2WLAH6N3m(yJfv@|>QNwC8_bV84~o&N;5jb@Y~GGJnxdaO^(ty1V~o zg2%qWHNcbuOk_etGvenPY2xh1P6%jApL z1=;P&YR+boR(ZeqUSHRl&3o>BovL7&>Gn{sf^lV8>xQX8ck2q$JR_Jd^7BO(O%AGA cB}Ca~d59t2+ktH3<)0K7VQ9Y7wK0)Mt#0$72vq;p9HNjO%w zq>7|{SFAyc6)OVQ9;Y|B1YUsF$h&+}a47H&WId8&<8l$M5jq1(Nx^AR2j;8`g9>m3 z%-H?xk9?AMo#6JW00BafP_z=}@bQ=Hw002ovPDHLkV1n6F BuLA%8 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_2x.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c07216aea8e627fe8e4ee86b67175efb1af2e7c9 GIT binary patch literal 576 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY?Y^rV~7Xu z+bL(YT>?c8Jipj+%xRKIv(%)1w^>G}USTPzty`zG=Dbz)w*JYUvO1+VDf8qNofJba zk4sZ#E@?aVKIZw}cRufPO)lrm`E~bm;rZj$-)mc({$F|_TyTe5WBO^sH>MJeY3Bdf z|GJ#*d~7j2PWS9_MgFZ*d?gd!HLOd&vH9MSTN0|bN_H}LSqQGqm)p(oH|&kF{FL)^LU{WRJ^zgW-lWU)H zjG{S(Y;z9hcT0nSZFz zXy%`wjn8CSFK^%z{cw|=d6B1i=-d_=5yf?#X5!gGf`_v2oNDtc+VoAOw7S7T?yF49 zYE5B#rjwBkbsN@tB+RP)xrIHeR&B!fmz#{6_F8q8vFXJ)C9$qu{h4QpgW1{C8i#1nWq=8)Vfx$KJlAgdY|64d z#P)YxM*wRIkJ;Kert{<8HL1j`ZqZ$TLCRtO+M>LV_gJr967V_D?eveCm-nvCiS~6o z6Z_{HOD^D0Ym%#I?hn>AIM7I1i4d8(_G7wqrSxF6O&V%Q$URn_gh`2ZH%*7y03U3CyfNSgWDyfxM6u&q!Olo`eR^4dfN5hq?mcCcK#^Q9|$t(I*q;G&FWA~P< zY5y#@CL3y=Zo0!5`q<+2Cbo^*DVG=M9%U+8k}4G=qM#!*G0Y_6&i018%r8&OWM^BFu}B3qs)?qGkv zfOB2LpNsniVXWpu6eb~fe(QBC%;pJ?FFH`=m?v)SLTmEyEm}x60j6GfbT-G@y GGywpJ$Fmy% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_folder.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..4533dd4d3d2f2bbf095b7edf57152d2ec0596553 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUZS{0<4DsMi zPLN*hfHS8(e zhkjJNxbCpC)!`3!_pJF28-sg#daMnea9GZD`T5d-dqV98c{LB!D5)2d(|tmWcxD?K zDL6(&F__JsCe~1En#H*7gsY%5uhNtU2aY-NE&6^#BtYRC>k{#sO{O9eZR@^j20Sq9 wQrKXi93n3eeD5!dmKDp9Dvh@OA~q8ihTzbDf88?H{swu()78&qol`;+0GLu?+yDRo literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_groups.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..de447a519b0cf110ba6cbd01f0789f9ec2d43dd3 GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftk2WMF~o!S z?G#^amqd}{&-pUF&UATBF;Y!5Gv3$SI!R|u&YGVBVP%^(N}9?a@XItiq%);g$SH7& z+U$>Js`?Ap-8cT~^W5^TwKHe8<=5Ai|BL^fKVAFoPN$31NB#T*-~W1Aw5H!^ohWau z(cOF4`os=ro>#srjwZ^PB`^xzdYr)%sNodwWT~VxPuY}@0(iI*{T@>B1K_^M7K_=&*Qpt&ZXIFkdq&1`Udcuisb-7=@_{}-AXG!3TW;2cE zo!4#Nzi8Sh^dri1nF6bA0jK+h&h)I-M1r$PyLv5{N33z)u-?Ad9VF;T`=UXgNSRa$@32qa))?pTDCh1>@j@D z-ZT3H=d_1&UGnwITXc7n&2fGvY|&)=gOj!Qs<@-cG^rC0*sk5pKUFN9w_w3slRJOT zSvKj#9IA^nwA4+q-l?o()5fo^^NZe75Rk1n*}n9#NLy?sPYyYtOCLoN4?t$6S6_ z(x+E?&V}Dou4uNso>MWsQhs6Sg*#W56>}}?{5{L?ZSk{al|1KXvrjj)L`7V9ox5z= zyOtwfq6w3_?T|8h-IIAVFIhqPuI{c$ zU%7b~I^GScTM+kMr6ZvGhToYBvd?XPL|;sP^Y`=-hwndGZJKxOuzSG0=W+hWc^~B; Yau?jmIg^q2%LEjyp00i_>zopr07ifN(EtDd literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_pin.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_pin.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d76086800780476a29dcf0db44cfd7dbf141df GIT binary patch literal 500 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEY8!#F~o!S z?Uemq%#H%>?^PbmSK@5)ob9#x#!>Tt8V1KBY6&l;pKvxQE%BOu=-fF!>4_y>(~=f8 zwbnXmiSo?3e?XUKc66TkMK5u?va)aH`yGlAy=U1Lx$X#R zwRrc$u-&=Kdg;sCQqN~C(yD2wG4P!}VXx7b2STs(?z+fr{KLQZz_%mM>K~csKak!l WFvWSfZqPSSh?B@6>t!e%`d4n1$1x2pN6YXuR3@f13G8 zKDNE3|5$u#+g$@S%DIDgv=~p&?KSK#TCp>I$E5z+!|FN@rp{_I%rSBMz^3SZT2JkA z0Hftsx74}jMuN_K(G^XGF%_c+vjS0_EYcf)b={FmZY|I$~bdc-+f+t0e&A(r`Pm4)t6 z)1tt&5h+d5d){bm)&C)HCU5s=(`t?{dF_4=*yrAzwr<8m`z}!UdAj1L6aaBYy#@Nkl9<<-w5HT2P+Y9T|K1kP`8KmQX;+NuXm=^YwDK}y3`ifqkd37 zsV5TAzuIB-eFz=Q0=Gi>@*2o~YS99)3z&+sGirM_ zcL@9pk&MduvL;_jnQB^eBL;KjKMeU|aNQn>s*~!H`c*x%2J(|JvpSo-S)h5v!+30S z>M?b9vVJ1k(mFe$-c0cq#=T@>Bc7$FznW|zeHBkzXF?60t7r39G0_^(6W|nZ9+(04 z0h{9Nb!^ot@DNx^8~83hy9dB>$3kpiT>|(G=?T71t7GpX00000NkvXXu0mjfv|i&w diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_link2.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_link2.png new file mode 100644 index 0000000000000000000000000000000000000000..d25db6eaab02179d8b17d964a6a339e75c52820b GIT binary patch literal 614 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?1HC@V~7Xu z(OmP!w{Pa^)%B^%FRx@4dmtxsK=920E}ptj9+tKTf*I=*xXlvyx0n}v zUhErT!FGP;iAnj^B1v}a{tmzIsp&{C9*sX>BEon4N7Vt}GfzGh3GQL*@^?CTWrl?D z#W2nKNys+=cAeB|=?}h|@BJY(GcvAt|H{e!4{EJ+-W%8@ z>}zDaeSBr(}*q6u&?DYxRvo{vQ}_u-ZlJJtWBc!PhbF^RrDZ*=wJh zUbwSl3TLtYMcoeqW!``Jds`1%a^H0kJllSH`_b3=+}YnMcZoVLTxQ5L?R5R4{_VSU mI=>$|J>$(XwY~e_RDCZjy+xdT-G@yGywo40QbiL literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_list.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_list.png index 0d7d1a7a4a7b0253963a5b10c955caad343a83d2..1f42b7f7bb28e9d7b43b346e3ac77bd62167a088 100644 GIT binary patch delta 250 zcmZo;oW?XkrJk`k$lZxy-8q?;3=9k|sS%!OzP=1vKsE;hV|yk83y{SK#8N=az`(qK zk%1XVGlIkxFu`Rd7BC~&Acc=iOVz8qC$SP+yd644nCS1Ze}uf*?k;5lNFX7VNY+g`_Z0rQbRhQW5Mx8 z^MJ1*3d>aZHZ>M*5KYt82y#DoppBtQ<+9mg#?u_D#6@*77hbZe83s-UwzH1Mm9U9B!K|Nq%?(p z438#o$kvZUehfgj$DnF&pXFPxa0+b7;~bP;dAd`0MshaU4Swo@5`2ReRn z@~q2HnEj-O?aFS!)vFuXF6~+If#H@8f5}1F3ET~0T8x^LxUDDL3p8kQVqgex-nH=G SoY%1=Rg0?@BBXRciok&i3R7j9&p^j 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 IM6N<$f{8ohtpET3 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_log.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_log.png new file mode 100644 index 0000000000000000000000000000000000000000..33fb5c9ae936914b16ea90db3ad0889c6603c900 GIT binary patch literal 561 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY__M1V~7Xu z(kXkroE-&Pi(PYinlw0~GG>Yk=&o&9A|7<}=2Eef!X5ny;?eRB(yB|{JQhxkxXIC! zkZg7KtMuK@-R3vn+^uH!ORGO;xq0_wm6cC=OnlQ9=1KpGoum?PxinGgS?C33DWi35 zQ!OQDZ0-Fl8L4pbobvQ+>&AlCR^5d88xlRt)#N8h7tB8!b4h*2^OyJ5nwEDg;AC5n z(XlOax0+R=v)?}^y91mR%!V7eeoE*x_HLXVupqDRZdc*foiCz~EnfH9*h=B`?Bnz9 zY?8PewO1?IH_S|Z;-l&W$LlsfJD*p4c=MB6;RfS$yMc zWsaXY65Wu^|1d7~$Hm}$#;OfHw>3HLE;yg~B-_?-4{O5u###Zb4V>!x7?xML?BMWf z{cEj}`b3zW`$D&}0n5!7KYiYQ&9n`eClT9l@&B}&FSHY*_{0{7$MUeW9;#cE|JWe> z#7qArQD1*;f7F=$Y~uQppRP-bE@E6Xb%n3U=8He?>V3bs@$B4V54ArtZ{U9B=) he$cYkJGo`)4twuab{&ETRc?c#%hT1*Wt~$(69A7?+@t^i literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_map.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_map.png index fb9494b3dc541b86f40c514dfc0adb32a69d0432..caedc4d8a718725eb39d40bb8b49e58b7dc2ab46 100644 GIT binary patch delta 467 zcmbQj{Dyggaytr#}UDq5%Vp$vu z%S#0>F16TE|HXdC4(>ueo3U>Y4xDVV zMd3s>v#CVk-iT#4*`qHoxyr6n?I`|{p`9#ua`y&i{cUCGpUdiVHfSekL|F7!UpCJzcA2i=Q_68Y&vRuJd2qfvZzi%AdRu7_7O;K`-aW(mLPA|4%bz zKC8aTWV>DS_M-ZIu79+iR~#wa;ky3d4gY?h^%>Rg6aAli|J!ml)2^VyuGLfH0Na(7 z^BpDUvdc-hFE`K-E<{(t=j|%P*^i~y85}Sb4q9e0K%@goB#j- delta 378 zcmV-=0fqkT1C#@hBYy!~NklyAR_oL2qJzIv1r#K>gw*g`jaPjWO(k5BNoFPxZJt#ow?_}$IMZN z{{_HB9+(AA_>MDR0q8TXi%wt^SOqGsZhI)81YB6(2Vf020)Ohj25@J4_rMOY4P1M3 zRFVWXjkE+5Z9>0=d`~?Acl&w&vo{gnO*+0^S`z z-ZS(x-Yj>g_&93bJNanNB!S-`Ow;2p0;!M*WCEXPT7LS0S8vtR7l`UdNga~rB#lVQ zNt%&Vh;gGIs&i_&Bq@;8Xgh-WP7Rm_j?HUcfT}&;0_(sKaA12AW_l5(k_5^z;xn)U z^aBIHB5>Zq!Xr2z8*{!CN8ky#Ybi@AO4^citK+}teUG01d(P)M??2D^z3={r0 z4Es~Z<2LP)vyJhDZ=By&oISeRO44WQZ{8ezvz2G|cN|;mBrVu&$6hge!RdVu<_lhy z+;gC1riA*ulxyt|0QU)DQ_2E1I37^tDnm{r-UW| DD3a00 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_markread.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_markread.png index 8fc3aeba311b71e5c820567e1cc18e9ab9cd671c..08019c53d14c1052c089c9a3033dc01705d7862a 100644 GIT binary patch delta 739 zcmV<90v!Fj0{R7zBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR917@z|H1ONa40RR917ytkO0OB=u ztpET5WJyFpR7efYmCZ{PQ5eQ&Ovz|b8EQz--L$Yx(L($KN`FDAB$7f10yl2j1kuMP zBFt@KNVN!E=q7@S7TO}+C@5qfh}tJYMOhgYE-bLq?-|ZLow@hU9bE*y@Vn=IpZ7WE z-kCXPZV>$A2-DU##>lf5YM~lbe}w1oC=A2jjB5`Tu7Pe?fTZ|LqX)LH`WrBZa2l3D z@eDfQAkdr+1*hi0E##2{=)H0Ct$ zmP0=%1|a`R5Ra-$+<|pDYowOUDS=y{I3AmTPzG<|3sl6KYbcnz3A8CbK)IVr(FBUK zPFzKTzZFjUR_arrXmL8lwMa51CVJ3)%?! zf_k?=PGUU|os4i56g!=06SS_VW6Wbl?X+KzcmU~TKykyZMbQvR#$0fsm(V+J`+BIy zyjEW7d4HQ+6H%{-7w{dbT*FJyTj1{`ua`~fSHf4AhxjW4;SeZBAl}TbP-N5`7y`xN zf>s(=qP8(-3K|kb=I8|9wR3wDY(apb-I|Uhn!E;Hy?=DzUfX$kS(bQ~pwutOb-Y(# zL^|fJ40`Z-ue`J@Gj4-A&@<6N`vD#NyIp5299%4x0qv6eum>)K9$2x^#<&Pu3a=W( zuHXbFU0$<=A<*gWfJxX5m7ptJfH{8g8^)sH-=Z;`6Yw5pVF<=p#4sx6qtE~C;}4>) VuIrL002ovPDHLkV1l1eIX(aY delta 289 zcmV++0p9-l1-k-}BYyz`NklfL3Yq zDk21uLP(ouPK(WRUW_rDs-&K_$ET$8theuA2CRTC@DtEM3m5};#($XWv=BLN0{6gEfVsuO zaU(0#Qu~uYbBoyVvMgXH_%{LGCoU2W{)kqN7g^!>kv;s;Z2U`6?(1tL6$3hsKdJ`Q zfeFyA*yS1U1&qo9{G7GsQ{V!41m+b2Uj4YvRo$Q-N=hU>xaWZ+{b_U=V4&@xL;ddT^00000NkvXXu0mjf_oakB diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_markunread.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_markunread.png index ff705bb0935ec629f2081507adb243c509a26409..c39fba2283e980c01e0c44e508fb2d28a22b90ad 100644 GIT binary patch delta 680 zcmV;Z0$2T=1HT23BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR917@z|H1ONa40RR917ytkO0OB=u ztpET5DM>^@R7efwl}&3CQ51$d8jJ{*B3fzGnoWr)Dcy7-)PMhAbkRtpP`c})?LzPm z6cn-%w5xX2LQCx`?ur{l1Q8@f5fa@bQ1XFL6{Mv`O`kWJYi5#3oLF4>!jp5)Js)@O zB=@GL=O4@R+rL_^2FX1ORVZ1ORdLo5@53L29b((gSlcm0SKt9;!Kq(3YbwNAkc6LL z^n$^8#RK|i7JtE0%sqlQXqS0dg@Wyeu&+RxfjjUVR$v6CK@V^Z+@g6D@*q8dQFn&h zBmN$8pjTKE#GIt8fWU1%DMd;|ln2sL>+YyfhAp^edbMkb4#z8xm=1d=BUDq`U z7YRgQ*(5M`i}7X1!bjML0T=^4t@6LXb^d5l*!H5?J&@v%fR}PQNKZZw`v34$zJxc>Y5Qd-g0}{nTD{CvelqzUrX=f!wECdS+ zwN2+g5NrfN1rb3D3vDcHEc6Emf>;P9U=Y&?X+#iT8JN?Uobi&JLS9&Qcb1)JXXkE~ zf0LwU+nl63ed%0M#(aHKlg_j5wj^my(w@(sBn_GWAcRP=aeo$=0(ySAxoPk3ffO(X z&z~Qr`C#C6#@AEGboeMa}3I7zgaMlYX^Fz!vb91iL?# z4=4e<^#Eb{Hs>e61aJww!~ob|y$Rezu6hmGk(8En;qzPzFI^4b*$dZI63(Lli~iJE hTWQsK4WK;*d;nF%MAZMgq00aO002ovPDHLkV1hZmtI7ZX diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_mask.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_mask.png index 4684b3b1d80facbeb52976da6477d9499c172480..bf2934aeaec3857d8ad2c17b785f948c9de6ed0c 100644 GIT binary patch delta 822 zcmV-61Ihg11k47IBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR917@z|H1ONa40RR917ytkO0OB=u ztpET5wn;=mR7efYm0f6#VHn4sXU4GEcxSZMe8qeuCvxHdWq*m)nwDc9C1EGZsl%nn zM@l(xLXv}(gd_(}P+FqRfu$@TsZG&ji@kfd$M1i;uXp$Rye}~&|N6bxbzj$Yf4$Fr zKTj0>Yb8lC3*z6Im%4J8{;OIy5Jj^oIsyA(Cgk8fybbt@Uk8fs`cgc_rv$=`q$pow=v2DXC6I1SgBusdS)RWJd!2o{OB{<0OY z1{$C&T|{gtWT6Wx;0ru;bvWuMb)-A~Nt^!9p-+9V7eUHsHRXPwQE#VevcXsbevmp% zU|ZIM{Tr#jE!OOq2A}3fEtr7qwL@!qMq-t41eT?8Hq%>dceye zFA7?rAb(~_;%$(B$oN`uB@FtS1z0<(ZpJ4R+4fuw?N5q9qwi$#L&T)x7RPUKkt8{Y zodKh8)AHKVd61S^5Z?xRjeimj!&S(^2Ur-?cG8yC!3O6g$uY}og6%$dCLhEhra`rn zP~9||tPWrAssVThWuQAEHCv6d1oSuQL9GlEw0||gMreUmVNO1=b08gn7+!!DrBA@5 z2y6zu5nn;WWTv!7jXpM)Kza;nYZ9rmWG@o?K(FpW*io{GAi33W7o;A@Kr`s!_Cx+o z6^%hsM{o!vo#(w!4>}#Y;69kH;OKkO1S9Yf))oz#4p7tx7eFgA>Ahrngrl#Q6TUu3 z_b*_*#mwr;|5S9)H+LIsfw}MuuJihMiTywH9f$#i7$i}9EC2ui07*qoM6N<$f^x}Y A)&Kwi delta 585 zcmV-P0=E6k2H^ydBYy%YNklRQfOr(n99OJ6pu!Qc!2>y!6Q+FnB{0{vW7G8q|~Ob9LDIF`~XuPpge7R*9ngP-g+xfqzb*4|o6!*O|fO+X1Ww zZloARQH=Ff_s52Bs*B=8(~*U0cf>d}ZVT}EPvNqLian?BaRmOr+TN1+n8|-#IEN7Ux8=9cHlFxJ9H&dt&Rdcz>2UT zeCGn+t4?q!cGEtCE?O5cu2$8cFV^Lg6m=>rtBEy+;8m<`nQj5l9k;X=+v4BiOy3&o z>#7v3kK@Sx?FqRM1XA$PezdB zSnTA!y0VVo?NKAcm#GMdbR@i24^9wxzIt382-{Qn|EUO)bgKQ~{3u?!jp|nQd^AJC zJ9SU3e?mP3Nm}EEf2(*sQ{Xe%?5ZTlpUm;BqgV>;0CoaHz+K=TFgTGzQPd9Ke*xeR X>gJAd>IC7^00000NkvXXu0mjfky#a3 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_media.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_media.png index c6a7a4c0d07ee1dd216c8e53195c8367a2a29657..b7d1abb2f3da5d1eade2715eb65835779822594e 100644 GIT binary patch delta 484 zcmX@Z{Fixxay@h{EqV0XIL_tFZ5`&VD{2jsrkamdoow!neT6GvU7qYMBKUjtLDwzzIpTOzZ)l~ zT%UMM{KV&&j{@JC|F!;~v+QN|1)(DUj`IonFS!3$?yS7v6@K&~b4+r z3gNx>w0UK6^cH#3Z+C7?z59wGD%dgmU-*vo*{X$;OW(vjkgmzwm8rMrVIC7EiC(Izp2W0$3@j!_tcC(du#a2 zn%#8mo0@+Y*Oj8)ii>|@LwoLvJ>RzA1C&5rkun4&sHAqzO^rYXu^@k@w+Sh#u@#~SIf@TF*j_UZGU~{CKpiX Nd%F6$taD0e0svmc#ZdqN delta 435 zcmV;k0Zjh=1Iz=EBYy#tNklTG zJb?EQaiN$Kh$j&70lM(DQ7<59FmZlq=t!qiGl_eDC_-xfzpJXNYKDLO36c(E<5SX> zB!X>As^@U`V>nYL530dY+2tD;zblt2XC&pXjr;2PR!Qx zl3gFps&#}r~A6rmi4ecrfGIT&||$Zc}(Qmi;x_)u6xp_ukB9p*`<+?mFN% zVMj8T-Gkj1(oJ6P<7!e?-p0P~+h^x@(YM-l@-OM#nc&x>@1XN%LUYQj>m|qDKd;X- ztZU`I(W3T${p|Q7RpztaG{15?T+jEqfTQ?A>aDieNh|xh3Z}PoutqIhcvx>?Y)u#I zE30*n)32}E7;hpr@$-Mvo~Ak4suAt68qHCH&sF2M-q$iQVGB1trNRGReagXEG8b)m eP4^ZZ{m(dedev*whWA#W1mfxH=d#Wzp$Py41Qc-q delta 625 zcmV-%0*?Kk1&RfbB!2{FK}|sb0I`n?{9y$E00KctL_t(Y4b_!BXjDNE$Ma00X98Xf zT!`_bu@)1Fq){tD5DT#iVq>kSAhFQeMwAqSh|M7+m2g;CXk{TJh@?=75w*z`LE%)C z_yK;bzyEV*nOx3`2Wc|!%gp{~c6Q&}eV4YjwQgCn2M8gQ$bX-JgRmRALG}`+p`2ye za|taOjn~6vSOnQGcnuF=25MkdA=vug3sBq-Q*rhJehiAf0pkqzgBFx&!M(nwVN6js zJOkN1=xJE!L~72f82b#nTxxkp!K5lN`KIUNXH$C`e#0De`CN)g41??`Y_tS%0WN@^ z>x8c`(lH3D^B?W zEXlYCPoiFbO?4%2#9S4xE3A*L@tKhri3Pg%^&i?rG+jwu%~zntJGBw~@u+E$E0E^e zMw2Ib6KZ7I&4!d%t$?Oo@CamDWXEdtPJL*q_kJH_IzSz8e=2A(X!wgsL+NKgUt|da z%)vY?g4sucbNpBPWoz&t&$o{00000 LNkvXXu0mjf2j3?r diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_message.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_message.png index aac6b3edf73afabd1099c3dcca88d49a8e513d2f..5bd429956094ab5d9c59a82447b3d9b9efa97a82 100644 GIT binary patch delta 521 zcmeBUS;R6yrJk`k$lZxy-8q?;3=9k|sS%!OzP=1vKsE;hV|yk83y{SK#8N=az`(qK zk%1XVGlIkxFu`Rd7BC~&Acc=iOV?m@4vrxce&ZdMd0y(<9 z8z(*CYTUwDe|y5~mKcW*Tw!8z4&06`x^Lbz#V?4g|6iCUp*EXWXZKXQAF22DtiM@l zZN2j9zf@QDNuqU+{Vtctrpj;2{bT&Nc9P2cvbdZD1>$-MY#UFg#hb6MddBBrrI5*_ zZqS~+qeVU79N(Nnf@=_Rt@X9;yuGx2!WYr? z!U`8NC(ilL_wT!aZ|m|o^%MBhxBi;)Q%yrnB>eD|67Ckpr>}4I-Mo_2y=}v4-qz@p zdDECu_dXHZDi*&f>|o$s!&2Y$iLdOoBuori&-Gt*7puvp$$L)wDgKh^jx9S?cF4*0 z!c?2)h?L3epFi4s?2PP@Mv;}z_|@ZHM12Fb@&eIH5K(J8A>f+`f){KoZMEXcTYj_YX76vL=RPTYvaC zXU>^9Cp(*&O(gzRW(T}7d6V{izXhiUI_&&=Y|it%Cp)g(P=B-*rePo6A*v4o2QUkD zr8*RS0v3$2UR;auR87=|xU@phNM_h1qcQK?=`+bPP?d34Z*)X>F+3mO7vla2K0NGmdxALQOU( zCOv{qcC4!+IEk)-EJepL+t3XK*o8~Dg>R_-vSYCkO&VYhjzGshDqV;NQ2BN3nm9`l qeQ>%U1$ycSxQX?_p}@b)4*USdriJsBEz!pS0000 zKJRsZZAEV@^4|OFQIwp2ZB0Q&BL9NujryB~N>0rac=_+d7Z%kOp)R%YYxDo81PFES zc+0Tga882rL)*o^EUV34P4sysEBb4H0ncTPuN_scwu|p|e*LF7=i$F*_Uhw*0@pmB zu!3K2LsQwkg$D8)>%?-tsj7$CADq>uveb3W-`@ObvO;I)G_wbTeDCS%=d#Wzp$Pz4 C&xG{= literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_mini_premiumlock.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_mini_premiumlock.png new file mode 100644 index 0000000000000000000000000000000000000000..cb32e03ac9e66d074005f6a78c23d7f397be0358 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uuz(rC1}QWNE&K$ec6hothFAzD zCoB*!cy#Ii|Nr&&3t|{T>X?<4AFIV=86Ihz72P1gvd+n{<8ISJf!PcJ3xx#!yIx~R zay}}u@uj06vlb6~lE8!(&xRWbf(vAPc-)K+N_d#?Px;I0$#bmjSwUnNo6p^$RAB~C}p1a zpx7#e&y|;ZR$GFCy>v$*>yz>YcS1~Tna{8??0sC_{`@h63CJ&=u6{1-oD!M<$V*=l literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_minvideo.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_minvideo.png index 8219780cce3b395d0a3703fe277de197acbbb0d4..7ffaff9f5242bef8770f25bc3ea132e66fda6820 100644 GIT binary patch delta 190 zcmV;v073uU0=EK?fq$V%L_t(Y4P#&!1%o~W{{R190mP@!9SRZy$)Ssr%m*5>3W)!s zYXpe_!76ldbUqWh0JZrvw}27d#XxU^!qo^#+!Dx^W@KbUaSTx1KcM(iAU=+y_8d@M z2NEBX3DgLRJY?_>$eDw#5+nx1AUR}!kr>eRjq(RU2moV@syC5L|740Dh(I5W@S=hR sJxH+d&jH00u!x@qih<-t!5|L-01R@X)?K_hp8x;=07*qoM6N<$f&!;b_W%F@ delta 227 zcmV<90383f0^9Vo;e}Me$=w4z$ z7Xb3t0r4{=aZob#M&iSmUO)zVGCcv4B$@`gYJ?XR*x~>^_(0(*i7p7_9|2<0!yJo2 dqe8R|0RU?woV}|D4*dWC002ovPDHLkV1jSpVsZcg diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_msgbubble3.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_msgbubble3.png index 565f3563ac87763955bd84ebb051ef1145cbc68e..8eca9372375542eb4994d7a32ae5f356bb62ee27 100644 GIT binary patch delta 582 zcmV-M0=fN-1-k{1fPVrdNklN}j@7ClSGuM1MiIPF*abJroHYI@Bd_355=+;EJFa>DtPw9eRB}q)(6yBw|d%92~%%KtK!wd5=LF4}@d9XSHerYZw!DsBsQ{!*i9;-%Dx(eVA_={EhgV z?vTF;msQ7|;IsxP*{(dw_5P|(iwy1r>yFo+)#)c{SegupI$G9Lz@C8DI-tJ*+GOse z@+VOrNvELfOQ!H7NW(tIF$d(ou&Wr;l4jevHqj_+QNJJ=;)9^8MGPRp#4pxqnI z_!5kQPEe@=x4kieJ^=+qqNkv9We66*RgKOPXenIj$#uwuezy~U%<|9~>!{uUo$b0{ zo`Al|H9ydsEQ790T|%?Y?xovAJVnWQtUB#ycmx-lq{VkrO!x3r2)#<TYU3WDO-_`H*IqhlsxOmGi8p1J3o z_njFtb0-#i=ZL@N?|GhPK0^;AZ2pv-hEzNr_pJ7|gmE*>!hZ=A3iUM8RLDK_4iHQr zSb$pChjrKnUAaPc(hsB11(z_%-7Jx#1M_)M9KjfbUW8oKvl-1Q<|Ex1Ncv-*w?%G@ z9Ddeh_9IB6NIq*l9n$EATS!6OQ>VBiX-q4R?mQL6HMobqyk?OFY0cwTKtiz*ZeSzO zC}ANF^YZ`2AAihafLsYbO7MIsk%zqG8FMFS)q*(4rn3Gz58uwoh~#p@DsEjwLuGL>(&3+MU{+pWrtfe=c`pB1 a{Rmu^6Y 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_14.png new file mode 100644 index 0000000000000000000000000000000000000000..33e863516e3b45675fb5bcdf9e9627e780a575dd GIT binary patch literal 737 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfyvv`#WBQ# z_v{o$k5EUEw!L;HCjtZ~DJf^pl<4YIh*&tuL&52ant7vclxl|Vk%HtcB6qm#7IhRT zz7r8=-y+Z-2Lcer$K~^L=uk#AJWmvn)PmpZ+X1O-=uOz2W`u zwi1n+J0^Xuy|{&w$y!CCE!Z-;Bkk_8YW})&N4kG(nxo^i*zxifuJz|l6ONt!@mTlJ z5w{iB_&zRH(B>`kxikCJkAE%`PTw-#c-rUM_kC>d6Hn(kyc0cP^(N|#L?M&iLGvGs z(hAji{z~C|_7CUAcFQX7J=@RVu!Lqi$7AP#b`kncvp3V}b`}^etqc}^xF4+A^EY0zo zpkB)om32*irzI`;t2ZpOQ1Out&}Om~-4v$LaC`$_Z|0?p4hMIC_fp|67yi~-c77Gx z+K{*XP3D&7lL2p9bS-kbPrN*o+w9Z*vTXgK@(FL9pJc4!|7o^kjRW@ywl}OjA5^xo ze_)#SfO$`&VnLnVr|AzEj%_)>8NvAWRAq21_wlDM0y*Y8{(twPL~u^)vn{gQjnDn+ zbzgn_}cOP9Nb3BO3TRg&FWZNPYW z!UT!+`SKB$p6E^b!S(q9e{0#}HTx|mXU~jb-}Tpc-t*dn|1bYzP-)xp`S0!AMo{wd MboFyt=akR{0CXBMDgXcg literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..1fcf1cd77d8bc83a1cd10b8edc9fcbdabbf6e47f GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfho+>#WBQ# zck5JNk5EUEPclq>r#``{g^0E2w`Hb!J`g3W z^_%~sCBknbSL>&3zIin(JGj(Du0iRI*-^Hj?#q)zt{?7s`-`QXHA+`XTW#_(yS3pa z?iWRJ4i$tr1X!+~dCOb4H~0$k{s(>`4_KFOyd|eU$8O03!8MM)yDqI+#CF%aLgMnf zs}GnSx%!>DA2CsW^DOZrzy9u!4)-}Q`^u!8Mp1R8WzP?k9bJ;UackqcB&JQJ3*J9o zK1C$C`XtA7)cuXrFob`~go-Si=+OE`E~OQ z?T)e5WcUQJPfrxv=d@LAZB~f%9loccEx|LTgDuy({a*C?*1-!o`}i6v*kAA27#5rO ZpW)$O=3SCXHdjC?&C}J-Wt~$(699sdKY9QF literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1fefedaffd87b8004016d437b88de5f9b43a7c GIT binary patch literal 750 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhoe%#WBQ# zck5JpkI+PkV|%l-x)e2E1$iV)=r%Liq3M~`sKDju_&{Wbhm-S*M=P8i`I;uXJW=3S zCg3)W&+PT1M?v06DoTMr*8A;$zWe=0xjoPC6u*1Gz5n;V`=4#!SMxo;udA`+frskc z_my#m_ws(QpI#aA$|N&?P5;Bx50ZZ(7HV|n`XnU;81C78GWbd6>hzPH>m6QfG+~Il zeLyl=eA08DYQbAGLQ+mN@J1=TmfNvFuhsPS>n~q7#7L;IZAn{gKdJe8Os)2|>q(aX zk4V~W+5E?M-$VZe`}i)2$nKjLzAVsr-(kU&Shg*4Ke(dwzw^w_*ph1pXqn}%Exju&TyPDKUlx8 zF5r54*=5lv?ic@F7@fLZbx(NLu^(Jb7lpH2j+n?8{OkF2GJ?g_XoCD<^#C7tv!#2h zE>E9(`7_(v`UzjvOm@X_&777HzjdbBiv5nQ#!r774CddTaJ6dp%Kk+0RbPH>KU`aJ zTK&f4&K*3{7l>b;*dh~nZl2$nxiZH0E*JNI6}Gsjn#mSBX|uHFUk*Qo%s&S!+8ZMu z_RU(VbRobyt6|6S_Y&vD((63R9M{`vCx192zD{9X^SrJdjqB83wf|eafw`)G)*t4O zO&82v4JEJ2EWIpT!?im?zTus-n!uOs7F>UWPWn6E|1&)xJxaEeeT(D7OyMh4OkWR~ z&Je47x%EBMXMs13j~ZP*iEsD%Uoz7y|5x#+oAW10AM$@QF=N#;ws$u-L_fK`fuH-u du7j43?Pu98@_%sSo-in_dAj+HbKhIeeOazo^QzQt{`=>@D}UJ5ockUg@@2ki z!PmnEJ}iy~udeN!^*5=8`|N$+HvxHPc4SWqKa{`Xqb&*8)@$b!?2DMSWafuE{>SW+ zUmJzDl+OG)YmWXlwL&YKtxW9~gBS3=iV?i2aPwgeYo^dwKe?4mMIv4cMCGJcyjZ%N zOY04LutWI2fTN}=Z^0aCtrJfk8$>_NzES^=d3sx9=)Ps zW8uXb^NU$Ux2{<&=5xplQIKEgdFsqjDvxLe5PL*=U<_*GAv;)^J z4HV|-O;YDMs3$R7NPE@uw^Aqa4EL|QBdh$&KBMMpglWiX?x0J7^48$$toMC3i8~ZK7vIU+cYfvDX|-v4%J@p!Z<^LrEYePk<+t*? zw)nO~(7O6(Og(-T?3qHFq&BV(4k=%*AEp1I@N7F{hRQ$jDE~(SS@t%~r5i*S9bb9& z?Sh^E`DQiU%n{RhlF6m2pD>N<$NiL2Th34eCjSMpaZctnZH^PBII!w8i7x1$*p{rE z)2zJU_zpHBr||FUmovUO$6TBn-*|OZ+qzcA2-7n5nP!sR46;Xy9h)Bn`0fA5diQYk h3#W9>ot}RV*E0mw%m|c`aPKc3*Ig_4y1X!;U5oGF7P%|jgZkQtIG(+Q> zrJLI^zC|HSx(e!|iN2;Tksf_Y3zW4RfACmVbzWjNsSy?U?;d`pMb9DE&SEj6?loqq zHGT&^%s$|;mnE3_3UkpMX@Sp9M^hY30&GN1{bygo-*D66;Bp5a4x84jmX{lqmN07A zGfwka`LNk(!P#jJGHj(Bhu8xcyEGPLvl~p(EV6R?oT?Dad{8!3P?Cv3@iR+9NoJNf O$ZwvmelF{r5}E*0$zQ7g literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_newphone.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_newphone.png new file mode 100644 index 0000000000000000000000000000000000000000..176d646adfd9626362ca75cd0a5492a13dfcac37 GIT binary patch literal 631 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?4hTNV~7Xu z*{K`#odZRV{dSRpSFbcQ@KDiunWdy7G`XeZ zqEyQgl~?7r%3t5RcYELT?@EP})_=eAzUKLy^7p%I%_sig4_ke8(gTJNhY6i-TRbbj zy_>*&!*M#Z`2v9n#t*Yyw>{J}l>Pld{J?_qwZ>w$=e31bKd^sv{^!O%=3m(?k6%b{ zRY*G^oUzq*<&()j`$D%W{Mz$`W9haG`FfU|Ms|g;c*n!N|5i(#30`zy(zeCZi_*(} zmheBG9i6m!jUDei$7_AFda@EWeS5?GDtNK?k4>%aCMPrY+;&yD_Dxmjbc3et>`JaF z4x&2SkId5Fc}`g%`?iDswc4U(2f2SRbZfQU&v|f1i6vd(f<^^caUK4bqvN z1&bf$94L%sY;=2XqS34sp?c7&^Bh|TZ}Lm#0~d_^6?ZXg(#;mpH;PJAiM$y9NUl8G zSJSSio-^f4(4Uy2QO7s%x_OFd2*(#)*Q{IQaealI=qL3}ehu1=7G0-aN@j~+ue|zz ztEh8nzLAu?b=OJno^+9ax6hmUS9(wOl)JpE;E#KK>Xg}9YdXX9Rz9m$`2Fi#j9=U7 zKE-02mOCL?+_6>iaJF=6|u5p4Xp{NA4FGt2LPO`9_3*V&!l=lr+*e((Fc*{?tU-6*;1*G!*feKC9W z{B3v*4;$R8zpz4+i(QeaHG=CR+mEYWH#;^l9}x_aE#NSZocTIm^P(NcK@;o9;?SpT znsMw&)jJDgrDGZ9J#<>GS*Y?RJ#XEd#%_Vuxb|~zHoY>J`Yup#+S_N_&&j-#a~c>e zE_0}x6dJ!Vb(EMY5^s97PrfY7Q-gDQ-<0aX~i9ft#*p-;lIxr9H96&>Aqu^q0>&Dv`OwN zwalkEV}EL!;&I?_5$a#<6ZyFTIL-WIjhm3>u|4L@^9IM#nrjtx>@W- z9isVx4tD!2Uo6|(KmGd!*5nV2&I_cH&dZ+AC{b0=H)7njG*iZ5an#MO2|5`}yBVsO zpZw!++$wwi>$&7#397e?Tz8rEd-rAWAIaRm>*c4oNgNTL3&s0RJWY~niByZ2)UZ4< zTJOs#pGEf>-zEl@C9H37jGMmCWAU08y}AE4>!${m&!1cS{w^quc)I$ztaD0e0stdN B5;Fh* literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_noise_off.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_noise_off.png index ba83734478ce2e8085d93440971e58df1b5ec58a..ff4cd89a118edd595a7a1e93925f7532ce6002cf 100644 GIT binary patch delta 583 zcmV-N0=WI;1-%83fqy4SL_t(Y4ds+QNL67N$Gv8Q+8|Mw;01#w`;b-#4NKhw-BO7@ zAgEBBLQq6p1((*AY^cFm6dN2Og-V4K8Wgc>M1xQb75VY@`yby&&b{{>?)9wx;dh_+ z`9A0J-dj>~V&t5=0*@he?3bqLDtv|RxMp&TAhpER#Kvhl2Y*|z2R*rk#LoB}#y!o= z7v7aw zZTO<|Q7_I-7=;%g4Z%w|fGTK)TYiX^d2g5%Sg6C9sEh9Qkz&U{UD1vAPqBeB-M~_;q@qS#z{Z? zCpPZ~X+R6fC0jzHZi4j2hQ(QGj=zMaG<*X6Z4^{!iEdF^;gfqza(L_t(Y4c(N_OH@%5$DNr*1A|HtiHK-nEh3_n1VLIT1VRfT zf;NT_xTxq~Xca_@7D_)LXq5}mfwtvXE(CuR1+__{RSSbsihg4C`h4Hq3wQ3lZ$^YR z9{70f`JQvnnfvbZH8gAqOOm7rCt+LGfymu}r_hpBlc}?55PxJPDEftHdzCac;^*te zY}^6!ra>?Sz0c(2?$&J>D`4YJhz>!&1lE>f`!}S~Avy$o%yeJD|AeZ?=*KmOQ5+0G zn}&6`1+t^I3F}_?4&zp<>nZk!yhnQj=Rr1Xo3Or@DoOGOzsKrzJ;m-2^>_$Jw7^Df z1J*B6rSj*Z)qgWRbyr~(20%kzflMdZ4nJT{4NR;@_Y!`?lg!3u!)}UniLwWd_O>FW z|0j#Azd|0mjeZ@kd(x0LcSzn1Sf7I?qaBvd<#KDdPFR3JXoY4t1YIC|29r<#)x?eI zOP~|H20e;`P&MAalOeSGAUgo_(^DYhUj_AmO=OP z$u?wN1`W9Y$DmoiYzD09eLfDCjc^A43rbECokSNd`wNeqTqp4tC5)Bz^*jv+P0>4^ z`Dc>5OsrfZd@!-@MEMiMi=ch`h>Pg!@SL^o?kwo8$`BewdY-biic7BeRp{6PYYx}E`PC&uthOp6o*uJsOIX#1=8M1(vO$7xp zfx;fp8*w|9_ciKt5)ILtmA=+~O%PL9^OyS@sBeT0U;nT1KleZ;(XN1g`Tzg`07*qo IM6N<$g6O>}1^@s6 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_noise_on.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_noise_on.png index d4013669701a3e6259704a13bc3f52ef47d1fca8..079de5423552de0483c7756835751329ae52634b 100644 GIT binary patch delta 572 zcmV-C0>k~I1+oQ@fqxuHL_t(Y4ds)+Ym-43$Md!&X-V4%(hBWhky;@trEw7qPC9gO zFpDDCs!(weadq-PD3NX!N)QD*bj%d!(oIYqLU0gCYq}`7s4b%A?dN;BlQS9ezTl(} zeC~Pfo*(z#bN40^|BZxUxCAd?^sgV9qDlA;lDly>=!+OULw{V-#-59qW5S|tkoAh@ zJiDhEcY`Js&(fv=zcTY7f9~6HHfWLf5>jy56`^xK0^0ZD4dNvK2B7M`ToPrSxn1IaBjb`I>WzjY5jz$^Hu81!>!fr@H=9V9nk9ezO?0(cKi z=vS;n$IQcH?58jRMc9Th*2mF$lDqU@J(jqO);;J1Z-39R7}OV)!HIUy zzyrH*34H)%l8j*MqjXPIkUaBzQ_O#u)%H-<6D+_98`R)S^qy;Weg!=UuKx-AYS$aq z@-{~OH-fK$Z=T5o2%usdodZF~K%zU5-0@?W7tLyWxaj*L+vI-oik$ZoSyzuGKVii8 zMYc)Y1T`laKas^0tinToJ(f-K3P_r<5~BuFI0w44M^SVB&A3DDLB$q_*%!zF0000< KMNUMnLSTYNNvn ztb6R*+MS%BM&Tnk0OP(1&Cg-~KreZp)$I<@8>~Ue729jd<2wjf8FJXgBh_*MMFV6X zfe-M;RoVeL=Zm9fogJyB0W`b~pW&j*@(-*5Vhh3nmfVZ#>m*D?GK?Z(<B*Igj%K=u1$+L#TjGFajFzDISl1MN8~M zE5AZ)T>*L(QB&x7^egx%=QHrKiE$EcI>#Kk3Mvc*JAVa#;3eqJpO{#V^>^^{G)Zt8 zMqSb>yU~xv|Ho7;1^RkIA+F}{Se$k)-G3;=R*30Gco_zv5C$6mkaP$n8+8@jvN`w` zonNZy+qb!mj~vF>Ng3k{q+N1!0=M?>pk;Id7i&+kvlnKU!?p^48lJ;_>+i^>_#Q}p vf&LA2S0-qB7QVqkcRQPId$M!WzbocH$_88-Kb~Ui00000NkvXXu0mjfP@x71 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_notifications.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_notifications.png new file mode 100644 index 0000000000000000000000000000000000000000..d50b2bf7d91815ed2664b253bea715fd81998aaa GIT binary patch literal 540 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftj*KKF~o!S z?G#&Y7DIuy{7?&v7UvBcELgooMd}-S6IRasf6y&}dw?0?#n8(pP*N1F<~ zSFHR~#2RmSYO>iyvnsc|6SJ6HuQpSw8lx@LBiu-lDor$x>+>Q6Z0sJMi6#^IhL!bzL03fTWHur`q~;#|C@ z;>n3q%o)s{Yo<>AyK2Ks=KT7v`k!MjTejxK>`19wZTfiYiu~rnwRKTib80k__FQ{- zTVeOEnB7-`8dZ+-#Z=#CYb?8Z>c2G0`P1bt$&TTM0q>qBTVCT|7JcV%{K4y??*r#a z7z%goeo}2UUH-<@m9BlZPrrSvD=hU-$un1o4{&Ik8WX2JcYX4zr;kI z6jzp$uk-PG#T|mIOPrWGnU^SSU$CH=X_dm1r_~4J(&iR62`)M{Iqul!-!kuytz2d5 z<-Z_vmg1ZPnpRO@*D zx_z}^k9P&v`iGKlc#f|RVmumlNILHN*Y@iXIvbLHNGmPkpT$}mEB@q?vH$%;u~}?+ zo113wP2-$XKlRN0S?4~y37E}s_B6}46%#wG=ll?y^Iziaoig8`6I@$bXR_|C3QaeQ z{WBqV^X6;%Q8^#4GrfJVBkD(aWBHWri+<^^sWLsx&cEWvrtZlv-a5xlnJh8+t&PB> zZ@c6s|G&7`Wo}s=NBINJ>&IlTwYzNLp7HOYz$vG#uP(A(*RXE%XOIqfzvMvVPEgQ$ My85}Sb4q9e0ANYKWdHyG delta 292 zcmV+<0o(ri1HJ-~BYyz}NklQ ziTh!}7hrj$u~*<7XaP4s3j6?9z!>Q6NRuQfthNUF)@7A7v47e(e}W=``wGOVq|EB3 zl6t;CBjT3k_RN5R**XHYe$uG|KKY~VH|r3%bjTM*{%x_ZU}cFjxNtnr>U0DC9)Mpb_l{M|%MP9Z0000d@_k&tT*m$)Yw+|cLXR7+n@KYS?0nhpW5^Gs=%mIqmzdFEE3|nx8uPH5&w%~h$ zu1bC(cUL{dJ~wlN!Z)zZ!z%6j!Ef;sFiXs4u+=M)#zDDR7lFO?F^&1wvLG@(z@NrV zjtOew`hQ-uN^HK#*+n7QBQ*gBnevxnuxm@uk{*?!YOzIkKr_|!Xwy#q72bF3+G`Sj6DRNyti+T3nLdFyIb^?+tJ^oiMf_Vrs)FOhjQm*7iyDn#^>56;2rcHtQb_IiF*m(L231y z@S8xddfOiyi<>iB9l!M4Mkj%nX!8J(y?B@1ffXgZLZa>GGv@HdWE4uM3S! jSv!O3Cs5#@|84mLbb;oq*DV|j00000NkvXXu0mjfuHa5- delta 692 zcmV;l0!#gg2FwMJB!2{FK}|sb0I`n?{9y$E00M(aL_t(Y4W*SaYZO5gfU_o$s3$~_ z6tR$`iYOL}zd@|>3+&QZg#?0yU|}5s_7;Ldu(T3e+n|NE;p7Ta*d)Z5D43kzxA*35 zce8uB;De7h^WK}cGxKIE+k(EXLk&naItBGzKAi_G3!mS zx!nLz_Tkph;DXcG7=vo~2#!T?7AALVN`h?yt_2poB#r^cn!_y~2nGwP)1{VXPCtVc zID{m&wUuf}-+z^u!(4;H(|H2Q=HRov7B&+pUtu}0t*q39uYD>z2?gfAB#yEpWe$I0KMjmaas zUB}cvc4;sH>ACh6eoXeWw6WkA<;;J=20;eDM*Sp}S_9(@vEGF&cNYqm#OY19 zKe3nfwD<+nuGTc}{rCD-Hf_s!&0Q($yI65@)>o6@jH*1Fz^F4#-3dbUXg3des5epFByGXNM$iCCm-`LNPan(ZpE%VtgUDrLiH}#W3 zWp-r#j|4TzRprxKLz3?(#CnIVp37VL=Q`@ZO2!7YiO-fiZnoUrHWh1YW#`z}aJ zePom6OFCP8h4Hr><2l8nQHnVYH>NS?FJup>7vBDYkyl*uh=jKP51-F(8@xR>&h}pt zYp5&af9vg{LstwQ*YKp<<@+cfbNMadeo=W>xNMWzb)Pf+l_#FhGt^t;U((1XyX02Y zEZtpo{xexudlWW&VV)489abGBH7jDv;@l(KJiq##_*#<|X>WBcjQi@}yE-~GFL$eM nE10=C?pO7mH}~(piT^DA(EMxm!_(2aplJ4V^>bP0l+XkKFktlx literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_payment_card.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_payment_card.png new file mode 100644 index 0000000000000000000000000000000000000000..700ee4817fb4a5bbc8a5f089e5148324f3f3274d GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUee`s34DsN7 zJH?jokO5DtbV9oOBe|HCy*@Gx6Scqa87LR>^92}gP} z=Q|f$bg}(h%@vWIJfVrlMD(bJ**E>vJBv!*MBG2fnR4#?Qn}6fjA;p}JvSF?Yi_=O z;qs|lIm;px`b;{Gtk9NYc6V;JIP&z6T3(YJCa5$oqeSF6rg zRy5DKy}waHKjHGMT^uos4><=(om{9~slq2{IWK(eoQ3(eDnB9u_q*_yz203eTG+8# z&t{KQ==-&Y{;<<+e>+rB=YuH8|ce?4EA_t^Zf2b}6$pY}H16l??qf~TvW J%Q~loCIG1)h}i%D literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_payment_delivery.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_payment_delivery.png new file mode 100644 index 0000000000000000000000000000000000000000..28baa86725dc7dabcec884bcb9a0445658edecd3 GIT binary patch literal 613 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?7XLoV~7Xu z+bOpC&4D7ve{XrA5I0L=hK^98V4`4?+9T^5l1JJT6z{biYntk!WH`~og=L}|+ib^6 zuI$deaZi$=)`|>o)JL|P)o#ppAzxO}C^ZU;8N}GABrdBZZ&GcV>d27$|M2T6x z`*`a6)9x3}iJfhB`G9U+Ujjp%VxI8-3E3*|n|WttG`G4nOHNqZb%Im%_W~y5x8N~;r)wJrd+WxG%tYH6t^^Lm`GhCDBEK;p5 zbd}n{>imQ4#$wOfGGYEs=ZbTl{}dOr#R=V%yiz+|VTA{?=#nswl;Zza4|sp%xU<4h z^}WL8M7=-Fjx4vP8t`7?>bZEAeW!S;ny%d1eQB#_vOSyrP+^|?PYnrq$JwQ-p3jac zp8DVzw{i7V*4Mj#7^!VjVC7b@ZY!;56n?SI!0R1nUgFWOUCR|1r!U)Aw#eU>vs|EA z%J1TyA&Q%K9$Z@XqYIp_eiz@%i1G`HS90m?_#n1?sA7y_yX(lb;m2s z5+}|IWVLj=SXaR;8>l|c_K9w2V2aH~% iPT;>$ay90n`Ug%E_OLh1_u literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_payment_provider.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_payment_provider.png new file mode 100644 index 0000000000000000000000000000000000000000..92404b0f79303d2eb27ed9f8942524cfdd4d5b80 GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftkToPF~o!S z?UemS%#Je0-*fO9_b9a<>hU|zJj0M{RftxrdV&uZul|D13~>%qxl(NyG)?9?R5=Sj zsoA%&dgqB{QQN)|9?*WWQD{%iH`XcFv>MZQcS2H<(XOd>ODH(i9yCRb<6{$Ol3Du`MB;qZM>WO%yzxvXow`fc{iM!lWf=^jdlFRhR6)@jn z-r>fK-)6>OVI}_oP3sW0LoIZhqH=~2Bg&Q()4T!n{$=msK}oTbKo@_C5H-R+$d)1Y zct~L4OzN11vy!-y(#MK;IjEu%^Pz zH7EWYWZ$3=csD=sUsH6GreNA_PHYTb!CN>4Euae?LMP}eTk<3pdm)+yS&t3k4+oKd zKWe^W^W~2AqWO0e%n|zyLvR9lF4r%{ip)NsV5$~bS-~1+xW^fPVrVNklV1Kv*1|SEDk1z($VG$H7 z(7x}BFyz1xDBeS}y$S1b=zugR?%8_Lnt^U_%ymb}RZ#dZGoXzX-=MW{&RZkILH}5p+rmurAAmx)EeT&?4xU0M91WZEFVKfUk+4my zAHq23+pfbJ1h>cb?pibS7!*31UQnO)Ior2%S{(7Gi+tkQCZql=V*7p$yOu;J#3a!ckG7$@}RjQumJ9$xl^H+Z3XX_+O zyyk7;UF&G-di~n*Qxdlg8lq>Eon19^o=NWZ_+7^@G_Y4RFP$*s-lmHlw>e&Nl^*%M z;D)Bj+$NKqLj9LNgo zGun!9Z?IdWbKgU|f6vo{lea$*{$&uo&QB<_Cv0BWRJ-@eTgn6azs8(cBImKVWB+7< z|NC6!Z{{EFvGvFf4)$LtZT`!8bMcp7vK6dH+3!eh30rYpQp%?LRIsE$e?IrMgo|fh lOg{f`#{P5a!M~TkWcM&z@%P!O6}q4Z^K|udS?83{1OPph;IIGy literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_linear.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_linear.png new file mode 100644 index 0000000000000000000000000000000000000000..40f849266962d497c66db47085ace9398ed372c3 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUP4IMa4DsMi zPLN<_acU4$`~UxceV{_MtpN9-BPW)`GkyJOWMovw`Z8VV@&w0Kyb?Y+4l;a4u9*}n zU3g%o(8kC*LDk`0m_S=3N6K=hkID*S&O+I2pIQ@ZQfA$-_|dz}4A8!G2qo=E% J%Q~loCIGMDPV@i( literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_off.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_off.png new file mode 100644 index 0000000000000000000000000000000000000000..f6d5cd5f0b48ee93552fe9ef07549176f9853594 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUxp=xbhIsHM zCrGfeI5h~W{r~^JK2V|BR)G7^krPYenZEusGBT=TeVMLwc|u_BVnqWfCNNRL+j#L; f!@7gE2GbZB@-%ta|K@S~gUt1G^>bP0l+XkK-(@iC literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_radial.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_radial.png new file mode 100644 index 0000000000000000000000000000000000000000..0a49050c60e9f1064c3514c2a2c5ec1e042b72f3 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftku)SF~o!S z>ePc?haCjkCOcJsOApvp=)|`K#&bc8PuHmR`Pep33GeP*(dKTjPH<9-#j&HJrb@uN$^*JP?!~I%wcfWQ{XOmtD>%9Y_;@=-O<=)$I{n~D$wL5yB@J`TuvLzqo$y*5bp06E9TnOWnOb&Zp+0Q2Mpqt?FxU zM0}OadGzMtM3W^?=U$bqSQj22>oEU+>*~+(GBxbiw0Se9hQ&H;PHif9yV^AGwQR(D zmVH~27FT?^UUEW7DrT1M@~clf4;O0AKQ`_1iGcMcUoK7)>+1;jQ7-56J0QEnK+7xb zu>9kDQSa|;se9M(X7ZN*iOW?ZAMAL1>-$lsy?-A3x#z#^{gd;*^DkfgxqCuL{Tfij Nc)I$ztaD0e0s#KFd+D2$#DzI;ay6nOCu~Y++?235G9huPX73bP z&&Y*Gyn;Lgj~3KEueu(y*Zyouit+wm&*oL1dq1!I{_NjrN)snlFnO(Hd+0C6)@%Kc zv#hI*arIB;!stN#5BXzfXAGd{W87S+_Hh*TtwUU(Q+No5L3F<_mnz1sscbU!IGIC@#O)k+<-Q z&f>+}U)CAuw@-J3C3esA!wRl^3N?jIM0o>b-JRjG4lr z8!U$lI2TQ2SnU_wf7n*0{b!G5<3~}KPlrue@2B5c&-gV{p!e5RTg#rz+;FYKGrmZy zVfkuz;*jN$wLt|Pf#<#nb;uFVdQ&MBb@ E04H(j&;S4c literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_crop.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_crop.png new file mode 100644 index 0000000000000000000000000000000000000000..79177a1d91f93063a85739737772ade3456e02f5 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%-Yk%F~oy6 zIpF})zyJUBJ6va2IXN88ZTKPIv8=7rCxT}pOP3*&VaGCwgv|{}&J%eP7};2@0}k+Z zSS}D!JHgfP>5PNj3HKcb?A_ds)$dS|Y+!R?HZ&99y2LUiqQO_l^Nsn0TDA_^jgg0# zL}Hka%x{pm$)4)b)z5r$jYmz1ng&ZuLxuGPA>{@6>lSJ|JY*JaWisSwsBKW{Y-SG0 z=DPOrf4%xHp;azM7p^W}$fkYi2vdpk#GfG_88a+UmR{p$(Qzx&=R4G2UQ@}DxW3UazWD0ATBh>mPd;B( zUoA5an54M-J5O8Jk99Va_tngO(5iAzbw8KoiK#B?I}|S^Y}eiL{glE_!5vIH8+Nd% h?O*pZAP&vyOVoSnaUf&Ea~`QSi#b$qI`ey-|B)|3STDb+eN?yWAJw)lSenQ%T1b7eDC|SduEyztAz`(nsWvPu_9B-O) z0l$#`hlS~0YpYl{dY<9yeK;>;=Jbb*afue!-n-kgsb)Ca#wP6L6WaZ<=8Ft-_Lhla zljR%CclbVE{9GdB0TWxS;ZETR66M+dHyx|+zOB7gEcu4^S&nX=&ll9Q)kR*nIeLj& zxEdd{Q04S5IT5SsdFh(ztnxGO>ZJRYOnfB#;(lY`xfAgV>yIDdFuvb#_ry$##r2Y2 z25gD>4#@!@8frH`y{W+HYrC*_+52NX#_Rgn{hfJ#-HrMnwQ)|nSj=vvqT?Sp7w73_ z^)|-Ty*Ef|JtI8f^^Auv6j(F8OWRCh|$pXNra@ zcjCkQEe0oJ_Nza?Qo7sZ`kk|TzP`5oKkxaRbG7gHZj9L6@_JXS0YmP@`I47~_B21@ zxim4iDN=A%0dw~U#_JQZDujL79`NQVDm#B-sX3JAES(V0AYRe1#&q%AhU67DHeQe{ zl$*y>ne7n&EP6r2w#N&N4(YtOVpV&vE3^8n`HSOkW9~`@vX$K5_1#f>iEL-3lyYd7 z)-s8$m0Xv-130HC86ICDFP0$t&S9zf%?*}ng%Pb%70%(tOLE8<4Ex0F~oy6 zIYGkb!Ts2xikKTtTqLm~OuVb}T3Zt1h0=!(d!#$oD?PMzFk?3pZhR!~D51vw zG{5nqqX~Bp^AsNTP2mh5`4#rD3#&J8JGzQJgYm@E`;8G?tCq1@w0Z)=nWrymCdk}jTCixU1FOPD5rt((#M>R)Ca^Z}DeSas_}$oshHXAPJ;3#8Udqk2FA!xp)5o`9oS~ME;qnM7Hr8>|XXUM|Mw_uc($wlWGNfB=af*cIywEl3Sh} z-||{Pzq@OR+E0dArpuo^KXXN+Q(WWa2A5A0R&(q!tY~fyVQgCYL@nu!x~t!X`?q7B zb7nZFUObh|WYtqD)@f$vy#1+B>q8F{H;3h}Vf{^#yuH?I*8pP^W= zzt*U+e|ycHFP<}hP5vOjaxge&0!!=n2AR9&kykf$WjvkmUF56XGD+8>`^;hsxo`Ym zq}pY0Jo3DEo0EU*y+t+tt@=XM-7{=Bgrz25yte=Ld->h(P2T!XTHE}FZJomP;@Irv uFK*v*S$Nu*+qr;q`G(^YZ4Unr{>}9He*KvyU)P7AsPlC7b6Mw<&;$URspX&m literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_settings.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..527c546633c2e3fc4bf2cf10fc82fa3de5dd5f3f GIT binary patch literal 489 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEZEbwrnwb86@$M2!d|$}?WtQ`kpPN63+;g?{&dJl~ zR`EWHd?4DfHMz{HF zV%7Cvo%rkbGEX(#;2i7Hi|qHGJoUc!{gc|{9>d3Zf#r;A!?K0ev6vl{d2zgM#utWl zi#4iVOE&zlTG5cW*6)Gej052Z4zMtrCveYc;Qqk*%P@3pSN{PejewKFxk)M-H&f-+ z-z3O=bX{HeOlfOYdQ_v2w*0Axueyz)54QNsNI1C4tS!jDN#y;OGa-j&i~q^L@KH42 z6Z@SS1N{=|HMhENHeN4ix}P$!<0(f4zxsi>m&-Z7eVFff^ju(5?d#*bpVOZlsIQbW z;@{?YaIz-f<4r}UCM=iGXUKf&yopC}wtBFP_0#n%Wl`0N57m}?q%FUrCa+Y=HS4D8 zSvIN74)e2rYbQBhSs4`Vm*Q3(vgdZn|1JUhhV>Wq(tQeC_Xy0cc73&`DRTo$mcrSP zI@?@@2VqS6A1`?6aB>&F-|VNJH^1+@eEZ_ei;<@Wt~$(69D<6>Sh1{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_photos.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_photos.png new file mode 100644 index 0000000000000000000000000000000000000000..81efac9a208fd9363a7d0fb4c1e5df09106222eb GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY_g||V~7Xu z)v2ew4m*gnN$b8kr+}{oypJ}Q7+^cq-zDMe8`Qymu{yF7_3bq5A9xN&3;pmXZOwd>8m=k3J=CCYDy4|Taa9+ zyzG|8;;f|Fw1(^Re(Suy*;Q)NleKm0C9bo13u<%9&oBNIqTaiH`r*6@Ri*bH{Lejb zSm&ToPu=!Y@oO0ZZI5{0XwrTb9O-K$9bm#Y`J+>k@DaZSEUQ1Tv>yroaPt^zF9-jA z&SPbgBB7n(m)$FvW!1ZS59*${rf?f;9>@4LR~{3plD3CKqsv2_0qWc&%;Ms+MB5LwRQ&x54#kxd$xI+}QbJ#vg?{ z4q44soU%K2`bY(sD}9Sr`Dk=9rhTr7LgiwP@~1oA{o+5KxuEv4S3%YB|4*iCp1rq? Ye~DwO*U`{_!JugJboFyt=akR{089wkn*aa+ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_pin.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_pin.png index 7d7b9b312eda676b0b0009ac5e09ac79e8f8b34c..628669457b5acfdb1a7436fe69b6db54bc896e4a 100644 GIT binary patch delta 552 zcmdnYe1K(waytdI=A?m zf@0>x-d!`h-s9rIv%YIBUd0z&y8j?VKt^Vd?k)?CrX3cRoeCYzV(Y(F8peChx@@Lv z!Ljed7w>(it1lH#a(T4=boN*NDW{*-r5%6Br)PWqch*&HqxPRxdm3N%bT9Ns*5>Tl zR(rkp5mU|~^*c_>M9-h%VT)FfbvnfrbG}j6DBw(a5c82>hrV0dhvrc%&Hf*9jPud-hSc%o5wFN=i5j3+UaFp`xP7beorvZ zx4;v>k2*dw-1$K1o0gp=@1G^bjQ9Vv$kpbY4q(W2E)cA3xOCjVauB|D+2GP0Zoy*dC1DIN8RtC|+_mPO!KFQ1K~GPvZeQ{AA(Nltzssi;I~qlL hLTCTG|Nj+V4Rd(c*-RVbugahp^mO%eS?83{1OQKL;imuq delta 410 zcmV;L0cHNc1hWH>BYy#UNklZ8~YxXwbpL>T_;)F|oDXBt%SN zvPi@qVDlFkL}HOhh{b{k284u#M9_$c(x0?>8z;>@?Y*phl9PLL&U>EUdEfJ)mLdxX z(}sW}e)Rwp+<9JwFdqZnfKOl*SOjhjweVj+&AbSVI{n?ip?^W<{t9r-hXcmDtZZMv zK+P}i;UpyuN~#2=BqbzGNGeInN;(Lb^C)Rn(ypY8q+?$Oih+E87(Ec<6WE}HC-Nd~0p8+fO zKNA&D_L$4b%&VeGwZF41Sa>SN2`|>DFjIi=D;0$9H#JQ={;KaUKX3VcPI3ObOl_@Gzg~+Qbj2PpIqO)o>jBfD zwnUZgt2=Hj-zaW&U?uY$t8iW})r&4?x34`nd(B&e{GaV>Oj}=V{-%-9R5zoE)q*Wk z)~1ZHEWlADsOKvGd9EjcM-q~oVnlz0q`aJ3%Bwav-)~)-SUBHDu|H8~EKhvTF}(Xo zW?ljd(*+L8cK;Z2zXKEb3RNeGJ4Q90s&Rc|df2qaF@E2kH5MnY3b1C1ZsJp1CVBJh z@lCTtxC3HXtrc1ojU%o;YTwd$>}}kQ-77sF`X5=%#P-eco$ y?VI9ur2IeCb#}wA)ZG`(Pl#2S9{lemcMWq&6q{U+D^bd^JrBdn5%)d8~xB?A$g0#t}wMtQT?+yr(zkdd6pu4|-Q@8`!1kA$> zXcwEX!Hz=4VpDS12iYZ5^CDQAH5!H}#(Tqwc!YJSu|pV2EP5u=7%f9s_ef$F0zLCr z(4BuK=XwBEU>OGEi0&0W6;X_0^WO=JdTFx6V`07?dAmR73}c=mRikO7*P=O#Wl(3d z(*k@4a083bfqzGs^XS_6l|zjYS)aXNRG$xny2WSjbjcA5>YQgdBhhL~s95DtuE^X1 z_9L>bXf=tEBDXkH{5g8n!|5HQcYWOrSHym~fOGIh^AyueZ-kO{uxHdO$k zybo=XwH7pC+LOGu56u**lSKBNqoS5Bo|%*QD~FvPi;f7H4#>=5mvNX~$gjKk`QzH% z5_hC`(g1Z=+T_z({^3S4?+)A|x+cl*{AH#K{mJM delta 507 zcmV(&#la9x0NL+&$p1~LCWUGBUJ3%4T;eQ=opaJW!n4-RPuOJ`! zj`TGGIl?hWBACfrp=_xSO%gMF5*)P}$xdEkUoYPzf>_^{8RMjHt}REdfpG~oU=yZX zoAuF0pxFE~!5D+SdBp|s@M$gW-G7{j14Jw*Qo4|LFhtxO;Tbj4+=0G#qJS{0kB z<{DQ0LYiE$d8l xct7)8dn?qL#4z?B&PZEgg5UYeba(S-`#tfSGz@}57tsI!002ovPDHLkV1o1p@-qMc diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_policy.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_policy.png new file mode 100644 index 0000000000000000000000000000000000000000..073dd4a25aae602b20137f0ee2433e010f0d13da GIT binary patch literal 798 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfvLmO#WBQ# zcj+`=k5EUE#7^mc2B*Q1wvJM zXE?GFS+{1&HeO_BsTIsj)xBaex9)$X@%OX4Kd+1Xa^U^kng1<|)Ap37tvk7iDXr(G z$1TnmEiCUGH9aR8{(021$hSa7?f}n;dk3R$8>LCr%lA1YFO2k9(_FTLbHC#^*>%pV z^%t3aIUsSO&Po5xcgu>!Ki{7d-!;3S`R(Gb!Z&Vm z^yn?!ByIh+X78T)2kbu=it9Y75PAKO^$RQWzn$CGzEz*WeN@46yXVDF7WqSV6_P4m z)6c#*?r*S~FYW)DBIEzlA6Z2>FQ~2W6}~H+vcB-GW~F^&z2U#Wn=)K)S?mvFN4aor zd7KyUr;9hF?oZoHAJr}yrpRcmOAFQuuUehByQGF`yJH!)nrgx}0KW zFXn#sK+q&)(dR85Hav?BIHxPznv`+d!P;vX?}YE@lkaw4tCy?$-fIk8n*RScZE0HfIPu+r=Ra8A+Vh;R UbL{Z?Dga8Gp00i_>zopr0C0Um-~a#s literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_pollstop.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_pollstop.png index 569e6927c0dae320e6f295c0bbddb07738346225..39eb6c6b254f450f3cdc3b1c95f88eec25e10764 100644 GIT binary patch delta 566 zcmaFMe2!&;ay=hb*X$9{u)jK)52)Km1&(*T9`N$n}&C3sFvc<(selgMWOXCeIcmA1=*GO#Y zS{DCq(nYfmp#^Na9QIA-;;-l1-kTuH;~=^Dp38B=7amWoQUp~>em`HLWpv41KY{U0 w!KApXFv*GX5zL?Vp7`x^Oe2o9h`T=dzQ*|#Pj;D9Tm!|Yr>mdKI;Vst02>|Z%>V!Z delta 468 zcmV;_0W1E_1nmQmBYy$3NklKqy7uVf|kP4#?DR>Is@8SBDf1eKsn@v^I-Pveaj|GW8z6BbMM@b zb7#&S{-b9|dZ!~aByoz}lJs8EN86&LiFl?1lCDZxHOWjDf`7WCmiKMha{Q5Wts6mZ z!-1qKle=DjCTY<2(6Ps5f^#LFHQ)~L4R{UABuae2{ui)q+bpeB5|l~aBuI)g=R>R* zchn|DkYm*(UrjO_)_x`kDp5sHkj#7hDv*2vUiNZ1shX9r@2O03;Ed*gp?))n>kGh& zg>N|4Itzjw`+sF%BK)q|(!NSP$|br9JOM6we%ZbT{IKvJTrQa`$413{Cy;bS(zY9B z*Y?-*N1@Rk=mfFjUr3tj*2$ATHZ7@Udzv7)r*_1SuXXF>BE5B>X-J-v=#^vXDUGe0000< KMNUMnLSTaPc-?UT diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_ads.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_ads.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef411017d760d724fa777c722e13e9831f5fc0c GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfti#jAF~o!S z?PObx)Gvdahh|5`OgQH zR=J8s?iJ0ZAC}5}c%}NZ?Mb4*y@xDM*m9e-zc$#Kr_Ot7FWC^d`F`r!2IbAuU2PTG zBkPu~Pv2VV{bQ@RSUq35JitnMYTNB^5v?j?4hSjOJCr?chozr+{kKOj=b!rxT zVXNyVxQVTMD0r#v|9xA<%KN_+w2rW@Fh5)p;~)FDp=j&Q44z8n`&*_jiM_7N8VHIT MPgg&ebxsLQ0A?P~+W-In literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_avatar.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6e52c68e3460ba14e7b494f04aa769427b1f93 GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfOxM%JF~o!S z?NnPnM@Ny?`wD`sPPy!63xaMmvD(buC=wMNknu%`>!L@97nhUGecsO%lXt#XU$Nul z$uoDV-&yv|6lD2-;s)d7K>kGMlQtKLRpZo7JI-KI@`R@3^ zg(@a7%`%?z`oPkZfU&VJec$^7kt VE%Mh_Fv)-d(9_k=Wt~$(69Ck>sFMHy literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_badge.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_badge.png new file mode 100644 index 0000000000000000000000000000000000000000..96ca2c01e333473eb2053d892af80e596ff7085d GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEX32rF~o!S z?UapP%#H$Wo0ATxX=yaM${lbL@DX)kmF8aihUwcQ?jJJSw!I3@VA<&LkeMTFk&+gh zBMbM`&(bqFPZvpt7j5ihmjD0e%{lv>PxY2wa&VoNy4WdRPU^8yjONor?Fn}ny4~#A zww#g86}4hGJS#mfbL|F23%OaVm$Pd!&#CWt#(K@zV4=^V(1^x889{p*)iboGpW7My z>HQ0y12tWzny*z)&1}2VeR6_jV1>&4&87Ui@}KRLvpFed<1A4wa_)idoeN*pcTLWg z60@}6%ih5FIbfo3hHRcx~zNiy?dpKbJJ^VqJLhkW*kpq-W-dOZ%IGPMnfgNNwD-Iob4S|BRqntUm+Iq)ayj zY?3lPRbiL@Y@gNpea6B`%FFk?pYwU|{pxeI@9$Yp_WFCbd8o&1G{HPE1*%g=8eR$Kkv1wHqN@9Ag*_z^~B}}Oj~jk9xtop zb=myN)S_1{YoD)re9vhSpXNey|8HJz_CA#I-+!=M&g4<}(X)c{8?$H0JYv6dW9etl z_5$gMFcDK`$%14~8FhDy<=V&1PKin${H}FT`lIOaE&HmtQcfIqXusqU!Mgp0mfZi{ zE5EV{Z;4@>yKZaD2H&u63YPgB+GbC=F;nKD@P>Z1Z3ibRJktzd+V{4Tqv(o!z|WvH z6TJTft9+TDIAy-T#&>PT^Dm2Kn{FtX|M1eZ6Ils&S-UsCQngrpkWDN0LtoADvr`t| zIP+yr+N^6f(zo6$I{E+58dK{+AKi)1mT>Oemr-QmEpt(Q?QiRk>`WDh_K2Na&kl-8 MPgg&ebxsLQ02a9Kg#Z8m literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_limits.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_limits.png new file mode 100644 index 0000000000000000000000000000000000000000..05f5c33d49e65b061a4f31fa4b1c6ad2c7793ace GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEZ)<_F~o!S z?Id4qmqdxS=ghq|&&4}5tj)e{{wV!MB)BYW)6Bh7a&#hYB(%0}`uLUm&6G{E+$IKz zIT?Eu#`M2ieoylG5wDe>uU-9XbH4ii^Evmvrx?BT@_+Duu7ilH_6F9q|Gr+aywUJA z!OU$xzvzwz)fb=sMjTDxuVRQ^owq3N&n%aV+))jME3(B-%}f^({oW%apCRb>Aarvj zcaZ+-`_8);F1eSY@bTfk#?0tO=`S%~9XI6b>pJf~dm*s$-o?7_s#?qVb_AVxB31R6 z>CEQ>u5EmeZSJQ@Y%WORT$^liJ0~Tre4BEAY+3wf^=-#@EC}HJdRnJF?b$cM*`Mw% zYJOOk)LY1OPh^gBdg$$+epM5yd_P;4oOo`p^~{^K|Blc8)i-T#u?4^Km0PH#6a8gQ zruU5%>lTL22+I#@N_@exyF0z2Np8dG@A3=${;uAy(Z4bAV`|y6oo$J?mZ*PFSO35% XxOaV1qRDSLP>_4N`njxgN@xNA!F$U0 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_liststar.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_liststar.png new file mode 100644 index 0000000000000000000000000000000000000000..354f6fd222449a321db0868435e433584932d7be GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1&TfmH9gB0%lVEGG3J@#~Q4ABss zI$3d`CI|b*{UkcA9&`(aTACAMN~?NE{Gp^D;lFeL=C^ zXU=@r&3wik2YPny{PNH8R>G?Gdk&%1Zs(+}bR%PChu6G}t%?fe5q-F>?fa8`PFs#J ud(BKe!zGizb246d?H=Wu-&)Q@+V_gzabhSa7STT3Of>s5NMHw>>T{~8=^m%swk`3eaQuYP*zP|C?4|S$I z6qDIMA*>-ou19y-($}vS#2CE#A-sQrTf+m6nw7j+N1E#|=KZ{TB%$w)$``F^9h(z; zp7p)deW2a7=&?oU<&>{Hu@0Nd(nPO%PDy{Tvr|^fX!TZ=ZTs>}_=0aYvaUGDJH_V7 z3OW(!`ahJWDS zpp*4O=EVA0U7^cYa_@6|!}05kz($$7ay^Hn&#aC*eCrAGJjI>1=80wjDvtY@*E#HS ziB){9zTw=>Eo&@UmMNZk^3&vwe%Qi}lx!DYuiQ_9-^D!rXIwqZ6&IJ+@T_<9%a+#@ sjH^`a)n8rPt#NW22dl}B$uWyRGQWw|^qQCzqy&mMPgg&ebxsLQ0KD?#K>z>% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_lock2.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_lock2.png new file mode 100644 index 0000000000000000000000000000000000000000..f1ec031f1e45c892b36c4e6bc04735b4c388130b GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfOy1MQF~o!S z?G$USLkjE}SQ4t+W*RGhlbbdmOvZsVWypT1! zoVB&F^=9jvYZCuFz0bIxdEM)432y^GzisVRdDoyncT1;tCUd9u>WH=4pSRCidf@vj zk!kbAIc&9hr}f`pdz-(KcY8-*@ZrQw#=f7|^-i?ve!4AXYH7rw`P)zMtUh&Zag@pD zNA5kn2-uosJr< z53-3KNzEHM`G44`|C-lr?^kAF9@p?9N=HrI@PmGgr`~dbXgkF~*{}~x?uwtezZ8Wk zIEp_?nfF~eT&OJKY_vn&28+sLmcq4PmNDM$kej>l`~Aqj(jsq#i#~yZ%+uA+Wt~$( F696IZnqvR} literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_normal.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8791b35a0469ef1f97d61e75a5e69bf925880d GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEZNh=F~o!S z?G#&YW=Dax_dUyuSQI6El$+FA%~rOSa9!IdnzXRDX==ohZ}JhWI&anlEfdRGv*r)G znC6xM7S=%h^AGxR!oC$PpYFvjmsVzX?_}&G-X{ChK#|hcjW#BScmuLi_OU!I4xMgs znU!PO!>dsWg_b8Lb*lJ&d2?XORqc&W>e6dY+2}aS$4s7cDH;zZ z-w^iw-e$K?w(a5B3kuxd6tr*43r%M}WodCT;jpIEcxb<-ZL*MgiT<@p{c4*xW$9@ z9Wuq_YP$UPJ&hLl?r)c{;)Qg{r+cT*|1aih;&p%0TYUUU*~f2d${QDdtbFn@{lVQT z-swlQZ|N9%oZDu(w*QOI)iY0I>!kOs6Oo-ZXQgLP!%eSv) ZX8y9;MSYg_6IW2Md%F6$taD0e0su0_xz7Lq literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_prolfilestar.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_prolfilestar.png new file mode 100644 index 0000000000000000000000000000000000000000..20edf63dc27cfab90d65efabb0bedb090ba8e085 GIT binary patch literal 661 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?7ydrV~7Xu z+bO=@p@AZ8=eOo_nJ8aU^HOQ#_}Av}t3ldgl8%&##+)YxEbhL)SbbgC|1lku4-hz~ z;xQ+z;$Yz7D-PbPZ-16~XZ7Yy%)7!18u1ko)o=H{-~H|S&d6`^D{tm}J8gf{miOHVoXYjUh%Nj9(;W8lB5A8t z$&6vI=5SgtFMp7teJ{Uv;|o9DJ>77`{g7Q_td0-nCrU56IX1eArX# znSa1A@R;n3V>MU%F2u7YJt$bR!T+0i!SQfHaxm#pma)|1@pdf)iM2ZlWd-mjhU?EVYs z#-Oct88@ptUbbLMesgHXH~z`fS8ZW9{`mh{fgO(w{`pkPnSA%#^F^a*=KU`P{6~MM z>x5@Ay45V2xB17r=?Q|(wu}5LTOV|FVdQ&MBb@0JA+3fB*mh literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_reactions.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_reactions.png new file mode 100644 index 0000000000000000000000000000000000000000..d3dabb8a9ebbafee548d3c2ab7905585b093af35 GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%*4~hF~o!S z?UcPluq)a?1K#w*#BY)x853Ol{krr2iyx0l!Bt$5lyI`CTg( z-A@gf-}y}8=86<6po&*elF{r5}E)asIw;k literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_speed.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba628be0accbff673c7dc2d5b90d57cd8947875 GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY?`NwV~7Xu z+bOpCERGV#^Upuj>)1XyMny@zsMV#@ZP6!2m&E}cUQW6fGfMU`wmOxDcW8Kclt_tA zb!iD!XsXbR5xMircDAIsakco`6Lu%_=THA%ziId6o4rRD{rGPE;P1D#eebtFp4njd zqOod6tMZBJdEZ^OHJQH5D!xAD$POOW6{71ox-V#SpVXbu&hK$TXNN~3Tax-;y`B|2 zZJyf2I13dS@U1mqwO*5{B)))uS!J_-k%hss2O=tR31Y8e)Hm~-abOa2m=~3F?rW57 z+tvfmey2Z)^DdG4Vs;~_&eOZ^Xr3XDgXBEL?A2xMc08^ZHhNv;ciwjSg@E~#>U$F5 zx*uaT*DopcILw+87OUXwa`UrzMuG1cwTEo?5?FUV6yy?Ux1CVIZpl$*Fojj9GMY2* z&Y3+TE2f^-NEK^hcCcIFv2V^2g-5#-%2)ilGvno^Zl$HtQ;TJeD%Gs~cjw+|F}R;a21R aoy_;A#n&ykFVGSTiYZT5KbLh*2~7an%ha0y literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_stickers.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_stickers.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1b00f87f5ccc978ba213d47b6ccffc7e422571 GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEXmWwF~o!S z?G!_AW=Db6;zf+f*^7_dI;3>#cu>oiCIJEI?CysB2mSsx`K~c76=>Rj(5TgG(E_ui z#L_x{^9|xu(sU~ zVg0diyLm~><;Qigw{tHFHSTbICcfvt)0azS526@ro4n3=TU)s~O_blG__Jh_-24Y6 zSzS^RyH)B8<{YxSF(<0$tdjW+r|(>P2NWZiz9-19IA|Ebx=G92;zzM@9kY6E%k8Oi zN+s7=)Jy-D{!x~Fx^3Re8y#jH>>)do-!^Q!ZJ)H(s(#ZQpE+lyI#t$-`g^&RKb4n_ zzprBY=>qS$6aP=xI94p?znk`NrTC1jh8L2B%rVT?dZI5FBY98QGgd#@yWw0eoB9W4 X@8In>Iafbc2Zg$)tDnm{r-UW|uI;;@ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_tools.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0beb2e7aa4aab20a4d6a8717077f2cc6b5fc72 GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfOw!ZEF~o!S z?d0=ZjDaHUz4jXePjyXM`iVu%tZPrpTANn!4MAb^92XvGPDnrKHD!YoSMPhhD}}~8 z%2OX+xjv`*{QEig&%E_h_|QM!p7H!=t_zKpG7nj_UpVqAg~>Z6a~=DjIgR6#o0`d! z1m^q4coQFM3%3*oxF<-RTJq^4OW^5}O&9b}9NwoU;=Dna*DNzsisfmO4Yz0R`I5*< zyt^Eo#B@Jzd2^Y!Y*WTe`PBJ&8eGmdKI;Vst061Zu Aa{vGU literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_uploads.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_uploads.png new file mode 100644 index 0000000000000000000000000000000000000000..d332d536bfdebd496f9339d1e25b754d85e4805a GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgb%+tj&#Dh0E zL4uW8mZ|55%!mK~>)997FbH@rT=|>*i9F+@%$}Ye1+$k785M>C!c5+cToE2-vMW0I zJL(@A{FM)gk?(l#^wgX=lW&p^W0pZf)-kugtdeX~Ca^p@9l*-oU?P8U8iQ!GgK5&@ z17Z%kf=pT#jG-lL9^68yoB@h<+zyUM*o-+&JY#!w*MW!WuR)=NZxxH7K|_$7Mp6Gk z9>z=G7vyBB7#d8L;dYR6ULcXfVb{btU&Zu^o34UH*N&za?2dD9h}O7@A4_G_xcS#D z+=u1AgHz#%1O_b&05}R=PIb-)b`x8Qo-y9TVVmP2+ UtuGW9XaEWmPgg&ebxsLQ05Rxw3IG5A literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_voice.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_voice.png new file mode 100644 index 0000000000000000000000000000000000000000..81e4b7aef3dbe6b7938732873e15ba03578758e4 GIT binary patch literal 478 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%)`^gF~o!S z?Ic4#ra*zV$b%DjTg`3=3h}CMcqAYeNl4%{v0>F=P*gd(B|-=09pCu@?FiT#vhW!iX1{xlU`fS z)3^A%XTQzyK#{){zs@bT-*S0NJ9p8<^_}bP-P4e|V;!))auNH7#P<)3zLcI=JyXH{ zn4N~2ltT6nolD*q=FC|5UOwmxuUVRu)@SpW$kFrq&$}P8D4~w&sLAF4{)8MJncA*p6=$}b>e9`Ih$?w2c}(1wb9fOM1?wotO-sQ&;O^g2w_v+%NPLAXH2MSwHS3j3^P6LIEHxeZk@W&0PWee! zYddnRy!4VgqMjp3(QKRI60xSa`y4hHwWd03*ccSVX%@AlV`;A#+x5>!XC{`Hsk8Km z^BEVvH!m-%+aB;Ey*ur!{P9B0x2rDpFVgrmYioXh`z5X|2@LlWd`o|dtY#4wI5C%T zZr71n1x%+uux&SBi4@(I$ZGeHXV#f4AIrNQacy=d%DC@fd(y%^-fcJa+;UdL#yHIKDFTz%4Boblv{=;W<`Z!Gb3kp9IOHSNmu z%XX~y^(J?6WT{2zJw1_U<2RQh^6qPiht=)kHyTQJFyCCZ{A%6FD9`^(`idEpJ#sbP zs!AN1_||1F<0j_U!Jg65>+5Bjm&7*;y~rsKX1sjheV=iu>Q1Jced~{3XMK9w%PjTLLa_x5JABzHh&p2Qgb2!f7N!sg2v-)O+ zy%UO5oTXkd_1>>PlOnP@W9B%#Q?q6iHEEv^S-x6v+RZ0VguV*A%3XPr&+@75zN+Uk z`%71@FVYCVC1G1}afwO1`LaEp-~Z%3oL_g*XVQb<#7EI8QQSNRe^(lC{`JxN`TYOo?l<)- Z{xDd~O%-=6lwA!<8=kIyF6*2UngG&*5Lf^J delta 493 zcmVppeQ&J0C%9tgL;F*cc@U`T!Oog0+QJKm|Jm8&TKqtaF#i{zfsN1BbbD z&Y8Khv-4A_{Pz-+eLxt7^LW<4GMI7xd+HuI4T9jtao?*nFn{O(E3X872gO$8(Ikd1 zbZCMX@Bvz26^z*kiXA6S9(kLl7uGVmPIuHRg=R!~fV@gnoCJfGMYB6c*EPefZ^BCX@|ag4A4R9Z3V0=Q%F4)(zgP@;41S-sEbl3G)iYUpiJUGKXnd>B80{)YE jMf>E(Po{mzpRYdwZHZ1K2N~4!00000NkvXXu0mjf!@%Kc diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_rate_down.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_rate_down.png new file mode 100644 index 0000000000000000000000000000000000000000..0327165e993d1e35388987d5f6c0a42f81e47bc7 GIT binary patch literal 383 zcmV-_0f7FAP){nBCw4NbE3FP)Md*Xw8IeGOtA!&_9Z_QbLnMCujp% z+O^s}{z{M`z;UigX$J_cyuc+0>l<72rA#{%juTVwkLp`{U0G)-ITdQZz2J5&h$%`qGxX^GqjyhkpEGlMP{D!5!_j8q zI+IshE}t`PXYdi_o+nw;S+_sX^So@z&UPl}LqMZ6t8UZuss);S50v&Q$L|r>Ye?mG UKGrf%4H#Gqp00i_>zopr09R*`)Bpeg literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_reactions.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_reactions.png index 79b2f2f26b4590d003d0e0cb473b195d6861a143..265764110045a4dd94c6c99040ccfa6cd6e396e6 100644 GIT binary patch delta 454 zcmV;%0XhD}1ib{1fq$n-L_t(Y4egXWO9Md^g|iVQ32Nb^RWJxz*lB4Xo&K3LcK!nk zQzQsM#ZK(B5v(*SXeFo+(%4)101Jtr8NU-|6ZetLs%&?@0XL50)EL`=XMx2cq~HP0@H82tgTgG_fj_Dw=6_%w&cPq5$wqd^FbR+F z1!c&?D(u1sJj08fE4Kpj$g3LFPITP_u>y*M-$X74ua;bhUO-b+{90>`kc2m=hZ;zt zEsF@fZhPoI^ajE-D7L&x{FQ239gLZBtA6hEX_G^)_=nNhn)g60JL`y^;5s12Oi+6Z zx(K1yUuV1xihre;J=->FbO{vYcG5pVoPh@1L)x!*TjNbZ4OH9nU0B1UIDqh<>e~t5 zz6ywSpA=kTa^O&Iq7-y^Gk7*zPGgQ3V?B`miws=a!lJijXNA6DJr|6bjuK-=!6;nW z1|>$%)3GjEO`hQxErS*ng8O0HV?F@7&hBl~laB-|e?O6-K^l%hQH4`Yh!co?(;~N| w(IDtU*aXE6{O64i-;btaFdnY|wdQ_u4r>|XQ~`!pn=jDBM4p*hAZT!S4|Han2g?0>RK%?|NoLkEjMLk24F z1S>EJGq4Ts@Tie|3*^U4z%q#E12Tb!AjIJgUSQa5qLzkdja*GbhzG=b3-Ja~HWcO8 zOB8&fE})IWScG1X0Yt|1*e8wX;*k;El@D2jbGL5ojrZpU>;o#gvC}fNnksF0HAee@ z3tb#FVjJtU_J5RoUhYjkav9{`t>wQ0PXg}2Kir&#m6rz2U{}yxS0XYR2jB+ekbGDxS`OspmtZig zFR(5KkPrR^OKuajMfe2i>38*}_85EN3?x>KiQK%{B1UE|krks#+~AEnVi}<+(&hL;92XhR`XW1f{(;hjndmICcHU zt%!-eyzA~87oRtr`)=yY$jaB|&+k01z5jepvAvqu@AnUPvVW+x=U*!ur6_++@m=LT z@x{Earo3)Q`_Z6$qxkiOx~64e7Odt%9FHHcX4J9gtq7Oioapbch}V>lbpwy|g4k^b zIIbMjTCtpcUV@yT!}8Z{aThYJEKb@bYZ>UbMgM5-@8Y8`+|EUg=U4{`6BxB~`VuVb3*{S9RL6 z9yI>`Hf>MW55@nI6E|(LF{pRRn6e@~=p*0$cRG<@zsuk444*oiRd43?%|$zp#4z<& z{d!ugFTeSKS+T9f-n5;^91=F<^+ts9zvr5_@Q|9(oD0#c`U}GE<=8!Ky1?3{dm+<^ z>+1nEja^Q&J$1Ca&$NpDQMzP2`OTNVQ%@LieQ}j%YfYZm>euwk@kf*LkDpC*cRf*M zy}ID}!nTDQW|j2Ls{6t6*Y?Vi=St5-%p91uoG1uUw0s-$j5DKS75CN53*`$ZYpC5( z+7ftyZJnZVak5)7@0`XYGvE1sp8r^r*IwK#Ww@fD`9Q(+LiHK)#$joxugnrdm{vD# sY~$4^eqFTh*cO>h|1K5ZbC_|^+;->JsedGnd;ld4Pgg&ebxsLQ0E@#A-v9sr literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_recent.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_recent.png new file mode 100644 index 0000000000000000000000000000000000000000..6d405a5320bce20523355043605ce567c15e81c1 GIT binary patch literal 535 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftkKiOF~o!S z>eRJ<%#I?h<$=>9q@Aaol;>(#~W2Z*qNWVPr>q!>W}H zQVXt0z1y>JY3rRXzx)H&eoHKUUe9(`;mU?<7cQ|?E0#(ADUZ2QmDV=R>;})q&t-l6vNm_#ipUOPNn+2~ z>$#=%aj@Ew{ zoNV86XSI?^%KW4(Kj;4Mlw&jhRQ~7W?Po}ze3t7pC{jFK{an^L HB{Ts5zRuG% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_remove.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..7c46feb1c22fd9509fcb7976ada49a09de0f5c04 GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY=WnYV~7Xu z)~RQG4?767=6WnCIL*6c3FEE@EkXREE*-`}yB>HkdW0~X>SVK+!N$PZ^3!g!-yiQe zC*)pc{=c{9V^wSHCt)`Z<>@I7q zH)%8Aa+y`a+UMQU);QxvXGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXVTj%NG7~;Wub*imCOQ1+w`ZaeYvyT@80y6|y z&x&y^dd#0u@8a}WJ%e+pi$_Lij?3B!0iGUfyf&H$nRFj(o8S@g*mCx6^YUX`i_5n^ zRPj%HHs|}E^mlh>MxOuu{^4yg0TxH~pJm>tNMQ0p&jh!9&XnNxY1N)?tZ?T zt2|StMRv!w8B0!_buxBd7IAjDtFYHg-9-zVPci3QwvY{4$z59i+^9zA-2>mLXPo=G zYi}G_zJS~0`a!NQua-P@X*<9a<8bYeuw|#MclBG%9%%(#;f{$dnVw3lo4Nw-T{$v$ zv#xx`wJCZ_dktjODp`srgfwOGuU};tDYM`Ve@Ic&?uwPyEN@Nkn9-kHCnb8dNLSm# zS@^`ZIR+P0_X(U`+|OHiv3}hGX+1@5Jwb(2J2-6LEnz)(C0F0t^k~P2SK)QtuA1V{ zCM=!t@5ZNo#!HDj6aVIRmue~-u)pY+^*?XiYWR!I;{5cN>sKs^H@SMXW9RMu@VXuw z6Cumb*;=kwLQSM-;tNqKr$Q^H l{BL&N_G{UpefC=a*>*VB-e@X-6Jzf1=);T3K0Ra2e}EHrzQ5}`+mvdcYkvsoP#6y0h@_`2b$d! zJ+H|~+@n7Z2XJS^q&o(S@C{2))ATE1R#~zOu*++hw~Ztxz@G=1#07kUX+<1|Xza%V z4EA9i`eOm3Lp%%TP=u0&FMMJf#?W-S2xlNK6|j+*syJX1oEI@BpgN2n2C-#%r;*Va zrEvzckcphhFMl6uXlqnJiOb@NO|U?3f6e-@0pdf*{1?BfU$&wkPaxmCyplG!q@at* zhFc-OrpZRThdy|O8*s6Zq-&Q%kD0Wr)0e*C+dQT>nA8zA|U^TDd@Jv%XwAq@5D}7$A>C84HWtX&LLh1 T#!^F?00000NkvXXu0mjfJ)hnL diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_reorder.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_reorder.png index 56be782ed9a90e682786dd8c185b392efcfbfa80..78d6ee3717302a2bf648d0b70ae9e11703aa7285 100644 GIT binary patch delta 193 zcmbQpc$aa4NGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYX-?w&4=As)QR2@SV~w2=5=AyLY>O@M*nGlSZR T|B`QbL1ufp`njxgN@xNAECw*1 delta 116 zcmV-)0E_?K0g(ZaBy9v|K}|sb0I`n?{9y$E002lyL_t(Y4P#&!1;aiB7?FMW|Ns9A zAm0dCj12ZUMn=XCtonc!oC0D>!6~eU4_U#{I2ib-8;yg}I3TN78fInDz^8&i?*afI W;W11iq(+7S0000oQGz3<#} zZ<73fcPjWF==FM4^kp#S>>cD*p-?z-wt>ZTfmr;oPv)W)A#RG89WWkaAK(pq?WpH7 z5^F$I@)6R56~FArW$+kn#-0)8eV)l9Ccr~m*vYN4B~Ca0IkpK9h}b!xI%_`9WWRvf zhT^Pp7854(62H9wEja;oP_)9xYUc&mHe2d{#Gq+Wk4x+-ZIkpE9Q;uhy966xR0^aP z9)oFc1+qk;D(FX5pFv;|9JquIau=-nxO7Zq#Hk_!-vi>+fqk$7UcfqkFa7sOi-0YV zJEplSDL5wiGs=zq%J`uGh1J77pb4u;=eN7>3t=CsogrVvfDTFrW~776Yy^F%fw1C# zOC+lJ9nhO2vMH(iKfqp-6S5Ju8kuKBMt{*}(62!S*vzY4yFflqntA_>1fRPm=yF^veOCP9`0Y%r z#Ytv5ESO%l30^?g6Kt>K6Y_nGX~8!w!3}ZIlwtA*$~+Zj9E4MN_ delta 607 zcmV-l0-*i+1ds)gBrybMK}|sb0I`n?{9y$E001~;SV?A0O#mtY000O80f%V-1ONa4 z0RR918UO$Q0007!UL1eH{a2R&00IL^L_t(Y4b_!BPgGG5hIhfZg{(9ZIvP4_8lO zedp`UIdkqgXDgNaE>&+JNsP7IEQXhYWtaLx{h)`}f?;+;&<8aM!pF&TRl?1Pu?kF)BuXhjoY zTTPj0Ym0{2ycU@;Mja!qVQ|bOBTA>=|buxx59uE^b0T>^RC_l9o1)` z)IFeBo!l)O163My|6a;J6HNkkz*6a=O142-;a^FxNF#_L;}Up-N7W6*QZ0pGz#AX&~R*@b`eZqZ9UD=Hi>+8FjX@B-+Z zOIE=fFbs6gUHsYT`K);IHD-k$Y~_Wm@kC;qin|@z#%;PU-emWQ|CsS4)alq86!Y%X z;}*r_Ju{BrQwNjj&q$I#E18-768EP*e^zemV4WfALbtk>4X^x!4^7wcodI7$hZagn tPkJi($#5e_8K$T@@9SA9Q}_SOxdcbajI5`v#ApBj002ovPDHLkV1fwL8n6HW diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_reply.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_reply.png index e0d2252e70f15f2cf47a204cb46395e2043e0958..4412963fc4f2d9a4d7005bfa6623f4c8217e810d 100644 GIT binary patch delta 374 zcmaFHG=X`7ayUjDjB$7WHq~%FZ30^I@`x@SO!*mHe@1HmDZWGXA~Frunn$`yo(xc)I$ztaD0e0szY1 Bg;oFn delta 332 zcmV-S0ki&)1LgvdBYy!cNklO+V}hpNcvCxSH^H`g8~2o);2zkD?;GH`ASaIy z-vCa4HDGtx1c8TfhO-g=eL=m9b(<-JzCGnCm*-ISDSkP0000ll)h0nPtMzqMN2qdi%NfMY{!y(4D(clJ$oRH^AHtvlEu?kBryc6Om zYmbVQ;oy{s5e{U@<`x!c5wUbU>U2coQ?*ee>qck2q;o z$AU>;d@Xp_*WCYqZ`qwCe<~P#^@Mh_w;M1fE7Ud@&boG1<23(Sw+H+t2VZKQbGD8+ zFz@A!?nO2+jiM9s4#qxaJ;?iJ%h$OpA7xkzotpSU{g<4Z^Ue4ljk4v5#nMN6+~mTe>Nge}|GJ>>k8$9hpqN9z1%wl%#Hrf)V+6u)u(nt%2U75ybgxI+VY z4;QWG5^oQ`vEatlBhP2q9cMfIzhQk_9{*OW>lglLzJDMz#o_lYttt9Dr=GNm|NUHQ z)v=SyPwF&tt$4=x_~#F<`dhE$Z*2b{WVUvH+uFwHhmn7bGR`g8>e|1~TVbX?Q?$ZN ztxr~e{CMX`Y8+4u5$Zp*{Hy8K+ksB$A=N9FM=#swrYx&&TV}b@sY%wg*|LHs)_~{# zgXWnX!j(_@?k2IGspq?tx^&B%``eaXzjdZf?YZVYUQ@Z+(>^K{zHcWA&2-({ch>sC zX^ZQ#P9zAF#D+#6`ea)!hW;YH$Kp8%74K0 zrt#hl@gLlYEAzNYR=+OzS4Snmb*24Cm(a5%UYsA~2I8YMuboFyt=akR{07}0j`~Uy| diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_report_drugs.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_report_drugs.png index 951808635910656e0efe2996b1a0f46797481644..f40e482e04f612d890ee0bde3c953cd5586f943a 100644 GIT binary patch delta 478 zcmV<40U`e91n2~ife+G2L_t(Y4ds-vN&`U5CcOp{ z1PM{mT0zh6KW@z?w|j|NX5iy?Xa1SJ+uPYpX6h^q!!8=jj^Pu& zpbd5CgX|5;e_DjZIk*8?4GMN4=0)g$tYpW=j!CeKS9}TRa_|UGu;|kb`4LW3+$5pj z0NH`@e|evXRJb4iVUI&NSNJt)w#PL3;!auTL7JX**&bd3gBOt06TQWGX$zpn8tAli0y*jum?kp z#e5#Rps!s@yrgkML|oR;z1;#j0i0hxZDE-rHn^;6YEU6B30 zM7UXu^um99?vPVZ}y&E U7oR--umAu607*qoM6N<$f`R7fPyhe` delta 477 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 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_report_spam.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_report_spam.png deleted file mode 100644 index 8cd48c4a5b043b1d1510c3fa7f8e3fddbbb936f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY=)*|yL1ao<6tS3M5Hk!$q!%?r}IrmTItZff;nIl8lJSXvl{QT(kskDGy z$8wcd%uU8fe~(SPDmSC`9*X_edvW1p={dRF~-E{CY2?wDe(sb-#F|ny)L+Xf8j}y%;tIC1u{o;nqC}G z6TM_7aMOUZP4J!24~A;j?;#f(>gM0P#xp;C(qSKF$u^HQOjbp!1vke8t~=IuGmNoT zq4LA7OD8+7vd(A-KheLylksJO$C@LqNu>%bFP(1pG0C{@5MC~x7ui_3Ea{x5h1ubm zu8|DATpByinR2>6`_JX$5y|efF4$px5WlGCM=p)X=EVz|7RmH>-id2eTl}hTMTil% zL7sEXr|p+6b6yvIXe0PJNib@f;pW&)Wiuyr3-#@IGWVQK-%Uq1y9C>>OvT@dzqMQb cou6yZ_*Lragf)88zk=e*)78&qol`;+0O5SpZ2$lO diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_report_violence.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_report_violence.png index ce43427564b617a8bf5881ded7b66ffc521bf9a3..cfc54b43cb142a99cd987cbdd2025a05794b9081 100644 GIT binary patch delta 634 zcmV-=0)_qS1@Hxsfqz;_L_t(Y4Xu?;NEJ~O$7iI{)RfF@Q7wwZRgkz!6k1e>whH=M zNNrlQYGE#F(V|U4M2m1CE=&-jphXZxkpv>N=)*-JVg$A5>sgQ@YGsbU|9f-BJ3~Y7 zJ^jP)-E;0e_nga}GxI!e4HX1I9W;W!hG}!DNV*%of%G2stbeKq3D&~_xC&#i1k&x? z5cCvWfQ>rkIk*oqV9H<&K?nFS1uy?wfS?M{rkgMcrau@Xa0!|qcIWta;4f@iXH{_a zVqb(eun29?0vka32z~GvhJD|kVNBC33nfsU4Iue;m;hIEI1k}GG^Ay+d1A_-9R@(p zW6YAD#90KX7k?CV2uf{p+DJ?-oQ8Wa3#L(wT~^>mIIELZr6sd@V(Q@nyaL^`qyy@i zbV0qvT7gqcN}aKVgu}WvyVp3cP3RhINrbPsEb9KH{*~Fd#oCE%L=gO9yal?(?r?5@ zJUZ@`&<&rMdIz0sxC=YuAzAM@zv?V?)Dfr*VeqE)lYb_)l5_@Mz%h76k#a^?+i<4f zD2&4rfi_gK!$$o&_iXZSh z+_-<)$?8pE(3eE;W_-ntz$3x4(;HuyIMEZ(8@$nWVpoGSXmf>(_K-ai$Zm$`oNnGp zvNg0nJ9Be+n^6IF)ItSJBz9W?by2}`3)tKEJ&~m@^fQV1yj-_{+3ImuJ3^I{JWPYGZ*?Nc6>z1FdI0;1%^dryQxcN3GU(rJ5=QB$1;(Pa4C04U UN5{U@TL1t607*qoM6N<$f`r>DBme*a delta 629 zcmV-*0*d|c1?vTnfqzv=L_t(Y4Xu?;NK{c2$LC2Hnj-1+0cNgTMWEP5L1+;zDguqH z7E+s5Em~yDL|h3HZX*$DSs=Ku1Q9e56#5{jOcbF-WoVINXo>p#{hfQ?yYqBxX7mp~ z?m73Kd(NHv&U+J!?W26(&x80rrVLY&_#{lj2K2-6a5YPdB!5-#0LDRyrLn}|w`ZJ| zjrnjH9>Z6#`i=1nu7C&g@FuMS1eU`ccnK?D^%y#E&65f=vJYGjx+D@Fx-9DcrLJ%`*<$V5R)p{WV|)U->-%OdaTUp10xySd z_=YzPO>B4$Wx;A_G-9qnE~vY7mG(Lpu~SN|B;A77aDNqsD592ibqr@78ejr8Akl)c z*aCKXB5?~yDijF+BTRr=@fC%+0p9N zCTKPid>CJ`BhW8+b{`ls6DJygWyrHTv5P=@YUeT;?L*cJB)b;IINgeq>E?pKj<7Oh$Iw0_viSJ+Ig6ts!O zf|ZqpKfuCDd;frfg0V`M%B0akEA7$*Y_t&!BqBb~xz1fzO$hF8Bjkg_ojZ5#H}B0` zv{HHQD)I}IWjRPZ0abXB^G{rVQhxxSilX>Yzl-?{oI|^$*MCfEKv0EC_zoYS*{82~ zH$3#xvubh&e#4vkE43Kt6`ngbIDxM%dOo_Yr`{c$^utN6AUO-K-Lt-farf{Mion>M zXK$m{{j70F&wfqRrb*U5xQ1=$1wYmom;*H(7@PCVnjY|ucl*L?leoOsAP#cjngvKx z4Kz9mvZ-gv+JE$5dMNgPZ7>wY{t7g7j9yrRtfk0xkg&#D8w{CO#D8uOhsPAC#Z-NJ z!I51By$$(A3(;}Txw20U($hUS=wUx#4U9FMy(jJrjI*qo5Vz=70GC%z0*wwSEilb~iTYa`Qmn z*st)%>X71P;$LtIpJ5f$2$*y3%TYT|ya0~tPMBPPm)j~m^>*gFa0=QSp3{}28( afg2V4EfJzqh6NA+0000S@;Wa#L zb-rcb+3?Uy&zTAzTks2}Zt2&xT(9ulvcWOzbgk}jLr=X2I6nc$*@xr`jJxJK2QOX2 zTPOl!bMC#0TGuPaAw4HFQ4Nz^$KV1!!zlcKuka4ko50wddp=NWJ>%K2@M;j39Sve5 z7rwUuX*vQLeSZ&(&AF$nO*f{8V%@dDbQJq5(9kh@paxmB$PJLN##$Rpn^(mDZV;OX z6sYx7eRaSwoCl+A`E?7?LC$$)of@ROyS6dHdeRzr(Y7~FJQx^fS!3-ark?GTtx=CE0%{7n0+2?0rE|1e%l|~mne~*ZQVaNtgiGOYI0Tw{nJl}vh_pGtjXW`l5 z_684JT+=S=4gRdYQCuhX53C7aU=!3Vm~-y+s9hyq1IP78n4E!!`zk&4cIMmAg!I+= z(M7ND+_pg#)JM2;6FtIt+a@a6T1XS38Yu^TuppGmLs jtRB^t@fv+_(*!O79bPS_v-P0>00000NkvXXu0mjfh@%37 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_requests.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_requests.png new file mode 100644 index 0000000000000000000000000000000000000000..14a8b61a5c53ec0e79632195fa9ccc41f8504669 GIT binary patch literal 579 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY^|q@V~7Xu z+bR3?SsX=<=ez1TnQ(DlzZ2W+;@a5eRN|zxGebq|;t%mFle9&&mU^wf((&TR#0x(H z?__37)R>T5yDz(Zvvt||d-L2L&8{&re!sUeKQHfIno)gh*d6{2xx4xA>+~EDo^xPc zYGmoLYc8KuD;R=Bd7O1q)eoA~9MIKq;1@}hjdT3=?uzS;7}mM_?)x<5N-o*-(tAr< z^1++;6d3^WC4{io9(J?cF!AGxEW$Qa-lko}D#uF&9h^ zCrO+9;u3wpdF?}osGrbJ`3I*DGtM}*i!I;eZ+y1U@+#Li+KnMy=VUeriCkx2{^O5b z!ammbj5FG<&GxjaoN}xG!`jK7%P#9ReR`6>)Ax`s=SJ)OiCr&$Xq33VjjNKeIx6Gi z!1$={uJk_c8_xsh82{6m^!$OqtiZVscnkOrS+HJ8S)s(nJtd|-OtNbsLvo`%_u~SV zOS8le?YTbtxAL({*M-aW=^rUSplaj%=63kvm*-SV6O#)6>$ALf5a)4T5^`XtkXeYb zvXu1IuR(9Nz7n15D0j(2eqZ$t&&@yU`-_?9->h27Wwzv>H7Ei-UHx3vIVCg!0H-J9 ANB{r; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_reset.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_reset.png index c198dfabf145782f874392c5dedaa96c2d107d15..4eea7d15aae2bea855090537367445ae6775cf5d 100644 GIT binary patch delta 528 zcmbQlvXW(jNGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXVo9yZ07~;YEcB-v6v!g&;v7qW)B{9XajTWB-3(H*7oRGZG&E4O2)rdsxM>?V)U3!nrfYe|4BU=G4pYdUWK8`vX2H1F7Yq zmM)JK%D80DF|oX0bKLg!R%G)6p8N~XFUMqGSl@JGQ(vU^Ntv2MeN#(VR-8N_JSQVF z%KDg9qyF*o^Bt8tWv;UwVwOnu*e$Y>F-GJe$F9z=UQCnso;hSF5_;tQW3HKB&UVH8 zZ_=t`Jf+}#B;|tS3H?Ad+W{iN1iJVu>HAr z*pGkVOM^QN+uUW|AK&_(dwFl;W&_sB7mZe1{vBF)QhvLBSJeCs-Oqol21XPogQu&X J%Q~loCIC|D)H?tG delta 504 zcmV^H zo}C9}G;5%3t$*+}Om^WIDpe$}fKE-ZH`mA2>6!Ky1q{#(fudIu`>XdEH^Lr`a&imA zIonUnI~cFSJFG#fxbOtgZ$gabKye5+?#P&Svc83A|F$4tg02Y^lRqRB7u=RH4_=Ou zUqEm1t3ccBtsP9dfTk{sLZ?Cd-kDSwP((iuiiV^T8gUM6fgUiBR1{D|ujBm)=K+$h zGNNCff4hn`tDqRMwX9`K$6ae<4#>ILG_J*P*)u;QS7&UFNe}46>E677VjIdbHkScL u_MYf|Y(Q65jI9ZVrBDO*pTM^MVEzQ!zU~i&gDm#|0000(G4LyXKk18#d z;1O#+TEAdTJr5gq^TCWn!xLWRQ>Lh>HuH$38fY{-dI?HKuJc~>`1787#a4Hn&EL;{ z`}f-N&vV}QKfhP}ZfC2L+)v(=y^R`c8x7MMZfaJvY}M#mmASXc@(lYzCNsXKWm`C9 ztRM2-OAs-0F#N3U&$esfY5Ao1CgA{|RmW~InFqAm?f)O{`?%gp!!D8a(fzKiJYAvn zGyWRX9I%}7Cu%|F4CbSTbB>*wksCJK-pTw5-=t`-s_EI;dH&7&PFlw__T6K#PIxSJ z@fn+q<37Q24$I{}dflIt!hYv4_m|sjC4$cqxvO&iEuUJY|DyD+)9TlW%EGd-h7Y+k zSw3Ih*ljpFZ_W{?Njkez;@BFm*F7>{m%gm}n(*!^=N`Ov`*^YbDW_gn%4}h|827S| zT}O?#-2T4zc$&`c{0AE{>>a|5xt#^}d`wtVx5(+V;+t#vXRZJJX4}Vb-6rl)hq=f{ PQ1E-Y`njxgN@xNAh?~On delta 330 zcmV-Q0k!`A1LOjbBYy!aNkl%AXf7xdUSv z2~Qv?6Hj0yrA!PAZnqR~KpB|`Bc!?g`DWS=KsGzOfRyqLp0#Js&uV?e6? z0?b1k;4|uu-b0$Yq>7{@=lhcyHzd^*%mPi)TTb(!&y6QZl7tDCB`rznEeP-`>8K#D cQh6ll0|=YZ52N$PbN~PV07*qoM6N<$f=WV`DgXcg diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_saved.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_saved.png new file mode 100644 index 0000000000000000000000000000000000000000..16daa4e559ca96ce968c29b480c6ca74d7cd3ad8 GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%*xZnF~oy6 zIbnfef{XcoAW+z7p-{$t#7u%7`5|WblA6;eGlAtIsnOlz8lwomm7 zJB6Px9sXw?B6xRLK6Whd930Ih!6wRbu7CX8auyAN8Sc)>9mf~w#rlhHGifO^Z zJq|H^NBSG9_A|Xa?C_>9h0jkdj=Q0agRxLK;JdTJJBCN~4toSUd>bp+1KwF|6l1(< zY``Ge&Sc2(gsIS6pq{O;;encfI+LMx$XuQYwxS*N42B#Hx=jZE*E31C^)hHRL^6c_ z{;xDaknc!DEtiPshTFSmPUhun7ESGIX2UdpOac+u`HnZeQNeBMoiIUo}H{ bj;C@kC_5O7{y05_9Tb|Lu6{1-oD!MUHN6k4C9NEHs`BL#Jnb#xoy8xy6jt8(#dcA1gxg=vOqqIky2Mw%OQ(HrH6GjWTHARoqnYC=rysIUvW`WtuU2^L^s;k7 z=bUY++)GS1xZg81niI_YB3Db+`Ga!G+T>b>OI#u5ckcDM4%%YITF6ziU@elF{r5}E+t CnfP4* literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_saved_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_saved_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..5571c4c4cb5067a26d694d69222174d782f82f6f GIT binary patch literal 671 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfr-=8#WBQ# zck5JZ51Bxbw)E=?QaMT*LIF)2NspPi9d(XGv0PN@P1qpjnX6cqw77d}ufmOv)~2gk znkp_V)}k#7qBRARlS?CU##cGy9-2tqZ3z)m!KMYO{F?`9t zrl$T<-^RR#lZY!7jwE34}m|fp(eWD!~ zeu>2^EpD}|5gVUEw9B+?@6|J74th@V`=^(Ag?Gz&`;Q^2dzCUBjada{OnO$m{Nlh~ z;-s%p65!UX^XvSS%-l9FgZ~_o1&^DK+G~`~Ugmr@^vDzA7q>q$#4o&dKuCKs@OLM@9rx-n!zcueFInS0{;)^BaW3xEN1CBY^NdTD8Es6b>(L5 qWp@jBZfXAdSn>OS1?ShoIq?h~OjW1NS89fU5{IX&pUXO@geCxw3IOdYa)UtxH@oDA9GkdFVK0J45w$04V&-bLKy*u~rp2n$#DxO&h0%^QQO)aB7 zN6yG$T2gvrN6(}boA~krM^kdm9&#j4T^NzYy~RCLk@@TNXOg{-f5a5nW?6=BKK*7w zdZTH!_xo>CpT_7~7vJOA?#RA}{dvKRuBqH|U+!LTx-%(R?bg9?cK);LZ*N&WEB1a} z!YB6vw)h3Ne&kr{Mg>-$dthpO!u({Pe@oKom0^LY+dE=27o``-zjHJ#XHZt^uNJQktXvvxuA=gft7WL;34(shrbsXq*Bn(PT;xMThHuu-?5!zPSA%`*(;{Eo}I2ne1uu=CG2DMryv;O7S`e#mkz~Iw@8|#LiS2*wHLb1c z2HW0)qN@Bkj(g8n-0d#w+R6B=);GN9lMUn7l#;tlvKC)&)SfO$5&m>y^}L!#&-)tp z&Ffv)yhAvw=Um9X&N+LM^~7ZiU-!M1i1u=E?|GItf@MV9{_4IeoZV=? zf#;HliFB9h)m;fvSBlklH1J5+H(ZWys`IE11BTVJFBi=#H)_T%ac=)F_NBz#;rSJ9o&|9kj6fD>(Hf6CbDPMqo z(LxKAbova|+S#g*!dTb{S_tX16a^IpUB9zC6L4qUoek)Pleu&5z30x)ZnjkVV+->1 z!!WFnGXVy2azBZ8gCO|G$&14XSHV7b2fn6U)l_YhLF+)y<9`dstm2lj1=hehI0IiG z%gO{7K*J=h_mUBB0BbFr3eajKT*y>oYIU@+LEM8bm<44p31nL~$9GgsREdUav@O{v zxa4R$Ku2LOH1Akcn>1S!Y1jtIq|7-hTop2tOt5eRgtw_Z5{#eOr}q?PW|^Q7Y%+Z_ zR1>bmv2OfU?|<7pEr5am;H6 ztnLwkIjXPmU-2U${3rY+CezAs)FHeYs1O0I)G;-LOpPho>xdlH0)+Pt5}Nj9O3?1K z-v+y`R65gF1J3<0UCw3g9Xt@4;faX;?A)~e8QWk7iEVLk0rr3z%EscM(66nDG@>J7 z%LlCf3K{#s(R1HsUN`(HzCMXrrhm^xPzP-^Q{M|>u_0Uocc7@Lre<{l>!gh&4#BU0 qDPX@5X{qA0!y9nI>R&|si+uy-(L5$Tgw`DZ0000dkm zY!|B?u)1dmM0SV$iS4przhTcZ$t%Zo1_rAJs)67(Q0q?d*D*TAlwfs4E>pt6dItf1 z|5Fg~ho(sz?1h*j9Elom?&S!+kXv`~V!RWfXb&7|R#@{6&lOna$(?~2!>hO6Z|pcq zHL7*RJEC=F`ed(yVXz1uK#_)<=r})|qNzm%1hOm`kQ?3mUuK}6n*85SKiDkk{0{=6 V71f}``c?n{002ovPDHLkV1mY-;K%>~ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_screencast_off.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_screencast_off.png index acfad0d3442cb7251904dfc75274ada7b589a409..871e48aa4fb9c1b505736d495f39860771bf6f30 100644 GIT binary patch delta 617 zcmV-v0+#*V1>XgbfqzL!L_t(Y4YifQOB7KY$DM>SJV{4c7CjV_*hvYJU};6%5W9$8 zggtr6Q{W%q)mvRFkZwza79#6O#UO+TqQF4Wx~L!s+M>Iq)91VGTi)!bPQ=BOdf=Wr7+={U}F#cU&gm4A5$G~01&TwvXIYwjJ= zpdGg00WkKi>T8GJ0OD?q~$y6u5Pj^PclL40Hj6`)ZkUFJbgxBf1P{8Wrw8Xw6* z1z6ou>2O^h5goq)IEA-}=%h8YdIG-1hFUZfqzFyL_t(Y4YifKYZOrwhi6pm6kA!-S?n&v)?O`A7^1~CfrTt+ zjG{p$0TF}6Ra2(9@yvs1I_+Oi=1zG$vt`F+2>)uq(7`0=>r+?tE$))%m^6!~%C+aLR z04G&{Q&~eW0&k=H>kzD4=j2w+8y9&)_b6gJ19znvi8hinpP`E^5|BM24UP zviYv_9$A|$N%}v*yJ+cvxu8%&d7bNF=)l#WrXA$97LA9j%?NyiODf_k&<5F-b->q~4kI$hh0Z~5fJH>?Pi#2hIDb6}XbzD&PIr_|wK zt%S%7PS1ws8;I!Xw_565WbKY55qZMGntuQUON8t?oA49}H-#tax!ZX~5kH7!`002ovPDHLkV1gTn BCjkHe diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_search.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_search.png index b5fa27021cc7a0f867dfbc0905609c3d90a89f6f..f6b2d88c3b44c548b1837e546582b3d11f4e4660 100644 GIT binary patch delta 468 zcmdnQ{FZrwayTk+l4vR`1f*6|apGou5s*TdZI1C{uA` z@6GaiH*Y`L7V_(T;-$C)QM=DpF@H;xZM)EHoqWdnaZTe#wk;2YYYbH?ZKhkdT7P&F z^InoaLHODNuH_%tgmOJ>TaTy-bbHG0dnhwanCZJi9rrGU!iV*jD~dbLyQyA_t7O&c zT*q_%17qk`k$Flo2ehXgUUiadmz771-=;>%MYlYpl*8n%oLD9oqGcExFJ`KW$gPm{%c={k!PPKPS; zT0Qvt==eNiWmd!KcR6?YMo-`{^W3{a!)Nch$oRx^^8$|R1xHN(9gT?b5dQJix2SZ< v!Bu&aPV0o&d{ryja+KYdC#0+VpZ9V34!KP(Y3+typwRYo^>bP0l+XkK&`Y#q delta 409 zcmV;K0cQT~1F{2szo7!T7xIhXcRi} z03@{DhHj#n&hF9~4Tk`|j3uX)?zr$YhJcfJ8y z0|C9jD{v4Bh_o75yyjz|3bgqEX%FWzehXe*Ny(q^2%#I?ivJ-0>oE)tGHZ^FJO`En-`3L*Ae@%6*35mJ0{Tv-xR!>QiQf!)V&Wq>u z&ePE|e2gZ~WR;Ie`?k0G{p^`%Q|?B&g@j&hEo1uD`|p%R$+_B_#lIOpGtOu-m?FKU z+)b0Y`0s|FW{Vf>De5Zo6)0;A(_DPEVCktyUm4lNNChkAt`}UPt0fDP-@V?*^z&Kk zJ#`D;wGZ_If_cl1Je&S$=YmZw;j4F^u2{)-`o~dAaV?9>&PB@~NaQr8Pv}za3jV;5 zck`8&s3{95PudCiG?jCua^9xpcc_cNaqy8Z;~ zu4fe`GrxQ{{N{Bsv#dGj@v`ibf~K>+DZ3jmzF)9oqsg+lKeRdeU$i}9t!Q4uU+wu~ v_6GKKi07zs4WNgML};PTw{@0Y!zUtDnm{r-UW|!H3Sl literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_secret_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_secret_14.png new file mode 100644 index 0000000000000000000000000000000000000000..1509970644fd9449a103eb26a0558db8a52eeb66 GIT binary patch literal 758 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhob$#WBQ# zck9&C`M!Z7$KGEQI^S|kdx{IMi&j%(LV|;e(xEFZ9FIiVcsyJ#ZL~jp#D&L4V#bV; zOBn_i8nbxG-#Ro(rq`!AQS4>r%eH1*G>YyYlARlnc--tu>t*5{nazke#{ zt#`l8>YX5AcQQTln{2#9>1l}-VQUzl#s_?7jn6ZQZJQsEwzwmI0sFqGq6>Ntue7NC z$f8m<=|$W20`@J7&z7!9o^x1W4>ym{`ljj)jJGN#_5a9BZrrVK+j{Ley+z+MO51Gq zKRCzA_hGH(JMLRKhyPvKaILqn@tKOBl_mT8durd0vFi9)0GX_NZhFNWSk$dGCtZ3^ z+vTs_3uBw}H2Runtqgg7_L|NE%Py5eoEL7FUOo9>z3}@+XUEUcnem$sWN2M^omM@y zNss%W_hs$d!Y1GAcyHaG;Qp2&vf9Teud!mvRg);;3a4!Liz&}-+t0^7o~W{}EU0do zzkKZTx68}Cy}7zxE4^D|u3GvmG+F)E#QBHJvcF~Q4)!abnCs5PrYkb<(bNyp@1j-m z+C3#0Vi`k~?{PVQU^Zj@YnXgDwR_Fg3ZY#m?j3eg@5pcV;VwPsJ%cItSyvKC&=8TjYp?S@DA-sk3)uAEV9ef~gvh3Ec*T@hz3nh$>vNU3`D!}a*5Pcz#7 zUf?(S+icq;eSxtyq1x#}l$|&8)MIHD%ySJG&2)b-d^4S~C@99OmuqH@p{cav^`Gru fRL!$y|NkTZyiKZb?+yDCpfu;{>gTe~DWM4fze_+u literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_secret_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_secret_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1ead59e75be4c19980c276be482d18d83a5f59 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?6{|kV~7Xu z+bOo*%#H$W?|VWWbVWpR7G$pZo8r`lD4Z ze%D3X{?AD);PX2uy6EXX+qug`)~s3?daZOulVIzUAYospJu9b~ABthCT#F_PMc!L2k$W@-W+v6X!+0Z0*V1R(~Y# zh;gj7JYvvu76!LhtO4&2NzoO)Z^oaun9Y#Ex`y_uZop}7}((p8sLw1YW7EDTC ze8DU4#{Qt+(k7A?ldAiYBfBPLUktszt2p&W>jM)Nj>5m5?o$kmBLCf2_}KF%`pS;u ze-dI#(jBvY-s5At z;EVovd8Ja?0v7)b%$ql`q;7cJb4W(#5aX2xENo|aXT@a)8x+ravd#C9Nk~GovSs?; b-#=KU&RFrIzU_}SC~7@j{an^LB{Ts58td`c literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_secret_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_secret_ny.png new file mode 100644 index 0000000000000000000000000000000000000000..f34448e323faae6f7115d1150467b6e803baa679 GIT binary patch literal 787 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfvMKh#WBQ# zcj?sg-l2{n$M*)MeGArU@~L*}%4J#FdO=NbNm*{z)YWB>HJ)Di{hm2j-NVo4&RC|On`vFXj!m>WK%(uc zPJYYg0=9iDjs~5*qDK}RF?Ved%4(8XF(KRE(Er*F_sPe9D62MKi+6k&rM7;dZJ8MR ze}nr9`9HF97=H_0%ec_iyX8EeQ4YVIsC>ir3GAZLOAeTsshUkae)ADq4eu(SM+&Uz zcUbHzvTM)nKe#}=M#k@e+L2GDKTXlj-p?hO0IA3`k|4dQmi$Z zul!tI$-KqKmK%Tf^e=8uQ@^W{&pdfY${Ro4lAKBRg4f7O&sZLj-fCwv-$?q!)2X8U z)jbQ&?PE(jtvacE)(pMoCEBmWxuYJku4y!3%$g?jFZu)b8o6bYV%Q_UCmv4OfAC(z z8TF&}qT3Rs^bUyi?D*<+j3vLxMEq}CV!WqQlG8bxniglSMDYZriD7euI1)J17P7fH z?A|?ND?>fsk~rz~Kf=e}#9Z6!diG3dd;3nyU8dy;l5!5y-jvP>pKvHv;_jC6S<79V z*gbZcPL$wpIJfoOuQgNom#AN0WBtK=^FB9YZR>1qh#j#^ zJTVfNKoAgff|2KaWVcLhiC0sZ*&$$pqea0>+pY9HHu7$vzJg_;s;Z zD+V(EgFO^w!YcD0kb1F$9~npRAc!1-RG**MGThzOv?DuP|R)^Zs3P zKDMC)LG*dVu63Rzz5wYP?vI6pt}@XW!XoT%na`Ds1`y^)n+wk*siP@K`qctxfM$Mx z4@iUZW*`mWvAL^4vR`Dw**C9oKEW2G5j<}mDWVrh=g#$weF1g~qKh%QyHBqe=p}V1 o`FxW`aaen zFOaB(vC_gv5G?Ezv=FfoF`%%1|8i!TjkB9zj0ZmEa?bhB&hE@?6iwLTQS_4}sSvjU z3l{%Gdl$!X-^Rad5UxW9-eJ%*CttlxJ-7mrY9zH_55C|Uu7BVWWQ(v3TQChhIABH3 zwB?5Q8a#lk4NFBC@>vW`au2ITvFSVkH4E(1?w1C8PGXy&92J@OT=_1}bC5Ojp5Y_q zq?u?0qjBnk%G$wz5hj(JDug~fjxKyc;X5BzL%F8W$;C2R0d2d>oMXs<_y*j-6GQo^-W7Zf|iPy_z7e8I6^FC%py5-ILr8bV zfNnO#UwqK4h`TCAzK5JT;^kL`6`1U0XGQ+>y8izkj(exJn#ue!{UTPVO1lj1O3@)2 e|EDkUaqSx%K?B4PU^#XG0000~e*nR(|fw>wuT4A_!9`mI*0 zNZcGux%gMc$0SLbZvM9c;R-b16FN<6@>RO22cLkXGD#<}3xD5m2e{!l@T3s|N#eEGjou2)%e5+7Vw6{m*;VP_ENxWMWw?g0|gF#?fO!{3@Km zxP?jsq@}Y{7=LmO9ilPNR?KAxtP^+z+c4@SNkdxFY!|Q-YWrNi0wOE0nNGYP);5^x zW$KLVbnJiANHy&Vy!6cF5wmLqmu!`5-T66~_=EXEqZLqZk?Dl`cF5!h^gmBHasSRk z;-+Dm>0ePIIrx%UKLFW1e84*_`*-1Ain}6av1z9ig@HSNylA{L=-w5o% zeEW_97x?1`%@wg$k-HCB9mK033%3eaz;AZB`w^n~nw=}6cCD@`(<4V)hkP!EA>6KG zADl^w9mD^BaP$;r+|^({nO49?3YEB?1#2lfME!sCtw2BHFX=7)H#^ubZvX%Q07*qo IM6N<$g0{Bxf&c&j diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_send.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_send.png new file mode 100644 index 0000000000000000000000000000000000000000..884fc816672b19a9baecfc87ef6f9931d8933286 GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?5L-UV~7Xu z-6^&ju89)I@9LLG8U#r2>`FBa6zg8YBeZm#qtQkVRWViW%{Nnm*kFWC5ukW$RVFeS>KhGqr*xck< zRtspKaO2@RXgkNrd`;sQuG0bEm-k8tc<@J?H}A-6&7B~Z$hgYK_WjgnvKL}o_MD9= zKV;{z%HQ$I>z{!>mvuaJXYxKNY2RDGbjh^GLFIDx-eY&zE^RsMqRVr*fc28(7smtF z9zQd5Rp8__&*c2zlF0PV!K%Tp`>%Cxrfl4TKi1j(A3_h=yb$nsTxKrH;~j5y+%nzv z)4}f_AFggqzToD#xl?)uOSYEm@2fW3));s`WBj6bC^B?%!gtXN;W5cYJHu+08gOk_ zI2-X-q*NsJ&gNN{SZ%C)oeMZGu^uV@mUyAxZ`O9nm8=Wpzj#l~b0`l;dR_Q=hMHqm z`Q&*GHR3X-8cJ-wx=ydu+39>HdO}mu`pK{PZm@cOwOsL`s!rtc7na$_eAeh&GhQ;* zaoW1_`PNG-#MeAuIo*swT4Cn>(%LxYzh`*556@nN&`U@hO^?Oi#7=;_yAEWu@DFS#g_WqSt)&)1h^*hgWR}Ud1r_|vPx-hgObSv7qil4wMtaDF# zJbj@_10LYFqMU}UI&^~IBv2>Ou2vw-Hn{CmC)8NFKO64cW=)L#1+{OcYk}q%O{rSC}nGhm#PsoVFDlEo9cJq4ZdL?9)F=*G=zL=47dc@m5ceF zcw?S5rjM_|gWb#5{93mTgL^hHa0Pi@UyNwi=FjA{4^I*f$kSUI&lz$~{L3|LxkaqE zU#yepEp(DoUn_P%o$L4oLFwFC;p6B5eC;dEQ@DWlfFb*g#k|1@DmSnls5RIxT#xdl z2XKlpeb;LCjbAG}VxJih`v$&t;d(Qm@OqToTv6#On%R!d%Fb+o>v0VTr{Um{ZK6%`9`vuZuBlc%ZC`xd=D%I{1NVk=#r4v_*Z=?k07*qoM6N<$ Ef!lvI6-QsS%!O zzP=1vKsE;hV|yk83y{SK#8N=az`(SC2`(bBfEmFCNgn(gJ{_pI#?!?y#Dn+l)V+Ex zfg-K$Cp6Tgl)h-4Um$5U_ZG8&l8_beL*66IK8qX{9$^lsWN6XwHR5vV*e`K?ds11^ zGmGcD%=1jGe-^#FSN(SD`|~QnTBSZJoJqltS5yQ^$hWXnal zJvU^F_p149$8X2`4^H?vtN%@{ zU^vQ~65sNJ>y={i{x-e;N^Mym9?o9+w9$2QpzR~cfF4)ZiEPI2gmYO_J608`%PpLE z$aL?;37lVp19(>7f843HcF)1e*I(~^>2%q`x~x`&Z6W9Wc+;lP3;LNWazFLE9NWPC zenA9(-vx`7=LyCEF42tFf6Uk;HR0csjC%(wLoQ@3;FRoNe$LQ@sVmCI!~d9d!g{Cj zIe9s09LpUIQ%$W`{ye6BMQzRemnjLtb_;K_?fAEUWAe8ChpRt1_0DDOmeBsP@ay_z uC;n@lxnOVjy2;d{nfb)`zS_fmC-*Z3@;N(){;swL#fPV>pUXO@geCxc;mhLy diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_settings.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..359cac087b498fbc0f49c81122858711a7ad84b3 GIT binary patch literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfoZO%i(`lf z@6u_fy+Z><+O79}a!hmy3Am(S(6z&rS@uWxmjz4<9hIj7Kd?IeZrG4ncz34ne~)-VkZDMk(muJm zgS{IBZz=!Cu_|PBF*A!#Wb`zBmuSN``3V2V?F*#Z6t*nq=)H2c(ecrG1IIhOvnHD! zxvWslWd2Y(Bm11A^R`>IceTE(_UwK2>4Qv4y3tpTXb0EB3Aclt_ZS67q&S?didZbN zkE`tg|C1WaX6_H-Wfg`TCrllp5A~>TD*9v@us-hcmQUUipPjTE`WJB5HOx%PG>%)f zY*GIq?fY#9RVQq%Hsriu72C%7V=-q}>Ri`X-~E<9(za{Az>@FKUv@(1$kq?CaoT(( znWwHU{nFgC^?&}tlO@juuN|~_Q8DY36K~Svu8fS=CAX8fmuL1#fS@I;x-${;vI+)7m$C@((6hXEgqP z5N8u-{*o&`L}`JW`r5$EJ?pxTFOatQ9o@JfI$&9L1%sNyeOG=R?%#`b+igy$Jv6hq z%wR2gE&J=z0>P4(oVrWYC(Y$hUof|1=F93gav%LKIHfzf@7pnP4eR&PM_X5{ds`FH z`;Fntly~o@vzH6EZ{6HCa|!c;wXYarU;nyk!*prgd8?gsRD8{x7@ey7FW7|lFM4h< t$3=PWGTRMiCq+M8|FQjPu#w)&e~fk#4bPR0cl3Y~tf#A=%Q~loCIAJ$T~h!6 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_settings_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_settings_14.png new file mode 100644 index 0000000000000000000000000000000000000000..1f2b0e83b09392cd34e4669261a0e764acedb5ce GIT binary patch literal 811 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 Yj4^(SOy4GYKLRCBPgg&ebxsLQ027@?`Tzg` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_settings_old.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_settings_old.png new file mode 100644 index 0000000000000000000000000000000000000000..40ad03b7131449cce9dacca60b0e0593c55fad59 GIT binary patch literal 868 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 BwjBTf diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_start_secret.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_start_secret.png deleted file mode 100644 index 633c5cff31542bbee09a17c5cd4f1d076cfe548e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmV;w0YLtVP)u}T9$5QaUGJb*sAq7xu9PpDkQ zfNNFXv=YSq1D!T-e9m)g)TRbIV)Lea)Ko4Ig0{Os6PtYD^x#E!v8IreW_ zTWkdH63z{`dNjF^#^4upHEG994dxKO!GTFK64E&B+@MtBSVFor2`vd}!7`-94_W)4 zkdWz1yHayylUXc@p4@<|55cR$FsXWcofgq4`CSM3NtS#Asyzf1?*qTlt$k<~n-A!U z@l>xM{>)<`njgaz^Ae-B(7i052fBu{2J*2u~1?=$hmic!sPWdyeU!um>(o p5k-689Ox#wCXKW`v%!BP{s1!xZq&NfP}%?h002ovPDHLkV1mON#bp2h diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_stats.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_stats.png index a684b8632d40409dc662aca274f7082490dbbf0d..bb6d9d3446e1592b0a5c5dca179451a9954908db 100644 GIT binary patch delta 493 zcmdnZ+|DvVrJk`k$lZxy-8q?;3=9k|sS%!OzP=1vKsE;hV|yk83y{SK#8N=az`(qK zk%1XVGlIkxFu`Rd7BC~&Acc=iOVMi@4^b;O4FA095qr>Wbdy1HofGD@4fXa;uMWed(@^hPvs}sw0bBZ3E z-}yiNna`xKY_iJ-_l|2)E_l zemK>saX#TJ zX?*j?y*Bk=JR|d0<5^2QED|Kz-*V{k|9n(pqT?JSR^W1y;ZL&oZl~>ybN+DOY0i@j z&+Aj0n8EN%;nSMEZu(hi%w_B$|Nc&~{baqwD5stM&jrRC`3bA)bl>{TS+gRn*s<^? zFIUv7*3V@-Px*d(by4MN^0o5G6$=?Z&W#QZR;?GG*J6G{WjE`rb$M?#o}Z&7{e#tT WU-0&zH*6K4c<^-fb6Mw<&;$USmcjf0 delta 417 zcmV;S0bc%x1iJ%}B!2{FK}|sb0I`n?{9y$E00DAIL_t(Y4egY@N(3)it##|^<8pPLH>dIyMG||<5D1U6io&})@|C= z)z259d0jrKMuI-2W(Vj5OW3Pm8g#%lD2v<7ND~w*soMY_;MsBXG(Vw6supr;4}qL} zKjay!K|sC?`5?IgWNjelYb7M-&YU@d@E%6^yZ$6L&Q!NFm@PI4Cy<@Dfn0EkVuzat$H!AY{vMxucJAD{k|lGV zZ2vy5_}}+C*6DK5L7(2ADZN`Xqe;fbagwL<{lczk0;D*3`5}k(KlAnzsRu+8M6~=+;NBv`<{qc7fMbrqWf=5-4*14ey_bx+M-= z&l?LhPODAVI&-t`4I78`LawT}u4(s@i!QlDU1Hn4W>4c*CDCiXezQ^@PfDGA z^3;MR)7}fbwHNrqAFzd1)N>^@@_u-|P*>&OrR68*Iv7@ezwTnE=(gd2gz`CjI&TL_w zUyB68XNNry%(;A$*{$dvhf!mTjL^pUT%V?1U^=WIy|Mej_QTq9oR`kuEPpvPzvtp-f=jhB8ds7Xx)=uA0FHrlsxHpd>#d*QJ)w)(c*?Vr9n*Kj4 z-*@kUlm*k>CtN!i=GJr@-m_?3r}9$&vutnN3Y`>%`=5WjsyF=2dDB;{;OZfcN>F<6 MboFyt=akR{0QK<u4}1=9qOBYy%KNklzJ7`o<5Qe{v7GgA@Nuj7wK@mGae1RY+C=wxs z76D7q#z#mK64M5(>?4SXh`k^dwt|o##%LPRP7$#XqU$3G*-sA6#pCYHX4NVK!{z?x zpZU+6#~hZuRf+=Cyp~-+FK`H0vqX_qU>tY=Oc!9KQu&jW1b@N@)H#3ItXf^dXMkkio9)^#)0^b|HsLF2FwBb%LG;fwIEQ3uP8~DV%zJm6g!`vyj-Bznf!ch0iFZ* zfR%O0ZvroY9e){K#MTNR4=S_0z)oNr&;fi3&MM$^VCk;BDVbbL0u#U#FbT|L_;=tA za2R-);nlwtcn|C;!P9bH2D*WLKxg2aqPm4v1yX`z!0l|0h&>nv24k7(ZN623w8^)C zBS3$)OhdqEEZrFJG4OT4|Ik>o-d7h&Zt-wjo_FdEb$?9#p-#r_&AC0nJy#}hHwHJB z+|ZNiBXuSwk?dj#?@2Vjtz`n2BJfO;R*+`g7re7|V}pTTU#!`6t6$Vt>V_sF$0Jc+ z{I{t?fla9$&D!<(AijVPiATjJ;1?|Co^55x0F~oy6 zIYEN8*^K4i|NrN?j?8m7<5ueK#CxA%iQ|FBRbmXhEIVb=ekdu-?#vQPFq|Wq!YGxd za@%Qvqj19vfgcPZ3q01S>SS>BGybe}_`}=r-7!<4mFXUH<@!JukB1Dg;_OH28-Lgd zoSwXBdd60V=83w32bT)2;G3cl)eylvU24vw0PlN@nZhw$4Mjo@e}p^YnKqi~m5OvS z^L{&+&Uw+3FQY^4f~u88OfrjzKI0>Ohn$lqPE;_rTirS2z`c&i&@jPnljfCAjocS5 zgecUp9Z7SLZ^(GXuweS7#vk$m_nDG3U(Mh$WzAS%dX|U%CZkCVTZcNcVQH-2)dUGs Z9)_ct%99jVi$4Sfi>Irf%Q~loCIE&2d*lEB literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_theme.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_theme.png index 900656117e74ccdea456b83ede0696fe77a18e2e..4497446cc3e938c6abfe35dd29ae92c3f5b55e4a 100644 GIT binary patch delta 684 zcmV;d0#p6x1j7Z8BYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR917@z|H1ONa40RR917ytkO0OB=u ztpET5ElET{R7efgl|M)uQ5?rjh;|Smh|pF?C7^b#9c$xY9e>T%u^=j0b#f?l(M3CG zH*xFG!Nq`}Ae2^AY^Q)B4r+{oe+q@RORE&FpYNG>yt`9!>LC8$!|%QC@6UU8dG}IN zbKfmi?ExIec}`A0bVCa?z$xs)BFx8Pu`>R8M&qZj3dYI|K0yvP;Wx<6;XO1)UV-ER zI0IAM87wAN2Y-F=1!Q~hB$yYPlceUd9jIPF2l8ISU-$v7p{7P4*ah0Pnm0+ur{Ms` zt-SGymbSEBw12P#wMO@O0&AcJI!u7^6vz%NO$*AVj3&?gjjKA&psl-O0xv4TX*-D4 z0$Rl0t)5DnPL*fO>)|^TJ<$vhXF%324c`V2O#CWOj(=}4=5ru>?5jb@LrEfj6l7n0 zNtaB>@x3nQ!z#pjlpeQg^tkQ(4#X)GLiLDCpr@!01*-_u#Nj3AI?=a~36&sbLG~&X3<%`tNRPlf z_z32Q)_(>suP4w1y1=#}5$NeniM<8ebVU?l4BW5ZOAZbyNjS&%vDtaV3UCb1;1N{4 z^1XVJ6R-lZ39yf`n}@alx@jMJh1VHSn1pqZeTFW(o_R(AY{=HH8i(FB|4u(C?xtW8 zvY&l$QcE)djf0lm5crz5NHVymH_Q SxX*I{0000zJ7`o<5Qe{vk!;MvLIe>}d=w@SjilAmP9cOC zf>wfJ6%i!0u@J;62%>@@2ns<_tSq##OssrF1QiW}FGA3W#`wr57iQt+?%kWU%)sI7 z&diyA=09`hvh1Z)DL}1NOBv_^x`6dSJMa#83`_vCd521+(tlz_0+3m)>ahCO+VV*~ zt8U4juab;Ia$r2dzEMZiy=srzsqR)!s87S^n|iQbfG%|^4km%i>WZ8S8)NTPKZO6u zr2yL0=jtDIAanu@4*dLttsoQe6&#u9sZ-=@@{jHAW z0gQ#QSv?(KFV$5A!OKBQBDX{LLY=I{ZAf8k1>OU5z(VMLR^Qel`2}19rhuDan2X0* zRl&1BZ%|i8-*2dcB2rbhtF!8ZO5Da2#thI2G({Homw(7UEkEM-QJ@XDn^(d4;IgC6 ztg|b56Mqx_)zx_w+yjPyLEuzDw#`64&=LPzfjvMs@ERBZzUEa>j;{Hlt}Dp&QqJi6 zsE(%3J(P_*zWM|c_=ZfQleGx<;t~1 zmaShky8J>`%gpe3dAaE*?@9CiqV8IuOz{T-a;)Oc0tcl7{LWR*h-GYiqg^E}nc;F*iFu%rQ4W1Zd)7sYQD{* z&qgaNE&QV&w1;PBr+!qq=<%#`llR%fmA5v(=nl_}zHN6t?#tbMpIx7(KHMiY>)Fe? zpLN^*vWJ~oX0`V8;p(r;(=_r9`g7#kn@-+)an1J|r@occJ$KkRCA%!*!kXfa$MrW4 z3C@y^yPze)(sgF*pEqtRc^u_yn)ZKK6*42!<8`{p?dh4z^96Yh8)}p#N-f%QN|tA@ zIWVvm&V0B=&s>Ai$=0`2CB9*v=JXBBWnW4JmL+iHJ!IbV>}%!Ot)CMXs_khlz94AyS1=s|TBYy%PNkl+$aMhz$|Hd2Aqt*dCd` z?3jBS37q%FD}RY^G6PH`vbpcrp_IT5U=f%HwnhM3fKR~7gg_7Q1(*!12DhBiI4Y@2 z(k)3}6F*zsBWCX;O-SlDYn{M={gVVhF0z$^^+!3@nnLTdUnl?sc(_Wap+c?>+Xln82ic=$^BQ zEUF$U8_co(7|;oPcJC<{RBvkR1eSogz={ckam~eY?k@z!9XnD~$-96zZeqtb0Y78- zQ=oODW>;}V)`3x=Q~=%vTrzwC=xw%L9|NimdXd++{ypfB>e=R)=)VSXuY%m O0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR917@z|H1ONa40RR917ytkO0OB=utpET5%}GQ-R7ee#mQ70)Q5b;l6}2RC zk%-!dM2pH@=0c2URSTmiXpyumXjhANEt4QxC-e)Xz)hmnrXr#?MMPjx1dN;BuSDp@B}(?;r}w}Sp#EmHs4UML$DEb6;8r? z_yehs+kkNpcEH9oSSrn+U&F0(x%@fA8qmAo5Iwumr^(HwIRe)}c?w$$qPyWH%)@eG z&YJGfvkBWBP@GwI&;>o@5i~&q48a2YhU;(~wu0Lr+Q!UTW34^*I>TAYpbN~wB(y>^ z+y~`0Y)>z-#)mbb7M1p{N4LNP+;M?@&<=Gl4$37c*O*(8vNrUf(izV3YU;8=ob#Xz zWx-V%_NEhR9L#*HxpNG4U9T_o)Zh-~x9oY;Y;T+^8&T4ak*^p_@SJbfAlKal$@8Ape z1K3umkF#c7z=KPPTeavd|LM1%&!zQ?5@*f0z$AQv1I4Okd>>hRYKgO)IawF>c^s#g zn^nA2hj@kYD)rw6w3Ui{n9)moJiCVk9j*+gEx8Y3z7sw)D-&5b`gGn@)I27*(2J<6l<)FFIUCvnp;4V tXS#>kVetIP|EqX~KL(>bjvg0P>ya002ovPDHLkV1n!qeaip< literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_timeredit.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_timeredit.png index fe98501226f829efdfc14b06ff33000dd3df4d02..b5b79dccadbce6e7398eeb1fe8a49d32cc9dc347 100644 GIT binary patch delta 602 zcmV-g0;T=d1<(bMfqyzlL_t(Y4egabNL5iB$9*D13Q0&}nhq`nQIlx~(jYE5=_CXq zI0(5lB(*s?7f}v1wM0!BEtP{LD2h+FcE$G$9vI<&)8prRJ?C=nz0dn}aqbH60epA0 zh^J8lJ20aL{(l$zg>c8jvQLpgFQNB7P#DvuayV!;kMNh^jm;a9vb!rk{hI_uy_D_5RJ6AwAr8x2vB)<;3T%0vE@!Pn0#b>l-^!1vFACVq-phk)n z=-p?BH&QfOBiMZW0lNN`45!`7r)aeJPjt2TV%9)0pMPjD@C0PZKai)UKOCrxS;9v) zLw?itUV9_QAq{;h4q+nEj1|y~fb6s1A|DH?#&r4hFsAv@3Lb{V69RPlZasEw;wIPx zy;=PDk7YEPLDyZMjz%|J%A>7Ab>kq0k*Rg2lr(4|ZfPuU41DxrGF2Wq>qvuR#Ui4TZJ8}!hJ;SZkdf)-* ohUyaOcb!43-BYX5kBzHjHPv-8$N>4d)+Klq zreP2+!DrY6*&VxpzMj6)j>#w13QM3ZYjpFuK1n@|>;e3NyltYt3`4mB%OTzds+qLH zTP_I?=3x~M!hc85yQm6P__7ya-)+e~4ivtBPC0j}EyPa26OP^{?OUjYlTfNXGQum7 z0%pE%W^Y##zZx#sLX+Qi1*UEh-Hd#91qm})QZ1{Af8V9n~>A9{2>~@DC;;Nhg5jF33jh6#d>H%H_4=IiKWnBRHQ6ZsVB2u7zp(M?kkZ z1&70UUP~eY8TbYbdC4Ljw7R6PKz5^uG&uiVS)Kod_HDJ+2g u(f)#7<{RjN8oQ=!p8?$qTK1TG9^gNmXiH40000>er>-L-x9$F1;M~~dQ*9Oh7>Nw5?V=a79)_(>RD`iy_+CfD%Hh`;g zj7irCju{(Jyp;vZP-hk<7|&o4_6>WCxrqh~AdNv6lzA)RcR)lj#uH)eh~~Vxp*BfN z@E$fvyb7dasE5x6##T(K3R`PqB&2PiB<4pU0k?2zkgeFLEtJk6DPsfEWPrT5DXPM< z2h!E_#YxQCz<)GpCHLB(i(!@V7TK&U2JgWEDfMA#`C-9aV(h+K1lRuP1QgWzBqvBR zPMhK_-X=MnfWkenOQASCVQ(;2KoR)lI{}G>%r=4I=e|tikkf;?4X>~U#n1=Z>=lHI zg+p)$uAVVY!S|x!Z-RE+=vKn+1nI$z`9>!CAqiIygMSIw2TA`wR`?fiWCIxZ4!psQ zH*RevR^SC{+#q%lXs3FBR`~NEjYAn!!W2j`o9H!|*oJ%1GqA!xhesR0z^{fgkaTKS zI~aN%U&X|T$y#UZg(%FJ*j#W0@nRT;1(=0FNPi=l)NiOn?~ZUkPo@t_&T_mfDX34N kzFxYfha0>=y6b;iA2_cC7ot0&qyPW_07*qoM6N<$f_I+zSpWb4 delta 544 zcmV+*0^j|Y1(gMmfPVr1Nkls8M(^QS+_a*A- z%Tt(gfEm(E?SGX)FNRgpx5!qdaQF@mD5(i6%M44VljHPVBDnWQH=v>RN4Y^1J7t}f;1M~K`svlVHT#L9}>TjEb2E@q4z|Dv3bY}4){*&c#CP)NZbKB i%`P9%p&57mPx>FhcL*JR$;ov90000>t6lF{n)L?5PkjE$-B@A^E~xo6HfbFXpj=2zc&-{*Os zKj)qEzUMYIO?8#B8z`5{8`<+qrP8&mzusJYi?x+lgC!W0dw<7RTN17ybi5eBHxp~I z7Z>mh-%!-LVs2`SoQvTk<76zDFTz8NCI0I0)}#-|umxKY>PicmOwSs&_gTOuz5yID zZ#5poFh=kcPXe(Yjj65O3Nu2(nb7dQ(8kwKTyoC_!z z)*EXO`I6$r-hV>q24)oMrlz&V8zfCyBwt17HsWYb5P#zhBsJqEVkegnx{G-EIr05> zgDBdI63&J}Luku(VApIg>FG#{bU2n}>|>wC2HaD$Jz1|i{A+`>fF_3+C$JuIl;@?3 zH6{%=h#Hz4H3X~iK$8W=F_e*0?j{S2TYMPH@df>uAb)ZDInQAfr!a)bjn72whnBPp zp|5y^H(?~YF0mqZ^<^Fi2fGWu@DhtL=TBteuZ0o3Ku3}oNAwIr*#_STHawm*C z@e}b-%L=6{Ptj%})SF#ouc~-`DhmFd#Q)kDmoT1u2fpJy;$NH>=Lfv2E*e`={e9Sz zjpmQtbzI{)qUa#v+qE6>S^tDM0OR7=h98KnzCyfyyefqzU%L_t(Y4b|0OXisq%$MOB!6c=WtG)Yqmi=u{dXv2P9&vwqwIdgt%%hf*h?)g5? z_j$h0Ip6dBeSbAI6J4e33zW;{b^O_-QmG>wuQrxH&D?UV!ha$>Ptofw%R zHWjO}50~%)0~o1z$YRNCKu=O}Dzc0h;1T+hcxpZvbfOi_*nrUS?CO)Vj@SDpp-HR@ zM~&;)!{|XTp5s{{_X}H*+{VPoZF?mlJCHmB_Yt~?+U$JMSWaUkQ*L_;3q4(*MKiMx?oTQ=O1iKr*5f8PbvT!;OoQF_b8cUk27!H@ujfkI4;<1(Oh$r8UpZJ8> zw!8#C<7Hzy$<`tLe`wBTi^tm?z$^U1V@$_Z#I^nvaRB~GU^5~)UiB^FTZC?)>J@A* zcM0;><2&LG%S&(>F5@X~A@(+R(()C>o|?s&Upza}qJIEC>pacJz}$TR0000F9bmx$8YaEqL64vL?IzjcqbGR(a>IKwL}!+ zKcG?~AyKF#+DkN-c;t%9g$8jdg+@aV3Q=ji#^<+YHoJSfYY_$UOFs9T`Ofb#vwJ&< z#BVq2I|oooRg&KYJT?3u?n&}L5lTi-;OT_w|@=Nq+obaDO&Eaq4G7Lc9pu0iE3(U5=8mzERy~nMjzyk;BnfVW3tWOL) z-2(E=J5m8_v80b0#3~XM^xq)r>DX&O{)i&~rcvADFDzHXB(%UK972hGsR6}DsFVS@ ziylF~@M$P9&wnE#aR_$c0*;8D^=F{V-LnpN(8mWTO`1TyaquRJ!T;Z_izUG4zxCh7n9SN*c#@qunV$#qc1WSOB>Dchz<6V zQp=9W0IgQ*d7r+Zbvfk*oap%;KKQ+|a0A!SCdKeouulqNCny_XrM3)*eB)9|C-~h5P0inf1%KS0;4e@0{c$4D#_W%F@ M07*qoM6N<$g8Goyg#Z8m delta 473 zcmV;~0Ve*<1kePKfq%M5L_t(Y4egXUO9Md^fU}7Qh=q-USXc-aUJKuwO}I{Nul6@g@j4?s47;0kT@{Of55BxN@0{7) zOe|LEV*Ta-wr$r^pM*YWgPdhq+h`+^2hgmBsveML{YrPCtAD{Q!wku3N0l}{(=?VH zF2Eqj5G^+tJ8%jGh{F~PLG%G6Z$cC7fo@h{m-noVu#pb6kU>U5Pe73*w?c-7X;bwL z!!s?QPQN2NAQs8>)qqG%!jk?6ggqT6_UDf%^fL|H9-pvW4U^CgML32s`OyHHkI^Xu zau+>={KKcAOn*F&h{6=?!Zn##yFL%!hJiq{dKp7&ZIRlZ#lJfmhH~}J0a0o?N zC|T3#tb3JjR{KQbODq4P+wa%};_wKU(5wm)*h?UCpo_2@;2rWHyLSXz=ccsJXo4*u z;+f7m>3D5BYmzbW%`3k=$}F6#^*%b`&NViHJGg~TaZ;k|U=>70Okyb}r<;Ncc!4XJ zgL-$K$0j%mukZ#^An!tC-IM5B5Z4!?FA}gMxf_<@2sU6GqBjWWS^2IH%+^0;CSmmg P00000NkvXXu0mjf;YZiR diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_translate.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_translate.png index 420003382fe708f10e45e519f2cbf421718570cc..9ae22ae7468fa5165edf3d8a1e23031a207e2996 100644 GIT binary patch delta 484 zcmVvf6y(PkuOS}9PJbA)GgdVSFX~O5hGIAm7bp?bBczWIa}lZ&yEVV>ypBYlKHgfL7iL&u{{rv`RCyVG;bo- z4@uB#>EN9h+hOZ za0z;yhoFN|8QC}xya1gl`Lk(7Gk z{-wvLBdphU0DGVxTiRRD)e>zaOQSPiQEFO1rrq2-=v@J_zOU*WJQ~dVZH(!5<;0rd z4L03)RzBil(4AzDaEhLI9JI5VltiWzggR0B?})sUh!22v(V1z_Z*_>PzXhGZZ+WNm a54i8W$|zNx6qn!t0000I#7b6VB_#~k=li_N zo#zcRv*XmKd+s^sd)~co?z@wh_wUUZvjSVWZnVG(X;Ow?Xy?w@fnPzs!iiZo>3QCR zounNR_d*h~wO0hgX&aNUJ2=B%fRc#fB4Qpq1^F??YlsK26Mx3+j8zRnd00hk24q9w zT*h<6b$$zDHe3<061am4$aiyD`!v`FS&tRt+trWTSk5EO8sQNVpq016Gn_yy=fSz#izwmi88OwL}}q(&)@rl$sWhX*c%{dR>65@2ffoj|TI88)Ld%Ik9GV zgH1P{m5;a>bSK#(oT4Wl2kopTC6Va_p-zvnOn2JQ~_bQHL{Oq;be^ZSYgLaSa@KCk)zL4KBGU+sr4vG>0Jf9~`7d_-udV@u)< zPGbYc*V+-AEVyUiYm8qI(J*;KP2uj89XH=7-)YmG=J`-L<7`CO%p+>Nw|aLx3k#5E zyL++vMZxF)r*bZEb!pZ!|62P&)b4;){O8wM`#o1)zwu||dUnTxsdfBoT8d+qoVzZZ z?eo=uZ~4MNwNH!zZ+xPT)Tjg{RLCJLX})+cW#F|`%f4CLuvtYKJb2#PFQRIIom|Gi|&U@D%OBG6p z%zm8c*0^4(ui@P}{;#v9%h$769pArDE&0C3p~dFEtu*uw*=1~B6BpRhR-rGYJENOj zl69Zqh5n1)Vys_{*5AwiHDmV68F!n0R!j(bpn2m_VEV?H_a--)U;e#BKCs|_IKM!+ zaYos)DR&OXWFNDQRo7wozr=I;`s1+=*m@rYXfFLX+qv>^c}Ac7;>*U~_POset7O0G zy*zWz>0ImsowLFcM<#r2f1*BbX+?=dT+=mC$3T{^`aajwo&N-8SW%fFVkxz7A@^R?SGr&_q5)W2(qRNm7(Ti~wk&ZED?a+mG=`swF+RWWrz zkzZDF&AkDy>o`mGHNLzv*|{_K-jO$ZTozrw{z%HPd=dY>;DV3Mk0ig`bYs49|DkaV zo2+;0*IE2Wq?d`#$V!x!VYi*Wd&B*oD?b;or6nHR^lQ&&jsL7+Z!|7--JHw;O23}2 KelF{r5}E+QXK9=O literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_unarchive.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_unarchive.png index 49618d07d8045f2462823b833f0e27371d62b336..3f7f3cd4fc0b271be4cfafd561bbfa14148ea2c2 100644 GIT binary patch delta 563 zcmey#e1>I$NGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXV+ve%w7~;WucIs{~W=9c+a@Q+vf`TGzKe3x- zsV2>i(%B+Vzh>)Kd6y52KN-74ZvA9!YY-4sX?5W~ct|N@vDl)7M^*3Mz1d`aF0V|8 zMSsrBo#pS6<8E41%kvU{pB4pX>dqeGC=iE0-*&YV!?Xr!!&~^tt00fPWVdP66br78q@po z+Tk0)wH(clS&w`Z^m}2uTI&FJh~mdzCHE`j_BI^6UeCa)re(mz9dIs?W&4AOKaNq( ziwu5l`81Jz1Jll~ly?nJoaFw#fULV%v ztc-n@I`PZo6N}_}_qOW(JXfl|^!ZIkuME4-`?U*>?pptOt?h?Xdzftn)9shvwtD$d zx$1bNU0E#m`6?$?Z@u_O)+-V;A8qlje|i3vDf5o}6%$Ua5BPcXknR^Pca@HRI&6y? tLsFc=47r0BMSDsAXZv1~E_r?SZ+>r?*fn=8!qh>r>FMg{vd$@?2>_qfWr_0Ah=EW&3{9ZPeT>5+5rKb>8u@b z2ZBMyXV49s@Bl8$BiMj7c!eD>8wE~5Y}u?Zd(pQ;5yV!EDkgTD(@NFD_BTy~pm&(i zMWRE-`GQln=mIKQkg=UZKL-08`g$Uk0&j4aaAq73KMZ2WIxAxD;9m@vG7P@J%dOUcG&xww9hq;Z_y{>yjUy1HqR~79~`*^O^g47GM;%v z+qC+f@~!g!T?nQ3KSD@cfEu)FB@*=L0@3$C98C1n%t9m(e+H|fz2vMK8Dd(KegR1W VUZ7WGL{0zz002ovPDHLkV1gT#-KPKm diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_unfave.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_unfave.png index 83e95a8f8f963caf8762bd4af48b11a06c4ccc83..08d307459b0ed71bc95132d8f0052da0dd0d0a94 100644 GIT binary patch delta 776 zcmV+j1NZ#!1fB+vBYyw^b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031 z000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR917@z|H1ONa40RR917ytkO0OB=u ztpET5h)G02R7efImD`I=Q5?t5nVU8r_7+&;ldyByMCLdM&Xx?#Mzn zy#eYDG=q236E`sjwIlY*Vl@sh`)RhrFbu&ZSPKKN9vZ6E>StmFZ#&@)yaW9s@FPU~ z$MAk6{t*kB;1#Ivunz290d)_iMZb~y5d4B#a<9J+3V+4w;5tX_fCXWbM)JNe8zN3G z9O8q~3iF{ITzekWlFUot)1h8KM>Zg#Zh(uR9zb(`p3j+iz)Mi+hs@?Qdee52d?9va z0}^Tvxe(?Li8J$ab9%n4u2uVr^R#Br4PSMjBanTMQTBa`ha>{+ci?)s4~%Ci;$eq3UhG+<#trsl?v2h5eT9`Nfr0Lq_Qc>`%!%b`^1%Oz6DlI+>Za)={E@@kaW&ufu8^X002ovPDHLk GU;%=)y;^Vp delta 600 zcmV-e0;m0+2Ji%sBYy%nNkly-D}Qa7{|ZAt(X<|(nFMtsWk_yX`FE8Pms1! zns(rQMM6V4p}eHz+#FDHEE8op;Q-~OdC5!0uo#)Q6E7d#`TlbE+w<&seuum2s{6jL z`?|i@yQVxPApoF~I0}+(O8O;fm87w93Q3Zv%I9iH{gRHQpnpYZyQF4GEt0n8$}CU~ zT;d;{1!jb(BAyF;1crdez$Wt`TaJ~RIZEafk7+m$bZPftem%Oz<fu(jd2@S;;jAHC_#alN7YiAYtg1vZJpv(6< zx9_mKWM8!Gdi?jhcU46IhwWJyrf%SsjXVRM`uxUy-wcdL1J+v!z<>wlp_N9hSnE~3 zB^tgbz)@FE|6RWw0;ZJ$NZcKPemI&!5hog)s!vhdhJV-7)jnASD}l|x;xelt@H}9H m(;4nzg@FE>7=c!u&0000&c)_)M}v;Q=V24|oGbtu3H zXvi{*f@B-6gO_L+1q1L2)bN%q#y)~~&;twb9VBlcYxDl9N$iI`klb^V@y!4m!`Fkn z0?8^I(^{94Fo=B=T;Rk4^ccBF4C24vUTIDB!X_M6Q zLp<66_7qHpy??UU70|#wQ-*N|B=*k%Aa1M~0=ByXX;%g$-`)RYEKX5JgV9WaDl zgB`eLYey1k3U#(GK%$$nXe{4k~p1+oQ@fqxuHL_t(Y4ds+ONE}fVhIibcAVv-Nju1h#NRdj#(n_!rtSuB% zC>9oJjA^tJj42{Suo2uvuo1;dun-}TMj;^yDYOY9LaZ!ACA#_kyK{!Sn{067bot?% z^SI}pb7yvE5{dsxnM|e*<{=GzvEDolpTKvJZnGxSt0DOH5P$shKsGnRA>6<)w1b8$ zLklSX5eA^RL2RgjFQA6c?UeXGVI7h%1Lq*^!b7Y3tEI3C4nUgli;3L;%Mm|<1&}^K zwXHczq5-Dhori8)dX-a5KrUy1t*cfW(4ys3tjBPoY@V)&Uq*$VLp~aSKLmrejIYOZ z36EV4XAGnlpnqXTscp)))c6B-h@~mjVS8OLa@R}Rv0 zNudVCxO z)3gNE;7`(9`P-{cF8UXRO|92R*d*oWZLy8T9*?=Ocn@3dZy?SYKwJj;66l-t4I2IW zfLD~lWcux4y0Q^xn2I&*jTiu;38y2+_ZGijTuxnpk|Ac0)f@#?tV8~i-r?k^BE-eTyD*^BODRxLWs}|GdpTv_-}blr z`FuLLXRiGHowdc$8h<1|*WPcA)Y!d8r1Y)IOEb;v7H7!&THCV9cczx0$7WGLwl;L&Q6QtTM;CowIlFEjgIUQTlemZ}xz@9m_W|CViT! z7JHrbqkMPy#TwqMkFReTc6$H$-gZGiZ2jjw8AqBFZO+e}vE$7CfgTe~DWM4f>PX~# delta 457 zcmV;)0XF{51mXjbBYy#@Nkl_R_Mt~Qf0t{OBZNRDe%trx?rhtP0$P{qn3+`!) zmaPi(MFEpeC$DSv9-_x_l5RyMkj$c;35PP_`Bi)%)fqcWMXEe>}q@*Kn8dQK7bt!RQ5qmta-`*1~96@ z(RmO(JxDu{)SXnc)=D7`AY%p3`LdeP`;x8?BeOuQe?mdJ0G(Qrpx|O<@~$@Ly5#(g zUv>eE@vc=Cm-gz;O8edoWX}vt87ZLdcfK+-#i4xEN00000NkvXXu0mjfR~gIb diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_unvote.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_unvote.png index 0c108cbcb4d8e53a07556fe748715b19528c3628..cbef233c5ef9f3c058e03e9d343a640f3af6ad6e 100644 GIT binary patch delta 634 zcmcb{Jc)IJayzH?3 znCjT&xa*}+y@ZaQj?SVKvk50tCMAV13BD0Z)%pCmuC#XfFP>v}FHLoO(D+q4t|;H2lhO z2c2cBwZ9ztGUuV`Z$AmM$L~y?wqAJLH@iBWp;c5sP@k2jlIgs?RO#0#vd&GVlfT?J zBk54Y;WuUbRVzc5*EeLE>i1Y`-#O7exkUF2W08B(t^aRg!jEKg$U4}sQQr4POY_Do zW-g&kj%&g>pB1fnT6@2p@rFZ<-E@tjk1`E2=43PVMVvmoCTTBw(UjR8=O1~``suHy zF|F9OWa@&NO|BNa${SdXADp&f_b_)ByQ<%*y*2ia%EvXgrkA*~uXvaFNB2Z=;X1{6 zfratsWEQ;F$|%!vwA8X+R=qXs-MW(GAYH4H1w8A4ytt;#e2zkKi6T$deoPHoU9}|K z#Oa!w(5ICX&X?{~+bb9xGk>P=;srC$va}q0zy8O9Z%o@N(=`A5ziDpM+0ABUlWq@6 N6P~VqF6*2UngAx@1poj5 delta 445 zcmV;u0Yd(g1=a(QBYy#%Nkl7Ye)sgr0y z+zSpJLV*im&PWlN1kJ9tk(+h)G}(*bE_@>2h#R{T7APg+tW;u6dg^`>xK`XN^-9H#r`7dT z%DFBFxj@AALVxnNDSuTR?-Cem(HXKk4ZH#_0IR^gzT~zZ?51!0gBO6AjQlllv4s2p zlI0u8?%6bcubxmR)pu#`N$DxthfH9saq&gswE^;Kf&6wIA}?-oj)$o)u_q6zYThBx zX7N!W-+{Glr)X42)`p#YuFb&`@L}MJXu||>yEj99-Zp6Hs518OvdNi0I7fk7=?9As nNDa1tHQ+@EVY_neAp!gbwRtgSDnVf600000NkvXXu0mjfXnN84 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_user_remove.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_user_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..cc001558edd3173e3dd80425403b0a76480d792c GIT binary patch literal 666 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfr-V_#WBQ# z_vqBK+Ae_-?XkYWEgIU|USe&%_6{?ruAQ=UQHrLtS@5RG%WgzyY~Ju`W6+|Sr6Sf# zQck&-nN6BGmF;Xro$+^{@{;HGc253u?Q-?G-*4wV_VGPi@2NNab*pbhletCHMf;iU zPQnu!^>?%gdo-r7JB6AnMNVE_Aynm~c#U@h-=rBE*{`X*-kk9%sW6x&nq%Dq=0nHi zJSMNmuZz^(o(;w_DHk?#**s9`okdl(Hj|(NAZcEQu~zz?&C&!`$K0qi5f@ zPPCZiuP>8vGWVbzOXQ8Ox=%zM7-L;K`9kj32$}5c+V3CJXH zs=Gc<LcpwOGs!DZR+NU>{`} z8LW2BDuQip_mkZVK2_g*Ei!$-YR<06_m0*!hwV}h_&&>h%vHt1m%t^rP&n;Pt#DP$ zNbMTc_J5NrkV~ o4B{^?;L_hV&-r?ItVzZr{*>G079T?jg+S@T)78&qol`;+0GDkGVgLXD literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_user_search.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_user_search.png new file mode 100644 index 0000000000000000000000000000000000000000..dc5dd6da9a93d571439bd26f70fb616691c90bea GIT binary patch literal 663 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfr-)6#WBQ# z_vjRR4c9=K7BYu*Xn}IdYwPU3fdoL`M*-$ zc+~5^#RdQEto6cs4kiUHT)@CmBARLy@V1hDMNwzGQ(-{eB}I5ILdRwk+A>QWT-)v`M|2oWU za&N(3RgZKNw$4Lq`TDqurY#WZOBA2?V72XojCP?LjJ3jZH?S==;NiV+)LwG=R;`PT zt6rrWROxm~Ge*u;P5N(euF2WL|A(ZDW7?kvLFwl1mX6iU^&%;)MXy(`*!q0=+iOcM z1}`%9{>*W$x4O0ZY-XcT$L91~)xq6@Gk9&^v54uU%e3l#DT%u#dByl*IxkOs$N3i9 z3BHcnJcn#wsQF5G{cKkZV&Q(UO_=TXw&V-;)<<}fqE;|!DTsbbU{2Y4tz5wAyoSg_ i8>Z(Eu4p_ocYI&Ak!4%gBNGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXV+wJM%7~;XZcj{g*W=E0M@}u${`3rJ+X1M9R zVZE=|+B$W8y?}>g(9HA=!Y()1JyH|%7j9FUw$G78IPtGv*}6Ap@-}tuinEwG^LO#P zJJyqLYOIQURQV@!mf4244QDIu{Ol8Jx*z}8dr05d`3{S+0qg0m8qv!NP9DN7bEtb!cc8i}P+jCIc;?vrz+DCUp6pGYqbq1_D;=jRY=hE;s zk0oa2nJvm;`11h1Od4#hQno=XN^4c8YJqt9LWizf?sPoICfHWpCbt zZdHNCB?Sv6Y`>uXz=6;5Wzy>jPb`;TzG9Jfy;|3x%6oh9#P`i|7uKbXV+T zq*=xOWybR7GrCt9Utlahc;M@uTS}i8E0{h->ac8YTq0k!D7(>Jl6j(E_zmHb+UM7& z9n{)j-y^5zUvi%Ff}`GVcjLa3=7KC+ZAE{oe6=k*wL zMe*+>gwO{=FaooRVwKa+2U6Av0#2|mz!=r#YmVc=DzESlC#yL z+GUoueoo@eOG5l=047aaLx;U#{X?;27w(2wID)h*?Fq z3xN_9OM&oP6$(vE3P@emEqqft+wXphCHb(-n3C=Nh#B z4|LB-(m@V@9jL}q;d^t{rx_Gk%Bv#vq`}f(c1w9(=Pe(cQ?_&tUcq8NI5sOrrJXG7 elWBGTuKon!Dz#|aR836)0000GZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mm^EMP{kK?)z4maYXVTjuHF7~;XZb?Sb77Dtie`G0j-JCCey@p1`R zQL-qY)5+VTzQt{MAZKUT`iRb^NluTXijMx}%m{I6e%HcsQuNyMw{Iu!y!+d5x~%@s zJGU#}pZ$LJoZmB}nQS^7O<^Arua`wl&Ry6MT+JqZA<_E$D!r(mtZ{Ex)`*8~XH43p z`|_w@W^-*tL%GD{cRy@5Y-DnclrRmyo5WKyFZ`k0xrd@h@)YYE{7)P<580&GRBYfq zS@Zm7m*pueZ4N%$ls4`^a_s^8lecW8ad#%qZc|D*UBn{hkh4-Jk>|usvy*|*7gp}N z^-Uw-ip!nPr;Z=FmMFpZxH4Ji(OfID{f);~Rb?J}HBWQJH(8-#=`4lKnMG3rRtje9 zaOBnXo%`v-66WW;6^Ff#wANqvqWt>C&hmQ=&KsD`cLhD?6`0p>@_){S-XF6+v*mQ( z*>#%Zyn~$6>Z&e{X{WvW=ENkNO)PyYukW@0!S*d%l9-QFYn(V}5p$URit*00cL$!Y z_?H{Fi187#NaqiZoZy-U|MU*MrW=AbO)+O@zYOWU+3~gUPj_eS!LEsApF1+_WzIOS dmp(e_l>UJmTIUIDC delta 452 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 delta 496 zcmVAMT-QvU=%lKRw%Hc?7OOp@WZL*JSky%}2g{34cpjc!oD9K&N|%dZTMD zU)G&BtTCtI0bXFDk(v3V@yVZVsRnA#76iqp0e#lY zW@BbWGaHD`>UxYYgvT1thHdeyruNG{kU={Srhzsd! zaAt;!NoV^>1L-X52Q&@Cp!dxqT)-YbvM1(U)CVvMOK8jF-wj;?r=UpuBu(AQ!R{q9 mO&ylBY%bX(4<>p3rv3q>JpQ!dFnV1800001il22fq$q;L_t(Y4egY%N&`U@MK>mBY%DZ3iIrH3sRQ~2{(*&pSXzi5 zk;+0X{R6=uVkuY&rVtTQ2nMVKA(o;kOguNv%nosP)Wk+`;4p9AJ8x!PCmTioW6(Fy z?RImp3a9V@Z8K}Fd~VRaBbv)_3mV$^0*=kBwT9~DA0I+f1%IC54R&C{-$ZMZS6yDk zuLon~0zASCEQVz2OU9F52)V9?s3+Fga>+m-uV>R2&^}6tS!lrxjC|REAkX;f%O>^s z8_gq3K`oQXbdu!$obhU=PyL^Ue?ZApo7Uo~>X0<*)?v1O(aX8ezss*Cn|IYHIwHRJ z);7Gd0kienUVqMo{sHz$+}-9CRGpa~Sl{-io4kt#=pQznZp9UO#&5*gK!m&o8ixVR zmE`qo`dl&;AnV$lnWkOl@g!e)*fXAd|FR^t#5v?ixHQfB-mE|gM$N3X@){l3jJv-X z(UgZO=#!B&l;4LY=#cfatutu_ER+b7U! zweqk4hj0f?v+7#)e7Aci442^=6x#R%_RXqmh5F?mAHq-t9)IBl)?v`!MAxRSzPyUx zkLJilxQ8d0j>+_Aj3>Vsb6pQncdS@)#YiHrZ8I0q-dl({XuuWpeK~+2&-j|lWzF~- zO(2ZGUYe$_S@Or4@%GG|=0AmhK*@A(ti@f`AS-ItVYU94S97WVEE53qOQ-fbR1)tTYM`gT5S@+|70f7oc)>U888zuu`vGUP>2>_jxz zlGnDGbH!MKtk>??3~jOwWcjMYw(;cqFH6=)r-nQXr)F5+n|UZfzgcyyx{bBY^fxmm z3s41pGO|MT4LCQ=<w4L^IJKSX{6Q?Np9mGyT+hrk&q wf`3U*r?Rns$XrjGg@(-`Tdd(-AW1bMD?3v?B5NT>W>CwQEWuAq)BcJ4 zYtfkX)%vwYa#{JNHBG*HHD}J)e!p|mC++$S$1j$R3;Od88OSV6lUw#cOs`4dg~30) zjF<-53MTU{Vf!Xjv!6-b!E#je&7n5gtzjPe&u_6Li|*RMdN@ybZEjrE)vHEl4c9g& z-A|t&7aI6}b$8~BS09*?4KI3nY%eWUmz~{r#OPSa3DcdL=S^m$>|+=9yQ}=!_lxxx zwc@Mk{64uWP9BVCWG`@jy+SjY_twqb^=7$=yUr&C$!@9H>dg5_bEnX;t1NG=Q@;vv z0@e4p?qHky(Pz@+KQb>?goOL7`uNO1_n>x3g0xt|oxZ5o(=??flmzbit1S3fr)KX~ zpZb9YpV$SZ)V?Mr_x$oR_&lM373Q3S;8r_&C zNrFQ8D;)8tU>KViroyA;hDRa8z#w&$iDpnn9fQCKMHz3)4UZ;ZkVRq`EMfp?Qe#&< zlE6N(2=)O>B3{1lsFDi6h23qYl< z7`y18oBG+jP7#Obrh{GPVm$!dv=gJ5F91w(O+>h zFV69p08O#9B{16X{Wdd38Y%?>t&>gDTzJVz&UeMY)Iw z<>_&cP1(ad-YBit{%oJzn#C#v!M!$`jUZKdd z+**+nM^Zzd~`weOtFzs-|JIf;p)LDV*vRVW#cqD)Ut0qW4kWgb+ zJc<|r2H8ugHl&oj3;?4UZ76p<>qgs%WklD|hF#w8g3d#j5PZj3>W{ z2zPz8`iwKbi*z9(!Wv((O7kV@qO0nH&aiVz-6iR?Be7z}J>>Df54ZlqBA)(jhljFL zvmWDAXxVetw1VYQa8+ktD7IT2K)eLtW!}~NEMbNeOY-pmVg<|NK7ZWjkNf;_pWhkp Y4`$vW6NYQAd;kCd07*qoM6N<$f{sPkcK`qY diff --git a/TMessagesProj/src/main/res/drawable-mdpi/other_2x_large.png b/TMessagesProj/src/main/res/drawable-mdpi/other_2x_large.png new file mode 100644 index 0000000000000000000000000000000000000000..ba8a0e34e47a85b6521d88045835c4bebae63577 GIT binary patch literal 831 zcmV-F1Hk-=P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91D4+uX1ONa40RR918~^|S04_&(>Hq)&sYygZR9Fekmp^C}K@`Sw(LzBK z3l&8hQHu~Tg%D6;#KNGBqJ@PiG>wQTSgP3DM^F%Lw6qXAtC+$1nvNQuVdl?Je|e1-&WF67loo`Pgc; zK3B>|VPoJcSZ>ptW2HqR7+>zHBJ+($i$pjQ5!XeHSdroTbU zQ6_Y~U?R}}qP^4g4LW`vKN_1E{s8#xbV*kjn^bl>ZrLEH?ck^Dx)|^m9Ctt92H>s& zJ^9RNUw68sGp+YYWvAmW%|kYT_IWS~vhBj}26I4mLpppv_$~r_8;m{npGtq4*88-y zt7n!-?~*2OflaQxj`lP#(_)^1A4cF`*krV|xKcB%_oeFYPCd01ejp9vhuxAwq=jXN z2fqfqDJXJ;>>(!6n2&QuVrJ?2Z7pBxk zCj2D)LAFYFoDRxMpm%Wq?mb?G+{K*%Q(y>w4ln*R&bC!^4ugFlX^fSwVwXOa>q`ep1p-&h2B_Pv}-dX&Y zEGm8+E>dyEKSnJjE~$sLEe@}lPxX`%oz>S87Wh0Wt%vlrgazKLrWQ4eNBb00pXHc_Q##9Go0K;-6WM(`VXV%eHY}q%&`Cf002ov JPDHLkV1gEOZsh;~ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/other_lockedfolders.png b/TMessagesProj/src/main/res/drawable-mdpi/other_lockedfolders.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed4533bf1ea329b52c55363f4f40b7c2e430e97 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4F%}28J29*~C-V}>aY>EvO!M_+ z&;qhK7#Q0#8CXC{fLIEM85o!sFfuR$X-1IP0w%aD*8*k)8>G;>V#ik?HP_R{F+@VL zwBM2IkOPmav~C5vcomcRSC%TFYNPLRhqyWNY#bJ@eiy@i>PKCU0>|fv{{K|$PxhE{ zE}g=Az0Pm$*&Lsz^N(z4^{<$(xz_Et63a&x_GKlDOnP4Wnyu5kli(0#>ArfhsQV#C zy^G>c56IPpBp<$N9HSO-SY`6d3C0V0n|6x1Kv}*JG1c}12(9DL+?3tN0hkFUINzV4v5W+0H1Wp0VfR*7HCtLyi00!zv z=y)KxG+fMUm`02yUp_{}F&+Z>s4*{bFeU00000 LNkvXXu0mjf;FB!; diff --git a/TMessagesProj/src/main/res/drawable-mdpi/outline_fave.png b/TMessagesProj/src/main/res/drawable-mdpi/outline_fave.png deleted file mode 100644 index 313fff27c3a1ad718006b27dda94a59ddd996b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmV-Y0c|t5s+_7ysAK$j<#$ zcF?NcRliq>n^GTU?J(KmG|-)_40sQG06qf~>6h_OMPNgm%yys|=mMGwXK}DS4p=d=c|={GR);In@q7aYBa<64{7PC2tOkaG$uy@dV4{P- z*C>&NG!eyqAj>Zc*a#d3Mu4e`Z%H@WTw(hG3;}Jx#>D{J0{W=TmK1eQw63IWU5hqY z(g3guXwUfXoGOywLS)<_b&YyXoebOKq-Di?I(!?|J!P3)^J{TEf_v1LF@GB!q~vqD z?Aw@nHRg8~1MDno!k?nXnyQpTva|E*yE6Z-TArtplDjwwtc$xDU*JZH@l5>!?ne^M gLeie6Wi462UuDx`ECFK33;+NC07*qoM6N<$f-WNphyVZp diff --git a/TMessagesProj/src/main/res/drawable-mdpi/outline_pack.png b/TMessagesProj/src/main/res/drawable-mdpi/outline_pack.png deleted file mode 100644 index 28c7f4bd0ff74e8c29128b18fa9e6be37233351d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmV+g0{Z=lP)9uO$vZW(NciIst?Q2S5lc5ku;VxaqE+$9ZA^QHks#)O?NFi zONoS%-U2s)m%zkrT?1Bu%l7>d_zJvtoFT9Qyep;LnkxX3P9(i>H)-pUe&dd$+xEU0 z@Say2k?p|@zvDpGj1(80$Z(`P)1i`Z58S?H*eGuQ42FrrrS9J~i~=X4fHyH4b2~f+ zZUB$F@I0{RH+O@|x!^df;h{rQ>`D zK6Lb}z(ucar@aX;=sOk%a4+3+Z0Msk%GaEh2}M-jRr*6M=GLNiN&CI6dK-Rj4Z*5UWiFE&*bozLI$J47|Jgr!L)|(yK zcsg{P8qRy?9Zzil|LlhAk(EqKj;&w-SDn|{0A65$^8xq;HD$?xrGtR{00000NkvXX Hu0mjf%#iNr diff --git a/TMessagesProj/src/main/res/drawable-mdpi/outline_send.png b/TMessagesProj/src/main/res/drawable-mdpi/outline_send.png deleted file mode 100644 index f02c80c527a77e8e4841cc542be0963a6a5faa1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmV-S0<-;zP)=d=LIRrx#EC0kov=KB|Xm4SWN)Z1v!C-5t zLV}`&SgBx)iG`p+LB+&R7DiZ)yS>}Hl=;D9Vc(ni=Iy+hw=8R^m1O;?>0>)^09XVj zfhl026K;|u^(WMA>L>r#GxdbJE)A%i(NOC7K%G?&t2foJ@orYVtZpm{%>#~v^Sv2^ zvU*N^6La(GHMO!7!2RL$WF5m*>M`|Ytoat;O`QO@hO-+v4pyjD^+jgKqiSC}z>+!> z2c_AkO2J3fR{@?=PpPYm0Ml_tT~If-n4?mp;C+B!t4E3et6_M&;A!kpFGX%sJydtL z0_<0RsSnz$yDjQiK!2t+oMqJOG^ri|1HeT3xf>~`F|ZyJlb)sJ!P`{TIR8$CIoed=U{e76~JFcyxsk-xMT-wOLh^=jIKn*pzf z!JY!3a@hS2+X;0?D`kcux)PqF|zb~S^*95d78v0Ct-m1fDSJBos z5DqRj0QCmwL#&%t&!}tj0?Y#rg`-0?MwRFya~V*2XRdE0$62kcVOHY#1tar-9qReB;ntR3!Z0?LM6;{U_05*R<2_vZ`%uUBC!X1^xh!fpOqzCmU(_6Sb_4 a1^flUMk17tGBJJt000016?6ZGF5#N zmmN}j#Qx~myHL33mikp4(G|iZ!_+H5a7OJP`z`9c!nqZ3W_zuKStTLR4;TVW0S*C8 zzztvt@S?)U-oRa8EN~Qf47>!M0q=lUK-({(EaNYz$JM8nt4)gU;p4vi+U zN*&zU!q4SkTsWpmtoo`a1TC*J%n@Pf{lf};V~V)#8lZ;5w9bKT3y*$!fjzZQSB3TmyfRNQP2smqsV&{ zMplk3ogvJVVNZ0RJVwh3u}ehn3Q4ms))&?LvEHBlNz_8Pq2TFTb#qDFh(Q9>CI#DCzi0MJ;3g*B-%@!Y{_X|I9WJw9RC@K|lN_M(E zn)mVV@q5SZs=ryPwN0(rd_C^<|LbPwQj2!h_tn^bUVU{{3G)Tc&>c;WYwXtl`F`+0 z*^QRy56-4vZ*BJT_{%2YZkXrHKIZ`6oW@1$X$$1FHk{agGj*-LgdLOq2bR+po>+$( z+h#72{b+j7_K?|*=5z_Jt~rZL+_e2?U*=lgam{g~RM?fUrM)s0*}LOdAF|GIKA8P< z1#h>*-UJ)*I{l6ASD3qs79DJh(tK4@JB8`*rkAhTIu7rz*mYiXdA#?d;*&Rb?$nL$ zpDTFvFLPASue-bEe7$gzf6kp{*OJp+zNXzaeLXRfeebSq+#8Z!MW>aDzustk=U(}_ z{~zU?>K|^`m~c`#f5B88#ZBVHS~orKKb*1($c`l#Nycr-#0XhS2Sxz2&wQUUY>c~BP=yvIsK56)TK=q zX8La6p0Vq*!?A3S)5?dpKTlk_@qp8;jzfnIxt;WysIxI}o5-Y`zl>gg7#A(m(b1gUc|#-k(5b!? zNo}8!A76JfG`72+{qFU-3d6;bR$pgUpWl1G_}uKz?`jub*#GwubsJhNSB^iIVBN5`?^>9XK^N zom(KhlKZvzi4&R&Z6~aD`{^_P&XF(cSocepZ0f66WL$oK?qc4@-1Uta>-)e zM47%sk)Q)tGU?U}=} zb}r`-J~RGPTOS>N;G)22R4dzS7;mH<-zqjnAOb+$Z? zZ?=nD+w(3wEFM6-hKS?O(jd?VuHYmnDUHx3vIVCg!0PzF( AfB*mh diff --git a/TMessagesProj/src/main/res/drawable-mdpi/payment_email.png b/TMessagesProj/src/main/res/drawable-mdpi/payment_email.png deleted file mode 100644 index 37ad4f77f1ea0b53162bdae9c310138dc78695a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfyvm@#WBQ# z_wJPa{=tDF$8WbCw6HL+RERa5;J~x2d3Nd~DJOQBpW<^AeDsdEh)-Upljn1H&H^W% z84R49yqvNsie-!&13qqVinF^P{_gb4*TxHbyXQQaTz&5Qoa*=0-@}y(SDv-J&dUFg z_00jrnpUne2Q^Acw{Vo4IUN1rn_Rl!v_$cL4L-vB@fAW{!5>6Y>=VWET-hDGn_ty6 z+iG61`wz`+x~`mC zeDYnS?FYe9kyP_qp?Z~oInhh^CVq)~WO~7KSMC>{jcXok-Qaqq@HRKA%p=ze)7zVW z+ssnCIA3J%vS}6kr^2{vTw)hZ@)f9WOI;l~|BiHp_{F$|SNBZ&#P?RT)>c)K{~OrPM7 zj$Ij6o>kFoIgB5fFLeImn4iE|v})np2Hgvpw_6HtZ$GL2GXF7SU3~DTcvc=8UZcIb z;`ME}e=@MmW3r7giv90n{WmxF65F-(fW2Mk58BuK{&Bm2-6hjs+qVku zEn3X@k9W)3w&b>-w!c~@D(Bz(Fn8+#@BJInOeU0P{@8Z($Kh(Ws9CISzs0_abIxrx zHk(k%_i5gfOtEO@xzExw4l=6$Y<_)T%YyOoYtz^^)fqfFpZj*4J7{_NNTZCs&u6w0 zh4p@YJ5O ZoN@27n8T*=krAL!_jL7hS?83{1OSc zl&PMaKLc&%C!f3g_H6CtJC)MimS1PSw|qYD^WMvAXSysBTc`ivcb(L>hg^OM+-@ z!QFXRtFQ8zzkamkZ4Pd@6L@}hacXhf>jZz_a~JI*9m2Pkcl8}&TH_!mcY0PEf27ADHjh2d1&M8Y zj?P(rkFk?&b9~^rOConpZ98UX#aUn9^kjEcSp3AyijLGuqn{s7Za072`G_Y@A^lxt x+QUi7D)n{37x?#HU}lZ@W~1MH?a}-_2l!b%>Q8gLz99mN4Nq4;mvv4FO#n%z%Z2~| diff --git a/TMessagesProj/src/main/res/drawable-mdpi/payment_provider.png b/TMessagesProj/src/main/res/drawable-mdpi/payment_provider.png deleted file mode 100644 index 0e5187d71da0345d707a7efad61a8a5151beba35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftkl!RF~o!S z?UcP<%#I?h)bmpvkB2AhXHsqRfo#SxUs4I%FIcWUmW@GmU&axMum?c{i7-#>P<|EbU zEdHC#_1@fr(|?Fv@P8m#9j8{4ellvV_D{n(TZ4Yt$+YCk_-f4L(O$5TV|vNu$tF?% zT&`Ua*IPc(?`3tpj!E&u35&0*^oBiL%KE+`MRrAcbzY}IRdlxm3-^nyFPuD=%*_6# zbxp41;14biu?u;#-z*Z4%q(ENv&R2r#gzWDwr%FG&fUBfxsF}v|Fifnu75=5G`R;v zoEQDU-MZxS2f=-ZGM|A5|D_GeQo7^XjvEC1ff)68^!1J{+G>*inm sv#z#ze_HVy&XR@vAM{og?>|xTm$%BzIIlrH&jJ(?p00i_>zopr0ND}CdjJ3c diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photo_crop.png b/TMessagesProj/src/main/res/drawable-mdpi/photo_crop.png deleted file mode 100644 index 7a56300ed9a2064343401a8a395c82a4e3141e23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmV-o0iFJdP)<@e--08nfA8-|KlH(G9{`9Ml-iDhFmvz)t>mcJ)C9ockU40e=J59 iy8rJhId}O8GeiFI&ogsNFE|4YX7F_Nb6Mw<&;$UyTr+wA diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photo_paint.png b/TMessagesProj/src/main/res/drawable-mdpi/photo_paint.png deleted file mode 100644 index cdcd6c705e68e8f715c5966a12c453ca0b22be5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|)JP)2=B1$?!=OaR*QTPZVL?XuXu0670;?6D&agt}x?AbZ*oINwUg~Gql0q0yT%)mJu z!oZI;2C*7g0oegu#3ScMzr6@Ts@%lq85f}mj^GhWxfdb%lemfTY#L-87R%&GOt&Sj z+yo>F*P#8Vw|KB8sgn2=bJU)mU{RZxLA=j$g8lCkr{Z>)ghki~nQud_=izNZXab(3 zh&{i#_`1NgPJPAewB!=+jisF1!*@b8w89$5bjI_ECzWj>a0AWh6TrQ`(p}ISWv@ID zSG5nYoEEn+@iCCyK~T?&mYn#0d;{!!h}&&dG8m4cXx)MpJ=K(97F4~y!Zu$L@g=e4vIhn@@lwce--~_awj^-3JW)}Pt39qomU}ntg2ZjIu002ovPDHLkV1f&5 B%vS&a diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photo_paint_text.png b/TMessagesProj/src/main/res/drawable-mdpi/photo_paint_text.png deleted file mode 100644 index 69c561d8566382020dfdffaaeac9764e1a01d309..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmV+x0_pvUP)Y5QgtGh?R6#O8@!or--yWC#xE_;~7SUB)xZ)f(Mxt(1up7-C)cWodDf;|3t z7<0uPzBhbVzVFu@v6hR(IjBGbx;1H}&9yRmUSdLE3$~#O`|tpr*c6L4LD~RzA!$_3 z!v|DhI2rwUCQYbS4z)OGIM+b7nv8Tllh$M)msQ1EG#)yiY)~VDL56|2FZSHzV83E> ztF^fjXK>HLbI^@27A8MsG7IYMC#cvE$ZlD)94jKNawwNE-#)lT#7cGmGoalr!ZX}} z><%_4&@?m0k10T+Nn#72x4b}5Pp@T-4qh!dCcd7IYtEVx2EByxUb60y(FDo_trd(j z^+RwJ>Ts9}MN?u0uvS(e>+mAcZy)R}(m}3(T4ej%OKxdPU|Q5w0`{#Iy~9yA!l*?E zOK=8r840vIk$GdJ4RdH0#%zl;nT93E`hqry72y@KOj_lLE<(J(OQ@P~sl&T|?TW>G zR%>&$LTv3%K6cR#c*7b+_9(dnCp`D^xh|ruC>LY9k+koBIL>boh4Pf||6gYNp8kR7 Y8yBm1{yuNNMgRZ+07*qoM6N<$f~B47XaE2J diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photo_sticker.png b/TMessagesProj/src/main/res/drawable-mdpi/photo_sticker.png deleted file mode 100644 index 0e5b498cd1226b9dc883475be4c22c080784da49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)|_P{6S-19T-z9)3^)f;ToD1<*KHua!7OqAz_)MZg>OV;27%3 zJ%Uf+Ic!6otNDSBh2|Of0#{Ioqm5V8jD%YC$W&F}%z-ZTbycuQhiXHQoR#=V{W!H{ zUoCh8ty=X^uSEQSw&2sLxT#pJ^-B2x#n82Uo6 z$OHHA3F{6^C}HS=3OvGSIH`4LE5f0VnvAkt$$9-E9%94ZDD6k!I2KvjVQDD%t0`SO$LPwES+h$u>!wNdZ@0000N^zz2@^E|s=J4y1dEz7bE@F)&##7rm=8DFDr z35Y9g)b`*1t@D*Ze+wPX5EL2Sh;|#M+^{C_W7|w4JzL0f7s! z38GeD0?)>0@PYYSfwXe-H?Sq0xI`p>THOQv$5lNs(^mDl*d@*r5Km_8?KbF(C+i%o zu3Nz(r6~~q*!(kK(iK#8fJ9}@0VVTd^7~Nmg|b@FE!eVSJPaey0@{+YN7B6q)>}!}7JW0mf?v(gU};Tn vOx?A~-G9NDsNbToOkCidGJT%Kf7HGKl9ov1@*0y000000NkvXXu0mjfgMh{f diff --git a/TMessagesProj/src/main/res/drawable-mdpi/place_x.png b/TMessagesProj/src/main/res/drawable-mdpi/place_x.png deleted file mode 100755 index 3ef4234c4974809ba04dc3de76ca667996d31b21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh0wlLOK8*rW<(@8%Ar-f3C!FMMP!M6QXD+(1 z`PQUut5_wbXE0}2C$lJZpSEWF{7F(E%BslI$h3##iNXCoI2UI9M>o-4!YHQ zRLg1Rd#RjjhFrglPc!d4bYiOGy-%EXZ*=~A?WVmX`1%2ZDv469`o~^3=6%Y$rdBUs Z&(y%N)@gGZlz00+>Y7%YbF#AXo#n?u;0!r&kbPGSEp&>I+fgnkzgY0^Qw<|F^6O;jDgdwIGL zZEI`oJVJC;8kKJTBYO6VyfPAbyQ`CBeiLn5 z#hZR2`rZ^U2 zt#XrCIcppYBW4ahE%GO^@abTdh8UUVE-^LA(}TVMH?RUwy<5Yj00000NkvXXu0mjf D`+;kE diff --git a/TMessagesProj/src/main/res/drawable-mdpi/profile_admin.png b/TMessagesProj/src/main/res/drawable-mdpi/profile_admin.png deleted file mode 100644 index db681a4a112d38d1030bd32170f3d4edd3450843..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 416 zcmV;R0bl-!P)v>x+IEod%ReEG7}AvG5d$jjW;w)4uY59&_AE_w;iBCb$~T(c%s#DE!J4W^dZ=)JN+s)&2&Nj*_eHl77U5l2%`?8E6K5i6`q z60rj}Qcs*iM^XRSx9U$XBK5Atx6Jcz;n!?m|9}cgxgy4n^^6PN3LkffAa&Qnq-QPK=CI40000< KMNUMnLSTZ}DY>oy diff --git a/TMessagesProj/src/main/res/drawable-mdpi/profile_audio.png b/TMessagesProj/src/main/res/drawable-mdpi/profile_audio.png deleted file mode 100644 index 6df6f65f5770ba4bbce78b27c97c4dfd470cf167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmV-80muG{P)#gJcW?XTChkFY%J_-?QC)gkD#d7N3ckdH1Q5rYLh}R;KnDc8r?P7 z+Sz7#{J%4QU@Mh>FWSsVcvr%Vwn;ul009&F^qCL1Pn^E4Sj64H~W zOD(50x-S}%>LYz>n$zhQ)keA!$(LO2Y;wBcjw^Y@RW)SK3{(-Ua=JoLmA5&W9$Lz1 z{1_VVo8Dn*G%WQF8EfN6YuylYVOSb^$c0!n*qn@OJz@XtuYUk3TqR58O4;fF0000< KMNUMnLSTX}%!6A1 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/profile_ban.png b/TMessagesProj/src/main/res/drawable-mdpi/profile_ban.png deleted file mode 100644 index b65d3c2bbb49a7857e927891ad856df4692be1ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_#IP)-V}ySHAqz8C#VpI#s;w=8lo<}KRSmIHVPqq0imKV zP&5R&RGawco;b04?>((CdY=6ET(xY=Z)<8Un|`{U z3IiVEy`k)7)EZXYbl#9-M%?!aZwzODPHNiJv8}D+i@OfyZ=5#anO9zzcEv#cxnE!7 VDapQjuR#C+002ovPDHLkV1k_gqC@}y diff --git a/TMessagesProj/src/main/res/drawable-mdpi/profile_file.png b/TMessagesProj/src/main/res/drawable-mdpi/profile_file.png deleted file mode 100644 index 8acf6988103166a953a35ab7158c0b632c62a7fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+i#Ar-f-PPXPc6d>RlpFh(p zC|V=pN9LWTvUdkcGZw#7VPOhPl0Lz8r)g=cW6lwWu0MSeDl?Wp%oKlaW*p;Zd`H`* zmR)vs!;XLhto?bW8(3}1TKR0Axvb~nDD?g=6Cn_)lrm#!HLJwA3?j5rJSK3>!z~jgs^sbr*68KefzKVCqrKOcVU;4fnH+pboFyt=akR{ E06w2!;Q#;t diff --git a/TMessagesProj/src/main/res/drawable-mdpi/profile_info.png b/TMessagesProj/src/main/res/drawable-mdpi/profile_info.png deleted file mode 100755 index 0f4c0edfa1dfa18e3e2c4c1601288e95b0f3ae3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxl;P)w=`4-q6+2pA%Yn=BOdFbN3WLD8d#cmQQkui)S2%W`I%VKxEZu8LRP z^{QWo@Zu5~Sc^S8#8&#Evi2`$&vo)y+*~yW8$)$9H4P(MFjLJ7=D7HNVk?HOnB~oI z@m6?u+ZCPcsAtlrLkf*>R7;2fHknhif{HDA39-hoH108$35-!M6*O^3;DeOIoTU&% zxc@^CqfshoVV}SiMx}x&776TQt5Oo{4&AiFQ#RNq!31$;N}srD7e@N-hL2}@hO1%P zSO_X6Zul))?-|${Yl=i#rgq?`V7)^KLB}!of#RH*jHIS#>EP~eZ=sug&{xzSd&WW7 T|Jox)00000NkvXXu0mjf8TE*z diff --git a/TMessagesProj/src/main/res/drawable-mdpi/profile_link.png b/TMessagesProj/src/main/res/drawable-mdpi/profile_link.png deleted file mode 100644 index 49b86e40251e337a22269d4e948e533cb04a3c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmV+i0r>ujP)>I}!GjNH~Y}v6Rl1L_aC0DMb1bEDtnSQv!Jpxk6 zFQ4T;B^BYz_NWfQ_L?3Z^zZkulzFVlz_;j)q>?H+>Z6mZ>JU=Q8j? z-g~6{pQYEYrTczsX}?v3yNPh~kHXDc!VNeL+fSj%I>(oxQJv!(7alAo7|{(!5S0J` N002ovPDHLkV1k@nYX$%S diff --git a/TMessagesProj/src/main/res/drawable-mdpi/profile_photos.png b/TMessagesProj/src/main/res/drawable-mdpi/profile_photos.png deleted file mode 100644 index 6662b6867b7ca5f1b6a6627254c8b31b68d1bd6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0$IP)W>7FnDl>O(W`57ih+u{eG@_mW<0p}?$VS$K}}Exxp8C8FmDMbg1z5h$1=99;lLJF zgb-|E-L75?o?YoVR}pN0qpt!PZau}Ig&WhKJ6Uz8`VFcs(E8co(L&KB%)0XugO0rP oaK}0^I34zRCvxo}KF}z|2gXWgU+P0h8~^|S07*qoM6N<$f){mn;{X5v diff --git a/TMessagesProj/src/main/res/drawable-mdpi/profile_voice.png b/TMessagesProj/src/main/res/drawable-mdpi/profile_voice.png deleted file mode 100644 index 66f26b24576f7047818e823febc57738a264f9b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmV+^0oMMBP)u>?uh6om;=mG|pAc&Pq&?b(h`lT@gVWKll z@K*0U?*HK4b6yB{C~dL5FR{lm?JZj*7T9SO12epb5P~<%i`uIW7MWT&sNM!5Cvm1? zCl5uy(KJ(2N74O(vNQPbbZtwXedYlMA%tL__rZWXu(lJ0pnY*V!A?5_k*#$e=%Sxx zDV6?YNgv%jP?4Z_Q8l&8sfR@6ud$n!80%y=9b+stuWhPf1Xd;{R$!!Y+ld!L8?Z6- vTJ8%qq|$mAoW{^10fYnenF*wvM0f{p* zGKS!g$1V&sSQ3c00`YGkCI;L9DsshU8de_w6>kM9HU{EeAbx>OBa#>!kevv``arA# z^vz2oIZP(daAqL>3B;wCve-p{Y88MO1cK02FrfE98fpM!UYL1@ae%9LQe8qoEivISIt@qqYvz+a%;Wgy-Nv;ZTB@aP+rqEiR} Y06fOKwy-Up2LJ#707*qoM6N<$f&hYsssI20 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_files.png b/TMessagesProj/src/main/res/drawable-mdpi/search_files.png deleted file mode 100644 index a72682d4a0e62500ee0e74212421e54c045a139f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmV-{0e=38P)D%07Pq7oC*cgh+IIC)Mm!0cWZ?drayVkh|=aZ{D f(ZREQToc#;SX1N_t};nN00000NkvXXu0mjf13IVS diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_gif.png b/TMessagesProj/src/main/res/drawable-mdpi/search_gif.png deleted file mode 100755 index 818bd40909369429bbeb60238aa266ee6c268b15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmV;d0aN~oP)P000;W1ONa4rM#X^0004VNklKu902gYqLir}wj881r7XK>oG4Cq*s{{%)ecCBxhdO4%F0SPzB$-|5Jj@nYq_~d zX;F5Oa*#!qt(=~>?Wec*zVCbc_NMpyMI&8Cz3~%&e00~b_#d4fSdsTuZ#1XZcU2Gd z+ZAD_BW|0;UzcJdJ(lpwzQ}Q3)#X^v4qxyjnlg;C!_mks%*3Wl;ay~G_ZugoPDyv< zc#q?eFo4&QLPb$~G%$|INSMG_q}2R!#nz~E2(yv!7{ig0nbQ|*bYLM8o}v&bnK^y2 zMmv@wp@@-4sabT*wy3iopCjQSo<#~3MIF(=dAx{(-B!>UbxOJ;M+p}q<0YnIQ_f;R zTVxzi#+hhJmme63^;}hTFE()0S5-G6&zMz|^hZjMM>01f&!Bl#-^_S!+9y?I)0WkY zN1isLKFG|Qv^PS*vYLr##vUgPIpv@&QD;a+&7EkK)5>bDN2?4fV^twqXTYL!5&r-* WGO0-eX_4~nDhIMAMAyps)ALq=u&F;*c34-3}x*dq3Xc_A8 z3|FuL#g2c3B13Qt8n>_m2k;77tkTgU6gY(+ScA|MLm!1hXu`0uwW|MF+ZK0#zKYL1W#r=a`?s8%!9xR}xeOjrhROeZ>dx z9lwkNT-mts0w-|)uC#lO*;As*&AK71HaKcaQ2OV_9g%T002ovPDHLk FV1iqj$p-)c diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_media.png b/TMessagesProj/src/main/res/drawable-mdpi/search_media.png deleted file mode 100644 index 2de3f937ce78f64458e394cae3ac1cdc2f808b23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmV;N0b~A&P)(G%&^6B#xltZV2%Y(0AcTYcjWo26cFY?YTgNBe`Zz-A#+T0=|r; z!$~GeOqEQo+%_;$t$|u(QE^Qh@Iv#@g)2xzjW2RUY(9ny*qIf<&S5vehjXYx=(80T zp-_?7EyxK^@yo1fqxD$}a0WGEJ=WhnBsZW5A8-dJFoqj=fj;cbs$o}Q3J)MRi+)JD z2Pr7UQj*PD0%Pl7s9^b|<*mc2)8?Ik}OePAc^ zwT@wGYnJ_qEnohtrTv(H{<8}-khWZPX}@dtMjL4)wiI9ziP>6_5qY;IyXmsle+{2a{QK*y}ozewt z!cC||6v&pgprJu_MUZ7YubtUU=A7Y#()p4n=lglzZ#J{%luAVuH(-nzfh{Up;v(hJi}5r|FOn&1P?G36EmBD zTeyV&m@d^vybOw3Y8W)otbZwusRpBXiDAc@#^b8)1l=fnz;2edFRMv!7H*OxxsS|y zZ8R;4E12#zy=1`4{dAb(gy=Utq3-ANmFo=T;8t`B8Us z{~5a?X-;4PHeeAZ!G&`5G?PZ!%=qqrHrH~Ft7)CS*5ysBX=iSy>4f22cbfmb?rP;p zMeKkEN`0xDJlCx2&2ziFYBd#R^5hFlWjF-ANgX%{o$A?{G}4wsO;P`o8~6m0gci`@ S4%glQ0000X!LBn5916Yk(3J@9eP{qvubdvjB%?Bm~`fXV$rYwZc%mh;bz zF)z8jNgu<9p!jg89wr-e3=HaP8gcFYsyB+YS6(Zf8FUMi;s9xIU(}1w)uIr1uA#jJ zbZL!%{zJ;y;E9eNZ(H}BuI}+X^;#?^ZxO@v1<$aCJ2&Wtd<5s*rj^smCpKxq7}gHe z&GHi?oeVW1vK*9uH8V{As1I#82Jg4jukZ*D9Mcy$7`|a=k>R=_Bj~~m7T^bI<5TE> ze)I*KEXn!71|xU}Z4eBtIgef>KWJ)!;xg4G&&Fx(S<1Uzr(pn}aJUsCg*?tXh*)-I o8V*3`n-%h^C(FDy{rL%e11~1Y0lEEV2mk;807*qoM6N<$f=4{4$p8QV diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_voice.png b/TMessagesProj/src/main/res/drawable-mdpi/search_voice.png deleted file mode 100644 index f7c064bcf2d15832c05980c0ede13d5477a0b3ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmV;50d@X~P)6D>S|osE#f*jZSpMRElzkC51;2zUc)EyNQD zdIjx8Y~mFRRyHaY5yJTWmU+ttSu?XKgpdax@9q2Zo6Tf)DwTyz*@0wAJu5rs+B_Wj z#BGu!cUf`P0P!x!2JoCl&UI$hP3IA-!55sHpkkk^S+2B4Xd7gECZagaP_tZ-uND<@ z`MQt4b2*ExmMcw$Aqz}SL_W>w0{nrSaOQVoN1lbP!c}%Id z)QB}=7Fc2615P!B?||&rheqxKhQZ?2$j~KxLi%R-He7jhZD`?r7(?IYf;~fPpljh3 zjv>3Zh?hXW>K*Q(+-YQR1Fk_Pu?KhrT^)LJZO?k}TNgDVvI{+Uf;TvUW>J6XJfb(? oVg#0Bn&}2g1ZNUvC0EC;$Ke07*qoM6N<$f=XVd@Bjb+ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_web.png b/TMessagesProj/src/main/res/drawable-mdpi/search_web.png deleted file mode 100755 index 90466e70ee0b6f49147109114a4861612d0eabf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmV<40U`d0P)P000;W1ONa4rM#X^0004{NkltaeaS4*slGC>-T5#I=y4bX;!VC>TU*X_W|5cutAG9JB@mRs-um7Ek2{9v#v4$j?~60y~eF3{|}&Q*T3Ou zOj*%%$_YHTBnw)6!TyK{r@(ZCG4L|&d5nD-(u=9o|7|QsxHRV?B8=c_hMdL7BFGLr z%aCgrO8qv8#K8#N5{bSvUyDx}auWloU#4BV)(FezTttLb_?{sba6I+rz}pBH!J9PS zh<6z>gxibEGKf-!tTT%>4UzO^_mSjRbqA9X5jHC-+8d!$QPJ**2#4@hTOQf!CkC7B zzC#(uYU2c4X#n&ngERG|6Mo@=LN4oaJ$E^y^-#eKnDNM6CDWkd-u&T>)kCd@y~w@$ z(PbSGimGXHzVW#0_2}29%hLI*UnPacb4ReS9GHhr#{Wt|1;3juqcPO$o5K-*0Q7~{ UiBENcmH+?%07*qoM6N<$f}OSI1ONa4 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/sim_new.png b/TMessagesProj/src/main/res/drawable-mdpi/sim_new.png deleted file mode 100644 index d3aa409d02c7b67d4e16e2497217e9d453943572..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1842 zcmV-22hI42P)m*wNhqk7APO?bw3|Ix*hR7njtyGGBxPZAXTYonp_@pl)9;(+4EyXkYn`*#S^J!I zX8s@iJ!`Ma_kH`n{%cy648%0^ z_XW7FwP&Sh)0P3mwk@WD9lnlIziQf&tP^hy1Bh&eLx5#fKOFnadSW}2zm8^Ld5g1u zoS&2@KzFRT5_Bvkr-q+1+He}HiTMJeo*5&y1RaA#`Dm7byK(RaqCTNnM-p_i3~GEV z25!dD4n%!QGY%!_X4uo%*bH2O!$CwHy!4TvV^4|vHOoLB4u%l*;t)p?bO>u2Q#Jz& z2=FnYzNly*3A!j_>fb5`P9xAqi29l$0VU`nY^iUn890f6?;z^i8x1T$H_DXywTppS z1bz)s-`7Y25_BUhsZYBZFr7YwsMpm?M1rozklIsXU;t6yKJ{3`o#EcGT8!3`E(3+Hq%{c*5MtFC@iT-QC?^ zCz$GCa{3$`h?v_9d@UJ=F0v7cZM!SPya*fyW*>s9T9p*BwpdV)*+%?1W#xnK3xRz( z*JoSGiZ8z&ZAcy(jci=LwpmljKX=0jiyT8WR ztEtsh~ZsuS*5Z=KhKVlw*(!7#rQrN6?7%?jTH7EYTG+} zX{EBmKBN3@4hcHVSuZN+%31VN_ykeE4KArvCiJ<3T>h<*kKH$XR-?Xfl?0um3?a+| zPmW_=uDR-vK0V-mumN~~>rj!t1Q{B~k*a`=AJ`VlPl@>!xVZ6Q<@RJ9{v5CuMtM7( ziXY33K25zN0Q(w!#Rh#e(CL9nM?Q~$GhO|Q^v(KU++5HHt_Q2YBj9PU71-5y1RMuG zdp_&aRmOqyIkam`8TI6`(sMH2=g@lfJ$Xhh$W&#^nd*sRwtY6Wc4PDNL~C`SNZ*N( zT)FHKo?+iaWv0Ny+Z=8KwvKk$J@k7JUw^qe6sgD8Qu;px?CVikv!%mY;?#Uf5jrj# zpk7&mp3Kk&s%)~%tn9N*G~NYF%=SXWmI^K_(zlDrKOaZuf>Se?n<-c7=TPUnp|UmW zKrAui%gp$>bF4J^pZBSHb8_`qP3Sm>yUEoObdD1yel=ox-Kr_?$u(CU(!P_vc2zbE zaa{AtWP^(I#phWJ83wj#C)7;H8^L;F{}k%PF)n{)&UP!KE$iP~mY{3Ug8;lj&JLlk zEinvrtw3M9kqZ^`QO3Rq9wpwiyU~)M>&mb#9hL+{H6h!w#)SMs!1y9VY_06FgRTbZ zL&tesRyRq|)qJFKbWVXpOvsyo3Hkd1|VijiDv@I#x`q-|tla}K!1`x{vP|NHuM{NQ=v4;g6ABFFRUaZh>GjQ3h zt|S=H&^Y?(#fpo>4y<38%lSCRuK>Fuf0Ju#*J1w3oXw+*wyb||SxXKtJ#A?;(f$ce z1g`=Uvc0rP$?VN#Y>VPkf{r~cP5MK;wl~AB(laRk(xkg+!^x?KeC&Saq&vp;OVmCv2vKtvX7&1}nz+d#0GEguQmSdbNAz8l7cPo!5f7loris)!FC(&N6eMYQITBBjTjIEVn7Ut0Wly3#DEwO g17bi7OeqHb156MQgm1%&#EP)es#Z{Q3RP z@AJO%+>}(LYy$QN)=K$>&i7y|BE-j(+l2rGco6mk zmRI={ebXR{VU&@s3DPGR>k1Ky0gEZxj*ceK-Y&hlNcEcb(m(@dXKBvgM89P7%5LFNCuS?}xeBVLa!T_-{ zr6LJHRHrSXbKUf)$lMvby$DohGaV>(X{Az`5Fgm@#%3LCeQn#1Z70liIgUA8avg;J zBOm|~pNCz5El|@%-8q=+a#!La$P$>Ge)OvI;4ulLCIA6Fhe?@)J%-(e9fMV1%VDkF z8N`s(Lv7R#Y7!8cmgp9x_HW*fj0sav^UfYW=@d`GX zW2`Rt+5}scqffeuoj{WtC2~9bh)YJ|A0}~Z<$%jM(04!tY$`&VQ!&>uN}MM1prGrp zxV00o2x;6tGT&Cr!}LsvOp$`l7k68Gb9GTD=gcz&qUwX`{?Fn4nNFG=jFE?&)FOWR zl(j;xAd$c*!>IM?}DtpjCuAF{^!A zInLW(E3w(PjS2V?bQ>e!)IuWQOVAGt&_)gQ_3EtS>f^bMjDU|DD;;=zv)Q?_7JJrl zT4$_`f`G4Y=qO+^$>Irk`G&?a+fk&tQF_!1bhiPde8*mhk!3Ze>J3IsyB3JH3`@W_&SG{XD_yB zrt(5l$0`!YOu&nvv63-{8H%xxfKviq1f6x+F6%g_#OOR+0uY?3j3l#0C;4p@U71Su zQ};0-)j0GU(K)Zx@p)(!Y{199E(%S{bEf(_a#OphzCMoIND257^tYV(=It-%>Cs(L z1Y8MPeOu9>A;D(LcBXdKpBm2)j@6+PaCK4G@BltmIR#B!BK**?$c=j-Z}L%^12%F8MJl%If0 zK?@xb+llgHVg_X)z<;XC@=0-?sR&TesW7oqSqMRHHxyeKMD=nU$TH4yBsT+BiZmx{su4A*imF2(ewrqE{M!>dgS9VAu=6arG&xP|R0TKv}z(2-wuLgxhmCyhH002ov JPDHLkV1oEVlnnp? diff --git a/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_activities.png b/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_activities.png deleted file mode 100644 index 7172d85625549c8f87f5a6a377d69ea97d189deb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmV-Q0k!^#P)Y?smdfk>$SMq+dII1<@c)L7fQ6SVgq cKG1)OH+X_dftF=k>Hq)$07*qoM6N<$f*}ivwg3PC diff --git a/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_cat.png b/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_cat.png deleted file mode 100644 index f762c168acb1f3d7a082c4fca1a6872f7058c33a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmV;v0YUzWP)J21rdHcU$zeGlLJ76P z!5Y1p{HPuL*qR@yZG}F1&wK5u{Q>g%CDpPqjM=!NDYOQdEkC#S&N-XqE%79 z`Xo`WPf=@<=rN%&RaW?=+tNfArZp#tX4BY}Xmim-s%&xrGkOxOiuzNbU(s^&J@LbL z2eqZdv{B#ORhJ|RiH#n)X<4F>BwCD^G;TO0)+J8)>b%yJ+2XBXD^sS^SyT3C)}BAC z_7p#@NQDLJQ(>QyJ`Jg|Nv|G1+_70hYG`r5m=BJ-WMTfM%R9Vw)d`0jcELkaxS>6B o)1*tUA(LiI8FSB38}hIF4YRC9J7MF@u>b%707*qoM6N<$f-ij0-~a#s diff --git a/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_flags.png b/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_flags.png deleted file mode 100644 index 688fdaea8cf8963be13c2e69b357f325ab3df35f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmVdh?{^+_6~Mtz_2@ sd9i|DMq{MsPg(l$O8W&9&!WSx50R<4)a3-9?f?J)07*qoM6N<$f&jB?ApigX diff --git a/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_food.png b/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_food.png deleted file mode 100644 index 86a8b10a577565375400cfbaae2ed3eaf65aaa1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj)XP)EMsal6 zIQet@aARo2O4uHK#d^2BuN`@w{44hAPwaBe4X3g`M7DdZ~2W5z4=0^QEP<&0000>U;aK`;#_21O3W zCt?y$uj=>ZAF$)h+^bh}XLjUQMk)&vLqih_m680&F)nP$CtEIXEVb-mEMFO8PinaI zppdT=9$ZQdkH+$yu}7()GLXc!4M}X+mc&3MH9RRr%hbI?hwe?aMCnOtxOS%yyRK9! zS9V3=&b8FAk5lIk(i71~$Dpv2NXoH=EKx%LFScOtj?Bdj~0U1^Z%B R)4Kow002ovPDHLkV1mZNh3)_V diff --git a/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_other.png b/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_other.png deleted file mode 100644 index e8dd1e699eaf6f915324680b399a60bd04ad77d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmV-r0h<1aP)Mk*Z{8mC+=L#c^45Uqx-^e%>VT*0xnktU2YO1OTAz2g8GAHI zi$F^RpG)9@K)>oQO$WGye}PEnH8PrphqE%k;eeU}L?uA!!P)>F?nF4G#|F-?hhq_1 zHgLh5N5;Ic&L(dps#iVM5)VD#gNi=a*-_Q4Us_z;Idh&E^Q;wy%L+pgPKp<&(V)Y< z;lUT-su+!bhtJb^cMHK@sH^eztOlBz4Ky_xXqCn{Rybky-BbAb00000NkvXXu0mjf DTxp*y diff --git a/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_question.png b/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_question.png deleted file mode 100644 index 863f04711de33bd38c406946514dfb63c053687b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge8NP)DDr-dxG{vJ$8;@zh0?GEfj0uQ{2pIpeqJMI}0a~{ajJMvG QH2?qr07*qoM6N<$f}Yi#k^lez diff --git a/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_recent.png b/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_recent.png deleted file mode 100644 index 5f7bd69b2a3bc85733d91445801368abad2982f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmV-40n7f0P)6`n`JwFg1MrGy@O;}yh1Xb?WJ8rfNG6E`}Se!KH$ zcXs|M6n_81#pggw%mE)aKe<7~jer3j9s>eyMA%vBEiSC(Ha2T6w9?Wot_&$ARH2gm z6&Z5HGSf@!2sIuv)+l60NeUdGuJM9}Ms>iEf(e1(88g8F6Dc^-Hw06`eU4HP;|ZR# zq^hEdPt zk{>f!&_vly!;Ft^?yKAFalNngocb=F?{m)io^zgi&%=^+WNMCXbx6IVepVOMMRiua zuMVp#^0?Hh^dWn>1Gofi0&W50z`NiE^aBThCh#6O2~4yCtE#H+E2-jetaM!6SkqYx z1L}2u+fZExbpl&s@(YE;InG3pUH=jYGoMl)bdbD-G4+GGvLtXMRO{gFi`=x@mGHsmOPaGg(^vycXWSUD z9C(^=FMwCTUEpWJ&j7up4(4KY`FxkP$?aEvq&d4XjagtIR}NZ`AMV@x-scb)!oH zVXjZq$JuQAV&doOOLbJ;lKF&%_*(5L2?R9MdG&I31WPy{tKZ(vE(+KiPt+rITOn~H zUd)BKAUj&u4d5cMGp^#WuHVL(a9R!kdw^$gT~Gc=+Qzz0aY(%y7uj6IjCw;os#c{R d&XSc4_yt*Y93Efq3#kAA002ovPDHLkV1g=U{iOf^ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_travel.png b/TMessagesProj/src/main/res/drawable-mdpi/smiles_panel_travel.png deleted file mode 100644 index 115eab2227905ba1b8f910020cdc324403593a45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 zcmV-?0fYXDP)wxx>+LRDFT*S2x<2T1nV@4u+6@JASeh)8jA#* zSZL)!vNNA#H*w?skXF2>n|nU)nYoM*|Ej3aN8v>Tk8F`(&+^1Gd#qDhP>~8<9>~TJ zj)4lvli?%|^tdA}>@B^89(k%<;NVvX_jCIyL(W;UC3QugTo6fPf{DOlKrISVV}OOAiOX6D z=w$c;Ix(OFxMa}r&_bZTbb`qw1iWb^A!Zq)$co=H7bi#z|8N&0_DTk2zh@xlKmlkV zWLdf@whIOC6cIFlLIC7&7-6e{{E+*NklxT(6AvB?%!EObNFc>_*d^vgF$V>P9a2FEO}v!BtcYP< z3_FB}(V;g}f)w=dR05&0FvLm^gG6Ef_rBPFPu`YU5Pn}C2}^8o)D?GK)R%|TWxf5r zb5FzfjvDfndsgM|bm+Cqm|Gftb;7HvDXF;ONM`efA2dw(+HPyj%`850IWu_+@9Wc@ zf8=Ei%hTo$hw?8hRTxa0JGSKkp7XJ4N-p>;ZN7CfEf%E3=Qy5{ciqyN`@HQp^OD5t ze)dvIw)(|zN}jSKZJx#2Br%GUX|XURt8Mk7-rQ%t+x8?L^Ry2=pBZd$9)$wuZOAlV z`X*7)nOO{II&HIV-8MU|X&_T<_ov4b6;+GVVueW~NusKnBt}eHk;F>8kR(2J+dBpw zw#Emp>r4`3#*##*>pn@M!%vPRi6_11n!;5pU2`DOrN_8&J-QMH+{hH8E~UjBJvuB> z7)aC=nwkpr#DK|6@ruH-%wWC=yAqoWs;e8cDe;<#O!0(5e`Ziob2cS4wUnGSo@vfG zV@{%5pF`^2v=RMDV#rXE=*N~!v(a5woiU-|N2Asyj$zosB(cCSj-|~SBfhXxua1;d v9Mtf;nwp!M4yxq8SY@wMPTA*~{6BvINlca0)-#5N00000NkvXXu0mjf^J@cf diff --git a/TMessagesProj/src/main/res/drawable-mdpi/stats_zoom.png b/TMessagesProj/src/main/res/drawable-mdpi/stats_zoom.png deleted file mode 100644 index 4725f19cec6c3fa358573107c20ebc6907ab7674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmV;%0XhDOP)Na}pMaz!`T$mqcd(Io2(gk_vh^lb-E`3v z8}YBHShGb^G*w~zzPct?X6AM>W5<{La_>FoeCKp-X6kwW8gT>uh`bjB!8kQ#n1lg5 z`o90pnol$?z#cq$xYR0kbb?O06mh*%lpMocaYnY=zg z)u$K665N9Bcqz_Fd=>P;-9ag?#u>v@hXM3q7iv&6tIlsA={jee&61KBSK#}rW&1-{ zoNi3ym^E>T^Un^WUgH`pf|_*U8ctyr^tLU-39R$#D*t=p2Q0t^NX{q8Je9^8a;XVO wLyDQ3B^haIKgn8BU9LDo=AfRd$=@`80z+w+=4;SNOaK4?07*qoM6N<$f|`cKn*aa+ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/stickersclose.png b/TMessagesProj/src/main/res/drawable-mdpi/stickersclose.png deleted file mode 100644 index c6ea80306bc6840e77a326385f72d5ab8697de4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmV7Sj+c1~K^re^@p70tSO|$+TCn3Io@~y@eKCSr~>@5eLH^ zx!&C}T-Z6W64$!ATCt3G$zv>X=+2RrsbuWjsgA8EJo!&2G8c-8p1zrE>L3ygFOrGl zhzOPJ*=A%mB)yn3z|dM0_9gxJqh^E;^~f}hB{Nlonp@eMy-1vxDF#N0PrH%1$Cn?) z#1uDC*mkL|>02_?u;a>lEb=OOh-FmT+RkDXzX+@4??+ZaG5`Po07*qoM6N<$f|U+v Ac>n+a diff --git a/TMessagesProj/src/main/res/drawable-mdpi/stickerset_close.png b/TMessagesProj/src/main/res/drawable-mdpi/stickerset_close.png deleted file mode 100644 index 6bf238da06a4786d4e70db68b6f40ca79299ed96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$0wn*`OvwRKZk{fVAr-euC!FMEP~c$M&bj7d z`_oJ3e_UWOjI28&py%o1~$HQiXrR|8lF83mC a6Jyoi3C#D`y!Zn&k-^i|&t;ucLK6V^oGQ=& diff --git a/TMessagesProj/src/main/res/drawable-mdpi/temp_starlarge.png b/TMessagesProj/src/main/res/drawable-mdpi/temp_starlarge.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7a69f58a365e7717b799a908e9ccbb0816475c GIT binary patch literal 2529 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 Lx&@}$m_Yguw-I27qiAcel7MS vVb+dq3{yHACeGnDn!19=b;{SpT`vTIzEZB#y!Ru+1LP4;S3j3^P6|u!Nd2S@rA>`@6nnTAJ`tX?}f+ zhu)V{w!41RxCP!+%un~ziP)2I(%#90{bH+|i`&mL>x3pTZxH(%-Ems~CXe6>#mMib kljb+X#`~U}%2{LIXnrnLQMYd?Pdv!Cp00i_>zopr0Jz9}4gdfE diff --git a/TMessagesProj/src/main/res/drawable-mdpi/themes_swapcolor.png b/TMessagesProj/src/main/res/drawable-mdpi/themes_swapcolor.png deleted file mode 100644 index cdf3380d502af61ab60b37820d157849f419b891..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEWy*oF~o!S z?9`23%#I?in~$l?WpSJ!A~s1)Gbs8wbC3%Qx2h{wy|2JQCyqLYe~JqtB05_;rW(%r z8Z$G?X!gwIY@Z)|*kt_uuKCToGj*q4GyP=q-l0>MXLo;${lxm_psGxIb^hhu$mW~E=PopDf|$LFY_VVmuRwKESJEHgiwe4}lpvAwbA@(#ni z#%~ATpG|#qCQ9?HuT;9B7_QZ2p#Naeq%<@XJ%W)gbwz+{;Js?E$Ce3-$q*i!EB%Etu98MDA$` zi;p;vyQ-ltp|$Uc+rl5qg=d60$_uxeg}!;QZTq1uY`=80c9pfaaP^$N;5p%6{}b-1 W+l`c-E&SC73Ug0aKbLh*2~7Y4oxhd< diff --git a/TMessagesProj/src/main/res/drawable-mdpi/tip1.png b/TMessagesProj/src/main/res/drawable-mdpi/tip1.png deleted file mode 100644 index 0157499f79be28af20ac62ef72b92b4bcd89ae01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13634 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 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/tip2.png b/TMessagesProj/src/main/res/drawable-mdpi/tip2.png deleted file mode 100755 index 7a3744169b26558a63596afc5ff1f625594d653f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6622 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 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/tip3.png b/TMessagesProj/src/main/res/drawable-mdpi/tip3.png deleted file mode 100644 index c72356f8e15f318b0a287086af8a091a26a45285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9402 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 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/tip4.png b/TMessagesProj/src/main/res/drawable-mdpi/tip4.png deleted file mode 100644 index 7326ad3f6162c990616c959deaa7834c7440dd72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5736 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 SI=g^AV(@hJb6Mw<&;$UkF<>PC diff --git a/TMessagesProj/src/main/res/drawable-mdpi/tool_blur.png b/TMessagesProj/src/main/res/drawable-mdpi/tool_blur.png deleted file mode 100644 index b2550cdf12d5da4a84ad284a1265d1655dd0bbbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmV;;0W$uHP){ z1k>O!C=wI~6ogSe)vEGqeGB zV5NOyDi>i;4X)kfT~?t|ulB2pFrW$-pgOQ&+Gm}SR<-`OSBCW6pq?M5-*Z~u*GioU zx7~m<*2E8~2hvn+Uyq&%tiUroz(U9@&3WWq4*7C@%*UYG&WT<_p3F(clZua+n=pja zVn@C!ugf&^s@K7I1gdpU3Lf!pWC^lClL;8F;L*-yS7nr)=*RR5r9U1UsEo39wspof zU)DGFKY4kSQ8r%O#Q^lPn~OWgs=O{U75jiNQkNQ5*mEGGc z=y1qEE-T%b0lfpfUoJF>gIr0pfyE}(%Qe6rAB2rF=38E=XP-cS)2w+2VXuKPUvt%- zeFArb@=Wxr)pj>fk|DeI42FvMt~`^ze4XHhB;F;z3OUG?L?^f*(qOkOwD-y&`4PAR lxq!F^Ccm!pE~~f12Hq}=*L~SeyT1Sc002ovPDHLkV1m-%b%Fo@ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/tool_curve.png b/TMessagesProj/src/main/res/drawable-mdpi/tool_curve.png deleted file mode 100644 index 4df20572d8113f5bac6d84eb5f4effe813d85ea2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 470 zcmV;{0V)28P)Ag>l?uvx8+0d^z`jb~o7s!O(o3fKn=iJ-CEA zto!IB?jR=Ory%wY9UUoEPF%=ZL~Pdxp5XIPfP0XG7P9L7nnxglHax;)+$3HDv7@-= zZ3Bu(iBd9itZgr zTdW0lItqe%ckbKE`^IQ3_o>);S%(-sthvl0d*5s`z_Eb$y{iLQ}2MQxn=2v z`G|O$cP*bfE%Ua06n0 z9-Z$Yi-v%}PiZ^De&Q4O22P@B6^1~BV*mgE M07*qoM6N<$f{@wB@c;k- diff --git a/TMessagesProj/src/main/res/drawable-mdpi/tool_rotate.png b/TMessagesProj/src/main/res/drawable-mdpi/tool_rotate.png deleted file mode 100644 index 7a92ae0bc76e6a8d2e6bca2d17d0d71796d4ca98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmV+^0@nSBP)do~*<@=GvUbB)86ONt37&U+Y#OJN68 zOp^4#D%`onL)KX2A&4ts3Yz2)YYC)4!g~kgqFa|DaRwDRhajqg6Og!t7I%n6z5;Eg z3AF`~NSQs~9)WJY$NmGnAwIFOL3aRO5O@GbN<%kalp?huh%^LU93(c3*^W`bT!}dF zlOgBmZ`4_5rI6KJ38M}{w+(VlW$LV4!yHI#dBu=~{*0rt?cI>JQ=*@AH8q}wLMuGN z6LfeDEur2FS0G>XfY$P*^!DKmEVI#0F?0xZ-8|ttsBO^6w{j1sS~-)_2n?YX$y{8} z4uZsd#?{DZ>OvWtH*I#cJ%`8GPJ_I_XJ~*00000NkvXXu0mjfJ)`nY diff --git a/TMessagesProj/src/main/res/drawable-mdpi/update.png b/TMessagesProj/src/main/res/drawable-mdpi/update.png deleted file mode 100644 index ba021292bd74a32b0158d704c24b3e2bb4242111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^Q6S900wgCb?CfMve)Ff8MM@E&GN&Wn5G>_vihKMM{A;}>cN_(dG;aS_i1iAci_f}XPQS1 ziVjL~Zc475acgFk`PZ~pSFd!hymDppO5JT0hiu>7X)<52Kyhw-&Etc-6|F+LF{%Cj z;xB~OeO9$MjC%e;tbfxBF1t_4yOT2XGkUkmST(L!DSB~6+G?`%^LrO8FS-c-U4M}` zYhl)(g`a=8tIf(-)CnTed3t|6x(VZfg*w%&RHQVEyiLQ^*KA9_RPZ9{+22KOf(2D) zlIEW{`0UHsH^xN=#6PNiW3_zo%5Y|_E8m_czDeaL4qks5xUE&@;4`BW+a@i(Ay|FW z_KC-~LhaqtWzKGQZ?|>md)fSQj;%-EtD0X&yBdNguDUZ4KP?@j^kE)=P`Lx7mS7OJj}% u3NLk2wKKHRKDjW~RD2ar=Zmg`2K9&7)iSc%RbB(*hr!d;&t;ucLK6Vm`_@?i diff --git a/TMessagesProj/src/main/res/drawable-mdpi/video_copy.png b/TMessagesProj/src/main/res/drawable-mdpi/video_copy.png deleted file mode 100644 index 030f878429555eb50da2281daae1e7c61ae97707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv-!2%?Y#+>^Pq#8V3978H@ot;v4xL~=myvA3^(Z5MF?()Q%K;B7r7np>Oz~TEZMqg)@y(wx&D&b!?z-8} z1lX4OeC$k!>J>QYZqqGid+(!K%+`{2eqZ59|KexQ6kIiFS@or1K={z$yo3slPB>FVdQ&MBb@04;(RPXGV_ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/video_mini_cancel.png b/TMessagesProj/src/main/res/drawable-mdpi/video_mini_cancel.png deleted file mode 100644 index cc10f29921f84a009fdd408f4aaa49e1f9c7c240..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V3y@T|W;X*;0iG_7Ar-f3&lz$x7%(_r+#wRU zXKC>Id-ZYyHq^vz%978H@CI5K;^Z(6yrw2Fd z{n?bJG)^^Y&}3s0Skscz`XV7kV@aI_pIhq@)y>a&{_p)~ufF2V$$EW;Pg|uDPd%Uf Q2xtt0r>mdKI;Vst07F_To&W#< diff --git a/TMessagesProj/src/main/res/drawable-mdpi/voice_muted_large.png b/TMessagesProj/src/main/res/drawable-mdpi/voice_muted_large.png deleted file mode 100644 index 1058cb8a2c3d31e474e6f0e10654b512692a30fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 939 zcmV;c162HpP)L?j~UfPxq$NDy%W#Y7!{6{ew5{rW9E zJy9(9(y!`$^}g@*bb9IP`ro73Y}UXC7z6LYS1l`YVs5y5}{knr+RGJ7H zC?IsJ`ZVK)%4IkLE)LtqBT+wp)UQ+ox9B4^UkzmMj}Ks1Kzd@!eJ z5@hk*HZXA|n=CkbP15s1^-bFKgE`IiZMk1JF+ZRLiiS>;kXM_AalN)4>-Rxjm+?JQ zIHL1ft@e=ooUS>>$Ap8K1-Bq-qWfC$@2hd#kVUtfT~3oP(cR=r!DYj9r8$$3qd`hyaRNcb~Qsd1cdtm$P4dhV8dl{8KhCyno%{HcLCX~? N002ovPDHLkV1iwqtMLE; diff --git a/TMessagesProj/src/main/res/drawable-mdpi/voice_unmuted_large.png b/TMessagesProj/src/main/res/drawable-mdpi/voice_unmuted_large.png deleted file mode 100644 index e3b4c8e38b2deae03123696d510d1ea19914fb05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEEa{HEjtmSN`?>!lvI6-QsS%!O zzP=1vKsE;hV|yk83y{SK#8N=az`(SC2`-|sfEmFCNk;0qOam&B^K@|xiQs%Y!`}OF zg21s}KCV|U9xPE7OqxgS^KeiW6 z+&0d<|77Ym4?el7^2&ERPn#PYYeN;id$YA-^~j(xzM|r z`(4BO&egN-n7h1V`fii4!)Fg?SVOJIyve&+m+#s9{r`G?sqz_NFV(vKO@5Gd;{7+B zZFd@vJZ)H*{r@zto#kO0tA7PM?kGn;5VScV-?#FY!BO)!llN)xKA!#olwv$x{an^L HB{Ts5*wZUZ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/volume_off.png b/TMessagesProj/src/main/res/drawable-mdpi/volume_off.png deleted file mode 100644 index 6d47590c5e564be8d80af4bd35f4eb0f29e61953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)vkhsjV#?N{~(gsT$KP?WDL! z7a>b2SxOfXheC%?oGcVwgwhs=LM3h*K@g!^aZ$uSLs3xFoS*OcUbtM&%cYC-2cP_Y z@Atmn_i~qam$tUU90Jk#(AmSVA(a(H0sgAcG6reuB&euIr&ie#9_okP?K zFO922j(bgvlkmvQzasa;9W%b@)&8?ad>oz`(;E4R6;od^{fFeE>XUP(m$SO28H285 z%NRE`Hj5>whrA0gjwT zh$9@pd;^|B8iozJnq@c-WppWW>w)naDDpvW`t$CrK9!1&o_(_6~X%w zW9Y_PKF>86Xwbj?SK|Kovq74=9^zA=Z=W|5$lu``G`w%r1BKqgielY@Q3jYs;GNvW z0@VILsO<(fso#L&9@I2Z_Ry_J!E;bNhAtV&b_3;;@B$R~A@b>TzXS&TA3OlXYZ!on z2E?S<@EG-u8iZb)tp`Re>OBk}8TZ(gs5>AH3EOM!e&NEbQ#A!&p~SQCnf(9a58w@Z U0d#FTk^lez07*qoM6N<$f&||pqW}N^ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/volume_on.png b/TMessagesProj/src/main/res/drawable-mdpi/volume_on.png deleted file mode 100644 index eef250cf99b16097dfb3a1b8b63a101abc6697f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 625 zcmV-%0*?KOP)?B2pEaYZZhLr@DmOo?XE@o1WkhU0WR7g{Ky7cXYD#1!7iM! zIa=s|XYdB}A8&xP32mjoVv({2tb1_T#^8^E^gNiuIR&3IgR=11FpWKH6Rl+~++dVB z>4_7w%D4dM>|-h5p$({Hi3>N-2G>;pjVc$bgCX6CGj1^j-y2(#@jS0U!Z66*HOUKD zAJS^@&!S0|B5ROl*9p@!!??RH4a^RAv8rcpcpm?BJsVu5V2<4%@)RDvj`p4!sFT!L zG`0Uy@E%!LVAf>o*e2nl-gq;71Kq;6@ETU&J|s*+$uJi_Mc0`74f_xrYwS~yiZ>dk z7nUFc-$B=1S_J!_22B`;8>E~V0;4x-MN~4l1D%%MN*U2nhI1COi_KB8>@-^Z!v!WmOzG!-(mZa00000 LNkvXXu0mjf3l|cl diff --git a/TMessagesProj/src/main/res/drawable-mdpi/wallet_clear.png b/TMessagesProj/src/main/res/drawable-mdpi/wallet_clear.png deleted file mode 100644 index 91d59135e9d85b5c0761bee7930d71f02c9cf5f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@MA8P)YZ*yg75{yyrbe+%i}Ibs!er2?)L5MwnQ|p_yw6 zEonlm78HQ6ozRrJ#`grtEdY@W0TB^fF-5XGTxsH6lC*t05?8(< znpn3P;0N@$Zq5DOkj}PrcUSn#XCIF52!gwyYdG(LK7zNJupU}^s(5E^LMe#wtZv{D zKj>?MSmz%@Qw;G_-Nb>JOMBwK^CFT$h>wF;ATOkebn$kt(M&9;1EZ>Wmw5Y03Fc)5 z(aQc9i3r4ga0kTJvV>#fXvKYwbrbVR`R0pelkre&p)`+NS$X^qi4h=aA9UK{e#xvR umgwLdJh#zFgWT4CN=*}mFLvNJci;=44YGz@_JolD0000E{1`+V>2b2;zzeedpl z?>mFo1D~Deobx=-IrrZ4^WA^}{nGyiQoVtaRNjtrCX=~}?0s+(jDu@n3`mYaE40CW z_@bnwCV9!#XS!_Pj_!}ao!Z|OyU3K|^(OQ8iM$6+Hp0TW?xxKk?g z>trKa`A8H)v4(_w`Xo<7*TG(psPScxxN-UTzV;Fnb5fsl+Je$R6&!dYP-zJ6Q?+@0?E8M&e)Z}J@5`_obQJ{@EN=UH-zI* zwiqP4V35_L&jU$=l_g4X)LUqUrZ|q+%>lhNlanaFLNjPgOSJrc0KwZeX+9GDURBB zB<>p-<_4f{Bxv0}1ykL+C>>i(Udbl2LmvhDik~`VBgjkET3PHAr)|(-4(QrNHI{?% zi*8?Ox!GAtoraBKYzGa6kxrc^`%aL!L+KmxC(TYN`3~6TmbrS=+7hhTYi$~`se0m8Q7yfyNNRnWOh zgyog$;Xq@3CFr*1ttgb8M-RW zngSzEj_|Vu;qnNZ#8qj&K;p)H2TkCjNwFW`Fg=^VJjnHHhgLC3FlTzQ>Hem902})@ z7u1v8a0M(>CM30fUN$BNQACtzU&z`UT;n8jK&ytt9@>_?YkP{lzi;!m2G;QvrjYIc zJ&-#82&`xIX(Baw$P_=dFK2D3xH@DLFG~ls@dS;bKL?V#ECRYti$}m3*8WfdKR{U4 zQxJK>qJFjSq&*{+*xSrye4Il2Wli-hzLERJw@{{Ca+zPJb^k~7S#USJ1kXSPjHpi9Ph3xd7~ zB#q$B52sG&e7n?tiLOh1tn z1~h|yP7Ic3x2@DVf%UtlCaIQ2PtbL2)-P-l{Su*jL2SWZU+PKFZA+bB6x%teA;G7E zhS4ve%Sj;QSAc#h5gTAO1e;o5=quC>1Fc$nLDB|yhV7E%^ET!Np^+uzSHrhZ#YUrZ zyeHJ%ic$~v_LO-4M$&nw71}}bWE@Nab+!~bp#fGFWz!;1uR=%P1c@%`SzkiVl+A*A z(8SfS2#bb`e3yfE?~5xms&Q*SH8!KWH><49__kw6wZcq+$TLuub6;oZ%wo{~ptrmR z+_O<%H(#9iboyr436f4&2ilA->#YTBG?5>KEudjl)tgULeXL2GF93~KQdb9e_%@o{ z`#^VvHaG$LjYmUhENCK^!%)zf|7)mWA|E0xNK!q3waA00WB0=Ypr1~(qh{^WUunfByU#Z|q%rF!)QW>$<}4@C9D7$GASlSxEq=Ud^ba z9qLB};RwIMKk?i~BxgfRB-)yAi@zz)Y!`fizaTv^9<8o6$wUdlk8uq%6UN4o=MjE_ zFT`zmVTWidr7*{3bFcLVX-v7&YKCT|!Flt(ClT{n8;2%hs>g~G0eJT$VqRe9x;I|i4IsWf(^1>B_l!k>d6eq>nnrEwKm-!Uy6>1p)lkr@vfB(8Hn;M>PE?-f49 zuLTO)E3d1(d}AT96%&(rt+8Tj@Sh|E!lvI6m-3o=7$b*(ALD z|KEPGHbd88lm85xY%e}NSQEpxAoJUyRgx+lXBifmCL1@XoPEJIVU6V3hWQT64h$j* zJO1)qVqxhK;1XhUFw6a^)d~4HzUSRNa^>bP0l+XkK DVN6`V diff --git a/TMessagesProj/src/main/res/drawable-mdpi/wallet_send.png b/TMessagesProj/src/main/res/drawable-mdpi/wallet_send.png deleted file mode 100644 index 48cb32287a691f48dbb26b7cea8c2a49a8f18683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-BJzX3_ zECiDiBr*2lq(clD(&hs4EmkkBrZrGg zIcdUcKSo2Y1DOnBXZalF-VZEcwv6CCuuM|oQ~5>H<{uJl6BbDxW(YD(-ocS^AVq<# z@wmg9o^=cw+eB12Sr%j*VR7j6P`JlVl)9NsjoEcWPTVBpj5Z`IE$d;s(e NgQu&X%Q~loCIBW>UPJ%@ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/account_add.png b/TMessagesProj/src/main/res/drawable-xhdpi/account_add.png deleted file mode 100644 index 3fb36136dd73e1eca3a044ad4f94bd09afaa7fc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk~Bp9L@-6Me%Q%R6tFatx`=uwD$Hc&}ajv}X^0-YUAg!LRelF{r5}E*+;}_=u diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/actionbtn_next.png b/TMessagesProj/src/main/res/drawable-xhdpi/actionbtn_next.png deleted file mode 100644 index 3962b1601fcae24dc416fc7e6283e5e71dc8f851..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmV;v0YUzWP)m51PpytTZFK=}x-L|eoPLi~ z5&gKu&r&DiGwpYxI#F{gLij=JihXAxdwc9TCg&1gGr7OaZ;GOLFl%$CodqENl+3re z*>M*u(YA%|~Y;ysk5#JQ8-qkwGhyu>f% zj{ApjWwIu}lkJ_aI)V6m+*|ZNsgQRee=|bkeYY|F*8?jU^e6a7-GWEPv|kUb_~{(c oL;P?WYZL(y5CIVof!GB807dqfb05}v#Q*>R07*qoM6N<$g7rwq_y7O^ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/actions_addadmin.png b/TMessagesProj/src/main/res/drawable-xhdpi/actions_addadmin.png deleted file mode 100644 index 5ae3cbd63cd35fd96a997e60c538d68e9b0e3fbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1844 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 LNkvXXu0mjf7fU)U diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/actions_nearby_off.png b/TMessagesProj/src/main/res/drawable-xhdpi/actions_nearby_off.png deleted file mode 100644 index 97ee6c6be990beb3956d039a10c6584a80b27777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1525 zcmVU5Hji7{~YZqclGv*d-||H|WDQtO&wxD!Qnome7zs4BD=` z=!3}YBCH^UE)t5sppZz?ATkZxGO)HR1S!%;Gb1rK%t|D6YpX47`#rB`-X3S?%$alc zyze;+=YjvuGjpDq`Tu9;J!j^eZELHn8i8sAsu8G0pc;W{1crx)YekI0xK?$Fz=_~K z@DVsdzsE@rg7x6mR`Cex2SV3@Zjfn!sMiI)1wQ+Li|s*#ni&L%hZW0r@J~t8AMvxn z5!Hsz-NnV}Y1+>{76R{C41+~eZ#>vx)!#{eDOd!a0Y3w6t8y2Sra_q8t=U9=FKOaT z6SL5&`-)wUd^^~p;{L_IC=JKlV?x2`1eGCb`H_-UD%AB< zaRDykf@j*Awbeel#OlY^%f8r_UkepYoZN+t{e{!zB1`!lCMZf5x#9{fgIMBB6LTq$ z9hI@~ajwzC$@hQ(U`%#jQ*}&fe29gJUSX7|v>$&n5OKEklt!S72yDHgxh{L?jkc7^2>$w2N@u-|4)K4cr(L7Y6s>=m$1_faYzvdci6C5jd? zRGtC0S&iIPDxnckxf>r+MCH+ATd3%EDjrakx0g}y<%*!VSAoRebes_C%7#SSoVeIR z%3*e+V%Kj-P?kwF^(KKK)n<=rb2Mr2X(^zSGgM4NaK=-XG<6IdRBg^uer9(<=9(ib z4yht}Y4;NO-@x$*Ye@B>z#J`aV^IF)nr#~>n5hc)D8G0YfpSpr*;+0JFK=QWQ;qG$ zk2`Z0CmvF(6iM4%E6gYi5=~qU^nvfddBv&n^bE0a;3lvV$lFf+n5qj-DOxr%xxTi| z?WP5>@raQ}hs?$x7zPu;2n)TD5jO+|Ml?`V0U~FD2f-%rJMdX!hJ`PIQ$W!2E=pg$ zUr0^>w*z^X9CF+vtZog#?^?E_0y_PI(I+RU>>&PdsRqqF}U;Mb1 zM({r3U6!k8?_HYSr!uM=!P#nb_u|h77jp+)0S>8a&2Vp~(RFaiWv0D?>F5z~j#BX| zeitI&2J+ZRV{)^bE>M-^U6(1-TzXZExVeh9+WtQa8U4GJy=^L^{u+?QXx(8+77=+!OZFZsRO%;zcz6vnC&< z?~*Pc-gUIJLQ`bv>|S8oQ3{rUvr;rQs!;lJ&Gh?}=W_Qxi5!j22d;likq>2`fCqpa z8k%CX-3esRF6Uy~c2E#3+PkDRdm25T{PUn&ms|c%Cv+RzNCR#-N0s=1q z@-q-z0h0dbqmP(*A4YvcHfvOhl8>cklJYENBEcoLmGu+N~e(DenZcfNW1?>B^Fw z5`m;`KtbMcN`61s1@S@BL__pL1c_*g@21|C#7bj50MU~{p0Aw8`jAxos}ZP1pc;WO bIs*RzP-qY|Q`qLs00000NkvXXu0mjf+P>iI diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/actions_nearby_on.png b/TMessagesProj/src/main/res/drawable-xhdpi/actions_nearby_on.png deleted file mode 100644 index 517396a2afdb9456ed161b16d8b02a4c9f8c5bb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1491 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 a_lRG$4MGu`gGDz00000<+B|%geg?L$BgQhQ3D zvn9P1k$k)n3HFiHtRiuQaP#!JK*%?2}Hn z2c`ji?Zyt^-JJb510TBUX*v7nMqYwbTzxz6TY)jxyLyLPu(}{G!QrlcAZT-eN$qj< z5sgOhn5*|IIOZT%5B{>dpqxy|OK_{JUj&?0V9YBbc_#|U$c(%MKXLU5z|@@mhXFGp zc}3JbGx8GLY@t{{EAVhmRhRHIyY4n^(J__2wHHT zX~j4T4zPgW58!*?b4!`*P9vCz-gr+E%7v0%iO!p~uv609Bp=*^Y|b4VX)D}eCxMiu zO2mF(NwoUm7`D<>vd2__+O76ns-5WD?6=$eQ`zY6PWB|EAJ+i)T6k7LC$J!49w8C7 z&s~qnLhwA-c~cz-W6T#@qIs;4G%7{zQwanYSDrT#!BD11`aPQLkG7lFNIKtgu_1Q7L(o;uq!7e9X9nln(#c}wfGMWjYu$*(Pku0RUr~17^rz>5PQh-XvCz` zwZLp(Ja7px)IHl_|F8K1cmen`NkHm(u!$y`XrdGV{{oSaIPb8`@V@{6002ovPDHLk FV1m=kggpQN diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/actions_requests.png b/TMessagesProj/src/main/res/drawable-xhdpi/actions_requests.png deleted file mode 100644 index b41165d47ddb360eb89f20064e32770246a9be48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1ISip>6gB0?HX9NS4pYU{X49Q@9 zJHyvQG*IMtZEZxt7e^7%pmki$4jUE~Cl}=)~s>|+!K~q0O|By~lkhp#Bv&9Pjl*&I$xjSRl`L}ebbggDiR#=ibV|7BSZ^SXC zxi?x=ieInEJ$gdrx@ek|&F+|!iRFqfWu~9s^wP5=KvjG8@uYBrjf_>sQYB|21#CUd z7<^?5g%g9?=W*N@D9_U@>lX66m-I$n!qTfIW6HJZf#x}aD zOIv#VNdrp><}2T2XZGy&iF(j(nfP3e(aqHV%JEi>wd*T|uN*koFn!sZz{h@OnT_i| zSS;Nm7r3YU>b6J9C*2l*F3HPU=c4pgXJVYdCGi=(6NLl1cm-}xsERG#VmC*`rav?G znT_Ku-vfD1D%)!$B1#-`Ot!ZFvhcSR+_#6-%ZcTsp=0~R@3&JVtr=XFuRMNhXNs+) zU0`G8`$exkR>_;pc;YtkYi!Bpi~S1kpXvQN+2eiL&*&N(*WTn^E8K6K*n9nw0rT_^ zwt1o}Q-oHr`#Z)6Mem+`?nqiqdW<^X?$g^O_F6~AF7a8uq+9oa%nzwV9jlF*oX=cl zq^XIu}vUS?VS_dw^eCgy5MVDVL-QYQIVoU$2s6`WRrmZnK9kjpyoX5)PD=rte zO8oiGs^@trW7;XRH~tOI4*S@yHLLheiWhr-P+$jp-lw|0PcadTHf(($HG?Vg63e-D z4Oat2XEk)*JE*bW*lLb>lcKOncHlpu6R$KpUev8<*i@Ai{KT*^c&CRwy>IN5+@brfiQ!w>{;fMo zUrIeXSsxs!syJ8w?(2B|qkNfrWj@c?cTy`s(f&=>e#!cEC9L+Vr`VZAuW|U9!MmS9 zZgPVR@6%<1q6s@6oj$xNtgIne;nTExBRS diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/actions_setphoto.png b/TMessagesProj/src/main/res/drawable-xhdpi/actions_setphoto.png deleted file mode 100644 index 9afae6c4314f5e3a7dfe5ea849c8fa0feaa5de29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 922 zcmV;L17-Y)P)H3ME2O%fb+?m(~^X09&YANub7tn;YqR;qFMjdM zzapei!xyyWJtc%&mwpT1(3fVStVy3ruT1e17X#DO#jv#35$t=q#q1`BdZIH)C?X5q9c_$I>O;>p4I?4&tRI z7(HMtCqapdBbj_i5@4?>0BogN zEa|um(@O447qE!{1aVrNxQotPk6LXzn07as1UY$Gel>~KEiGdfV<9XXNb-b9$yKu z2H=#iwXje#+Pz5+nP&~adhw?J(wc-wK8olO|cX}_{DRaGTL$Rl?R+vtNbZ% zWtk|#jixoFa#}kfM!tLrlPi^FDu5R&YsY2m9&mq_SI-?lqu!HiH9(qH@;h zhbG#wSp(Q?1d>KEPwC?u{a)yIx;+3~lXU!lna7x3J}IArsSU;ak<4HKloIfop<^8f$<07*qoM6N<$f*p0Jwg3PC diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/actions_viewmembers.png b/TMessagesProj/src/main/res/drawable-xhdpi/actions_viewmembers.png deleted file mode 100644 index ee380e8cc553766b269ae98a779be9e8d9f8baa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1286 zcmV+h1^N1kP)f<9xQxo+zt<*%q0B1_toI$H!(qTzQGTMHTbk)B_u*eo20xSc%T-|oy1>26_0>glr zzzx8KuHRmh`!r#P4Fb*pMu#ccmfry!O_2SARD)ae;b>)Emvm~4zJn#*ANBuG(uf@W z10~%i={-r^PVPHN?@F52$O@(sJkAEHVwKg^8|;yYSD+o?^gM_no zapKn;D(Pz{`#?sYQIa-gkonC@jMb8kPbD}Yaa&J!&z}Qp66N*-OCmk-0l61A$Gxuw zt_Q~0S-ct8=-Q_OcO;JgSLA$^SKL>8t>CRT&&lqx^I2^hBk7Q9f5TQi)^UQQm9F1z zNh6!Ng8dE1RN+S)5UpUB-Od4ffcduSF@6T_0}fjKNMKsZ;Hi`S(mi(q9f@+7ms7vYfiqScNOcF_S>H!5WU zsRY*nyX-lv-a=q-g4{j8c=!H6)V|d{pJqnB7Q(nExwdVIbN>@{E{n&b>-xnyhWqZw zbz7HlF_t(Qlfh?_Iy(4|g=1U?>wM?Z_~`;i}(jM6%j$%F%gi)PJ9(rzBlztM;6vgRZ^b z>YM7x_%cq?+ZjZ%uwBw6b@a7IcD5b@;X$n=7)qO+v1J)6+HH>YW0Fo!)E6fFprk!H z$Z=Ons&UfbY3(>>bIUdcgmO1z;@{emG zh2R(qPo~&e>r9ZzLZ3}6_?ydtXEOR+3OrFq&rUnzA*^~D=uVzN#*K7KWQd!I<&q{v zPrBxKblN3KyY z+;a*z0rko-a{@e8T2`%yo@;FfRI$%o$=od(oZokx(0)l>O(f?_O!D>ybj*%Y9!mp< zJc2W9uUE0KMdU&mB58dzxkmIn8m*#FIR7o+y~x?PaQ(iNa=;oyuxX2&=tMiGMX?z8 z$z+B`8Nf_}RctZC+)BLf4E9)aB#L6I`M=mjbU_}$6Ww!fgAQ{M{NTKnHv6|x6#XvS zM!XARf{QGD7nc0x7L&s=Y(4J1C#P>7e5$dw3A3c^1T(gk7G5yb5@Ndrl0GvJW_W{o w!mor4_Rr+HWBuwSN|Y#3qC|-jC0Y;Qcfa49H5*ELbN~PV07*qoM6N<$f_~p@cmMzZ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/add_admin.png b/TMessagesProj/src/main/res/drawable-xhdpi/add_admin.png deleted file mode 100644 index f6b09bcecb6f9095f7154bdb4c1c7b8f7b37de0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1869 zcmV-T2eSByP)2b+8DIeV?Wzq8ifd+oIkuHb); zRJ!{llVp+$;06FK0Mr6-9>5*|zXABGs$N+tl|uD|bs9ns0O$|kRsc1f=j#A`4PY*S zwF$TFi6kso2;gP_!vWj@pkWA^(*S-3FblwU05-*D5CCJrxCC9^ZWj@UU>5-WWUcEp)?6Hs`x!S}3gDDHr6+)40D1r@^3iX` z={x|70Q?BxL{$)MEK3yw=nbHbPrda3J_GQTI_HO0vi|)5`ue;igCC@8PFxobBA5@L zJAlC=mhYqEcL2*Zme$HzVPV|1jl5w1fE(rdE=~eir8ZUq*cydk1q?xzCrPfOKTeRG zLvjeorj}ebC68o(l9Ng9321w#>NF11)+JCQ(|i=4B)OdA(!M6y>UlkzJaQhDeIX%zeXTwoBiShvK|55dYh53VFdO>8L^Q7eXb+$(fMozyXQ}gV zV+*aTCdSRnBw$a=wXN$jS#|`9N!wfPJe7dXGa?8X$8Qa-fFHpq>zNl!Ffh)!U#yrl z8=SHT8bl&k!@543Wk-fu)=R^@z%g0sb^8^GpnYAQMJMV85E-n9B`(~4WelKgQdV4( zSug+t0d&^m3jkgRutWdzJX|*lOd$U)fHDA|1NbGhtfG}P2F94e8fUps=<`fUlIK&2UgrdHj_`h6R~qjKMR06vyg z_XF6gYZF9o1F!`^X@D1#mpP3OjHN3HuaWT^`QvbnOb$>($oZJhwvu6WYA zuJ0kT55PpZT{Y|eVE_x{UZ(s3U^{?Aj{HV-x=8!LHcC+J z>IAZ{2AF=F6WJdmIXI>pwIjK~ano5O>tv7{sk*0w+I9&pv>KU_p@C5(&sy~j;n5Mv z^&q*!A@@PZnRS^ZGc)WMv;*t{XI*qL9l%(vM^N12_^ldlX zrKO-y_s!wSPazs>Wu+C%oE)avq1+B&gCZ7#-D;<~{u`H_?W6l)dO=^;aj)oRwuf2fKBj|}AU8EH z=nJ_Cbl6hciFCYhRMApO?rPk4vxn}{0PgaT@2<(pV5iTvX?`k|npyErZear4S3h81dWBv@uO(YMId@!PmerfgZ{jkBdT}qsBGA*F7 zwmL(I(!q3Ts_b-5L^(Uy{wNMX6VWeqNIn#kMBGv>U{^m@eJUe4JPtuq+B<0slS;U| zipVu5xkxT-PM1>7^BkQg_72jMiJ&P%l_yE#Fv;RdCfCxL1GbSYjH4?IK~tW0T=i&- zNg-_MDy!M}RO@Y}5rmGvTucg)T8L6gl>V@>R42Z%bVecQWl1VR>5?Te6M(;^h{ncT zC+%421Wg%6@_^G3lP7(aWW5-jFguQ49erl^F)_x{kqANPD0vMp$7-GEhSAYkUuw8k zJ0Mq0#O>n}grc2EO53?G`@23qavhW%Kkgy7B#VF{af0d6*V!beQKrv8igh4!i@u83 z?@@QRQjWPvl1qvpblNk9F!$q5Q_f83cCb9sb+ z*#FSp?m|nvr*K{HtPjywTHYOD+jA+yYgWP14j>~y)t6@pBg3H?|0VYZX7K`zVDNPH Kb6Mw<&;$V4NhF>C diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/audio_mini_cancel.png b/TMessagesProj/src/main/res/drawable-xhdpi/audio_mini_cancel.png deleted file mode 100644 index aa2098cf7b599a2f0ea687227ee03058512f3ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6{5@S9Ln?0dPW0wGpupj>S9{Ll zs-pPtT!&6&?HQGv`>*9S_2tg`T=SA4&8Z9*E}iqpR9~`@#1scuZ>FVdQ&MBb@07)}4ApigX diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/audiosend_pause.png b/TMessagesProj/src/main/res/drawable-xhdpi/audiosend_pause.png deleted file mode 100755 index 9eba3045b9b7b48fffa21965f38953b8da919136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^E+EXp3?xt4_B8@2(Ey(i*ZYox@&0Axlpe$B+ufWQku1B0Wrs$;rvCEX>jYY^Nj?C2lkravYGHqAeL} sv??WpbLY;Bq8h?&2|RfQTyBgE|94rozZSmp3TOy}r>mdKI;Vst0Nk@b{Qv*} diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/audiosend_play.png b/TMessagesProj/src/main/res/drawable-xhdpi/audiosend_play.png deleted file mode 100755 index af77c320340b3ea22731524f0c14eaca68b22a77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmV-20?qx2P)Z{lAg2< zVXSAFoD~#dWq%%g_sv;%wVC%BNqBy9+kO7e``exOop)whS`H+XPnZH}L|wjexld1qU{ z=i0f|*ZE-U^O70^w(aacCR+JuGda1n^24-Tr#-~U{F}NWBl6fZta2|@?!Ns`9?6J& zGwr5AC#OwvSwf?aLjWq=37zes0>B}??jobL%TuKEf=NGh7kO)1J&%-rVbU}1B1M-) zXcvCbU8DrSKG{g=+Z+J!+g-#1piDYa`UYhHw%tXJ8~G$7rIYx_Kg3=~OK* zC9)H37bU@ttVo$IQh}qj$z~U<>Z+YuDUm9E;Mi(BXGpSDS6P)6si#6`!|G0RQLiU9 zktUPZPEHk35f%9lM0Q0)cHKq(h=_P{cW7=RU)@EXiHMB3i(GB^VkVr(DjgC}Hd($q zZF(zo%e|Bsr+^pwHo&96xX_cYq9}@@C`!y60iPNs5i4*jKmY&$07*qoM6N<$f()ws A@&Et; diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/brightness_high.png b/TMessagesProj/src/main/res/drawable-xhdpi/brightness_high.png deleted file mode 100644 index 44e23c974ad16f15f36e4b3fac7a30fa7cbbc660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 831 zcmV-F1Hk-=P)DOghWk14HgkSFj&RH2th$XNs%HVsFi6%P3fO5 zf)G*(3E0F!EG#V4&PFYcXb6ImpjBECL{G31s{}D9=l9Nex!Jp&nccm;Ldb(J^Jd|$^}X9C4ta1yrGC1bsc8T}d?We^QHXOD4z(2lzDyyFx;0^&M59l|^-V3mie}ZZ+s^ccl7<5s@dipX@?h1vw=+3WuO+CmFj6VvEoekJEIH zAs~yo56iG|i|}{CEL6a@bvmyga!%;?J11#1fcOY}hmbuXp*!t-#WV#>Fhc%3=*@eN zUxpRf1H&*5dQM*Aj}?o>KeYK8i`fObGe7ZfK+^*;HUMuyZ93nT7&X-8%&1-WO+r!+ zd^X9ew0*w(Off|D0Kda;+L=aCa>hVyqA~93N50flAAwVb-C9Jygs-=(%$cZa%+oFq zTQ~6&nupdfJcrkY8I46+f-_*7Y;|o>w8yN#*+`+ML(Ph*lY?I~`f~dk?V!f>wrJng zu37=PO-W62*Q|m${2u5vW6SLLM=M@;S+?ty$sv`Gp4fwWh1(-d%eIVsKBUigqwejUO z**mjF|FFh$ZxQc?d9dvl9l1^4>_L24%$as9q95T&sGS?y4wwcxOD zi$ml9=ok8#Ey#EuOu$1Z!&8uNS>yoI9|E=8wni!+1({G6BZAjb37BN+w!s$>Fm^MG zPJ!ZaRiMrOWXw*zz0)7EE~powIk@Z-AU+76;BFwVM9w`p?aOO9#spI!_Pb><1R}rf zGYabO!;Xygk+M7%q&t)UpQ(|hChYL4R(nfCwfz+ck^mDxdXH`V|E002ov JPDHLkV1nTHe~$nF diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/brightness_low.png b/TMessagesProj/src/main/res/drawable-xhdpi/brightness_low.png deleted file mode 100644 index 3ec596acd1e65a1c30c32be39613fd516262b2e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmV;P17ZA$P)Gx%WKh zeD^hpL`-o9;ts?eh&vE>Ac78Lv)RjF89V{02vS5FlA<#}=|oi7HbfPexUDAkCL>o= zEa?Z(){P;mSTHtLHq(g&v6{h2uqRIu#egIoU>5uVxBPOT?*A!QDb5^s+w=f}NlPtb#=_gZ~G(r4a^cAbaEj`ixaZCQFfEhfTn^1&jfE zd@{_VM~rq^zq*hqsuMiVE7g1O6_tF&`XGvt&fDVU3ygw3&<^&2bKn(FT0!Wki(fz? zvTT%Q5M=Ea5%cmx(`pEx15HJS)tsOJ*$cYng|Az@)`UI@^xQ|x4ymptoC12K3P+=1 ziomu@9pDeb`1sibJ|##ZuS)ImTjXvN&~|*%%zKI)m9J4QIfKJ$NZb^Vm+Nnb%DiF; zCQo8Z6DH}fQMBuP5Xa}K^IKC}#>Y)86$4MJz%M|8DNW+|Gc%S;N-6JN&`A%z-OYb9 z`dQ><4nqFR%n&m`HNND#>z~*MS$OwQcD1<(Yem5O)#XUUWyC z@3hQ$#i__V3AgCChRZqM5)>Glo5n|;6163Yk>`O@8X@Ub5xRcx%Nfhw+U#XpwRwuz z4di*CB-cl3d|GprWz1c&B4Retd2Kr(qu5(rwUUWtsD4xM0iKW~ zbN@$s(zy6VF#^3$l|J#3*TJ*2}_y744yvGtOKHFJI@)^OaI>Jg+MJ{m-8%CGjtO@~Xy%`(M;Q{=fQQ(B%Ki8z1uiky2R5 z%5|qSK<@niy)DXlQV~IXr;?j*b-FXFxEVdH+4lc9hbr%cCMA`9NB%!g;I-Ld!tzhQ pDOF5k%OCsC`~N;Tby-7zfj#D>9K*|Z)<8cnc)I$ztaD0e0swDFY&HM@ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/broadcast_w.png b/TMessagesProj/src/main/res/drawable-xhdpi/broadcast_w.png deleted file mode 100755 index 6ed16219921426cbd535fc7d72aaefbe62526792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmV-}0et?6P)0003>NklZawTbVc2&q__e4?- z+wM=0E@4uOPo^c#AG0#13T#~i|_H#&$x=J?41)gbAc;Em> z?v6H47I~pXVSs~V<&GhtEb)qmIz{f`qq-%@km~fh&|6<9edMX4)2 zG=|2|{|^0#0=gLmw40nc^v9B+;GH-fLL0^u4`Nzi`qvqCy?G_naab19FUCBhZ$+J^ z+=%(HPogH-r=o$TMLno6?i z3sq;yxG(Oi-8jXkz|JX)?-n`MNVFes3+S~?*)EH3VAuk?(S)qBW7Fb$cx)hx%-H?F h%yP~Xt91SS*>4n=gVqPa9-;sM002ovPDHLkV1lTpvAh5P diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/chats_delete.png b/TMessagesProj/src/main/res/drawable-xhdpi/chats_delete.png deleted file mode 100644 index d3d79e43ea6498df759a5a9a220db5ab3b4ffac6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)GND)ot1FAfyL7w$#;aTeI?ec|pxE zq3GS)55Fg*hH467z-r=yrz%RyQ!c4EO?;8nFyI)x8o2-T(2;Utw(Q7ok{fsh$6-JZ zoSC1v7|a)^l4qb72Hb&muJhIgci~VUoa6$WfPOf132trJ%;*ib;4%!@HLG^RfF+%o z>N}Qx`;uih;8E9AN_Rbio8$xi6VU~GnSSsd=%x!__YKm`0z zKr<7dnFVkT4l)4_!Fjsyc*H(iw_x$xXixH@1vM|@(VPy@n9QiRl>Sm99bnlY*Qy&> qPJi)hxHd{%J#wv)>p~dyAM^pD#VRig$0NT00000(B*Fd*i)IqfhzFKWEgx37neal@8nPw zs5TbR<(s2}eN~`FI(**3qQJZQL}@wSE!ZerTxOW%M!mr+(^7s6omFE>#*d)4u4VkF zCZCh>{hSKpn0p`J#tyr4CVaj?EbPWy;6vg0cKbd~f&|Vlysq#q>~{GJJUnuKzQm`( zvtjHxR}IHWjAh>ZZn4AOkmH;yeBI1x)k6u`Fn1XCkuiCc|Lq`Rc#JYU1R5S;4G-Wy m*N06irmhds)h*)x5&sQ9TBl^I#l?RB0000*c*VBMcYHW!{pplURJO|M6o1fn5EA49q-#1Php5XP;sS z{VnHU>>?hwjOUL@!P=Px0IRFw|_Tnq6tBbtV6X zkFy&Z1U55PStZ>0lU%|6PM&w-xnKLwI9~MGbo<8M;y5D>ua>*c{nI;2S+7=}eBeBv ckxfA^Ik|VznbTj3fxcz%boFyt=akR{07_DA9RL6T diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/contacts_sort_time.png b/TMessagesProj/src/main/res/drawable-xhdpi/contacts_sort_time.png deleted file mode 100644 index eeefca9f443ffe016b68e86f79208936f14c3730..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 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 Mp00i_>zopr0QQbORR910 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/folders_archive.png b/TMessagesProj/src/main/res/drawable-xhdpi/folders_archive.png deleted file mode 100644 index c6f394cc3671b9dddd27be89ecaebb31adfe6db5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVp1P)#W_f2vWJ31_k zfDtePM!*Od0V7}pjDQg^0!HBe5vcgI+-Ni&Qg0Xy`mEbj>yXF4DwWDf)3Nq=i1`_G zib99<`0UHImmR=BpBQKn{XySQ4TXr86#a<0P?eqVHAItAH8DSi>gWPZluA}CmL6Fz z>G@Vs;=dH99l!ujskVzAp&c}bV#F7kjG`kn!cI8QHgyHCMdR1n=AQDl0q{m!OAUal z|D2|K+Qy#qUI1ZVQ?pZ(l;u2g$n~A7p2Y<~w{I5?_0+St0C1SMeNqiT`&^4Olid3q zpnmgkxL!ZVT}O>v4fz5!jrwxOgFcN7ppKgfKC@3-x#Heph~sjvA1z|P1kSHBpE*8` z<~(Z@8$fJ-h5ZabAtL>P1-5%W9^6!p#nbr&);~snZ_0By7jg$o@}?#~V7SIC1%k~P ztT00lpiLJDTNn7?O`eaVo)Ib%$%m!iI=TY0+0cc8PC9{AK+?`RDWHrz*(xH zTl7`W;sPMle}G%~D?Fs0MGb(jt-l#-wQ#iX3s$pP!gtDd;Pbm5eMhN6diUq&D)ZdS zEhj@fp{acLk98v>ulZWCD^GI^BVYuKfDtePM!*Od0V7}pjDQii%LM)bX4;Jl{VegF P00000NkvXXu0mjfuJ%WE diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/folders_bot.png b/TMessagesProj/src/main/res/drawable-xhdpi/folders_bot.png deleted file mode 100644 index 8beb22574378b1ff635f8b0a38fce7d9738f6c9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1055 zcmV+)1mOFLP)z<;MealUsvIyyR^HJiXnumniI z7xaKfptHERc$ju-85?f`H^3i|%KAy31vOJb0XDK0+yt4L2-OP8C#?{W-v$Oi7< zfVru5K)x1S1AglwFfY~I36Xn91J@8KhZF^GHC|C}LJ&L6qZDU4k8hGL5 z{?cxAIo%RJ>Wz`6)#dP;Rb1RNE*G|qs~olvq)Mr=P}RAo{5ANiy?z<3eBURtW);-_ zT@@F1sjr`PH)jICU=h&uek)cwE@6M)4b}0u&jDzF0pHyq+QrHb<;ts(k?~5)tGojU z!4AlEdj)2Bt!rjDhxR3qw}d0!sdCzt_R`tw<7+kX&fmAvAlO ze4sG%MoGc zK?ud=2hKVcPq+<|8zT3L+$u*d!uFx7&AM%@`-FZ2h}{NVF7GWwj)165eiK}m_ss=a z5MpwjeGst%CxdV)*cdi1|LpWeB*Go)PA}Nzf-Vfn3eb^55#(<+`7xz5D2Jfq0$&@0 z7S!V)EWiG41#-2`=68X9=5>L~eAs=YH8TZF0aL&fFa=BjQ@|831xx``z!WeAOo8wU Z`~#=8V`>eMIza#c002ovPDHLkV1o3==aT>c diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/folders_channel.png b/TMessagesProj/src/main/res/drawable-xhdpi/folders_channel.png deleted file mode 100644 index 618cfc4cd023c6243457ad22efc02e348fbd6161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ea{HEjtmSN`?>!lvNA9*rFyzJ zhEy=VooVeY>nPC{dr?EoF^ENfs>E&w1&^R*;!VA4T{$?WWnN-UN}a0I%fijM%v<~u zbI|dI*jWxtf<7#Q`k6_4)|@{P7(RFNZuQSQHy^V8Fz@EvneV^Nx%u?XylrNtf&z@# z(F)Z@6W{zrkz2a1UCh1`c{)XR@}d(gwvO2^lB!cBSC{Qu@l7#mS48Qvnx$o)(JC&D zwJ&t7&WOCW-O>@REg$leA-8JvSDrSt`7Krj-=17`H1CyL$QZKiZ|cL@DxUY|OFVeZ ze%x98xvT9qHB*tJnO6RXY+rEyy1%VEv7g(){>G}w%Q~md$m13@Q7z2nlEkQB(7NLplfd-)KQC@Ee%#-@ zLo(t`Lwun(M|U3MgWw3R!nL{#Hp^Q|7aMK+Fj?xS)>AbJ2L9xCLOa^UF8Xh|e!;Fb z&N|`J+F0k?d5ZhYUfAt^oPEDy)oV9vOaJoVeM*t{`==GZIp_PcW{Z*79_CrBk8hWp z|0O^Btns_r{D!;v&+c4)8XQv6T)JChMXY3lTi9}aE1Sq~)yMkU8wxtaEF>NEFU)`3 zd0IYRpZ{t`%ide9+s?nexp^{wYVgq~X0x2D)1SSx?>m0#SI4$KmHVla&dKR*oh5SY z@C(VR&Uf3g!lvNA9*OM1FE zhEy=Vonf0T5-8HP*|0aM$IHd>h{Kf*M#ETzsat!^%&u+Z6niEAK|F#Z&|rdnLbjLZ zRu>Vc4V{zHl)W52F#9SfCDz8xh<$hF-0`_{Z>GeYZ=AmK`<>4}&)wZ=Y;BN`#3R9c ztidn=8}*^yFyM9S?z3sdJwK*5%e>Ft8l^1p{d?;%^@Cg;T_uxi@7nU-W8Ho6+}xel z(tb~3k($j^KPPQ++oqYXw1qM<1lFjQ$}FD#HbI8-#qono6VB>?V6$ONfAmIs;o=>c z6T+7*J}R6b_C|%}SJ%I^E6at7xn_H7SozvM7wdn>bHlqh!S_i_(ci9~+|aL_0Bgk#D7}FoKi{Hsa&<~ z&{xa(x%akR$g{jYPgG)x8$*8O>?;d(-)MLLs43~Gw@99!7*{=i#?hP`)07_=pAfp) zv*YFrdA8e;eFt})Shp3l%PIT)O-_d%*L)y2n)yg18t>)^6V+&G@CUSYz>K+iUU7s*FbW zT;F!Cy#D0*1Fjp4RoQnKN;mYJH@n^}{MYTE?gp-|t|X1H7i|Xitk)bv>K0e9$~6i9 zKF8$ge$YE$n?~9T+4(#FNqhXV39I`X|A9kAZv9drmqm#J<>3L-mAdZ!^9uQRM!wo* zUGif6qxZNxpV@Y4W*NONb2O;^`}0Kb_4Da6zs~-&2ykWIZ4;kom$=w$w#}1cQC>w_ z@rzCUch((zUvjGIc#t`ZiS?o{4vxxiZz(*`(X{)yr0{Re8}HvT-#oYRn_0ybdz$;Q?tkbP2oVPzpofZ%FITdj$L3{mF!4pZilO!me dCbIowYMuN2T2E;6QedWG@O1TaS?83{1OU9hg<${y diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/folders_mute.png b/TMessagesProj/src/main/res/drawable-xhdpi/folders_mute.png deleted file mode 100644 index ae5e781cae5b916fabffcebdec60b2a3b2fd3bf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmV;G18V$MK%r3Bgjy@PMrQY7{2`Kfhx(HkVP7k1 zPqMeJduVzE((#o+-+Y>)en0wxexsxF*_(=5ntqOSh?(7SnxpPG`k^-8j23C*%U5CkO)bXV4#HBbxw95ZZB*H;z6r?$!_( z51AT0%r1Zugbv)~wIlM6XctT9&{={_Sar1N95Sx0DJXqB+%Al$Ts+|6&NpqT#Q{Y~-EaVz8 ze;2I{SuanY<@6|Z#o)T~RCyS!{x?(nI>y%n)J>_m^rx7S)1chOQE^(kp|}sp=L|Yt zF<7tbGLh5tI`l$23CT}tL)7%6Z>IJo<5jvY6FE(!lvNA9*NqV|C zhEy=VopD~9B~hlGw<}1+@6^HmO@#rEo;cjOvt!2&ORL>K+3(ER8Ssz6Z&HV}xw`q% zP?1mCT{+h_Z%r+mHAC`#dD)fcYnNBvpILeT`|rwa_sX^}bMs|Oalnq|NNI?5e>LE* zE?~|tV3am^Rq{DY-|v9ToP++kbK85buDe=O@AUP+UH_A{=gVGPpD7-=mX-7I!A|{z zDescDzB0W(eM@kl5c|EI>30(1d=d`cI&kA^f!e`CYtKmf8|Yt~vW4YIQs~#eMfc0E z`|9g5disA|@>%J&m$!pmk?U0bxG=uA?wOo7yaRrz7k?8zbNZf$-{-U)ymLP7=QZCv z{RzM5#IkSOkL-IM{>A#=hFG)ZLRpMl`xYeLwJ~SkJoCT;twX$r^;leOit<@+@oekd z(<1)U_pvzVt#gx@FECv%cvX3iJ=|1s0;8nIS%+2a3heRbC)*ZqTP>9IvagJPz^L~? zrq5Df{tl~rKURSqA|*`65@fsA(Ij7OautJFsf+rVCnM(r+=a zerrlCn6^4YzGvFOpXZ<4Sfsg%d!1tMwxen{e_fu^wC%FTyW7cn-zlkW{%&dv!``V=j^lA+WTB4>#KizUB2so zuf5ONYwv;rCyoKffMdWh;23ZWI0hU8jseHO|HwcjTSZ5s(TT)b2^NCU3Wm|{0BtdR z;CKt%h(sb^Ird+n=*gfCyaJ~32ZP&S2N=??SRmmFa0YaPFr)(~d%)nlCV~V9f@46= zUM8dsr|a^P1QMG79)fJhQGyib4G|=>9DL43;FpqEHk(ffHZ%wW z1A-V6d>Zywz@Q+00@%*R_7ZtmUk=s;5VVZo*TL`r1%zR`3@4|;aAf2I0#1T_l1ifj zV#-$k1gTnPE@dgp(UT|*fsU-vQSx+*2*7BnXPBX*>;*{iEeZaQ z(l1FEOVyRjpfJ^B;Sl z!d)fBzg68*d@cPQ>X>F*J5N&rMrkG>YMo#$m<#GbDrsjzihr#tQ2b%~yVWs+_DBO= zeN~b=4s>Ok=NW?m;A|4ZcE)CSdft(-LrHW^h8B6g(j84#fGkyA`ROTgc6(`W0_VLk zj$NRNxfjY<0aYHLU!#s$wB=?RzL4BTgVWH2Zrmk9zYtsiU0_yXhK%h8L8TW5){n=D zImPvHJl`<8=jg{>kMxCvNpX(pFjfP?kd{Q>q4miw0zMjM`4s&Ten~LD*U+b*x;&_5 zPKbQUFM5hO*}5uAmKEc>QrOrIFHROGv@x=h4Nx0tz^GJBg#LCLM?N;K%o#u7syS)3 z3G%=v3BM^JVF4%y2mKT+=k{q8peR|fMRJw+xT*Nbhh_^&Oy_6yw@EUl{{#N{CWySe zlnv2*lHI1oOY&ALKnz(0@>1e47%Tl8%QcE$ZIgr53Xnhql-JqS;E(ikD6%=b!8X1% z0TK`r?sGU{8$1L%**0569zSe-1tK68G*_3v8{)5stwh`UgV}K(7zDEYQk0O}$p8OD!k#BeWq>;%j z;56v;Q}mgWE%;iHtNToHvPnpGUcZB6@}5C?!0CG?r!9}bOMrYZbqB~dKdSW5k$71easSMvl$g zlw{jWThQ-D`HQxJQ*;bC1{?#90mp!2z%k$$a11yG!erntROs3(WwP&100000NkvXX Hu0mjf%{wI( diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/folders_requests.png b/TMessagesProj/src/main/res/drawable-xhdpi/folders_requests.png deleted file mode 100644 index 17c69b37ce4d32199dc15e7b2bdc3492c6843bd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/group_admin.png b/TMessagesProj/src/main/res/drawable-xhdpi/group_admin.png deleted file mode 100755 index 1b25c821bbcd1f58e2685a6f7a14eec05adef31b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551 zcmV+?0@(eDP)i#%6wX6%ZHa9XWPI-+?_sCC_8AFFjk zDOzE>U;VAV1ykOM*4g28$9&|hVZRtN;Saz0*+pM_*ML1r@r3iDH}u-2$2MDR(xuBY zw%De}^LnBfC09_jXu+&|?n)`$broWV5oe z%}UWudJQ`1f(g?qD*klEc^??m8^w6dka5e_vTWR!`l1!yGGfVkEEzEn&G52O%^LMm ztd9fkXvJ-BMq^%3)v5>fMk9Vu#Mx-XEk)dlM$9T=HX4zN$Y?}W5!GnKw3JdxDW#NB pN-3q3Qc5YMlu}A*IyO9U{sHBoOGnGWNW}mE002ovPDHLkV1nWC5m5jD diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/group_admin_new.png b/TMessagesProj/src/main/res/drawable-xhdpi/group_admin_new.png deleted file mode 100755 index 2c5bdb292df91116c84b9ca5789e8d2084cfad92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcmV+#0_FXQP)3NqoR7J1bg07SgL1xE94>$>#ofJJ_HtygkjyUY+o`LKeo#Y#MJnDf_ c4~%*M03AzCMzaWpbpQYW07*qoM6N<$f{lCLQvd(} diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/group_ban_new.png b/TMessagesProj/src/main/res/drawable-xhdpi/group_ban_new.png deleted file mode 100755 index e1d0288971c61feb4076b52c9122fc72c5f7be5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379 zcmV->0fhdEP)7^LMM0a=!E7Rk=tmF-g@T(7T}$cWqz+ESZ{X+XqJttXegYQPQGO%q!aE6|S6a0&y@Fq{=F{g~j zRQlt;6!(^=3fQDcLzyPaHUu|gntWtKa5YBIwjt?!mG!ay&YHl%g zW~osr)z@5|mgW}IrA6ID5MfSKDnSSglE{3IjQ-UGrCPx$F}Fz~DZ$9-FwdO0Umb^I Z$Pf3Bee@Tw+dTjP002ovPDHLkV1h45o{azi diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/group_banned.png b/TMessagesProj/src/main/res/drawable-xhdpi/group_banned.png deleted file mode 100755 index 86b902e1145a8eaba55abd798b7a7963c9e58444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmV-L0lNN)P)O zFW^gHcfz1Sle;tphyqr&i&Vt7FMHx?UDu^N6$IWPFq2;VoKF0pv7_icg*u|&hx#Y1f_ZyUjd&g^z|ON4|D@x{yFQBg?3BotuQGk8-4C*rG_P# zI31Wm=f_~O+PNCH);PEC0w2=9hFn+z>~j1wc1uwdy-gcJC!IGiBB@PMU5@o3 zYpaoTtZYqb%MwCe4zWj4ZGq0a?T+KetvFw65;UxGu0K23q-cC}?5)fqz(va3H7Rgy z$Ijv;0lBxMMIp@yR5j*!I=2=$1I!O3?mBSMXXJeaoC5ZHa^qmODmQ@dS&6YqY_WUyhr=4 zO=43@KVpZ?)Fdz2I#6#x&YP2$|4%6vvP di&>-u@E7^W@h~GN*hc^W002ovPDHLkV1hG)Y^eYM diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_copy.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_copy.png deleted file mode 100755 index ae31674c69217b2e94ffea987aa77bd55e576f19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DW=|K#kcwMxuRC%z81T4Uoaa{c z`<9%~l3oAh7HD{G;7(1OZ_8nh1<95B8csrlV=C0|2WCjxC>@~ z>z1|faoENj82tFn4mU`AYCaEXRs#?a;V-7J0g)C<}`C10=d)At$0dB_)$G7}yMSWuYXcY(~i- ze}LhwT-W*C9lqb+eSd?x*GoChF`^(50U`;Y>kblB8<6$300= zxkejaMRJQ{yvF4cHKe+eORSP^P_EELCNavCJt`UECwtUWEK}6d&p5NJa=%Q>$=zqgp${C}?p^m5czb=(T(Y-ENH^2R9=wFOH9=YB9BP-xmw=~eoFln_de7rM3KbJV%29x(;Ns%pb9sgNo>)wCwP7#=^{=6abF*ACdK{diJ zZ}!Z2l05ST;h!&nDKhU*6nS5wn)f4AeoHlUOD8=6WsEVfCra+wgx?U5%%@jP07Bz2m|lGet3Q7A6s|OWuK0%`5)QXyaAp> qB7um!0%GzBcovBS;_}xKG(G|4td3Rk)`IT<0000cG?daJvQ1nGN^;Z)&;3 z+r`Q%RQUJrB>SD-r)%pM{Xgu&KjTGW|Hr$xYj$4!?tHc8a0IKpDMPX7Kj{?_em0`n zCxQh(hU6&vyB-J*RGP#dfS<2Nw6HOIij2mw3NZq)z4*}Q$iB} DQqO^s diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/icon_2_background_sa.png b/TMessagesProj/src/main/res/drawable-xhdpi/icon_2_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..4b108a5d60f5b3dfd7964934c0f37040f1cad65c GIT binary patch literal 47053 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/icon_3_background_sa.png b/TMessagesProj/src/main/res/drawable-xhdpi/icon_3_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb133c8d11dc11249dbba93a423738e27a879ec GIT binary patch literal 26288 zcmV)eK&HQmP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91*q{Rd1ONa40RR91*Z=?k0PN~BY5)L007*naRCoc@y$zP@%8jjQ`_(ji z`p7e7z%d>}krU%|*rr799omE~I zr=DZc=IT6p)v8YaGe-IQ|My?n_57$^_-mVvZgbgAitpY38Aq;peJ|gcH3Px7zK8wU zozEF<&Zt$*KQxvHEAyQ8jO7W2W#{PG=(V@}@AKJH#~aV<8UOQd{}_Colnwjm@KI?z zc6Xnlr3^Cjk{$g9RV6ZAbw!>l*+KgNMlwk113{X!tU)T28;sS}2@n8`Bc0R1< zw4F!J>MxDdxNvagLh(A>#aU+`cf*0jMI{cCNtau&92X@{a^WM{a-}LT1F_ce^H1G{ zz*HJFVu*jY z{xZ1`Vb#nI+-o3?7Zq6`0v_yYftA{+Odmn25cwS&WYl{DKkM~*FnIF#fDtiSF zjXv-L{=hl7t|xPWdcx~iyjlXX<~jDydi7tP87&^U`m7VI^AoFCp75;5cX_XiMldJk z2>+Qe`}f&bdL0YAxk&KT>b+-P7ldQ-(w2TX!-!)h@$k~h&!~gX*%uFN(BX`5dyDwp z4i42%H_aP6{#}RfSTg;N8RNzb5xqS8(DSxWTd$|*=c%8XeQ3u$7Hj3tK8}red#gDy zEwL?bo`fpmm{?};Sj8jOi7A$TsEyF#-9t=i^j2(ayqzNtAH&^O7g6j_$32&+=FsME z1C@?R#tTut-DK9=iYKdh`WbWU;)*X_l-mWCI~uh=`!M<}Z#7-npKbKwmizibaOf}2 zceP(J^^>2kJHW>gRKKu2{N( z$C8)Bo$o!+YGqzx*{Q$yhqW$r;p3-1*TI*MUKC6ln(-xvDF3Rh?#x>Q4&GL5$v)Md zITf!vqn<05eT@AH_(ZlD2tP@_#^2|7+3Q0GE{f?Hv*ORXWN+SQEDVQ%qr2~VYqxVU z8;^AtLf2R3%lf+8Dc8nDn)y49#%D>F&yU%E%`3&MZEM`YXmqx%oj=3(>Wl5?U1Hd~ z{f-=(ZKcm0cRytqe5r;0G@2C%-B0yibCW0jWbd5wi7ZcetlnqBW2rlgefw6m^5A5a zhx?sk|5`oqb@ESryy7cn6OT=My!z#Ri=2M#1*B$Lcpm4G*BwcB9pQ7WZvb0;;JN?L zdd{Ue!N#odHc_j+MHHoP+O6C)gtk@5{O}0%0DYl0m5hF-FmVh2iq{8i?JvR4XI>|7 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 DE4fGQ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/icon_4_background_sa.png b/TMessagesProj/src/main/res/drawable-xhdpi/icon_4_background_sa.png new file mode 100644 index 0000000000000000000000000000000000000000..ff165521814de08061c57c6af839b6510a81c101 GIT binary patch literal 41987 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